From 86a3b15b71153486f476400cda438417a0961f80 Mon Sep 17 00:00:00 2001 From: Erreur32 Date: Sat, 17 Jun 2017 19:22:17 +0200 Subject: [PATCH] First commit --- .htaccess | 79 + CHANGELOG | 10 + README.md | 129 +- admin/admin.php | 275 + admin/ads.php | 237 + admin/ajax_pastes.php | 50 + admin/ajax_users.php | 54 + admin/configuration.php | 676 + admin/css/bootstrap-checkbox.min.css | 1 + admin/css/bootstrap-select.min.css | 6 + admin/css/bootstrap.css | 6565 +++++++ admin/css/bootstrap.min.css | 5 + admin/css/bootstrap3-wysihtml5.min.css | 3 + admin/css/datatables.min.css | 1 + admin/css/font-awesome.min.css | 4 + admin/css/fonts/FontAwesome.otf | Bin 0 -> 124988 bytes admin/css/fonts/fontawesome-webfont.eot | Bin 0 -> 76518 bytes admin/css/fonts/fontawesome-webfont.svg | 685 + admin/css/fonts/fontawesome-webfont.ttf | Bin 0 -> 152796 bytes admin/css/fonts/fontawesome-webfont.woff | Bin 0 -> 90412 bytes admin/css/fonts/fontawesome-webfont.woff2 | Bin 0 -> 71896 bytes admin/css/index.php | 0 admin/css/paste.css | 21 + admin/css/responsive.css | 22 + admin/css/style.css | 2668 +++ admin/css/style.min.css | 1 + admin/dashboard.php | 453 + admin/favicon.ico | Bin 0 -> 15086 bytes admin/index.php | 99 + admin/interface.php | 262 + admin/ipbans.php | 309 + admin/js/bootstrap-select.js | 1215 ++ admin/js/bootstrap.min.js | 7 + admin/js/bootstrap3-wysihtml5.all.min.js | 6 + admin/js/bootstrap3-wysihtml5.js | 350 + admin/js/index.php | 0 admin/js/jquery-ui.min.js | 13 + admin/js/jquery.dataTables.js | 14622 ++++++++++++++++ admin/js/jquery.min.js | 4 + admin/js/plugins/ckeditor/CHANGES.md | 589 + admin/js/plugins/ckeditor/LICENSE.md | 1264 ++ admin/js/plugins/ckeditor/README.md | 39 + admin/js/plugins/ckeditor/adapters/index.php | 0 admin/js/plugins/ckeditor/adapters/jquery.js | 10 + admin/js/plugins/ckeditor/build-config.js | 110 + admin/js/plugins/ckeditor/ckeditor.js | 1001 ++ admin/js/plugins/ckeditor/config.js | 10 + admin/js/plugins/ckeditor/contents.css | 134 + admin/js/plugins/ckeditor/index.php | 0 admin/js/plugins/ckeditor/lang/en.js | 5 + admin/js/plugins/ckeditor/lang/index.php | 0 .../plugins/a11yhelp/dialogs/a11yhelp.js | 10 + .../dialogs/lang/_translationstatus.txt | 25 + .../plugins/a11yhelp/dialogs/lang/ar.js | 11 + .../plugins/a11yhelp/dialogs/lang/bg.js | 11 + .../plugins/a11yhelp/dialogs/lang/ca.js | 13 + .../plugins/a11yhelp/dialogs/lang/cs.js | 13 + .../plugins/a11yhelp/dialogs/lang/cy.js | 11 + .../plugins/a11yhelp/dialogs/lang/da.js | 11 + .../plugins/a11yhelp/dialogs/lang/de.js | 12 + .../plugins/a11yhelp/dialogs/lang/el.js | 13 + .../plugins/a11yhelp/dialogs/lang/en-gb.js | 11 + .../plugins/a11yhelp/dialogs/lang/en.js | 11 + .../plugins/a11yhelp/dialogs/lang/eo.js | 13 + .../plugins/a11yhelp/dialogs/lang/es.js | 12 + .../plugins/a11yhelp/dialogs/lang/et.js | 11 + .../plugins/a11yhelp/dialogs/lang/fa.js | 11 + .../plugins/a11yhelp/dialogs/lang/fi.js | 12 + .../plugins/a11yhelp/dialogs/lang/fr-ca.js | 12 + .../plugins/a11yhelp/dialogs/lang/fr.js | 13 + .../plugins/a11yhelp/dialogs/lang/gl.js | 12 + .../plugins/a11yhelp/dialogs/lang/gu.js | 11 + .../plugins/a11yhelp/dialogs/lang/he.js | 11 + .../plugins/a11yhelp/dialogs/lang/hi.js | 11 + .../plugins/a11yhelp/dialogs/lang/hr.js | 11 + .../plugins/a11yhelp/dialogs/lang/hu.js | 13 + .../plugins/a11yhelp/dialogs/lang/id.js | 11 + .../plugins/a11yhelp/dialogs/lang/it.js | 13 + .../plugins/a11yhelp/dialogs/lang/ja.js | 9 + .../plugins/a11yhelp/dialogs/lang/km.js | 11 + .../plugins/a11yhelp/dialogs/lang/ko.js | 10 + .../plugins/a11yhelp/dialogs/lang/ku.js | 12 + .../plugins/a11yhelp/dialogs/lang/lt.js | 11 + .../plugins/a11yhelp/dialogs/lang/lv.js | 13 + .../plugins/a11yhelp/dialogs/lang/mk.js | 11 + .../plugins/a11yhelp/dialogs/lang/mn.js | 11 + .../plugins/a11yhelp/dialogs/lang/nb.js | 12 + .../plugins/a11yhelp/dialogs/lang/nl.js | 12 + .../plugins/a11yhelp/dialogs/lang/no.js | 11 + .../plugins/a11yhelp/dialogs/lang/pl.js | 13 + .../plugins/a11yhelp/dialogs/lang/pt-br.js | 12 + .../plugins/a11yhelp/dialogs/lang/pt.js | 12 + .../plugins/a11yhelp/dialogs/lang/ro.js | 12 + .../plugins/a11yhelp/dialogs/lang/ru.js | 11 + .../plugins/a11yhelp/dialogs/lang/si.js | 10 + .../plugins/a11yhelp/dialogs/lang/sk.js | 12 + .../plugins/a11yhelp/dialogs/lang/sl.js | 12 + .../plugins/a11yhelp/dialogs/lang/sq.js | 11 + .../plugins/a11yhelp/dialogs/lang/sr-latn.js | 11 + .../plugins/a11yhelp/dialogs/lang/sr.js | 11 + .../plugins/a11yhelp/dialogs/lang/sv.js | 12 + .../plugins/a11yhelp/dialogs/lang/th.js | 11 + .../plugins/a11yhelp/dialogs/lang/tr.js | 12 + .../plugins/a11yhelp/dialogs/lang/tt.js | 11 + .../plugins/a11yhelp/dialogs/lang/ug.js | 11 + .../plugins/a11yhelp/dialogs/lang/uk.js | 12 + .../plugins/a11yhelp/dialogs/lang/vi.js | 11 + .../plugins/a11yhelp/dialogs/lang/zh-cn.js | 9 + .../plugins/a11yhelp/dialogs/lang/zh.js | 10 + .../ckeditor/plugins/about/dialogs/about.js | 7 + .../about/dialogs/hidpi/logo_ckeditor.png | Bin 0 -> 13339 bytes .../plugins/about/dialogs/logo_ckeditor.png | Bin 0 -> 6757 bytes .../plugins/clipboard/dialogs/paste.js | 11 + .../colordialog/dialogs/colordialog.js | 13 + .../plugins/dialog/dialogDefinition.js | 4 + .../ckeditor/plugins/div/dialogs/div.js | 9 + .../ckeditor/plugins/find/dialogs/find.js | 24 + .../ckeditor/plugins/flash/dialogs/flash.js | 24 + .../plugins/flash/images/placeholder.png | Bin 0 -> 256 bytes .../ckeditor/plugins/forms/dialogs/button.js | 8 + .../plugins/forms/dialogs/checkbox.js | 8 + .../ckeditor/plugins/forms/dialogs/form.js | 8 + .../plugins/forms/dialogs/hiddenfield.js | 8 + .../ckeditor/plugins/forms/dialogs/radio.js | 8 + .../ckeditor/plugins/forms/dialogs/select.js | 20 + .../plugins/forms/dialogs/textarea.js | 8 + .../plugins/forms/dialogs/textfield.js | 10 + .../plugins/forms/images/hiddenfield.gif | Bin 0 -> 105 bytes admin/js/plugins/ckeditor/plugins/icons.png | Bin 0 -> 20833 bytes .../plugins/ckeditor/plugins/icons_hidpi.png | Bin 0 -> 67753 bytes .../ckeditor/plugins/iframe/dialogs/iframe.js | 10 + .../plugins/iframe/images/placeholder.png | Bin 0 -> 449 bytes .../ckeditor/plugins/image/dialogs/image.js | 43 + .../ckeditor/plugins/image/images/noimage.png | Bin 0 -> 2115 bytes admin/js/plugins/ckeditor/plugins/index.php | 0 .../ckeditor/plugins/link/dialogs/anchor.js | 7 + .../ckeditor/plugins/link/dialogs/link.js | 26 + .../ckeditor/plugins/link/images/anchor.png | Bin 0 -> 763 bytes .../plugins/link/images/hidpi/anchor.png | Bin 0 -> 1597 bytes .../plugins/liststyle/dialogs/liststyle.js | 10 + .../plugins/magicline/images/hidpi/icon.png | Bin 0 -> 260 bytes .../plugins/magicline/images/icon.png | Bin 0 -> 172 bytes .../plugins/pagebreak/images/pagebreak.gif | Bin 0 -> 54 bytes .../plugins/pastefromword/filter/default.js | 31 + .../ckeditor/plugins/preview/preview.html | 10 + .../plugins/ckeditor/plugins/scayt/LICENSE.md | 28 + .../plugins/ckeditor/plugins/scayt/README.md | 25 + .../ckeditor/plugins/scayt/dialogs/options.js | 17 + .../plugins/scayt/dialogs/toolbar.css | 71 + .../showblocks/images/block_address.png | Bin 0 -> 171 bytes .../showblocks/images/block_blockquote.png | Bin 0 -> 181 bytes .../plugins/showblocks/images/block_div.png | Bin 0 -> 136 bytes .../plugins/showblocks/images/block_h1.png | Bin 0 -> 127 bytes .../plugins/showblocks/images/block_h2.png | Bin 0 -> 134 bytes .../plugins/showblocks/images/block_h3.png | Bin 0 -> 131 bytes .../plugins/showblocks/images/block_h4.png | Bin 0 -> 133 bytes .../plugins/showblocks/images/block_h5.png | Bin 0 -> 133 bytes .../plugins/showblocks/images/block_h6.png | Bin 0 -> 129 bytes .../plugins/showblocks/images/block_p.png | Bin 0 -> 119 bytes .../plugins/showblocks/images/block_pre.png | Bin 0 -> 136 bytes .../ckeditor/plugins/smiley/dialogs/smiley.js | 10 + .../plugins/smiley/images/angel_smile.gif | Bin 0 -> 1250 bytes .../plugins/smiley/images/angel_smile.png | Bin 0 -> 1294 bytes .../plugins/smiley/images/angry_smile.gif | Bin 0 -> 1221 bytes .../plugins/smiley/images/angry_smile.png | Bin 0 -> 1351 bytes .../plugins/smiley/images/broken_heart.gif | Bin 0 -> 1131 bytes .../plugins/smiley/images/broken_heart.png | Bin 0 -> 1213 bytes .../plugins/smiley/images/confused_smile.gif | Bin 0 -> 1210 bytes .../plugins/smiley/images/confused_smile.png | Bin 0 -> 1175 bytes .../plugins/smiley/images/cry_smile.gif | Bin 0 -> 795 bytes .../plugins/smiley/images/cry_smile.png | Bin 0 -> 1315 bytes .../plugins/smiley/images/devil_smile.gif | Bin 0 -> 1239 bytes .../plugins/smiley/images/devil_smile.png | Bin 0 -> 1299 bytes .../smiley/images/embaressed_smile.gif | Bin 0 -> 790 bytes .../smiley/images/embarrassed_smile.gif | Bin 0 -> 790 bytes .../smiley/images/embarrassed_smile.png | Bin 0 -> 1222 bytes .../plugins/smiley/images/envelope.gif | Bin 0 -> 712 bytes .../plugins/smiley/images/envelope.png | Bin 0 -> 1049 bytes .../ckeditor/plugins/smiley/images/heart.gif | Bin 0 -> 1091 bytes .../ckeditor/plugins/smiley/images/heart.png | Bin 0 -> 1073 bytes .../ckeditor/plugins/smiley/images/kiss.gif | Bin 0 -> 1082 bytes .../ckeditor/plugins/smiley/images/kiss.png | Bin 0 -> 1077 bytes .../plugins/smiley/images/lightbulb.gif | Bin 0 -> 1062 bytes .../plugins/smiley/images/lightbulb.png | Bin 0 -> 993 bytes .../plugins/smiley/images/omg_smile.gif | Bin 0 -> 1207 bytes .../plugins/smiley/images/omg_smile.png | Bin 0 -> 1196 bytes .../plugins/smiley/images/regular_smile.gif | Bin 0 -> 1216 bytes .../plugins/smiley/images/regular_smile.png | Bin 0 -> 1158 bytes .../plugins/smiley/images/sad_smile.gif | Bin 0 -> 1199 bytes .../plugins/smiley/images/sad_smile.png | Bin 0 -> 1189 bytes .../plugins/smiley/images/shades_smile.gif | Bin 0 -> 1234 bytes .../plugins/smiley/images/shades_smile.png | Bin 0 -> 1353 bytes .../plugins/smiley/images/teeth_smile.gif | Bin 0 -> 1210 bytes .../plugins/smiley/images/teeth_smile.png | Bin 0 -> 1257 bytes .../plugins/smiley/images/thumbs_down.gif | Bin 0 -> 1117 bytes .../plugins/smiley/images/thumbs_down.png | Bin 0 -> 1059 bytes .../plugins/smiley/images/thumbs_up.gif | Bin 0 -> 1112 bytes .../plugins/smiley/images/thumbs_up.png | Bin 0 -> 1033 bytes .../plugins/smiley/images/tongue_smile.gif | Bin 0 -> 1216 bytes .../plugins/smiley/images/tongue_smile.png | Bin 0 -> 1206 bytes .../plugins/smiley/images/tounge_smile.gif | Bin 0 -> 1216 bytes .../images/whatchutalkingabout_smile.gif | Bin 0 -> 1190 bytes .../images/whatchutalkingabout_smile.png | Bin 0 -> 1113 bytes .../plugins/smiley/images/wink_smile.gif | Bin 0 -> 1214 bytes .../plugins/smiley/images/wink_smile.png | Bin 0 -> 1188 bytes .../dialogs/lang/_translationstatus.txt | 20 + .../plugins/specialchar/dialogs/lang/ar.js | 13 + .../plugins/specialchar/dialogs/lang/bg.js | 13 + .../plugins/specialchar/dialogs/lang/ca.js | 14 + .../plugins/specialchar/dialogs/lang/cs.js | 13 + .../plugins/specialchar/dialogs/lang/cy.js | 14 + .../plugins/specialchar/dialogs/lang/de.js | 13 + .../plugins/specialchar/dialogs/lang/el.js | 13 + .../plugins/specialchar/dialogs/lang/en-gb.js | 13 + .../plugins/specialchar/dialogs/lang/en.js | 13 + .../plugins/specialchar/dialogs/lang/eo.js | 12 + .../plugins/specialchar/dialogs/lang/es.js | 13 + .../plugins/specialchar/dialogs/lang/et.js | 13 + .../plugins/specialchar/dialogs/lang/fa.js | 12 + .../plugins/specialchar/dialogs/lang/fi.js | 13 + .../plugins/specialchar/dialogs/lang/fr-ca.js | 10 + .../plugins/specialchar/dialogs/lang/fr.js | 11 + .../plugins/specialchar/dialogs/lang/gl.js | 13 + .../plugins/specialchar/dialogs/lang/he.js | 12 + .../plugins/specialchar/dialogs/lang/hr.js | 13 + .../plugins/specialchar/dialogs/lang/hu.js | 12 + .../plugins/specialchar/dialogs/lang/id.js | 13 + .../plugins/specialchar/dialogs/lang/it.js | 14 + .../plugins/specialchar/dialogs/lang/ja.js | 9 + .../plugins/specialchar/dialogs/lang/km.js | 13 + .../plugins/specialchar/dialogs/lang/ku.js | 13 + .../plugins/specialchar/dialogs/lang/lv.js | 13 + .../plugins/specialchar/dialogs/lang/nb.js | 11 + .../plugins/specialchar/dialogs/lang/nl.js | 13 + .../plugins/specialchar/dialogs/lang/no.js | 11 + .../plugins/specialchar/dialogs/lang/pl.js | 12 + .../plugins/specialchar/dialogs/lang/pt-br.js | 11 + .../plugins/specialchar/dialogs/lang/pt.js | 13 + .../plugins/specialchar/dialogs/lang/ru.js | 13 + .../plugins/specialchar/dialogs/lang/si.js | 13 + .../plugins/specialchar/dialogs/lang/sk.js | 13 + .../plugins/specialchar/dialogs/lang/sl.js | 12 + .../plugins/specialchar/dialogs/lang/sq.js | 13 + .../plugins/specialchar/dialogs/lang/sv.js | 11 + .../plugins/specialchar/dialogs/lang/th.js | 13 + .../plugins/specialchar/dialogs/lang/tr.js | 12 + .../plugins/specialchar/dialogs/lang/tt.js | 13 + .../plugins/specialchar/dialogs/lang/ug.js | 13 + .../plugins/specialchar/dialogs/lang/uk.js | 12 + .../plugins/specialchar/dialogs/lang/vi.js | 14 + .../plugins/specialchar/dialogs/lang/zh-cn.js | 9 + .../plugins/specialchar/dialogs/lang/zh.js | 12 + .../specialchar/dialogs/specialchar.js | 14 + .../ckeditor/plugins/table/dialogs/table.js | 21 + .../plugins/tabletools/dialogs/tableCell.js | 17 + .../plugins/templates/dialogs/templates.css | 84 + .../plugins/templates/dialogs/templates.js | 10 + .../plugins/templates/templates/default.js | 6 + .../templates/templates/images/template1.gif | Bin 0 -> 375 bytes .../templates/templates/images/template2.gif | Bin 0 -> 333 bytes .../templates/templates/images/template3.gif | Bin 0 -> 422 bytes .../plugins/ckeditor/plugins/wsc/LICENSE.md | 28 + .../js/plugins/ckeditor/plugins/wsc/README.md | 25 + .../ckeditor/plugins/wsc/dialogs/ciframe.html | 66 + .../plugins/wsc/dialogs/tmpFrameset.html | 52 + .../ckeditor/plugins/wsc/dialogs/wsc.css | 82 + .../ckeditor/plugins/wsc/dialogs/wsc.js | 74 + .../ckeditor/plugins/wsc/dialogs/wsc_ie.js | 11 + admin/js/plugins/ckeditor/samples/ajax.html | 82 + admin/js/plugins/ckeditor/samples/api.html | 207 + .../js/plugins/ckeditor/samples/appendto.html | 57 + .../samples/assets/inlineall/logo.png | Bin 0 -> 4411 bytes .../assets/outputxhtml/outputxhtml.css | 204 + .../ckeditor/samples/assets/posteddata.php | 59 + .../ckeditor/samples/assets/sample.jpg | Bin 0 -> 17932 bytes .../samples/assets/uilanguages/languages.js | 7 + .../ckeditor/samples/datafiltering.html | 401 + .../plugins/ckeditor/samples/divreplace.html | 141 + admin/js/plugins/ckeditor/samples/index.html | 128 + admin/js/plugins/ckeditor/samples/index.php | 0 .../plugins/ckeditor/samples/inlineall.html | 311 + .../ckeditor/samples/inlinebycode.html | 121 + .../ckeditor/samples/inlinetextarea.html | 110 + admin/js/plugins/ckeditor/samples/jquery.html | 100 + .../plugins/dialog/assets/my_dialog.js | 48 + .../samples/plugins/dialog/dialog.html | 187 + .../samples/plugins/enterkey/enterkey.html | 103 + .../assets/outputforflash/outputforflash.fla | Bin 0 -> 85504 bytes .../assets/outputforflash/outputforflash.swf | Bin 0 -> 15571 bytes .../assets/outputforflash/swfobject.js | 18 + .../plugins/htmlwriter/outputforflash.html | 280 + .../plugins/htmlwriter/outputhtml.html | 221 + .../samples/plugins/magicline/magicline.html | 206 + .../samples/plugins/toolbar/toolbar.html | 232 + .../samples/plugins/wysiwygarea/fullpage.html | 77 + .../js/plugins/ckeditor/samples/readonly.html | 73 + .../ckeditor/samples/replacebyclass.html | 57 + .../ckeditor/samples/replacebycode.html | 56 + admin/js/plugins/ckeditor/samples/sample.css | 365 + admin/js/plugins/ckeditor/samples/sample.js | 50 + .../ckeditor/samples/sample_posteddata.php | 16 + .../js/plugins/ckeditor/samples/tabindex.html | 75 + .../js/plugins/ckeditor/samples/uicolor.html | 69 + .../plugins/ckeditor/samples/uilanguages.html | 119 + .../plugins/ckeditor/samples/xhtmlstyle.html | 231 + admin/js/plugins/ckeditor/skins/index.php | 0 .../plugins/ckeditor/skins/moono/dialog.css | 5 + .../ckeditor/skins/moono/dialog_ie.css | 5 + .../ckeditor/skins/moono/dialog_ie7.css | 5 + .../ckeditor/skins/moono/dialog_ie8.css | 5 + .../ckeditor/skins/moono/dialog_iequirks.css | 5 + .../plugins/ckeditor/skins/moono/editor.css | 5 + .../ckeditor/skins/moono/editor_gecko.css | 5 + .../ckeditor/skins/moono/editor_ie.css | 5 + .../ckeditor/skins/moono/editor_ie7.css | 5 + .../ckeditor/skins/moono/editor_ie8.css | 5 + .../ckeditor/skins/moono/editor_iequirks.css | 5 + .../js/plugins/ckeditor/skins/moono/icons.png | Bin 0 -> 20833 bytes .../ckeditor/skins/moono/icons_hidpi.png | Bin 0 -> 67753 bytes .../ckeditor/skins/moono/images/arrow.png | Bin 0 -> 261 bytes .../ckeditor/skins/moono/images/close.png | Bin 0 -> 824 bytes .../skins/moono/images/hidpi/close.png | Bin 0 -> 1792 bytes .../skins/moono/images/hidpi/lock-open.png | Bin 0 -> 1503 bytes .../skins/moono/images/hidpi/lock.png | Bin 0 -> 1616 bytes .../skins/moono/images/hidpi/refresh.png | Bin 0 -> 2320 bytes .../ckeditor/skins/moono/images/lock-open.png | Bin 0 -> 736 bytes .../ckeditor/skins/moono/images/lock.png | Bin 0 -> 728 bytes .../ckeditor/skins/moono/images/refresh.png | Bin 0 -> 953 bytes .../js/plugins/ckeditor/skins/moono/readme.md | 51 + admin/js/plugins/ckeditor/styles.js | 111 + admin/js/plugins/index.php | 0 admin/pages.php | 349 + admin/pastes.php | 344 + admin/sitemap.php | 293 + admin/ssp.pastes.php | 417 + admin/ssp.users.php | 426 + admin/stats.php | 387 + admin/tasks.php | 270 + admin/users.php | 340 + archive.php | 160 + config.php | 308 + docs/CHANGELOG.md | 84 + docs/GPL.txt | 674 + docs/config.example.php | 306 + docs/nginx.example.conf | 33 + docs/paste.mysqlschema.sql | 193 + favicon.ico | Bin 0 -> 15086 bytes feed/.htaccess | 8 + feed/index.php | 34 + feed/rss.class.php | 77 + feed/rss.class.php.new | 70 + feed/rss.php | 34 + feed/rss.php.new | 30 + feed/test.php | 21 + includes/Parsedown/LICENSE.txt | 20 + includes/Parsedown/Parsedown.php | 1548 ++ includes/Parsedown/index.php | 1 + includes/captcha.php | 191 + includes/captchabg/index.php | 0 includes/captchabg/text1.png | Bin 0 -> 3654 bytes includes/captchabg/text2.png | Bin 0 -> 2003 bytes includes/captchabg/text3.png | Bin 0 -> 3775 bytes includes/fonts/SigmarOne.ttf | Bin 0 -> 66504 bytes includes/fonts/captcha_code.otf | Bin 0 -> 174148 bytes includes/fonts/index.php | 0 includes/fonts/times_new_yorker.ttf | Bin 0 -> 807724 bytes includes/functions.php | 369 + includes/geshi.php | 4735 +++++ includes/geshi/4cs.php | 137 + includes/geshi/6502acme.php | 228 + includes/geshi/6502kickass.php | 239 + includes/geshi/6502tasm.php | 187 + includes/geshi/68000devpac.php | 166 + includes/geshi/abap.php | 1407 ++ includes/geshi/actionscript.php | 195 + includes/geshi/actionscript3.php | 471 + includes/geshi/ada.php | 130 + includes/geshi/aimms.php | 316 + includes/geshi/algol68.php | 328 + includes/geshi/apache.php | 481 + includes/geshi/applescript.php | 155 + includes/geshi/apt_sources.php | 153 + includes/geshi/arm.php | 3316 ++++ includes/geshi/asm.php | 601 + includes/geshi/asp.php | 162 + includes/geshi/asymptote.php | 1850 ++ includes/geshi/autoconf.php | 510 + includes/geshi/autohotkey.php | 371 + includes/geshi/autoit.php | 1888 ++ includes/geshi/avisynth.php | 193 + includes/geshi/awk.php | 156 + includes/geshi/bascomavr.php | 183 + includes/geshi/bash.php | 472 + includes/geshi/basic4gl.php | 339 + includes/geshi/batch.php | 228 + includes/geshi/bf.php | 113 + includes/geshi/biblatex.php | 200 + includes/geshi/bibtex.php | 181 + includes/geshi/blitzbasic.php | 183 + includes/geshi/bnf.php | 117 + includes/geshi/boo.php | 215 + includes/geshi/c.php | 279 + includes/geshi/c_loadrunner.php | 321 + includes/geshi/c_mac.php | 225 + includes/geshi/c_winapi.php | 870 + includes/geshi/caddcl.php | 124 + includes/geshi/cadlisp.php | 184 + includes/geshi/ceylon.php | 171 + includes/geshi/cfdg.php | 122 + includes/geshi/cfm.php | 297 + includes/geshi/chaiscript.php | 138 + includes/geshi/chapel.php | 169 + includes/geshi/cil.php | 194 + includes/geshi/clojure.php | 132 + includes/geshi/cmake.php | 179 + includes/geshi/cobol.php | 457 + includes/geshi/coffeescript.php | 144 + includes/geshi/cpp-qt.php | 622 + includes/geshi/cpp-winapi.php | 836 + includes/geshi/cpp.php | 250 + includes/geshi/csharp.php | 257 + includes/geshi/css.php | 944 + includes/geshi/cuesheet.php | 136 + includes/geshi/d.php | 250 + includes/geshi/dart.php | 159 + includes/geshi/dcl.php | 190 + includes/geshi/dcpu16.php | 129 + includes/geshi/dcs.php | 180 + includes/geshi/delphi.php | 299 + includes/geshi/diff.php | 194 + includes/geshi/div.php | 124 + includes/geshi/dos.php | 225 + includes/geshi/dot.php | 162 + includes/geshi/e.php | 206 + includes/geshi/ecmascript.php | 208 + includes/geshi/eiffel.php | 393 + includes/geshi/email.php | 220 + includes/geshi/epc.php | 152 + includes/geshi/erlang.php | 439 + includes/geshi/euphoria.php | 138 + includes/geshi/ezt.php | 134 + includes/geshi/f1.php | 149 + includes/geshi/falcon.php | 217 + includes/geshi/fo.php | 326 + includes/geshi/fortran.php | 158 + includes/geshi/freebasic.php | 139 + includes/geshi/freeswitch.php | 166 + includes/geshi/fsharp.php | 211 + includes/geshi/gambas.php | 212 + includes/geshi/gdb.php | 194 + includes/geshi/genero.php | 461 + includes/geshi/genie.php | 155 + includes/geshi/gettext.php | 95 + includes/geshi/glsl.php | 203 + includes/geshi/gml.php | 367 + includes/geshi/gnuplot.php | 294 + includes/geshi/go.php | 373 + includes/geshi/groovy.php | 1009 ++ includes/geshi/gwbasic.php | 151 + includes/geshi/haskell.php | 193 + includes/geshi/haxe.php | 158 + includes/geshi/hicest.php | 106 + includes/geshi/hq9plus.php | 102 + includes/geshi/html4strict.php | 188 + includes/geshi/html5.php | 210 + includes/geshi/icon.php | 210 + includes/geshi/idl.php | 121 + includes/geshi/index.php | 1 + includes/geshi/ini.php | 127 + includes/geshi/inno.php | 210 + includes/geshi/intercal.php | 120 + includes/geshi/io.php | 136 + includes/geshi/ispfpanel.php | 165 + includes/geshi/j.php | 188 + includes/geshi/java.php | 980 ++ includes/geshi/java5.php | 1035 ++ includes/geshi/javascript.php | 172 + includes/geshi/jcl.php | 155 + includes/geshi/jquery.php | 236 + includes/geshi/julia.php | 171 + includes/geshi/kixtart.php | 327 + includes/geshi/klonec.php | 280 + includes/geshi/klonecpp.php | 308 + includes/geshi/kotlin.php | 959 + includes/geshi/latex.php | 221 + includes/geshi/lb.php | 160 + includes/geshi/ldif.php | 114 + includes/geshi/lisp.php | 147 + includes/geshi/llvm.php | 389 + includes/geshi/locobasic.php | 128 + includes/geshi/logtalk.php | 343 + includes/geshi/lolcode.php | 159 + includes/geshi/lotusformulas.php | 316 + includes/geshi/lotusscript.php | 189 + includes/geshi/lscript.php | 385 + includes/geshi/lsl2.php | 1276 ++ includes/geshi/lua.php | 175 + includes/geshi/m68k.php | 141 + includes/geshi/magiksf.php | 191 + includes/geshi/make.php | 149 + includes/geshi/mapbasic.php | 906 + includes/geshi/mathematica.php | 5035 ++++++ includes/geshi/matlab.php | 225 + includes/geshi/mercury.php | 130 + includes/geshi/metapost.php | 399 + includes/geshi/mirc.php | 169 + includes/geshi/mk-61.php | 106 + includes/geshi/mmix.php | 191 + includes/geshi/modula2.php | 134 + includes/geshi/modula3.php | 133 + includes/geshi/mpasm.php | 162 + includes/geshi/mxml.php | 143 + includes/geshi/mysql.php | 472 + includes/geshi/nagios.php | 223 + includes/geshi/netrexx.php | 161 + includes/geshi/newlisp.php | 189 + includes/geshi/nginx.php | 868 + includes/geshi/nimrod.php | 201 + includes/geshi/nsis.php | 351 + includes/geshi/oberon2.php | 133 + includes/geshi/objc.php | 356 + includes/geshi/objeck.php | 114 + includes/geshi/ocaml-brief.php | 110 + includes/geshi/ocaml.php | 185 + includes/geshi/octave.php | 513 + includes/geshi/oobas.php | 133 + includes/geshi/oorexx.php | 169 + includes/geshi/oracle11.php | 612 + includes/geshi/oracle8.php | 494 + includes/geshi/oxygene.php | 155 + includes/geshi/oz.php | 142 + includes/geshi/parasail.php | 128 + includes/geshi/parigp.php | 293 + includes/geshi/pascal.php | 163 + includes/geshi/pcre.php | 186 + includes/geshi/per.php | 300 + includes/geshi/perl.php | 211 + includes/geshi/perl6.php | 195 + includes/geshi/pf.php | 176 + includes/geshi/phix.php | 439 + includes/geshi/php-brief.php | 220 + includes/geshi/php.php | 1115 ++ includes/geshi/pic16.php | 139 + includes/geshi/pike.php | 101 + includes/geshi/pixelbender.php | 173 + includes/geshi/pli.php | 198 + includes/geshi/plsql.php | 254 + includes/geshi/postgresql.php | 285 + includes/geshi/postscript.php | 217 + includes/geshi/povray.php | 198 + includes/geshi/powerbuilder.php | 417 + includes/geshi/powershell.php | 275 + includes/geshi/proftpd.php | 372 + includes/geshi/progress.php | 483 + includes/geshi/prolog.php | 141 + includes/geshi/properties.php | 125 + includes/geshi/providex.php | 297 + includes/geshi/purebasic.php | 301 + includes/geshi/pycon.php | 62 + includes/geshi/pys60.php | 271 + includes/geshi/python.php | 242 + includes/geshi/q.php | 147 + includes/geshi/qbasic.php | 160 + includes/geshi/qml.php | 351 + includes/geshi/racket.php | 964 + includes/geshi/rails.php | 404 + includes/geshi/rbs.php | 224 + includes/geshi/rebol.php | 194 + includes/geshi/reg.php | 231 + includes/geshi/rexx.php | 160 + includes/geshi/robots.php | 98 + includes/geshi/rpmspec.php | 131 + includes/geshi/rsplus.php | 481 + includes/geshi/ruby.php | 229 + includes/geshi/rust.php | 235 + includes/geshi/sas.php | 288 + includes/geshi/sass.php | 590 + includes/geshi/scala.php | 136 + includes/geshi/scheme.php | 168 + includes/geshi/scilab.php | 293 + includes/geshi/scl.php | 148 + includes/geshi/sdlbasic.php | 163 + includes/geshi/smalltalk.php | 152 + includes/geshi/smarty.php | 190 + includes/geshi/spark.php | 127 + includes/geshi/sparql.php | 153 + includes/geshi/sql.php | 168 + includes/geshi/standardml.php | 216 + includes/geshi/stonescript.php | 305 + includes/geshi/swift.php | 557 + includes/geshi/systemverilog.php | 315 + includes/geshi/tcl.php | 192 + includes/geshi/tclegg.php | 501 + includes/geshi/teraterm.php | 352 + includes/geshi/texgraph.php | 1137 ++ includes/geshi/text.php | 82 + includes/geshi/thinbasic.php | 866 + includes/geshi/tsql.php | 819 + includes/geshi/twig.php | 286 + includes/geshi/typoscript.php | 298 + includes/geshi/unicon.php | 208 + includes/geshi/upc.php | 268 + includes/geshi/urbi.php | 198 + includes/geshi/uscript.php | 297 + includes/geshi/vala.php | 149 + includes/geshi/vb.php | 155 + includes/geshi/vbnet.php | 180 + includes/geshi/vbscript.php | 153 + includes/geshi/vedit.php | 101 + includes/geshi/verilog.php | 193 + includes/geshi/vhdl.php | 181 + includes/geshi/vim.php | 418 + includes/geshi/visualfoxpro.php | 454 + includes/geshi/visualprolog.php | 127 + includes/geshi/whitespace.php | 119 + includes/geshi/whois.php | 178 + includes/geshi/winbatch.php | 367 + includes/geshi/xbasic.php | 141 + includes/geshi/xml.php | 155 + includes/geshi/xojo.php | 279 + includes/geshi/xorg_conf.php | 122 + includes/geshi/xpp.php | 434 + includes/geshi/yaml.php | 149 + includes/geshi/z80.php | 142 + includes/geshi/zxbasic.php | 148 + includes/index.php | 0 includes/password.php | 317 + index.php | 403 + install/configure.php | 349 + install/index.php | 301 + install/install.php | 331 + langs/en.php | 121 + langs/fr.php | 123 + langs/index.php | 1 + login.php | 407 + mail/LICENSE | 504 + mail/README.md | 196 + mail/class.phpmailer.php | 3983 +++++ mail/class.pop3.php | 407 + mail/class.smtp.php | 1249 ++ mail/index.php | 0 mail/mail.php | 81 + main.php | 402 + oauth.php | 107 + oauth/Google/Auth/Abstract.php | 35 + oauth/Google/Auth/AppIdentity.php | 100 + oauth/Google/Auth/AssertionCredentials.php | 138 + oauth/Google/Auth/Exception.php | 22 + oauth/Google/Auth/LoginTicket.php | 69 + oauth/Google/Auth/OAuth2.php | 595 + oauth/Google/Auth/Simple.php | 62 + oauth/Google/Cache/Abstract.php | 53 + oauth/Google/Cache/Apc.php | 73 + oauth/Google/Cache/Exception.php | 21 + oauth/Google/Cache/File.php | 145 + oauth/Google/Cache/Memcache.php | 137 + oauth/Google/Cache/Null.php | 56 + oauth/Google/Client.php | 612 + oauth/Google/Collection.php | 96 + oauth/Google/Config.php | 326 + oauth/Google/Exception.php | 20 + oauth/Google/Http/Batch.php | 143 + oauth/Google/Http/CacheParser.php | 184 + oauth/Google/Http/MediaFileUpload.php | 292 + oauth/Google/Http/REST.php | 139 + oauth/Google/Http/Request.php | 476 + oauth/Google/IO/Abstract.php | 329 + oauth/Google/IO/Curl.php | 137 + oauth/Google/IO/Exception.php | 22 + oauth/Google/IO/Stream.php | 211 + oauth/Google/IO/cacerts.pem | 2183 +++ oauth/Google/Model.php | 250 + oauth/Google/Service.php | 39 + oauth/Google/Service/AdExchangeBuyer.php | 1997 +++ oauth/Google/Service/AdExchangeSeller.php | 1996 +++ oauth/Google/Service/AdSense.php | 3770 ++++ oauth/Google/Service/AdSenseHost.php | 2281 +++ oauth/Google/Service/Admin.php | 207 + oauth/Google/Service/Analytics.php | 10237 +++++++++++ oauth/Google/Service/AndroidPublisher.php | 3213 ++++ oauth/Google/Service/AppState.php | 374 + oauth/Google/Service/Appsactivity.php | 588 + oauth/Google/Service/Audit.php | 438 + oauth/Google/Service/Autoscaler.php | 1134 ++ oauth/Google/Service/Bigquery.php | 3410 ++++ oauth/Google/Service/Blogger.php | 3465 ++++ oauth/Google/Service/Books.php | 6762 +++++++ oauth/Google/Service/Calendar.php | 4005 +++++ oauth/Google/Service/CivicInfo.php | 1628 ++ oauth/Google/Service/CloudMonitoring.php | 974 + oauth/Google/Service/Compute.php | 12549 +++++++++++++ oauth/Google/Service/Coordinate.php | 1474 ++ oauth/Google/Service/Customsearch.php | 1432 ++ oauth/Google/Service/Datastore.php | 1583 ++ oauth/Google/Service/Dfareporting.php | 2928 ++++ oauth/Google/Service/Directory.php | 5295 ++++++ oauth/Google/Service/Dns.php | 950 + .../Google/Service/DoubleClickBidManager.php | 1117 ++ oauth/Google/Service/Doubleclicksearch.php | 1550 ++ oauth/Google/Service/Drive.php | 5982 +++++++ oauth/Google/Service/Exception.php | 53 + oauth/Google/Service/Freebase.php | 487 + oauth/Google/Service/Fusiontables.php | 2458 +++ oauth/Google/Service/Games.php | 7926 +++++++++ oauth/Google/Service/GamesManagement.php | 1014 ++ oauth/Google/Service/Genomics.php | 3247 ++++ oauth/Google/Service/Gmail.php | 1799 ++ oauth/Google/Service/GroupsMigration.php | 129 + oauth/Google/Service/Groupssettings.php | 467 + oauth/Google/Service/IdentityToolkit.php | 1760 ++ oauth/Google/Service/Licensing.php | 499 + oauth/Google/Service/Manager.php | 1940 ++ oauth/Google/Service/MapsEngine.php | 4772 +++++ oauth/Google/Service/Mirror.php | 2032 +++ oauth/Google/Service/Oauth2.php | 412 + oauth/Google/Service/Orkut.php | 4025 +++++ oauth/Google/Service/Pagespeedonline.php | 761 + oauth/Google/Service/Plus.php | 3855 ++++ oauth/Google/Service/PlusDomains.php | 4010 +++++ oauth/Google/Service/Prediction.php | 1290 ++ oauth/Google/Service/Pubsub.php | 827 + oauth/Google/Service/QPXExpress.php | 1700 ++ oauth/Google/Service/Replicapool.php | 1590 ++ oauth/Google/Service/Reports.php | 1188 ++ oauth/Google/Service/Reseller.php | 1102 ++ oauth/Google/Service/Resource.php | 210 + oauth/Google/Service/Resourceviews.php | 1015 ++ oauth/Google/Service/SQLAdmin.php | 2782 +++ oauth/Google/Service/ShoppingContent.php | 4442 +++++ oauth/Google/Service/SiteVerification.php | 399 + oauth/Google/Service/Spectrum.php | 1873 ++ oauth/Google/Service/Storage.php | 3274 ++++ oauth/Google/Service/Taskqueue.php | 727 + oauth/Google/Service/Tasks.php | 958 + oauth/Google/Service/Translate.php | 367 + oauth/Google/Service/Urlshortener.php | 453 + oauth/Google/Service/Webfonts.php | 228 + oauth/Google/Service/YouTube.php | 10947 ++++++++++++ oauth/Google/Service/YouTubeAnalytics.php | 623 + oauth/Google/Signer/Abstract.php | 29 + oauth/Google/Signer/P12.php | 91 + oauth/Google/Utils.php | 135 + oauth/Google/Utils/URITemplate.php | 333 + oauth/Google/Verifier/Abstract.php | 30 + oauth/Google/Verifier/Pem.php | 74 + oauth/facebook.php | 117 + oauth/facebook/base_facebook.php | 1124 ++ oauth/facebook/facebook.php | 95 + oauth/google.php | 133 + oauth/index.php | 0 pages.php | 158 + paste.php | 407 + profile.php | 213 + robots.txt | 8 + sitemap.xml | 49 + theme/blue/archive.php | 98 + theme/blue/css/bootstrap.css | 6565 +++++++ theme/blue/css/bootstrap.min.css | 5 + theme/blue/css/index.php | 0 theme/blue/css/paste.css | 24 + theme/blue/css/plugins/bootstrap-checkbox.css | 112 + .../css/plugins/bootstrap-checkbox.min.css | 1 + theme/blue/css/plugins/bootstrap-select.css | 264 + .../blue/css/plugins/bootstrap-select.min.css | 6 + theme/blue/css/plugins/datatables.css | 466 + theme/blue/css/plugins/datatables.min.css | 1 + theme/blue/css/plugins/font-awesome.min.css | 4 + theme/blue/css/plugins/fonts/FontAwesome.otf | Bin 0 -> 124988 bytes .../css/plugins/fonts/fontawesome-webfont.eot | Bin 0 -> 76518 bytes .../css/plugins/fonts/fontawesome-webfont.svg | 685 + .../css/plugins/fonts/fontawesome-webfont.ttf | Bin 0 -> 152796 bytes .../plugins/fonts/fontawesome-webfont.woff | Bin 0 -> 90412 bytes .../plugins/fonts/fontawesome-webfont.woff2 | Bin 0 -> 71896 bytes theme/blue/css/responsive.css | 22 + theme/blue/css/style.css | 2562 +++ theme/blue/css/style.min.css | 1 + theme/blue/errors.php | 58 + theme/blue/feed-icon-16.gif | Bin 0 -> 652 bytes theme/blue/footer.php | 72 + theme/blue/header.php | 232 + theme/blue/img/favicon.ico | Bin 0 -> 15086 bytes theme/blue/img/index.php | 0 theme/blue/index.php | 0 theme/blue/js/bootstrap-select.js | 1215 ++ theme/blue/js/bootstrap.min.js | 7 + theme/blue/js/datatables.min.js | 158 + theme/blue/js/index.php | 0 theme/blue/js/jquery-ui.min.js | 13 + theme/blue/js/jquery.min.js | 4 + theme/blue/js/paste.js | 306 + theme/blue/login.php | 190 + theme/blue/main.php | 240 + theme/blue/oauth.php | 78 + theme/blue/pages.php | 41 + theme/blue/profile.php | 80 + theme/blue/sidebar.php | 142 + theme/blue/user_profile.php | 145 + theme/blue/view.php | 263 + theme/clean/archive.php | 98 + theme/clean/css/bootstrap.css | 6565 +++++++ theme/clean/css/bootstrap.min.css | 5 + theme/clean/css/index.php | 0 theme/clean/css/paste.css | 24 + .../clean/css/plugins/bootstrap-checkbox.css | 112 + .../css/plugins/bootstrap-checkbox.min.css | 1 + theme/clean/css/plugins/bootstrap-select.css | 264 + .../css/plugins/bootstrap-select.min.css | 6 + theme/clean/css/plugins/datatables.css | 466 + theme/clean/css/plugins/datatables.min.css | 1 + theme/clean/css/plugins/font-awesome.min.css | 4 + theme/clean/css/plugins/fonts/FontAwesome.otf | Bin 0 -> 124988 bytes .../css/plugins/fonts/fontawesome-webfont.eot | Bin 0 -> 76518 bytes .../css/plugins/fonts/fontawesome-webfont.svg | 685 + .../css/plugins/fonts/fontawesome-webfont.ttf | Bin 0 -> 152796 bytes .../plugins/fonts/fontawesome-webfont.woff | Bin 0 -> 90412 bytes .../plugins/fonts/fontawesome-webfont.woff2 | Bin 0 -> 71896 bytes theme/clean/css/responsive.css | 22 + theme/clean/css/style.css | 2550 +++ theme/clean/css/style.min.css | 1 + theme/clean/errors.php | 58 + theme/clean/footer.php | 72 + theme/clean/header.php | 219 + theme/clean/img/favicon.ico | Bin 0 -> 15086 bytes theme/clean/img/index.php | 0 theme/clean/index.php | 0 theme/clean/js/bootstrap-select.js | 1215 ++ theme/clean/js/bootstrap.min.js | 7 + theme/clean/js/datatables.min.js | 158 + theme/clean/js/index.php | 0 theme/clean/js/jquery-ui.min.js | 13 + theme/clean/js/jquery.min.js | 4 + theme/clean/js/paste.js | 306 + theme/clean/login.php | 190 + theme/clean/main.php | 241 + theme/clean/oauth.php | 78 + theme/clean/pages.php | 41 + theme/clean/profile.php | 80 + theme/clean/sidebar.php | 142 + theme/clean/user_profile.php | 145 + theme/clean/view.php | 263 + theme/default/archive.php | 98 + theme/default/css/bootstrap.css | 6565 +++++++ theme/default/css/bootstrap.min.css | 5 + theme/default/css/index.php | 0 theme/default/css/paste.css | 24 + .../css/plugins/bootstrap-checkbox.css | 112 + .../css/plugins/bootstrap-checkbox.min.css | 1 + .../default/css/plugins/bootstrap-select.css | 264 + .../css/plugins/bootstrap-select.min.css | 6 + theme/default/css/plugins/datatables.css | 466 + theme/default/css/plugins/datatables.min.css | 1 + .../default/css/plugins/font-awesome.min.css | 4 + .../default/css/plugins/fonts/FontAwesome.otf | Bin 0 -> 124988 bytes .../css/plugins/fonts/fontawesome-webfont.eot | Bin 0 -> 76518 bytes .../css/plugins/fonts/fontawesome-webfont.svg | 685 + .../css/plugins/fonts/fontawesome-webfont.ttf | Bin 0 -> 152796 bytes .../plugins/fonts/fontawesome-webfont.woff | Bin 0 -> 90412 bytes .../plugins/fonts/fontawesome-webfont.woff2 | Bin 0 -> 71896 bytes theme/default/css/responsive.css | 22 + theme/default/css/style.css | 2562 +++ theme/default/css/style.min.css | 1 + theme/default/errors.php | 58 + theme/default/footer.php | 72 + theme/default/header.php | 222 + theme/default/img/favicon.ico | Bin 0 -> 15086 bytes theme/default/img/index.php | 0 theme/default/index.php | 0 theme/default/js/bootstrap-select.js | 1215 ++ theme/default/js/bootstrap.min.js | 7 + theme/default/js/datatables.min.js | 158 + theme/default/js/index.php | 0 theme/default/js/jquery-ui.min.js | 13 + theme/default/js/jquery.min.js | 4 + theme/default/js/paste.js | 306 + theme/default/login.php | 190 + theme/default/main.php | 240 + theme/default/oauth.php | 78 + theme/default/pages.php | 41 + theme/default/profile.php | 80 + theme/default/sidebar.php | 142 + theme/default/user_profile.php | 145 + theme/default/view.php | 263 + theme/echosystem/archive.php | 98 + theme/echosystem/css/bootstrap.css | 6565 +++++++ theme/echosystem/css/bootstrap.min.css | 5 + theme/echosystem/css/index.php | 0 theme/echosystem/css/paste.css | 24 + .../css/plugins/bootstrap-checkbox.css | 112 + .../css/plugins/bootstrap-checkbox.min.css | 1 + .../css/plugins/bootstrap-select.css | 264 + .../css/plugins/bootstrap-select.min.css | 6 + theme/echosystem/css/plugins/datatables.css | 466 + .../echosystem/css/plugins/datatables.min.css | 1 + .../css/plugins/font-awesome.min.css | 4 + .../css/plugins/fonts/FontAwesome.otf | Bin 0 -> 124988 bytes .../css/plugins/fonts/fontawesome-webfont.eot | Bin 0 -> 76518 bytes .../css/plugins/fonts/fontawesome-webfont.svg | 685 + .../css/plugins/fonts/fontawesome-webfont.ttf | Bin 0 -> 152796 bytes .../plugins/fonts/fontawesome-webfont.woff | Bin 0 -> 90412 bytes .../plugins/fonts/fontawesome-webfont.woff2 | Bin 0 -> 71896 bytes theme/echosystem/css/responsive.css | 22 + theme/echosystem/css/style.css | 2550 +++ theme/echosystem/css/style.min.css | 1 + theme/echosystem/errors.php | 58 + theme/echosystem/footer.php | 72 + theme/echosystem/header.php | 219 + theme/echosystem/img/favicon.ico | Bin 0 -> 15086 bytes theme/echosystem/img/index.php | 0 theme/echosystem/index.php | 0 theme/echosystem/js/bootstrap-select.js | 1215 ++ theme/echosystem/js/bootstrap.min.js | 7 + theme/echosystem/js/datatables.min.js | 158 + theme/echosystem/js/index.php | 0 theme/echosystem/js/jquery-ui.min.js | 13 + theme/echosystem/js/jquery.min.js | 4 + theme/echosystem/js/paste.js | 306 + theme/echosystem/login.php | 190 + theme/echosystem/main.php | 241 + theme/echosystem/oauth.php | 78 + theme/echosystem/pages.php | 41 + theme/echosystem/profile.php | 80 + theme/echosystem/sidebar.php | 142 + theme/echosystem/user_profile.php | 145 + theme/echosystem/view.php | 263 + theme/echosystem_blue/archive.php | 98 + theme/echosystem_blue/css/bootstrap.css | 6565 +++++++ theme/echosystem_blue/css/bootstrap.min.css | 5 + theme/echosystem_blue/css/index.php | 0 theme/echosystem_blue/css/paste.css | 24 + .../css/plugins/bootstrap-checkbox.css | 112 + .../css/plugins/bootstrap-checkbox.min.css | 1 + .../css/plugins/bootstrap-select.css | 264 + .../css/plugins/bootstrap-select.min.css | 6 + .../css/plugins/datatables.css | 466 + .../css/plugins/datatables.min.css | 1 + .../css/plugins/font-awesome.min.css | 4 + .../css/plugins/fonts/FontAwesome.otf | Bin 0 -> 124988 bytes .../css/plugins/fonts/fontawesome-webfont.eot | Bin 0 -> 76518 bytes .../css/plugins/fonts/fontawesome-webfont.svg | 685 + .../css/plugins/fonts/fontawesome-webfont.ttf | Bin 0 -> 152796 bytes .../plugins/fonts/fontawesome-webfont.woff | Bin 0 -> 90412 bytes .../plugins/fonts/fontawesome-webfont.woff2 | Bin 0 -> 71896 bytes theme/echosystem_blue/css/responsive.css | 22 + theme/echosystem_blue/css/style.css | 2562 +++ theme/echosystem_blue/css/style.min.css | 1 + theme/echosystem_blue/errors.php | 58 + theme/echosystem_blue/footer.php | 72 + theme/echosystem_blue/header.old.php | 223 + theme/echosystem_blue/header.php | 170 + theme/echosystem_blue/img/favicon.ico | Bin 0 -> 15086 bytes theme/echosystem_blue/img/index.php | 0 theme/echosystem_blue/index.php | 0 theme/echosystem_blue/js/bootstrap-select.js | 1215 ++ theme/echosystem_blue/js/bootstrap.min.js | 7 + theme/echosystem_blue/js/datatables.min.js | 158 + theme/echosystem_blue/js/index.php | 0 theme/echosystem_blue/js/jquery-ui.min.js | 13 + theme/echosystem_blue/js/jquery.min.js | 4 + theme/echosystem_blue/js/paste.js | 306 + theme/echosystem_blue/login.php | 190 + theme/echosystem_blue/main.php | 241 + theme/echosystem_blue/oauth.php | 78 + theme/echosystem_blue/pages.php | 41 + theme/echosystem_blue/profile.php | 80 + theme/echosystem_blue/sidebar.php | 142 + theme/echosystem_blue/user_profile.php | 145 + theme/echosystem_blue/view.php | 263 + theme/index.php | 0 tmp/.htaccess | 1 + tmp/temp.tdata | 11 + tmp/temp.tdata1 | 2 + upgrade/1.9-to.2.0.php | 50 + upgrade/2.0-to.2.1.sql | 15 + upgrade/index.php | 0 user.php | 228 + verify.php | 71 + 976 files changed, 381629 insertions(+), 1 deletion(-) create mode 100644 .htaccess create mode 100644 CHANGELOG create mode 100644 admin/admin.php create mode 100644 admin/ads.php create mode 100644 admin/ajax_pastes.php create mode 100644 admin/ajax_users.php create mode 100644 admin/configuration.php create mode 100644 admin/css/bootstrap-checkbox.min.css create mode 100644 admin/css/bootstrap-select.min.css create mode 100644 admin/css/bootstrap.css create mode 100644 admin/css/bootstrap.min.css create mode 100644 admin/css/bootstrap3-wysihtml5.min.css create mode 100644 admin/css/datatables.min.css create mode 100644 admin/css/font-awesome.min.css create mode 100644 admin/css/fonts/FontAwesome.otf create mode 100644 admin/css/fonts/fontawesome-webfont.eot create mode 100644 admin/css/fonts/fontawesome-webfont.svg create mode 100644 admin/css/fonts/fontawesome-webfont.ttf create mode 100644 admin/css/fonts/fontawesome-webfont.woff create mode 100644 admin/css/fonts/fontawesome-webfont.woff2 create mode 100644 admin/css/index.php create mode 100644 admin/css/paste.css create mode 100644 admin/css/responsive.css create mode 100644 admin/css/style.css create mode 100644 admin/css/style.min.css create mode 100644 admin/dashboard.php create mode 100644 admin/favicon.ico create mode 100644 admin/index.php create mode 100644 admin/interface.php create mode 100644 admin/ipbans.php create mode 100644 admin/js/bootstrap-select.js create mode 100644 admin/js/bootstrap.min.js create mode 100644 admin/js/bootstrap3-wysihtml5.all.min.js create mode 100644 admin/js/bootstrap3-wysihtml5.js create mode 100644 admin/js/index.php create mode 100644 admin/js/jquery-ui.min.js create mode 100644 admin/js/jquery.dataTables.js create mode 100644 admin/js/jquery.min.js create mode 100644 admin/js/plugins/ckeditor/CHANGES.md create mode 100644 admin/js/plugins/ckeditor/LICENSE.md create mode 100644 admin/js/plugins/ckeditor/README.md create mode 100644 admin/js/plugins/ckeditor/adapters/index.php create mode 100644 admin/js/plugins/ckeditor/adapters/jquery.js create mode 100644 admin/js/plugins/ckeditor/build-config.js create mode 100644 admin/js/plugins/ckeditor/ckeditor.js create mode 100644 admin/js/plugins/ckeditor/config.js create mode 100644 admin/js/plugins/ckeditor/contents.css create mode 100644 admin/js/plugins/ckeditor/index.php create mode 100644 admin/js/plugins/ckeditor/lang/en.js create mode 100644 admin/js/plugins/ckeditor/lang/index.php create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/da.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/de.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/el.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/en.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/es.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/et.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/gl.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/he.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/id.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/it.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/km.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ko.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/no.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/si.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sq.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sr.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/th.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/tt.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js create mode 100644 admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/zh.js create mode 100644 admin/js/plugins/ckeditor/plugins/about/dialogs/about.js create mode 100644 admin/js/plugins/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png create mode 100644 admin/js/plugins/ckeditor/plugins/about/dialogs/logo_ckeditor.png create mode 100644 admin/js/plugins/ckeditor/plugins/clipboard/dialogs/paste.js create mode 100644 admin/js/plugins/ckeditor/plugins/colordialog/dialogs/colordialog.js create mode 100644 admin/js/plugins/ckeditor/plugins/dialog/dialogDefinition.js create mode 100644 admin/js/plugins/ckeditor/plugins/div/dialogs/div.js create mode 100644 admin/js/plugins/ckeditor/plugins/find/dialogs/find.js create mode 100644 admin/js/plugins/ckeditor/plugins/flash/dialogs/flash.js create mode 100644 admin/js/plugins/ckeditor/plugins/flash/images/placeholder.png create mode 100644 admin/js/plugins/ckeditor/plugins/forms/dialogs/button.js create mode 100644 admin/js/plugins/ckeditor/plugins/forms/dialogs/checkbox.js create mode 100644 admin/js/plugins/ckeditor/plugins/forms/dialogs/form.js create mode 100644 admin/js/plugins/ckeditor/plugins/forms/dialogs/hiddenfield.js create mode 100644 admin/js/plugins/ckeditor/plugins/forms/dialogs/radio.js create mode 100644 admin/js/plugins/ckeditor/plugins/forms/dialogs/select.js create mode 100644 admin/js/plugins/ckeditor/plugins/forms/dialogs/textarea.js create mode 100644 admin/js/plugins/ckeditor/plugins/forms/dialogs/textfield.js create mode 100644 admin/js/plugins/ckeditor/plugins/forms/images/hiddenfield.gif create mode 100644 admin/js/plugins/ckeditor/plugins/icons.png create mode 100644 admin/js/plugins/ckeditor/plugins/icons_hidpi.png create mode 100644 admin/js/plugins/ckeditor/plugins/iframe/dialogs/iframe.js create mode 100644 admin/js/plugins/ckeditor/plugins/iframe/images/placeholder.png create mode 100644 admin/js/plugins/ckeditor/plugins/image/dialogs/image.js create mode 100644 admin/js/plugins/ckeditor/plugins/image/images/noimage.png create mode 100644 admin/js/plugins/ckeditor/plugins/index.php create mode 100644 admin/js/plugins/ckeditor/plugins/link/dialogs/anchor.js create mode 100644 admin/js/plugins/ckeditor/plugins/link/dialogs/link.js create mode 100644 admin/js/plugins/ckeditor/plugins/link/images/anchor.png create mode 100644 admin/js/plugins/ckeditor/plugins/link/images/hidpi/anchor.png create mode 100644 admin/js/plugins/ckeditor/plugins/liststyle/dialogs/liststyle.js create mode 100644 admin/js/plugins/ckeditor/plugins/magicline/images/hidpi/icon.png create mode 100644 admin/js/plugins/ckeditor/plugins/magicline/images/icon.png create mode 100644 admin/js/plugins/ckeditor/plugins/pagebreak/images/pagebreak.gif create mode 100644 admin/js/plugins/ckeditor/plugins/pastefromword/filter/default.js create mode 100644 admin/js/plugins/ckeditor/plugins/preview/preview.html create mode 100644 admin/js/plugins/ckeditor/plugins/scayt/LICENSE.md create mode 100644 admin/js/plugins/ckeditor/plugins/scayt/README.md create mode 100644 admin/js/plugins/ckeditor/plugins/scayt/dialogs/options.js create mode 100644 admin/js/plugins/ckeditor/plugins/scayt/dialogs/toolbar.css create mode 100644 admin/js/plugins/ckeditor/plugins/showblocks/images/block_address.png create mode 100644 admin/js/plugins/ckeditor/plugins/showblocks/images/block_blockquote.png create mode 100644 admin/js/plugins/ckeditor/plugins/showblocks/images/block_div.png create mode 100644 admin/js/plugins/ckeditor/plugins/showblocks/images/block_h1.png create mode 100644 admin/js/plugins/ckeditor/plugins/showblocks/images/block_h2.png create mode 100644 admin/js/plugins/ckeditor/plugins/showblocks/images/block_h3.png create mode 100644 admin/js/plugins/ckeditor/plugins/showblocks/images/block_h4.png create mode 100644 admin/js/plugins/ckeditor/plugins/showblocks/images/block_h5.png create mode 100644 admin/js/plugins/ckeditor/plugins/showblocks/images/block_h6.png create mode 100644 admin/js/plugins/ckeditor/plugins/showblocks/images/block_p.png create mode 100644 admin/js/plugins/ckeditor/plugins/showblocks/images/block_pre.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/dialogs/smiley.js create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/angel_smile.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/angel_smile.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/angry_smile.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/angry_smile.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/broken_heart.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/broken_heart.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/confused_smile.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/confused_smile.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/cry_smile.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/cry_smile.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/devil_smile.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/devil_smile.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/embaressed_smile.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/embarrassed_smile.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/embarrassed_smile.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/envelope.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/envelope.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/heart.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/heart.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/kiss.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/kiss.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/lightbulb.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/lightbulb.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/omg_smile.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/omg_smile.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/regular_smile.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/regular_smile.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/sad_smile.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/sad_smile.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/shades_smile.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/shades_smile.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/teeth_smile.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/teeth_smile.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/thumbs_down.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/thumbs_down.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/thumbs_up.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/thumbs_up.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/tongue_smile.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/tongue_smile.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/tounge_smile.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.png create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/wink_smile.gif create mode 100644 admin/js/plugins/ckeditor/plugins/smiley/images/wink_smile.png create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/_translationstatus.txt create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/ar.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/bg.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/ca.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/cs.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/cy.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/de.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/el.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/en-gb.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/en.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/eo.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/es.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/et.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/fa.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/fi.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/fr-ca.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/fr.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/gl.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/he.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/hr.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/hu.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/id.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/it.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/ja.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/km.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/ku.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/lv.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/nb.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/nl.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/no.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/pl.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/pt.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/ru.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/si.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/sk.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/sl.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/sq.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/sv.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/th.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/tr.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/tt.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/ug.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/uk.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/vi.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/zh.js create mode 100644 admin/js/plugins/ckeditor/plugins/specialchar/dialogs/specialchar.js create mode 100644 admin/js/plugins/ckeditor/plugins/table/dialogs/table.js create mode 100644 admin/js/plugins/ckeditor/plugins/tabletools/dialogs/tableCell.js create mode 100644 admin/js/plugins/ckeditor/plugins/templates/dialogs/templates.css create mode 100644 admin/js/plugins/ckeditor/plugins/templates/dialogs/templates.js create mode 100644 admin/js/plugins/ckeditor/plugins/templates/templates/default.js create mode 100644 admin/js/plugins/ckeditor/plugins/templates/templates/images/template1.gif create mode 100644 admin/js/plugins/ckeditor/plugins/templates/templates/images/template2.gif create mode 100644 admin/js/plugins/ckeditor/plugins/templates/templates/images/template3.gif create mode 100644 admin/js/plugins/ckeditor/plugins/wsc/LICENSE.md create mode 100644 admin/js/plugins/ckeditor/plugins/wsc/README.md create mode 100644 admin/js/plugins/ckeditor/plugins/wsc/dialogs/ciframe.html create mode 100644 admin/js/plugins/ckeditor/plugins/wsc/dialogs/tmpFrameset.html create mode 100644 admin/js/plugins/ckeditor/plugins/wsc/dialogs/wsc.css create mode 100644 admin/js/plugins/ckeditor/plugins/wsc/dialogs/wsc.js create mode 100644 admin/js/plugins/ckeditor/plugins/wsc/dialogs/wsc_ie.js create mode 100644 admin/js/plugins/ckeditor/samples/ajax.html create mode 100644 admin/js/plugins/ckeditor/samples/api.html create mode 100644 admin/js/plugins/ckeditor/samples/appendto.html create mode 100644 admin/js/plugins/ckeditor/samples/assets/inlineall/logo.png create mode 100644 admin/js/plugins/ckeditor/samples/assets/outputxhtml/outputxhtml.css create mode 100644 admin/js/plugins/ckeditor/samples/assets/posteddata.php create mode 100644 admin/js/plugins/ckeditor/samples/assets/sample.jpg create mode 100644 admin/js/plugins/ckeditor/samples/assets/uilanguages/languages.js create mode 100644 admin/js/plugins/ckeditor/samples/datafiltering.html create mode 100644 admin/js/plugins/ckeditor/samples/divreplace.html create mode 100644 admin/js/plugins/ckeditor/samples/index.html create mode 100644 admin/js/plugins/ckeditor/samples/index.php create mode 100644 admin/js/plugins/ckeditor/samples/inlineall.html create mode 100644 admin/js/plugins/ckeditor/samples/inlinebycode.html create mode 100644 admin/js/plugins/ckeditor/samples/inlinetextarea.html create mode 100644 admin/js/plugins/ckeditor/samples/jquery.html create mode 100644 admin/js/plugins/ckeditor/samples/plugins/dialog/assets/my_dialog.js create mode 100644 admin/js/plugins/ckeditor/samples/plugins/dialog/dialog.html create mode 100644 admin/js/plugins/ckeditor/samples/plugins/enterkey/enterkey.html create mode 100644 admin/js/plugins/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/outputforflash.fla create mode 100644 admin/js/plugins/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/outputforflash.swf create mode 100644 admin/js/plugins/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/swfobject.js create mode 100644 admin/js/plugins/ckeditor/samples/plugins/htmlwriter/outputforflash.html create mode 100644 admin/js/plugins/ckeditor/samples/plugins/htmlwriter/outputhtml.html create mode 100644 admin/js/plugins/ckeditor/samples/plugins/magicline/magicline.html create mode 100644 admin/js/plugins/ckeditor/samples/plugins/toolbar/toolbar.html create mode 100644 admin/js/plugins/ckeditor/samples/plugins/wysiwygarea/fullpage.html create mode 100644 admin/js/plugins/ckeditor/samples/readonly.html create mode 100644 admin/js/plugins/ckeditor/samples/replacebyclass.html create mode 100644 admin/js/plugins/ckeditor/samples/replacebycode.html create mode 100644 admin/js/plugins/ckeditor/samples/sample.css create mode 100644 admin/js/plugins/ckeditor/samples/sample.js create mode 100644 admin/js/plugins/ckeditor/samples/sample_posteddata.php create mode 100644 admin/js/plugins/ckeditor/samples/tabindex.html create mode 100644 admin/js/plugins/ckeditor/samples/uicolor.html create mode 100644 admin/js/plugins/ckeditor/samples/uilanguages.html create mode 100644 admin/js/plugins/ckeditor/samples/xhtmlstyle.html create mode 100644 admin/js/plugins/ckeditor/skins/index.php create mode 100644 admin/js/plugins/ckeditor/skins/moono/dialog.css create mode 100644 admin/js/plugins/ckeditor/skins/moono/dialog_ie.css create mode 100644 admin/js/plugins/ckeditor/skins/moono/dialog_ie7.css create mode 100644 admin/js/plugins/ckeditor/skins/moono/dialog_ie8.css create mode 100644 admin/js/plugins/ckeditor/skins/moono/dialog_iequirks.css create mode 100644 admin/js/plugins/ckeditor/skins/moono/editor.css create mode 100644 admin/js/plugins/ckeditor/skins/moono/editor_gecko.css create mode 100644 admin/js/plugins/ckeditor/skins/moono/editor_ie.css create mode 100644 admin/js/plugins/ckeditor/skins/moono/editor_ie7.css create mode 100644 admin/js/plugins/ckeditor/skins/moono/editor_ie8.css create mode 100644 admin/js/plugins/ckeditor/skins/moono/editor_iequirks.css create mode 100644 admin/js/plugins/ckeditor/skins/moono/icons.png create mode 100644 admin/js/plugins/ckeditor/skins/moono/icons_hidpi.png create mode 100644 admin/js/plugins/ckeditor/skins/moono/images/arrow.png create mode 100644 admin/js/plugins/ckeditor/skins/moono/images/close.png create mode 100644 admin/js/plugins/ckeditor/skins/moono/images/hidpi/close.png create mode 100644 admin/js/plugins/ckeditor/skins/moono/images/hidpi/lock-open.png create mode 100644 admin/js/plugins/ckeditor/skins/moono/images/hidpi/lock.png create mode 100644 admin/js/plugins/ckeditor/skins/moono/images/hidpi/refresh.png create mode 100644 admin/js/plugins/ckeditor/skins/moono/images/lock-open.png create mode 100644 admin/js/plugins/ckeditor/skins/moono/images/lock.png create mode 100644 admin/js/plugins/ckeditor/skins/moono/images/refresh.png create mode 100644 admin/js/plugins/ckeditor/skins/moono/readme.md create mode 100644 admin/js/plugins/ckeditor/styles.js create mode 100644 admin/js/plugins/index.php create mode 100644 admin/pages.php create mode 100644 admin/pastes.php create mode 100644 admin/sitemap.php create mode 100644 admin/ssp.pastes.php create mode 100644 admin/ssp.users.php create mode 100644 admin/stats.php create mode 100644 admin/tasks.php create mode 100644 admin/users.php create mode 100644 archive.php create mode 100644 config.php create mode 100644 docs/CHANGELOG.md create mode 100644 docs/GPL.txt create mode 100644 docs/config.example.php create mode 100644 docs/nginx.example.conf create mode 100644 docs/paste.mysqlschema.sql create mode 100644 favicon.ico create mode 100644 feed/.htaccess create mode 100644 feed/index.php create mode 100644 feed/rss.class.php create mode 100644 feed/rss.class.php.new create mode 100644 feed/rss.php create mode 100644 feed/rss.php.new create mode 100644 feed/test.php create mode 100644 includes/Parsedown/LICENSE.txt create mode 100644 includes/Parsedown/Parsedown.php create mode 100644 includes/Parsedown/index.php create mode 100644 includes/captcha.php create mode 100644 includes/captchabg/index.php create mode 100644 includes/captchabg/text1.png create mode 100644 includes/captchabg/text2.png create mode 100644 includes/captchabg/text3.png create mode 100644 includes/fonts/SigmarOne.ttf create mode 100644 includes/fonts/captcha_code.otf create mode 100644 includes/fonts/index.php create mode 100644 includes/fonts/times_new_yorker.ttf create mode 100644 includes/functions.php create mode 100644 includes/geshi.php create mode 100644 includes/geshi/4cs.php create mode 100644 includes/geshi/6502acme.php create mode 100644 includes/geshi/6502kickass.php create mode 100644 includes/geshi/6502tasm.php create mode 100644 includes/geshi/68000devpac.php create mode 100644 includes/geshi/abap.php create mode 100644 includes/geshi/actionscript.php create mode 100644 includes/geshi/actionscript3.php create mode 100644 includes/geshi/ada.php create mode 100644 includes/geshi/aimms.php create mode 100644 includes/geshi/algol68.php create mode 100644 includes/geshi/apache.php create mode 100644 includes/geshi/applescript.php create mode 100644 includes/geshi/apt_sources.php create mode 100644 includes/geshi/arm.php create mode 100644 includes/geshi/asm.php create mode 100644 includes/geshi/asp.php create mode 100644 includes/geshi/asymptote.php create mode 100644 includes/geshi/autoconf.php create mode 100644 includes/geshi/autohotkey.php create mode 100644 includes/geshi/autoit.php create mode 100644 includes/geshi/avisynth.php create mode 100644 includes/geshi/awk.php create mode 100644 includes/geshi/bascomavr.php create mode 100644 includes/geshi/bash.php create mode 100644 includes/geshi/basic4gl.php create mode 100644 includes/geshi/batch.php create mode 100644 includes/geshi/bf.php create mode 100644 includes/geshi/biblatex.php create mode 100644 includes/geshi/bibtex.php create mode 100644 includes/geshi/blitzbasic.php create mode 100644 includes/geshi/bnf.php create mode 100644 includes/geshi/boo.php create mode 100644 includes/geshi/c.php create mode 100644 includes/geshi/c_loadrunner.php create mode 100644 includes/geshi/c_mac.php create mode 100644 includes/geshi/c_winapi.php create mode 100644 includes/geshi/caddcl.php create mode 100644 includes/geshi/cadlisp.php create mode 100644 includes/geshi/ceylon.php create mode 100644 includes/geshi/cfdg.php create mode 100644 includes/geshi/cfm.php create mode 100644 includes/geshi/chaiscript.php create mode 100644 includes/geshi/chapel.php create mode 100644 includes/geshi/cil.php create mode 100644 includes/geshi/clojure.php create mode 100644 includes/geshi/cmake.php create mode 100644 includes/geshi/cobol.php create mode 100644 includes/geshi/coffeescript.php create mode 100644 includes/geshi/cpp-qt.php create mode 100644 includes/geshi/cpp-winapi.php create mode 100644 includes/geshi/cpp.php create mode 100644 includes/geshi/csharp.php create mode 100644 includes/geshi/css.php create mode 100644 includes/geshi/cuesheet.php create mode 100644 includes/geshi/d.php create mode 100644 includes/geshi/dart.php create mode 100644 includes/geshi/dcl.php create mode 100644 includes/geshi/dcpu16.php create mode 100644 includes/geshi/dcs.php create mode 100644 includes/geshi/delphi.php create mode 100644 includes/geshi/diff.php create mode 100644 includes/geshi/div.php create mode 100644 includes/geshi/dos.php create mode 100644 includes/geshi/dot.php create mode 100644 includes/geshi/e.php create mode 100644 includes/geshi/ecmascript.php create mode 100644 includes/geshi/eiffel.php create mode 100644 includes/geshi/email.php create mode 100644 includes/geshi/epc.php create mode 100644 includes/geshi/erlang.php create mode 100644 includes/geshi/euphoria.php create mode 100644 includes/geshi/ezt.php create mode 100644 includes/geshi/f1.php create mode 100644 includes/geshi/falcon.php create mode 100644 includes/geshi/fo.php create mode 100644 includes/geshi/fortran.php create mode 100644 includes/geshi/freebasic.php create mode 100644 includes/geshi/freeswitch.php create mode 100644 includes/geshi/fsharp.php create mode 100644 includes/geshi/gambas.php create mode 100644 includes/geshi/gdb.php create mode 100644 includes/geshi/genero.php create mode 100644 includes/geshi/genie.php create mode 100644 includes/geshi/gettext.php create mode 100644 includes/geshi/glsl.php create mode 100644 includes/geshi/gml.php create mode 100644 includes/geshi/gnuplot.php create mode 100644 includes/geshi/go.php create mode 100644 includes/geshi/groovy.php create mode 100644 includes/geshi/gwbasic.php create mode 100644 includes/geshi/haskell.php create mode 100644 includes/geshi/haxe.php create mode 100644 includes/geshi/hicest.php create mode 100644 includes/geshi/hq9plus.php create mode 100644 includes/geshi/html4strict.php create mode 100644 includes/geshi/html5.php create mode 100644 includes/geshi/icon.php create mode 100644 includes/geshi/idl.php create mode 100644 includes/geshi/index.php create mode 100644 includes/geshi/ini.php create mode 100644 includes/geshi/inno.php create mode 100644 includes/geshi/intercal.php create mode 100644 includes/geshi/io.php create mode 100644 includes/geshi/ispfpanel.php create mode 100644 includes/geshi/j.php create mode 100644 includes/geshi/java.php create mode 100644 includes/geshi/java5.php create mode 100644 includes/geshi/javascript.php create mode 100644 includes/geshi/jcl.php create mode 100644 includes/geshi/jquery.php create mode 100644 includes/geshi/julia.php create mode 100644 includes/geshi/kixtart.php create mode 100644 includes/geshi/klonec.php create mode 100644 includes/geshi/klonecpp.php create mode 100644 includes/geshi/kotlin.php create mode 100644 includes/geshi/latex.php create mode 100644 includes/geshi/lb.php create mode 100644 includes/geshi/ldif.php create mode 100644 includes/geshi/lisp.php create mode 100644 includes/geshi/llvm.php create mode 100644 includes/geshi/locobasic.php create mode 100644 includes/geshi/logtalk.php create mode 100644 includes/geshi/lolcode.php create mode 100644 includes/geshi/lotusformulas.php create mode 100644 includes/geshi/lotusscript.php create mode 100644 includes/geshi/lscript.php create mode 100644 includes/geshi/lsl2.php create mode 100644 includes/geshi/lua.php create mode 100644 includes/geshi/m68k.php create mode 100644 includes/geshi/magiksf.php create mode 100644 includes/geshi/make.php create mode 100644 includes/geshi/mapbasic.php create mode 100644 includes/geshi/mathematica.php create mode 100644 includes/geshi/matlab.php create mode 100644 includes/geshi/mercury.php create mode 100644 includes/geshi/metapost.php create mode 100644 includes/geshi/mirc.php create mode 100644 includes/geshi/mk-61.php create mode 100644 includes/geshi/mmix.php create mode 100644 includes/geshi/modula2.php create mode 100644 includes/geshi/modula3.php create mode 100644 includes/geshi/mpasm.php create mode 100644 includes/geshi/mxml.php create mode 100644 includes/geshi/mysql.php create mode 100644 includes/geshi/nagios.php create mode 100644 includes/geshi/netrexx.php create mode 100644 includes/geshi/newlisp.php create mode 100644 includes/geshi/nginx.php create mode 100644 includes/geshi/nimrod.php create mode 100644 includes/geshi/nsis.php create mode 100644 includes/geshi/oberon2.php create mode 100644 includes/geshi/objc.php create mode 100644 includes/geshi/objeck.php create mode 100644 includes/geshi/ocaml-brief.php create mode 100644 includes/geshi/ocaml.php create mode 100644 includes/geshi/octave.php create mode 100644 includes/geshi/oobas.php create mode 100644 includes/geshi/oorexx.php create mode 100644 includes/geshi/oracle11.php create mode 100644 includes/geshi/oracle8.php create mode 100644 includes/geshi/oxygene.php create mode 100644 includes/geshi/oz.php create mode 100644 includes/geshi/parasail.php create mode 100644 includes/geshi/parigp.php create mode 100644 includes/geshi/pascal.php create mode 100644 includes/geshi/pcre.php create mode 100644 includes/geshi/per.php create mode 100644 includes/geshi/perl.php create mode 100644 includes/geshi/perl6.php create mode 100644 includes/geshi/pf.php create mode 100644 includes/geshi/phix.php create mode 100644 includes/geshi/php-brief.php create mode 100644 includes/geshi/php.php create mode 100644 includes/geshi/pic16.php create mode 100644 includes/geshi/pike.php create mode 100644 includes/geshi/pixelbender.php create mode 100644 includes/geshi/pli.php create mode 100644 includes/geshi/plsql.php create mode 100644 includes/geshi/postgresql.php create mode 100644 includes/geshi/postscript.php create mode 100644 includes/geshi/povray.php create mode 100644 includes/geshi/powerbuilder.php create mode 100644 includes/geshi/powershell.php create mode 100644 includes/geshi/proftpd.php create mode 100644 includes/geshi/progress.php create mode 100644 includes/geshi/prolog.php create mode 100644 includes/geshi/properties.php create mode 100644 includes/geshi/providex.php create mode 100644 includes/geshi/purebasic.php create mode 100644 includes/geshi/pycon.php create mode 100644 includes/geshi/pys60.php create mode 100644 includes/geshi/python.php create mode 100644 includes/geshi/q.php create mode 100644 includes/geshi/qbasic.php create mode 100644 includes/geshi/qml.php create mode 100644 includes/geshi/racket.php create mode 100644 includes/geshi/rails.php create mode 100644 includes/geshi/rbs.php create mode 100644 includes/geshi/rebol.php create mode 100644 includes/geshi/reg.php create mode 100644 includes/geshi/rexx.php create mode 100644 includes/geshi/robots.php create mode 100644 includes/geshi/rpmspec.php create mode 100644 includes/geshi/rsplus.php create mode 100644 includes/geshi/ruby.php create mode 100644 includes/geshi/rust.php create mode 100644 includes/geshi/sas.php create mode 100644 includes/geshi/sass.php create mode 100644 includes/geshi/scala.php create mode 100644 includes/geshi/scheme.php create mode 100644 includes/geshi/scilab.php create mode 100644 includes/geshi/scl.php create mode 100644 includes/geshi/sdlbasic.php create mode 100644 includes/geshi/smalltalk.php create mode 100644 includes/geshi/smarty.php create mode 100644 includes/geshi/spark.php create mode 100644 includes/geshi/sparql.php create mode 100644 includes/geshi/sql.php create mode 100644 includes/geshi/standardml.php create mode 100644 includes/geshi/stonescript.php create mode 100644 includes/geshi/swift.php create mode 100644 includes/geshi/systemverilog.php create mode 100644 includes/geshi/tcl.php create mode 100644 includes/geshi/tclegg.php create mode 100644 includes/geshi/teraterm.php create mode 100644 includes/geshi/texgraph.php create mode 100644 includes/geshi/text.php create mode 100644 includes/geshi/thinbasic.php create mode 100644 includes/geshi/tsql.php create mode 100644 includes/geshi/twig.php create mode 100644 includes/geshi/typoscript.php create mode 100644 includes/geshi/unicon.php create mode 100644 includes/geshi/upc.php create mode 100644 includes/geshi/urbi.php create mode 100644 includes/geshi/uscript.php create mode 100644 includes/geshi/vala.php create mode 100644 includes/geshi/vb.php create mode 100644 includes/geshi/vbnet.php create mode 100644 includes/geshi/vbscript.php create mode 100644 includes/geshi/vedit.php create mode 100644 includes/geshi/verilog.php create mode 100644 includes/geshi/vhdl.php create mode 100644 includes/geshi/vim.php create mode 100644 includes/geshi/visualfoxpro.php create mode 100644 includes/geshi/visualprolog.php create mode 100644 includes/geshi/whitespace.php create mode 100644 includes/geshi/whois.php create mode 100644 includes/geshi/winbatch.php create mode 100644 includes/geshi/xbasic.php create mode 100644 includes/geshi/xml.php create mode 100644 includes/geshi/xojo.php create mode 100644 includes/geshi/xorg_conf.php create mode 100644 includes/geshi/xpp.php create mode 100644 includes/geshi/yaml.php create mode 100644 includes/geshi/z80.php create mode 100644 includes/geshi/zxbasic.php create mode 100644 includes/index.php create mode 100644 includes/password.php create mode 100644 index.php create mode 100644 install/configure.php create mode 100644 install/index.php create mode 100644 install/install.php create mode 100644 langs/en.php create mode 100644 langs/fr.php create mode 100644 langs/index.php create mode 100644 login.php create mode 100644 mail/LICENSE create mode 100644 mail/README.md create mode 100644 mail/class.phpmailer.php create mode 100644 mail/class.pop3.php create mode 100644 mail/class.smtp.php create mode 100644 mail/index.php create mode 100644 mail/mail.php create mode 100644 main.php create mode 100644 oauth.php create mode 100644 oauth/Google/Auth/Abstract.php create mode 100644 oauth/Google/Auth/AppIdentity.php create mode 100644 oauth/Google/Auth/AssertionCredentials.php create mode 100644 oauth/Google/Auth/Exception.php create mode 100644 oauth/Google/Auth/LoginTicket.php create mode 100644 oauth/Google/Auth/OAuth2.php create mode 100644 oauth/Google/Auth/Simple.php create mode 100644 oauth/Google/Cache/Abstract.php create mode 100644 oauth/Google/Cache/Apc.php create mode 100644 oauth/Google/Cache/Exception.php create mode 100644 oauth/Google/Cache/File.php create mode 100644 oauth/Google/Cache/Memcache.php create mode 100644 oauth/Google/Cache/Null.php create mode 100644 oauth/Google/Client.php create mode 100644 oauth/Google/Collection.php create mode 100644 oauth/Google/Config.php create mode 100644 oauth/Google/Exception.php create mode 100644 oauth/Google/Http/Batch.php create mode 100644 oauth/Google/Http/CacheParser.php create mode 100644 oauth/Google/Http/MediaFileUpload.php create mode 100644 oauth/Google/Http/REST.php create mode 100644 oauth/Google/Http/Request.php create mode 100644 oauth/Google/IO/Abstract.php create mode 100644 oauth/Google/IO/Curl.php create mode 100644 oauth/Google/IO/Exception.php create mode 100644 oauth/Google/IO/Stream.php create mode 100644 oauth/Google/IO/cacerts.pem create mode 100644 oauth/Google/Model.php create mode 100644 oauth/Google/Service.php create mode 100644 oauth/Google/Service/AdExchangeBuyer.php create mode 100644 oauth/Google/Service/AdExchangeSeller.php create mode 100644 oauth/Google/Service/AdSense.php create mode 100644 oauth/Google/Service/AdSenseHost.php create mode 100644 oauth/Google/Service/Admin.php create mode 100644 oauth/Google/Service/Analytics.php create mode 100644 oauth/Google/Service/AndroidPublisher.php create mode 100644 oauth/Google/Service/AppState.php create mode 100644 oauth/Google/Service/Appsactivity.php create mode 100644 oauth/Google/Service/Audit.php create mode 100644 oauth/Google/Service/Autoscaler.php create mode 100644 oauth/Google/Service/Bigquery.php create mode 100644 oauth/Google/Service/Blogger.php create mode 100644 oauth/Google/Service/Books.php create mode 100644 oauth/Google/Service/Calendar.php create mode 100644 oauth/Google/Service/CivicInfo.php create mode 100644 oauth/Google/Service/CloudMonitoring.php create mode 100644 oauth/Google/Service/Compute.php create mode 100644 oauth/Google/Service/Coordinate.php create mode 100644 oauth/Google/Service/Customsearch.php create mode 100644 oauth/Google/Service/Datastore.php create mode 100644 oauth/Google/Service/Dfareporting.php create mode 100644 oauth/Google/Service/Directory.php create mode 100644 oauth/Google/Service/Dns.php create mode 100644 oauth/Google/Service/DoubleClickBidManager.php create mode 100644 oauth/Google/Service/Doubleclicksearch.php create mode 100644 oauth/Google/Service/Drive.php create mode 100644 oauth/Google/Service/Exception.php create mode 100644 oauth/Google/Service/Freebase.php create mode 100644 oauth/Google/Service/Fusiontables.php create mode 100644 oauth/Google/Service/Games.php create mode 100644 oauth/Google/Service/GamesManagement.php create mode 100644 oauth/Google/Service/Genomics.php create mode 100644 oauth/Google/Service/Gmail.php create mode 100644 oauth/Google/Service/GroupsMigration.php create mode 100644 oauth/Google/Service/Groupssettings.php create mode 100644 oauth/Google/Service/IdentityToolkit.php create mode 100644 oauth/Google/Service/Licensing.php create mode 100644 oauth/Google/Service/Manager.php create mode 100644 oauth/Google/Service/MapsEngine.php create mode 100644 oauth/Google/Service/Mirror.php create mode 100644 oauth/Google/Service/Oauth2.php create mode 100644 oauth/Google/Service/Orkut.php create mode 100644 oauth/Google/Service/Pagespeedonline.php create mode 100644 oauth/Google/Service/Plus.php create mode 100644 oauth/Google/Service/PlusDomains.php create mode 100644 oauth/Google/Service/Prediction.php create mode 100644 oauth/Google/Service/Pubsub.php create mode 100644 oauth/Google/Service/QPXExpress.php create mode 100644 oauth/Google/Service/Replicapool.php create mode 100644 oauth/Google/Service/Reports.php create mode 100644 oauth/Google/Service/Reseller.php create mode 100644 oauth/Google/Service/Resource.php create mode 100644 oauth/Google/Service/Resourceviews.php create mode 100644 oauth/Google/Service/SQLAdmin.php create mode 100644 oauth/Google/Service/ShoppingContent.php create mode 100644 oauth/Google/Service/SiteVerification.php create mode 100644 oauth/Google/Service/Spectrum.php create mode 100644 oauth/Google/Service/Storage.php create mode 100644 oauth/Google/Service/Taskqueue.php create mode 100644 oauth/Google/Service/Tasks.php create mode 100644 oauth/Google/Service/Translate.php create mode 100644 oauth/Google/Service/Urlshortener.php create mode 100644 oauth/Google/Service/Webfonts.php create mode 100644 oauth/Google/Service/YouTube.php create mode 100644 oauth/Google/Service/YouTubeAnalytics.php create mode 100644 oauth/Google/Signer/Abstract.php create mode 100644 oauth/Google/Signer/P12.php create mode 100644 oauth/Google/Utils.php create mode 100644 oauth/Google/Utils/URITemplate.php create mode 100644 oauth/Google/Verifier/Abstract.php create mode 100644 oauth/Google/Verifier/Pem.php create mode 100644 oauth/facebook.php create mode 100644 oauth/facebook/base_facebook.php create mode 100644 oauth/facebook/facebook.php create mode 100644 oauth/google.php create mode 100644 oauth/index.php create mode 100644 pages.php create mode 100644 paste.php create mode 100644 profile.php create mode 100644 robots.txt create mode 100644 sitemap.xml create mode 100644 theme/blue/archive.php create mode 100644 theme/blue/css/bootstrap.css create mode 100644 theme/blue/css/bootstrap.min.css create mode 100644 theme/blue/css/index.php create mode 100644 theme/blue/css/paste.css create mode 100644 theme/blue/css/plugins/bootstrap-checkbox.css create mode 100644 theme/blue/css/plugins/bootstrap-checkbox.min.css create mode 100644 theme/blue/css/plugins/bootstrap-select.css create mode 100644 theme/blue/css/plugins/bootstrap-select.min.css create mode 100644 theme/blue/css/plugins/datatables.css create mode 100644 theme/blue/css/plugins/datatables.min.css create mode 100644 theme/blue/css/plugins/font-awesome.min.css create mode 100644 theme/blue/css/plugins/fonts/FontAwesome.otf create mode 100644 theme/blue/css/plugins/fonts/fontawesome-webfont.eot create mode 100644 theme/blue/css/plugins/fonts/fontawesome-webfont.svg create mode 100644 theme/blue/css/plugins/fonts/fontawesome-webfont.ttf create mode 100644 theme/blue/css/plugins/fonts/fontawesome-webfont.woff create mode 100644 theme/blue/css/plugins/fonts/fontawesome-webfont.woff2 create mode 100644 theme/blue/css/responsive.css create mode 100644 theme/blue/css/style.css create mode 100644 theme/blue/css/style.min.css create mode 100644 theme/blue/errors.php create mode 100644 theme/blue/feed-icon-16.gif create mode 100644 theme/blue/footer.php create mode 100644 theme/blue/header.php create mode 100644 theme/blue/img/favicon.ico create mode 100644 theme/blue/img/index.php create mode 100644 theme/blue/index.php create mode 100644 theme/blue/js/bootstrap-select.js create mode 100644 theme/blue/js/bootstrap.min.js create mode 100644 theme/blue/js/datatables.min.js create mode 100644 theme/blue/js/index.php create mode 100644 theme/blue/js/jquery-ui.min.js create mode 100644 theme/blue/js/jquery.min.js create mode 100644 theme/blue/js/paste.js create mode 100644 theme/blue/login.php create mode 100644 theme/blue/main.php create mode 100644 theme/blue/oauth.php create mode 100644 theme/blue/pages.php create mode 100644 theme/blue/profile.php create mode 100644 theme/blue/sidebar.php create mode 100644 theme/blue/user_profile.php create mode 100644 theme/blue/view.php create mode 100644 theme/clean/archive.php create mode 100644 theme/clean/css/bootstrap.css create mode 100644 theme/clean/css/bootstrap.min.css create mode 100644 theme/clean/css/index.php create mode 100644 theme/clean/css/paste.css create mode 100644 theme/clean/css/plugins/bootstrap-checkbox.css create mode 100644 theme/clean/css/plugins/bootstrap-checkbox.min.css create mode 100644 theme/clean/css/plugins/bootstrap-select.css create mode 100644 theme/clean/css/plugins/bootstrap-select.min.css create mode 100644 theme/clean/css/plugins/datatables.css create mode 100644 theme/clean/css/plugins/datatables.min.css create mode 100644 theme/clean/css/plugins/font-awesome.min.css create mode 100644 theme/clean/css/plugins/fonts/FontAwesome.otf create mode 100644 theme/clean/css/plugins/fonts/fontawesome-webfont.eot create mode 100644 theme/clean/css/plugins/fonts/fontawesome-webfont.svg create mode 100644 theme/clean/css/plugins/fonts/fontawesome-webfont.ttf create mode 100644 theme/clean/css/plugins/fonts/fontawesome-webfont.woff create mode 100644 theme/clean/css/plugins/fonts/fontawesome-webfont.woff2 create mode 100644 theme/clean/css/responsive.css create mode 100644 theme/clean/css/style.css create mode 100644 theme/clean/css/style.min.css create mode 100644 theme/clean/errors.php create mode 100644 theme/clean/footer.php create mode 100644 theme/clean/header.php create mode 100644 theme/clean/img/favicon.ico create mode 100644 theme/clean/img/index.php create mode 100644 theme/clean/index.php create mode 100644 theme/clean/js/bootstrap-select.js create mode 100644 theme/clean/js/bootstrap.min.js create mode 100644 theme/clean/js/datatables.min.js create mode 100644 theme/clean/js/index.php create mode 100644 theme/clean/js/jquery-ui.min.js create mode 100644 theme/clean/js/jquery.min.js create mode 100644 theme/clean/js/paste.js create mode 100644 theme/clean/login.php create mode 100644 theme/clean/main.php create mode 100644 theme/clean/oauth.php create mode 100644 theme/clean/pages.php create mode 100644 theme/clean/profile.php create mode 100644 theme/clean/sidebar.php create mode 100644 theme/clean/user_profile.php create mode 100644 theme/clean/view.php create mode 100644 theme/default/archive.php create mode 100644 theme/default/css/bootstrap.css create mode 100644 theme/default/css/bootstrap.min.css create mode 100644 theme/default/css/index.php create mode 100644 theme/default/css/paste.css create mode 100644 theme/default/css/plugins/bootstrap-checkbox.css create mode 100644 theme/default/css/plugins/bootstrap-checkbox.min.css create mode 100644 theme/default/css/plugins/bootstrap-select.css create mode 100644 theme/default/css/plugins/bootstrap-select.min.css create mode 100644 theme/default/css/plugins/datatables.css create mode 100644 theme/default/css/plugins/datatables.min.css create mode 100644 theme/default/css/plugins/font-awesome.min.css create mode 100644 theme/default/css/plugins/fonts/FontAwesome.otf create mode 100644 theme/default/css/plugins/fonts/fontawesome-webfont.eot create mode 100644 theme/default/css/plugins/fonts/fontawesome-webfont.svg create mode 100644 theme/default/css/plugins/fonts/fontawesome-webfont.ttf create mode 100644 theme/default/css/plugins/fonts/fontawesome-webfont.woff create mode 100644 theme/default/css/plugins/fonts/fontawesome-webfont.woff2 create mode 100644 theme/default/css/responsive.css create mode 100644 theme/default/css/style.css create mode 100644 theme/default/css/style.min.css create mode 100644 theme/default/errors.php create mode 100644 theme/default/footer.php create mode 100644 theme/default/header.php create mode 100644 theme/default/img/favicon.ico create mode 100644 theme/default/img/index.php create mode 100644 theme/default/index.php create mode 100644 theme/default/js/bootstrap-select.js create mode 100644 theme/default/js/bootstrap.min.js create mode 100644 theme/default/js/datatables.min.js create mode 100644 theme/default/js/index.php create mode 100644 theme/default/js/jquery-ui.min.js create mode 100644 theme/default/js/jquery.min.js create mode 100644 theme/default/js/paste.js create mode 100644 theme/default/login.php create mode 100644 theme/default/main.php create mode 100644 theme/default/oauth.php create mode 100644 theme/default/pages.php create mode 100644 theme/default/profile.php create mode 100644 theme/default/sidebar.php create mode 100644 theme/default/user_profile.php create mode 100644 theme/default/view.php create mode 100644 theme/echosystem/archive.php create mode 100644 theme/echosystem/css/bootstrap.css create mode 100644 theme/echosystem/css/bootstrap.min.css create mode 100644 theme/echosystem/css/index.php create mode 100644 theme/echosystem/css/paste.css create mode 100644 theme/echosystem/css/plugins/bootstrap-checkbox.css create mode 100644 theme/echosystem/css/plugins/bootstrap-checkbox.min.css create mode 100644 theme/echosystem/css/plugins/bootstrap-select.css create mode 100644 theme/echosystem/css/plugins/bootstrap-select.min.css create mode 100644 theme/echosystem/css/plugins/datatables.css create mode 100644 theme/echosystem/css/plugins/datatables.min.css create mode 100644 theme/echosystem/css/plugins/font-awesome.min.css create mode 100644 theme/echosystem/css/plugins/fonts/FontAwesome.otf create mode 100644 theme/echosystem/css/plugins/fonts/fontawesome-webfont.eot create mode 100644 theme/echosystem/css/plugins/fonts/fontawesome-webfont.svg create mode 100644 theme/echosystem/css/plugins/fonts/fontawesome-webfont.ttf create mode 100644 theme/echosystem/css/plugins/fonts/fontawesome-webfont.woff create mode 100644 theme/echosystem/css/plugins/fonts/fontawesome-webfont.woff2 create mode 100644 theme/echosystem/css/responsive.css create mode 100644 theme/echosystem/css/style.css create mode 100644 theme/echosystem/css/style.min.css create mode 100644 theme/echosystem/errors.php create mode 100644 theme/echosystem/footer.php create mode 100644 theme/echosystem/header.php create mode 100644 theme/echosystem/img/favicon.ico create mode 100644 theme/echosystem/img/index.php create mode 100644 theme/echosystem/index.php create mode 100644 theme/echosystem/js/bootstrap-select.js create mode 100644 theme/echosystem/js/bootstrap.min.js create mode 100644 theme/echosystem/js/datatables.min.js create mode 100644 theme/echosystem/js/index.php create mode 100644 theme/echosystem/js/jquery-ui.min.js create mode 100644 theme/echosystem/js/jquery.min.js create mode 100644 theme/echosystem/js/paste.js create mode 100644 theme/echosystem/login.php create mode 100644 theme/echosystem/main.php create mode 100644 theme/echosystem/oauth.php create mode 100644 theme/echosystem/pages.php create mode 100644 theme/echosystem/profile.php create mode 100644 theme/echosystem/sidebar.php create mode 100644 theme/echosystem/user_profile.php create mode 100644 theme/echosystem/view.php create mode 100644 theme/echosystem_blue/archive.php create mode 100644 theme/echosystem_blue/css/bootstrap.css create mode 100644 theme/echosystem_blue/css/bootstrap.min.css create mode 100644 theme/echosystem_blue/css/index.php create mode 100644 theme/echosystem_blue/css/paste.css create mode 100644 theme/echosystem_blue/css/plugins/bootstrap-checkbox.css create mode 100644 theme/echosystem_blue/css/plugins/bootstrap-checkbox.min.css create mode 100644 theme/echosystem_blue/css/plugins/bootstrap-select.css create mode 100644 theme/echosystem_blue/css/plugins/bootstrap-select.min.css create mode 100644 theme/echosystem_blue/css/plugins/datatables.css create mode 100644 theme/echosystem_blue/css/plugins/datatables.min.css create mode 100644 theme/echosystem_blue/css/plugins/font-awesome.min.css create mode 100644 theme/echosystem_blue/css/plugins/fonts/FontAwesome.otf create mode 100644 theme/echosystem_blue/css/plugins/fonts/fontawesome-webfont.eot create mode 100644 theme/echosystem_blue/css/plugins/fonts/fontawesome-webfont.svg create mode 100644 theme/echosystem_blue/css/plugins/fonts/fontawesome-webfont.ttf create mode 100644 theme/echosystem_blue/css/plugins/fonts/fontawesome-webfont.woff create mode 100644 theme/echosystem_blue/css/plugins/fonts/fontawesome-webfont.woff2 create mode 100644 theme/echosystem_blue/css/responsive.css create mode 100644 theme/echosystem_blue/css/style.css create mode 100644 theme/echosystem_blue/css/style.min.css create mode 100644 theme/echosystem_blue/errors.php create mode 100644 theme/echosystem_blue/footer.php create mode 100644 theme/echosystem_blue/header.old.php create mode 100644 theme/echosystem_blue/header.php create mode 100644 theme/echosystem_blue/img/favicon.ico create mode 100644 theme/echosystem_blue/img/index.php create mode 100644 theme/echosystem_blue/index.php create mode 100644 theme/echosystem_blue/js/bootstrap-select.js create mode 100644 theme/echosystem_blue/js/bootstrap.min.js create mode 100644 theme/echosystem_blue/js/datatables.min.js create mode 100644 theme/echosystem_blue/js/index.php create mode 100644 theme/echosystem_blue/js/jquery-ui.min.js create mode 100644 theme/echosystem_blue/js/jquery.min.js create mode 100644 theme/echosystem_blue/js/paste.js create mode 100644 theme/echosystem_blue/login.php create mode 100644 theme/echosystem_blue/main.php create mode 100644 theme/echosystem_blue/oauth.php create mode 100644 theme/echosystem_blue/pages.php create mode 100644 theme/echosystem_blue/profile.php create mode 100644 theme/echosystem_blue/sidebar.php create mode 100644 theme/echosystem_blue/user_profile.php create mode 100644 theme/echosystem_blue/view.php create mode 100644 theme/index.php create mode 100644 tmp/.htaccess create mode 100644 tmp/temp.tdata create mode 100644 tmp/temp.tdata1 create mode 100644 upgrade/1.9-to.2.0.php create mode 100644 upgrade/2.0-to.2.1.sql create mode 100644 upgrade/index.php create mode 100644 user.php create mode 100644 verify.php diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..aad2394 --- /dev/null +++ b/.htaccess @@ -0,0 +1,79 @@ +Options +FollowSymLinks +RewriteEngine on + + + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule ^page/([a-zA-Z0-9]+)/? pages.php?page=$1 [L] + RewriteRule ^archive archive.php [L] + RewriteRule ^rss/?$ feed/ [NC,L] + RewriteRule ^rss.xml$ feed/ [NC,L] +RewriteRule ^main$ main.php [L] + RewriteRule ^profile profile.php [L] + RewriteRule ^user/([^/]+)/?$ user.php?user=$1 [L] + RewriteRule ^contact contact.php [L] + RewriteRule ^download/(.*)$ paste.php?download&id=$1 [L] + RewriteRule ^raw/(.*)$ paste.php?raw&id=$1 [L] + RewriteRule ^embed/(.*)$ paste.php?embed&id=$1 [L] + + + + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule ^(.*)$ paste.php?id=$1 [L] + + +#.htaccess hide file extension +#If you want to hide file extension from your website then you can do it using .htaccess follow this code snippet and hide file extensions. + +RewriteCond %{REQUEST_FILENAME} !-f +RewriteRule ^([^\.]+)$ $1.php [NC,L] + + + +#SQl Injection is a code base injection. Hackers using SQL Injection to dump information from a database. For prevent SQL Injection use this code snippet in your website .htaccess + +RewriteCond %{QUERY_STRING} UNION([%20\ /\*+]*)ALL([%20\ /\*+]*)SELECT [NC,OR] +RewriteCond %{QUERY_STRING} UNION([%20\ /\*+]*)SELECT [NC,OR] +RewriteCond %{QUERY_STRING} /\* [NC,OR] +RewriteCond %{QUERY_STRING} \*/ [NC] +RewriteRule ^.* - [F] +RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR] +RewriteCond %{QUERY_STRING} http:.*\/.*\/ [OR] +RewriteCond %{QUERY_STRING} ..*\/ [OR] +RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] +RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] +RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) +RewriteCond %{QUERY_STRING} [^a-z](declare|char|set|cast|convert|delete|drop|exec|insert|meta|script|select|truncate|update)[^a-z] [NC] +RewriteRule (.*) - [F] + + +#Prevent XSS attacks using .htaccess +#If you want to prevent Cross Site Scripting (XSS) you can do it suing .htaccess now it's time to make your website more secure, let's see how to protect XSS using .htaceess, + + + + +RewriteCond %{QUERY_STRING} http://([a-zA-Z0-9_\-]*) [NC,OR] +RewriteCond %{QUERY_STRING} http:/([a-zA-Z0-9_\-]*) [NC,OR] +RewriteCond %{QUERY_STRING} cmd= [NC,OR] +RewriteCond %{QUERY_STRING} &cmd [NC,OR] +RewriteCond %{QUERY_STRING} exec [NC,OR] +RewriteCond %{QUERY_STRING} execu [NC,OR] +RewriteCond %{QUERY_STRING} concat [NC] +RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC,OR] +RewriteCond %{THE_REQUEST} ^.*(\ +|\ +|%0A|%0D).* [NC,OR] +RewriteCond %{HTTP_REFERER} ^(.*)(<|>|'|%0A|%0D|%27|%3C|%3E|).* [NC,OR] +RewriteCond %{HTTP_COOKIE} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|).* [NC,OR] +RewriteCond %{REQUEST_URI} ^/(,|;|:|<|>|">|"<|/|\\\.\.\\).{0,9999}.* [NC,OR] +RewriteCond %{HTTP_USER_AGENT} ^$ [OR] +RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR] +RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR] +RewriteCond %{HTTP_USER_AGENT} ^.*(libwww-perl|curl|wget|python|nikto|scan).* [NC,OR] +RewriteCond %{HTTP_USER_AGENT} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|).* [NC,OR] +RewriteCond %{QUERY_STRING} ^.*(;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|).*(/\*|union|select|insert|cast|set|declare|drop|update|md5|benchmark|print|printf|system|exec|scanf).* [NC,OR] +RewriteCond %{QUERY_STRING} ^.*(localhost|loopback|127\.0\.0\.1).* [NC,OR] +RewriteCond %{QUERY_STRING} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|).* [NC] +RewriteRule ^.* - [F] diff --git a/CHANGELOG b/CHANGELOG new file mode 100644 index 0000000..bce7220 --- /dev/null +++ b/CHANGELOG @@ -0,0 +1,10 @@ +=== CHANGELOG + + +* ADD RSS indicator in all pages. +* ADD RSS pages in /feed +* Custom .htaccess rewrite rss to feed +* Custom header + link RSS +* Modif link Main page rewrite + +* ADD theme blue custom diff --git a/README.md b/README.md index fe4f02a..7ba1081 100644 --- a/README.md +++ b/README.md @@ -1 +1,128 @@ -first \ No newline at end of file +# PastonBin 2.11 +[![Download PASTE](https://img.shields.io/sourceforge/dw/phpaste.svg)](https://sourceforge.net/projects/phpaste/files/latest/download) +[![Download PASTE](https://img.shields.io/sourceforge/dt/phpaste.svg)](https://sourceforge.net/projects/phpaste/files/latest/download) + + ____ _ ____ _ + | _ \ __ _ ___| |_ ___ _ __ | __ )(_)_ __ + | |_) / _` / __| __/ _ \| '_ \| _ \| | '_ \ + | __/ (_| \__ \ || (_) | | | | |_) | | | | | + |_| \__,_|___/\__\___/|_| |_|____/|_|_| |_| + + + + +Paste is forked from the original source pastebin.com used before it was bought. +The original source is available from the previous owner's **[GitHub repository](https://github.com/lordelph/pastebin)** + + + +[![Frontend](http://i.imgur.com/UxZVxqo.png)](http://pastethis.in/) + + + +Requirements +=== +* Apache 2.X / Nginx +* PHP 5.3.7 (or later) with php-mcrypt & GD enabled [PHP5.5+ recommended] +* MySQL 5.x+ +* apt install php7.0-mcrypt +--- + +Install +=== +* Create a database for PASTE. +* Upload all files to a webfolder +* Point your browser to http(s)://example.com/install +* Input some settings, DELETE the install folder and you're ready to go. + +Manual install +=== +Do the first two steps above and import the database schema using the CLI (or import via phpMyAdmin) +``` +mysql -uuser -ppassword databasename < docs/paste.mysqlschema.sql +``` +Move docs/config.example.php to config.php and edit + +Development setup +=== +* Set up git +* Fork this repository +* Create a database for PASTE. +* Check out the current master branch of your fork +* Point your browser to http(s)://example.com/install and follow the instructions on screen or import docs/paste.mysqlschema.sql into your database and copy docs/config.example.php to config.php and edit + +Now you can start coding and send in pull requests. + +--- + + +Clean URLs +=== +Set mod_rewrite in config.php to 1 + +For Apache, just use .htaccess + +For Nginx, use the example config in **[docs/nginx.example.conf](https://github.com/jordansamuel/PASTE/blob/master/docs/nginx.example.conf)** + +--- +Changelog +=== +See **[docs/CHANGELOG.md](https://github.com/jordansamuel/PASTE/blob/master/docs/CHANGELOG.md)** + +--- +Paste now supports pastes of upto 4GB in size, and this is configurable in config.php + +However, this relies on the value of post_max_size in your PHP configuration file. + +```php +// Max paste size in MB. This value should always be below the value of +// post_max_size in your PHP configuration settings (php.ini) or empty errors will occur. +// The value we got on installation of Paste was: post_max_size = 1G +// Otherwise, the maximum value that can be set is 4000 (4GB) +$pastelimit = "1"; // 0.5 = 512 kilobytes, 1 = 1MB +``` + +To enable registration with OAUTH see this block in config.php + +```php +// OAUTH (to enable, change to yes and edit) +$enablefb = "no"; +$enablegoog = "no"; + +// "CHANGE THIS" = Replace with your details +// Facebook +define('FB_APP_ID', 'CHANGE THIS'); // Your application ID, see https://developers.facebook.com/docs/apps/register +define('FB_APP_SECRET', 'CHANGE THIS'); // What's your Secret key + +// Google +define('G_Client_ID', 'CHANGE THIS'); // Get a Client ID from https://console.developers.google.com/projectselector/apis/library +define('G_Client_Secret', 'CHANGE THIS'); // What's your Secret ID +define('G_Redirect_Uri', 'http://urltoyour/installation/oauth/google.php'); // Leave this as is +define('G_Application_Name', 'Paste'); // Make sure this matches the name of your application +``` + +Everything else can be configured using the admin panel. + +--- + + +Credits +=== + +* Paul Dixon for developing **[the original pastebin.com](https://github.com/lordelph/pastebin)** +* **[Pat O'Brien](https://github.com/poblabs)** for numerous contributions to the project. +* **[Viktoria Rei Bauer](https://github.com/ToeiRei)** for her contributions to the project. +* Roberto Rodriguez (roberto.rodriguez.pino[AT]gmail.com) for PostgreSQL support on v1.9. + +The Paste theme was built using Bootstrap, jQuery and various jQuery plugins for +present and future features, but we do try to keep it bloat free. +Icons are provided by FontAwesome. + + ____ _ ____ _ + | _ \ __ _ ___| |_ ___ _ __ | __ )(_)_ __ + | |_) / _` / __| __/ _ \| '_ \| _ \| | '_ \ + | __/ (_| \__ \ || (_) | | | | |_) | | | | | + |_| \__,_|___/\__\___/|_| |_|____/|_|_| |_| + + + diff --git a/admin/admin.php b/admin/admin.php new file mode 100644 index 0000000..ccbd7f9 --- /dev/null +++ b/admin/admin.php @@ -0,0 +1,275 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ + +// PHP <5.5 compatibility +require_once('../includes/password.php'); + +session_start(); + +if (isset($_SESSION['login'])) { +// Do nothing +} else { + header("Location: ."); + exit(); +} + +if (isset($_GET['logout'])) { + if (isset($_SESSION['login'])) + unset($_SESSION['login']); + + session_destroy(); + header("Location: ."); + exit(); +} + +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; +require_once('../config.php'); +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); + +if (mysqli_connect_errno()) { + $sql_error = mysqli_connect_error(); + die("Unable connect to database"); +} + +$query = "SELECT @last_id := MAX(id) FROM admin_history"; + +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_id = $row['@last_id := MAX(id)']; +} + +$query = "SELECT * FROM admin_history WHERE id=" . Trim($last_id); +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_date = $row['last_date']; + $last_ip = $row['ip']; +} + +if ($last_ip == $ip) { + if ($last_date == $date) { + + } else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); + } +} else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); +} + + +$query = "SELECT * FROM admin"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $adminid = Trim($row['user']); + $password = Trim($row['pass']); +} +?> + + + + + + + Paste - Admin Settings + + + + + +
+ + + + + + + +
+ + +
+ +
+ +
+
+ +
+
+ + + + ' . mysqli_error($con) . ' +
'; + + } else { + $msg = '
+ Account details updated. +
'; + } + } + ?> + + +
+
+
+
+
+ + + + +
+
+ +
+ +
+ + + + + + + '; + echo ''; + echo ''; + } + echo ''; + ?> + +
Login dateIP
' . $row['last_date'] . '' . $row['ip'] . '
+
+
+
+
+
+
+
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/admin/ads.php b/admin/ads.php new file mode 100644 index 0000000..6a17448 --- /dev/null +++ b/admin/ads.php @@ -0,0 +1,237 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ + +session_start(); + +if (isset($_SESSION['login'])) { +// Do nothing +} else { + header("Location: ."); + exit(); +} + +if (isset($_GET['logout'])) { + if (isset($_SESSION['login'])) + unset($_SESSION['login']); + + session_destroy(); + header("Location: ."); + exit(); +} + +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; +require_once('../config.php'); +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); + +if (mysqli_connect_errno()) { + $sql_error = mysqli_connect_error(); + die("Unable connect to database"); +} + +$query = "SELECT @last_id := MAX(id) FROM admin_history"; + +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_id = $row['@last_id := MAX(id)']; +} + +$query = "SELECT * FROM admin_history WHERE id=" . Trim($last_id); +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_date = $row['last_date']; + $last_ip = $row['ip']; +} + +if ($last_ip == $ip) { + if ($last_date == $date) { + + } else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); + } +} else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); +} + +$query = "SELECT * FROM ads WHERE id='1'"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $text_ads = Trim($row['text_ads']); + $ads_1 = Trim($row['ads_1']); + $ads_2 = Trim($row['ads_2']); +} +?> + + + + + + + Paste - Ads + + + + + +
+ + + + + + + +
+ + +
+ +
+ +
+
+ +
+
+ + + + ' . mysqli_error($con) . ' +
'; + + } else { + $msg = '
+ Ads saved +
'; + } + } + ?> + + +
+
+
+
+
Manage Ads
+ +
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+
+
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/admin/ajax_pastes.php b/admin/ajax_pastes.php new file mode 100644 index 0000000..e87d862 --- /dev/null +++ b/admin/ajax_pastes.php @@ -0,0 +1,50 @@ + 'id', 'dt' => 0 ), + array( 'db' => 'member', 'dt' => 1 ), + array( 'db' => 'ip', 'dt' => 2 ), + array( 'db' => 'visible', 'dt' => 3 ) +); + +$columns2 = array( + array( 'db' => 'id', 'dt' => 0 ), + array( 'db' => 'member', 'dt' => 1 ), + array( 'db' => 'ip', 'dt' => 2 ), + array( 'db' => 'visible', 'dt' => 3 ), + array( 'db' => 'details', 'dt' => 4 ), + array( 'db' => 'view', 'dt' => 5 ), + array( 'db' => 'delete', 'dt' => 6) +); + + +// SQL server connection information +$sql_details = array( + 'user' => $dbuser, + 'pass' => $dbpassword, + 'db' => $dbname, + 'host' => $dbhost +); + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * If you just want to use the basic configuration for DataTables with PHP + * server-side, there is no need to edit below this line. + */ + +require( 'ssp.pastes.php' ); + +echo json_encode( + SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns, $columns2 ) +); +?> \ No newline at end of file diff --git a/admin/ajax_users.php b/admin/ajax_users.php new file mode 100644 index 0000000..b64c0b5 --- /dev/null +++ b/admin/ajax_users.php @@ -0,0 +1,54 @@ + 'username', 'dt' => 0 ), + array( 'db' => 'email_id', 'dt' => 1 ), + array( 'db' => 'date', 'dt' => 2), + array( 'db' => 'platform', 'dt' => 3 ), + array( 'db' => 'oauth_uid', 'dt' => 4 ), + array( 'db' => 'id', 'dt' => 5 ), + array( 'db' => 'verified', 'dt' => 6 ) +); + +$columns2 = array( + array( 'db' => 'username', 'dt' => 0 ), + array( 'db' => 'email_id', 'dt' => 1 ), + array( 'db' => 'date', 'dt' => 2), + array( 'db' => 'platform', 'dt' => 3 ), + array( 'db' => 'oauth_uid', 'dt' => 4 ), + array( 'db' => 'ban', 'dt' => 5 ), + array( 'db' => 'view', 'dt' => 6 ), + array( 'db' => 'delete', 'dt' => 7) +); + + +// SQL server connection information +$sql_details = array( + 'user' => $dbuser, + 'pass' => $dbpassword, + 'db' => $dbname, + 'host' => $dbhost +); + + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * If you just want to use the basic configuration for DataTables with PHP + * server-side, there is no need to edit below this line. + */ + +require( 'ssp.users.php' ); + +echo json_encode( + SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns, $columns2 ) +); +?> \ No newline at end of file diff --git a/admin/configuration.php b/admin/configuration.php new file mode 100644 index 0000000..7828de2 --- /dev/null +++ b/admin/configuration.php @@ -0,0 +1,676 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ +session_start(); + +if (isset($_SESSION['login'])) { +// Do nothing +} else { + header("Location: ."); + exit(); +} + +if (isset($_GET['logout'])) { + if (isset($_SESSION['login'])) + unset($_SESSION['login']); + + session_destroy(); + header("Location: ."); + exit(); +} + +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; +require_once('../config.php'); +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); + +if (mysqli_connect_errno()) { + $sql_error = mysqli_connect_error(); + die("Unable connect to database"); +} + +$query = "SELECT @last_id := MAX(id) FROM admin_history"; + +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_id = $row['@last_id := MAX(id)']; +} + +$query = "SELECT * FROM admin_history WHERE id=" . Trim($last_id); +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_date = $row['last_date']; + $last_ip = $row['ip']; +} + +if ($last_ip == $ip) { + if ($last_date == $date) { + + } else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); + } +} else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); +} + + +$query = "SELECT * FROM site_info"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $title = Trim($row['title']); + $des = Trim($row['des']); + $baseurl = Trim($row['baseurl']); + $keyword = Trim($row['keyword']); + $site_name = Trim($row['site_name']); + $email = Trim($row['email']); + $twit = Trim($row['twit']); + $face = Trim($row['face']); + $gplus = Trim($row['gplus']); + $ga = Trim($row['ga']); + $additional_scripts = Trim($row['additional_scripts']); +} +$query = "SELECT * FROM captcha WHERE id='1'"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $cap_e = $row['cap_e']; + $mode = $row['mode']; + $mul = $row['mul']; + $allowed = $row['allowed']; + $color = $row['color']; + $recaptcha_sitekey = $row['recaptcha_sitekey']; + $recaptcha_secretkey = $row['recaptcha_secretkey']; +} + +$query = "SELECT * FROM site_permissions WHERE id='1'"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $disableguest = Trim($row['disableguest']); + $siteprivate = Trim($row['siteprivate']); +} + +$query = "SELECT * FROM mail WHERE id='1'"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $verification = Trim($row['verification']); + $smtp_host = Trim($row['smtp_host']); + $smtp_username = Trim($row['smtp_username']); + $smtp_password = Trim($row['smtp_password']); + $smtp_port = Trim($row['smtp_port']); + $protocol = Trim($row['protocol']); + $auth = Trim($row['auth']); + $socket = Trim($row['socket']); +} +?> + + + + + + + Paste - Configuration + + + + + +
+ + + + + + + +
+ + +
+ +
+ +
+
+ +
+
+ + + +
+
+
+
+ + ' . mysqli_error($con) . ' +
'; + } else { + $msg = '
+ Configuration saved +
'; + } + } + if (isset($_POST['cap'])) { + $cap_e = Trim($_POST['cap_e']); + $mode = Trim($_POST['mode']); + $mul = Trim($_POST['mul']); + $allowed = Trim($_POST['allowed']); + $color = Trim($_POST['color']); + $recaptcha_sitekey = Trim($_POST['recaptcha_sitekey']); + $recaptcha_secretkey = Trim($_POST['recaptcha_secretkey']); + + $query = "UPDATE captcha SET cap_e='$cap_e', mode='$mode', mul='$mul', allowed='$allowed', color='$color', recaptcha_sitekey='$recaptcha_sitekey', recaptcha_secretkey='$recaptcha_secretkey' WHERE id='1'"; + mysqli_query($con, $query); + + if (mysqli_errno($con)) { + $msg = '
+ ' . mysqli_error($con) . ' +
'; + } else { + $msg = '
+ Captcha settings saved +
'; + } + } + + if (isset($_POST['permissions'])) { + $disableguest = Trim($_POST['disableguest']); + $siteprivate = Trim($_POST['siteprivate']); + + $query = "UPDATE site_permissions SET disableguest='$disableguest', siteprivate='$siteprivate' WHERE id='1'"; + mysqli_query($con, $query); + + if (mysqli_errno($con)) { + $msg = '
+ ' . mysqli_error($con) . ' +
'; + } else { + $msg = '
+ Site permissions saved. +
'; + } + } + + } + + if (isset($_POST['smtp_code'])) { + $verification = Trim($_POST['verification']); + $smtp_host = Trim($_POST['smtp_host']); + $smtp_port = Trim($_POST['smtp_port']); + $smtp_username = Trim($_POST['smtp_user']); + $smtp_password = Trim($_POST['smtp_pass']); + $socket = Trim($_POST['socket']); + $auth = Trim($_POST['auth']); + $protocol = Trim($_POST['protocol']); + + $query = "UPDATE mail SET verification='$verification', smtp_host='$smtp_host', smtp_port='$smtp_port', smtp_username='$smtp_username', smtp_password='$smtp_password', socket='$socket', protocol='$protocol', auth='$auth' WHERE id='1'"; + mysqli_query($con, $query); + + if (mysqli_errno($con)) { + $msg = '
+ ' . mysqli_error($con) . ' +
'; + + } else { + $msg = ' +
+ Mail settings updated +
'; + } + } + if (isset($msg)) echo $msg; + ?> + +
+ + + + +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ + + +
+
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ + + +
+
+ +
+
+
+
+ + + +
+
+ +
+ type="checkbox" name="disableguest" id="disableguest"> + +
+ +
+ type="checkbox" name="siteprivate" id="siteprivate"> + +
+ +
+ + + +
+
+ +
+
+
+
+ + + +
+
+ +
+ type="checkbox" name="cap_e" id="cap_e"> + +
+
+ +
+ + +
+ +
+
+ Internal Captcha Settings: +
+
+ type="checkbox" name="mul" id="mul"> + +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ reCAPTCHA Settings: +
+
+ +
+ +
+
+ +
+ +
+ +
+
+ + + +
+
+ +
+
+
+
+ + + +
+
+ +
+
+ Registration Settings +
+ + +
+ +
+
+ Mail Settings +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ + + +
+
+ +
+
+
+
+
+
+
+
+
+
+ +
+ + + + + + + + + + + + + diff --git a/admin/css/bootstrap-checkbox.min.css b/admin/css/bootstrap-checkbox.min.css new file mode 100644 index 0000000..0df48a0 --- /dev/null +++ b/admin/css/bootstrap-checkbox.min.css @@ -0,0 +1 @@ +.checkbox.checkbox-inline,.radio.radio-inline{margin-top:0}.checkbox{padding-left:20px}.checkbox label{display:inline-block;position:relative;padding-left:5px}.checkbox label::after,.checkbox label::before{position:absolute;margin-left:-20px;display:inline-block;left:0}.checkbox label::before{content:"";width:18px;height:18px;margin-right:20px;border:1px solid #CCC;border-radius:3px;background-color:#fff;-webkit-transition:border .15s ease-in-out,color .15s ease-in-out;-o-transition:border .15s ease-in-out,color .15s ease-in-out;transition:border .15s ease-in-out,color .15s ease-in-out}.checkbox label::after{width:16px;height:16px;top:0;padding-left:3px;padding-top:2px;font-size:12px;color:#555}.checkbox input[type=checkbox]{opacity:0}.checkbox input[type=checkbox]:focus+label::before{outline:dotted thin;outline:-webkit-focus-ring-color auto 0;outline-offset:-2px}.checkbox input[type=checkbox]:checked+label::after{font-family:FontAwesome;line-height:15px;content:"\f00c"}.checkbox input[type=checkbox]:disabled+label{opacity:.65}.checkbox input[type=checkbox]:disabled+label::before{background-color:#eee;cursor:not-allowed}.checkbox.checkbox-circle label::before{border-radius:50%}.radio{padding-left:20px}.radio label{display:inline-block;position:relative;padding-left:5px}.radio label::after,.radio label::before{display:inline-block;position:absolute;margin-left:-20px}.radio label::before{content:"";width:18px;height:18px;left:0;border:3px solid #ccc;border-radius:50%;background-color:#fff;-webkit-transition:border .15s ease-in-out;-o-transition:border .15s ease-in-out;transition:border .15s ease-in-out}.radio label::after{content:" ";width:8px;height:8px;left:5px;top:5px;border-radius:50%;background-color:#555;-webkit-transform:scale(0,0);-ms-transform:scale(0,0);-o-transform:scale(0,0);transform:scale(0,0);-webkit-transition:-webkit-transform .1s cubic-bezier(.8,-.33,.2,1.33);-moz-transition:-moz-transform .1s cubic-bezier(.8,-.33,.2,1.33);-o-transition:-o-transform .1s cubic-bezier(.8,-.33,.2,1.33);transition:transform .1s cubic-bezier(.8,-.33,.2,1.33)}.radio input[type=radio]{opacity:0}.radio input[type=radio]:focus+label::before{outline:dotted thin;outline:-webkit-focus-ring-color auto 0;outline-offset:-2px}.radio input[type=radio]:checked+label::after{-webkit-transform:scale(1,1);-ms-transform:scale(1,1);-o-transform:scale(1,1);transform:scale(1,1);transition:all .4s ease}.radio input[type=radio]:disabled+label{opacity:.65}.radio input[type=radio]:disabled+label::before{cursor:not-allowed} \ No newline at end of file diff --git a/admin/css/bootstrap-select.min.css b/admin/css/bootstrap-select.min.css new file mode 100644 index 0000000..bdb9f9e --- /dev/null +++ b/admin/css/bootstrap-select.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) + * + * Copyright 2013-2014 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */.bootstrap-select.btn-group .dropdown-menu li.disabled a,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select{width:220px\9}.bootstrap-select>.btn{width:100%;padding-right:25px}.error .bootstrap-select .btn{border:1px solid #b94a48}.control-group.error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select.btn-group[class*=col-] .btn,.bootstrap-select.form-control:not([class*=col-]),.form-inline .bootstrap-select.btn-group .form-control{width:100%}.bootstrap-select .btn:focus{outline:#333 dotted thin!important;outline:-webkit-focus-ring-color auto 0!important;outline-offset:0}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row-fluid .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group,.form-search .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.input-append .bootstrap-select.btn-group{margin-left:-1px}.input-prepend .bootstrap-select.btn-group{margin-right:-1px}.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group .btn .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .btn .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select .dropdown-menu small{color:inherit}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;z-index:1035;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px}.bootstrap-select.btn-group.fit-width .btn .filter-option{position:static}.bootstrap-select.btn-group.fit-width .btn .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.btn{z-index:1035 + 1}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom-width:7px;border-bottom-style:solid;border-bottom-color:#ccc;border-bottom-color:rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-bottom:0;border-top-width:7px;border-top-style:solid;border-top-color:#ccc;border-top-color:rgba(204,204,204,.2)}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bs-actionsbox,.bs-searchbox{padding:4px 8px}.bs-actionsbox{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox input.form-control{margin-bottom:0;width:100%}.mobile-device{position:absolute;top:0;left:0;display:block!important;width:100%;height:100%!important;opacity:0} \ No newline at end of file diff --git a/admin/css/bootstrap.css b/admin/css/bootstrap.css new file mode 100644 index 0000000..e1f1d25 --- /dev/null +++ b/admin/css/bootstrap.css @@ -0,0 +1,6565 @@ +/*! + * Bootstrap v3.3.2 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ +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: bold; +} +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 #c0c0c0; +} +legend { + padding: 0; + border: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +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 { + *, + *:before, + *:after { + color: #000 !important; + text-shadow: none !important; + background: transparent !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^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + select { + background: #fff !important; + } + .navbar { + display: none; + } + .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 th, + .table-bordered td { + 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: normal; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\2a"; +} +.glyphicon-plus:before { + content: "\2b"; +} +.glyphicon-euro:before, +.glyphicon-eur: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-yen:before { + content: "\00a5"; +} +.glyphicon-ruble: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; +} +*:before, +*:after { + -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; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #337ab7; + text-decoration: none; +} +a:hover, +a:focus { + color: #23527c; + text-decoration: underline; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + 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; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #777; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 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:hover { + color: #286090; +} +.text-success { + color: #3c763d; +} +a.text-success:hover { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #337ab7; +} +a.bg-primary:hover { + background-color: #286090; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + 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; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +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[title], +abbr[data-original-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 p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777; +} +blockquote footer:before, +blockquote small: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 footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +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: bold; + -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-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: 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-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: 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-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: 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-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: 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 > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 22px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-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 > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + 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 > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + 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: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; +} +input[type="file"] { + display: block; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -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[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eee; + opacity: 1; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + line-height: 34px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm, + .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"] { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg, + .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"] { + line-height: 46px; + } +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 4px \9; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + 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; +} +textarea.input-sm, +select[multiple].input-sm { + height: auto; +} +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.form-group-sm .form-control { + height: 30px; + line-height: 30px; +} +textarea.form-group-sm .form-control, +select[multiple].form-group-sm .form-control { + height: auto; +} +.form-group-sm .form-control-static { + height: 30px; + padding: 5px 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; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.form-group-lg .form-control { + height: 46px; + line-height: 46px; +} +textarea.form-group-lg .form-control, +select[multiple].form-group-lg .form-control { + height: auto; +} +.form-group-lg .form-control-static { + height: 46px; + padding: 10px 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; +} +.input-lg + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.input-sm + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-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 .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-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 .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-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 .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + 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: 14.333333px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + } +} +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + 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:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + 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 { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; +} +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; +} +.btn-default:hover, +.btn-default:focus, +.btn-default.focus, +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #fff; + border-color: #ccc; +} +.btn-default .badge { + color: #fff; + background-color: #333; +} +.btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary.focus, +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary .badge { + color: #337ab7; + background-color: #fff; +} +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:hover, +.btn-success:focus, +.btn-success.focus, +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #fff; +} +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:hover, +.btn-info:focus, +.btn-info.focus, +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning.focus, +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger.focus, +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} +.btn-link { + font-weight: normal; + 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:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #23527c; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #777; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; + visibility: hidden; +} +.collapse.in { + display: block; + visibility: visible; +} +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 solid; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + 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: normal; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + 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 solid; +} +.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 > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-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-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-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="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + 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-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; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-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:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-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:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + margin-left: -1px; +} +.nav { + 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:hover, +.nav > li > a:focus { + text-decoration: none; +} +.nav > li.disabled > a { + color: #777; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + 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:hover, +.nav-tabs > li.active > a:focus { + 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:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #fff; + background-color: #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:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.tab-content > .tab-pane { + display: none; + visibility: hidden; +} +.tab-content > .active { + display: block; + visibility: visible; +} +.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; + visibility: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} +.navbar-brand:hover, +.navbar-brand:focus { + 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 > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} +.navbar-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 .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + 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:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777; +} +.navbar-default .navbar-nav > li > a { + color: #777; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #ddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #ddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + 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:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #777; +} +.navbar-default .navbar-link:hover { + color: #333; +} +.navbar-default .btn-link { + color: #777; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #333; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #9d9d9d; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + 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:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + 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:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #9d9d9d; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.navbar-inverse .btn-link { + color: #9d9d9d; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #fff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + 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:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + color: #23527c; + background-color: #eee; + border-color: #ddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + 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; +} +.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; +} +.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:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777; + cursor: not-allowed; + background-color: #fff; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + 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]:hover, +.label-default[href]:focus { + background-color: #5e5e5e; +} +.label-primary { + background-color: #337ab7; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #286090; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #777; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.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: 30px 15px; + 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 { + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding: 48px 0; + } + .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 > img, +.thumbnail a > img { + margin-right: auto; + margin-left: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + 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: bold; +} +.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-striped .progress-bar, +.progress-bar-striped { + 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.active .progress-bar, +.progress-bar.active { + -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-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + 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 { + color: #555; +} +a.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +a.list-group-item:focus { + color: #555; + text-decoration: none; + background-color: #f5f5f5; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + color: #777; + cursor: not-allowed; + background-color: #eee; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #c7ddef; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +a.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +a.list-group-item-success.active:hover, +a.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +a.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +a.list-group-item-info.active:hover, +a.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +a.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +a.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-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 > a, +.panel-title > small, +.panel-title > .small, +.panel-title > small > a, +.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-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-right: 15px; + padding-left: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead: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-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + 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 > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + 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 iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} +.embed-responsive.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive.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: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; +} +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; +} +.modal-open { + overflow: hidden; +} +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + 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: absolute; + top: 0; + right: 0; + left: 0; + background-color: #000; +} +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; +} +.modal-header { + min-height: 16.42857143px; + 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-weight: normal; + line-height: 1.4; + visibility: visible; + filter: alpha(opacity=0); + opacity: 0; +} +.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; + text-decoration: none; + background-color: #000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-left .tooltip-arrow { + 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-weight: normal; + line-height: 1.42857143; + text-align: left; + 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); +} +.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 > img, +.carousel-inner > .item > a > 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: 1000; + perspective: 1000; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + left: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + left: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + 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); + 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:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: 0; + opacity: .9; +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + 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-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -15px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -15px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-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; + visibility: hidden !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (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; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.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; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.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; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.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; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.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.css.map */ diff --git a/admin/css/bootstrap.min.css b/admin/css/bootstrap.min.css new file mode 100644 index 0000000..7876874 --- /dev/null +++ b/admin/css/bootstrap.min.css @@ -0,0 +1,5 @@ +/*! + * Bootstrap v3.3.2 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */hr,img{border:0}body,figure{margin:0}.btn-group>.btn-group,.btn-toolbar .btn-group,.btn-toolbar .input-group,.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,.dropdown-menu{float:left}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}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}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{color:#000;background:#ff0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre,textarea{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}.glyphicon,address{font-style:normal}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[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-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}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{blockquote,img,pre,tr{page-break-inside:avoid}*,: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}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.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}}.dropdown-menu,.modal-content{-webkit-background-clip:padding-box}.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.dropdown-toggle.btn-danger,.open>.dropdown-toggle.btn-default,.open>.dropdown-toggle.btn-info,.open>.dropdown-toggle.btn-primary,.open>.dropdown-toggle.btn-warning{background-image:none}.img-thumbnail,body{background-color:#fff}@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-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-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-yen:before{content:"\00a5"}.glyphicon-ruble: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"}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333}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:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.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;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-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}.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}dt,kbd kbd,label{font-weight:700}address,blockquote .small,blockquote footer,blockquote small,dd,dt,pre{line-height:1.42857143}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.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:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}dl,ol,ul{margin-top:0}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}address,dl{margin-bottom:20px}ol,ul{margin-bottom:10px}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}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}.container{width:750px}}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 .small,blockquote footer,blockquote small{display:block;font-size:80%;color:#777}legend,pre{display:block;color:#333}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}code,kbd{padding:2px 4px;font-size:90%}caption,th{text-align:left}.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'}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{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%;-webkit-box-shadow:none;box-shadow:none}pre{padding:9.5px;margin:0 0 10px;font-size:13px;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.container,.container-fluid{margin-right:auto;margin-left:auto}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0}.container,.container-fluid{padding-right:15px;padding-left:15px}.pre-scrollable{overflow-y:scroll}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.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-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}}caption{padding-top:8px;padding-bottom:8px;color:#777}.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:22px;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,.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,.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 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-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,legend{padding:0;border:0}fieldset{min-width:0;margin:0}legend{width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}.form-control,output{font-size:14px;line-height:1.42857143;color:#555;display:block}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:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px}.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;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-group-sm .form-control,.input-sm{font-size:12px;border-radius:3px;padding:5px 10px}.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}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.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}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=time],input[type=datetime-local],input[type=month]{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{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}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,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}.form-control-static{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;line-height:1.5}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;line-height:1.5}.form-group-lg .form-control,.input-lg{border-radius:6px;padding:10px 16px;font-size:18px}select.form-group-sm .form-control{height:30px;line-height:30px}select[multiple].form-group-sm .form-control,textarea.form-group-sm .form-control{height:auto}.form-group-sm .form-control-static{height:30px;padding:5px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;line-height:1.3333333}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;line-height:1.3333333}select.form-group-lg .form-control{height:46px;line-height:46px}select[multiple].form-group-lg .form-control,textarea.form-group-lg .form-control{height:auto}.form-group-lg .form-control-static{height:46px;padding:10px 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}.collapsing,.dropdown,.dropup{position:relative}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.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-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.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-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.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-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-control-static,.form-inline .form-group{display:inline-block}.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.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 .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 .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.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}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px}.form-horizontal .form-group-sm .control-label{padding-top:6px}}.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;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{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{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.active,.btn-default.focus,.btn-default:active,.btn-default:focus,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,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.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,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.active,.btn-success.focus,.btn-success:active,.btn-success:focus,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,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.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,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.active,.btn-warning.focus,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,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.active,.btn-danger.focus,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,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;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{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 solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;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-right,.dropdown-menu.pull-right{right:0;left:auto}.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.42857143;white-space:nowrap}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{clear:both;font-weight:400;color:#333}.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;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{right:auto;left:0}.dropdown-header{font-size:12px;color:#777}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.nav-justified>.dropdown .dropdown-menu,.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.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,.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.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 .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{margin-left:5px}.btn .caret,.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: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-lg .caret{border-width:5px 5px 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}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group,.input-group-btn>.btn+.btn{margin-left:-1px}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;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-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}.nav>li,.nav>li>a{display:block;position:relative}.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:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none}.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;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{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0;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-justified>li,.nav-stacked>li{float:none}.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+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li>a{margin-bottom:5px;text-align:center}.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-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.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;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.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}.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{border-radius:4px}.navbar-header{float:left}.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;visibility: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}}.embed-responsive,.modal,.modal-open,.progress{overflow:hidden}@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}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.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;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@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-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}.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;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}.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}}.progress-bar-striped,.progress-striped .progress-bar,.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)}@media (min-width:768px){.navbar-toggle{display:none}.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;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.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 .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}.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}}.breadcrumb>li,.pagination{display:inline-block}.btn .badge,.btn .label{top:-1px;position:relative}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}.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-radius:4px 4px 0 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}.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-nav>li>a,.navbar-default .navbar-text{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-nav>li>a,.navbar-inverse .navbar-text{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+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{padding-left:0;margin:20px 0;border-radius:4px}.pager li,.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}.badge,.label{font-weight:700;line-height:1;white-space:nowrap;vertical-align:baseline;text-align:center}.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{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:2;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}.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}.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>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}a.badge:focus,a.badge:hover,a.label:focus,a.label:hover{color:#fff;cursor:pointer;text-decoration:none}.label{display:inline;padding:.2em .6em .3em;font-size:75%;color:#fff;border-radius:.25em}.label:empty{display:none}.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;color:#fff;background-color:#777;border-radius:10px}.badge:empty{display:none}.media-object,.thumbnail{display:block}.btn-xs .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;background-color:#eee}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.alert,.thumbnail{margin-bottom:20px}.alert .alert-link,.close{font-weight:700}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{padding:4px;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;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.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;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: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: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-striped .progress-bar-info,.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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{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: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-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{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}.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{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.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{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.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{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.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{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.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{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.close{line-height:1}.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-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.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-title{margin-top:0;font-size:16px}.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 .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.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-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>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,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom: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}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width: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-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,.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-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,.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-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+.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}.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.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.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;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.popover,.tooltip{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400}.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{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;-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;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:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;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}}.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.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;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px}.tooltip.top-right .tooltip-arrow{left:5px}.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,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{border-width:0 5px 5px;border-bottom-color:#000;top:0}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px}.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-size:14px;line-height:1.42857143;text-align:left;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)}.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}.carousel,.carousel-inner{position:relative}.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.left>.arrow:after,.popover.right>.arrow:after{bottom:-10px;content:" "}.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{left:1px;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;border-right-width:0;border-left-color:#fff}.carousel-inner{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}@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:1000;perspective:1000}.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);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}.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;margin-top:-10px;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-hide{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:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.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,.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,.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}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;background-color:transparent;border:0}.hidden{visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.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}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.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}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!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}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}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}.hidden-print{display:none!important}} \ No newline at end of file diff --git a/admin/css/bootstrap3-wysihtml5.min.css b/admin/css/bootstrap3-wysihtml5.min.css new file mode 100644 index 0000000..d8dd3c2 --- /dev/null +++ b/admin/css/bootstrap3-wysihtml5.min.css @@ -0,0 +1,3 @@ +/*! bootstrap3-wysihtml5-bower 2013-11-22 */ + +ul.wysihtml5-toolbar{margin:0;padding:0;display:block}ul.wysihtml5-toolbar::after{clear:both;display:table;content:""}ul.wysihtml5-toolbar>li{float:left;display:list-item;list-style:none;margin:0 5px 10px 0}ul.wysihtml5-toolbar a[data-wysihtml5-command=bold]{font-weight:700}ul.wysihtml5-toolbar a[data-wysihtml5-command=italic]{font-style:italic}ul.wysihtml5-toolbar a[data-wysihtml5-command=underline]{text-decoration:underline}ul.wysihtml5-toolbar a.btn.wysihtml5-command-active{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);background-color:#E6E6E6;background-color:#D9D9D9;outline:0}ul.wysihtml5-commands-disabled .dropdown-menu{display:none!important}ul.wysihtml5-toolbar div.wysihtml5-colors{display:block;width:50px;height:20px;margin-top:2px;margin-left:5px;position:absolute;pointer-events:none}ul.wysihtml5-toolbar a.wysihtml5-colors-title{padding-left:70px}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=black]{background:#000!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=silver]{background:silver!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=gray]{background:gray!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=maroon]{background:maroon!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=red]{background:red!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=purple]{background:purple!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=green]{background:green!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=olive]{background:olive!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=navy]{background:navy!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=blue]{background:#00f!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=orange]{background:orange!important} \ No newline at end of file diff --git a/admin/css/datatables.min.css b/admin/css/datatables.min.css new file mode 100644 index 0000000..d40d031 --- /dev/null +++ b/admin/css/datatables.min.css @@ -0,0 +1 @@ +table.dataTable tbody td.dt-body-nowrap,table.dataTable tbody th.dt-body-nowrap,table.dataTable td.dt-nowrap,table.dataTable tfoot td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable th.dt-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable thead th.dt-head-nowrap,table.dataTable.nowrap td,table.dataTable.nowrap th{white-space:nowrap}.dataTables_wrapper .dataTables_paginate .paginate_button:active,table.dataTable thead td:active,table.dataTable thead th:active{outline:0}table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable tfoot th,table.dataTable thead th{font-weight:700;text-transform:uppercase;font-size:12px}table.dataTable thead td,table.dataTable thead th{padding:16px 18px;border-bottom:1px solid #ccc}table.dataTable tfoot td,table.dataTable tfoot th{padding:16px 18px 20px;border-top:1px solid #ccc}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{cursor:pointer}table.dataTable thead .sorting{background:url(../../../img/datatables/sort_both.png) center right no-repeat}table.dataTable thead .sorting_asc{background:url(../../../img/datatables/sort_asc.png) center right no-repeat}table.dataTable thead .sorting_desc{background:url(../../../img/datatables/sort_desc.png) center right no-repeat}table.dataTable thead .sorting_asc_disabled{background:url(../../../img/datatables/sort_asc_disabled.png) center right no-repeat}table.dataTable thead .sorting_desc_disabled{background:url(../../../img/datatables/sort_desc_disabled.png) center right no-repeat}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody td,table.dataTable tbody th{padding:14px 10px}table.dataTable.display tbody td,table.dataTable.display tbody th,table.dataTable.row-border tbody td,table.dataTable.row-border tbody th{border-top:1px solid #ddd}table.dataTable.display tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody td,table.dataTable.cell-border tbody th{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr td:first-child,table.dataTable.cell-border tbody tr th:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child td,table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.display tbody tr.odd,table.dataTable.stripe tbody tr.odd{background-color:#f9f9f9}table.dataTable.display tbody tr.odd.selected,table.dataTable.stripe tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.display tbody tr.even:hover,table.dataTable.display tbody tr.odd:hover,table.dataTable.display tbody tr:hover,table.dataTable.hover tbody tr.even:hover,table.dataTable.hover tbody tr.odd:hover,table.dataTable.hover tbody tr:hover{background-color:#f5f5f5}table.dataTable.display tbody tr.even:hover.selected,table.dataTable.display tbody tr.odd:hover.selected,table.dataTable.display tbody tr:hover.selected,table.dataTable.hover tbody tr.even:hover.selected,table.dataTable.hover tbody tr.odd:hover.selected,table.dataTable.hover tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3,table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3,table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr.even:hover>.sorting_1,table.dataTable.display tbody tr.odd:hover>.sorting_1,table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1,table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr.even:hover>.sorting_2,table.dataTable.display tbody tr.odd:hover>.sorting_2,table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2,table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.display tbody tr.even:hover>.sorting_3,table.dataTable.display tbody tr.odd:hover>.sorting_3,table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3,table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.display tbody tr.even:hover.selected>.sorting_1,table.dataTable.display tbody tr.odd:hover.selected>.sorting_1,table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.display tbody tr.even:hover.selected>.sorting_2,table.dataTable.display tbody tr.odd:hover.selected>.sorting_2,table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.display tbody tr.even:hover.selected>.sorting_3,table.dataTable.display tbody tr.odd:hover.selected>.sorting_3,table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.compact thead td,table.dataTable.compact thead th{padding:5px 9px}table.dataTable.compact tfoot td,table.dataTable.compact tfoot th{padding:5px 9px 3px}table.dataTable.compact tbody td,table.dataTable.compact tbody th{padding:4px 5px}table.dataTable td.dt-left,table.dataTable th.dt-left{text-align:left}table.dataTable td.dataTables_empty,table.dataTable td.dt-center,table.dataTable th.dt-center{text-align:center}table.dataTable td.dt-right,table.dataTable th.dt-right{text-align:right}table.dataTable td.dt-justify,table.dataTable th.dt-justify{text-align:justify}table.dataTable tfoot td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable thead th.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable thead th.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable thead th.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable tbody td.dt-body-left,table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center,table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right,table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify,table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable,table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em;height:34px;border-radius:3px;padding-left:10px;font-size:14px;font-family:arial,sans-serif;font-weight:400;background:#fff;border:1px solid #BDC4C9;box-shadow:inset 0 1px 0 #F1F0F1}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.2em 1em;margin-left:2px;text-align:center;text-decoration:none!important;cursor:pointer;color:#333!important;border:1px solid transparent;border-radius:4px;background:#f2f2f2}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#444;background-color:#ddd}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{cursor:default;color:#666;background:0 0;border:none;box-shadow:none;border-radius:3px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{background-color:#eee;color:#333}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_paginate,.dataTables_wrapper .dataTables_processing{color:#333;font-family:inherit;font-weight:400}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th>div.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #ccc}.dataTables_wrapper.no-footer div.dataTables_scrollBody table,.dataTables_wrapper.no-footer div.dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width:767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:.5em}}@media screen and (max-width:640px){.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_length{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:.5em}}.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_length{color:#777}tr.group,tr.group:hover{background-color:#e1e1e1!important} \ No newline at end of file diff --git a/admin/css/font-awesome.min.css b/admin/css/font-awesome.min.css new file mode 100644 index 0000000..640a2fd --- /dev/null +++ b/admin/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('fonts/fontawesome-webfont.eot?v=4.6.3');src:url('fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'),url('fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'),url('fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'),url('fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'),url('fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.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} diff --git a/admin/css/fonts/FontAwesome.otf b/admin/css/fonts/FontAwesome.otf new file mode 100644 index 0000000000000000000000000000000000000000..d4de13e832d567ff29c5b4e9561b8c370348cc9c GIT binary patch literal 124988 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ÐT?>-5aYhU|+1c>&YMpPK5x#-mbV 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'NS^o{z1ZKlHsAybrl=JE7AP369ntV%vB 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 CDx5C> literal 0 HcmV?d00001 diff --git a/admin/css/fonts/fontawesome-webfont.eot b/admin/css/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..c7b00d2ba8896fd29de846b19f89fcf0d56ad152 GIT binary patch literal 76518 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%0DyT{kunD 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⋙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 z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/admin/css/fonts/fontawesome-webfont.ttf b/admin/css/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f221e50a2ef60738ba30932d834530cdfe55cb3e GIT binary patch literal 152796 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

=v_rA!CPE#mM^4@)}X7qf;At+v)G*FZd&; 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 ALjV8( literal 0 HcmV?d00001 diff --git a/admin/css/fonts/fontawesome-webfont.woff b/admin/css/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..6e7483cf61b490c08ed644d6ef802c69472eb247 GIT binary patch literal 90412 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%0Ded40&XED0GYFoIh+AV*?9!MR5pBW?X_8Bp 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 IH>08b4`|GD*#H0l literal 0 HcmV?d00001 diff --git a/admin/css/fonts/fontawesome-webfont.woff2 b/admin/css/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7eb74fd127ee5eddf3b95fee6a20dc1684b0963b GIT binary patch literal 71896 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≠dR0E9ICQ{-tcR;@{R^I5P#1GUH!p=-{c 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 literal 0 HcmV?d00001 diff --git a/admin/css/index.php b/admin/css/index.php new file mode 100644 index 0000000..e69de29 diff --git a/admin/css/paste.css b/admin/css/paste.css new file mode 100644 index 0000000..76ea291 --- /dev/null +++ b/admin/css/paste.css @@ -0,0 +1,21 @@ +/* Fonts */ + /* Open Sans */ + @import url(//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,600,700,800,300); + +/* Bootstrap Main CSS File (unedited) */ +@import url('bootstrap.min.css'); + +/* Admin Style */ +@import url('style.min.css'); + +/* Responsive Style */ +@import url('responsive.css'); + +/* Font Awesome */ +@import url('font-awesome.min.css'); + +/* Bootstrap Checkbox */ +@import url('bootstrap-checkbox.min.css'); + +/* Bootstrap Select */ +@import url('bootstrap-select.min.css'); \ No newline at end of file diff --git a/admin/css/responsive.css b/admin/css/responsive.css new file mode 100644 index 0000000..d5f7de3 --- /dev/null +++ b/admin/css/responsive.css @@ -0,0 +1,22 @@ +@media screen and (min-width: 1024px) { + .searchform{display: none;} + .sidebar{display: block !important;} + .captcha input {min-width:100px;} + +} + +@media screen and (max-width: 760px) { + .page-header .right{display: none;} + .sidebar{display: none; width: 100%;} + .container-default, .container-widget{margin-left:-20px; margin-right: -20px;} + .container-padding, .container-no-padding{margin-left:-40px; margin-right: -40px;} + .profile-left .btn{display: none;} + .captcha input {min-width:100px;} + +} + +@media screen and (max-width: 428px) { + .topmenu {display: none;} + .login-form {width:90%;} + .captcha input {min-width:20%;} +} \ No newline at end of file diff --git a/admin/css/style.css b/admin/css/style.css new file mode 100644 index 0000000..d52dff1 --- /dev/null +++ b/admin/css/style.css @@ -0,0 +1,2668 @@ +/* Paste admin style.css unminified */ + +body { + background: #f5f5f5; + color: #58666e; + margin: 0; + line-height: 1.7em; + font-size: 13px; + font-family: 'Open-Sans', sans-serif; + outline: 0; + text-Shadow: 0 0 1px rgba(0, 0, 0, 0.2) +} +::-moz-selection { + background: #D5EAFF +} +::selection { + background: #D5EAFF +} +a { + color: #399bff; + text-decoration: none +} +a:hover, +a:focus { + text-decoration: none +} +b, +strong { + font-weight: 600 +} +.col-xs-1, +.col-sm-1, +.col-md-1, +.col-lg-1, +.col-xs-2, +.col-sm-2, +.col-md-2, +.col-lg-2, +.col-xs-3, +.col-sm-3, +.col-md-3, +.col-lg-3, +.col-xs-4, +.col-sm-4, +.col-md-4, +.col-lg-4, +.col-xs-5, +.col-sm-5, +.col-md-5, +.col-lg-5, +.col-xs-6, +.col-sm-6, +.col-md-6, +.col-lg-6, +.col-xs-7, +.col-sm-7, +.col-md-7, +.col-lg-7, +.col-xs-8, +.col-sm-8, +.col-md-8, +.col-lg-8, +.col-xs-9, +.col-sm-9, +.col-md-9, +.col-lg-9, +.col-xs-10, +.col-sm-10, +.col-md-10, +.col-lg-10, +.col-xs-11, +.col-sm-11, +.col-md-11, +.col-lg-11, +.col-xs-12, +.col-sm-12, +.col-md-12, +.col-lg-12 { + padding-right: 15px; + padding-left: 15px +} +.row { + margin-right: -15px; + margin-left: -15px +} +.container-widget .col-xs-1, +.container-widget .col-sm-1, +.container-widget .col-md-1, +.container-widget .col-lg-1, +.container-widget .col-xs-2, +.container-widget .col-sm-2, +.container-widget .col-md-2, +.container-widget .col-lg-2, +.container-widget .col-xs-3, +.container-widget .col-sm-3, +.container-widget .col-md-3, +.container-widget .col-lg-3, +.container-widget .col-xs-4, +.container-widget .col-sm-4, +.container-widget .col-md-4, +.container-widget .col-lg-4, +.container-widget .col-xs-5, +.container-widget .col-sm-5, +.container-widget .col-md-5, +.container-widget .col-lg-5, +.container-widget .col-xs-6, +.container-widget .col-sm-6, +.container-widget .col-md-6, +.container-widget .col-lg-6, +.container-widget .col-xs-7, +.container-widget .col-sm-7, +.container-widget .col-md-7, +.container-widget .col-lg-7, +.container-widget .col-xs-8, +.container-widget .col-sm-8, +.container-widget .col-md-8, +.container-widget .col-lg-8, +.container-widget .col-xs-9, +.container-widget .col-sm-9, +.container-widget .col-md-9, +.container-widget .col-lg-9, +.container-widget .col-xs-10, +.container-widget .col-sm-10, +.container-widget .col-md-10, +.container-widget .col-lg-10, +.container-widget .col-xs-11, +.container-widget .col-sm-11, +.container-widget .col-md-11, +.container-widget .col-lg-11, +.container-widget .col-xs-12, +.container-widget .col-sm-12, +.container-widget .col-md-12, +.container-widget .col-lg-12 { + padding-right: 5px; + padding-left: 5px +} +.container-widget .row { + margin-right: -5px; + margin-left: -5px +} +.container-widget .panel { + margin-bottom: 10px +} +.container-widget .widget { + margin-bottom: 10px +} +.container-default { + padding: 0 +} +.container-widget { + padding: 0; + margin-left: -5px; + margin-right: -5px +} +.container-padding { + padding-left: 20px; + padding-right: 20px +} +.container-no-padding { + padding: 0px; + margin: -20px -30px 0 -30px +} +#top { + height: 50px; + background: #399bff; + color: #fff; + width: 100%; + position: fixed; + z-index: 900; + top: 0 +} +.applogo { + width: auto; + max-width: 250px; + height: 50px; + color: #fff; + position: relative; + padding: 13px 0 0 0px; + margin-left: 50px; + float: left; + text-align: left +} +.applogo .logo { + color: #eee; + font-size: 35px; + font-family: 'Open-Sans', sans-serif +} +.searchform { + width: 220px; + margin: 0 20px; + float: left; + padding-top: 10px; + position: relative +} +.searchbox { + border-radius: 999px; + border: none; + height: 32px; + width: 220px; + padding-left: 20px; + padding-right: 36px; + background: rgba(255, 255, 255, 0.95); + color: #37363e; + box-shadow: inset none +} +.searchbox:focus { + background: #fff; + box-shadow: none; + border-top: none +} +.searchbutton { + border: none; + color: rgba(0, 0, 0, 0.5); + background: none; + position: absolute; + top: 18px; + font-size: 16px; + right: 15px +} +.topmenu { + float: left; + padding-top: 4px; + padding-left: 0; + font-weight: 600; +} +.topmenu .link { + display: inline-block; + padding-left: 8px; + height: 25px +} +.topmenu .link a { + display: block +} +.topmenu .pastebutton { + color: #FFFFFF; +} +.topmenu .pastebutton:hover { + color: #404B5F; +} +.topmenu a { + color: rgba(255, 255, 255, 0.9); + padding: 7px +} +.topmenu a:hover { + color: #fff +} +.topmenu li { + display: inline +} +.top-right { + line-height: 1.8em; + float: right; + padding-right: 50px; + padding-left: 10px; + padding-top: 14px; + font-weight: 600 +} +.top-right .link { + display: inline-block; + padding-left: 8px; + height: 30px +} +.top-right .link a { + display: block +} +.top-right .dropdown-menu { + min-width: 135px +} +.top-right .dropdown-menu .list-title { + text-align: center +} +.top-right .dropdown-menu li { + position: relative; + display: block +} +.top-right a { + color: #fff +} +.top-right .profilebox { + color: rgba(255, 255, 255, 0.95) +} +.top-right .profilebox img { + width: 32px; + height: 31px; + float: left; + border-radius: 100%; + margin-right: 7px; + margin-top: -4px +} +.top-right .profilebox .caret { + margin-left: 5px; + color: rgba(255, 255, 255, 0.5) +} +.top-right .profilebox:hover { + color: #fff +} +.top-right .pastebutton { + background: #fff; + color: #404B5F; + padding: 4px 16px; + border-radius: 999px +} +.top-right .pastebutton:hover { + background: rgba(255, 255, 255, 0.95) +} +.guestmsg .text { + font-size: 14px; + color: #fff; + line-height: 1.6em; + font-weight: 300; +} +.guestmsg .text-body { + font-size: 12px; + color: #fff; + opacity: 0.8; +} +.guestmsg .text-body a { + color: #fff; +} +.content { + padding-left: 30px; + padding-right: 30px; + padding-top: 60px; + background: #f5f5f5 +} +.footer { + border-top: 1px solid #e2e2e2; + margin-left: -30px; + margin-right: -30px; + margin-bottom: 0; + padding: 10px; + font-size: 11px; + color: #666; + background: #f5f5f5 +} +.footer .col-md-6 { + margin-bottom: 0 +} +.page-header { + background: #fff; + margin: -20px -30px 20px -30px; + padding: 20px; + border-bottom: none; + position: relative +} +.page-header .title { + padding: 0; + margin: 0; + font-family: 'Open-Sans', sans-serif; + font-size: 20px; + line-height: normal; + font-weight: normal; + color: #37363e; + padding-bottom: 6px +} +.page-header .right { + position: absolute; + right: 20px; + bottom: 20px; + min-width: 500px; + text-align: right +} +.page-header .right .btn-group { + float: right +} +.page-header .right .btn { + padding-left: 14px; + padding-right: 14px; + font-size: 13px +} +.page-header .right .btn .fa { + margin: 0 4px +} +.page-header .right .btn .no-border { + border: none +} +.page-header .right .btn-group .btn { + border: 1px solid #E8EBED +} +.page-header .pagination { + margin: 0 +} +.page-header .widget-inline-list { + right: 0; + bottom: -25px; + position: relative !important +} +.fa-item { + padding: 6px 0; + position: relative; + padding-left: 50px; + font-size: 13px; + color: #37363e; + border-radius: 3px; + border: 5px solid #fff +} +.fa-item .fa { + position: absolute; + left: 10px; + font-size: 20px; + color: #444; + display: block; + width: 40px; + text-align: center +} +.fa-item:hover { + color: #000; + background: #f2f2f2; + border-color: #f2f2f2 +} +#paste { + line-height:1 +} +#paste li { + padding:1px +} + +.paste-alert { + color: #fff; + position: relative; + border-radius: 3px; + text-align: left; + margin-bottom: 10px; + padding: 12px; + padding-right: 30px +} +.paste-alert a { + color: inherit; + text-decoration: underline; + font-weight: 600 +} +.paste-alert h4 { + font-size: 14px; + margin: 0; + color: inherit; + font-weight: 600; + line-height: normal +} +.paste-alert .img { + width: 40px; + height: 40px; + position: absolute; + border-radius: 3px; + left: 12px; + top: 12px +} +.paste-alert-img { + padding-left: 65px; + min-height: 64px +} +.paste-alert-icon { + padding-left: 40px +} +.paste-alert-icon .fa { + display: block; + width: 20px; + text-align: center; + position: absolute; + font-size: 15px; + left: 12px; + top: 17px +} +.paste-alert .closed { + position: absolute; + right: 3px; + text-decoration: none; + font-weight: bold; + top: 0px; + font-size: 20px; + color: rgba(255, 255, 255, 0.5); + padding: 4px +} +.paste-alert .closed:hover { + color: #fff +} +.paste-alert-click { + cursor: pointer; + padding-right: 12px +} +.paste-alert .primary { + outline: 0; + border: none; + background: rgba(0, 0, 0, 0.4); + color: inherit; + border-radius: 3px; + padding: 4px 10px +} +.paste-alert .cancel { + outline: 0; + border: none; + background: rgba(255, 255, 255, 0.4); + color: rgba(0, 0, 0, 0.8); + border-radius: 3px; + padding: 4px 10px +} +.paste-alert .primary:hover, +.paste-alert .cancel:hover { + opacity: 0.9 +} +.paste-alert-top, +.paste-alert-bottom, +.paste-alert-top-left, +.paste-alert-top-right, +.paste-alert-bottom-left, +.paste-alert-bottom-right, +.paste-alert-fullscreen { + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.1); + position: fixed; + display: none; + z-index: 1000 +} +.paste-alert-top { + top: 0; + left: 0; + right: 0 +} +.paste-alert-bottom { + bottom: 0; + left: 0; + right: 0 +} +.paste-alert-top-left { + top: 80px; + left: 20px +} +.paste-alert-top-right { + top: 80px; + right: 20px +} +.paste-alert-bottom-left { + bottom: 20px; + left: 20px +} +.paste-alert-bottom-right { + bottom: 20px; + right: 20px +} +.paste-alert-fullsize { + top: 50%; + left: 50%; + margin: -20px +} +.alert1 { + background: #399bff +} +.alert2 { + background: #33577b +} +.alert3 { + background: #26a65b +} +.alert4 { + background: #51b7a3 +} +.alert5 { + background: #f39c12 +} +.alert6 { + background: #ef4836 +} +.alert7 { + background: #9a80b9 +} +.alert8 { + background: #a2ded0; + color: #444 +} +.alert8 .closed { + color: inherit +} +.alert8 a:hover.closed { + color: inherit +} +.alert9 { + background: #d2527f +} +.alert10 { + background: #c78568 +} +.alert11 { + background: #e99844 +} +.alert1-light { + background: #d2e8ff; + color: #00356c +} +.alert2-light { + background: #7ea3c9; + color: #152433 +} +.alert3-light { + background: #83e3aa; + color: #13532e +} +.alert4-light { + background: #bde4dc; + color: #2f7365 +} +.alert5-light { + background: #fad9a4; + color: #976008 +} +.alert6-light { + background: #fac9c4; + color: #b11e0e +} +.alert7-light { + background: #e8e3ef; + color: #674b88 +} +.alert8-light { + background: #edf9f6; + color: #2f8571 +} +.alert9-light { + background: #f2cbd9; + color: #97274e +} +.alert10-light { + background: #f0dfd8; + color: #935336 +} +.alert11-light { + background: #f9e3cd; + color: #b26515 +} +.alert1-light .closed, +.alert2-light .closed, +.alert3-light .closed, +.alert4-light .closed, +.alert5-light .closed, +.alert6-light .closed, +.alert7-light .closed, +.alert8-light .closed, +.alert9-light .closed, +.alert10-light .closed, +.alert11-light .closed { + color: inherit; + opacity: 0.6 +} +.alert1-light .closed:hover { + color: inherit; + opacity: 0.8 +} +.changelogs .version { + font-size: 13px; + font-family: 'Open-Sans', sans-serif +} +.changelogs .date { + font-size: 12px; + position: absolute; + right: 20px; + top: 20px +} +.changelogs .update { + position: relative; + background: #fff; + padding: 20px; + border: 1px solid #e4e4e4; + border-radius: 3px; + margin-bottom: 20px +} +.changelogs .list { + font-size: 12px; + margin-top: 10px; + background: #f2f2f2; + padding: 6px 10px; + border-radius: 3px; + border-left: 2px solid #ccc +} +.changelogs .list h4 { + margin: 0px; + font-size: 14px +} +.changelogs .list:hover { + background: #eee +} +.login-form { + width: 360px; + padding-top: 100px; + margin: 0px auto; + text-shadow: none +} +.login-form form { + background: #fff; + border: 1px solid #ddd; + border-radius: 3px +} +.login-form form img { + margin-bottom: 18px +} +.login-form form .profile { + border-radius: 999px +} +.login-form form .top { + border-bottom: 1px solid #ddd; + text-align: center; + padding: 30px 0 +} +.login-form form .top .icon { + width: 100px; + height: 100px +} +.login-form form .top h1, +.login-form form .top h4 { + margin: 0 +} +.login-form form .top h1 { + color: #37363E; + font-size: 30px; + font-family: 'Open-Sans', sans-serif; + font-weight: bold; + margin-top: -14px +} +.login-form form .top h4 { + font-weight: normal; + color: #76757B; + font-size: 15px +} +.login-form form .form-area { + padding: 40px +} +.login-form form .form-area .group { + position: relative; + margin-bottom: 20px +} +.login-form form .form-area .form-control { + padding-left: 38px; + height: 40px +} +.login-form form .form-area .fa { + position: absolute; + top: 11px; + left: 13px; + font-size: 16px; + color: #C3C3C3 +} +.login-form form .form-area .btn { + height: 42px; + font-weight: 600 +} +.login-form form .form-area .checkbox { + margin-bottom: 20px +} +.login-form .footer-links { + color: #76757B; + padding: 10px 5px +} +.login-form .footer-links a { + color: #76757B +} +.login-form .footer-links a:hover { + color: #37363e +} +.error-pages { + text-align: center; + padding-top: 100px +} +.error-pages .icon { + border-radius: 4px; + margin-bottom: 20px +} +.error-pages h1 { + color: #37363e; + font-family: 'Open-Sans', sans-serif; + font-size: 28px +} +.error-pages h4 { + color: #767279; + font-weight: normal; + font-size: 16px; + margin-top: 10px +} +.error-pages form { + width: 400px; + margin: 0px auto; + margin-top: 30px; + position: relative +} +.error-pages form .form-control { + padding-left: 34px; + height: 40px +} +.error-pages form .fa { + position: absolute; + left: 10px; + top: 11px; + font-size: 16px +} +.error-pages .bottom-links { + margin-top: 30px +} +.error-pages .bottom-links a { + margin: 0px 6px +} +.checkbox-primary input[type="checkbox"]:checked+label::before { + background-color: #399bff; + border-color: #399bff +} +.checkbox-primary input[type="checkbox"]:checked+label::after { + color: #fff +} +.checkbox-danger input[type="checkbox"]:checked+label::before { + background-color: #ef4836; + border-color: #ef4836 +} +.checkbox-danger input[type="checkbox"]:checked+label::after { + color: #fff +} +.checkbox-info input[type="checkbox"]:checked+label::before { + background-color: #51b7a3; + border-color: #51b7a3 +} +.checkbox-info input[type="checkbox"]:checked+label::after { + color: #fff +} +.checkbox-warning input[type="checkbox"]:checked+label::before { + background-color: #f39c12; + border-color: #f39c12 +} +.checkbox-warning input[type="checkbox"]:checked+label::after { + color: #fff +} +.checkbox-success input[type="checkbox"]:checked+label::before { + background-color: #26a65b; + border-color: #26a65b +} +.checkbox-success input[type="checkbox"]:checked+label::after { + color: #fff +} +.radio-primary input[type="radio"]+label::after { + background-color: #399bff +} +.radio-primary input[type="radio"]:checked+label::before { + border-color: #399bff +} +.radio-primary input[type="radio"]:checked+label::after { + background-color: #399bff +} +.radio-danger input[type="radio"]+label::after { + background-color: #ef4836 +} +.radio-danger input[type="radio"]:checked+label::before { + border-color: #ef4836 +} +.radio-danger input[type="radio"]:checked+label::after { + background-color: #ef4836 +} +.radio-info input[type="radio"]+label::after { + background-color: #51b7a3 +} +.radio-info input[type="radio"]:checked+label::before { + border-color: #51b7a3 +} +.radio-info input[type="radio"]:checked+label::after { + background-color: #51b7a3 +} +.radio-warning input[type="radio"]+label::after { + background-color: #f39c12 +} +.radio-warning input[type="radio"]:checked+label::before { + border-color: #f39c12 +} +.radio-warning input[type="radio"]:checked+label::after { + background-color: #f39c12 +} +.radio-success input[type="radio"]+label::after { + background-color: #26a65b +} +.radio-success input[type="radio"]:checked+label::before { + border-color: #26a65b +} +.radio-success input[type="radio"]:checked+label::after { + background-color: #26a65b +} +a:focus, +input, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus, +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: 0px +} +mark { + background: #FBDDAC; + padding: 2px 4px; + border-radius: 3px +} +code { + background: #EDF6FF; + padding: 2px 2px; + color: #000; + border: 1px solid #C3E1FF +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 400; + line-height: 1.6; + color: #37363e +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; + letter-spacing: -0.02em +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 15px; + margin-bottom: 10px +} +h1, +.h1 { + font-size: 2.25em +} +h2, +.h2 { + font-size: 2em +} +h3, +.h3 { + font-size: 1.75em +} +h4, +.h4 { + font-size: 1.5em +} +h5, +.h5 { + font-size: 1.25em +} +h6, +.h6 { + font-size: 1em +} +.text-st { + color: #666 +} +.lead { + line-height: 1.7em +} +blockquote { + background: #f2f2f2; + padding: 16px 20px; + border-radius: 3px; + border-left: 5px solid #ccc +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: inherit; + opacity: 0.6 +} +.blockquote-reverse, +blockquote.pull-right { + border-right: 5px solid #ccc +} +dt, +dd { + line-height: inherit +} +.font-title { + font-family: 'Open-Sans', sans-serif +} +.font-w-300 { + font-weight: 300 +} +.font-w-400 { + font-weight: 400 +} +.font-w-600 { + font-weight: 600 +} +.font-w-700 { + font-weight: 700 +} +.font-w-800 { + font-weight: 800 +} +.font-title-tab { + font-family: 'Open-Sans', sans-serif; + text-transform: uppercase; + font-weight: bold; + font-size: 12px +} +.btn { + font-size: 14px; + padding: 7px 20px 7px 20px; + border: none; + background: #e4e4e4; + color: inherit; + border-radius: 3px +} +.btn:hover { + background-color: #eee; + color: #666 +} +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: none; + box-shadow: none +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65 +} +.btn-xs { + font-size: 11px; + padding: 3px 8px +} +.btn-sm { + font-size: 12px; + padding: 5px 14px +} +.btn-lg { + font-size: 16px; + padding: 10px 30px +} +.btn-xl { + font-size: 20px; + padding: 14px 30px +} +.btn .fa { + font-size: 15px; + margin-right: 5px +} +.btn-icon { + padding-left: 10px; + padding-right: 10px +} +.btn-icon .fa { + margin: 0; + font-size: normal +} +.btn-rounded { + border-radius: 999px +} +.btn-square { + border-radius: 0 +} +.btndiv .btn { + margin-bottom: 10px +} +.btn-default { + background-color: #399bff; + color: #fff +} +.btn-default:hover, +.btn-default:focus, +.btn-default.focus, +.btn-default:active, +.btn-default.active, +.open>.dropdown-toggle.btn-default { + background-color: #4da5ff; + color: #fff +} +.btn-default:active, +.btn-default.active, +.open>.dropdown-toggle.btn-default { + background: #208eff; + box-shadow: none; + color: #fff +} +.btn-default .badge { + color: #399bff; + background-color: #fff +} +.btn-primary { + background-color: #33577b; + color: #fff +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary.focus, +.btn-primary:active, +.btn-primary.active, +.open>.dropdown-toggle.btn-primary { + background-color: #396189; + color: #fff +} +.btn-primary:active, +.btn-primary.active, +.open>.dropdown-toggle.btn-primary { + background: #2c4a69; + box-shadow: none; + color: #fff +} +.btn-primary .badge { + color: #33577b; + background-color: #fff +} +.btn-white { + background-color: #e4e4e4; + color: #666 +} +.btn-white:hover, +.btn-white:focus, +.btn-white.focus, +.btn-white:active, +.btn-white.active, +.open>.dropdown-toggle.btn-white { + background-color: #eee; + color: #666 +} +.btn-white:active, +.btn-white.active, +.open>.dropdown-toggle.btn-white { + background: #d7d7d7; + box-shadow: none; + color: #666 +} +.btn-white .badge { + color: #e4e4e4; + background-color: #fff +} +.btn-toggle { + background-color: #e4e4e4; + color: #666; + border-size: 4px; + border-size: 5px +} +.btn-toggle:hover, +.btn-toggle:focus, +.btn-toggle.focus, +.btn-toggle:active, +.btn-toggle.active, +.open>.dropdown-toggle.btn-toggle { + background-color: #eee; + color: #666 +} +.btn-toggle:active, +.btn-toggle.active, +.open>.dropdown-toggle.btn-toggle { + background: #d7d7d7; + box-shadow: none; + color: #666 +} +.btn-toggle .badge { + color: #e4e4e4; + background-color: #fff +} +.btn-light { + background-color: #fff; + color: inherit; + border: 1px solid #BDC4C9 +} +.btn-light:hover, +.btn-light:focus, +.btn-light.focus, +.btn-light:active, +.btn-light.active, +.open>.dropdown-toggle.btn-light { + background-color: #f9f9f9; + color: inherit +} +.btn-light:active, +.btn-light.active, +.open>.dropdown-toggle.btn-default { + box-shadow: none; + color: inherit +} +.btn-success { + background-color: #26a65b; + color: #fff +} +.btn-success:hover, +.btn-success:focus, +.btn-success.focus, +.btn-success:active, +.btn-success.active, +.open>.dropdown-toggle.btn-success { + background-color: #2ab764; + color: #fff +} +.btn-success:active, +.btn-success.active, +.open>.dropdown-toggle.btn-success { + background: #219150; + box-shadow: none; + color: #fff +} +.btn-success .badge { + color: #26a65b; + background-color: #fff +} +.btn-info { + background-color: #51b7a3; + color: #fff +} +.btn-info:hover, +.btn-info:focus, +.btn-info.focus, +.btn-info:active, +.btn-info.active, +.open>.dropdown-toggle.btn-info { + background-color: #5fbdab; + color: #fff +} +.btn-info:active, +.btn-info.active, +.open>.dropdown-toggle.btn-info { + background: #46a995; + box-shadow: none; + color: #fff +} +.btn-info .badge { + color: #51b7a3; + background-color: #fff +} +.btn-warning { + background-color: #f39c12; + color: #fff +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning.focus, +.btn-warning:active, +.btn-warning.active, +.open>.dropdown-toggle.btn-warning { + background-color: #f4a425; + color: #fff +} +.btn-warning:active, +.btn-warning.active, +.open>.dropdown-toggle.btn-warning { + background: #e08e0b; + box-shadow: none; + color: #fff +} +.btn-warning .badge { + color: #f39c12; + background-color: #fff +} +.btn-danger { + background-color: #ef4836; + color: #fff +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger.focus, +.btn-danger:active, +.btn-danger.active, +.open>.dropdown-toggle.btn-danger { + background-color: #f15949; + color: #fff +} +.btn-danger:active, +.btn-danger.active, +.open>.dropdown-toggle.btn-danger { + background: #ed321e; + box-shadow: none; + color: #fff +} +.btn-danger .badge { + color: #ef4836; + background-color: #fff +} +.btn-option1 { + background-color: #9a80b9; + color: #fff +} +.btn-option1:hover, +.btn-option1:focus, +.btn-option1.focus, +.btn-option1:active, +.btn-option1.active, +.open>.dropdown-toggle.btn-option1 { + background-color: #a48dc0; + color: #fff +} +.btn-option1:active, +.btn-option1.active, +.open>.dropdown-toggle.btn-option1 { + background: #8d70b0; + box-shadow: none; + color: #fff +} +.btn-option1 .badge { + color: #9a80b9; + background-color: #fff +} +.btn-option2 { + background-color: #a2ded0; + color: #333 +} +.btn-option2:hover, +.btn-option2:focus, +.btn-option2.focus, +.btn-option2:active, +.btn-option2.active, +.open>.dropdown-toggle.btn-option2 { + background-color: #b1e3d8; + color: #333 +} +.btn-option2:active, +.btn-option2.active, +.open>.dropdown-toggle.btn-option2 { + background: #8fd7c6; + box-shadow: none; + color: #333 +} +.btn-option2 .badge { + color: #a2ded0; + background-color: #fff +} +.btn-option3 { + background-color: #d2527f; + color: #fff +} +.btn-option3:hover, +.btn-option3:focus, +.btn-option3.focus, +.btn-option3:active, +.btn-option3.active, +.open>.dropdown-toggle.btn-option3 { + background-color: #d6628b; + color: #fff +} +.btn-option3:active, +.btn-option3.active, +.open>.dropdown-toggle.btn-option3 { + background: #cd3e70; + box-shadow: none; + color: #fff +} +.btn-option3 .badge { + color: #d2527f; + background-color: #fff +} +.btn-option4 { + background-color: #c78568; + color: #fff +} +.btn-option4:hover, +.btn-option4:focus, +.btn-option4.focus, +.btn-option4:active, +.btn-option4.active, +.open>.dropdown-toggle.btn-option4 { + background-color: #cd9177; + color: #fff +} +.btn-option4:active, +.btn-option4.active, +.open>.dropdown-toggle.btn-option4 { + background: #c07655; + box-shadow: none; + color: #fff +} +.btn-option4 .badge { + color: #c78568; + background-color: #fff +} +.btn-option5 { + background-color: #e99844; + color: #fff +} +.btn-option5:hover, +.btn-option5:focus, +.btn-option5.focus, +.btn-option5:active, +.btn-option5.active, +.open>.dropdown-toggle.btn-option4 { + background-color: #eba256; + color: #fff +} +.btn-option5:active, +.btn-option5.active, +.open>.dropdown-toggle.btn-option5 { + background: #e68b2d; + box-shadow: none; + color: #fff +} +.btn-option5 .badge { + color: #e99844; + background-color: #fff +} +.label { + font-size: inherit; + padding: 1px 6px; + font-weight: 600; + border-radius: 4px +} +.label-default { + background: #399bff +} +.label-primary { + background: #33577b +} +.label-success { + background: #26a65b +} +.label-info { + background: #51b7a3 +} +.label-warning { + background: #f39c12 +} +.label-danger { + background: #ef4836 +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #26a65b +} +.has-success .form-control { + border-color: #26a65b; + box-shadow: none +} +.has-success .form-control:focus { + border-color: #26a65b; + box-shadow: none +} +.has-success .input-group-addon { + color: #26a65b; + background-color: #26a65b; + border-color: #26a65b +} +.has-success .form-control-feedback { + color: #26a65b +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #f39c12 +} +.has-warning .form-control { + border-color: #f39c12; + box-shadow: none +} +.has-warning .form-control:focus { + border-color: #f39c12; + box-shadow: none +} +.has-warning .input-group-addon { + color: #f39c12; + background-color: #f39c12; + border-color: #f39c12 +} +.has-warning .form-control-feedback { + color: #f39c12 +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #ef4836 +} +.has-error .form-control { + border-color: #ef4836; + box-shadow: none +} +.has-error .form-control:focus { + border-color: #ef4836; + box-shadow: none +} +.has-error .input-group-addon { + color: #ef4836; + background-color: #ef4836; + border-color: #ef4836 +} +.has-error .form-control-feedback { + color: #ef4836 +} +input, +select { + height: 34px; + border-radius: 3px; + padding-left: 10px; + font-size: 14px; + background: #fff; + border: 1px solid #BDC4C9; + box-shadow: inset 0px 1px 0px #F1F0F1 +} +.form-control { + height: 34px; + border-radius: 3px; + padding-left: 10px; + font-size: 14px; + background: #fff; + border: 1px solid #BDC4C9; + display: block; + box-shadow: inset 0px 1px 0px #F1F0F1 +} +.form-control:focus { + background: #f7f7f7; + border-color: #BDC4C9; + box-shadow: none; + border-top: 1px solid #B7B7B7 +} +.form-label { + font-weight: 500 +} +.fieldset-form fieldset { + padding: 20px; + margin: 0 2px; + border-radius: 3px; + border: 1px solid #ccc; + padding-top: 10px +} +.fieldset-form legend { + width: auto; + padding: 0px 10px; + margin-bottom: 20px; + font-size: 16px; + line-height: inherit; + color: #333; + border: 0; + font-weight: 600; + border-bottom: none +} +.form-control-line { + border-left: 0; + border-top: 0; + border-right: 0; + padding-left: 0; + border-radius: 0; + box-shadow: none +} +.form-control-line:focus { + border-top: 0; + background: none; + border-color: #666 +} +.form-control-radius { + border-radius: 999px +} +.form-group { + margin-bottom: 18px +} +.form-inline label { + margin-right: 5px +} +.form-inline .checkbox-inline, +.form-inline .radio-inline { + padding-left: 0; + margin-right: 5px +} +.form-inline .checkbox-inline label, +.form-inline .radio-inline label { + padding-left: 5px +} +.form-inline .form-group { + padding-right: 10px +} +.input-group-addon { + background: #f7f7f7; + border-color: #BDC4C9; + font-weight: 600; + padding-left: 17px; + padding-right: 17px +} +.input-sm { + height: 30px; + font-size: 12px; + line-height: 1.5 +} +.input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 3px +} +.breadcrumb { + background: none; + padding: 0; + margin: 0; + font-weight: 600 +} +.breadcrumb .active { + font-weight: normal; + color: #999 +} +.dropdown-menu { + min-width: 100px; + font-size: inherit; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.09); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.09) +} +.dropdown-header { + font-weight: normal; + text-transform: uppercase; + font-size: 10px; + padding-left: 15px; + font-family: 'Open-Sans', sans-serif; + padding-top: 5px +} +.dropdown-menu li { + position: relative +} +.dropdown-menu>li>a { + padding: 9px 20px; + color: #3D464D +} +.dropdown-menu .divider { + margin: 4px 0 +} +.dropdown-menu-list li a { + padding-left: 40px +} +.dropdown-menu-list .badge { + right: 20px; + font-weight: normal; + margin-left: 5px; + padding: 2px 6px; + font-size: 11px +} +.dropdown-menu-list .falist { + position: absolute; + left: 15px; + top: 11px; + font-size: 15px +} +.dropdown-menu a { + cursor: pointer +} +.tab-content { + background: #fff; + padding: 20px +} +.nav-tabs { + border-bottom: none; + background: #E9E9E9; + padding: 0 +} +.nav-tabs>li { + float: left; + margin-bottom: -1px; + margin-right: -2px +} +.nav-tabs>li>a { + margin-right: 2px; + line-height: 1.42857143; + color: inherit; + border: none; + border-radius: 0 +} +.nav-tabs>li>a:hover { + border-color: none; + background: rgba(0, 0, 0, 0.1) +} +.nav-tabs>li.active>a, +.nav-tabs>li.active>a:hover, +.nav-tabs>li.active>a:focus { + color: #555; + cursor: default; + background-color: #fff; + border: none; + border-bottom-color: transparent +} +.nav-pills { + padding-bottom: 10px +} +.nav-pills>li { + float: left +} +.nav-pills>li>a { + border-radius: 3px; + padding: 4px 10px +} +.nav-pills>li+li { + margin-left: 2px +} +.nav-pills>li.active>a, +.nav-pills>li.active>a:hover, +.nav-pills>li.active>a:focus { + color: #fff; + background-color: #399bff +} +.nav-stacked li { + width: 100%; + display: block +} +.nav-justified { + padding: 0; + margin-bottom: -1px; + border-bottom: none +} +@media (min-width: 768px) { + .nav-tabs.nav-justified>li>a { + margin-bottom: 0 + } +} +.nav-tabs.nav-justified>li>a { + border-radius: 0px +} +.nav-tabs.nav-justified>.active>a, +.nav-tabs.nav-justified>.active>a:hover, +.nav-tabs.nav-justified>.active>a:focus { + border: none +} +@media (min-width: 768px) { + .nav-tabs.nav-justified>li>a { + border-bottom: 1px solid #fff; + border-radius: none + } +} +.nav-line { + border-bottom: none; + background: none; + padding: 0 +} +.nav-line>li { + float: left; + margin-bottom: -1px +} +.nav-line>li>a:hover { + border-color: none; + background: none; + border-bottom: 3px solid #e4e4e4; + color: #37363e +} +.nav-line>li.active>a, +.nav-line>li.active>a:hover, +.nav-line>li.active>a:focus { + color: inherit; + cursor: default; + background-color: transparent; + border-bottom: 3px solid #399bff +} +.nav-icon .fa { + font-size: 16px; + color: inherit +} +.nav-pills>li>a { + border-radius: 3px; + padding: 4px 14px +} +.tabs-left>.nav-tabs>li, +.tabs-right>.nav-tabs>li { + float: none; + margin: 0 +} +.tabs-left>.nav-tabs>li>a, +.tabs-right>.nav-tabs>li>a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px +} +.tabs-left>.nav-tabs { + float: left; + margin-right: 29px +} +.tabs-right>.nav-tabs { + float: right; + margin-left: 29px; + text-align: right +} +.tabcolor5-bg li a, +.tabcolor6-bg li a, +.tabcolor7-bg li a, +.tabcolor8-bg li a, +.tabcolor9-bg li a, +.tabcolor10-bg li a { + color: #fff +} +.tabcolor5-bg { + background: #399bff +} +.tabcolor6-bg { + background: #33577b +} +.tabcolor7-bg { + background: #26a65b +} +.tabcolor8-bg { + background: #51b7a3 +} +.tabcolor9-bg { + background: #f39c12 +} +.tabcolor10-bg { + background: #ef4836 +} +.panel { + box-shadow: none; + border: 1px solid #e5e5e5; + background: #fff; + padding: 20px; + margin-bottom: 20px; + position: relative +} +.panel-footer { + margin: -20px; + margin-top: 20px; + background: #f9f9f9 +} +.panel-transparent { + background: none; + border: none +} +.panel-transparent .panel-title { + background: none; + border: none +} +.panel-default>.panel-heading { + background-color: inherit; + border-bottom: 0; + color: #3D464D +} +.panel-title { + font-family: 'Open-Sans', sans-serif; + color: #58666e; + font-size: 13px; + font-weight: bold; + text-transform: uppercase; + padding: 16px 20px; + margin: -20px; + background: #fff; + margin-bottom: 5px; + border-bottom: none; + border-top-left-radius: 3px; + border-top-right-radius: 3px +} +.panel-body, +.panel-heading { + padding: 0; + color: inherit; + background-color: transparent; + border-color: none +} +.panel-heading { + background: transparent; + border-bottom: transparent +} +.panel .badge { + font-size: 11px; + font-family: 'Open-Sans', sans-serif; + text-transform: none; + padding: 4px 10px; + margin-left: 5px; + font-weight: normal +} +.panel-footer { + background: rgba(0, 0, 0, 0.01); + border-top: 1px solid inherit +} +.panel-title .badge { + color: #fff; + background-color: rgba(0, 0, 0, 0.2) +} +.panel-heading { + font-size: 20px; + padding-bottom: 15px; + font-weight: 300 +} +.panel .list-group { + margin: -20px; + margin-top: 20px; + background: transparent +} +.panel .list-group li { + border: 1px solid rgba(255, 255, 255, 0.2); + border-left: 0; + background: transparent; + border-right: 0 +} +.panel .list-group-item:first-child { + border-top-left-radius: 0px; + border-top-right-radius: 0px +} +.panel .list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; + border-bottom: 0 +} +.panel-collapse { + padding-bottom: 0 +} +.panel-collapse .panel-title { + padding-bottom: 0; + margin-bottom: 0 +} +.panel-collapse .panel-body { + padding: 10px 0 20px 0 +} +.panel-widget { + overflow: hidden; +} +.panel-default { + border-color: #ddd +} +.panel-default .badge { + color: inherit; + background-color: rgba(0, 0, 0, 0.2) +} +.panel-default .list-group { + margin: -20px; + margin-top: 20px +} +.panel-default .list-group li { + border: 1px solid #ddd; + border-left: 0; + border-right: 0 +} +.panel-default .list-group-item:first-child { + border-top-left-radius: 0px; + border-top-right-radius: 0px +} +.panel-default .list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; + border-bottom: 0 +} +.panel-primary { + border-color: #399bff; + background: #399bff; + color: #fff +} +.panel-primary>.panel-heading { + color: inherit; + background: transparent; + border-bottom: transparent +} +.panel-primary>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #399bff +} +.panel-primary .panel-title { + color: #fff; + background: #399bff; + border-bottom: 1px solid rgba(255, 255, 255, 0.1) +} +.panel-primary .panel-footer { + border-top: 1px solid rgba(255, 255, 255, 0.1); + background: rgba(255, 255, 255, 0.04) +} +.panel-primary>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #399bff +} +.panel-success { + border-color: #26a65b; + background: #26a65b; + color: #fff +} +.panel-success>.panel-heading { + color: inherit; + background: transparent; + border-bottom: transparent +} +.panel-success>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #26a65b +} +.panel-success .panel-title { + color: #fff; + background: #26a65b; + border-bottom: 1px solid rgba(255, 255, 255, 0.1) +} +.panel-success .panel-footer { + border-top: 1px solid rgba(255, 255, 255, 0.1); + background: rgba(255, 255, 255, 0.04) +} +.panel-success>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #26a65b +} +.panel-info { + border-color: #51b7a3; + background: #51b7a3; + color: #fff +} +.panel-info>.panel-heading { + color: inherit; + background: transparent; + border-bottom: transparent +} +.panel-info>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #51b7a3 +} +.panel-info .panel-title { + color: #fff; + background: #51b7a3; + border-bottom: 1px solid rgba(255, 255, 255, 0.1) +} +.panel-info .panel-footer { + border-top: 1px solid rgba(255, 255, 255, 0.1); + background: rgba(255, 255, 255, 0.04) +} +.panel-info>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #51b7a3 +} +.panel-warning { + border-color: #f39c12; + background: #f39c12; + color: #fff +} +.panel-warning>.panel-heading { + color: inherit; + background: transparent; + border-bottom: transparent +} +.panel-warning>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #f39c12 +} +.panel-warning .panel-title { + color: #fff; + background: #f39c12; + border-bottom: 1px solid rgba(255, 255, 255, 0.1) +} +.panel-warning .panel-footer { + border-top: 1px solid rgba(255, 255, 255, 0.1); + background: rgba(255, 255, 255, 0.04) +} +.panel-warning>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #f39c12 +} +.panel-danger { + border-color: #ef4836; + background: #ef4836; + color: #fff +} +.panel-danger>.panel-heading { + color: inherit; + background: transparent; + border-bottom: transparent +} +.panel-danger>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #ef4836 +} +.panel-danger .panel-title { + color: #fff; + background: #ef4836; + border-bottom: 1px solid rgba(255, 255, 255, 0.1) +} +.panel-danger .panel-footer { + border-top: 1px solid rgba(255, 255, 255, 0.1); + background: rgba(255, 255, 255, 0.04) +} +.panel-danger>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #ef4836 +} +.panel-dark { + border-color: #3d464d; + background: #3d464d; + color: #fff +} +.panel-dark>.panel-heading { + color: inherit; + background: transparent; + border-bottom: transparent +} +.panel-dark>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #3d464d +} +.panel-dark .panel-title { + color: #fff; + background: #3d464d; + border-bottom: 1px solid rgba(255, 255, 255, 0.1) +} +.panel-dark .panel-footer { + border-top: 1px solid rgba(255, 255, 255, 0.1); + background: rgba(255, 255, 255, 0.04) +} +.panel-dark>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #3d464d +} +.panel-tools { + font-family: 'Open-Sans', sans-serif; + position: absolute; + right: 16px; + top: 13px; + text-transform: none; + font-weight: 600; + font-size: inherit; + z-index: 1 +} +.panel-tools li { + display: inline-block +} +.panel-tools a { + padding: 3px 8px; + display: block; + color: inherit; + border-radius: 3px +} +.panel-tools a:hover { + color: rgba(0, 0, 0, 0.6); + background: rgba(0, 0, 0, 0.09) +} +.panel-tools .icon { + font-size: 14px; + color: rgba(0, 0, 0, 0.5); + border-radius: 3px; + cursor: pointer +} +.panel-tools .icon a { + color: rgba(0, 0, 0, 0.4) +} +.panel-tools .dropdown-menu { + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); + font-size: 13px +} +.panel-tools .dropdown-menu li { + display: list-item +} +.panel-tools .dropdown-menu a { + display: block +} +.panel-search { + margin: -20px; + padding: 15px 20px; + position: relative; + color: #333; + display: none; + background: rgba(255, 255, 255, 0.1); + margin-bottom: 20px; + border-bottom: 1px solid rgba(0, 0, 0, 0.1) +} +.panel-search input { + background: #fff; + border-radius: 999px; + padding-left: 35px +} +.panel-search input:focus { + background: #fff +} +.panel-search .icon { + position: absolute; + left: 35px; + top: 25px +} +.panel-fullsize { + position: fixed; + width: 100%; + height: 100vh; + overflow: auto; + top: 0; + left: 0; + z-index: 9999 +} +.panel-tools-hover { + display: none +} +.panel:hover .panel-tools-hover { + display: block +} +.panel-title .titleicon { + margin-right: 10px +} +.panel-closed .panel-title { + margin-bottom: -20px +} +.panel-closed .panel-body { + display: none +} +.widget-tools { + font-family: 'Open-Sans', sans-serif; + position: absolute; + right: 15px; + top: 13px; + text-transform: none; + font-weight: 600; + font-size: inherit; + z-index: 1 +} +.widget-tools li { + display: inline-block +} +.widget-tools a { + padding: 3px 8px; + display: block; + color: inherit; + border-radius: 3px +} +.widget-tools a:hover { + color: rgba(0, 0, 0, 0.6); + background: rgba(0, 0, 0, 0.09) +} +.widget-tools .icon { + font-size: 14px; + color: rgba(0, 0, 0, 0.5); + border-radius: 3px; + cursor: pointer +} +.widget-tools .icon a { + color: rgba(0, 0, 0, 0.4) +} +.widget-tools .dropdown-menu { + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); + font-size: 13px +} +.widget-tools .dropdown-menu li { + display: list-item +} +.widget-tools .dropdown-menu a { + display: block +} +.widget-fullsize { + position: fixed; + width: 100%; + height: 100vh; + overflow: auto; + top: 0; + left: 0; + z-index: 9999 +} +.widget-tools-hover { + display: none +} +.widget:hover .widget-tools-hover { + display: block +} +.modal { + z-index: 999 +} +.modal-sm { + max-width: 400px +} +.modal-lg { + min-width: 90% +} +.modal .close { + width: 26px; + border-radius: 4px; + font-size: 23px; + background: #ccc; + color: #000; + text-shadow: none; + opacity: 0.4; + outline: 0 +} +.modal .close:hover { + opacity: 0.6 +} +.modal-title { + font-family: 'Open-Sans', sans-serif; + font-size: 16px +} +.modalicon { + background: #fff; + border-radius: 3px; + text-align: center; + height: 300px; + display: table-cell; + width: 100%; + position: relative; + vertical-align: middle; + border: 2px solid #e2e2e2 +} +.modalicon img { + border-radius: 3px +} +.modalicon:hover { + border-color: #ccc +} +.progress { + height: 18px; + background: rgba(0, 0, 0, 0.15); + box-shadow: none +} +.progress-bar { + background: #399bff; + font-size: 12px; + font-weight: 600; + line-height: normal +} +.progress-bar-success { + background: #26a65b +} +.progress-bar-info { + background: #51b7a3 +} +.progress-bar-warning { + background: #f39c12 +} +.progress-bar-danger { + background: #ef4836 +} +.progress-bar-transparent { + background: transparent; + color: inherit +} +.progress-small { + height: 9px +} +.progress-large { + height: 26px +} +.progress-extralarge { + height: 36px +} +.table { + margin: 0 +} +.table-hover>tbody>tr:hover { + background-color: #EFF7FF +} +thead { + font-weight: 600; + font-family: 'Open-Sans', sans-serif; + text-transform: uppercase; + font-size: 12px; + color: #37363e +} +thead .fa { + font-size: 16px; + margin: 0 +} +table td { + display: table-cell; + vertical-align: middle +} +.table>thead>tr>th, +.table>tbody>tr>th, +.table>tfoot>tr>th, +.table>thead>tr>td, +.table>tbody>tr>td, +.table>tfoot>tr>td { + padding: 15px; + line-height: 1.7 +} +.doc-grid { + padding: 10px 20px +} +.doc-grid div { + border: 1px solid #ccc; + text-align: center; + font-size: 16px; + padding: 20px 0; + background: #fff +} +.quick-menu { + padding: 0; + margin-bottom: 10px; + background: #fff; + font-family: 'Montserrat',sans-serif +} + +.quick-menu .label { + position: absolute; + padding: 4px 6px; + top: -10px; + right: 10px +} + +.quick-menu li { + display: block; + text-align: center; + padding: 0; + position: relative; + font-size: 13px +} + +.quick-menu li .fa { + display: block; + font-size: 28px; + margin-bottom: 5px +} + +.quick-menu a { + color: #58666e; + display: block; + padding: 18px 0; + text-shadow: none; +} + +.quick-menu a .fa { + color: #399bff +} + +.menu-active a { + background: #399bff !important; + color: #FFF !important; + margin-left:-5px; + border-radius: 3px +} + +.menu-active, .menu-active i { + color: #FFF !important +} + +.topstats { + background: #fff; + padding: 0; + color: #76747A; + position: relative; + font-size: 12px; + border-radius: 3px; + text-shadow: none; + padding: 12px 0 +} + +.topstats li { + display: block; + text-align: center; + margin: 10px 0 +} + +.topstats .title { + color: #37363e; + font-weight: 600; + font-size: 13px +} + +.topstats .title .fa { + font-size: 15px; + color: #000; + margin-right: 4px; + opacity: 0.4 +} + +.topstats h3 { + font-size: 28px; + font-weight: bold; + font-family: 'Montserrat',sans-serif; + letter-spacing: -1px; + line-height: normal; + margin: 1px 0 +} + +.topstats h3 small { + color: #37363e +} + +.topstats .diff b { + font-weight: bold +} + +.topstats .diff .fa { + margin-right: 2px +} + +.topstats .arrow { + position: absolute; + width: 0; + height: 0; + top: -18px; + right: 5px; + border-style: solid; + border-width: 0 10px 10px 10px; + border-color: transparent transparent #fff transparent +} + +.widget { + overflow: hidden; + margin-bottom: 10px; + background: #fff; + border-radius: 3px; + padding: 20px; + position: relative +} +.widget .widget-title { + color: #37363e; + font-size: 12px; + font-weight: bold; + padding: 16px 20px; + background: #fff; + margin-bottom: 5px; + border-bottom: none; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + margin: -20px; + margin-bottom: 20px +} +.widget .widget-title h5 { + font-size: 12px; + z-index: 1; + margin: 0; + color: #58666e +} +.widget .widget-title h2 { + font-family: 'Open-Sans', sans-serif; + font-size: 12px; + margin: 0; + font-weight: bold; + text-transform: uppercase +} +.widget-inline-list { + display: block; + padding-left: 0; + color: #58666e +} +.widget-inline-list li { + display: block; + float: left; + text-align: center; + padding: 15px 0 +} +.widget-inline-list li span { + font-size: 18px; + display: block; + color: inherit; + font-family: 'Open-Sans', sans-serif; + font-weight: 600 +} +.widget-inline-list .chart { + display: block; + margin-top: 5px +} +.widget-inline-list .col-1 { + width: 8.3333333% +} +.widget-inline-list .col-2 { + width: 16.666666% +} +.widget-inline-list .col-3 { + width: 25% +} +.widget-inline-list .col-4 { + width: 33.333333% +} +.widget-inline-list .col-6 { + width: 50% +} +.widget-inline-list .col-12 { + width: 100% +} +.color1 { + color: #37363e +} +.color2 { + color: #58666e +} +.color3 { + color: #e4e4e4 +} +.color4 { + color: #f5f5f5 +} +.color5 { + color: #399bff +} +.color6 { + color: #33577b +} +.color7 { + color: #26a65b +} +.color8 { + color: #51b7a3 +} +.color9 { + color: #f39c12 +} +.color10 { + color: #ef4836 +} +.color11 { + color: #9a80b9 +} +.color12 { + color: #a2ded0 +} +.color13 { + color: #d2527f +} +.color14 { + color: #c78568 +} +.color15 { + color: #e99844 +} +.color0-bg { + background: #3d464d +} +.color1-bg { + background: #37363e +} +.color2-bg { + background: #58666e +} +.color3-bg { + background: #e4e4e4 +} +.color4-bg { + background: #f5f5f5 +} +.color5-bg { + background: #399bff +} +.color6-bg { + background: #33577b +} +.color7-bg { + background: #26a65b +} +.color8-bg { + background: #51b7a3 +} +.color9-bg { + background: #f39c12 +} +.color10-bg { + background: #ef4836 +} +.color11-bg { + background: #9a80b9 +} +.color12-bg { + background: #a2ded0 +} +.color13-bg { + background: #d2527f +} +.color14-bg { + background: #c78568 +} +.color15-bg { + background: #e99844 +} +.color-up { + color: #26a65b +} +.color-down { + color: #ef4836 +} +.color-fix { + color: #399bff +} \ No newline at end of file diff --git a/admin/css/style.min.css b/admin/css/style.min.css new file mode 100644 index 0000000..1231f81 --- /dev/null +++ b/admin/css/style.min.css @@ -0,0 +1 @@ +body{background:#f5f5f5;color:#58666e;margin:0;line-height:1.7em;font-size:13px;font-family:'Open-Sans',sans-serif;outline:0;text-Shadow:0 0 1px rgba(0,0,0,.2)}::-moz-selection{background:#D5EAFF}::selection{background:#D5EAFF}a{color:#399bff;text-decoration:none}a:hover,a:focus{text-decoration:none}b,strong{font-weight:600}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{padding-right:15px;padding-left:15px}.row{margin-right:-15px;margin-left:-15px}.container-widget .col-xs-1,.container-widget .col-sm-1,.container-widget .col-md-1,.container-widget .col-lg-1,.container-widget .col-xs-2,.container-widget .col-sm-2,.container-widget .col-md-2,.container-widget .col-lg-2,.container-widget .col-xs-3,.container-widget .col-sm-3,.container-widget .col-md-3,.container-widget .col-lg-3,.container-widget .col-xs-4,.container-widget .col-sm-4,.container-widget .col-md-4,.container-widget .col-lg-4,.container-widget .col-xs-5,.container-widget .col-sm-5,.container-widget .col-md-5,.container-widget .col-lg-5,.container-widget .col-xs-6,.container-widget .col-sm-6,.container-widget .col-md-6,.container-widget .col-lg-6,.container-widget .col-xs-7,.container-widget .col-sm-7,.container-widget .col-md-7,.container-widget .col-lg-7,.container-widget .col-xs-8,.container-widget .col-sm-8,.container-widget .col-md-8,.container-widget .col-lg-8,.container-widget .col-xs-9,.container-widget .col-sm-9,.container-widget .col-md-9,.container-widget .col-lg-9,.container-widget .col-xs-10,.container-widget .col-sm-10,.container-widget .col-md-10,.container-widget .col-lg-10,.container-widget .col-xs-11,.container-widget .col-sm-11,.container-widget .col-md-11,.container-widget .col-lg-11,.container-widget .col-xs-12,.container-widget .col-sm-12,.container-widget .col-md-12,.container-widget .col-lg-12{padding-right:5px;padding-left:5px}.container-widget .row{margin-right:-5px;margin-left:-5px}.container-widget .panel{margin-bottom:10px}.container-widget .widget{margin-bottom:10px}.container-default{padding:0}.container-widget{padding:0;margin-left:-5px;margin-right:-5px}.container-padding{padding-left:20px;padding-right:20px}.container-no-padding{padding:0;margin:-20px -30px 0 -30px}#top{height:50px;background:#399bff;color:#fff;width:100%;position:fixed;z-index:900;top:0}.applogo{width:auto;max-width:250px;height:50px;color:#fff;position:relative;padding:13px 0 0 0;margin-left:50px;float:left;text-align:left}.applogo .logo{color:#eee;font-size:35px;font-family:'Open-Sans',sans-serif}.searchform{width:220px;margin:0 20px;float:left;padding-top:10px;position:relative}.searchbox{border-radius:999px;border:none;height:32px;width:220px;padding-left:20px;padding-right:36px;background:rgba(255,255,255,.95);color:#37363e;box-shadow:inset none}.searchbox:focus{background:#fff;box-shadow:none;border-top:none}.searchbutton{border:none;color:rgba(0,0,0,.5);background:none;position:absolute;top:18px;font-size:16px;right:15px}.topmenu{float:left;padding-top:4px;padding-left:0;font-weight:600}.topmenu .link{display:inline-block;padding-left:8px;height:25px}.topmenu .link a{display:block}.topmenu .pastebutton{color:#FFF}.topmenu .pastebutton:hover{color:#404B5F}.topmenu a{color:rgba(255,255,255,.9);padding:7px}.topmenu a:hover{color:#fff}.topmenu li{display:inline}.top-right{line-height:1.8em;float:right;padding-right:50px;padding-left:10px;padding-top:14px;font-weight:600}.top-right .link{display:inline-block;padding-left:8px;height:30px}.top-right .link a{display:block}.top-right .dropdown-menu{min-width:135px}.top-right .dropdown-menu .list-title{text-align:center}.top-right .dropdown-menu li{position:relative;display:block}.top-right a{color:#fff}.top-right .profilebox{color:rgba(255,255,255,.95)}.top-right .profilebox img{width:32px;height:31px;float:left;border-radius:100%;margin-right:7px;margin-top:-4px}.top-right .profilebox .caret{margin-left:5px;color:rgba(255,255,255,.5)}.top-right .profilebox:hover{color:#fff}.top-right .pastebutton{background:#fff;color:#404B5F;padding:4px 16px;border-radius:999px}.top-right .pastebutton:hover{background:rgba(255,255,255,.95)}.guestmsg .text{font-size:14px;color:#fff;line-height:1.6em;font-weight:300}.guestmsg .text-body{font-size:12px;color:#fff;opacity:.8}.guestmsg .text-body a{color:#fff}.content{padding-left:30px;padding-right:30px;padding-top:60px;background:#f5f5f5}.footer{border-top:1px solid #e2e2e2;margin-left:-30px;margin-right:-30px;margin-bottom:0;padding:10px;font-size:11px;color:#666;background:#f5f5f5}.footer .col-md-6{margin-bottom:0}.page-header{background:#fff;margin:-20px -30px 20px -30px;padding:20px;border-bottom:none;position:relative}.page-header .title{padding:0;margin:0;font-family:'Open-Sans',sans-serif;font-size:20px;line-height:normal;font-weight:400;color:#37363e;padding-bottom:6px}.page-header .right{position:absolute;right:20px;bottom:20px;min-width:500px;text-align:right}.page-header .right .btn-group{float:right}.page-header .right .btn{padding-left:14px;padding-right:14px;font-size:13px}.page-header .right .btn .fa{margin:0 4px}.page-header .right .btn .no-border{border:none}.page-header .right .btn-group .btn{border:1px solid #E8EBED}.page-header .pagination{margin:0}.page-header .widget-inline-list{right:0;bottom:-25px;position:relative!important}.fa-item{padding:6px 0;position:relative;padding-left:50px;font-size:13px;color:#37363e;border-radius:3px;border:5px solid #fff}.fa-item .fa{position:absolute;left:10px;font-size:20px;color:#444;display:block;width:40px;text-align:center}.fa-item:hover{color:#000;background:#f2f2f2;border-color:#f2f2f2}#paste{line-height:1}#paste li{padding:1px}.paste-alert{color:#fff;position:relative;border-radius:3px;text-align:left;margin-bottom:10px;padding:12px;padding-right:30px}.paste-alert a{color:inherit;text-decoration:underline;font-weight:600}.paste-alert h4{font-size:14px;margin:0;color:inherit;font-weight:600;line-height:normal}.paste-alert .img{width:40px;height:40px;position:absolute;border-radius:3px;left:12px;top:12px}.paste-alert-img{padding-left:65px;min-height:64px}.paste-alert-icon{padding-left:40px}.paste-alert-icon .fa{display:block;width:20px;text-align:center;position:absolute;font-size:15px;left:12px;top:17px}.paste-alert .closed{position:absolute;right:3px;text-decoration:none;font-weight:700;top:0;font-size:20px;color:rgba(255,255,255,.5);padding:4px}.paste-alert .closed:hover{color:#fff}.paste-alert-click{cursor:pointer;padding-right:12px}.paste-alert .primary{outline:0;border:none;background:rgba(0,0,0,.4);color:inherit;border-radius:3px;padding:4px 10px}.paste-alert .cancel{outline:0;border:none;background:rgba(255,255,255,.4);color:rgba(0,0,0,.8);border-radius:3px;padding:4px 10px}.paste-alert .primary:hover,.paste-alert .cancel:hover{opacity:.9}.paste-alert-top,.paste-alert-bottom,.paste-alert-top-left,.paste-alert-top-right,.paste-alert-bottom-left,.paste-alert-bottom-right,.paste-alert-fullscreen{box-shadow:2px 2px 2px rgba(0,0,0,.1);position:fixed;display:none;z-index:1000}.paste-alert-top{top:0;left:0;right:0}.paste-alert-bottom{bottom:0;left:0;right:0}.paste-alert-top-left{top:80px;left:20px}.paste-alert-top-right{top:80px;right:20px}.paste-alert-bottom-left{bottom:20px;left:20px}.paste-alert-bottom-right{bottom:20px;right:20px}.paste-alert-fullsize{top:50%;left:50%;margin:-20px}.alert1{background:#399bff}.alert2{background:#33577b}.alert3{background:#26a65b}.alert4{background:#51b7a3}.alert5{background:#f39c12}.alert6{background:#ef4836}.alert7{background:#9a80b9}.alert8{background:#a2ded0;color:#444}.alert8 .closed{color:inherit}.alert8 a:hover.closed{color:inherit}.alert9{background:#d2527f}.alert10{background:#c78568}.alert11{background:#e99844}.alert1-light{background:#d2e8ff;color:#00356c}.alert2-light{background:#7ea3c9;color:#152433}.alert3-light{background:#83e3aa;color:#13532e}.alert4-light{background:#bde4dc;color:#2f7365}.alert5-light{background:#fad9a4;color:#976008}.alert6-light{background:#fac9c4;color:#b11e0e}.alert7-light{background:#e8e3ef;color:#674b88}.alert8-light{background:#edf9f6;color:#2f8571}.alert9-light{background:#f2cbd9;color:#97274e}.alert10-light{background:#f0dfd8;color:#935336}.alert11-light{background:#f9e3cd;color:#b26515}.alert1-light .closed,.alert2-light .closed,.alert3-light .closed,.alert4-light .closed,.alert5-light .closed,.alert6-light .closed,.alert7-light .closed,.alert8-light .closed,.alert9-light .closed,.alert10-light .closed,.alert11-light .closed{color:inherit;opacity:.6}.alert1-light .closed:hover{color:inherit;opacity:.8}.changelogs .version{font-size:13px;font-family:'Open-Sans',sans-serif}.changelogs .date{font-size:12px;position:absolute;right:20px;top:20px}.changelogs .update{position:relative;background:#fff;padding:20px;border:1px solid #e4e4e4;border-radius:3px;margin-bottom:20px}.changelogs .list{font-size:12px;margin-top:10px;background:#f2f2f2;padding:6px 10px;border-radius:3px;border-left:2px solid #ccc}.changelogs .list h4{margin:0;font-size:14px}.changelogs .list:hover{background:#eee}.login-form{width:360px;padding-top:100px;margin:0 auto;text-shadow:none}.login-form form{background:#fff;border:1px solid #ddd;border-radius:3px}.login-form form img{margin-bottom:18px}.login-form form .profile{border-radius:999px}.login-form form .top{border-bottom:1px solid #ddd;text-align:center;padding:30px 0}.login-form form .top .icon{width:100px;height:100px}.login-form form .top h1,.login-form form .top h4{margin:0}.login-form form .top h1{color:#37363E;font-size:30px;font-family:'Open-Sans',sans-serif;font-weight:700;margin-top:-14px}.login-form form .top h4{font-weight:400;color:#76757B;font-size:15px}.login-form form .form-area{padding:40px}.login-form form .form-area .group{position:relative;margin-bottom:20px}.login-form form .form-area .form-control{padding-left:38px;height:40px}.login-form form .form-area .fa{position:absolute;top:11px;left:13px;font-size:16px;color:#C3C3C3}.login-form form .form-area .btn{height:42px;font-weight:600}.login-form form .form-area .checkbox{margin-bottom:20px}.login-form .footer-links{color:#76757B;padding:10px 5px}.login-form .footer-links a{color:#76757B}.login-form .footer-links a:hover{color:#37363e}.error-pages{text-align:center;padding-top:100px}.error-pages .icon{border-radius:4px;margin-bottom:20px}.error-pages h1{color:#37363e;font-family:'Open-Sans',sans-serif;font-size:28px}.error-pages h4{color:#767279;font-weight:400;font-size:16px;margin-top:10px}.error-pages form{width:400px;margin:0 auto;margin-top:30px;position:relative}.error-pages form .form-control{padding-left:34px;height:40px}.error-pages form .fa{position:absolute;left:10px;top:11px;font-size:16px}.error-pages .bottom-links{margin-top:30px}.error-pages .bottom-links a{margin:0 6px}.checkbox-primary input[type="checkbox"]:checked+label::before{background-color:#399bff;border-color:#399bff}.checkbox-primary input[type="checkbox"]:checked+label::after{color:#fff}.checkbox-danger input[type="checkbox"]:checked+label::before{background-color:#ef4836;border-color:#ef4836}.checkbox-danger input[type="checkbox"]:checked+label::after{color:#fff}.checkbox-info input[type="checkbox"]:checked+label::before{background-color:#51b7a3;border-color:#51b7a3}.checkbox-info input[type="checkbox"]:checked+label::after{color:#fff}.checkbox-warning input[type="checkbox"]:checked+label::before{background-color:#f39c12;border-color:#f39c12}.checkbox-warning input[type="checkbox"]:checked+label::after{color:#fff}.checkbox-success input[type="checkbox"]:checked+label::before{background-color:#26a65b;border-color:#26a65b}.checkbox-success input[type="checkbox"]:checked+label::after{color:#fff}.radio-primary input[type="radio"]+label::after{background-color:#399bff}.radio-primary input[type="radio"]:checked+label::before{border-color:#399bff}.radio-primary input[type="radio"]:checked+label::after{background-color:#399bff}.radio-danger input[type="radio"]+label::after{background-color:#ef4836}.radio-danger input[type="radio"]:checked+label::before{border-color:#ef4836}.radio-danger input[type="radio"]:checked+label::after{background-color:#ef4836}.radio-info input[type="radio"]+label::after{background-color:#51b7a3}.radio-info input[type="radio"]:checked+label::before{border-color:#51b7a3}.radio-info input[type="radio"]:checked+label::after{background-color:#51b7a3}.radio-warning input[type="radio"]+label::after{background-color:#f39c12}.radio-warning input[type="radio"]:checked+label::before{border-color:#f39c12}.radio-warning input[type="radio"]:checked+label::after{background-color:#f39c12}.radio-success input[type="radio"]+label::after{background-color:#26a65b}.radio-success input[type="radio"]:checked+label::before{border-color:#26a65b}.radio-success input[type="radio"]:checked+label::after{background-color:#26a65b}a:focus,input,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus,.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:0}mark{background:#FBDDAC;padding:2px 4px;border-radius:3px}code{background:#EDF6FF;padding:2px 2px;color:#000;border:1px solid #C3E1FF}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:400;line-height:1.6;color:#37363e}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px;letter-spacing:-.02em}h4,.h4,h5,.h5,h6,.h6{margin-top:15px;margin-bottom:10px}h1,.h1{font-size:2.25em}h2,.h2{font-size:2em}h3,.h3{font-size:1.75em}h4,.h4{font-size:1.5em}h5,.h5{font-size:1.25em}h6,.h6{font-size:1em}.text-st{color:#666}.lead{line-height:1.7em}blockquote{background:#f2f2f2;padding:16px 20px;border-radius:3px;border-left:5px solid #ccc}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:inherit;opacity:.6}.blockquote-reverse,blockquote.pull-right{border-right:5px solid #ccc}dt,dd{line-height:inherit}.font-title{font-family:'Open-Sans',sans-serif}.font-w-300{font-weight:300}.font-w-400{font-weight:400}.font-w-600{font-weight:600}.font-w-700{font-weight:700}.font-w-800{font-weight:800}.font-title-tab{font-family:'Open-Sans',sans-serif;text-transform:uppercase;font-weight:700;font-size:12px}.btn{font-size:14px;padding:7px 20px 7px 20px;border:none;background:#e4e4e4;color:inherit;border-radius:3px}.btn:hover{background-color:#eee;color:#666}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:none;box-shadow:none}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-xs{font-size:11px;padding:3px 8px}.btn-sm{font-size:12px;padding:5px 14px}.btn-lg{font-size:16px;padding:10px 30px}.btn-xl{font-size:20px;padding:14px 30px}.btn .fa{font-size:15px;margin-right:5px}.btn-icon{padding-left:10px;padding-right:10px}.btn-icon .fa{margin:0;font-size:normal}.btn-rounded{border-radius:999px}.btn-square{border-radius:0}.btndiv .btn{margin-bottom:10px}.btn-default{background-color:#399bff;color:#fff}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-color:#4da5ff;color:#fff}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background:#208eff;box-shadow:none;color:#fff}.btn-default .badge{color:#399bff;background-color:#fff}.btn-primary{background-color:#33577b;color:#fff}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-color:#396189;color:#fff}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background:#2c4a69;box-shadow:none;color:#fff}.btn-primary .badge{color:#33577b;background-color:#fff}.btn-white{background-color:#e4e4e4;color:#666}.btn-white:hover,.btn-white:focus,.btn-white.focus,.btn-white:active,.btn-white.active,.open>.dropdown-toggle.btn-white{background-color:#eee;color:#666}.btn-white:active,.btn-white.active,.open>.dropdown-toggle.btn-white{background:#d7d7d7;box-shadow:none;color:#666}.btn-white .badge{color:#e4e4e4;background-color:#fff}.btn-toggle{background-color:#e4e4e4;color:#666;border-size:4px;border-size:5px}.btn-toggle:hover,.btn-toggle:focus,.btn-toggle.focus,.btn-toggle:active,.btn-toggle.active,.open>.dropdown-toggle.btn-toggle{background-color:#eee;color:#666}.btn-toggle:active,.btn-toggle.active,.open>.dropdown-toggle.btn-toggle{background:#d7d7d7;box-shadow:none;color:#666}.btn-toggle .badge{color:#e4e4e4;background-color:#fff}.btn-light{background-color:#fff;color:inherit;border:1px solid #BDC4C9}.btn-light:hover,.btn-light:focus,.btn-light.focus,.btn-light:active,.btn-light.active,.open>.dropdown-toggle.btn-light{background-color:#f9f9f9;color:inherit}.btn-light:active,.btn-light.active,.open>.dropdown-toggle.btn-default{box-shadow:none;color:inherit}.btn-success{background-color:#26a65b;color:#fff}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-color:#2ab764;color:#fff}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background:#219150;box-shadow:none;color:#fff}.btn-success .badge{color:#26a65b;background-color:#fff}.btn-info{background-color:#51b7a3;color:#fff}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-color:#5fbdab;color:#fff}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background:#46a995;box-shadow:none;color:#fff}.btn-info .badge{color:#51b7a3;background-color:#fff}.btn-warning{background-color:#f39c12;color:#fff}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-color:#f4a425;color:#fff}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background:#e08e0b;box-shadow:none;color:#fff}.btn-warning .badge{color:#f39c12;background-color:#fff}.btn-danger{background-color:#ef4836;color:#fff}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-color:#f15949;color:#fff}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background:#ed321e;box-shadow:none;color:#fff}.btn-danger .badge{color:#ef4836;background-color:#fff}.btn-option1{background-color:#9a80b9;color:#fff}.btn-option1:hover,.btn-option1:focus,.btn-option1.focus,.btn-option1:active,.btn-option1.active,.open>.dropdown-toggle.btn-option1{background-color:#a48dc0;color:#fff}.btn-option1:active,.btn-option1.active,.open>.dropdown-toggle.btn-option1{background:#8d70b0;box-shadow:none;color:#fff}.btn-option1 .badge{color:#9a80b9;background-color:#fff}.btn-option2{background-color:#a2ded0;color:#333}.btn-option2:hover,.btn-option2:focus,.btn-option2.focus,.btn-option2:active,.btn-option2.active,.open>.dropdown-toggle.btn-option2{background-color:#b1e3d8;color:#333}.btn-option2:active,.btn-option2.active,.open>.dropdown-toggle.btn-option2{background:#8fd7c6;box-shadow:none;color:#333}.btn-option2 .badge{color:#a2ded0;background-color:#fff}.btn-option3{background-color:#d2527f;color:#fff}.btn-option3:hover,.btn-option3:focus,.btn-option3.focus,.btn-option3:active,.btn-option3.active,.open>.dropdown-toggle.btn-option3{background-color:#d6628b;color:#fff}.btn-option3:active,.btn-option3.active,.open>.dropdown-toggle.btn-option3{background:#cd3e70;box-shadow:none;color:#fff}.btn-option3 .badge{color:#d2527f;background-color:#fff}.btn-option4{background-color:#c78568;color:#fff}.btn-option4:hover,.btn-option4:focus,.btn-option4.focus,.btn-option4:active,.btn-option4.active,.open>.dropdown-toggle.btn-option4{background-color:#cd9177;color:#fff}.btn-option4:active,.btn-option4.active,.open>.dropdown-toggle.btn-option4{background:#c07655;box-shadow:none;color:#fff}.btn-option4 .badge{color:#c78568;background-color:#fff}.btn-option5{background-color:#e99844;color:#fff}.btn-option5:hover,.btn-option5:focus,.btn-option5.focus,.btn-option5:active,.btn-option5.active,.open>.dropdown-toggle.btn-option4{background-color:#eba256;color:#fff}.btn-option5:active,.btn-option5.active,.open>.dropdown-toggle.btn-option5{background:#e68b2d;box-shadow:none;color:#fff}.btn-option5 .badge{color:#e99844;background-color:#fff}.label{font-size:inherit;padding:1px 6px;font-weight:600;border-radius:4px}.label-default{background:#399bff}.label-primary{background:#33577b}.label-success{background:#26a65b}.label-info{background:#51b7a3}.label-warning{background:#f39c12}.label-danger{background:#ef4836}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#26a65b}.has-success .form-control{border-color:#26a65b;box-shadow:none}.has-success .form-control:focus{border-color:#26a65b;box-shadow:none}.has-success .input-group-addon{color:#26a65b;background-color:#26a65b;border-color:#26a65b}.has-success .form-control-feedback{color:#26a65b}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#f39c12}.has-warning .form-control{border-color:#f39c12;box-shadow:none}.has-warning .form-control:focus{border-color:#f39c12;box-shadow:none}.has-warning .input-group-addon{color:#f39c12;background-color:#f39c12;border-color:#f39c12}.has-warning .form-control-feedback{color:#f39c12}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ef4836}.has-error .form-control{border-color:#ef4836;box-shadow:none}.has-error .form-control:focus{border-color:#ef4836;box-shadow:none}.has-error .input-group-addon{color:#ef4836;background-color:#ef4836;border-color:#ef4836}.has-error .form-control-feedback{color:#ef4836}input,select{height:34px;border-radius:3px;padding-left:10px;font-size:14px;background:#fff;border:1px solid #BDC4C9;box-shadow:inset 0 1px 0 #F1F0F1}.form-control{height:34px;border-radius:3px;padding-left:10px;font-size:14px;background:#fff;border:1px solid #BDC4C9;display:block;box-shadow:inset 0 1px 0 #F1F0F1}.form-control:focus{background:#f7f7f7;border-color:#BDC4C9;box-shadow:none;border-top:1px solid #B7B7B7}.form-label{font-weight:500}.fieldset-form fieldset{padding:20px;margin:0 2px;border-radius:3px;border:1px solid #ccc;padding-top:10px}.fieldset-form legend{width:auto;padding:0 10px;margin-bottom:20px;font-size:16px;line-height:inherit;color:#333;border:0;font-weight:600;border-bottom:none}.form-control-line{border-left:0;border-top:0;border-right:0;padding-left:0;border-radius:0;box-shadow:none}.form-control-line:focus{border-top:0;background:none;border-color:#666}.form-control-radius{border-radius:999px}.form-group{margin-bottom:18px}.form-inline label{margin-right:5px}.form-inline .checkbox-inline,.form-inline .radio-inline{padding-left:0;margin-right:5px}.form-inline .checkbox-inline label,.form-inline .radio-inline label{padding-left:5px}.form-inline .form-group{padding-right:10px}.input-group-addon{background:#f7f7f7;border-color:#BDC4C9;font-weight:600;padding-left:17px;padding-right:17px}.input-sm{height:30px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:3px}.breadcrumb{background:none;padding:0;margin:0;font-weight:600}.breadcrumb .active{font-weight:400;color:#999}.dropdown-menu{min-width:100px;font-size:inherit;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.09);box-shadow:0 1px 2px rgba(0,0,0,.09)}.dropdown-header{font-weight:400;text-transform:uppercase;font-size:10px;padding-left:15px;font-family:'Open-Sans',sans-serif;padding-top:5px}.dropdown-menu li{position:relative}.dropdown-menu>li>a{padding:9px 20px;color:#3D464D}.dropdown-menu .divider{margin:4px 0}.dropdown-menu-list li a{padding-left:40px}.dropdown-menu-list .badge{right:20px;font-weight:400;margin-left:5px;padding:2px 6px;font-size:11px}.dropdown-menu-list .falist{position:absolute;left:15px;top:11px;font-size:15px}.dropdown-menu a{cursor:pointer}.tab-content{background:#fff;padding:20px}.nav-tabs{border-bottom:none;background:#E9E9E9;padding:0}.nav-tabs>li{float:left;margin-bottom:-1px;margin-right:-2px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;color:inherit;border:none;border-radius:0}.nav-tabs>li>a:hover{border-color:none;background:rgba(0,0,0,.1)}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:none;border-bottom-color:transparent}.nav-pills{padding-bottom:10px}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:3px;padding:4px 10px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#399bff}.nav-stacked li{width:100%;display:block}.nav-justified{padding:0;margin-bottom:-1px;border-bottom:none}@media (min-width:768px){.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{border-radius:0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:none}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #fff;border-radius:none}}.nav-line{border-bottom:none;background:none;padding:0}.nav-line>li{float:left;margin-bottom:-1px}.nav-line>li>a:hover{border-color:none;background:none;border-bottom:3px solid #e4e4e4;color:#37363e}.nav-line>li.active>a,.nav-line>li.active>a:hover,.nav-line>li.active>a:focus{color:inherit;cursor:default;background-color:transparent;border-bottom:3px solid #399bff}.nav-icon .fa{font-size:16px;color:inherit}.nav-pills>li>a{border-radius:3px;padding:4px 14px}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none;margin:0}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:29px}.tabs-right>.nav-tabs{float:right;margin-left:29px;text-align:right}.tabcolor5-bg li a,.tabcolor6-bg li a,.tabcolor7-bg li a,.tabcolor8-bg li a,.tabcolor9-bg li a,.tabcolor10-bg li a{color:#fff}.tabcolor5-bg{background:#399bff}.tabcolor6-bg{background:#33577b}.tabcolor7-bg{background:#26a65b}.tabcolor8-bg{background:#51b7a3}.tabcolor9-bg{background:#f39c12}.tabcolor10-bg{background:#ef4836}.panel{box-shadow:none;border:1px solid #e5e5e5;background:#fff;padding:20px;margin-bottom:20px;position:relative}.panel-footer{margin:-20px;margin-top:20px;background:#f9f9f9}.panel-transparent{background:none;border:none}.panel-transparent .panel-title{background:none;border:none}.panel-default>.panel-heading{background-color:inherit;border-bottom:0;color:#3D464D}.panel-title{font-family:'Open-Sans',sans-serif;color:#58666e;font-size:13px;font-weight:700;text-transform:uppercase;padding:16px 20px;margin:-20px;background:#fff;margin-bottom:5px;border-bottom:none;border-top-left-radius:3px;border-top-right-radius:3px}.panel-body,.panel-heading{padding:0;color:inherit;background-color:transparent;border-color:none}.panel-heading{background:transparent;border-bottom:transparent}.panel .badge{font-size:11px;font-family:'Open-Sans',sans-serif;text-transform:none;padding:4px 10px;margin-left:5px;font-weight:400}.panel-footer{background:rgba(0,0,0,.01);border-top:1px solid inherit}.panel-title .badge{color:#fff;background-color:rgba(0,0,0,.2)}.panel-heading{font-size:20px;padding-bottom:15px;font-weight:300}.panel .list-group{margin:-20px;margin-top:20px;background:transparent}.panel .list-group li{border:1px solid rgba(255,255,255,.2);border-left:0;background:transparent;border-right:0}.panel .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom:0}.panel-collapse{padding-bottom:0}.panel-collapse .panel-title{padding-bottom:0;margin-bottom:0}.panel-collapse .panel-body{padding:10px 0 20px 0}.panel-widget{overflow:hidden}.panel-default{border-color:#ddd}.panel-default .badge{color:inherit;background-color:rgba(0,0,0,.2)}.panel-default .list-group{margin:-20px;margin-top:20px}.panel-default .list-group li{border:1px solid #ddd;border-left:0;border-right:0}.panel-default .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-default .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom:0}.panel-primary{border-color:#399bff;background:#399bff;color:#fff}.panel-primary>.panel-heading{color:inherit;background:transparent;border-bottom:transparent}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#399bff}.panel-primary .panel-title{color:#fff;background:#399bff;border-bottom:1px solid rgba(255,255,255,.1)}.panel-primary .panel-footer{border-top:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04)}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#399bff}.panel-success{border-color:#26a65b;background:#26a65b;color:#fff}.panel-success>.panel-heading{color:inherit;background:transparent;border-bottom:transparent}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#26a65b}.panel-success .panel-title{color:#fff;background:#26a65b;border-bottom:1px solid rgba(255,255,255,.1)}.panel-success .panel-footer{border-top:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04)}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#26a65b}.panel-info{border-color:#51b7a3;background:#51b7a3;color:#fff}.panel-info>.panel-heading{color:inherit;background:transparent;border-bottom:transparent}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#51b7a3}.panel-info .panel-title{color:#fff;background:#51b7a3;border-bottom:1px solid rgba(255,255,255,.1)}.panel-info .panel-footer{border-top:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04)}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#51b7a3}.panel-warning{border-color:#f39c12;background:#f39c12;color:#fff}.panel-warning>.panel-heading{color:inherit;background:transparent;border-bottom:transparent}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f39c12}.panel-warning .panel-title{color:#fff;background:#f39c12;border-bottom:1px solid rgba(255,255,255,.1)}.panel-warning .panel-footer{border-top:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04)}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f39c12}.panel-danger{border-color:#ef4836;background:#ef4836;color:#fff}.panel-danger>.panel-heading{color:inherit;background:transparent;border-bottom:transparent}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ef4836}.panel-danger .panel-title{color:#fff;background:#ef4836;border-bottom:1px solid rgba(255,255,255,.1)}.panel-danger .panel-footer{border-top:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04)}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ef4836}.panel-dark{border-color:#3d464d;background:#3d464d;color:#fff}.panel-dark>.panel-heading{color:inherit;background:transparent;border-bottom:transparent}.panel-dark>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3d464d}.panel-dark .panel-title{color:#fff;background:#3d464d;border-bottom:1px solid rgba(255,255,255,.1)}.panel-dark .panel-footer{border-top:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04)}.panel-dark>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3d464d}.panel-tools{font-family:'Open-Sans',sans-serif;position:absolute;right:16px;top:13px;text-transform:none;font-weight:600;font-size:inherit;z-index:1}.panel-tools li{display:inline-block}.panel-tools a{padding:3px 8px;display:block;color:inherit;border-radius:3px}.panel-tools a:hover{color:rgba(0,0,0,.6);background:rgba(0,0,0,.09)}.panel-tools .icon{font-size:14px;color:rgba(0,0,0,.5);border-radius:3px;cursor:pointer}.panel-tools .icon a{color:rgba(0,0,0,.4)}.panel-tools .dropdown-menu{-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2);font-size:13px}.panel-tools .dropdown-menu li{display:list-item}.panel-tools .dropdown-menu a{display:block}.panel-search{margin:-20px;padding:15px 20px;position:relative;color:#333;display:none;background:rgba(255,255,255,.1);margin-bottom:20px;border-bottom:1px solid rgba(0,0,0,.1)}.panel-search input{background:#fff;border-radius:999px;padding-left:35px}.panel-search input:focus{background:#fff}.panel-search .icon{position:absolute;left:35px;top:25px}.panel-fullsize{position:fixed;width:100%;height:100vh;overflow:auto;top:0;left:0;z-index:9999}.panel-tools-hover{display:none}.panel:hover .panel-tools-hover{display:block}.panel-title .titleicon{margin-right:10px}.panel-closed .panel-title{margin-bottom:-20px}.panel-closed .panel-body{display:none}.widget-tools{font-family:'Open-Sans',sans-serif;position:absolute;right:15px;top:13px;text-transform:none;font-weight:600;font-size:inherit;z-index:1}.widget-tools li{display:inline-block}.widget-tools a{padding:3px 8px;display:block;color:inherit;border-radius:3px}.widget-tools a:hover{color:rgba(0,0,0,.6);background:rgba(0,0,0,.09)}.widget-tools .icon{font-size:14px;color:rgba(0,0,0,.5);border-radius:3px;cursor:pointer}.widget-tools .icon a{color:rgba(0,0,0,.4)}.widget-tools .dropdown-menu{-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2);font-size:13px}.widget-tools .dropdown-menu li{display:list-item}.widget-tools .dropdown-menu a{display:block}.widget-fullsize{position:fixed;width:100%;height:100vh;overflow:auto;top:0;left:0;z-index:9999}.widget-tools-hover{display:none}.widget:hover .widget-tools-hover{display:block}.modal{z-index:999}.modal-sm{max-width:400px}.modal-lg{min-width:90%}.modal .close{width:26px;border-radius:4px;font-size:23px;background:#ccc;color:#000;text-shadow:none;opacity:.4;outline:0}.modal .close:hover{opacity:.6}.modal-title{font-family:'Open-Sans',sans-serif;font-size:16px}.modalicon{background:#fff;border-radius:3px;text-align:center;height:300px;display:table-cell;width:100%;position:relative;vertical-align:middle;border:2px solid #e2e2e2}.modalicon img{border-radius:3px}.modalicon:hover{border-color:#ccc}.progress{height:18px;background:rgba(0,0,0,.15);box-shadow:none}.progress-bar{background:#399bff;font-size:12px;font-weight:600;line-height:normal}.progress-bar-success{background:#26a65b}.progress-bar-info{background:#51b7a3}.progress-bar-warning{background:#f39c12}.progress-bar-danger{background:#ef4836}.progress-bar-transparent{background:transparent;color:inherit}.progress-small{height:9px}.progress-large{height:26px}.progress-extralarge{height:36px}.table{margin:0}.table-hover>tbody>tr:hover{background-color:#EFF7FF}thead{font-weight:600;font-family:'Open-Sans',sans-serif;text-transform:uppercase;font-size:12px;color:#37363e}thead .fa{font-size:16px;margin:0}table td{display:table-cell;vertical-align:middle}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:15px;line-height:1.7}.doc-grid{padding:10px 20px}.doc-grid div{border:1px solid #ccc;text-align:center;font-size:16px;padding:20px 0;background:#fff}.quick-menu{padding:0;margin-bottom:10px;background:#fff;font-family:'Montserrat',sans-serif}.quick-menu .label{position:absolute;padding:4px 6px;top:-10px;right:10px}.quick-menu li{display:block;text-align:center;padding:0;position:relative;font-size:13px}.quick-menu li .fa{display:block;font-size:28px;margin-bottom:5px}.quick-menu a{color:#58666e;display:block;padding:18px 0;text-shadow:none}.quick-menu a .fa{color:#399bff}.menu-active a{background:#399bff!important;color:#FFF!important;margin-left:-5px;border-radius:3px}.menu-active,.menu-active i{color:#FFF!important}.topstats{background:#fff;padding:0;color:#76747A;position:relative;font-size:12px;border-radius:3px;text-shadow:none;padding:12px 0}.topstats li{display:block;text-align:center;margin:10px 0}.topstats .title{color:#37363e;font-weight:600;font-size:13px}.topstats .title .fa{font-size:15px;color:#000;margin-right:4px;opacity:.4}.topstats h3{font-size:28px;font-weight:700;font-family:'Montserrat',sans-serif;letter-spacing:-1px;line-height:normal;margin:1px 0}.topstats h3 small{color:#37363e}.topstats .diff b{font-weight:700}.topstats .diff .fa{margin-right:2px}.topstats .arrow{position:absolute;width:0;height:0;top:-18px;right:5px;border-style:solid;border-width:0 10px 10px 10px;border-color:transparent transparent #fff transparent}.widget{overflow:hidden;margin-bottom:10px;background:#fff;border-radius:3px;padding:20px;position:relative}.widget .widget-title{color:#37363e;font-size:12px;font-weight:700;padding:16px 20px;background:#fff;margin-bottom:5px;border-bottom:none;border-top-left-radius:3px;border-top-right-radius:3px;margin:-20px;margin-bottom:20px}.widget .widget-title h5{font-size:12px;z-index:1;margin:0;color:#58666e}.widget .widget-title h2{font-family:'Open-Sans',sans-serif;font-size:12px;margin:0;font-weight:700;text-transform:uppercase}.widget-inline-list{display:block;padding-left:0;color:#58666e}.widget-inline-list li{display:block;float:left;text-align:center;padding:15px 0}.widget-inline-list li span{font-size:18px;display:block;color:inherit;font-family:'Open-Sans',sans-serif;font-weight:600}.widget-inline-list .chart{display:block;margin-top:5px}.widget-inline-list .col-1{width:8.3333333%}.widget-inline-list .col-2{width:16.666666%}.widget-inline-list .col-3{width:25%}.widget-inline-list .col-4{width:33.333333%}.widget-inline-list .col-6{width:50%}.widget-inline-list .col-12{width:100%}.color1{color:#37363e}.color2{color:#58666e}.color3{color:#e4e4e4}.color4{color:#f5f5f5}.color5{color:#399bff}.color6{color:#33577b}.color7{color:#26a65b}.color8{color:#51b7a3}.color9{color:#f39c12}.color10{color:#ef4836}.color11{color:#9a80b9}.color12{color:#a2ded0}.color13{color:#d2527f}.color14{color:#c78568}.color15{color:#e99844}.color0-bg{background:#3d464d}.color1-bg{background:#37363e}.color2-bg{background:#58666e}.color3-bg{background:#e4e4e4}.color4-bg{background:#f5f5f5}.color5-bg{background:#399bff}.color6-bg{background:#33577b}.color7-bg{background:#26a65b}.color8-bg{background:#51b7a3}.color9-bg{background:#f39c12}.color10-bg{background:#ef4836}.color11-bg{background:#9a80b9}.color12-bg{background:#a2ded0}.color13-bg{background:#d2527f}.color14-bg{background:#c78568}.color15-bg{background:#e99844}.color-up{color:#26a65b}.color-down{color:#ef4836}.color-fix{color:#399bff} \ No newline at end of file diff --git a/admin/dashboard.php b/admin/dashboard.php new file mode 100644 index 0000000..d1a6718 --- /dev/null +++ b/admin/dashboard.php @@ -0,0 +1,453 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ + +session_start(); + +if (isset($_SESSION['login'])) { +// Do nothing +} else { + header("Location: ."); + exit(); +} + +if (isset($_GET['logout'])) { + if (isset($_SESSION['login'])) + unset($_SESSION['login']); + + session_destroy(); + header("Location: ."); + exit(); +} + +$today_users_count = 0; +$today_pastes_count = 0; + +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; +require_once('../config.php'); +require_once('../includes/functions.php'); +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); + +if (mysqli_connect_errno()) { + $sql_error = mysqli_connect_error(); + die("Unable connect to database"); +} + +$query = "SELECT @last_id := MAX(id) FROM admin_history"; + +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_id = $row['@last_id := MAX(id)']; +} + +$query = "SELECT * FROM admin_history WHERE id=" . Trim($last_id); +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_date = $row['last_date']; + $last_ip = $row['ip']; +} + +if ($last_ip == $ip) { + if ($last_date == $date) { + + } else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); + } +} else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); +} + +$query = "SELECT * FROM page_view"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $total_page = isset($total_page) + Trim($row['tpage']); + $total_visit = isset($total_visit) + Trim($row['tvisit']); +} + +$query = "SELECT @last_id := MAX(id) FROM page_view"; + +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $page_last_id = $row['@last_id := MAX(id)']; +} + +$query = "SELECT * FROM page_view WHERE id=" . Trim($page_last_id); +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $today_page = $row['tpage']; + $today_visit = $row['tvisit']; +} + +$query = "SELECT * FROM site_info"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $admin_email = Trim($row['email']); +} + +$c_date = date('jS F Y'); +$query = "SELECT * FROM users where date='$c_date'"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $today_users_count = $today_users_count + 1; +} + +$query = "SELECT * FROM pastes where s_date='$c_date'"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $today_pastes_count = $today_pastes_count + 1; +} +for ($loop = 0; $loop <= 6; $loop++) { + $myid = $page_last_id - $loop; + $query = "SELECT * FROM page_view WHERE id='$myid'"; + $result = mysqli_query($con, $query); + + while ($row = mysqli_fetch_array($result)) { + $sdate = $row['date']; + $sdate = str_replace(date('Y'), '', $sdate); + $sdate = str_replace('January', 'Jan', $sdate); + $sdate = str_replace('February', 'Feb', $sdate); + $sdate = str_replace('March', 'Mar', $sdate); + $sdate = str_replace('April', 'Apr', $sdate); + $sdate = str_replace('August', 'Aug', $sdate); + $sdate = str_replace('September', 'Sep', $sdate); + $sdate = str_replace('October', 'Oct', $sdate); + $sdate = str_replace('November', 'Nov', $sdate); + $sdate = str_replace('December', 'Dec', $sdate); + + $ldate[$loop] = $sdate; + $tpage[$loop] = $row['tpage']; + $tvisit[$loop] = $row['tvisit']; + } +} +?> + + + + + + + Paste - Dashboard + + + + + +

+ + + + + + + +
+ + +
+ +
+ +
+
+ +
+
+ + + +
+
+
    +
  • + Views +

    + Today +
  • +
  • + Pastes +

    + Today +
  • +
  • + Users +

    + Today +
  • +
  • + Unique Views +

    + Today +
  • +
+
+
+ + +
+ +
+
+
+ Recent Pastes +
+ +
+ + + + + + + + + + + + + + + + + + + "; + } + ?> + +
IDUsernameDateIPViews
$p_id$p_member$p_date$p_ip$p_view
+ +
+
+
+ + + +
+
+
+ Recent Users +
+ +
+ + + + + + + + + + + + + + + + + "; + } + + ?> + +
IDUsernameDateIP
$r_my_id$username$u_date$ip
+ +
+
+
+ +
+ +
+ +
+
+
+ Admin History +
+ +
+ + + + + + + + + + + + + + + "; + } + + ?> + +
IDLast Login DateIP
$c_my_id$last_date$ip
+ +
+
+
+ + +
+
+
+
+

+ You have the latest version'; } else { echo '
Your Paste installation is outdated. Get the latest version from SourceForge'; } + ?> + +

+
+
+
+
+ + + + + + +
+ + + + + + + diff --git a/admin/favicon.ico b/admin/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b0ecec6ab2661d7fce24cce25577bb8d9a460c79 GIT binary patch literal 15086 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 literal 0 HcmV?d00001 diff --git a/admin/index.php b/admin/index.php new file mode 100644 index 0000000..468f4ab --- /dev/null +++ b/admin/index.php @@ -0,0 +1,99 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ + +// PHP <5.5 compatibility +require_once('../includes/password.php'); + +session_start(); + +require_once ('../config.php'); + +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); +if (mysqli_connect_errno()) { + $sql_error = mysqli_connect_error(); + die("Unable connect to database"); +} + +$query = "SELECT * FROM admin"; +$result = mysqli_query($con,$query); + +while($row = mysqli_fetch_array($result)) { + $adminid = Trim($row['user']); + $password = $row['pass']; +} + +if ($_SERVER['REQUEST_METHOD'] == 'POST') { + if ($adminid == htmlentities(trim($_POST['username']))) { + if (password_verify($_POST['password'], $password)) { + header("Location: dashboard.php"); + $_SESSION['login'] = true; + } else { + $msg = '
+ Wrong User/Password +
'; + } + } else { + $msg = '
+ Wrong User/Password +
'; + + } +} +?> + + + + + + + + Paste - Login + + + + + + + \ No newline at end of file diff --git a/admin/interface.php b/admin/interface.php new file mode 100644 index 0000000..36077ba --- /dev/null +++ b/admin/interface.php @@ -0,0 +1,262 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ +session_start(); + +if (isset($_SESSION['login'])) { +// Do nothing +} else { + header("Location: ."); + exit(); +} + +if (isset($_GET['logout'])) { + if (isset($_SESSION['login'])) + unset($_SESSION['login']); + + session_destroy(); + header("Location: ."); + exit(); +} + +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; +require_once('../config.php'); +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); + +if (mysqli_connect_errno()) { + $sql_error = mysqli_connect_error(); + die("Unable connect to database"); +} + +$query = "SELECT @last_id := MAX(id) FROM admin_history"; + +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_id = $row['@last_id := MAX(id)']; +} + +$query = "SELECT * FROM admin_history WHERE id=" . Trim($last_id); +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_date = $row['last_date']; + $last_ip = $row['ip']; +} + +if ($last_ip == $ip) { + if ($last_date == $date) { + + } else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); + } +} else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); +} + +?> + + + + + + + Paste - Interface + + + + + +
+ + + + + + + +
+ + +
+ +
+ +
+
+ +
+
+ + + + ' . mysqli_error($con) . ' +
'; + + } else { + $msg = '
+ Settings saved +
'; + } + } + ?> + + +
+
+
+
+ +
+
+
+
+ + +
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/admin/ipbans.php b/admin/ipbans.php new file mode 100644 index 0000000..0754f44 --- /dev/null +++ b/admin/ipbans.php @@ -0,0 +1,309 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ +session_start(); + +if (isset($_SESSION['login'])) { +// Do nothing +} else { + header("Location: ."); + exit(); +} + +if (isset($_GET['logout'])) { + if (isset($_SESSION['login'])) + unset($_SESSION['login']); + + session_destroy(); + header("Location: ."); + exit(); +} + +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; +require_once('../config.php'); +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); + +if (mysqli_connect_errno()) { + $sql_error = mysqli_connect_error(); + die("Unable connect to database"); +} + +$query = "SELECT @last_id := MAX(id) FROM admin_history"; + +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_id = $row['@last_id := MAX(id)']; +} + +$query = "SELECT * FROM admin_history WHERE id=" . Trim($last_id); +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_date = $row['last_date']; + $last_ip = $row['ip']; +} + +if ($last_ip == $ip) { + if ($last_date == $date) { + + } else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); + } +} else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); +} + +// Get IP from form or URL +if ( $_SERVER['REQUEST_METHOD'] == 'POST' || isset( $_GET['banip'] ) ) { + if ( isset( $_POST['banip'] ) ) { + $ban_ip = htmlentities( Trim( $_POST['ban_ip'] ) ); + } elseif ( isset( $_GET['banip'] ) ) { + $ban_ip = htmlentities( Trim( $_GET['banip'] ) ); + } + // Check if IP is blank or already banned. + if ( trim($ban_ip) == '' ) { + $msg = '
Please enter an IP to ban.
'; + } else { + $query = "SELECT * FROM ban_user where ip='$ban_ip'"; + $result = mysqli_query( $con, $query ); + $num_rows = mysqli_num_rows( $result ); + if ( $num_rows >= 1 ) { + $msg = '
' . $ban_ip . ' already banned
'; + } else { + // Valid IP which is not banned. Add to database + $query = "INSERT INTO ban_user (last_date,ip) VALUES ('$date','$ban_ip')"; + mysqli_query( $con, $query ); + if ( mysqli_errno( $con ) ) { + $msg = '
' . mysqli_error($con) . '
'; + } else { + $msg = '
' . $ban_ip . ' added to the banlist
'; + } + } + } +} + +if (isset($_GET{'delete'})) { + $delete = htmlentities(Trim($_GET['delete'])); + $query = "DELETE FROM ban_user WHERE id=$delete"; + $result = mysqli_query($con, $query); + + if (mysqli_errno($con)) { + $msg = '
+ ' . mysqli_error($con) . ' +
'; + } else { + $msg = ' +
+ IP removed from the banlist +
'; + } +} +?> + + + + + + + Paste - IP Bans + + + + + +
+ + + + + + + +
+ + +
+ +
+ +
+
+ +
+
+ + + +
+
+
+
+
Ban an IP
+ +
+
+ + +
+ +
+
+
+
+
+ +
+
+
+
+
Banlist
+ + + + + + + + + '; + echo ''; + echo ''; + $myid = $row['id']; + echo ''; + $no++; + } + echo ''; + echo ''; + echo '
Date AddedIPDelete
' . $row['last_date'] . '' . $row['ip'] . '' . " Delete " . '
'; + // Display pagination + echo '
    '; + if ($left_rec < $rec_limit) { + $last = $page - 2; + if ($last < 0) { + + } else { + echo @"
  • Previous
  • "; + } + } else if ($page == 0) { + echo @"
  • Next
  • "; + } else if ($page > 0) { + $last = $page - 2; + echo @"
  • Previous
  • "; + echo @"
  • Next
  • "; + } + echo '
'; + ?> + +
+
+
+
+ +
+ + + + + +
+ + + + + + \ No newline at end of file diff --git a/admin/js/bootstrap-select.js b/admin/js/bootstrap-select.js new file mode 100644 index 0000000..c939954 --- /dev/null +++ b/admin/js/bootstrap-select.js @@ -0,0 +1,1215 @@ +/*! + * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) + * + * Copyright 2013-2014 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +(function ($) { + 'use strict'; + + // Case insensitive search + $.expr[':'].icontains = function (obj, index, meta) { + return icontains($(obj).text(), meta[3]); + }; + + // Case and accent insensitive search + $.expr[':'].aicontains = function (obj, index, meta) { + return icontains($(obj).data('normalizedText') || $(obj).text(), meta[3]); + }; + + /** + * Actual implementation of the case insensitive search. + * @access private + * @param {String} haystack + * @param {String} needle + * @returns {boolean} + */ + function icontains(haystack, needle) { + return haystack.toUpperCase().indexOf(needle.toUpperCase()) > -1; + } + + /** + * Remove all diatrics from the given text. + * @access private + * @param {String} text + * @returns {String} + */ + function normalizeToBase(text) { + var rExps = [ + {re: /[\xC0-\xC6]/g, ch: "A"}, + {re: /[\xE0-\xE6]/g, ch: "a"}, + {re: /[\xC8-\xCB]/g, ch: "E"}, + {re: /[\xE8-\xEB]/g, ch: "e"}, + {re: /[\xCC-\xCF]/g, ch: "I"}, + {re: /[\xEC-\xEF]/g, ch: "i"}, + {re: /[\xD2-\xD6]/g, ch: "O"}, + {re: /[\xF2-\xF6]/g, ch: "o"}, + {re: /[\xD9-\xDC]/g, ch: "U"}, + {re: /[\xF9-\xFC]/g, ch: "u"}, + {re: /[\xC7-\xE7]/g, ch: "c"}, + {re: /[\xD1]/g, ch: "N"}, + {re: /[\xF1]/g, ch: "n"} + ]; + $.each(rExps, function () { + text = text.replace(this.re, this.ch); + }); + return text; + } + + + function htmlEscape(html) { + var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + var source = '(?:' + Object.keys(escapeMap).join('|') + ')', + testRegexp = new RegExp(source), + replaceRegexp = new RegExp(source, 'g'), + string = html == null ? '' : '' + html; + return testRegexp.test(string) ? string.replace(replaceRegexp, function (match) { + return escapeMap[match]; + }) : string; + } + + var Selectpicker = function (element, options, e) { + if (e) { + e.stopPropagation(); + e.preventDefault(); + } + + this.$element = $(element); + this.$newElement = null; + this.$button = null; + this.$menu = null; + this.$lis = null; + this.options = options; + + // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a + // data-attribute) + if (this.options.title === null) { + this.options.title = this.$element.attr('title'); + } + + //Expose public methods + this.val = Selectpicker.prototype.val; + this.render = Selectpicker.prototype.render; + this.refresh = Selectpicker.prototype.refresh; + this.setStyle = Selectpicker.prototype.setStyle; + this.selectAll = Selectpicker.prototype.selectAll; + this.deselectAll = Selectpicker.prototype.deselectAll; + this.destroy = Selectpicker.prototype.remove; + this.remove = Selectpicker.prototype.remove; + this.show = Selectpicker.prototype.show; + this.hide = Selectpicker.prototype.hide; + + this.init(); + }; + + Selectpicker.VERSION = '1.6.3'; + + // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both. + Selectpicker.DEFAULTS = { + noneSelectedText: 'Nothing selected', + noneResultsText: 'No results match', + countSelectedText: function (numSelected, numTotal) { + return (numSelected == 1) ? "{0} item selected" : "{0} items selected"; + }, + maxOptionsText: function (numAll, numGroup) { + var arr = []; + + arr[0] = (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)'; + arr[1] = (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'; + + return arr; + }, + selectAllText: 'Select All', + deselectAllText: 'Deselect All', + multipleSeparator: ', ', + style: 'btn-light', + size: 'auto', + title: null, + selectedTextFormat: 'values', + width: false, + container: false, + hideDisabled: false, + showSubtext: false, + showIcon: true, + showContent: true, + dropupAuto: true, + header: false, + liveSearch: false, + actionsBox: false, + iconBase: 'fa', + tickIcon: 'fa-check', + maxOptions: false, + mobile: false, + selectOnTab: false, + dropdownAlignRight: false, + searchAccentInsensitive: false + }; + + Selectpicker.prototype = { + + constructor: Selectpicker, + + init: function () { + var that = this, + id = this.$element.attr('id'); + + this.$element.hide(); + this.multiple = this.$element.prop('multiple'); + this.autofocus = this.$element.prop('autofocus'); + this.$newElement = this.createView(); + this.$element.after(this.$newElement); + this.$menu = this.$newElement.find('> .dropdown-menu'); + this.$button = this.$newElement.find('> button'); + this.$searchbox = this.$newElement.find('input'); + + if (this.options.dropdownAlignRight) + this.$menu.addClass('dropdown-menu-right'); + + if (typeof id !== 'undefined') { + this.$button.attr('data-id', id); + $('label[for="' + id + '"]').click(function (e) { + e.preventDefault(); + that.$button.focus(); + }); + } + + this.checkDisabled(); + this.clickListener(); + if (this.options.liveSearch) this.liveSearchListener(); + this.render(); + this.liHeight(); + this.setStyle(); + this.setWidth(); + if (this.options.container) this.selectPosition(); + this.$menu.data('this', this); + this.$newElement.data('this', this); + if (this.options.mobile) this.mobile(); + }, + + createDropdown: function () { + // Options + // If we are multiple, then add the show-tick class by default + var multiple = this.multiple ? ' show-tick' : '', + inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '', + autofocus = this.autofocus ? ' autofocus' : '', + btnSize = this.$element.parents().hasClass('form-group-lg') ? ' btn-lg' : (this.$element.parents().hasClass('form-group-sm') ? ' btn-sm' : ''); + // Elements + var header = this.options.header ? '
' + this.options.header + '
' : ''; + var searchbox = this.options.liveSearch ? '' : ''; + var actionsbox = this.options.actionsBox ? '
' + + '
' + + '' + + '' + + '
' + + '
' : ''; + var drop = + '
' + + '' + + '' + + '
'; + + return $(drop); + }, + + createView: function () { + var $drop = this.createDropdown(); + var $li = this.createLi(); + $drop.find('ul').append($li); + return $drop; + }, + + reloadLi: function () { + //Remove all children. + this.destroyLi(); + //Re build + var $li = this.createLi(); + this.$menu.find('ul').append($li); + }, + + destroyLi: function () { + this.$menu.find('li').remove(); + }, + + createLi: function () { + var that = this, + _li = [], + optID = 0; + + // Helper functions + /** + * @param content + * @param [index] + * @param [classes] + * @returns {string} + */ + var generateLI = function (content, index, classes) { + return '' + content + ''; + }; + + /** + * @param text + * @param [classes] + * @param [inline] + * @param [optgroup] + * @returns {string} + */ + var generateA = function (text, classes, inline, optgroup) { + var normText = normalizeToBase(htmlEscape(text)); + return '' + text + + '' + + ''; + }; + + this.$element.find('option').each(function () { + var $this = $(this); + + // Get the class and text for the option + var optionClass = $this.attr('class') || '', + inline = $this.attr('style'), + text = $this.data('content') ? $this.data('content') : $this.html(), + subtext = typeof $this.data('subtext') !== 'undefined' ? '' + $this.data('subtext') + '' : '', + icon = typeof $this.data('icon') !== 'undefined' ? ' ' : '', + isDisabled = $this.is(':disabled') || $this.parent().is(':disabled'), + index = $this[0].index; + if (icon !== '' && isDisabled) { + icon = '' + icon + ''; + } + + if (!$this.data('content')) { + // Prepend any icon and append any subtext to the main text. + text = icon + '' + text + subtext + ''; + } + + if (that.options.hideDisabled && isDisabled) { + return; + } + + if ($this.parent().is('optgroup') && $this.data('divider') !== true) { + if ($this.index() === 0) { // Is it the first option of the optgroup? + optID += 1; + + // Get the opt group label + var label = $this.parent().attr('label'); + var labelSubtext = typeof $this.parent().data('subtext') !== 'undefined' ? '' + $this.parent().data('subtext') + '' : ''; + var labelIcon = $this.parent().data('icon') ? ' ' : ''; + label = labelIcon + '' + label + labelSubtext + ''; + + if (index !== 0 && _li.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown? + _li.push(generateLI('', null, 'divider')); + } + + _li.push(generateLI(label, null, 'dropdown-header')); + } + + _li.push(generateLI(generateA(text, 'opt ' + optionClass, inline, optID), index)); + } else if ($this.data('divider') === true) { + _li.push(generateLI('', index, 'divider')); + } else if ($this.data('hidden') === true) { + _li.push(generateLI(generateA(text, optionClass, inline), index, 'hide is-hidden')); + } else { + _li.push(generateLI(generateA(text, optionClass, inline), index)); + } + }); + + //If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button + if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) { + this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected'); + } + + return $(_li.join('')); + }, + + findLis: function () { + if (this.$lis == null) this.$lis = this.$menu.find('li'); + return this.$lis; + }, + + /** + * @param [updateLi] defaults to true + */ + render: function (updateLi) { + var that = this; + + //Update the LI to match the SELECT + if (updateLi !== false) { + this.$element.find('option').each(function (index) { + that.setDisabled(index, $(this).is(':disabled') || $(this).parent().is(':disabled')); + that.setSelected(index, $(this).is(':selected')); + }); + } + + this.tabIndex(); + var notDisabled = this.options.hideDisabled ? ':not([disabled])' : ''; + var selectedItems = this.$element.find('option:selected' + notDisabled).map(function () { + var $this = $(this); + var icon = $this.data('icon') && that.options.showIcon ? ' ' : ''; + var subtext; + if (that.options.showSubtext && $this.attr('data-subtext') && !that.multiple) { + subtext = ' ' + $this.data('subtext') + ''; + } else { + subtext = ''; + } + if ($this.data('content') && that.options.showContent) { + return $this.data('content'); + } else if (typeof $this.attr('title') !== 'undefined') { + return $this.attr('title'); + } else { + return icon + $this.html() + subtext; + } + }).toArray(); + + //Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled + //Convert all the values into a comma delimited string + var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator); + + //If this is multi select, and the selectText type is count, the show 1 of 2 selected etc.. + if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) { + var max = this.options.selectedTextFormat.split('>'); + if ((max.length > 1 && selectedItems.length > max[1]) || (max.length == 1 && selectedItems.length >= 2)) { + notDisabled = this.options.hideDisabled ? ', [disabled]' : ''; + var totalCount = this.$element.find('option').not('[data-divider="true"], [data-hidden="true"]' + notDisabled).length, + tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText; + title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString()); + } + } + + this.options.title = this.$element.attr('title'); + + if (this.options.selectedTextFormat == 'static') { + title = this.options.title; + } + + //If we dont have a title, then use the default, or if nothing is set at all, use the not selected text + if (!title) { + title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText; + } + + this.$button.attr('title', htmlEscape(title)); + this.$newElement.find('.filter-option').html(title); + }, + + /** + * @param [style] + * @param [status] + */ + setStyle: function (style, status) { + if (this.$element.attr('class')) { + this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|validate\[.*\]/gi, '')); + } + + var buttonClass = style ? style : this.options.style; + + if (status == 'add') { + this.$button.addClass(buttonClass); + } else if (status == 'remove') { + this.$button.removeClass(buttonClass); + } else { + this.$button.removeClass(this.options.style); + this.$button.addClass(buttonClass); + } + }, + + liHeight: function () { + if (this.options.size === false) return; + + var $selectClone = this.$menu.parent().clone().find('> .dropdown-toggle').prop('autofocus', false).end().appendTo('body'), + $menuClone = $selectClone.addClass('open').find('> .dropdown-menu'), + liHeight = $menuClone.find('li').not('.divider').not('.dropdown-header').filter(':visible').children('a').outerHeight(), + headerHeight = this.options.header ? $menuClone.find('.popover-title').outerHeight() : 0, + searchHeight = this.options.liveSearch ? $menuClone.find('.bs-searchbox').outerHeight() : 0, + actionsHeight = this.options.actionsBox ? $menuClone.find('.bs-actionsbox').outerHeight() : 0; + + $selectClone.remove(); + + this.$newElement + .data('liHeight', liHeight) + .data('headerHeight', headerHeight) + .data('searchHeight', searchHeight) + .data('actionsHeight', actionsHeight); + }, + + setSize: function () { + this.findLis(); + var that = this, + menu = this.$menu, + menuInner = menu.find('.inner'), + selectHeight = this.$newElement.outerHeight(), + liHeight = this.$newElement.data('liHeight'), + headerHeight = this.$newElement.data('headerHeight'), + searchHeight = this.$newElement.data('searchHeight'), + actionsHeight = this.$newElement.data('actionsHeight'), + divHeight = this.$lis.filter('.divider').outerHeight(true), + menuPadding = parseInt(menu.css('padding-top')) + + parseInt(menu.css('padding-bottom')) + + parseInt(menu.css('border-top-width')) + + parseInt(menu.css('border-bottom-width')), + notDisabled = this.options.hideDisabled ? ', .disabled' : '', + $window = $(window), + menuExtras = menuPadding + parseInt(menu.css('margin-top')) + parseInt(menu.css('margin-bottom')) + 2, + menuHeight, + selectOffsetTop, + selectOffsetBot, + posVert = function () { + // JQuery defines a scrollTop function, but in pure JS it's a property + //noinspection JSValidateTypes + selectOffsetTop = that.$newElement.offset().top - $window.scrollTop(); + selectOffsetBot = $window.height() - selectOffsetTop - selectHeight; + }; + posVert(); + if (this.options.header) menu.css('padding-top', 0); + + if (this.options.size == 'auto') { + var getSize = function () { + var minHeight, + lisVis = that.$lis.not('.hide'); + + posVert(); + menuHeight = selectOffsetBot - menuExtras; + + if (that.options.dropupAuto) { + that.$newElement.toggleClass('dropup', (selectOffsetTop > selectOffsetBot) && ((menuHeight - menuExtras) < menu.height())); + } + if (that.$newElement.hasClass('dropup')) { + menuHeight = selectOffsetTop - menuExtras; + } + + if ((lisVis.length + lisVis.filter('.dropdown-header').length) > 3) { + minHeight = liHeight * 3 + menuExtras - 2; + } else { + minHeight = 0; + } + + menu.css({ + 'max-height': menuHeight + 'px', + 'overflow': 'hidden', + 'min-height': minHeight + headerHeight + searchHeight + actionsHeight + 'px' + }); + menuInner.css({ + 'max-height': menuHeight - headerHeight - searchHeight - actionsHeight - menuPadding + 'px', + 'overflow-y': 'auto', + 'min-height': Math.max(minHeight - menuPadding, 0) + 'px' + }); + }; + getSize(); + this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize); + $(window).off('resize.getSize').on('resize.getSize', getSize); + $(window).off('scroll.getSize').on('scroll.getSize', getSize); + } else if (this.options.size && this.options.size != 'auto' && menu.find('li' + notDisabled).length > this.options.size) { + var optIndex = this.$lis.not('.divider' + notDisabled).find(' > *').slice(0, this.options.size).last().parent().index(); + var divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length; + menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding; + if (that.options.dropupAuto) { + //noinspection JSUnusedAssignment + this.$newElement.toggleClass('dropup', (selectOffsetTop > selectOffsetBot) && (menuHeight < menu.height())); + } + menu.css({'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + 'px', 'overflow': 'hidden'}); + menuInner.css({'max-height': menuHeight - menuPadding + 'px', 'overflow-y': 'auto'}); + } + }, + + setWidth: function () { + if (this.options.width == 'auto') { + this.$menu.css('min-width', '0'); + + // Get correct width if element hidden + var selectClone = this.$newElement.clone().appendTo('body'); + var ulWidth = selectClone.find('> .dropdown-menu').css('width'); + var btnWidth = selectClone.css('width', 'auto').find('> button').css('width'); + selectClone.remove(); + + // Set width to whatever's larger, button title or longest option + this.$newElement.css('width', Math.max(parseInt(ulWidth), parseInt(btnWidth)) + 'px'); + } else if (this.options.width == 'fit') { + // Remove inline min-width so width can be changed from 'auto' + this.$menu.css('min-width', ''); + this.$newElement.css('width', '').addClass('fit-width'); + } else if (this.options.width) { + // Remove inline min-width so width can be changed from 'auto' + this.$menu.css('min-width', ''); + this.$newElement.css('width', this.options.width); + } else { + // Remove inline min-width/width so width can be changed + this.$menu.css('min-width', ''); + this.$newElement.css('width', ''); + } + // Remove fit-width class if width is changed programmatically + if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') { + this.$newElement.removeClass('fit-width'); + } + }, + + selectPosition: function () { + var that = this, + drop = '
+ + + + + + + + + + + + \ No newline at end of file diff --git a/admin/ssp.pastes.php b/admin/ssp.pastes.php new file mode 100644 index 0000000..5647bd9 --- /dev/null +++ b/admin/ssp.pastes.php @@ -0,0 +1,417 @@ + intval( $request['draw'] ), + "recordsTotal" => intval( $recordsTotal ), + "recordsFiltered" => intval( $recordsFiltered ), + "data" => self::data_output( $columns2, $data ) + ); + } + + + /** + * Connect to the database + * + * @param array $sql_details SQL server connection details array, with the + * properties: + * * host - host name + * * db - database name + * * user - user name + * * pass - user password + * @return resource Database connection handle + */ + static function sql_connect ( $sql_details ) + { + try { + $db = @new PDO( + "mysql:host={$sql_details['host']};dbname={$sql_details['db']}", + $sql_details['user'], + $sql_details['pass'], + array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ) + ); + } + catch (PDOException $e) { + self::fatal( + "An error occurred while connecting to the database. ". + "The error reported by the server was: ".$e->getMessage() + ); + } + + return $db; + } + + + /** + * Execute an SQL query on the database + * + * @param resource $db Database handler + * @param array $bindings Array of PDO binding values from bind() to be + * used for safely escaping strings. Note that this can be given as the + * SQL query string if no bindings are required. + * @param string $sql SQL query to execute. + * @return array Result from the query (all rows) + */ + static function sql_exec ( $db, $bindings, $sql=null ) + { + // Argument shifting + if ( $sql === null ) { + $sql = $bindings; + } + + $stmt = $db->prepare( $sql ); + //echo $sql; + + // Bind parameters + if ( is_array( $bindings ) ) { + for ( $i=0, $ien=count($bindings) ; $i<$ien ; $i++ ) { + $binding = $bindings[$i]; + $stmt->bindValue( $binding['key'], $binding['val'], $binding['type'] ); + } + } + + // Execute + try { + $stmt->execute(); + } + catch (PDOException $e) { + self::fatal( "An SQL error occurred: ".$e->getMessage() ); + } + $result= $stmt->fetchAll(); + return $result; + } + + static function Ssql_exec ($db, $bindings, $sql=null ) + { + // Argument shifting + if ( $sql === null ) { + $sql = $bindings; + } + + $stmt = $db->prepare( $sql ); + + // Bind parameters + if ( is_array( $bindings ) ) { + for ( $i=0, $ien=count($bindings) ; $i<$ien ; $i++ ) { + $binding = $bindings[$i]; + $stmt->bindValue( $binding['key'], $binding['val'], $binding['type'] ); + } + } + + // Execute + try { + $stmt->execute(); + } + catch (PDOException $e) { + self::fatal( "An SQL error occurred: ".$e->getMessage() ); + } + $loop = '0'; + + while ($arr = $stmt->fetch(PDO::FETCH_ASSOC)) { + $result[$loop]['id']= $arr['id']; + $result[$loop]['member']= $arr['member']; + $result[$loop]['ip']= $arr['ip']; + $vis = Trim($arr['visible']); + if ($vis == '0') + { + $result[$loop]['visible'] = "Public"; + } + elseif ($vis == '1') + { + $result[$loop]['visible'] = "Unlisted"; + } + elseif ($vis == '2') + { + $result[$loop]['visible'] = "Private"; + } + $myid = $arr['id']; + $result[$loop]['details'] =" Details "; + $result[$loop]['view'] = " View "; + $result[$loop]['delete'] =" Delete Ban IP "; + $loop = $loop +1; + } + // Return all + return $result; + } + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Internal methods + */ + + /** + * Throw a fatal error. + * + * This writes out an error message in a JSON string which DataTables will + * see and show to the user in the browser. + * + * @param string $msg Message to send to the client + */ + static function fatal ( $msg ) + { + echo json_encode( array( + "error" => $msg + ) ); + + exit(0); + } + + /** + * Create a PDO binding key which can be used for escaping variables safely + * when executing a query with sql_exec() + * + * @param array &$a Array of bindings + * @param * $val Value to bind + * @param int $type PDO field type + * @return string Bound key to be used in the SQL where this parameter + * would be used. + */ + static function bind ( &$a, $val, $type ) + { + $key = ':binding_'.count( $a ); + + $a[] = array( + 'key' => $key, + 'val' => $val, + 'type' => $type + ); + + return $key; + } + + + /** + * Pull a particular property from each assoc. array in a numeric array, + * returning and array of the property values from each item. + * + * @param array $a Array to get data from + * @param string $prop Property to read + * @return array Array of property values + */ + static function pluck ( $a, $prop ) + { + $out = array(); + + for ( $i=0, $len=count($a) ; $i<$len ; $i++ ) { + $out[] = $a[$i][$prop]; + } + + return $out; + } +} + +?> \ No newline at end of file diff --git a/admin/ssp.users.php b/admin/ssp.users.php new file mode 100644 index 0000000..099a9c0 --- /dev/null +++ b/admin/ssp.users.php @@ -0,0 +1,426 @@ + intval( $request['draw'] ), + "recordsTotal" => intval( $recordsTotal ), + "recordsFiltered" => intval( $recordsFiltered ), + "data" => self::data_output( $columns2, $data ) + ); + } + + + /** + * Connect to the database + * + * @param array $sql_details SQL server connection details array, with the + * properties: + * * host - host name + * * db - database name + * * user - user name + * * pass - user password + * @return resource Database connection handle + */ + static function sql_connect ( $sql_details ) + { + try { + $db = @new PDO( + "mysql:host={$sql_details['host']};dbname={$sql_details['db']}", + $sql_details['user'], + $sql_details['pass'], + array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ) + ); + } + catch (PDOException $e) { + self::fatal( + "An error occurred while connecting to the database. ". + "The error reported by the server was: ".$e->getMessage() + ); + } + + return $db; + } + + + /** + * Execute an SQL query on the database + * + * @param resource $db Database handler + * @param array $bindings Array of PDO binding values from bind() to be + * used for safely escaping strings. Note that this can be given as the + * SQL query string if no bindings are required. + * @param string $sql SQL query to execute. + * @return array Result from the query (all rows) + */ + static function sql_exec ( $db, $bindings, $sql=null ) + { + // Argument shifting + if ( $sql === null ) { + $sql = $bindings; + } + + $stmt = $db->prepare( $sql ); + //echo $sql; + + // Bind parameters + if ( is_array( $bindings ) ) { + for ( $i=0, $ien=count($bindings) ; $i<$ien ; $i++ ) { + $binding = $bindings[$i]; + $stmt->bindValue( $binding['key'], $binding['val'], $binding['type'] ); + } + } + + // Execute + try { + $stmt->execute(); + } + catch (PDOException $e) { + self::fatal( "An SQL error occurred: ".$e->getMessage() ); + } + $result= $stmt->fetchAll(); + return $result; + } + + static function Ssql_exec ($db, $bindings, $sql=null ) + { + // Argument shifting + if ( $sql === null ) { + $sql = $bindings; + } + + $stmt = $db->prepare( $sql ); + + // Bind parameters + if ( is_array( $bindings ) ) { + for ( $i=0, $ien=count($bindings) ; $i<$ien ; $i++ ) { + $binding = $bindings[$i]; + $stmt->bindValue( $binding['key'], $binding['val'], $binding['type'] ); + } + } + + // Execute + try { + $stmt->execute(); + } + catch (PDOException $e) { + self::fatal( "An SQL error occurred: ".$e->getMessage() ); + } + $loop = '0'; + + while ($arr = $stmt->fetch(PDO::FETCH_ASSOC)) { + $result[$loop]['username']= $arr['username']; + $result[$loop]['platform']= $arr['platform']; + $result[$loop]['date']= $arr['date']; + $result[$loop]['email_id']= $arr['email_id']; + $ver = $arr['verified']; + if ($arr['oauth_uid'] == '0') + { + $result[$loop]['oauth_uid'] = 'None'; + } + else + { + $result[$loop]['oauth_uid'] = $arr['oauth_uid'] ; + } + + $myid = $arr['id']; + if ($ver == '0') + { + $result[$loop]['ban'] ="User unverified"; + } + elseif ($ver == '1') + { + $result[$loop]['ban'] =" Ban "; + } + elseif ($ver == '2') + { + $result[$loop]['ban'] =" Unban "; + } + $result[$loop]['view'] = " Details "; + $result[$loop]['delete'] =" Delete "; + $loop = $loop +1; + } + // Return all + return $result; + } + + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Internal methods + */ + + /** + * Throw a fatal error. + * + * This writes out an error message in a JSON string which DataTables will + * see and show to the user in the browser. + * + * @param string $msg Message to send to the client + */ + static function fatal ( $msg ) + { + echo json_encode( array( + "error" => $msg + ) ); + + exit(0); + } + + /** + * Create a PDO binding key which can be used for escaping variables safely + * when executing a query with sql_exec() + * + * @param array &$a Array of bindings + * @param * $val Value to bind + * @param int $type PDO field type + * @return string Bound key to be used in the SQL where this parameter + * would be used. + */ + static function bind ( &$a, $val, $type ) + { + $key = ':binding_'.count( $a ); + + $a[] = array( + 'key' => $key, + 'val' => $val, + 'type' => $type + ); + + return $key; + } + + + /** + * Pull a particular property from each assoc. array in a numeric array, + * returning and array of the property values from each item. + * + * @param array $a Array to get data from + * @param string $prop Property to read + * @return array Array of property values + */ + static function pluck ( $a, $prop ) + { + $out = array(); + + for ( $i=0, $len=count($a) ; $i<$len ; $i++ ) { + $out[] = $a[$i][$prop]; + } + + return $out; + } +} + +?> \ No newline at end of file diff --git a/admin/stats.php b/admin/stats.php new file mode 100644 index 0000000..a4a5edc --- /dev/null +++ b/admin/stats.php @@ -0,0 +1,387 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ +session_start(); + +if (isset($_SESSION['login'])) { +// Do nothing +} else { + header("Location: ."); + exit(); +} + +if (isset($_GET['logout'])) { + if (isset($_SESSION['login'])) + unset($_SESSION['login']); + + session_destroy(); + header("Location: ."); + exit(); +} + +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; +require_once('../config.php'); +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); + +if (mysqli_connect_errno()) { + $sql_error = mysqli_connect_error(); + die("Unable connect to database"); +} + +$query = "SELECT @last_id := MAX(id) FROM admin_history"; + +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_id = $row['@last_id := MAX(id)']; +} + +$query = "SELECT * FROM admin_history WHERE id=" . Trim($last_id); +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_date = $row['last_date']; + $last_ip = $row['ip']; +} + +if ($last_ip == $ip) { + if ($last_date == $date) { + + } else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); + } +} else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); +} +?> + + + + + + + Paste - Statistics + + + + + +
+ + + + + + + +
+ + +
+ +
+ +
+
+ +
+
+ + + + + +
+
+
+
+
Statistics
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TaskStats
Total Pastes
Expired Pastes
Total Users
Total Banned Users
Unverified users
Total Page Views
Total Unique Visitors
+
+
+
+
+ + + +
+
+
+
+
Page Views
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DateUnique VisitorsViews
+
+
+
+
+ +
+ + + + + +
+ + + + + + \ No newline at end of file diff --git a/admin/tasks.php b/admin/tasks.php new file mode 100644 index 0000000..6116db6 --- /dev/null +++ b/admin/tasks.php @@ -0,0 +1,270 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ +session_start(); + +if (isset($_SESSION['login'])) { +// Do nothing +} else { + header("Location: ."); + exit(); +} + +if (isset($_GET['logout'])) { + if (isset($_SESSION['login'])) + unset($_SESSION['login']); + + session_destroy(); + header("Location: ."); + exit(); +} + +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; +require_once('../config.php'); +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); + +if (mysqli_connect_errno()) { + $sql_error = mysqli_connect_error(); + die("Unable connect to database"); +} + +$query = "SELECT @last_id := MAX(id) FROM admin_history"; + +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_id = $row['@last_id := MAX(id)']; +} + +$query = "SELECT * FROM admin_history WHERE id=" . Trim($last_id); +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_date = $row['last_date']; + $last_ip = $row['ip']; +} + +if ($last_ip == $ip) { + if ($last_date == $date) { + + } else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); + } +} else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); +} +?> + + + + + + + Paste - Tasks + + + + + +
+ + + + + + + +
+ + +
+ +
+ +
+
+ +
+
+ + + + ' . mysqli_error($con) . ' +
'; + + } else { + $msg = '
+ All expired pastes have been deleted +
'; + } + } + if (isset($_GET['all_pastes'])) { + $query = "DELETE FROM pastes"; + mysqli_query($con, $query); + + if (mysqli_errno($con)) { + $msg = '
+ ' . mysqli_error($con) . ' +
'; + + } else { + $msg = '
+ All pastes have been deleted +
'; + } + + } + if (isset($_GET['not_verfied'])) { + $query = "DELETE FROM users where verified='0'"; + mysqli_query($con, $query); + + if (mysqli_errno($con)) { + $msg = '
+ ' . mysqli_error($con) . ' +
'; + + } else { + $msg = '
+ All unverified accounts have been deleted +
'; + } + } + if (isset($_GET['admin_history'])) { + $query = "DELETE FROM admin_history"; + mysqli_query($con, $query); + + if (mysqli_errno($con)) { + $msg = '
+ ' . mysqli_error($con) . ' +
'; + + } else { + $msg = '
+ Admin history has been cleared +
'; + } + } + ?> + + + + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/admin/users.php b/admin/users.php new file mode 100644 index 0000000..589208a --- /dev/null +++ b/admin/users.php @@ -0,0 +1,340 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ +session_start(); + +if (isset($_SESSION['login'])) { +// Do nothing +} else { + header("Location: ."); + exit(); +} + +if (isset($_GET['logout'])) { + if (isset($_SESSION['login'])) + unset($_SESSION['login']); + + session_destroy(); + header("Location: ."); + exit(); +} + +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; +require_once('../config.php'); +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); + +if (mysqli_connect_errno()) { + $sql_error = mysqli_connect_error(); + die("Unable connect to database"); +} + +$query = "SELECT @last_id := MAX(id) FROM admin_history"; + +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_id = $row['@last_id := MAX(id)']; +} + +$query = "SELECT * FROM admin_history WHERE id=" . Trim($last_id); +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_date = $row['last_date']; + $last_ip = $row['ip']; +} + +if ($last_ip == $ip) { + if ($last_date == $date) { + + } else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); + } +} else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); +} +?> + + + + + + + Paste - Users + + + + + + +
+ + + + + + + +
+ + +
+ +
+ +
+
+ +
+
+ + + + ' . mysqli_error($con) . ' +
'; + } else { + $msg = '
+ User deleted +
'; + } + } + + if (isset($_GET['ban'])) { + $ban_id = htmlentities(Trim($_GET['ban'])); + $query = "UPDATE users SET verified='2' WHERE id='$ban_id'"; + $result = mysqli_query($con, $query); + if (mysqli_errno($con)) { + $msg = '
+ ' . mysqli_error($con) . ' +
'; + } else { + $msg = '
+ User banned +
'; + } + } + + if (isset($_GET['unban'])) { + $ban_id = htmlentities(Trim($_GET['unban'])); + $query = "UPDATE users SET verified='1' WHERE id='$ban_id'"; + $result = mysqli_query($con, $query); + if (mysqli_errno($con)) { + $msg = '
+ ' . mysqli_error($con) . ' +
'; + } else { + $msg = '
+ User unbanned +
'; + } + } + ?> + + +
+
+
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Username
Email ID
Platform
OAUTH ID
Status
User IP
Date Registered
Full Name
+
+ + +
+
+ Manage Users +
+ + + + + + + + + + + + + + + + + + + +
UsernameEmail IDDate RegisteredPlatformOAUTH IDBan UserProfileDelete
+
+ +
+
+
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/archive.php b/archive.php new file mode 100644 index 0000000..5bebf57 --- /dev/null +++ b/archive.php @@ -0,0 +1,160 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ +session_start(); + +require_once('config.php'); +require_once('includes/functions.php'); + +// UTF-8 +header('Content-Type: text/html; charset=utf-8'); + +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; +$data_ip = file_get_contents('tmp/temp.tdata'); +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); + +if (mysqli_connect_errno()) { + die("Unable to connect to database"); +} +$query = "SELECT * FROM site_info"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $title = Trim($row['title']); + $des = Trim($row['des']); + $baseurl = Trim($row['baseurl']); + $keyword = Trim($row['keyword']); + $site_name = Trim($row['site_name']); + $email = Trim($row['email']); + $twit = Trim($row['twit']); + $face = Trim($row['face']); + $gplus = Trim($row['gplus']); + $ga = Trim($row['ga']); + $additional_scripts = Trim($row['additional_scripts']); +} + +// Set theme and language +$query = "SELECT * FROM interface"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $default_lang = Trim($row['lang']); + $default_theme = Trim($row['theme']); +} + +require_once("langs/$default_lang"); + +$p_title = $lang['archive']; // "Pastes Archive"; + +// Check if IP is banned +if ( is_banned($con, $ip) ) die($lang['banned']); // "You have been banned from ".$site_name; + +// Site permissions +$query = "SELECT * FROM site_permissions where id='1'"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $siteprivate = Trim($row['siteprivate']); +} + +if ($_SERVER['REQUEST_METHOD'] == 'POST') { +} else { + if ($siteprivate =="on") { + $privatesite = "on"; + } +} + +// Logout +if (isset($_GET['logout'])) { + header('Location: ' . $_SERVER['HTTP_REFERER']); + unset($_SESSION['token']); + unset($_SESSION['oauth_uid']); + unset($_SESSION['username']); + session_destroy(); +} + +// Page views +$query = "SELECT @last_id := MAX(id) FROM page_view"; + +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_id = $row['@last_id := MAX(id)']; +} + +$query = "SELECT * FROM page_view WHERE id=" . Trim($last_id); +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_date = $row['date']; +} + +if ($last_date == $date) { + if (str_contains($data_ip, $ip)) { + $query = "SELECT * FROM page_view WHERE id=" . Trim($last_id); + $result = mysqli_query($con, $query); + + while ($row = mysqli_fetch_array($result)) { + $last_tpage = Trim($row['tpage']); + } + $last_tpage = $last_tpage + 1; + + // IP already exists. Update view count. + $query = "UPDATE page_view SET tpage=$last_tpage WHERE id=" . Trim($last_id); + mysqli_query($con, $query); + } else { + $query = "SELECT * FROM page_view WHERE id=" . Trim($last_id); + $result = mysqli_query($con, $query); + + while ($row = mysqli_fetch_array($result)) { + $last_tpage = Trim($row['tpage']); + $last_tvisit = Trim($row['tvisit']); + } + $last_tpage = $last_tpage + 1; + $last_tvisit = $last_tvisit + 1; + + // Update both tpage and tvisit. + $query = "UPDATE page_view SET tpage=$last_tpage,tvisit=$last_tvisit WHERE id=" . Trim($last_id); + mysqli_query($con, $query); + file_put_contents('tmp/temp.tdata', $data_ip . "\r\n" . $ip); + } +} else { + // Delete the file and clear data_ip + unlink("tmp/temp.tdata"); + $data_ip = ""; + + // New date is created + $query = "INSERT INTO page_view (date,tpage,tvisit) VALUES ('$date','1','1')"; + mysqli_query($con, $query); + + // Update the IP + file_put_contents('tmp/temp.tdata', $data_ip . "\r\n" . $ip); + +} + +$query = "SELECT * FROM ads WHERE id='1'"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $text_ads = Trim($row['text_ads']); + $ads_1 = Trim($row['ads_1']); + $ads_2 = Trim($row['ads_2']); + +} +// Theme +require_once('theme/' . $default_theme . '/header.php'); +require_once('theme/' . $default_theme . '/archive.php'); +require_once('theme/' . $default_theme . '/footer.php'); +?> \ No newline at end of file diff --git a/config.php b/config.php new file mode 100644 index 0000000..4704448 --- /dev/null +++ b/config.php @@ -0,0 +1,308 @@ + 'GADV 4CS', + '6502acme' => 'ACME Cross Assembler', + '6502kickass' => 'Kick Assembler', + '6502tasm' => 'TASM/64TASS 1.46', + '68000devpac' => 'HiSoft Devpac ST 2', + 'abap' => 'ABAP', + 'actionscript' => 'ActionScript', + 'actionscript3' => 'ActionScript 3', + 'ada' => 'Ada', + 'aimms' => 'AIMMS3', + 'algol68' => 'ALGOL 68', + 'apache' => 'Apache', + 'applescript' => 'AppleScript', + 'arm' => 'ARM Assembler', + 'asm' => 'ASM', + 'asp' => 'ASP', + 'asymptote' => 'Asymptote', + 'autoconf' => 'Autoconf', + 'autohotkey' => 'Autohotkey', + 'autoit' => 'AutoIt', + 'avisynth' => 'AviSynth', + 'awk' => 'Awk', + 'bascomavr' => 'BASCOM AVR', + 'bash' => 'BASH', + 'basic4gl' => 'Basic4GL', + 'bf' => 'Brainfuck', + 'bibtex' => 'BibTeX', + 'blitzbasic' => 'BlitzBasic', + 'bnf' => 'BNF', + 'boo' => 'Boo', + 'c' => 'C', + 'c_loadrunner' => 'C (LoadRunner)', + 'c_mac' => 'C for Macs', + 'c_winapi' => 'C (WinAPI)', + 'caddcl' => 'CAD DCL', + 'cadlisp' => 'CAD Lisp', + 'cfdg' => 'CFDG', + 'cfm' => 'ColdFusion', + 'chaiscript' => 'ChaiScript', + 'chapel' => 'Chapel', + 'cil' => 'CIL', + 'clojure' => 'Clojure', + 'cmake' => 'CMake', + 'cobol' => 'COBOL', + 'coffeescript' => 'CoffeeScript', + 'cpp' => 'C++', + 'cpp-qt' => 'C++ (with QT extensions)', + 'cpp-winapi' => 'C++ (WinAPI)', + 'csharp' => 'C#', + 'css' => 'CSS', + 'cuesheet' => 'Cuesheet', + 'd' => 'D', + 'dcl' => 'DCL', + 'dcpu16' => 'DCPU-16 Assembly', + 'dcs' => 'DCS', + 'delphi' => 'Delphi', + 'diff' => 'Diff-output', + 'div' => 'DIV', + 'dos' => 'DOS', + 'dot' => 'dot', + 'e' => 'E', + 'ecmascript' => 'ECMAScript', + 'eiffel' => 'Eiffel', + 'email' => 'eMail (mbox)', + 'epc' => 'EPC', + 'erlang' => 'Erlang', + 'euphoria' => 'Euphoria', + 'ezt' => 'EZT', + 'f1' => 'Formula One', + 'falcon' => 'Falcon', + 'fo' => 'FO (abas-ERP)', + 'fortran' => 'Fortran', + 'freebasic' => 'FreeBasic', + 'fsharp' => 'F#', + 'gambas' => 'GAMBAS', + 'gdb' => 'GDB', + 'genero' => 'Genero', + 'genie' => 'Genie', + 'gettext' => 'GNU Gettext', + 'glsl' => 'glSlang', + 'gml' => 'GML', + 'gnuplot' => 'GNUPlot', + 'go' => 'Go', + 'groovy' => 'Groovy', + 'gwbasic' => 'GwBasic', + 'haskell' => 'Haskell', + 'haxe' => 'Haxe', + 'hicest' => 'HicEst', + 'hq9plus' => 'HQ9+', + 'html4strict' => 'HTML 4.01', + 'html5' => 'HTML 5', + 'icon' => 'Icon', + 'idl' => 'Uno Idl', + 'ini' => 'INI', + 'inno' => 'Inno Script', + 'intercal' => 'INTERCAL', + 'io' => 'IO', + 'ispfpanel' => 'ISPF Panel', + 'j' => 'J', + 'java' => 'Java', + 'java5' => 'Java 5', + 'javascript' => 'JavaScript', + 'jcl' => 'JCL', + 'jquery' => 'jQuery', + 'kixtart' => 'KiXtart', + 'klonec' => 'KLone C', + 'klonecpp' => 'KLone C++', + 'latex' => 'LaTeX', + 'lb' => 'Liberty BASIC', + 'ldif' => 'LDIF', + 'lisp' => 'Lisp', + 'llvm' => 'LLVM', + 'locobasic' => 'Locomotive Basic', + 'logtalk' => 'Logtalk', + 'lolcode' => 'LOLcode', + 'lotusformulas' => 'Lotus Notes @Formulas', + 'lotusscript' => 'LotusScript', + 'lscript' => 'Lightwave Script', + 'lsl2' => 'Linden Script', + 'lua' => 'LUA', + 'm68k' => 'Motorola 68000 Assembler', + 'magiksf' => 'MagikSF', + 'make' => 'GNU make', + 'mapbasic' => 'MapBasic', + 'markdown' => 'Markdown', + 'matlab' => 'Matlab M', + 'mirc' => 'mIRC Scripting', + 'mmix' => 'MMIX', + 'modula2' => 'Modula-2', + 'modula3' => 'Modula-3', + 'mpasm' => 'Microchip Assembler', + 'mxml' => 'MXML', + 'mysql' => 'MySQL', + 'nagios' => 'Nagios', + 'netrexx' => 'NetRexx', + 'newlisp' => 'NewLisp', + 'nginx' => 'Nginx', + 'nsis' => 'NSIS', + 'oberon2' => 'Oberon-2', + 'objc' => 'Objective-C', + 'objeck' => 'Objeck', + 'ocaml' => 'Ocaml', + 'ocaml-brief' => 'OCaml (Brief)', + 'octave' => 'GNU/Octave', + 'oobas' => 'OpenOffice.org Basic', + 'oorexx' => 'ooRexx', + 'oracle11' => 'Oracle 11 SQL', + 'oracle8' => 'Oracle 8 SQL', + 'oxygene' => 'Oxygene (Delphi Prism)', + 'oz' => 'OZ', + 'parasail' => 'ParaSail', + 'parigp' => 'PARI/GP', + 'pascal' => 'Pascal', + 'pcre' => 'PCRE', + 'per' => 'Per (forms)', + 'perl' => 'Perl', + 'perl6' => 'Perl 6', + 'pf' => 'OpenBSD Packet Filter', + 'php' => 'PHP', + 'php-brief' => 'PHP (Brief)', + 'pic16' => 'PIC16 Assembler', + 'pike' => 'Pike', + 'pixelbender' => 'Pixel Bender', + 'pli' => 'PL/I', + 'plsql' => 'PL/SQL', + 'postgresql' => 'PostgreSQL', + 'povray' => 'POVRAY', + 'powerbuilder' => 'PowerBuilder', + 'powershell' => 'PowerShell', + 'proftpd' => 'ProFTPd config', + 'progress' => 'Progress', + 'prolog' => 'Prolog', + 'properties' => 'Properties', + 'providex' => 'ProvideX', + 'purebasic' => 'PureBasic', + 'pycon' => 'Python (console mode)', + 'pys60' => 'Python for S60', + 'python' => 'Python', + 'qbasic' => 'QuickBASIC', + 'racket' => 'Racket', + 'rails' => 'Ruby on Rails', + 'rbs' => 'RBScript', + 'rebol' => 'REBOL', + 'reg' => 'Microsoft REGEDIT', + 'rexx' => 'Rexx', + 'robots' => 'robots.txt', + 'rpmspec' => 'RPM Specification File', + 'rsplus' => 'R / S+', + 'ruby' => 'Ruby', + 'sas' => 'SAS', + 'scala' => 'Scala', + 'scheme' => 'Scheme', + 'scilab' => 'SciLab', + 'scl' => 'SCL', + 'sdlbasic' => 'sdlBasic', + 'smalltalk' => 'Smalltalk', + 'smarty' => 'Smarty', + 'spark' => 'SPARK', + 'sparql' => 'SPARQL', + 'sql' => 'SQL', + 'stonescript' => 'StoneScript', + 'systemverilog' => 'SystemVerilog', + 'tcl' => 'TCL', + 'teraterm' => 'Tera Term Macro', + 'text' => 'Plain Text', + 'thinbasic' => 'thinBasic', + 'tsql' => 'T-SQL', + 'typoscript' => 'TypoScript', + 'unicon' => 'Unicon', + 'upc' => 'UPC', + 'urbi' => 'Urbi', + 'unrealscript' => 'Unreal Script', + 'vala' => 'Vala', + 'vb' => 'Visual Basic', + 'vbnet' => 'VB.NET', + 'vbscript' => 'VB Script', + 'vedit' => 'Vedit Macro', + 'verilog' => 'Verilog', + 'vhdl' => 'VHDL', + 'vim' => 'Vim', + 'visualfoxpro' => 'Visual FoxPro', + 'visualprolog' => 'Visual Prolog', + 'whitespace' => 'Whitespace', + 'whois' => 'WHOIS (RPSL format)', + 'winbatch' => 'WinBatch', + 'xbasic' => 'XBasic', + 'xml' => 'XML', + 'xorg_conf' => 'Xorg Config', + 'xpp' => 'X++', + 'yaml' => 'YAML', + 'z80' => 'ZiLOG Z80 Assembler', + 'zxbasic' => 'ZXBasic' +); + +// Popular formats that are listed first. +$popular_formats=array( + 'bash', + 'tcl', + 'text', + 'html4strict', + 'html5', + 'css', + 'javascript', + 'php', + 'perl', + 'python', + 'postgresql', + 'sql', + 'xml', + 'java', + 'c', + 'cpp', + 'markdown' +); +?> diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md new file mode 100644 index 0000000..6ac4f9c --- /dev/null +++ b/docs/CHANGELOG.md @@ -0,0 +1,84 @@ +# Changelog for **[Paste](https://phpaste.sourceforge.io/)** (Updated on 14/12/2016) + +New version - 2.2 +- + +Frontend changes +* add french translations +* set markdown as default paste language + +Backend changes +* secure email verifications against SQL injections + +Other changes +* Fix php7 compatibility problems +* Code cleanup + +New version - 2.1 +- +Frontend changes +* User pages has been added and 'My Pastes' have been streamlined into this +* Ability to Fork or Edit pastes +* Raw view added +* Ability to embed pastes on websites +* Pastes can now be submitted and parsed as Markdown using **[Parsedown](http://parsedown.org/)** +* Added reCAPTCHA 2 support + +Backend changes +* New options in the Admin panel in Configuration > Permissions + + Option to only allow registered users to paste + + Option to make site private, ie by disabling Recent Pastes and Archives + +* New theme added: clean --- A white/grey version of the default theme +* New option in the Admin Panel in Configuration > Mail Settings to disable or enable email verification +* New option in the Admin panel in Configuration > Site Info to add javascript to the footer +* Added functionality in the Admin panel in >Pastes to ban IPs directly from the list +* Added functionality in the Admin panel in >Dashboard to compare the current installed version with the latest version + +Other changes +* Code cleanup and elimination of errors + +Previous version - 2.0 +- + +* New theme +* An installer +* User accounts added + + Ability to login and register with email verification + + 'My Pastes' page with options to view and delete pastes + +* Admin panel added + + Dashboard (front page) with a header to display some statistics of the day: overall views, unique views, pastes & users and lists to display recent pastes, users and admin logins + + Configuration page to apply Site name, title, description and keywords metatags, with sublinks to other configuration options such as Captcha settings (set the captcha type: easy, normal & tough and colour) and Mail settings for email verification (set Mail Protocol to either PHP Mail or SMTP and SMTP options) + + Interface page to set language with the new translations system, see /langs/ --- and also set the theme + + Admin account page to reset admin login details + + 'Pastes' page to show a list of all pastes with options to delete and see more details + + 'Users' page to show a list of all registered users with options to show if user registered with email or OAUTH and options to ban or delete + + 'IP Bans' page to add and list IP bans + + 'Statistics' page to show overall amount of pastes, expired pastes, users, banned users, page views & unique page views + + 'Ads' page to add functionality to add ads to sidebar and footer sections + + 'Pages' page to add new pages using a WYSIWIG editor, and also an option to view a list of pages with delete and edit functionality + + 'Sitemap' page to control the frequency that the new sitemap system is updated + + 'Tasks' page for some database optimization and common tasks, delete all expired pastes, clear admin history, delete unverified accounts + +* Archives added +* Captcha added + +Other changes +* Overall code overhaul diff --git a/docs/GPL.txt b/docs/GPL.txt new file mode 100644 index 0000000..7e0f595 --- /dev/null +++ b/docs/GPL.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/docs/config.example.php b/docs/config.example.php new file mode 100644 index 0000000..041ae36 --- /dev/null +++ b/docs/config.example.php @@ -0,0 +1,306 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in docs/GPL.txt for more details. + */ +$currentversion = 2.1; + +// Max paste size in MB. This value should always be below the value of +// post_max_size in your PHP configuration settings (php.ini) or empty errors will occur. +// The value we got on installation of Paste was: post_max_size = 8M +// Otherwise, the maximum value that can be set is 4000 (4GB) +$pastelimit = "0.5"; // 0.5 = 512 kilobytes, 1 = 1MB + +// OAUTH (to enable, change to yes and edit) +$enablefb = "no"; +$enablegoog = "no"; + +// "CHANGE THIS" = Replace with your details +// Facebook +define('FB_APP_ID', 'CHANGE THIS'); // Your application ID, see https://developers.facebook.com/docs/apps/register +define('FB_APP_SECRET', 'CHANGE THIS'); // What's your Secret key + +// Google +define('G_Client_ID', 'CHANGE THIS'); // Get a Client ID from https://console.developers.google.com/projectselector/apis/library +define('G_Client_Secret', 'CHANGE THIS'); // What's your Secret key +define('G_Redirect_Uri', 'http://DOMAIN.TLD/oauth/google.php'); // Leave this as is +define('G_Application_Name', 'Paste'); // Make sure this matches the name of your application + +// Database information +$dbhost = "localhost"; +$dbuser = "DATABASEUSER"; +$dbpassword = "PASSWORD"; +$dbname = "DATABASENAME"; + +// Secret key for paste encryption (GENERATE KEYS FROM MKPASSWD.NET) +$sec_key = ''; +define('SECRET',md5($sec_key)); + +// Set to 1 to enable Apache's mod_rewrite +$mod_rewrite = "0"; + +// Available GeSHi formats +$geshiformats =array( + '4cs' => 'GADV 4CS', + '6502acme' => 'ACME Cross Assembler', + '6502kickass' => 'Kick Assembler', + '6502tasm' => 'TASM/64TASS 1.46', + '68000devpac' => 'HiSoft Devpac ST 2', + 'abap' => 'ABAP', + 'actionscript' => 'ActionScript', + 'actionscript3' => 'ActionScript 3', + 'ada' => 'Ada', + 'aimms' => 'AIMMS3', + 'algol68' => 'ALGOL 68', + 'apache' => 'Apache', + 'applescript' => 'AppleScript', + 'arm' => 'ARM Assembler', + 'asm' => 'ASM', + 'asp' => 'ASP', + 'asymptote' => 'Asymptote', + 'autoconf' => 'Autoconf', + 'autohotkey' => 'Autohotkey', + 'autoit' => 'AutoIt', + 'avisynth' => 'AviSynth', + 'awk' => 'Awk', + 'bascomavr' => 'BASCOM AVR', + 'bash' => 'BASH', + 'basic4gl' => 'Basic4GL', + 'bf' => 'Brainfuck', + 'bibtex' => 'BibTeX', + 'blitzbasic' => 'BlitzBasic', + 'bnf' => 'BNF', + 'boo' => 'Boo', + 'c' => 'C', + 'c_loadrunner' => 'C (LoadRunner)', + 'c_mac' => 'C for Macs', + 'c_winapi' => 'C (WinAPI)', + 'caddcl' => 'CAD DCL', + 'cadlisp' => 'CAD Lisp', + 'cfdg' => 'CFDG', + 'cfm' => 'ColdFusion', + 'chaiscript' => 'ChaiScript', + 'chapel' => 'Chapel', + 'cil' => 'CIL', + 'clojure' => 'Clojure', + 'cmake' => 'CMake', + 'cobol' => 'COBOL', + 'coffeescript' => 'CoffeeScript', + 'cpp' => 'C++', + 'cpp-qt' => 'C++ (with QT extensions)', + 'cpp-winapi' => 'C++ (WinAPI)', + 'csharp' => 'C#', + 'css' => 'CSS', + 'cuesheet' => 'Cuesheet', + 'd' => 'D', + 'dcl' => 'DCL', + 'dcpu16' => 'DCPU-16 Assembly', + 'dcs' => 'DCS', + 'delphi' => 'Delphi', + 'diff' => 'Diff-output', + 'div' => 'DIV', + 'dos' => 'DOS', + 'dot' => 'dot', + 'e' => 'E', + 'ecmascript' => 'ECMAScript', + 'eiffel' => 'Eiffel', + 'email' => 'eMail (mbox)', + 'epc' => 'EPC', + 'erlang' => 'Erlang', + 'euphoria' => 'Euphoria', + 'ezt' => 'EZT', + 'f1' => 'Formula One', + 'falcon' => 'Falcon', + 'fo' => 'FO (abas-ERP)', + 'fortran' => 'Fortran', + 'freebasic' => 'FreeBasic', + 'fsharp' => 'F#', + 'gambas' => 'GAMBAS', + 'gdb' => 'GDB', + 'genero' => 'Genero', + 'genie' => 'Genie', + 'gettext' => 'GNU Gettext', + 'glsl' => 'glSlang', + 'gml' => 'GML', + 'gnuplot' => 'GNUPlot', + 'go' => 'Go', + 'groovy' => 'Groovy', + 'gwbasic' => 'GwBasic', + 'haskell' => 'Haskell', + 'haxe' => 'Haxe', + 'hicest' => 'HicEst', + 'hq9plus' => 'HQ9+', + 'html4strict' => 'HTML 4.01', + 'html5' => 'HTML 5', + 'icon' => 'Icon', + 'idl' => 'Uno Idl', + 'ini' => 'INI', + 'inno' => 'Inno Script', + 'intercal' => 'INTERCAL', + 'io' => 'IO', + 'ispfpanel' => 'ISPF Panel', + 'j' => 'J', + 'java' => 'Java', + 'java5' => 'Java 5', + 'javascript' => 'JavaScript', + 'jcl' => 'JCL', + 'jquery' => 'jQuery', + 'kixtart' => 'KiXtart', + 'klonec' => 'KLone C', + 'klonecpp' => 'KLone C++', + 'latex' => 'LaTeX', + 'lb' => 'Liberty BASIC', + 'ldif' => 'LDIF', + 'lisp' => 'Lisp', + 'llvm' => 'LLVM', + 'locobasic' => 'Locomotive Basic', + 'logtalk' => 'Logtalk', + 'lolcode' => 'LOLcode', + 'lotusformulas' => 'Lotus Notes @Formulas', + 'lotusscript' => 'LotusScript', + 'lscript' => 'Lightwave Script', + 'lsl2' => 'Linden Script', + 'lua' => 'LUA', + 'm68k' => 'Motorola 68000 Assembler', + 'magiksf' => 'MagikSF', + 'make' => 'GNU make', + 'mapbasic' => 'MapBasic', + 'markdown' => 'Markdown', + 'matlab' => 'Matlab M', + 'mirc' => 'mIRC Scripting', + 'mmix' => 'MMIX', + 'modula2' => 'Modula-2', + 'modula3' => 'Modula-3', + 'mpasm' => 'Microchip Assembler', + 'mxml' => 'MXML', + 'mysql' => 'MySQL', + 'nagios' => 'Nagios', + 'netrexx' => 'NetRexx', + 'newlisp' => 'NewLisp', + 'nginx' => 'Nginx', + 'nsis' => 'NSIS', + 'oberon2' => 'Oberon-2', + 'objc' => 'Objective-C', + 'objeck' => 'Objeck', + 'ocaml' => 'Ocaml', + 'ocaml-brief' => 'OCaml (Brief)', + 'octave' => 'GNU/Octave', + 'oobas' => 'OpenOffice.org Basic', + 'oorexx' => 'ooRexx', + 'oracle11' => 'Oracle 11 SQL', + 'oracle8' => 'Oracle 8 SQL', + 'oxygene' => 'Oxygene (Delphi Prism)', + 'oz' => 'OZ', + 'parasail' => 'ParaSail', + 'parigp' => 'PARI/GP', + 'pascal' => 'Pascal', + 'pcre' => 'PCRE', + 'per' => 'Per (forms)', + 'perl' => 'Perl', + 'perl6' => 'Perl 6', + 'pf' => 'OpenBSD Packet Filter', + 'php' => 'PHP', + 'php-brief' => 'PHP (Brief)', + 'pic16' => 'PIC16 Assembler', + 'pike' => 'Pike', + 'pixelbender' => 'Pixel Bender', + 'pli' => 'PL/I', + 'plsql' => 'PL/SQL', + 'postgresql' => 'PostgreSQL', + 'povray' => 'POVRAY', + 'powerbuilder' => 'PowerBuilder', + 'powershell' => 'PowerShell', + 'proftpd' => 'ProFTPd config', + 'progress' => 'Progress', + 'prolog' => 'Prolog', + 'properties' => 'Properties', + 'providex' => 'ProvideX', + 'purebasic' => 'PureBasic', + 'pycon' => 'Python (console mode)', + 'pys60' => 'Python for S60', + 'python' => 'Python', + 'qbasic' => 'QuickBASIC', + 'racket' => 'Racket', + 'rails' => 'Ruby on Rails', + 'rbs' => 'RBScript', + 'rebol' => 'REBOL', + 'reg' => 'Microsoft REGEDIT', + 'rexx' => 'Rexx', + 'robots' => 'robots.txt', + 'rpmspec' => 'RPM Specification File', + 'rsplus' => 'R / S+', + 'ruby' => 'Ruby', + 'sas' => 'SAS', + 'scala' => 'Scala', + 'scheme' => 'Scheme', + 'scilab' => 'SciLab', + 'scl' => 'SCL', + 'sdlbasic' => 'sdlBasic', + 'smalltalk' => 'Smalltalk', + 'smarty' => 'Smarty', + 'spark' => 'SPARK', + 'sparql' => 'SPARQL', + 'sql' => 'SQL', + 'stonescript' => 'StoneScript', + 'systemverilog' => 'SystemVerilog', + 'tcl' => 'TCL', + 'teraterm' => 'Tera Term Macro', + 'text' => 'Plain Text', + 'thinbasic' => 'thinBasic', + 'tsql' => 'T-SQL', + 'typoscript' => 'TypoScript', + 'unicon' => 'Unicon', + 'upc' => 'UPC', + 'urbi' => 'Urbi', + 'unrealscript' => 'Unreal Script', + 'vala' => 'Vala', + 'vb' => 'Visual Basic', + 'vbnet' => 'VB.NET', + 'vbscript' => 'VB Script', + 'vedit' => 'Vedit Macro', + 'verilog' => 'Verilog', + 'vhdl' => 'VHDL', + 'vim' => 'Vim', + 'visualfoxpro' => 'Visual FoxPro', + 'visualprolog' => 'Visual Prolog', + 'whitespace' => 'Whitespace', + 'whois' => 'WHOIS (RPSL format)', + 'winbatch' => 'WinBatch', + 'xbasic' => 'XBasic', + 'xml' => 'XML', + 'xorg_conf' => 'Xorg Config', + 'xpp' => 'X++', + 'yaml' => 'YAML', + 'z80' => 'ZiLOG Z80 Assembler', + 'zxbasic' => 'ZXBasic' +); + +// Popular formats that are listed first. +$popular_formats=array( + 'text', + 'html4strict', + 'html5', + 'css', + 'javascript', + 'php', + 'perl', + 'python', + 'postgresql', + 'sql', + 'xml', + 'java', + 'c', + 'csharp', + 'cpp', + 'markdown' +); +?> diff --git a/docs/nginx.example.conf b/docs/nginx.example.conf new file mode 100644 index 0000000..1ff56f7 --- /dev/null +++ b/docs/nginx.example.conf @@ -0,0 +1,33 @@ +# Edit first. + +server { + server_name www.example.com example.com; + listen 80; + #listen 443; + root /home/web/yourpasteinstallation; + access_log /var/log/nginx/paste_access.log; + error_log /var/log/nginx/paste_error.log; + + client_max_body_size 128M; + + index index.php index.html index.htm; + + rewrite ^/page/([a-zA-Z0-9]+)/? /pages.php?page=$1 last; + rewrite ^/archive /archive.php last; + rewrite ^/profile /profile.php last; + rewrite ^/user/([^/]+)/?$ /user.php?user=$1 last; + rewrite ^/contact /contact.php last; + rewrite ^/download/(.*)$ /paste.php?download&id=$1 last; + rewrite ^/raw/(.*)$ /paste.php?raw&id=$1 last; + rewrite ^/embed/(.*)$ /paste.php?embed&id=$1 last; + location /{ + rewrite ^/([0-9]+)/?$ /paste.php?id=$1; + } + + location ~ \.php$ { + include snippets/fastcgi-php.conf; + fastcgi_pass unix:/run/php5-fpm.sock; + #fastcgi_pass unix:/run/php7.0-fpm.sock; + #fastcgi_pass unix:/run/php7.1-fpm.sock; + } +} diff --git a/docs/paste.mysqlschema.sql b/docs/paste.mysqlschema.sql new file mode 100644 index 0000000..24fed88 --- /dev/null +++ b/docs/paste.mysqlschema.sql @@ -0,0 +1,193 @@ +-- +-- Database schema for the manual installation of Paste 2.1 +-- Default admin username/password - admin / admin - change once logged in +-- Also configure the Domain in admin/configure.php otherwise things won't display correctly. +-- + +-- Admin +CREATE TABLE `admin` ( + `id` INT NOT NULL AUTO_INCREMENT, + PRIMARY KEY(id), + `user` varchar(250) DEFAULT NULL, + `pass` varchar(250) DEFAULT NULL +); + +INSERT INTO `admin` (`id`, `user`, `pass`) VALUES +(1, 'admin', '$2y$10$qn1PmNaBfhrOmRuYfgclsO6tMsXpKquSjshvwqx/7BXFD2No6rpH2'); + +-- Admin history + +CREATE TABLE `admin_history` ( + `id` INT NOT NULL AUTO_INCREMENT, + PRIMARY KEY(id), + `last_date` varchar(255) DEFAULT NULL, + `ip` varchar(255) DEFAULT NULL +); + +-- Ads +CREATE TABLE `ads` ( + `id` INT NOT NULL AUTO_INCREMENT, + PRIMARY KEY(id), + `text_ads` text, + `ads_1` text, + `ads_2` text +); + +INSERT INTO ads (text_ads,ads_1,ads_2) VALUES ('','',''); + +-- Bans + +CREATE TABLE `ban_user` ( + `id` INT NOT NULL AUTO_INCREMENT, + PRIMARY KEY(id), + `ip` varchar(255) DEFAULT NULL, + `last_date` varchar(255) DEFAULT NULL +); + +-- Captcha + +CREATE TABLE `captcha` ( + `id` INT NOT NULL AUTO_INCREMENT, + PRIMARY KEY(id), + `cap_e` varchar(255) DEFAULT NULL, + `mode` varchar(255) DEFAULT NULL, + `mul` varchar(255) DEFAULT NULL, + `allowed` text, + `color` mediumtext, + `recaptcha_sitekey` text, + `recaptcha_secretkey` text +); + +INSERT INTO captcha (cap_e,mode,mul,allowed,color,recaptcha_sitekey,recaptcha_secretkey) VALUES ('off','Normal','off','ABCDEFGHIJKLMNOPQRSTUVYXYZabcdefghijklmnopqrstuvwxyz0123456789','#000000','',''); + +-- Interface + +CREATE TABLE `interface` ( + `id` INT NOT NULL AUTO_INCREMENT, + PRIMARY KEY(id), + `theme` text, + `lang` text +); + +INSERT INTO interface (theme,lang) VALUES ('default','en.php'); + +-- Mail + +CREATE TABLE `mail` ( + `id` INT NOT NULL AUTO_INCREMENT, + PRIMARY KEY(id), + `verification` text, + `smtp_host` text, + `smtp_username` text, + `smtp_password` text, + `smtp_port` text, + `protocol` text, + `auth` text, + `socket` text +); + +INSERT INTO mail (verification,smtp_host,smtp_username,smtp_password,smtp_port,protocol,auth,socket) VALUES ('enabled','','','','','1','true','ssl'); + +-- Pages + +CREATE TABLE `pages` ( + `id` INT NOT NULL AUTO_INCREMENT, + PRIMARY KEY(id), + `last_date` varchar(255) DEFAULT NULL, + `page_name` varchar(255) DEFAULT NULL, + `page_title` mediumtext, + `page_content` longtext +); + +-- Page views + +CREATE TABLE `page_view` ( + `id` INT NOT NULL AUTO_INCREMENT, + PRIMARY KEY(id), + `date` varchar(255) DEFAULT NULL, + `tpage` varchar(255) DEFAULT NULL, + `tvisit` varchar(255) DEFAULT NULL +); + +-- Pastes + +CREATE TABLE `pastes` ( + `id` INT NOT NULL AUTO_INCREMENT, + PRIMARY KEY(id), + `title` text, + `content` longtext, + `encrypt` text, + `password` text, + `now_time` text, + `s_date` text, + `views` text, + `ip` text, + `date` text, + `member` text, + `expiry` text, + `visible` text, + `code` longtext +); + +-- Sitemap + +CREATE TABLE `sitemap_options` ( + `id` INT NOT NULL AUTO_INCREMENT, + PRIMARY KEY(id), + `priority` varchar(255) DEFAULT NULL, + `changefreq` varchar(255) DEFAULT NULL +); + +INSERT INTO `sitemap_options` (`id`, `priority`, `changefreq`) VALUES +(1, '0.9', 'daily'); + +-- Site info + +CREATE TABLE `site_info` ( + `id` INT NOT NULL AUTO_INCREMENT, + PRIMARY KEY(id), + `title` varchar(255) DEFAULT NULL, + `des` mediumtext, + `keyword` mediumtext, + `site_name` varchar(255) DEFAULT NULL, + `email` varchar(255) DEFAULT NULL, + `twit` varchar(4000) DEFAULT NULL, + `face` varchar(4000) DEFAULT NULL, + `gplus` varchar(4000) DEFAULT NULL, + `ga` varchar(255) DEFAULT NULL, + `additional_scripts` text, + `baseurl` text +); + +INSERT INTO `site_info` (`id`, `title`, `des`, `keyword`, `site_name`, `email`, `twit`, `face`, `gplus`, `ga`, `additional_scripts`, `baseurl`) VALUES +(1, 'Paste', 'Paste can store text, source code or sensitive data for a set period of time.', 'paste,pastebin.com,pastebin,text,paste,online paste', 'Paste', '', 'https://twitter.com/', 'https://www.facebook.com/', 'https://plus.google.com/', 'UA-', '', 'pastethis.in'); + +-- Site permissions + +CREATE TABLE `site_permissions` ( + `id` INT NOT NULL AUTO_INCREMENT, + PRIMARY KEY(id), + `disableguest` varchar(255) DEFAULT NULL, + `siteprivate` varchar(255) DEFAULT NULL +); + +INSERT INTO `site_permissions` (`id`, `disableguest`, `siteprivate`) VALUES +(1, '', ''), +(2, 'off', 'off'); + +-- Users + +CREATE TABLE `users` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + PRIMARY KEY(id), + `oauth_uid` text, + `username` text, + `email_id` text, + `full_name` text, + `platform` text, + `password` text, + `verified` text, + `picture` text, + `date` text, + `ip` text +); \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b0ecec6ab2661d7fce24cce25577bb8d9a460c79 GIT binary patch literal 15086 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 literal 0 HcmV?d00001 diff --git a/feed/.htaccess b/feed/.htaccess new file mode 100644 index 0000000..a9e1b2a --- /dev/null +++ b/feed/.htaccess @@ -0,0 +1,8 @@ +RewriteEngine On +RewriteRule ^rss.xml$ rss.php [NC,L] + + +#If you want to display your RSS Feed like as http://example.com/feed/ then append this following code in your website's htaccess file. + +# RewriteEngine On +# RewriteRule ^feed/?$ rss.php [NC,L] diff --git a/feed/index.php b/feed/index.php new file mode 100644 index 0000000..bc472ee --- /dev/null +++ b/feed/index.php @@ -0,0 +1,34 @@ + head($rssTitle,$rssDescription,$url); + +$query = "SELECT * FROM pastes ORDER BY date"; +if ($result = mysqli_query($rss->conn(), $query)) { +while ($row = mysqli_fetch_assoc($result)) { +$link = $url.slash.rss::clean($row['id']).slash; + +//$date= date("jS F Y h:i:s A", $row['date']); +//$date= date('D, d M Y H:i:s', $row['now_time']); +$date= date('d M Y H:i:s', $row['now_time']); +if (preg_match('/^.{1,200}\b/s', $row['content'], $match)) +{ +$content=$match[0].'...'; +} +rss::feed(htmlspecialchars($row['title']),$link,htmlspecialchars($content),$date); +} +mysqli_free_result($result); +} +$rss->foot(); +$rss->close(); + +?> diff --git a/feed/rss.class.php b/feed/rss.class.php new file mode 100644 index 0000000..f115fd2 --- /dev/null +++ b/feed/rss.class.php @@ -0,0 +1,77 @@ +conn()) +{ +die('Failed to connect with MySQL'); +self::close(); +} +} + +public function conn() +{ +$host = "localhost"; +$user = "paste"; +$pass = "no*aksp1"; +$name = "paste"; +$conn = mysqli_connect($host,$user,$pass,$name); +if (mysqli_connect_errno()) +{ +die("Failed to connect with MySQL: ".mysqli_connect_error()); +} +else +{ +return $this->conn = $conn; +} +} + +public function head($title,$content,$siteurl) +{ +echo ''; +echo ''; +echo ''.$title.''; +echo ''.$siteurl.''; +echo 'https://pastebin.echosystem.fr/theme/blue/img/favicon.icohttps://pastebin.echosystem.fr'; +echo ''.$content.''; +echo 'en-us'; +//echo ''; +echo ''; +} +//public function feed($title,$url,$content,$publish) +//$date= date('d M Y H:i:s', $row['now_time']); +//$date2=date("D, d M Y H:i:s", strtotime($date)); +public function feed($title,$url,$content,$now_time) +{ +echo ' + +'.$title.' +'.$url.' +'.$content.' +'.$now_time.' + +'; +} +public function foot() +{ +echo ''; +echo ''; +} +public function clean($string) { + $string = strtolower( preg_replace('@[\W_]+@', '-', $string) ); + $string = rtrim($string,'-'); + $string = strtolower($string); + return $string; +} + +public function close() +{ +mysqli_close(self::conn()); +} +} + +?> diff --git a/feed/rss.class.php.new b/feed/rss.class.php.new new file mode 100644 index 0000000..00d101c --- /dev/null +++ b/feed/rss.class.php.new @@ -0,0 +1,70 @@ +conn()) +{ +die('Failed to connect with MySQL'); +self::close(); +} +} + +public function conn() +{ +$host = "localhost"; +$user = "paste"; +$pass = "no*aksp1"; +$name = "paste"; +$conn = mysqli_connect($host,$user,$pass,$name); +if (mysqli_connect_errno()) +{ +die("Failed to connect with MySQL: ".mysqli_connect_error()); +} +else +{ +return $this->conn = $conn; +} +} +public function head($title,$content,$siteurl) +{ +echo ''; +echo ''; +echo ''.$title.''; +echo ''.$siteurl.''; +echo ''.$content.''; +echo 'en-us'; +echo ''; + +} +public function feed($member,$url,$content,$publish) +{ +echo ' + +'.$member.' +'.$url.' +'.$content.' +'.$publish.' + +'; +} +public function foot() +{ +echo ''; +echo ''; +} +public function clean($string) { + $string = strtolower( preg_replace('@[\W_]+@', '-', $string) ); + $string = rtrim($string,'-'); + $string = strtolower($string); + return $string; +} + +public function close() +{ +mysqli_close(self::conn()); +} +} + +?> diff --git a/feed/rss.php b/feed/rss.php new file mode 100644 index 0000000..bc472ee --- /dev/null +++ b/feed/rss.php @@ -0,0 +1,34 @@ + head($rssTitle,$rssDescription,$url); + +$query = "SELECT * FROM pastes ORDER BY date"; +if ($result = mysqli_query($rss->conn(), $query)) { +while ($row = mysqli_fetch_assoc($result)) { +$link = $url.slash.rss::clean($row['id']).slash; + +//$date= date("jS F Y h:i:s A", $row['date']); +//$date= date('D, d M Y H:i:s', $row['now_time']); +$date= date('d M Y H:i:s', $row['now_time']); +if (preg_match('/^.{1,200}\b/s', $row['content'], $match)) +{ +$content=$match[0].'...'; +} +rss::feed(htmlspecialchars($row['title']),$link,htmlspecialchars($content),$date); +} +mysqli_free_result($result); +} +$rss->foot(); +$rss->close(); + +?> diff --git a/feed/rss.php.new b/feed/rss.php.new new file mode 100644 index 0000000..7aa69db --- /dev/null +++ b/feed/rss.php.new @@ -0,0 +1,30 @@ + head($rssTitle,$rssDescription,$url); + +$query = "SELECT * FROM pastes ORDER BY id"; +if ($result = mysqli_query($rss->conn(), $query)) { +while ($row = mysqli_fetch_assoc($result)) { +$link = $url.slash.rss::clean($row['member']).slash; +$date= date("D, d M Y H:i:s T", $row['date']); +if (preg_match('/^.{1,500}\b/s', $row['content'], $match)) +{ +$description=$match[0].'...'; +} +rss::feed(htmlspecialchars($row['member']),$link,htmlspecialchars($content ),$date); +} +mysqli_free_result($result); +} +$rss->foot(); +$rss->close(); +?> diff --git a/feed/test.php b/feed/test.php new file mode 100644 index 0000000..44e515d --- /dev/null +++ b/feed/test.php @@ -0,0 +1,21 @@ +

test vartibales

+
"; +echo "2: $date2

"; +$date3= date("jS F Y h:i:s A"); +echo "Good: $date3

"; + +echo ''; +echo '.$siteurl.'; + +$url = 'https://'.$_SERVER['HTTP_HOST']; +echo "
Link : $url

"; +echo "$rss"; +?> +
Résulat attendu +sql --> 15th June 2017 11:38:58 AM +
+ diff --git a/includes/Parsedown/LICENSE.txt b/includes/Parsedown/LICENSE.txt new file mode 100644 index 0000000..baca86f --- /dev/null +++ b/includes/Parsedown/LICENSE.txt @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013 Emanuil Rusev, erusev.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. \ No newline at end of file diff --git a/includes/Parsedown/Parsedown.php b/includes/Parsedown/Parsedown.php new file mode 100644 index 0000000..f5dd0fa --- /dev/null +++ b/includes/Parsedown/Parsedown.php @@ -0,0 +1,1548 @@ +DefinitionData = array(); + + # standardize line breaks + $text = str_replace(array("\r\n", "\r"), "\n", $text); + + # remove surrounding line breaks + $text = trim($text, "\n"); + + # split text into lines + $lines = explode("\n", $text); + + # iterate through lines to identify blocks + $markup = $this->lines($lines); + + # trim line breaks + $markup = trim($markup, "\n"); + + return $markup; + } + + # + # Setters + # + + function setBreaksEnabled($breaksEnabled) + { + $this->breaksEnabled = $breaksEnabled; + + return $this; + } + + protected $breaksEnabled; + + function setMarkupEscaped($markupEscaped) + { + $this->markupEscaped = $markupEscaped; + + return $this; + } + + protected $markupEscaped; + + function setUrlsLinked($urlsLinked) + { + $this->urlsLinked = $urlsLinked; + + return $this; + } + + protected $urlsLinked = true; + + # + # Lines + # + + protected $BlockTypes = array( + '#' => array('Header'), + '*' => array('Rule', 'List'), + '+' => array('List'), + '-' => array('SetextHeader', 'Table', 'Rule', 'List'), + '0' => array('List'), + '1' => array('List'), + '2' => array('List'), + '3' => array('List'), + '4' => array('List'), + '5' => array('List'), + '6' => array('List'), + '7' => array('List'), + '8' => array('List'), + '9' => array('List'), + ':' => array('Table'), + '<' => array('Comment', 'Markup'), + '=' => array('SetextHeader'), + '>' => array('Quote'), + '[' => array('Reference'), + '_' => array('Rule'), + '`' => array('FencedCode'), + '|' => array('Table'), + '~' => array('FencedCode'), + ); + + # ~ + + protected $unmarkedBlockTypes = array( + 'Code', + ); + + # + # Blocks + # + + protected function lines(array $lines) + { + $CurrentBlock = null; + + foreach ($lines as $line) + { + if (chop($line) === '') + { + if (isset($CurrentBlock)) + { + $CurrentBlock['interrupted'] = true; + } + + continue; + } + + if (strpos($line, "\t") !== false) + { + $parts = explode("\t", $line); + + $line = $parts[0]; + + unset($parts[0]); + + foreach ($parts as $part) + { + $shortage = 4 - mb_strlen($line, 'utf-8') % 4; + + $line .= str_repeat(' ', $shortage); + $line .= $part; + } + } + + $indent = 0; + + while (isset($line[$indent]) and $line[$indent] === ' ') + { + $indent ++; + } + + $text = $indent > 0 ? substr($line, $indent) : $line; + + # ~ + + $Line = array('body' => $line, 'indent' => $indent, 'text' => $text); + + # ~ + + if (isset($CurrentBlock['continuable'])) + { + $Block = $this->{'block'.$CurrentBlock['type'].'Continue'}($Line, $CurrentBlock); + + if (isset($Block)) + { + $CurrentBlock = $Block; + + continue; + } + else + { + if ($this->isBlockCompletable($CurrentBlock['type'])) + { + $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock); + } + } + } + + # ~ + + $marker = $text[0]; + + # ~ + + $blockTypes = $this->unmarkedBlockTypes; + + if (isset($this->BlockTypes[$marker])) + { + foreach ($this->BlockTypes[$marker] as $blockType) + { + $blockTypes []= $blockType; + } + } + + # + # ~ + + foreach ($blockTypes as $blockType) + { + $Block = $this->{'block'.$blockType}($Line, $CurrentBlock); + + if (isset($Block)) + { + $Block['type'] = $blockType; + + if ( ! isset($Block['identified'])) + { + $Blocks []= $CurrentBlock; + + $Block['identified'] = true; + } + + if ($this->isBlockContinuable($blockType)) + { + $Block['continuable'] = true; + } + + $CurrentBlock = $Block; + + continue 2; + } + } + + # ~ + + if (isset($CurrentBlock) and ! isset($CurrentBlock['type']) and ! isset($CurrentBlock['interrupted'])) + { + $CurrentBlock['element']['text'] .= "\n".$text; + } + else + { + $Blocks []= $CurrentBlock; + + $CurrentBlock = $this->paragraph($Line); + + $CurrentBlock['identified'] = true; + } + } + + # ~ + + if (isset($CurrentBlock['continuable']) and $this->isBlockCompletable($CurrentBlock['type'])) + { + $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock); + } + + # ~ + + $Blocks []= $CurrentBlock; + + unset($Blocks[0]); + + # ~ + + $markup = ''; + + foreach ($Blocks as $Block) + { + if (isset($Block['hidden'])) + { + continue; + } + + $markup .= "\n"; + $markup .= isset($Block['markup']) ? $Block['markup'] : $this->element($Block['element']); + } + + $markup .= "\n"; + + # ~ + + return $markup; + } + + protected function isBlockContinuable($Type) + { + return method_exists($this, 'block'.$Type.'Continue'); + } + + protected function isBlockCompletable($Type) + { + return method_exists($this, 'block'.$Type.'Complete'); + } + + # + # Code + + protected function blockCode($Line, $Block = null) + { + if (isset($Block) and ! isset($Block['type']) and ! isset($Block['interrupted'])) + { + return; + } + + if ($Line['indent'] >= 4) + { + $text = substr($Line['body'], 4); + + $Block = array( + 'element' => array( + 'name' => 'pre', + 'handler' => 'element', + 'text' => array( + 'name' => 'code', + 'text' => $text, + ), + ), + ); + + return $Block; + } + } + + protected function blockCodeContinue($Line, $Block) + { + if ($Line['indent'] >= 4) + { + if (isset($Block['interrupted'])) + { + $Block['element']['text']['text'] .= "\n"; + + unset($Block['interrupted']); + } + + $Block['element']['text']['text'] .= "\n"; + + $text = substr($Line['body'], 4); + + $Block['element']['text']['text'] .= $text; + + return $Block; + } + } + + protected function blockCodeComplete($Block) + { + $text = $Block['element']['text']['text']; + + $text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8'); + + $Block['element']['text']['text'] = $text; + + return $Block; + } + + # + # Comment + + protected function blockComment($Line) + { + if ($this->markupEscaped) + { + return; + } + + if (isset($Line['text'][3]) and $Line['text'][3] === '-' and $Line['text'][2] === '-' and $Line['text'][1] === '!') + { + $Block = array( + 'markup' => $Line['body'], + ); + + if (preg_match('/-->$/', $Line['text'])) + { + $Block['closed'] = true; + } + + return $Block; + } + } + + protected function blockCommentContinue($Line, array $Block) + { + if (isset($Block['closed'])) + { + return; + } + + $Block['markup'] .= "\n" . $Line['body']; + + if (preg_match('/-->$/', $Line['text'])) + { + $Block['closed'] = true; + } + + return $Block; + } + + # + # Fenced Code + + protected function blockFencedCode($Line) + { + if (preg_match('/^['.$Line['text'][0].']{3,}[ ]*([\w-]+)?[ ]*$/', $Line['text'], $matches)) + { + $Element = array( + 'name' => 'code', + 'text' => '', + ); + + if (isset($matches[1])) + { + $class = 'language-'.$matches[1]; + + $Element['attributes'] = array( + 'class' => $class, + ); + } + + $Block = array( + 'char' => $Line['text'][0], + 'element' => array( + 'name' => 'pre', + 'handler' => 'element', + 'text' => $Element, + ), + ); + + return $Block; + } + } + + protected function blockFencedCodeContinue($Line, $Block) + { + if (isset($Block['complete'])) + { + return; + } + + if (isset($Block['interrupted'])) + { + $Block['element']['text']['text'] .= "\n"; + + unset($Block['interrupted']); + } + + if (preg_match('/^'.$Block['char'].'{3,}[ ]*$/', $Line['text'])) + { + $Block['element']['text']['text'] = substr($Block['element']['text']['text'], 1); + + $Block['complete'] = true; + + return $Block; + } + + $Block['element']['text']['text'] .= "\n".$Line['body']; + + return $Block; + } + + protected function blockFencedCodeComplete($Block) + { + $text = $Block['element']['text']['text']; + + $text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8'); + + $Block['element']['text']['text'] = $text; + + return $Block; + } + + # + # Header + + protected function blockHeader($Line) + { + if (isset($Line['text'][1])) + { + $level = 1; + + while (isset($Line['text'][$level]) and $Line['text'][$level] === '#') + { + $level ++; + } + + if ($level > 6) + { + return; + } + + $text = trim($Line['text'], '# '); + + $Block = array( + 'element' => array( + 'name' => 'h' . min(6, $level), + 'text' => $text, + 'handler' => 'line', + ), + ); + + return $Block; + } + } + + # + # List + + protected function blockList($Line) + { + list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]+[.]'); + + if (preg_match('/^('.$pattern.'[ ]+)(.*)/', $Line['text'], $matches)) + { + $Block = array( + 'indent' => $Line['indent'], + 'pattern' => $pattern, + 'element' => array( + 'name' => $name, + 'handler' => 'elements', + ), + ); + + if($name === 'ol') + { + $listStart = stristr($matches[0], '.', true); + + if($listStart !== '1') + { + $Block['element']['attributes'] = array('start' => $listStart); + } + } + + $Block['li'] = array( + 'name' => 'li', + 'handler' => 'li', + 'text' => array( + $matches[2], + ), + ); + + $Block['element']['text'] []= & $Block['li']; + + return $Block; + } + } + + protected function blockListContinue($Line, array $Block) + { + if ($Block['indent'] === $Line['indent'] and preg_match('/^'.$Block['pattern'].'(?:[ ]+(.*)|$)/', $Line['text'], $matches)) + { + if (isset($Block['interrupted'])) + { + $Block['li']['text'] []= ''; + + unset($Block['interrupted']); + } + + unset($Block['li']); + + $text = isset($matches[1]) ? $matches[1] : ''; + + $Block['li'] = array( + 'name' => 'li', + 'handler' => 'li', + 'text' => array( + $text, + ), + ); + + $Block['element']['text'] []= & $Block['li']; + + return $Block; + } + + if ($Line['text'][0] === '[' and $this->blockReference($Line)) + { + return $Block; + } + + if ( ! isset($Block['interrupted'])) + { + $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']); + + $Block['li']['text'] []= $text; + + return $Block; + } + + if ($Line['indent'] > 0) + { + $Block['li']['text'] []= ''; + + $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']); + + $Block['li']['text'] []= $text; + + unset($Block['interrupted']); + + return $Block; + } + } + + # + # Quote + + protected function blockQuote($Line) + { + if (preg_match('/^>[ ]?(.*)/', $Line['text'], $matches)) + { + $Block = array( + 'element' => array( + 'name' => 'blockquote', + 'handler' => 'lines', + 'text' => (array) $matches[1], + ), + ); + + return $Block; + } + } + + protected function blockQuoteContinue($Line, array $Block) + { + if ($Line['text'][0] === '>' and preg_match('/^>[ ]?(.*)/', $Line['text'], $matches)) + { + if (isset($Block['interrupted'])) + { + $Block['element']['text'] []= ''; + + unset($Block['interrupted']); + } + + $Block['element']['text'] []= $matches[1]; + + return $Block; + } + + if ( ! isset($Block['interrupted'])) + { + $Block['element']['text'] []= $Line['text']; + + return $Block; + } + } + + # + # Rule + + protected function blockRule($Line) + { + if (preg_match('/^(['.$Line['text'][0].'])([ ]*\1){2,}[ ]*$/', $Line['text'])) + { + $Block = array( + 'element' => array( + 'name' => 'hr' + ), + ); + + return $Block; + } + } + + # + # Setext + + protected function blockSetextHeader($Line, array $Block = null) + { + if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted'])) + { + return; + } + + if (chop($Line['text'], $Line['text'][0]) === '') + { + $Block['element']['name'] = $Line['text'][0] === '=' ? 'h1' : 'h2'; + + return $Block; + } + } + + # + # Markup + + protected function blockMarkup($Line) + { + if ($this->markupEscaped) + { + return; + } + + if (preg_match('/^<(\w*)(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*(\/)?>/', $Line['text'], $matches)) + { + $element = strtolower($matches[1]); + + if (in_array($element, $this->textLevelElements)) + { + return; + } + + $Block = array( + 'name' => $matches[1], + 'depth' => 0, + 'markup' => $Line['text'], + ); + + $length = strlen($matches[0]); + + $remainder = substr($Line['text'], $length); + + if (trim($remainder) === '') + { + if (isset($matches[2]) or in_array($matches[1], $this->voidElements)) + { + $Block['closed'] = true; + + $Block['void'] = true; + } + } + else + { + if (isset($matches[2]) or in_array($matches[1], $this->voidElements)) + { + return; + } + + if (preg_match('/<\/'.$matches[1].'>[ ]*$/i', $remainder)) + { + $Block['closed'] = true; + } + } + + return $Block; + } + } + + protected function blockMarkupContinue($Line, array $Block) + { + if (isset($Block['closed'])) + { + return; + } + + if (preg_match('/^<'.$Block['name'].'(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*>/i', $Line['text'])) # open + { + $Block['depth'] ++; + } + + if (preg_match('/(.*?)<\/'.$Block['name'].'>[ ]*$/i', $Line['text'], $matches)) # close + { + if ($Block['depth'] > 0) + { + $Block['depth'] --; + } + else + { + $Block['closed'] = true; + } + } + + if (isset($Block['interrupted'])) + { + $Block['markup'] .= "\n"; + + unset($Block['interrupted']); + } + + $Block['markup'] .= "\n".$Line['body']; + + return $Block; + } + + # + # Reference + + protected function blockReference($Line) + { + if (preg_match('/^\[(.+?)\]:[ ]*?(?:[ ]+["\'(](.+)["\')])?[ ]*$/', $Line['text'], $matches)) + { + $id = strtolower($matches[1]); + + $Data = array( + 'url' => $matches[2], + 'title' => null, + ); + + if (isset($matches[3])) + { + $Data['title'] = $matches[3]; + } + + $this->DefinitionData['Reference'][$id] = $Data; + + $Block = array( + 'hidden' => true, + ); + + return $Block; + } + } + + # + # Table + + protected function blockTable($Line, array $Block = null) + { + if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted'])) + { + return; + } + + if (strpos($Block['element']['text'], '|') !== false and chop($Line['text'], ' -:|') === '') + { + $alignments = array(); + + $divider = $Line['text']; + + $divider = trim($divider); + $divider = trim($divider, '|'); + + $dividerCells = explode('|', $divider); + + foreach ($dividerCells as $dividerCell) + { + $dividerCell = trim($dividerCell); + + if ($dividerCell === '') + { + continue; + } + + $alignment = null; + + if ($dividerCell[0] === ':') + { + $alignment = 'left'; + } + + if (substr($dividerCell, - 1) === ':') + { + $alignment = $alignment === 'left' ? 'center' : 'right'; + } + + $alignments []= $alignment; + } + + # ~ + + $HeaderElements = array(); + + $header = $Block['element']['text']; + + $header = trim($header); + $header = trim($header, '|'); + + $headerCells = explode('|', $header); + + foreach ($headerCells as $index => $headerCell) + { + $headerCell = trim($headerCell); + + $HeaderElement = array( + 'name' => 'th', + 'text' => $headerCell, + 'handler' => 'line', + ); + + if (isset($alignments[$index])) + { + $alignment = $alignments[$index]; + + $HeaderElement['attributes'] = array( + 'style' => 'text-align: '.$alignment.';', + ); + } + + $HeaderElements []= $HeaderElement; + } + + # ~ + + $Block = array( + 'alignments' => $alignments, + 'identified' => true, + 'element' => array( + 'name' => 'table', + 'handler' => 'elements', + ), + ); + + $Block['element']['text'] []= array( + 'name' => 'thead', + 'handler' => 'elements', + ); + + $Block['element']['text'] []= array( + 'name' => 'tbody', + 'handler' => 'elements', + 'text' => array(), + ); + + $Block['element']['text'][0]['text'] []= array( + 'name' => 'tr', + 'handler' => 'elements', + 'text' => $HeaderElements, + ); + + return $Block; + } + } + + protected function blockTableContinue($Line, array $Block) + { + if (isset($Block['interrupted'])) + { + return; + } + + if ($Line['text'][0] === '|' or strpos($Line['text'], '|')) + { + $Elements = array(); + + $row = $Line['text']; + + $row = trim($row); + $row = trim($row, '|'); + + preg_match_all('/(?:(\\\\[|])|[^|`]|`[^`]+`|`)+/', $row, $matches); + + foreach ($matches[0] as $index => $cell) + { + $cell = trim($cell); + + $Element = array( + 'name' => 'td', + 'handler' => 'line', + 'text' => $cell, + ); + + if (isset($Block['alignments'][$index])) + { + $Element['attributes'] = array( + 'style' => 'text-align: '.$Block['alignments'][$index].';', + ); + } + + $Elements []= $Element; + } + + $Element = array( + 'name' => 'tr', + 'handler' => 'elements', + 'text' => $Elements, + ); + + $Block['element']['text'][1]['text'] []= $Element; + + return $Block; + } + } + + # + # ~ + # + + protected function paragraph($Line) + { + $Block = array( + 'element' => array( + 'name' => 'p', + 'text' => $Line['text'], + 'handler' => 'line', + ), + ); + + return $Block; + } + + # + # Inline Elements + # + + protected $InlineTypes = array( + '"' => array('SpecialCharacter'), + '!' => array('Image'), + '&' => array('SpecialCharacter'), + '*' => array('Emphasis'), + ':' => array('Url'), + '<' => array('UrlTag', 'EmailTag', 'Markup', 'SpecialCharacter'), + '>' => array('SpecialCharacter'), + '[' => array('Link'), + '_' => array('Emphasis'), + '`' => array('Code'), + '~' => array('Strikethrough'), + '\\' => array('EscapeSequence'), + ); + + # ~ + + protected $inlineMarkerList = '!"*_&[:<>`~\\'; + + # + # ~ + # + + public function line($text) + { + $markup = ''; + + # $excerpt is based on the first occurrence of a marker + + while ($excerpt = strpbrk($text, $this->inlineMarkerList)) + { + $marker = $excerpt[0]; + + $markerPosition = strpos($text, $marker); + + $Excerpt = array('text' => $excerpt, 'context' => $text); + + foreach ($this->InlineTypes[$marker] as $inlineType) + { + $Inline = $this->{'inline'.$inlineType}($Excerpt); + + if ( ! isset($Inline)) + { + continue; + } + + # makes sure that the inline belongs to "our" marker + + if (isset($Inline['position']) and $Inline['position'] > $markerPosition) + { + continue; + } + + # sets a default inline position + + if ( ! isset($Inline['position'])) + { + $Inline['position'] = $markerPosition; + } + + # the text that comes before the inline + $unmarkedText = substr($text, 0, $Inline['position']); + + # compile the unmarked text + $markup .= $this->unmarkedText($unmarkedText); + + # compile the inline + $markup .= isset($Inline['markup']) ? $Inline['markup'] : $this->element($Inline['element']); + + # remove the examined text + $text = substr($text, $Inline['position'] + $Inline['extent']); + + continue 2; + } + + # the marker does not belong to an inline + + $unmarkedText = substr($text, 0, $markerPosition + 1); + + $markup .= $this->unmarkedText($unmarkedText); + + $text = substr($text, $markerPosition + 1); + } + + $markup .= $this->unmarkedText($text); + + return $markup; + } + + # + # ~ + # + + protected function inlineCode($Excerpt) + { + $marker = $Excerpt['text'][0]; + + if (preg_match('/^('.$marker.'+)[ ]*(.+?)[ ]*(? strlen($matches[0]), + 'element' => array( + 'name' => 'code', + 'text' => $text, + ), + ); + } + } + + protected function inlineEmailTag($Excerpt) + { + if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<((mailto:)?\S+?@\S+?)>/i', $Excerpt['text'], $matches)) + { + $url = $matches[1]; + + if ( ! isset($matches[2])) + { + $url = 'mailto:' . $url; + } + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'a', + 'text' => $matches[1], + 'attributes' => array( + 'href' => $url, + ), + ), + ); + } + } + + protected function inlineEmphasis($Excerpt) + { + if ( ! isset($Excerpt['text'][1])) + { + return; + } + + $marker = $Excerpt['text'][0]; + + if ($Excerpt['text'][1] === $marker and preg_match($this->StrongRegex[$marker], $Excerpt['text'], $matches)) + { + $emphasis = 'strong'; + } + elseif (preg_match($this->EmRegex[$marker], $Excerpt['text'], $matches)) + { + $emphasis = 'em'; + } + else + { + return; + } + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => $emphasis, + 'handler' => 'line', + 'text' => $matches[1], + ), + ); + } + + protected function inlineEscapeSequence($Excerpt) + { + if (isset($Excerpt['text'][1]) and in_array($Excerpt['text'][1], $this->specialCharacters)) + { + return array( + 'markup' => $Excerpt['text'][1], + 'extent' => 2, + ); + } + } + + protected function inlineImage($Excerpt) + { + if ( ! isset($Excerpt['text'][1]) or $Excerpt['text'][1] !== '[') + { + return; + } + + $Excerpt['text']= substr($Excerpt['text'], 1); + + $Link = $this->inlineLink($Excerpt); + + if ($Link === null) + { + return; + } + + $Inline = array( + 'extent' => $Link['extent'] + 1, + 'element' => array( + 'name' => 'img', + 'attributes' => array( + 'src' => $Link['element']['attributes']['href'], + 'alt' => $Link['element']['text'], + ), + ), + ); + + $Inline['element']['attributes'] += $Link['element']['attributes']; + + unset($Inline['element']['attributes']['href']); + + return $Inline; + } + + protected function inlineLink($Excerpt) + { + $Element = array( + 'name' => 'a', + 'handler' => 'line', + 'text' => null, + 'attributes' => array( + 'href' => null, + 'title' => null, + ), + ); + + $extent = 0; + + $remainder = $Excerpt['text']; + + if (preg_match('/\[((?:[^][]++|(?R))*+)\]/', $remainder, $matches)) + { + $Element['text'] = $matches[1]; + + $extent += strlen($matches[0]); + + $remainder = substr($remainder, $extent); + } + else + { + return; + } + + if (preg_match('/^[(]\s*+((?:[^ ()]++|[(][^ )]+[)])++)(?:[ ]+("[^"]*"|\'[^\']*\'))?\s*[)]/', $remainder, $matches)) + { + $Element['attributes']['href'] = $matches[1]; + + if (isset($matches[2])) + { + $Element['attributes']['title'] = substr($matches[2], 1, - 1); + } + + $extent += strlen($matches[0]); + } + else + { + if (preg_match('/^\s*\[(.*?)\]/', $remainder, $matches)) + { + $definition = strlen($matches[1]) ? $matches[1] : $Element['text']; + $definition = strtolower($definition); + + $extent += strlen($matches[0]); + } + else + { + $definition = strtolower($Element['text']); + } + + if ( ! isset($this->DefinitionData['Reference'][$definition])) + { + return; + } + + $Definition = $this->DefinitionData['Reference'][$definition]; + + $Element['attributes']['href'] = $Definition['url']; + $Element['attributes']['title'] = $Definition['title']; + } + + $Element['attributes']['href'] = str_replace(array('&', '<'), array('&', '<'), $Element['attributes']['href']); + + return array( + 'extent' => $extent, + 'element' => $Element, + ); + } + + protected function inlineMarkup($Excerpt) + { + if ($this->markupEscaped or strpos($Excerpt['text'], '>') === false) + { + return; + } + + if ($Excerpt['text'][1] === '/' and preg_match('/^<\/\w*[ ]*>/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + + if ($Excerpt['text'][1] === '!' and preg_match('/^/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + + if ($Excerpt['text'][1] !== ' ' and preg_match('/^<\w*(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*\/?>/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + } + + protected function inlineSpecialCharacter($Excerpt) + { + if ($Excerpt['text'][0] === '&' and ! preg_match('/^&#?\w+;/', $Excerpt['text'])) + { + return array( + 'markup' => '&', + 'extent' => 1, + ); + } + + $SpecialCharacter = array('>' => 'gt', '<' => 'lt', '"' => 'quot'); + + if (isset($SpecialCharacter[$Excerpt['text'][0]])) + { + return array( + 'markup' => '&'.$SpecialCharacter[$Excerpt['text'][0]].';', + 'extent' => 1, + ); + } + } + + protected function inlineStrikethrough($Excerpt) + { + if ( ! isset($Excerpt['text'][1])) + { + return; + } + + if ($Excerpt['text'][1] === '~' and preg_match('/^~~(?=\S)(.+?)(?<=\S)~~/', $Excerpt['text'], $matches)) + { + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'del', + 'text' => $matches[1], + 'handler' => 'line', + ), + ); + } + } + + protected function inlineUrl($Excerpt) + { + if ($this->urlsLinked !== true or ! isset($Excerpt['text'][2]) or $Excerpt['text'][2] !== '/') + { + return; + } + + if (preg_match('/\bhttps?:[\/]{2}[^\s<]+\b\/*/ui', $Excerpt['context'], $matches, PREG_OFFSET_CAPTURE)) + { + $Inline = array( + 'extent' => strlen($matches[0][0]), + 'position' => $matches[0][1], + 'element' => array( + 'name' => 'a', + 'text' => $matches[0][0], + 'attributes' => array( + 'href' => $matches[0][0], + ), + ), + ); + + return $Inline; + } + } + + protected function inlineUrlTag($Excerpt) + { + if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<(\w+:\/{2}[^ >]+)>/i', $Excerpt['text'], $matches)) + { + $url = str_replace(array('&', '<'), array('&', '<'), $matches[1]); + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'a', + 'text' => $url, + 'attributes' => array( + 'href' => $url, + ), + ), + ); + } + } + + # ~ + + protected function unmarkedText($text) + { + if ($this->breaksEnabled) + { + $text = preg_replace('/[ ]*\n/', "
\n", $text); + } + else + { + $text = preg_replace('/(?:[ ][ ]+|[ ]*\\\\)\n/', "
\n", $text); + $text = str_replace(" \n", "\n", $text); + } + + return $text; + } + + # + # Handlers + # + + protected function element(array $Element) + { + $markup = '<'.$Element['name']; + + if (isset($Element['attributes'])) + { + foreach ($Element['attributes'] as $name => $value) + { + if ($value === null) + { + continue; + } + + $markup .= ' '.$name.'="'.$value.'"'; + } + } + + if (isset($Element['text'])) + { + $markup .= '>'; + + if (isset($Element['handler'])) + { + $markup .= $this->{$Element['handler']}($Element['text']); + } + else + { + $markup .= $Element['text']; + } + + $markup .= ''; + } + else + { + $markup .= ' />'; + } + + return $markup; + } + + protected function elements(array $Elements) + { + $markup = ''; + + foreach ($Elements as $Element) + { + $markup .= "\n" . $this->element($Element); + } + + $markup .= "\n"; + + return $markup; + } + + # ~ + + protected function li($lines) + { + $markup = $this->lines($lines); + + $trimmedMarkup = trim($markup); + + if ( ! in_array('', $lines) and substr($trimmedMarkup, 0, 3) === '

') + { + $markup = $trimmedMarkup; + $markup = substr($markup, 3); + + $position = strpos($markup, "

"); + + $markup = substr_replace($markup, '', $position, 4); + } + + return $markup; + } + + # + # Deprecated Methods + # + + function parse($text) + { + $markup = $this->text($text); + + return $markup; + } + + # + # Static Methods + # + + static function instance($name = 'default') + { + if (isset(self::$instances[$name])) + { + return self::$instances[$name]; + } + + $instance = new static(); + + self::$instances[$name] = $instance; + + return $instance; + } + + private static $instances = array(); + + # + # Fields + # + + protected $DefinitionData; + + # + # Read-Only + + protected $specialCharacters = array( + '\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!', '|', + ); + + protected $StrongRegex = array( + '*' => '/^[*]{2}((?:\\\\\*|[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s', + '_' => '/^__((?:\\\\_|[^_]|_[^_]*_)+?)__(?!_)/us', + ); + + protected $EmRegex = array( + '*' => '/^[*]((?:\\\\\*|[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s', + '_' => '/^_((?:\\\\_|[^_]|__[^_]*__)+?)_(?!_)\b/us', + ); + + protected $regexHtmlAttribute = '[a-zA-Z_:][\w:.-]*(?:\s*=\s*(?:[^"\'=<>`\s]+|"[^"]*"|\'[^\']*\'))?'; + + protected $voidElements = array( + 'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', + ); + + protected $textLevelElements = array( + 'a', 'br', 'bdo', 'abbr', 'blink', 'nextid', 'acronym', 'basefont', + 'b', 'em', 'big', 'cite', 'small', 'spacer', 'listing', + 'i', 'rp', 'del', 'code', 'strike', 'marquee', + 'q', 'rt', 'ins', 'font', 'strong', + 's', 'tt', 'kbd', 'mark', + 'u', 'xm', 'sub', 'nobr', + 'sup', 'ruby', + 'var', 'span', + 'wbr', 'time', + ); +} diff --git a/includes/Parsedown/index.php b/includes/Parsedown/index.php new file mode 100644 index 0000000..c8af587 --- /dev/null +++ b/includes/Parsedown/index.php @@ -0,0 +1 @@ +Directory listing not allowed. \ No newline at end of file diff --git a/includes/captcha.php b/includes/captcha.php new file mode 100644 index 0000000..41b2db0 --- /dev/null +++ b/includes/captcha.php @@ -0,0 +1,191 @@ + '', + 'min_length' => 5, + 'max_length' => 5, + 'backgrounds' => array( + $bg_path . 'text3.png', + $bg_path . 'text2.png', + $bg_path . 'text1.png' + ), + 'fonts' => array( + $font_path . $fonr_name + ), + 'characters' => $allowed, + 'min_font_size' => 28, + 'max_font_size' => 28, + 'color' => $color, + 'angle_min' => 0, + 'angle_max' => 10, + 'shadow' => true, + 'shadow_color' => '#fff', + 'shadow_offset_x' => -1, + 'shadow_offset_y' => 1 + ); + } else { + $captcha_config = array( + 'code' => '', + 'min_length' => 5, + 'max_length' => 5, + 'backgrounds' => array( + $bg_path . 'text2.png' + ), + 'fonts' => array( + $font_path . 'times_new_yorker.ttf' + ), + 'characters' => $allowed, + 'min_font_size' => 28, + 'max_font_size' => 28, + 'color' => $color, + 'angle_min' => 0, + 'angle_max' => 10, + 'shadow' => true, + 'shadow_color' => '#fff', + 'shadow_offset_x' => -1, + 'shadow_offset_y' => 1 + ); + } + + // Overwrite defaults with custom config values + if (is_array($config)) { + foreach ($config as $key => $value) + $captcha_config[$key] = $value; + } + + // Restrict certain values + if ($captcha_config['min_length'] < 1) + $captcha_config['min_length'] = 1; + if ($captcha_config['angle_min'] < 0) + $captcha_config['angle_min'] = 0; + if ($captcha_config['angle_max'] > 10) + $captcha_config['angle_max'] = 10; + if ($captcha_config['angle_max'] < $captcha_config['angle_min']) + $captcha_config['angle_max'] = $captcha_config['angle_min']; + if ($captcha_config['min_font_size'] < 10) + $captcha_config['min_font_size'] = 10; + if ($captcha_config['max_font_size'] < $captcha_config['min_font_size']) + $captcha_config['max_font_size'] = $captcha_config['min_font_size']; + + // Use milliseconds instead of seconds + srand(microtime() * 100); + + // Generate CAPTCHA code if not set by user + if (empty($captcha_config['code'])) { + $captcha_config['code'] = ''; + $length = rand($captcha_config['min_length'], $captcha_config['max_length']); + while (strlen($captcha_config['code']) < $length) { + $captcha_config['code'] .= substr($captcha_config['characters'], rand() % (strlen($captcha_config['characters'])), 1); + } + } + + // Generate HTML for image src + $image_src = substr(__FILE__, strlen(realpath($_SERVER['DOCUMENT_ROOT']))) . '?_CAPTCHA&t=' . urlencode(microtime()); + $image_src = '/' . ltrim(preg_replace('/\\\\/', '/', $image_src), '/'); + + $_SESSION['_CAPTCHA']['config'] = serialize($captcha_config); + + return array( + 'code' => $captcha_config['code'], + 'image_src' => $image_src + ); + +} + +if (!function_exists('hex2rgb')) { + function hex2rgb($hex_str, $return_string = false, $separator = ',') + { + $hex_str = preg_replace("/[^0-9A-Fa-f]/", '', $hex_str); // Gets a proper hex string + $rgb_array = array(); + if (strlen($hex_str) == 6) { + $color_val = hexdec($hex_str); + $rgb_array['r'] = 0xFF & ($color_val >> 0x10); + $rgb_array['g'] = 0xFF & ($color_val >> 0x8); + $rgb_array['b'] = 0xFF & $color_val; + } elseif (strlen($hex_str) == 3) { + $rgb_array['r'] = hexdec(str_repeat(substr($hex_str, 0, 1), 2)); + $rgb_array['g'] = hexdec(str_repeat(substr($hex_str, 1, 1), 2)); + $rgb_array['b'] = hexdec(str_repeat(substr($hex_str, 2, 1), 2)); + } else { + return false; + } + return $return_string ? implode($separator, $rgb_array) : $rgb_array; + } +} + +// Draw the image +if (isset($_GET['_CAPTCHA'])) { + + session_start(); + + $captcha_config = unserialize($_SESSION['_CAPTCHA']['config']); + if (!$captcha_config) + exit(); + + // Use milliseconds instead of seconds + srand(microtime() * 100); + + // Pick random background, get info, and start captcha + $background = $captcha_config['backgrounds'][rand(0, count($captcha_config['backgrounds']) - 1)]; + list($bg_width, $bg_height, $bg_type, $bg_attr) = getimagesize($background); + + $captcha = imagecreatefrompng($background); + + $color = hex2rgb($captcha_config['color']); + $color = imagecolorallocate($captcha, $color['r'], $color['g'], $color['b']); + + // Determine text angle + $angle = rand($captcha_config['angle_min'], $captcha_config['angle_max']) * (rand(0, 1) == 1 ? -1 : 1); + + // Select font randomly + $font = $captcha_config['fonts'][rand(0, count($captcha_config['fonts']) - 1)]; + + // Verify font file exists + if (!file_exists($font)) + throw new Exception('Font file not found: ' . $font); + + // Set the font size + $font_size = rand($captcha_config['min_font_size'], $captcha_config['max_font_size']); + $text_box_size = imagettfbbox($font_size, $angle, $font, $captcha_config['code']); + + // Determine text position + $box_width = abs($text_box_size[6] - $text_box_size[2]); + $box_height = abs($text_box_size[5] - $text_box_size[1]); + $text_pos_x_min = 0; + $text_pos_x_max = ($bg_width) - ($box_width); + $text_pos_x = rand($text_pos_x_min, $text_pos_x_max); + $text_pos_y_min = $box_height; + $text_pos_y_max = ($bg_height) - ($box_height / 2); + $text_pos_y = rand($text_pos_y_min, $text_pos_y_max); + + // Draw shadow + if ($captcha_config['shadow']) { + $shadow_color = hex2rgb($captcha_config['shadow_color']); + $shadow_color = imagecolorallocate($captcha, $shadow_color['r'], $shadow_color['g'], $shadow_color['b']); + imagettftext($captcha, $font_size, $angle, $text_pos_x + $captcha_config['shadow_offset_x'], $text_pos_y + $captcha_config['shadow_offset_y'], $shadow_color, $font, $captcha_config['code']); + } + + // Draw text + imagettftext($captcha, $font_size, $angle, $text_pos_x, $text_pos_y, $color, $font, $captcha_config['code']); + + // Output image + header("Content-type: image/png"); + imagepng($captcha); + +} \ No newline at end of file diff --git a/includes/captchabg/index.php b/includes/captchabg/index.php new file mode 100644 index 0000000..e69de29 diff --git a/includes/captchabg/text1.png b/includes/captchabg/text1.png new file mode 100644 index 0000000000000000000000000000000000000000..fbf603a0d3088bd2c27db3a32c6a4678c7d0ba3d GIT binary patch literal 3654 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 l=eU|=aS&91`Idwqwk&T0000mP)t-s2@3}o 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 literal 0 HcmV?d00001 diff --git a/includes/fonts/SigmarOne.ttf b/includes/fonts/SigmarOne.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9bb0002f45de20078deaf7baf48031e08c270f78 GIT binary patch literal 66504 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 PM?8UFdKO)8#6!&C;*t3iGiRe4PvY|yT$mTm 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
  • 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ᢸ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

    "; + + // Display embed content using json_encode since that escapes + // characters well enough to satisfy javascript. http://stackoverflow.com/a/169035 + header( 'Content-type: text/javascript; charset=utf-8;' ); + echo 'document.write(' . json_encode( $output ) . ')'; + $stats = true; + } else { + // 404 + header( 'HTTP/1.1 404 Not Found' ); + } + return $stats; +} + +function addToSitemap($paste_id, $priority, $changefreq, $mod_rewrite) +{ + $c_date = date('Y-m-d'); + $site_data = file_get_contents("sitemap.xml"); + $site_data = str_replace("", "", $site_data); + // which protocol are we on + $protocol = paste_protocol(); + + if ($mod_rewrite == "1") { + $server_name = $protocol . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/" . $paste_id; + } else { + $server_name = $protocol . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/paste.php?id=" . $paste_id; + } + + $c_sitemap = +' + ' . $server_name . ' + ' . $priority . ' + ' . $changefreq . ' + ' . $c_date . ' + +'; + + $full_map = $site_data . $c_sitemap; + file_put_contents("sitemap.xml", $full_map); +} +function paste_protocol() { + + $protocol = ( isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == "on" ) ? 'https://' : 'http://'; + + return $protocol; +} + +function is_banned($con, $ip) { + $query = "SELECT id FROM ban_user WHERE ip=?"; + if ($stmt = mysqli_prepare($con, $query)) { + mysqli_stmt_bind_param($stmt, "s", $ip); + mysqli_stmt_execute($stmt); + mysqli_stmt_store_result($stmt); + + if ( mysqli_stmt_num_rows($stmt) > 0 ) { + mysqli_stmt_close($stmt); + return true; + } else { + mysqli_stmt_close($stmt); + return false; + } + } +} diff --git a/includes/geshi.php b/includes/geshi.php new file mode 100644 index 0000000..e1e56a9 --- /dev/null +++ b/includes/geshi.php @@ -0,0 +1,4735 @@ +, Benny Baumann + * @copyright (C) 2004 - 2007 Nigel McNie, (C) 2007 - 2014 Benny Baumann + * @license http://gnu.org/copyleft/gpl.html GNU GPL + */ + +// +// GeSHi Constants +// You should use these constant names in your programs instead of +// their values - you never know when a value may change in a future +// version +// + +/** The version of this GeSHi file */ +define('GESHI_VERSION', '1.0.8.12'); + +// Define the root directory for the GeSHi code tree +if (!defined('GESHI_ROOT')) { + /** The root directory for GeSHi */ + define('GESHI_ROOT', dirname(__FILE__) . DIRECTORY_SEPARATOR); +} +/** The language file directory for GeSHi + @access private */ +define('GESHI_LANG_ROOT', GESHI_ROOT . 'geshi' . DIRECTORY_SEPARATOR); + +// Define if GeSHi should be paranoid about security +if (!defined('GESHI_SECURITY_PARANOID')) { + /** Tells GeSHi to be paranoid about security settings */ + define('GESHI_SECURITY_PARANOID', false); +} + +// Line numbers - use with enable_line_numbers() +/** Use no line numbers when building the result */ +define('GESHI_NO_LINE_NUMBERS', 0); +/** Use normal line numbers when building the result */ +define('GESHI_NORMAL_LINE_NUMBERS', 1); +/** Use fancy line numbers when building the result */ +define('GESHI_FANCY_LINE_NUMBERS', 2); + +// Container HTML type +/** Use nothing to surround the source */ +define('GESHI_HEADER_NONE', 0); +/** Use a "div" to surround the source */ +define('GESHI_HEADER_DIV', 1); +/** Use a "pre" to surround the source */ +define('GESHI_HEADER_PRE', 2); +/** Use a pre to wrap lines when line numbers are enabled or to wrap the whole code. */ +define('GESHI_HEADER_PRE_VALID', 3); +/** + * Use a "table" to surround the source: + * + * + * + * + * + *
    $header
    $linenumbers
    $code>
    $footer
    + * + * this is essentially only a workaround for Firefox, see sf#1651996 or take a look at + * https://bugzilla.mozilla.org/show_bug.cgi?id=365805 + * @note when linenumbers are disabled this is essentially the same as GESHI_HEADER_PRE + */ +define('GESHI_HEADER_PRE_TABLE', 4); + +// Capatalisation constants +/** Lowercase keywords found */ +define('GESHI_CAPS_NO_CHANGE', 0); +/** Uppercase keywords found */ +define('GESHI_CAPS_UPPER', 1); +/** Leave keywords found as the case that they are */ +define('GESHI_CAPS_LOWER', 2); + +// Link style constants +/** Links in the source in the :link state */ +define('GESHI_LINK', 0); +/** Links in the source in the :hover state */ +define('GESHI_HOVER', 1); +/** Links in the source in the :active state */ +define('GESHI_ACTIVE', 2); +/** Links in the source in the :visited state */ +define('GESHI_VISITED', 3); + +// Important string starter/finisher +// Note that if you change these, they should be as-is: i.e., don't +// write them as if they had been run through htmlentities() +/** The starter for important parts of the source */ +define('GESHI_START_IMPORTANT', ''); +/** The ender for important parts of the source */ +define('GESHI_END_IMPORTANT', ''); + +/**#@+ + * @access private + */ +// When strict mode applies for a language +/** Strict mode never applies (this is the most common) */ +define('GESHI_NEVER', 0); +/** Strict mode *might* apply, and can be enabled or + disabled by {@link GeSHi->enable_strict_mode()} */ +define('GESHI_MAYBE', 1); +/** Strict mode always applies */ +define('GESHI_ALWAYS', 2); + +// Advanced regexp handling constants, used in language files +/** The key of the regex array defining what to search for */ +define('GESHI_SEARCH', 0); +/** The key of the regex array defining what bracket group in a + matched search to use as a replacement */ +define('GESHI_REPLACE', 1); +/** The key of the regex array defining any modifiers to the regular expression */ +define('GESHI_MODIFIERS', 2); +/** The key of the regex array defining what bracket group in a + matched search to put before the replacement */ +define('GESHI_BEFORE', 3); +/** The key of the regex array defining what bracket group in a + matched search to put after the replacement */ +define('GESHI_AFTER', 4); +/** The key of the regex array defining a custom keyword to use + for this regexp's html tag class */ +define('GESHI_CLASS', 5); + +/** Used in language files to mark comments */ +define('GESHI_COMMENTS', 0); + +/** some old PHP / PCRE subpatterns only support up to xxx subpatterns in + regular expressions. Set this to false if your PCRE lib is up to date + @see GeSHi->optimize_regexp_list() + **/ +define('GESHI_MAX_PCRE_SUBPATTERNS', 500); +/** it's also important not to generate too long regular expressions + be generous here... but keep in mind, that when reaching this limit we + still have to close open patterns. 12k should do just fine on a 16k limit. + @see GeSHi->optimize_regexp_list() + **/ +define('GESHI_MAX_PCRE_LENGTH', 12288); + +//Number format specification +/** Basic number format for integers */ +define('GESHI_NUMBER_INT_BASIC', 1); //Default integers \d+ +/** Enhanced number format for integers like seen in C */ +define('GESHI_NUMBER_INT_CSTYLE', 2); //Default C-Style \d+[lL]? +/** Number format to highlight binary numbers with a suffix "b" */ +define('GESHI_NUMBER_BIN_SUFFIX', 16); //[01]+[bB] +/** Number format to highlight binary numbers with a prefix % */ +define('GESHI_NUMBER_BIN_PREFIX_PERCENT', 32); //%[01]+ +/** Number format to highlight binary numbers with a prefix 0b (C) */ +define('GESHI_NUMBER_BIN_PREFIX_0B', 64); //0b[01]+ +/** Number format to highlight octal numbers with a leading zero */ +define('GESHI_NUMBER_OCT_PREFIX', 256); //0[0-7]+ +/** Number format to highlight octal numbers with a prefix 0o (logtalk) */ +define('GESHI_NUMBER_OCT_PREFIX_0O', 512); //0[0-7]+ +/** Number format to highlight octal numbers with a leading @ (Used in HiSofts Devpac series). */ +define('GESHI_NUMBER_OCT_PREFIX_AT', 1024); //@[0-7]+ +/** Number format to highlight octal numbers with a suffix of o */ +define('GESHI_NUMBER_OCT_SUFFIX', 2048); //[0-7]+[oO] +/** Number format to highlight hex numbers with a prefix 0x */ +define('GESHI_NUMBER_HEX_PREFIX', 4096); //0x[0-9a-fA-F]+ +/** Number format to highlight hex numbers with a prefix $ */ +define('GESHI_NUMBER_HEX_PREFIX_DOLLAR', 8192); //$[0-9a-fA-F]+ +/** Number format to highlight hex numbers with a suffix of h */ +define('GESHI_NUMBER_HEX_SUFFIX', 16384); //[0-9][0-9a-fA-F]*h +/** Number format to highlight floating-point numbers without support for scientific notation */ +define('GESHI_NUMBER_FLT_NONSCI', 65536); //\d+\.\d+ +/** Number format to highlight floating-point numbers without support for scientific notation */ +define('GESHI_NUMBER_FLT_NONSCI_F', 131072); //\d+(\.\d+)?f +/** Number format to highlight floating-point numbers with support for scientific notation (E) and optional leading zero */ +define('GESHI_NUMBER_FLT_SCI_SHORT', 262144); //\.\d+e\d+ +/** Number format to highlight floating-point numbers with support for scientific notation (E) and required leading digit */ +define('GESHI_NUMBER_FLT_SCI_ZERO', 524288); //\d+(\.\d+)?e\d+ +//Custom formats are passed by RX array + +// Error detection - use these to analyse faults +/** No sourcecode to highlight was specified + * @deprecated + */ +define('GESHI_ERROR_NO_INPUT', 1); +/** The language specified does not exist */ +define('GESHI_ERROR_NO_SUCH_LANG', 2); +/** GeSHi could not open a file for reading (generally a language file) */ +define('GESHI_ERROR_FILE_NOT_READABLE', 3); +/** The header type passed to {@link GeSHi->set_header_type()} was invalid */ +define('GESHI_ERROR_INVALID_HEADER_TYPE', 4); +/** The line number type passed to {@link GeSHi->enable_line_numbers()} was invalid */ +define('GESHI_ERROR_INVALID_LINE_NUMBER_TYPE', 5); +/**#@-*/ + + +/** + * The GeSHi Class. + * + * Please refer to the documentation for GeSHi 1.0.X that is available + * at http://qbnz.com/highlighter/documentation.php for more information + * about how to use this class. + * + * @package geshi + * @author Nigel McNie + * @author Benny Baumann + * @copyright (C) 2004 - 2007 Nigel McNie, (C) 2007 - 2014 Benny Baumann + */ +class GeSHi { + + /** + * The source code to highlight + * @var string + */ + protected $source = ''; + + /** + * The language to use when highlighting + * @var string + */ + protected $language = ''; + + /** + * The data for the language used + * @var array + */ + protected $language_data = array(); + + /** + * The path to the language files + * @var string + */ + protected $language_path = GESHI_LANG_ROOT; + + /** + * The error message associated with an error + * @var string + * @todo check err reporting works + */ + protected $error = false; + + /** + * Possible error messages + * @var array + */ + protected $error_messages = array( + GESHI_ERROR_NO_SUCH_LANG => 'GeSHi could not find the language {LANGUAGE} (using path {PATH})', + GESHI_ERROR_FILE_NOT_READABLE => 'The file specified for load_from_file was not readable', + GESHI_ERROR_INVALID_HEADER_TYPE => 'The header type specified is invalid', + GESHI_ERROR_INVALID_LINE_NUMBER_TYPE => 'The line number type specified is invalid' + ); + + /** + * Whether highlighting is strict or not + * @var boolean + */ + protected $strict_mode = false; + + /** + * Whether to use CSS classes in output + * @var boolean + */ + protected $use_classes = false; + + /** + * The type of header to use. Can be one of the following + * values: + * + * - GESHI_HEADER_PRE: Source is outputted in a "pre" HTML element. + * - GESHI_HEADER_DIV: Source is outputted in a "div" HTML element. + * - GESHI_HEADER_NONE: No header is outputted. + * + * @var int + */ + protected $header_type = GESHI_HEADER_PRE; + + /** + * Array of permissions for which lexics should be highlighted + * @var array + */ + protected $lexic_permissions = array( + 'KEYWORDS' => array(), + 'COMMENTS' => array('MULTI' => true), + 'REGEXPS' => array(), + 'ESCAPE_CHAR' => true, + 'BRACKETS' => true, + 'SYMBOLS' => false, + 'STRINGS' => true, + 'NUMBERS' => true, + 'METHODS' => true, + 'SCRIPT' => true + ); + + /** + * The time it took to parse the code + * @var double + */ + protected $time = 0; + + /** + * The content of the header block + * @var string + */ + protected $header_content = ''; + + /** + * The content of the footer block + * @var string + */ + protected $footer_content = ''; + + /** + * The style of the header block + * @var string + */ + protected $header_content_style = ''; + + /** + * The style of the footer block + * @var string + */ + protected $footer_content_style = ''; + + /** + * Tells if a block around the highlighted source should be forced + * if not using line numbering + * @var boolean + */ + protected $force_code_block = false; + + /** + * The styles for hyperlinks in the code + * @var array + */ + protected $link_styles = array(); + + /** + * Whether important blocks should be recognised or not + * @var boolean + * @deprecated + * @todo REMOVE THIS FUNCTIONALITY! + */ + protected $enable_important_blocks = false; + + /** + * Styles for important parts of the code + * @var string + * @deprecated + * @todo As above - rethink the whole idea of important blocks as it is buggy and + * will be hard to implement in 1.2 + */ + protected $important_styles = 'font-weight: bold; color: red;'; // Styles for important parts of the code + + /** + * Whether CSS IDs should be added to the code + * @var boolean + */ + protected $add_ids = false; + + /** + * Lines that should be highlighted extra + * @var array + */ + protected $highlight_extra_lines = array(); + + /** + * Styles of lines that should be highlighted extra + * @var array + */ + protected $highlight_extra_lines_styles = array(); + + /** + * Styles of extra-highlighted lines + * @var string + */ + protected $highlight_extra_lines_style = 'background-color: #ffc;'; + + /** + * The line ending + * If null, nl2br() will be used on the result string. + * Otherwise, all instances of \n will be replaced with $line_ending + * @var string + */ + protected $line_ending = null; + + /** + * Number at which line numbers should start at + * @var int + */ + protected $line_numbers_start = 1; + + /** + * The overall style for this code block + * @var string + */ + protected $overall_style = 'font-family:monospace;'; + + /** + * The style for the actual code + * @var string + */ + protected $code_style = 'font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;'; + + /** + * The overall class for this code block + * @var string + */ + protected $overall_class = ''; + + /** + * The overall ID for this code block + * @var string + */ + protected $overall_id = ''; + + /** + * Line number styles + * @var string + */ + protected $line_style1 = 'font-weight: normal; vertical-align:top;'; + + /** + * Line number styles for fancy lines + * @var string + */ + protected $line_style2 = 'font-weight: bold; vertical-align:top;'; + + /** + * Style for line numbers when GESHI_HEADER_PRE_TABLE is chosen + * @var string + */ + protected $table_linenumber_style = 'width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;'; + + /** + * Flag for how line numbers are displayed + * @var boolean + */ + protected $line_numbers = GESHI_NO_LINE_NUMBERS; + + /** + * Flag to decide if multi line spans are allowed. Set it to false to make sure + * each tag is closed before and reopened after each linefeed. + * @var boolean + */ + protected $allow_multiline_span = true; + + /** + * The "nth" value for fancy line highlighting + * @var int + */ + protected $line_nth_row = 0; + + /** + * The size of tab stops + * @var int + */ + protected $tab_width = 8; + + /** + * Should we use language-defined tab stop widths? + * @var int + */ + protected $use_language_tab_width = false; + + /** + * Default target for keyword links + * @var string + */ + protected $link_target = ''; + + /** + * The encoding to use for entity encoding + * NOTE: Used with Escape Char Sequences to fix UTF-8 handling (cf. SF#2037598) + * @var string + */ + protected $encoding = 'utf-8'; + + /** + * Should keywords be linked? + * @var boolean + */ + protected $keyword_links = true; + + /** + * Currently loaded language file + * @var string + * @since 1.0.7.22 + */ + protected $loaded_language = ''; + + /** + * Wether the caches needed for parsing are built or not + * + * @var bool + * @since 1.0.8 + */ + protected $parse_cache_built = false; + + /** + * Work around for Suhosin Patch with disabled /e modifier + * + * Note from suhosins author in config file: + *
    + * The /e modifier inside preg_replace() allows code execution. + * Often it is the cause for remote code execution exploits. It is wise to + * deactivate this feature and test where in the application it is used. + * The developer using the /e modifier should be made aware that he should + * use preg_replace_callback() instead + *
    + * + * @var array + * @since 1.0.8 + */ + protected $_kw_replace_group = 0; + protected $_rx_key = 0; + + /** + * some "callback parameters" for handle_multiline_regexps + * + * @since 1.0.8 + * @access private + * @var string + */ + protected $_hmr_before = ''; + protected $_hmr_replace = ''; + protected $_hmr_after = ''; + protected $_hmr_key = 0; + + /** + * Creates a new GeSHi object, with source and language + * + * @param string $source The source code to highlight + * @param string $language The language to highlight the source with + * @param string $path The path to the language file directory. This + * is deprecated! I've backported the auto path + * detection from the 1.1.X dev branch, so now it + * should be automatically set correctly. If you have + * renamed the language directory however, you will + * still need to set the path using this parameter or + * {@link GeSHi->set_language_path()} + * @since 1.0.0 + */ + public function __construct($source = '', $language = '', $path = '') { + if ( is_string($source) && ($source !== '') ) { + $this->set_source($source); + } + if ( is_string($language) && ($language !== '') ) { + $this->set_language($language); + } + $this->set_language_path($path); + } + + /** + * Returns the version of GeSHi + * + * @return string + * @since 1.0.8.11 + */ + public function get_version() + { + return GESHI_VERSION; + } + + /** + * Returns an error message associated with the last GeSHi operation, + * or false if no error has occurred + * + * @return string|false An error message if there has been an error, else false + * @since 1.0.0 + */ + public function error() { + if ($this->error) { + //Put some template variables for debugging here ... + $debug_tpl_vars = array( + '{LANGUAGE}' => $this->language, + '{PATH}' => $this->language_path + ); + $msg = str_replace( + array_keys($debug_tpl_vars), + array_values($debug_tpl_vars), + $this->error_messages[$this->error]); + + return "
    GeSHi Error: $msg (code {$this->error})
    "; + } + return false; + } + + /** + * Gets a human-readable language name (thanks to Simon Patterson + * for the idea :)) + * + * @return string The name for the current language + * @since 1.0.2 + */ + public function get_language_name() { + if (GESHI_ERROR_NO_SUCH_LANG == $this->error) { + return $this->language_data['LANG_NAME'] . ' (Unknown Language)'; + } + return $this->language_data['LANG_NAME']; + } + + /** + * Sets the source code for this object + * + * @param string $source The source code to highlight + * @since 1.0.0 + */ + public function set_source($source) { + $this->source = $source; + $this->highlight_extra_lines = array(); + } + + /** + * Sets the language for this object + * + * @note since 1.0.8 this function won't reset language-settings by default anymore! + * if you need this set $force_reset = true + * + * @param string $language The name of the language to use + * @param bool $force_reset + * @since 1.0.0 + */ + public function set_language($language, $force_reset = false) { + $this->error = false; + $this->strict_mode = GESHI_NEVER; + + if ($force_reset) { + $this->loaded_language = false; + } + + //Clean up the language name to prevent malicious code injection + $language = preg_replace('#[^a-zA-Z0-9\-_]#', '', $language); + + $language = strtolower($language); + + //Retreive the full filename + $file_name = $this->language_path . $language . '.php'; + if ($file_name == $this->loaded_language) { + // this language is already loaded! + return; + } + + $this->language = $language; + + //Check if we can read the desired file + if (!is_readable($file_name)) { + $this->error = GESHI_ERROR_NO_SUCH_LANG; + return; + } + + // Load the language for parsing + $this->load_language($file_name); + } + + /** + * Sets the path to the directory containing the language files. Note + * that this path is relative to the directory of the script that included + * geshi.php, NOT geshi.php itself. + * + * @param string $path The path to the language directory + * @since 1.0.0 + * @deprecated The path to the language files should now be automatically + * detected, so this method should no longer be needed. The + * 1.1.X branch handles manual setting of the path differently + * so this method will disappear in 1.2.0. + */ + public function set_language_path($path) { + if(strpos($path,':')) { + //Security Fix to prevent external directories using fopen wrappers. + if(DIRECTORY_SEPARATOR == "\\") { + if(!preg_match('#^[a-zA-Z]:#', $path) || false !== strpos($path, ':', 2)) { + return; + } + } else { + return; + } + } + if(preg_match('#[^/a-zA-Z0-9_\.\-\\\s:]#', $path)) { + //Security Fix to prevent external directories using fopen wrappers. + return; + } + if(GESHI_SECURITY_PARANOID && false !== strpos($path, '/.')) { + //Security Fix to prevent external directories using fopen wrappers. + return; + } + if(GESHI_SECURITY_PARANOID && false !== strpos($path, '..')) { + //Security Fix to prevent external directories using fopen wrappers. + return; + } + if ($path) { + $this->language_path = ('/' == $path[strlen($path) - 1]) ? $path : $path . '/'; + $this->set_language($this->language); // otherwise set_language_path has no effect + } + } + + /** + * Get supported langs or an associative array lang=>full_name. + * @param boolean $full_names + * @return array + */ + public function get_supported_languages($full_names=false) + { + // return array + $back = array(); + + // we walk the lang root + $dir = dir($this->language_path); + + // foreach entry + while (false !== ($entry = $dir->read())) + { + $full_path = $this->language_path.$entry; + + // Skip all dirs + if (is_dir($full_path)) { + continue; + } + + // we only want lang.php files + if (!preg_match('/^([^.]+)\.php$/', $entry, $matches)) { + continue; + } + + // Raw lang name is here + $langname = $matches[1]; + + // We want the fullname too? + if ($full_names === true) + { + if (false !== ($fullname = $this->get_language_fullname($langname))) + { + $back[$langname] = $fullname; // we go associative + } + } + else + { + // just store raw langname + $back[] = $langname; + } + } + + $dir->close(); + + return $back; + } + + /** + * Get full_name for a lang or false. + * @param string $language short langname (html4strict for example) + * @return mixed + */ + public function get_language_fullname($language) + { + //Clean up the language name to prevent malicious code injection + $language = preg_replace('#[^a-zA-Z0-9\-_]#', '', $language); + + $language = strtolower($language); + + // get fullpath-filename for a langname + $fullpath = $this->language_path.$language.'.php'; + + // we need to get contents :S + if (false === ($data = file_get_contents($fullpath))) { + $this->error = sprintf('Geshi::get_lang_fullname() Unknown Language: %s', $language); + return false; + } + + // match the langname + if (!preg_match('/\'LANG_NAME\'\s*=>\s*\'((?:[^\']|\\\')+?)\'/', $data, $matches)) { + $this->error = sprintf('Geshi::get_lang_fullname(%s): Regex can not detect language', $language); + return false; + } + + // return fullname for langname + return stripcslashes($matches[1]); + } + + /** + * Sets the type of header to be used. + * + * If GESHI_HEADER_DIV is used, the code is surrounded in a "div".This + * means more source code but more control over tab width and line-wrapping. + * GESHI_HEADER_PRE means that a "pre" is used - less source, but less + * control. Default is GESHI_HEADER_PRE. + * + * From 1.0.7.2, you can use GESHI_HEADER_NONE to specify that no header code + * should be outputted. + * + * @param int $type The type of header to be used + * @since 1.0.0 + */ + public function set_header_type($type) { + //Check if we got a valid header type + if (!in_array($type, array(GESHI_HEADER_NONE, GESHI_HEADER_DIV, + GESHI_HEADER_PRE, GESHI_HEADER_PRE_VALID, GESHI_HEADER_PRE_TABLE))) { + $this->error = GESHI_ERROR_INVALID_HEADER_TYPE; + return; + } + + //Set that new header type + $this->header_type = $type; + } + + /** + * Sets the styles for the code that will be outputted + * when this object is parsed. The style should be a + * string of valid stylesheet declarations + * + * @param string $style The overall style for the outputted code block + * @param boolean $preserve_defaults Whether to merge the styles with the current styles or not + * @since 1.0.0 + */ + public function set_overall_style($style, $preserve_defaults = false) { + if (!$preserve_defaults) { + $this->overall_style = $style; + } else { + $this->overall_style .= $style; + } + } + + /** + * Sets the overall classname for this block of code. This + * class can then be used in a stylesheet to style this object's + * output + * + * @param string $class The class name to use for this block of code + * @since 1.0.0 + */ + public function set_overall_class($class) { + $this->overall_class = $class; + } + + /** + * Sets the overall id for this block of code. This id can then + * be used in a stylesheet to style this object's output + * + * @param string $id The ID to use for this block of code + * @since 1.0.0 + */ + public function set_overall_id($id) { + $this->overall_id = $id; + } + + /** + * Sets whether CSS classes should be used to highlight the source. Default + * is off, calling this method with no arguments will turn it on + * + * @param boolean $flag Whether to turn classes on or not + * @since 1.0.0 + */ + public function enable_classes($flag = true) { + $this->use_classes = ($flag) ? true : false; + } + + /** + * Sets the style for the actual code. This should be a string + * containing valid stylesheet declarations. If $preserve_defaults is + * true, then styles are merged with the default styles, with the + * user defined styles having priority + * + * Note: Use this method to override any style changes you made to + * the line numbers if you are using line numbers, else the line of + * code will have the same style as the line number! Consult the + * GeSHi documentation for more information about this. + * + * @param string $style The style to use for actual code + * @param boolean $preserve_defaults Whether to merge the current styles with the new styles + * @since 1.0.2 + */ + public function set_code_style($style, $preserve_defaults = false) { + if (!$preserve_defaults) { + $this->code_style = $style; + } else { + $this->code_style .= $style; + } + } + + /** + * Sets the styles for the line numbers. + * + * @param string $style1 The style for the line numbers that are "normal" + * @param string|boolean $style2 If a string, this is the style of the line + * numbers that are "fancy", otherwise if boolean then this + * defines whether the normal styles should be merged with the + * new normal styles or not + * @param boolean $preserve_defaults If set, is the flag for whether to merge the "fancy" + * styles with the current styles or not + * @since 1.0.2 + */ + public function set_line_style($style1, $style2 = '', $preserve_defaults = false) { + //Check if we got 2 or three parameters + if (is_bool($style2)) { + $preserve_defaults = $style2; + $style2 = ''; + } + + //Actually set the new styles + if (!$preserve_defaults) { + $this->line_style1 = $style1; + $this->line_style2 = $style2; + } else { + $this->line_style1 .= $style1; + $this->line_style2 .= $style2; + } + } + + /** + * Sets whether line numbers should be displayed. + * + * Valid values for the first parameter are: + * + * - GESHI_NO_LINE_NUMBERS: Line numbers will not be displayed + * - GESHI_NORMAL_LINE_NUMBERS: Line numbers will be displayed + * - GESHI_FANCY_LINE_NUMBERS: Fancy line numbers will be displayed + * + * For fancy line numbers, the second parameter is used to signal which lines + * are to be fancy. For example, if the value of this parameter is 5 then every + * 5th line will be fancy. + * + * @param int $flag How line numbers should be displayed + * @param int $nth_row Defines which lines are fancy + * @since 1.0.0 + */ + public function enable_line_numbers($flag, $nth_row = 5) { + if (GESHI_NO_LINE_NUMBERS != $flag && GESHI_NORMAL_LINE_NUMBERS != $flag + && GESHI_FANCY_LINE_NUMBERS != $flag) { + $this->error = GESHI_ERROR_INVALID_LINE_NUMBER_TYPE; + } + $this->line_numbers = $flag; + $this->line_nth_row = $nth_row; + } + + /** + * Sets wether spans and other HTML markup generated by GeSHi can + * span over multiple lines or not. Defaults to true to reduce overhead. + * Set it to false if you want to manipulate the output or manually display + * the code in an ordered list. + * + * @param boolean $flag Wether multiline spans are allowed or not + * @since 1.0.7.22 + */ + public function enable_multiline_span($flag) { + $this->allow_multiline_span = (bool) $flag; + } + + /** + * Get current setting for multiline spans, see GeSHi->enable_multiline_span(). + * + * @see enable_multiline_span + * @return bool + */ + public function get_multiline_span() { + return $this->allow_multiline_span; + } + + /** + * Sets the style for a keyword group. If $preserve_defaults is + * true, then styles are merged with the default styles, with the + * user defined styles having priority + * + * @param int $key The key of the keyword group to change the styles of + * @param string $style The style to make the keywords + * @param boolean $preserve_defaults Whether to merge the new styles with the old or just + * to overwrite them + * @since 1.0.0 + */ + public function set_keyword_group_style($key, $style, $preserve_defaults = false) { + //Set the style for this keyword group + if('*' == $key) { + foreach($this->language_data['STYLES']['KEYWORDS'] as $_key => $_value) { + if (!$preserve_defaults) { + $this->language_data['STYLES']['KEYWORDS'][$_key] = $style; + } else { + $this->language_data['STYLES']['KEYWORDS'][$_key] .= $style; + } + } + } else { + if (!$preserve_defaults) { + $this->language_data['STYLES']['KEYWORDS'][$key] = $style; + } else { + $this->language_data['STYLES']['KEYWORDS'][$key] .= $style; + } + } + + //Update the lexic permissions + if (!isset($this->lexic_permissions['KEYWORDS'][$key])) { + $this->lexic_permissions['KEYWORDS'][$key] = true; + } + } + + /** + * Turns highlighting on/off for a keyword group + * + * @param int $key The key of the keyword group to turn on or off + * @param boolean $flag Whether to turn highlighting for that group on or off + * @since 1.0.0 + */ + public function set_keyword_group_highlighting($key, $flag = true) { + $this->lexic_permissions['KEYWORDS'][$key] = ($flag) ? true : false; + } + + /** + * Sets the styles for comment groups. If $preserve_defaults is + * true, then styles are merged with the default styles, with the + * user defined styles having priority + * + * @param int $key The key of the comment group to change the styles of + * @param string $style The style to make the comments + * @param boolean $preserve_defaults Whether to merge the new styles with the old or just + * to overwrite them + * @since 1.0.0 + */ + public function set_comments_style($key, $style, $preserve_defaults = false) { + if('*' == $key) { + foreach($this->language_data['STYLES']['COMMENTS'] as $_key => $_value) { + if (!$preserve_defaults) { + $this->language_data['STYLES']['COMMENTS'][$_key] = $style; + } else { + $this->language_data['STYLES']['COMMENTS'][$_key] .= $style; + } + } + } else { + if (!$preserve_defaults) { + $this->language_data['STYLES']['COMMENTS'][$key] = $style; + } else { + $this->language_data['STYLES']['COMMENTS'][$key] .= $style; + } + } + } + + /** + * Turns highlighting on/off for comment groups + * + * @param int $key The key of the comment group to turn on or off + * @param boolean $flag Whether to turn highlighting for that group on or off + * @since 1.0.0 + */ + public function set_comments_highlighting($key, $flag = true) { + $this->lexic_permissions['COMMENTS'][$key] = ($flag) ? true : false; + } + + /** + * Sets the styles for escaped characters. If $preserve_defaults is + * true, then styles are merged with the default styles, with the + * user defined styles having priority + * + * @param string $style The style to make the escape characters + * @param boolean $preserve_defaults Whether to merge the new styles with the old or just + * to overwrite them + * @param int $group Tells the group of symbols for which style should be set. + * @since 1.0.0 + */ + public function set_escape_characters_style($style, $preserve_defaults = false, $group = 0) { + if (!$preserve_defaults) { + $this->language_data['STYLES']['ESCAPE_CHAR'][$group] = $style; + } else { + $this->language_data['STYLES']['ESCAPE_CHAR'][$group] .= $style; + } + } + + /** + * Turns highlighting on/off for escaped characters + * + * @param boolean $flag Whether to turn highlighting for escape characters on or off + * @since 1.0.0 + */ + public function set_escape_characters_highlighting($flag = true) { + $this->lexic_permissions['ESCAPE_CHAR'] = ($flag) ? true : false; + } + + /** + * Sets the styles for brackets. If $preserve_defaults is + * true, then styles are merged with the default styles, with the + * user defined styles having priority + * + * This method is DEPRECATED: use set_symbols_style instead. + * This method will be removed in 1.2.X + * + * @param string $style The style to make the brackets + * @param boolean $preserve_defaults Whether to merge the new styles with the old or just + * to overwrite them + * @since 1.0.0 + * @deprecated In favour of set_symbols_style + */ + public function set_brackets_style($style, $preserve_defaults = false) { + if (!$preserve_defaults) { + $this->language_data['STYLES']['BRACKETS'][0] = $style; + } else { + $this->language_data['STYLES']['BRACKETS'][0] .= $style; + } + } + + /** + * Turns highlighting on/off for brackets + * + * This method is DEPRECATED: use set_symbols_highlighting instead. + * This method will be remove in 1.2.X + * + * @param boolean $flag Whether to turn highlighting for brackets on or off + * @since 1.0.0 + * @deprecated In favour of set_symbols_highlighting + */ + public function set_brackets_highlighting($flag) { + $this->lexic_permissions['BRACKETS'] = ($flag) ? true : false; + } + + /** + * Sets the styles for symbols. If $preserve_defaults is + * true, then styles are merged with the default styles, with the + * user defined styles having priority + * + * @param string $style The style to make the symbols + * @param boolean $preserve_defaults Whether to merge the new styles with the old or just + * to overwrite them + * @param int $group Tells the group of symbols for which style should be set. + * @since 1.0.1 + */ + public function set_symbols_style($style, $preserve_defaults = false, $group = 0) { + // Update the style of symbols + if (!$preserve_defaults) { + $this->language_data['STYLES']['SYMBOLS'][$group] = $style; + } else { + $this->language_data['STYLES']['SYMBOLS'][$group] .= $style; + } + + // For backward compatibility + if (0 == $group) { + $this->set_brackets_style ($style, $preserve_defaults); + } + } + + /** + * Turns highlighting on/off for symbols + * + * @param boolean $flag Whether to turn highlighting for symbols on or off + * @since 1.0.0 + */ + public function set_symbols_highlighting($flag) { + // Update lexic permissions for this symbol group + $this->lexic_permissions['SYMBOLS'] = ($flag) ? true : false; + + // For backward compatibility + $this->set_brackets_highlighting ($flag); + } + + /** + * Sets the styles for strings. If $preserve_defaults is + * true, then styles are merged with the default styles, with the + * user defined styles having priority + * + * @param string $style The style to make the escape characters + * @param boolean $preserve_defaults Whether to merge the new styles with the old or just + * to overwrite them + * @param int $group Tells the group of strings for which style should be set. + * @since 1.0.0 + */ + public function set_strings_style($style, $preserve_defaults = false, $group = 0) { + if (!$preserve_defaults) { + $this->language_data['STYLES']['STRINGS'][$group] = $style; + } else { + $this->language_data['STYLES']['STRINGS'][$group] .= $style; + } + } + + /** + * Turns highlighting on/off for strings + * + * @param boolean $flag Whether to turn highlighting for strings on or off + * @since 1.0.0 + */ + public function set_strings_highlighting($flag) { + $this->lexic_permissions['STRINGS'] = ($flag) ? true : false; + } + + /** + * Sets the styles for strict code blocks. If $preserve_defaults is + * true, then styles are merged with the default styles, with the + * user defined styles having priority + * + * @param string $style The style to make the script blocks + * @param boolean $preserve_defaults Whether to merge the new styles with the old or just + * to overwrite them + * @param int $group Tells the group of script blocks for which style should be set. + * @since 1.0.8.4 + */ + public function set_script_style($style, $preserve_defaults = false, $group = 0) { + // Update the style of symbols + if (!$preserve_defaults) { + $this->language_data['STYLES']['SCRIPT'][$group] = $style; + } else { + $this->language_data['STYLES']['SCRIPT'][$group] .= $style; + } + } + + /** + * Sets the styles for numbers. If $preserve_defaults is + * true, then styles are merged with the default styles, with the + * user defined styles having priority + * + * @param string $style The style to make the numbers + * @param boolean $preserve_defaults Whether to merge the new styles with the old or just + * to overwrite them + * @param int $group Tells the group of numbers for which style should be set. + * @since 1.0.0 + */ + public function set_numbers_style($style, $preserve_defaults = false, $group = 0) { + if (!$preserve_defaults) { + $this->language_data['STYLES']['NUMBERS'][$group] = $style; + } else { + $this->language_data['STYLES']['NUMBERS'][$group] .= $style; + } + } + + /** + * Turns highlighting on/off for numbers + * + * @param boolean $flag Whether to turn highlighting for numbers on or off + * @since 1.0.0 + */ + public function set_numbers_highlighting($flag) { + $this->lexic_permissions['NUMBERS'] = ($flag) ? true : false; + } + + /** + * Sets the styles for methods. $key is a number that references the + * appropriate "object splitter" - see the language file for the language + * you are highlighting to get this number. If $preserve_defaults is + * true, then styles are merged with the default styles, with the + * user defined styles having priority + * + * @param int $key The key of the object splitter to change the styles of + * @param string $style The style to make the methods + * @param boolean $preserve_defaults Whether to merge the new styles with the old or just + * to overwrite them + * @since 1.0.0 + */ + public function set_methods_style($key, $style, $preserve_defaults = false) { + if (!$preserve_defaults) { + $this->language_data['STYLES']['METHODS'][$key] = $style; + } else { + $this->language_data['STYLES']['METHODS'][$key] .= $style; + } + } + + /** + * Turns highlighting on/off for methods + * + * @param boolean $flag Whether to turn highlighting for methods on or off + * @since 1.0.0 + */ + public function set_methods_highlighting($flag) { + $this->lexic_permissions['METHODS'] = ($flag) ? true : false; + } + + /** + * Sets the styles for regexps. If $preserve_defaults is + * true, then styles are merged with the default styles, with the + * user defined styles having priority + * + * @param string $key The style to make the regular expression matches + * @param boolean $style Whether to merge the new styles with the old or just + * to overwrite them + * @param bool $preserve_defaults Whether to merge the new styles with the old or just + * to overwrite them + * @since 1.0.0 + */ + public function set_regexps_style($key, $style, $preserve_defaults = false) { + if (!$preserve_defaults) { + $this->language_data['STYLES']['REGEXPS'][$key] = $style; + } else { + $this->language_data['STYLES']['REGEXPS'][$key] .= $style; + } + } + + /** + * Turns highlighting on/off for regexps + * + * @param int $key The key of the regular expression group to turn on or off + * @param boolean $flag Whether to turn highlighting for the regular expression group on or off + * @since 1.0.0 + */ + public function set_regexps_highlighting($key, $flag) { + $this->lexic_permissions['REGEXPS'][$key] = ($flag) ? true : false; + } + + /** + * Sets whether a set of keywords are checked for in a case sensitive manner + * + * @param int $key The key of the keyword group to change the case sensitivity of + * @param boolean $case Whether to check in a case sensitive manner or not + * @since 1.0.0 + */ + public function set_case_sensitivity($key, $case) { + $this->language_data['CASE_SENSITIVE'][$key] = ($case) ? true : false; + } + + /** + * Sets the case that keywords should use when found. Use the constants: + * + * - GESHI_CAPS_NO_CHANGE: leave keywords as-is + * - GESHI_CAPS_UPPER: convert all keywords to uppercase where found + * - GESHI_CAPS_LOWER: convert all keywords to lowercase where found + * + * @param int $case A constant specifying what to do with matched keywords + * @since 1.0.1 + */ + public function set_case_keywords($case) { + if (in_array($case, array( + GESHI_CAPS_NO_CHANGE, GESHI_CAPS_UPPER, GESHI_CAPS_LOWER))) { + $this->language_data['CASE_KEYWORDS'] = $case; + } + } + + /** + * Sets how many spaces a tab is substituted for + * + * Widths below zero are ignored + * + * @param int $width The tab width + * @since 1.0.0 + */ + public function set_tab_width($width) { + $this->tab_width = intval($width); + + //Check if it fit's the constraints: + if ($this->tab_width < 1) { + //Return it to the default + $this->tab_width = 8; + } + } + + /** + * Sets whether or not to use tab-stop width specifed by language + * + * @param boolean $use Whether to use language-specific tab-stop widths + * @since 1.0.7.20 + */ + public function set_use_language_tab_width($use) { + $this->use_language_tab_width = (bool) $use; + } + + /** + * Returns the tab width to use, based on the current language and user + * preference + * + * @return int Tab width + * @since 1.0.7.20 + */ + public function get_real_tab_width() { + if (!$this->use_language_tab_width || + !isset($this->language_data['TAB_WIDTH'])) { + return $this->tab_width; + } else { + return $this->language_data['TAB_WIDTH']; + } + } + + /** + * Enables/disables strict highlighting. Default is off, calling this + * method without parameters will turn it on. See documentation + * for more details on strict mode and where to use it. + * + * @param boolean $mode Whether to enable strict mode or not + * @since 1.0.0 + */ + public function enable_strict_mode($mode = true) { + if (GESHI_MAYBE == $this->language_data['STRICT_MODE_APPLIES']) { + $this->strict_mode = ($mode) ? GESHI_ALWAYS : GESHI_NEVER; + } + } + + /** + * Disables all highlighting + * + * @since 1.0.0 + * @todo Rewrite with array traversal + * @deprecated In favour of enable_highlighting + */ + public function disable_highlighting() { + $this->enable_highlighting(false); + } + + /** + * Enables all highlighting + * + * The optional flag parameter was added in version 1.0.7.21 and can be used + * to enable (true) or disable (false) all highlighting. + * + * @since 1.0.0 + * @param boolean $flag A flag specifying whether to enable or disable all highlighting + * @todo Rewrite with array traversal + */ + public function enable_highlighting($flag = true) { + $flag = $flag ? true : false; + foreach ($this->lexic_permissions as $key => $value) { + if (is_array($value)) { + foreach ($value as $k => $v) { + $this->lexic_permissions[$key][$k] = $flag; + } + } else { + $this->lexic_permissions[$key] = $flag; + } + } + + // Context blocks + $this->enable_important_blocks = $flag; + } + + /** + * Given a file extension, this method returns either a valid geshi language + * name, or the empty string if it couldn't be found + * + * @param string $extension The extension to get a language name for + * @param array $lookup A lookup array to use instead of the default one + * @since 1.0.5 + * @todo Re-think about how this method works (maybe make it private and/or make it + * a extension->lang lookup?) + * @return int|string + */ + public static function get_language_name_from_extension( $extension, $lookup = array() ) { + $extension = strtolower($extension); + + if ( !is_array($lookup) || empty($lookup)) { + $lookup = array( + '6502acme' => array( 'a', 's', 'asm', 'inc' ), + '6502tasm' => array( 'a', 's', 'asm', 'inc' ), + '6502kickass' => array( 'a', 's', 'asm', 'inc' ), + '68000devpac' => array( 'a', 's', 'asm', 'inc' ), + 'abap' => array('abap'), + 'actionscript' => array('as'), + 'ada' => array('a', 'ada', 'adb', 'ads'), + 'apache' => array('conf'), + 'asm' => array('ash', 'asm', 'inc'), + 'asp' => array('asp'), + 'bash' => array('sh'), + 'bf' => array('bf'), + 'c' => array('c', 'h'), + 'c_mac' => array('c', 'h'), + 'caddcl' => array(), + 'cadlisp' => array(), + 'cdfg' => array('cdfg'), + 'cobol' => array('cbl'), + 'cpp' => array('cpp', 'hpp', 'C', 'H', 'CPP', 'HPP'), + 'csharp' => array('cs'), + 'css' => array('css'), + 'd' => array('d'), + 'delphi' => array('dpk', 'dpr', 'pp', 'pas'), + 'diff' => array('diff', 'patch'), + 'dos' => array('bat', 'cmd'), + 'gdb' => array('kcrash', 'crash', 'bt'), + 'gettext' => array('po', 'pot'), + 'gml' => array('gml'), + 'gnuplot' => array('plt'), + 'groovy' => array('groovy'), + 'haskell' => array('hs'), + 'haxe' => array('hx'), + 'html4strict' => array('html', 'htm'), + 'ini' => array('ini', 'desktop'), + 'java' => array('java'), + 'javascript' => array('js'), + 'klonec' => array('kl1'), + 'klonecpp' => array('klx'), + 'latex' => array('tex'), + 'lisp' => array('lisp'), + 'lua' => array('lua'), + 'matlab' => array('m'), + 'mpasm' => array(), + 'mysql' => array('sql'), + 'nsis' => array(), + 'objc' => array(), + 'oobas' => array(), + 'oracle8' => array(), + 'oracle10' => array(), + 'pascal' => array('pas'), + 'perl' => array('pl', 'pm'), + 'php' => array('php', 'php5', 'phtml', 'phps'), + 'povray' => array('pov'), + 'providex' => array('pvc', 'pvx'), + 'prolog' => array('pl'), + 'python' => array('py'), + 'qbasic' => array('bi'), + 'reg' => array('reg'), + 'ruby' => array('rb'), + 'sas' => array('sas'), + 'scala' => array('scala'), + 'scheme' => array('scm'), + 'scilab' => array('sci'), + 'smalltalk' => array('st'), + 'smarty' => array(), + 'tcl' => array('tcl'), + 'text' => array('txt'), + 'vb' => array('bas'), + 'vbnet' => array(), + 'visualfoxpro' => array(), + 'whitespace' => array('ws'), + 'xml' => array('xml', 'svg', 'xrc'), + 'z80' => array('z80', 'asm', 'inc') + ); + } + + foreach ($lookup as $lang => $extensions) { + if (in_array($extension, $extensions)) { + return $lang; + } + } + + return 'text'; + } + + /** + * Given a file name, this method loads its contents in, and attempts + * to set the language automatically. An optional lookup table can be + * passed for looking up the language name. If not specified a default + * table is used + * + * The language table is in the form + *
    array(
    +     *   'lang_name' => array('extension', 'extension', ...),
    +     *   'lang_name' ...
    +     * );
    + * + * @param string $file_name The filename to load the source from + * @param array $lookup A lookup array to use instead of the default one + * @todo Complete rethink of this and above method + * @since 1.0.5 + */ + public function load_from_file($file_name, $lookup = array()) { + if (is_readable($file_name)) { + $this->set_source(file_get_contents($file_name)); + $this->set_language(self::get_language_name_from_extension(substr(strrchr($file_name, '.'), 1), $lookup)); + } else { + $this->error = GESHI_ERROR_FILE_NOT_READABLE; + } + } + + /** + * Adds a keyword to a keyword group for highlighting + * + * @param int $key The key of the keyword group to add the keyword to + * @param string $word The word to add to the keyword group + * @since 1.0.0 + */ + public function add_keyword($key, $word) { + if (!is_array($this->language_data['KEYWORDS'][$key])) { + $this->language_data['KEYWORDS'][$key] = array(); + } + if (!in_array($word, $this->language_data['KEYWORDS'][$key])) { + $this->language_data['KEYWORDS'][$key][] = $word; + + //NEW in 1.0.8 don't recompile the whole optimized regexp, simply append it + if ($this->parse_cache_built) { + $subkey = count($this->language_data['CACHED_KEYWORD_LISTS'][$key]) - 1; + $this->language_data['CACHED_KEYWORD_LISTS'][$key][$subkey] .= '|' . preg_quote($word, '/'); + } + } + } + + /** + * Removes a keyword from a keyword group + * + * @param int $key The key of the keyword group to remove the keyword from + * @param string $word The word to remove from the keyword group + * @param bool $recompile Wether to automatically recompile the optimized regexp list or not. + * Note: if you set this to false and @see GeSHi->parse_code() was already called once, + * for the current language, you have to manually call @see GeSHi->optimize_keyword_group() + * or the removed keyword will stay in cache and still be highlighted! On the other hand + * it might be too expensive to recompile the regexp list for every removal if you want to + * remove a lot of keywords. + * @since 1.0.0 + */ + public function remove_keyword($key, $word, $recompile = true) { + $key_to_remove = array_search($word, $this->language_data['KEYWORDS'][$key]); + if ($key_to_remove !== false) { + unset($this->language_data['KEYWORDS'][$key][$key_to_remove]); + + //NEW in 1.0.8, optionally recompile keyword group + if ($recompile && $this->parse_cache_built) { + $this->optimize_keyword_group($key); + } + } + } + + /** + * Creates a new keyword group + * + * @param int $key The key of the keyword group to create + * @param string $styles The styles for the keyword group + * @param boolean $case_sensitive Whether the keyword group is case sensitive ornot + * @param array $words The words to use for the keyword group + * @since 1.0.0 + * @return bool + */ + public function add_keyword_group($key, $styles, $case_sensitive = true, $words = array()) { + $words = (array) $words; + if (empty($words)) { + // empty word lists mess up highlighting + return false; + } + + //Add the new keyword group internally + $this->language_data['KEYWORDS'][$key] = $words; + $this->lexic_permissions['KEYWORDS'][$key] = true; + $this->language_data['CASE_SENSITIVE'][$key] = $case_sensitive; + $this->language_data['STYLES']['KEYWORDS'][$key] = $styles; + + //NEW in 1.0.8, cache keyword regexp + if ($this->parse_cache_built) { + $this->optimize_keyword_group($key); + } + return true; + } + + /** + * Removes a keyword group + * + * @param int $key The key of the keyword group to remove + * @since 1.0.0 + */ + public function remove_keyword_group ($key) { + //Remove the keyword group internally + unset($this->language_data['KEYWORDS'][$key]); + unset($this->lexic_permissions['KEYWORDS'][$key]); + unset($this->language_data['CASE_SENSITIVE'][$key]); + unset($this->language_data['STYLES']['KEYWORDS'][$key]); + + //NEW in 1.0.8 + unset($this->language_data['CACHED_KEYWORD_LISTS'][$key]); + } + + /** + * compile optimized regexp list for keyword group + * + * @param int $key The key of the keyword group to compile & optimize + * @since 1.0.8 + */ + public function optimize_keyword_group($key) { + $this->language_data['CACHED_KEYWORD_LISTS'][$key] = + $this->optimize_regexp_list($this->language_data['KEYWORDS'][$key]); + $space_as_whitespace = false; + if(isset($this->language_data['PARSER_CONTROL'])) { + if(isset($this->language_data['PARSER_CONTROL']['KEYWORDS'])) { + if(isset($this->language_data['PARSER_CONTROL']['KEYWORDS']['SPACE_AS_WHITESPACE'])) { + $space_as_whitespace = $this->language_data['PARSER_CONTROL']['KEYWORDS']['SPACE_AS_WHITESPACE']; + } + if(isset($this->language_data['PARSER_CONTROL']['KEYWORDS'][$key]['SPACE_AS_WHITESPACE'])) { + if(isset($this->language_data['PARSER_CONTROL']['KEYWORDS'][$key]['SPACE_AS_WHITESPACE'])) { + $space_as_whitespace = $this->language_data['PARSER_CONTROL']['KEYWORDS'][$key]['SPACE_AS_WHITESPACE']; + } + } + } + } + if($space_as_whitespace) { + foreach($this->language_data['CACHED_KEYWORD_LISTS'][$key] as $rxk => $rxv) { + $this->language_data['CACHED_KEYWORD_LISTS'][$key][$rxk] = + str_replace(" ", "\\s+", $rxv); + } + } + } + + /** + * Sets the content of the header block + * + * @param string $content The content of the header block + * @since 1.0.2 + */ + public function set_header_content($content) { + $this->header_content = $content; + } + + /** + * Sets the content of the footer block + * + * @param string $content The content of the footer block + * @since 1.0.2 + */ + public function set_footer_content($content) { + $this->footer_content = $content; + } + + /** + * Sets the style for the header content + * + * @param string $style The style for the header content + * @since 1.0.2 + */ + public function set_header_content_style($style) { + $this->header_content_style = $style; + } + + /** + * Sets the style for the footer content + * + * @param string $style The style for the footer content + * @since 1.0.2 + */ + public function set_footer_content_style($style) { + $this->footer_content_style = $style; + } + + /** + * Sets whether to force a surrounding block around + * the highlighted code or not + * + * @param boolean $flag Tells whether to enable or disable this feature + * @since 1.0.7.20 + */ + public function enable_inner_code_block($flag) { + $this->force_code_block = (bool)$flag; + } + + /** + * Sets the base URL to be used for keywords + * + * @param int $group The key of the keyword group to set the URL for + * @param string $url The URL to set for the group. If {FNAME} is in + * the url somewhere, it is replaced by the keyword + * that the URL is being made for + * @since 1.0.2 + */ + public function set_url_for_keyword_group($group, $url) { + $this->language_data['URLS'][$group] = $url; + } + + /** + * Sets styles for links in code + * + * @param int $type A constant that specifies what state the style is being + * set for - e.g. :hover or :visited + * @param string $styles The styles to use for that state + * @since 1.0.2 + */ + public function set_link_styles($type, $styles) { + $this->link_styles[$type] = $styles; + } + + /** + * Sets the target for links in code + * + * @param string $target The target for links in the code, e.g. _blank + * @since 1.0.3 + */ + public function set_link_target($target) { + if (!$target) { + $this->link_target = ''; + } else { + $this->link_target = ' target="' . $target . '"'; + } + } + + /** + * Sets styles for important parts of the code + * + * @param string $styles The styles to use on important parts of the code + * @since 1.0.2 + */ + public function set_important_styles($styles) { + $this->important_styles = $styles; + } + + /** + * Sets whether context-important blocks are highlighted + * + * @param boolean $flag Tells whether to enable or disable highlighting of important blocks + * @todo REMOVE THIS SHIZ FROM GESHI! + * @deprecated + * @since 1.0.2 + */ + public function enable_important_blocks($flag) { + $this->enable_important_blocks = ( $flag ) ? true : false; + } + + /** + * Whether CSS IDs should be added to each line + * + * @param boolean $flag If true, IDs will be added to each line. + * @since 1.0.2 + */ + public function enable_ids($flag = true) { + $this->add_ids = ($flag) ? true : false; + } + + /** + * Specifies which lines to highlight extra + * + * The extra style parameter was added in 1.0.7.21. + * + * @param mixed $lines An array of line numbers to highlight, or just a line + * number on its own. + * @param string $style A string specifying the style to use for this line. + * If null is specified, the default style is used. + * If false is specified, the line will be removed from + * special highlighting + * @since 1.0.2 + * @todo Some data replication here that could be cut down on + */ + public function highlight_lines_extra($lines, $style = null) { + if (is_array($lines)) { + //Split up the job using single lines at a time + foreach ($lines as $line) { + $this->highlight_lines_extra($line, $style); + } + } else { + //Mark the line as being highlighted specially + $lines = intval($lines); + $this->highlight_extra_lines[$lines] = $lines; + + //Decide on which style to use + if ($style === null) { //Check if we should use default style + unset($this->highlight_extra_lines_styles[$lines]); + } elseif ($style === false) { //Check if to remove this line + unset($this->highlight_extra_lines[$lines]); + unset($this->highlight_extra_lines_styles[$lines]); + } else { + $this->highlight_extra_lines_styles[$lines] = $style; + } + } + } + + /** + * Sets the style for extra-highlighted lines + * + * @param string $styles The style for extra-highlighted lines + * @since 1.0.2 + */ + public function set_highlight_lines_extra_style($styles) { + $this->highlight_extra_lines_style = $styles; + } + + /** + * Sets the line-ending + * + * @param string $line_ending The new line-ending + * @since 1.0.2 + */ + public function set_line_ending($line_ending) { + $this->line_ending = (string)$line_ending; + } + + /** + * Sets what number line numbers should start at. Should + * be a positive integer, and will be converted to one. + * + * Warning: Using this method will add the "start" + * attribute to the <ol> that is used for line numbering. + * This is not valid XHTML strict, so if that's what you + * care about then don't use this method. Firefox is getting + * support for the CSS method of doing this in 1.1 and Opera + * has support for the CSS method, but (of course) IE doesn't + * so it's not worth doing it the CSS way yet. + * + * @param int $number The number to start line numbers at + * @since 1.0.2 + */ + public function start_line_numbers_at($number) { + $this->line_numbers_start = abs(intval($number)); + } + + /** + * Sets the encoding used for htmlspecialchars(), for international + * support. + * + * NOTE: This is not needed for now because htmlspecialchars() is not + * being used (it has a security hole in PHP4 that has not been patched). + * Maybe in a future version it may make a return for speed reasons, but + * I doubt it. + * + * @param string $encoding The encoding to use for the source + * @since 1.0.3 + */ + public function set_encoding($encoding) { + if ($encoding) { + $this->encoding = strtolower($encoding); + } + } + + /** + * Turns linking of keywords on or off. + * + * @param boolean $enable If true, links will be added to keywords + * @since 1.0.2 + */ + public function enable_keyword_links($enable = true) { + $this->keyword_links = (bool) $enable; + } + + /** + * Setup caches needed for styling. This is automatically called in + * parse_code() and get_stylesheet() when appropriate. This function helps + * stylesheet generators as they rely on some style information being + * preprocessed + * + * @since 1.0.8 + */ + protected function build_style_cache() { + //Build the style cache needed to highlight numbers appropriate + if($this->lexic_permissions['NUMBERS']) { + //First check what way highlighting information for numbers are given + if(!isset($this->language_data['NUMBERS'])) { + $this->language_data['NUMBERS'] = 0; + } + + if(is_array($this->language_data['NUMBERS'])) { + $this->language_data['NUMBERS_CACHE'] = $this->language_data['NUMBERS']; + } else { + $this->language_data['NUMBERS_CACHE'] = array(); + if(!$this->language_data['NUMBERS']) { + $this->language_data['NUMBERS'] = + GESHI_NUMBER_INT_BASIC | + GESHI_NUMBER_FLT_NONSCI; + } + + for($i = 0, $j = $this->language_data['NUMBERS']; $j > 0; ++$i, $j>>=1) { + //Rearrange style indices if required ... + if(isset($this->language_data['STYLES']['NUMBERS'][1<<$i])) { + $this->language_data['STYLES']['NUMBERS'][$i] = + $this->language_data['STYLES']['NUMBERS'][1<<$i]; + unset($this->language_data['STYLES']['NUMBERS'][1<<$i]); + } + + //Check if this bit is set for highlighting + if($j&1) { + //So this bit is set ... + //Check if it belongs to group 0 or the actual stylegroup + if(isset($this->language_data['STYLES']['NUMBERS'][$i])) { + $this->language_data['NUMBERS_CACHE'][$i] = 1 << $i; + } else { + if(!isset($this->language_data['NUMBERS_CACHE'][0])) { + $this->language_data['NUMBERS_CACHE'][0] = 0; + } + $this->language_data['NUMBERS_CACHE'][0] |= 1 << $i; + } + } + } + } + } + } + + /** + * Setup caches needed for parsing. This is automatically called in parse_code() when appropriate. + * This function makes stylesheet generators much faster as they do not need these caches. + * + * @since 1.0.8 + */ + protected function build_parse_cache() { + // cache symbol regexp + //As this is a costy operation, we avoid doing it for multiple groups ... + //Instead we perform it for all symbols at once. + // + //For this to work, we need to reorganize the data arrays. + if ($this->lexic_permissions['SYMBOLS'] && !empty($this->language_data['SYMBOLS'])) { + $this->language_data['MULTIPLE_SYMBOL_GROUPS'] = count($this->language_data['STYLES']['SYMBOLS']) > 1; + + $this->language_data['SYMBOL_DATA'] = array(); + $symbol_preg_multi = array(); // multi char symbols + $symbol_preg_single = array(); // single char symbols + foreach ($this->language_data['SYMBOLS'] as $key => $symbols) { + if (is_array($symbols)) { + foreach ($symbols as $sym) { + $sym = $this->hsc($sym); + if (!isset($this->language_data['SYMBOL_DATA'][$sym])) { + $this->language_data['SYMBOL_DATA'][$sym] = $key; + if (isset($sym[1])) { // multiple chars + $symbol_preg_multi[] = preg_quote($sym, '/'); + } else { // single char + if ($sym == '-') { + // don't trigger range out of order error + $symbol_preg_single[] = '\-'; + } else { + $symbol_preg_single[] = preg_quote($sym, '/'); + } + } + } + } + } else { + $symbols = $this->hsc($symbols); + if (!isset($this->language_data['SYMBOL_DATA'][$symbols])) { + $this->language_data['SYMBOL_DATA'][$symbols] = 0; + if (isset($symbols[1])) { // multiple chars + $symbol_preg_multi[] = preg_quote($symbols, '/'); + } elseif ($symbols == '-') { + // don't trigger range out of order error + $symbol_preg_single[] = '\-'; + } else { // single char + $symbol_preg_single[] = preg_quote($symbols, '/'); + } + } + } + } + + //Now we have an array with each possible symbol as the key and the style as the actual data. + //This way we can set the correct style just the moment we highlight ... + // + //Now we need to rewrite our array to get a search string that + $symbol_preg = array(); + if (!empty($symbol_preg_multi)) { + rsort($symbol_preg_multi); + $symbol_preg[] = implode('|', $symbol_preg_multi); + } + if (!empty($symbol_preg_single)) { + rsort($symbol_preg_single); + $symbol_preg[] = '[' . implode('', $symbol_preg_single) . ']'; + } + $this->language_data['SYMBOL_SEARCH'] = implode("|", $symbol_preg); + } + + // cache optimized regexp for keyword matching + // remove old cache + $this->language_data['CACHED_KEYWORD_LISTS'] = array(); + foreach (array_keys($this->language_data['KEYWORDS']) as $key) { + if (!isset($this->lexic_permissions['KEYWORDS'][$key]) || + $this->lexic_permissions['KEYWORDS'][$key]) { + $this->optimize_keyword_group($key); + } + } + + // brackets + if ($this->lexic_permissions['BRACKETS']) { + $this->language_data['CACHE_BRACKET_MATCH'] = array('[', ']', '(', ')', '{', '}'); + if (!$this->use_classes && isset($this->language_data['STYLES']['BRACKETS'][0])) { + $this->language_data['CACHE_BRACKET_REPLACE'] = array( + '<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">[|>', + '<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">]|>', + '<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">(|>', + '<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">)|>', + '<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">{|>', + '<| style="' . $this->language_data['STYLES']['BRACKETS'][0] . '">}|>', + ); + } + else { + $this->language_data['CACHE_BRACKET_REPLACE'] = array( + '<| class="br0">[|>', + '<| class="br0">]|>', + '<| class="br0">(|>', + '<| class="br0">)|>', + '<| class="br0">{|>', + '<| class="br0">}|>', + ); + } + } + + //Build the parse cache needed to highlight numbers appropriate + if($this->lexic_permissions['NUMBERS']) { + //Check if the style rearrangements have been processed ... + //This also does some preprocessing to check which style groups are useable ... + if(!isset($this->language_data['NUMBERS_CACHE'])) { + $this->build_style_cache(); + } + + //Number format specification + //All this formats are matched case-insensitively! + static $numbers_format = array( + GESHI_NUMBER_INT_BASIC => + '(?:(? + '(? + '(? + '(? + '(? + '(? + '(? + '(? + '(? + '(? + '(? + '(? + '(? + '(? + '(? + '(?language_data['NUMBERS_RXCACHE'] = array(); + foreach($this->language_data['NUMBERS_CACHE'] as $key => $rxdata) { + if(is_string($rxdata)) { + $regexp = $rxdata; + } else { + //This is a bitfield of number flags to highlight: + //Build an array, implode them together and make this the actual RX + $rxuse = array(); + for($i = 1; $i <= $rxdata; $i<<=1) { + if($rxdata & $i) { + $rxuse[] = $numbers_format[$i]; + } + } + $regexp = implode("|", $rxuse); + } + + $this->language_data['NUMBERS_RXCACHE'][$key] = + "/(?)($regexp)(?!(?:|(?>[^\<]))+>)(?![^<]*>)(?!\|>)(?!\/>)/i"; + } + + if(!isset($this->language_data['PARSER_CONTROL']['NUMBERS']['PRECHECK_RX'])) { + $this->language_data['PARSER_CONTROL']['NUMBERS']['PRECHECK_RX'] = '#\d#'; + } + } + + $this->parse_cache_built = true; + } + + /** + * Returns the code in $this->source, highlighted and surrounded by the + * nessecary HTML. + * + * This should only be called ONCE, cos it's SLOW! If you want to highlight + * the same source multiple times, you're better off doing a whole lot of + * str_replaces to replace the <span>s + * + * @since 1.0.0 + */ + public function parse_code () { + // Start the timer + $start_time = microtime(); + + // Replace all newlines to a common form. + $code = str_replace("\r\n", "\n", $this->source); + $code = str_replace("\r", "\n", $code); + + // Firstly, if there is an error, we won't highlight + if ($this->error) { + //Escape the source for output + $result = $this->hsc($this->source); + + //This fix is related to SF#1923020, but has to be applied regardless of + //actually highlighting symbols. + $result = str_replace(array('', ''), array(';', '|'), $result); + + // Timing is irrelevant + $this->set_time($start_time, $start_time); + $this->finalise($result); + return $result; + } + + // make sure the parse cache is up2date + if (!$this->parse_cache_built) { + $this->build_parse_cache(); + } + + // Initialise various stuff + $length = strlen($code); + $COMMENT_MATCHED = false; + $stuff_to_parse = ''; + $endresult = ''; + + // "Important" selections are handled like multiline comments + // @todo GET RID OF THIS SHIZ + if ($this->enable_important_blocks) { + $this->language_data['COMMENT_MULTI'][GESHI_START_IMPORTANT] = GESHI_END_IMPORTANT; + } + + if ($this->strict_mode) { + // Break the source into bits. Each bit will be a portion of the code + // within script delimiters - for example, HTML between < and > + $k = 0; + $parts = array(); + $matches = array(); + $next_match_pointer = null; + // we use a copy to unset delimiters on demand (when they are not found) + $delim_copy = $this->language_data['SCRIPT_DELIMITERS']; + $i = 0; + while ($i < $length) { + $next_match_pos = $length + 1; // never true + foreach ($delim_copy as $dk => $delimiters) { + if(is_array($delimiters)) { + foreach ($delimiters as $open => $close) { + // make sure the cache is setup properly + if (!isset($matches[$dk][$open])) { + $matches[$dk][$open] = array( + 'next_match' => -1, + 'dk' => $dk, + + 'open' => $open, // needed for grouping of adjacent code blocks (see below) + 'open_strlen' => strlen($open), + + 'close' => $close, + 'close_strlen' => strlen($close), + ); + } + // Get the next little bit for this opening string + if ($matches[$dk][$open]['next_match'] < $i) { + // only find the next pos if it was not already cached + $open_pos = strpos($code, $open, $i); + if ($open_pos === false) { + // no match for this delimiter ever + unset($delim_copy[$dk][$open]); + continue; + } + $matches[$dk][$open]['next_match'] = $open_pos; + } + if ($matches[$dk][$open]['next_match'] < $next_match_pos) { + //So we got a new match, update the close_pos + $matches[$dk][$open]['close_pos'] = + strpos($code, $close, $matches[$dk][$open]['next_match']+1); + + $next_match_pointer =& $matches[$dk][$open]; + $next_match_pos = $matches[$dk][$open]['next_match']; + } + } + } else { + //So we should match an RegExp as Strict Block ... + /** + * The value in $delimiters is expected to be an RegExp + * containing exactly 2 matching groups: + * - Group 1 is the opener + * - Group 2 is the closer + */ + if(preg_match($delimiters, $code, $matches_rx, PREG_OFFSET_CAPTURE, $i)) { + //We got a match ... + if(isset($matches_rx['start']) && isset($matches_rx['end'])) + { + $matches[$dk] = array( + 'next_match' => $matches_rx['start'][1], + 'dk' => $dk, + + 'close_strlen' => strlen($matches_rx['end'][0]), + 'close_pos' => $matches_rx['end'][1], + ); + } else { + $matches[$dk] = array( + 'next_match' => $matches_rx[1][1], + 'dk' => $dk, + + 'close_strlen' => strlen($matches_rx[2][0]), + 'close_pos' => $matches_rx[2][1], + ); + } + } else { + // no match for this delimiter ever + unset($delim_copy[$dk]); + continue; + } + + if ($matches[$dk]['next_match'] <= $next_match_pos) { + $next_match_pointer =& $matches[$dk]; + $next_match_pos = $matches[$dk]['next_match']; + } + } + } + + // non-highlightable text + $parts[$k] = array( + 1 => substr($code, $i, $next_match_pos - $i) + ); + ++$k; + + if ($next_match_pos > $length) { + // out of bounds means no next match was found + break; + } + + // highlightable code + $parts[$k][0] = $next_match_pointer['dk']; + + //Only combine for non-rx script blocks + if(is_array($delim_copy[$next_match_pointer['dk']])) { + // group adjacent script blocks, e.g. should be one block, not three! + $i = $next_match_pos + $next_match_pointer['open_strlen']; + while (true) { + $close_pos = strpos($code, $next_match_pointer['close'], $i); + if ($close_pos == false) { + break; + } + $i = $close_pos + $next_match_pointer['close_strlen']; + if ($i == $length) { + break; + } + if ($code[$i] == $next_match_pointer['open'][0] && ($next_match_pointer['open_strlen'] == 1 || + substr($code, $i, $next_match_pointer['open_strlen']) == $next_match_pointer['open'])) { + // merge adjacent but make sure we don't merge things like + foreach ($matches as $submatches) { + foreach ($submatches as $match) { + if ($match['next_match'] == $i) { + // a different block already matches here! + break 3; + } + } + } + } else { + break; + } + } + } else { + $close_pos = $next_match_pointer['close_pos'] + $next_match_pointer['close_strlen']; + $i = $close_pos; + } + + if ($close_pos === false) { + // no closing delimiter found! + $parts[$k][1] = substr($code, $next_match_pos); + ++$k; + break; + } else { + $parts[$k][1] = substr($code, $next_match_pos, $i - $next_match_pos); + ++$k; + } + } + unset($delim_copy, $next_match_pointer, $next_match_pos, $matches); + $num_parts = $k; + + if ($num_parts == 1 && $this->strict_mode == GESHI_MAYBE) { + // when we have only one part, we don't have anything to highlight at all. + // if we have a "maybe" strict language, this should be handled as highlightable code + $parts = array( + 0 => array( + 0 => '', + 1 => '' + ), + 1 => array( + 0 => null, + 1 => $parts[0][1] + ) + ); + $num_parts = 2; + } + + } else { + // Not strict mode - simply dump the source into + // the array at index 1 (the first highlightable block) + $parts = array( + 0 => array( + 0 => '', + 1 => '' + ), + 1 => array( + 0 => null, + 1 => $code + ) + ); + $num_parts = 2; + } + + //Unset variables we won't need any longer + unset($code); + + //Preload some repeatedly used values regarding hardquotes ... + $hq = isset($this->language_data['HARDQUOTE']) ? $this->language_data['HARDQUOTE'][0] : false; + $hq_strlen = strlen($hq); + + //Preload if line numbers are to be generated afterwards + //Added a check if line breaks should be forced even without line numbers, fixes SF#1727398 + $check_linenumbers = $this->line_numbers != GESHI_NO_LINE_NUMBERS || + !empty($this->highlight_extra_lines) || !$this->allow_multiline_span; + + //preload the escape char for faster checking ... + $escaped_escape_char = $this->hsc($this->language_data['ESCAPE_CHAR']); + + // this is used for single-line comments + $sc_disallowed_before = ""; + $sc_disallowed_after = ""; + + if (isset($this->language_data['PARSER_CONTROL'])) { + if (isset($this->language_data['PARSER_CONTROL']['COMMENTS'])) { + if (isset($this->language_data['PARSER_CONTROL']['COMMENTS']['DISALLOWED_BEFORE'])) { + $sc_disallowed_before = $this->language_data['PARSER_CONTROL']['COMMENTS']['DISALLOWED_BEFORE']; + } + if (isset($this->language_data['PARSER_CONTROL']['COMMENTS']['DISALLOWED_AFTER'])) { + $sc_disallowed_after = $this->language_data['PARSER_CONTROL']['COMMENTS']['DISALLOWED_AFTER']; + } + } + } + + //Fix for SF#1932083: Multichar Quotemarks unsupported + $is_string_starter = array(); + if ($this->lexic_permissions['STRINGS']) { + foreach ($this->language_data['QUOTEMARKS'] as $quotemark) { + if (!isset($is_string_starter[$quotemark[0]])) { + $is_string_starter[$quotemark[0]] = (string)$quotemark; + } elseif (is_string($is_string_starter[$quotemark[0]])) { + $is_string_starter[$quotemark[0]] = array( + $is_string_starter[$quotemark[0]], + $quotemark); + } else { + $is_string_starter[$quotemark[0]][] = $quotemark; + } + } + } + + // Now we go through each part. We know that even-indexed parts are + // code that shouldn't be highlighted, and odd-indexed parts should + // be highlighted + for ($key = 0; $key < $num_parts; ++$key) { + $STRICTATTRS = ''; + + // If this block should be highlighted... + if (!($key & 1)) { + // Else not a block to highlight + $endresult .= $this->hsc($parts[$key][1]); + unset($parts[$key]); + continue; + } + + $result = ''; + $part = $parts[$key][1]; + + $highlight_part = true; + if ($this->strict_mode && !is_null($parts[$key][0])) { + // get the class key for this block of code + $script_key = $parts[$key][0]; + $highlight_part = $this->language_data['HIGHLIGHT_STRICT_BLOCK'][$script_key]; + if ($this->language_data['STYLES']['SCRIPT'][$script_key] != '' && + $this->lexic_permissions['SCRIPT']) { + // Add a span element around the source to + // highlight the overall source block + if (!$this->use_classes && + $this->language_data['STYLES']['SCRIPT'][$script_key] != '') { + $attributes = ' style="' . $this->language_data['STYLES']['SCRIPT'][$script_key] . '"'; + } else { + $attributes = ' class="sc' . $script_key . '"'; + } + $result .= ""; + $STRICTATTRS = $attributes; + } + } + + if ($highlight_part) { + // Now, highlight the code in this block. This code + // is really the engine of GeSHi (along with the method + // parse_non_string_part). + + // cache comment regexps incrementally + $next_comment_regexp_key = ''; + $next_comment_regexp_pos = -1; + $next_comment_multi_pos = -1; + $next_comment_single_pos = -1; + $comment_regexp_cache_per_key = array(); + $comment_multi_cache_per_key = array(); + $comment_single_cache_per_key = array(); + $next_open_comment_multi = ''; + $next_comment_single_key = ''; + $escape_regexp_cache_per_key = array(); + $next_escape_regexp_key = ''; + $next_escape_regexp_pos = -1; + + $length = strlen($part); + for ($i = 0; $i < $length; ++$i) { + // Get the next char + $char = $part[$i]; + $char_len = 1; + + // update regexp comment cache if needed + if (isset($this->language_data['COMMENT_REGEXP']) && $next_comment_regexp_pos < $i) { + $next_comment_regexp_pos = $length; + foreach ($this->language_data['COMMENT_REGEXP'] as $comment_key => $regexp) { + $match_i = false; + if (isset($comment_regexp_cache_per_key[$comment_key]) && + ($comment_regexp_cache_per_key[$comment_key]['pos'] >= $i || + $comment_regexp_cache_per_key[$comment_key]['pos'] === false)) { + // we have already matched something + if ($comment_regexp_cache_per_key[$comment_key]['pos'] === false) { + // this comment is never matched + continue; + } + $match_i = $comment_regexp_cache_per_key[$comment_key]['pos']; + } elseif (preg_match($regexp, $part, $match, PREG_OFFSET_CAPTURE, $i)) { + $match_i = $match[0][1]; + + $comment_regexp_cache_per_key[$comment_key] = array( + 'key' => $comment_key, + 'length' => strlen($match[0][0]), + 'pos' => $match_i + ); + } else { + $comment_regexp_cache_per_key[$comment_key]['pos'] = false; + continue; + } + + if ($match_i !== false && $match_i < $next_comment_regexp_pos) { + $next_comment_regexp_pos = $match_i; + $next_comment_regexp_key = $comment_key; + if ($match_i === $i) { + break; + } + } + } + } + + $string_started = false; + + if (isset($is_string_starter[$char])) { + // Possibly the start of a new string ... + + //Check which starter it was ... + //Fix for SF#1932083: Multichar Quotemarks unsupported + if (is_array($is_string_starter[$char])) { + $char_new = ''; + foreach ($is_string_starter[$char] as $testchar) { + if ($testchar === substr($part, $i, strlen($testchar)) && + strlen($testchar) > strlen($char_new)) { + $char_new = $testchar; + $string_started = true; + } + } + if ($string_started) { + $char = $char_new; + } + } else { + $testchar = $is_string_starter[$char]; + if ($testchar === substr($part, $i, strlen($testchar))) { + $char = $testchar; + $string_started = true; + } + } + $char_len = strlen($char); + } + + if ($string_started && ($i != $next_comment_regexp_pos)) { + // Hand out the correct style information for this string + $string_key = array_search($char, $this->language_data['QUOTEMARKS']); + if (!isset($this->language_data['STYLES']['STRINGS'][$string_key]) || + !isset($this->language_data['STYLES']['ESCAPE_CHAR'][$string_key])) { + $string_key = 0; + } + + // parse the stuff before this + $result .= $this->parse_non_string_part($stuff_to_parse); + $stuff_to_parse = ''; + + if (!$this->use_classes) { + $string_attributes = ' style="' . $this->language_data['STYLES']['STRINGS'][$string_key] . '"'; + } else { + $string_attributes = ' class="st'.$string_key.'"'; + } + + // now handle the string + $string = "" . GeSHi::hsc($char); + $start = $i + $char_len; + $string_open = true; + + if(empty($this->language_data['ESCAPE_REGEXP'])) { + $next_escape_regexp_pos = $length; + } + + do { + //Get the regular ending pos ... + $close_pos = strpos($part, $char, $start); + if(false === $close_pos) { + $close_pos = $length; + } + + if($this->lexic_permissions['ESCAPE_CHAR']) { + // update escape regexp cache if needed + if (isset($this->language_data['ESCAPE_REGEXP']) && $next_escape_regexp_pos < $start) { + $next_escape_regexp_pos = $length; + foreach ($this->language_data['ESCAPE_REGEXP'] as $escape_key => $regexp) { + $match_i = false; + if (isset($escape_regexp_cache_per_key[$escape_key]) && + ($escape_regexp_cache_per_key[$escape_key]['pos'] >= $start || + $escape_regexp_cache_per_key[$escape_key]['pos'] === false)) { + // we have already matched something + if ($escape_regexp_cache_per_key[$escape_key]['pos'] === false) { + // this comment is never matched + continue; + } + $match_i = $escape_regexp_cache_per_key[$escape_key]['pos']; + } elseif (preg_match($regexp, $part, $match, PREG_OFFSET_CAPTURE, $start)) { + $match_i = $match[0][1]; + + $escape_regexp_cache_per_key[$escape_key] = array( + 'key' => $escape_key, + 'length' => strlen($match[0][0]), + 'pos' => $match_i + ); + } else { + $escape_regexp_cache_per_key[$escape_key]['pos'] = false; + continue; + } + + if ($match_i !== false && $match_i < $next_escape_regexp_pos) { + $next_escape_regexp_pos = $match_i; + $next_escape_regexp_key = $escape_key; + if ($match_i === $start) { + break; + } + } + } + } + + //Find the next simple escape position + if('' != $this->language_data['ESCAPE_CHAR']) { + $simple_escape = strpos($part, $this->language_data['ESCAPE_CHAR'], $start); + if(false === $simple_escape) { + $simple_escape = $length; + } + } else { + $simple_escape = $length; + } + } else { + $next_escape_regexp_pos = $length; + $simple_escape = $length; + } + + if($simple_escape < $next_escape_regexp_pos && + $simple_escape < $length && + $simple_escape < $close_pos) { + //The nexxt escape sequence is a simple one ... + $es_pos = $simple_escape; + + //Add the stuff not in the string yet ... + $string .= $this->hsc(substr($part, $start, $es_pos - $start)); + + //Get the style for this escaped char ... + if (!$this->use_classes) { + $escape_char_attributes = ' style="' . $this->language_data['STYLES']['ESCAPE_CHAR'][0] . '"'; + } else { + $escape_char_attributes = ' class="es0"'; + } + + //Add the style for the escape char ... + $string .= "" . + GeSHi::hsc($this->language_data['ESCAPE_CHAR']); + + //Get the byte AFTER the ESCAPE_CHAR we just found + $es_char = $part[$es_pos + 1]; + if ($es_char == "\n") { + // don't put a newline around newlines + $string .= "\n"; + $start = $es_pos + 2; + } elseif (ord($es_char) >= 128) { + //This is an non-ASCII char (UTF8 or single byte) + //This code tries to work around SF#2037598 ... + if(function_exists('mb_substr')) { + $es_char_m = mb_substr(substr($part, $es_pos+1, 16), 0, 1, $this->encoding); + $string .= $es_char_m . ''; + } elseif ('utf-8' == $this->encoding) { + if(preg_match("/[\xC2-\xDF][\x80-\xBF]". + "|\xE0[\xA0-\xBF][\x80-\xBF]". + "|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}". + "|\xED[\x80-\x9F][\x80-\xBF]". + "|\xF0[\x90-\xBF][\x80-\xBF]{2}". + "|[\xF1-\xF3][\x80-\xBF]{3}". + "|\xF4[\x80-\x8F][\x80-\xBF]{2}/s", + $part, $es_char_m, null, $es_pos + 1)) { + $es_char_m = $es_char_m[0]; + } else { + $es_char_m = $es_char; + } + $string .= $this->hsc($es_char_m) . ''; + } else { + $es_char_m = $this->hsc($es_char); + } + $start = $es_pos + strlen($es_char_m) + 1; + } else { + $string .= $this->hsc($es_char) . ''; + $start = $es_pos + 2; + } + } elseif ($next_escape_regexp_pos < $length && + $next_escape_regexp_pos < $close_pos) { + $es_pos = $next_escape_regexp_pos; + //Add the stuff not in the string yet ... + $string .= $this->hsc(substr($part, $start, $es_pos - $start)); + + //Get the key and length of this match ... + $escape = $escape_regexp_cache_per_key[$next_escape_regexp_key]; + $escape_str = substr($part, $es_pos, $escape['length']); + $escape_key = $escape['key']; + + //Get the style for this escaped char ... + if (!$this->use_classes) { + $escape_char_attributes = ' style="' . $this->language_data['STYLES']['ESCAPE_CHAR'][$escape_key] . '"'; + } else { + $escape_char_attributes = ' class="es' . $escape_key . '"'; + } + + //Add the style for the escape char ... + $string .= "" . + $this->hsc($escape_str) . ''; + + $start = $es_pos + $escape['length']; + } else { + //Copy the remainder of the string ... + $string .= $this->hsc(substr($part, $start, $close_pos - $start + $char_len)) . ''; + $start = $close_pos + $char_len; + $string_open = false; + } + } while($string_open); + + if ($check_linenumbers) { + // Are line numbers used? If, we should end the string before + // the newline and begin it again (so when

    Gh6S@s= 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 literal 0 HcmV?d00001 diff --git a/includes/functions.php b/includes/functions.php new file mode 100644 index 0000000..cd769f3 --- /dev/null +++ b/includes/functions.php @@ -0,0 +1,369 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ + +function str_contains($haystack, $needle, $ignoreCase = false) +{ + if ($ignoreCase) { + $haystack = strtolower($haystack); + $needle = strtolower($needle); + } + $needlePos = strpos($haystack, $needle); + return ($needlePos === false ? false : ($needlePos + 1)); +} + +function encrypt($value) +{ + $iv_size = @mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); + $iv = @mcrypt_create_iv($iv_size, MCRYPT_RAND); + $val = @mcrypt_encrypt(MCRYPT_RIJNDAEL_256, SECRET, $value, MCRYPT_MODE_ECB, $iv); + return base64_encode($val); +} + +function decrypt($value) +{ + $value = base64_decode($value); + $iv_size = @mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); + $iv = @mcrypt_create_iv($iv_size, MCRYPT_RAND); + return @mcrypt_decrypt(MCRYPT_RIJNDAEL_256, SECRET, $value, MCRYPT_MODE_ECB, $iv); +} + +function deleteMyPaste($con, $paste_id) +{ + $query = "DELETE FROM pastes where id='$paste_id'"; + $result = mysqli_query($con, $query); +} + +function getRecent($con, $count = 5) +{ + $limit = $count ? "limit $count" : ""; + $query = "SELECT * +FROM pastes where visible='0' +ORDER BY id DESC +LIMIT 0 , $count"; + $result = mysqli_query($con, $query); + return $result; +} + +function getUserRecent($con, $count = 5, $username) +{ + $limit = $count ? "limit $count" : ""; + $query = "SELECT * +FROM pastes where member='$username' +ORDER BY id DESC +LIMIT 0 , $count"; + $result = mysqli_query($con, $query); + return $result; +} + +function getUserPastes($con, $username) +{ + $query = "SELECT * FROM pastes where member='$username' ORDER by id DESC"; + $result = mysqli_query($con, $query); + return $result; +} + +function getTotalPastes($con, $username) +{ + $query = "SELECT * FROM pastes WHERE member='$username'"; + $result = mysqli_query($con, $query); + $count = 0; + while ($row = mysqli_fetch_array($result)) { + $count = $count + 1; + } + return $count; +} + +function isValidUsername($str) { + return !preg_match('/[^A-Za-z0-9.#\\-$]/', $str); +} + +function existingUser( $con, $username ) { + $query = "SELECT * FROM users WHERE username = '$username'"; + $result = mysqli_query( $con, $query ); + $num_rows = mysqli_num_rows( $result ); + if ( $num_rows == 0 ) { + // No records. User doesn't exist. + return false; + } else { + return true; + } +} + +function updateMyView($con, $paste_id) +{ + $query = "SELECT * FROM pastes WHERE id=" . Trim($paste_id); + $result = mysqli_query($con, $query); + + while ($row = mysqli_fetch_array($result)) { + $p_view = Trim($row['views']); + } + $p_view = $p_view + 1; + $query = "UPDATE pastes SET views='$p_view' where id='$paste_id'"; + $result = mysqli_query($con, $query); +} + +function conTime($secs) { + $bit = array( + ' year' => $secs / 31556926 % 12, + ' week' => $secs / 604800 % 52, + ' day' => $secs / 86400 % 7, + ' hour' => $secs / 3600 % 24, + ' min' => $secs / 60 % 60, + ' sec' => $secs % 60 + ); + + foreach ($bit as $k => $v) { + if ($v > 1) + $ret[] = $v . $k . 's'; + if ($v == 1) + $ret[] = $v . $k; + } + array_splice($ret, count($ret) - 1, 0, 'and'); + $ret[] = 'ago'; + + $val = join(' ', $ret); + if (str_contains($val, "week")) { + } else { + $val = str_replace("and", "", $val); + } + if (Trim($val) == "ago") { + $val = "1 sec ago"; + } + return $val; +} + +function truncate($input, $maxWords, $maxChars) +{ + $words = preg_split('/\s+/', $input); + $words = array_slice($words, 0, $maxWords); + $words = array_reverse($words); + + $chars = 0; + $truncated = array(); + + while (count($words) > 0) { + $fragment = trim(array_pop($words)); + $chars += strlen($fragment); + + if ($chars > $maxChars) + break; + + $truncated[] = $fragment; + } + + $result = implode($truncated, ' '); + + return $result . ($input == $result ? '' : '[...]'); +} + +function doDownload($paste_id, $p_title, $p_content, $p_code) +{ + $stats = false; + if ($p_code) { + // Figure out extensions. + $ext = "txt"; + switch ($p_code) { + case 'bash': + $ext = 'sh'; + break; + case 'actionscript': + $ext = 'html'; + break; + case 'html4strict': + $ext = 'html'; + break; + case 'javascript': + $ext = 'js'; + break; + case 'perl': + $ext = 'pl'; + break; + case 'csharp': + $ext = 'cs'; + break; + case 'ruby': + $ext = 'rb'; + break; + case 'python': + $ext = 'py'; + break; + case 'sql': + $ext = 'sql'; + break; + case 'php': + $ext = 'php'; + break; + case 'c': + $ext = 'c'; + break; + case 'cpp': + $ext = 'cpp'; + break; + case 'css': + $ext = 'css'; + break; + case 'xml': + $ext = 'xml'; + break; + default: + $ext = 'txt'; + break; + } + + // Download + header('Content-type: text/plain'); + header('Content-Disposition: attachment; filename="' . $p_title . '.' . $ext . '"'); + echo $p_content; + $stats = true; + } else { + // 404 + header('HTTP/1.1 404 Not Found'); + } + return $stats; +} + +function rawView($paste_id, $p_title, $p_content, $p_code) +{ + $stats = false; + if ($p_code) { + // Raw + header('Content-type: text/plain'); + echo $p_content; + $stats = true; + } else { + // 404 + header('HTTP/1.1 404 Not Found'); + } + return $stats; +} + +function embedView( $paste_id, $p_title, $p_content, $p_code, $title, $baseurl, $ges_style, $lang ) { + $stats = false; + if ( $p_content ) { + // Build the output + $output = "

  • s are put in the source + // remains XHTML compliant) + // note to self: This opens up possibility of config files specifying + // that languages can/cannot have multiline strings??? + $string = str_replace("\n", "\n", $string); + } + + $result .= $string; + $string = ''; + $i = $start - 1; + continue; + } elseif ($this->lexic_permissions['STRINGS'] && $hq && $hq[0] == $char && + substr($part, $i, $hq_strlen) == $hq && ($i != $next_comment_regexp_pos)) { + // The start of a hard quoted string + if (!$this->use_classes) { + $string_attributes = ' style="' . $this->language_data['STYLES']['STRINGS']['HARD'] . '"'; + $escape_char_attributes = ' style="' . $this->language_data['STYLES']['ESCAPE_CHAR']['HARD'] . '"'; + } else { + $string_attributes = ' class="st_h"'; + $escape_char_attributes = ' class="es_h"'; + } + // parse the stuff before this + $result .= $this->parse_non_string_part($stuff_to_parse); + $stuff_to_parse = ''; + + // now handle the string + $string = ''; + + // look for closing quote + $start = $i + $hq_strlen; + while ($close_pos = strpos($part, $this->language_data['HARDQUOTE'][1], $start)) { + $start = $close_pos + 1; + if ($this->lexic_permissions['ESCAPE_CHAR'] && $part[$close_pos - 1] == $this->language_data['HARDCHAR'] && + (($i + $hq_strlen) != ($close_pos))) { //Support empty string for HQ escapes if Starter = Escape + // make sure this quote is not escaped + foreach ($this->language_data['HARDESCAPE'] as $hardescape) { + if (substr($part, $close_pos - 1, strlen($hardescape)) == $hardescape) { + // check wether this quote is escaped or if it is something like '\\' + $escape_char_pos = $close_pos - 1; + while ($escape_char_pos > 0 + && $part[$escape_char_pos - 1] == $this->language_data['HARDCHAR']) { + --$escape_char_pos; + } + if (($close_pos - $escape_char_pos) & 1) { + // uneven number of escape chars => this quote is escaped + continue 2; + } + } + } + } + + // found closing quote + break; + } + + //Found the closing delimiter? + if (!$close_pos) { + // span till the end of this $part when no closing delimiter is found + $close_pos = $length; + } + + //Get the actual string + $string = substr($part, $i, $close_pos - $i + 1); + $i = $close_pos; + + // handle escape chars and encode html chars + // (special because when we have escape chars within our string they may not be escaped) + if ($this->lexic_permissions['ESCAPE_CHAR'] && $this->language_data['ESCAPE_CHAR']) { + $start = 0; + $new_string = ''; + while ($es_pos = strpos($string, $this->language_data['ESCAPE_CHAR'], $start)) { + // hmtl escape stuff before + $new_string .= $this->hsc(substr($string, $start, $es_pos - $start)); + // check if this is a hard escape + foreach ($this->language_data['HARDESCAPE'] as $hardescape) { + if (substr($string, $es_pos, strlen($hardescape)) == $hardescape) { + // indeed, this is a hardescape + $new_string .= "" . + $this->hsc($hardescape) . ''; + $start = $es_pos + strlen($hardescape); + continue 2; + } + } + // not a hard escape, but a normal escape + // they come in pairs of two + $c = 0; + while (isset($string[$es_pos + $c]) && isset($string[$es_pos + $c + 1]) + && $string[$es_pos + $c] == $this->language_data['ESCAPE_CHAR'] + && $string[$es_pos + $c + 1] == $this->language_data['ESCAPE_CHAR']) { + $c += 2; + } + if ($c) { + $new_string .= "" . + str_repeat($escaped_escape_char, $c) . + ''; + $start = $es_pos + $c; + } else { + // this is just a single lonely escape char... + $new_string .= $escaped_escape_char; + $start = $es_pos + 1; + } + } + $string = $new_string . $this->hsc(substr($string, $start)); + } else { + $string = $this->hsc($string); + } + + if ($check_linenumbers) { + // Are line numbers used? If, we should end the string before + // the newline and begin it again (so when
  • s are put in the source + // remains XHTML compliant) + // note to self: This opens up possibility of config files specifying + // that languages can/cannot have multiline strings??? + $string = str_replace("\n", "\n", $string); + } + + $result .= "" . $string . ''; + $string = ''; + continue; + } else { + //Have a look for regexp comments + if ($i == $next_comment_regexp_pos) { + $COMMENT_MATCHED = true; + $comment = $comment_regexp_cache_per_key[$next_comment_regexp_key]; + $test_str = $this->hsc(substr($part, $i, $comment['length'])); + + //@todo If remove important do remove here + if ($this->lexic_permissions['COMMENTS']['MULTI']) { + if (!$this->use_classes) { + $attributes = ' style="' . $this->language_data['STYLES']['COMMENTS'][$comment['key']] . '"'; + } else { + $attributes = ' class="co' . $comment['key'] . '"'; + } + + $test_str = "" . $test_str . ""; + + // Short-cut through all the multiline code + if ($check_linenumbers) { + // strreplace to put close span and open span around multiline newlines + $test_str = str_replace( + "\n", "\n", + str_replace("\n ", "\n ", $test_str) + ); + } + } + + $i += $comment['length'] - 1; + + // parse the rest + $result .= $this->parse_non_string_part($stuff_to_parse); + $stuff_to_parse = ''; + } + + // If we haven't matched a regexp comment, try multi-line comments + if (!$COMMENT_MATCHED) { + // Is this a multiline comment? + if (!empty($this->language_data['COMMENT_MULTI']) && $next_comment_multi_pos < $i) { + $next_comment_multi_pos = $length; + foreach ($this->language_data['COMMENT_MULTI'] as $open => $close) { + $match_i = false; + if (isset($comment_multi_cache_per_key[$open]) && + ($comment_multi_cache_per_key[$open] >= $i || + $comment_multi_cache_per_key[$open] === false)) { + // we have already matched something + if ($comment_multi_cache_per_key[$open] === false) { + // this comment is never matched + continue; + } + $match_i = $comment_multi_cache_per_key[$open]; + } elseif (($match_i = stripos($part, $open, $i)) !== false) { + $comment_multi_cache_per_key[$open] = $match_i; + } else { + $comment_multi_cache_per_key[$open] = false; + continue; + } + if ($match_i !== false && $match_i < $next_comment_multi_pos) { + $next_comment_multi_pos = $match_i; + $next_open_comment_multi = $open; + if ($match_i === $i) { + break; + } + } + } + } + if ($i == $next_comment_multi_pos) { + $open = $next_open_comment_multi; + $close = $this->language_data['COMMENT_MULTI'][$open]; + $open_strlen = strlen($open); + $close_strlen = strlen($close); + $COMMENT_MATCHED = true; + $test_str_match = $open; + //@todo If remove important do remove here + if ($this->lexic_permissions['COMMENTS']['MULTI'] || + $open == GESHI_START_IMPORTANT) { + if ($open != GESHI_START_IMPORTANT) { + if (!$this->use_classes) { + $attributes = ' style="' . $this->language_data['STYLES']['COMMENTS']['MULTI'] . '"'; + } else { + $attributes = ' class="coMULTI"'; + } + $test_str = "" . $this->hsc($open); + } else { + if (!$this->use_classes) { + $attributes = ' style="' . $this->important_styles . '"'; + } else { + $attributes = ' class="imp"'; + } + + // We don't include the start of the comment if it's an + // "important" part + $test_str = ""; + } + } else { + $test_str = $this->hsc($open); + } + + $close_pos = strpos( $part, $close, $i + $open_strlen ); + + if ($close_pos === false) { + $close_pos = $length; + } + + // Short-cut through all the multiline code + $rest_of_comment = $this->hsc(substr($part, $i + $open_strlen, $close_pos - $i - $open_strlen + $close_strlen)); + if (($this->lexic_permissions['COMMENTS']['MULTI'] || + $test_str_match == GESHI_START_IMPORTANT) && + $check_linenumbers) { + + // strreplace to put close span and open span around multiline newlines + $test_str .= str_replace( + "\n", "\n", + str_replace("\n ", "\n ", $rest_of_comment) + ); + } else { + $test_str .= $rest_of_comment; + } + + if ($this->lexic_permissions['COMMENTS']['MULTI'] || + $test_str_match == GESHI_START_IMPORTANT) { + $test_str .= ''; + } + + $i = $close_pos + $close_strlen - 1; + + // parse the rest + $result .= $this->parse_non_string_part($stuff_to_parse); + $stuff_to_parse = ''; + } + } + + // If we haven't matched a multiline comment, try single-line comments + if (!$COMMENT_MATCHED) { + // cache potential single line comment occurances + if (!empty($this->language_data['COMMENT_SINGLE']) && $next_comment_single_pos < $i) { + $next_comment_single_pos = $length; + foreach ($this->language_data['COMMENT_SINGLE'] as $comment_key => $comment_mark) { + $match_i = false; + if (isset($comment_single_cache_per_key[$comment_key]) && + ($comment_single_cache_per_key[$comment_key] >= $i || + $comment_single_cache_per_key[$comment_key] === false)) { + // we have already matched something + if ($comment_single_cache_per_key[$comment_key] === false) { + // this comment is never matched + continue; + } + $match_i = $comment_single_cache_per_key[$comment_key]; + } elseif ( + // case sensitive comments + ($this->language_data['CASE_SENSITIVE'][GESHI_COMMENTS] && + ($match_i = stripos($part, $comment_mark, $i)) !== false) || + // non case sensitive + (!$this->language_data['CASE_SENSITIVE'][GESHI_COMMENTS] && + (($match_i = strpos($part, $comment_mark, $i)) !== false))) { + $comment_single_cache_per_key[$comment_key] = $match_i; + } else { + $comment_single_cache_per_key[$comment_key] = false; + continue; + } + if ($match_i !== false && $match_i < $next_comment_single_pos) { + $next_comment_single_pos = $match_i; + $next_comment_single_key = $comment_key; + if ($match_i === $i) { + break; + } + } + } + } + if ($next_comment_single_pos == $i) { + $comment_key = $next_comment_single_key; + $comment_mark = $this->language_data['COMMENT_SINGLE'][$comment_key]; + $com_len = strlen($comment_mark); + + // This check will find special variables like $# in bash + // or compiler directives of Delphi beginning {$ + if ((empty($sc_disallowed_before) || ($i == 0) || + (false === strpos($sc_disallowed_before, $part[$i-1]))) && + (empty($sc_disallowed_after) || ($length <= $i + $com_len) || + (false === strpos($sc_disallowed_after, $part[$i + $com_len])))) + { + // this is a valid comment + $COMMENT_MATCHED = true; + if ($this->lexic_permissions['COMMENTS'][$comment_key]) { + if (!$this->use_classes) { + $attributes = ' style="' . $this->language_data['STYLES']['COMMENTS'][$comment_key] . '"'; + } else { + $attributes = ' class="co' . $comment_key . '"'; + } + $test_str = "" . $this->hsc($this->change_case($comment_mark)); + } else { + $test_str = $this->hsc($comment_mark); + } + + //Check if this comment is the last in the source + $close_pos = strpos($part, "\n", $i); + $oops = false; + if ($close_pos === false) { + $close_pos = $length; + $oops = true; + } + $test_str .= $this->hsc(substr($part, $i + $com_len, $close_pos - $i - $com_len)); + if ($this->lexic_permissions['COMMENTS'][$comment_key]) { + $test_str .= ""; + } + + // Take into account that the comment might be the last in the source + if (!$oops) { + $test_str .= "\n"; + } + + $i = $close_pos; + + // parse the rest + $result .= $this->parse_non_string_part($stuff_to_parse); + $stuff_to_parse = ''; + } + } + } + } + + // Where are we adding this char? + if (!$COMMENT_MATCHED) { + $stuff_to_parse .= $char; + } else { + $result .= $test_str; + unset($test_str); + $COMMENT_MATCHED = false; + } + } + // Parse the last bit + $result .= $this->parse_non_string_part($stuff_to_parse); + $stuff_to_parse = ''; + } else { + $result .= $this->hsc($part); + } + // Close the that surrounds the block + if ($STRICTATTRS != '') { + $result = str_replace("\n", "\n", $result); + $result .= ''; + } + + $endresult .= $result; + unset($part, $parts[$key], $result); + } + + //This fix is related to SF#1923020, but has to be applied regardless of + //actually highlighting symbols. + /** NOTE: memorypeak #3 */ + $endresult = str_replace(array('', ''), array(';', '|'), $endresult); + +// // Parse the last stuff (redundant?) +// $result .= $this->parse_non_string_part($stuff_to_parse); + + // Lop off the very first and last spaces +// $result = substr($result, 1, -1); + + // We're finished: stop timing + $this->set_time($start_time, microtime()); + + $this->finalise($endresult); + return $endresult; + } + + /** + * Swaps out spaces and tabs for HTML indentation. Not needed if + * the code is in a pre block... + * + * @param string $result The source to indent (reference!) + * @since 1.0.0 + */ + protected function indent(&$result) { + /// Replace tabs with the correct number of spaces + if (false !== strpos($result, "\t")) { + $lines = explode("\n", $result); + $result = null;//Save memory while we process the lines individually + $tab_width = $this->get_real_tab_width(); + $tab_string = ' ' . str_repeat(' ', $tab_width); + + for ($key = 0, $n = count($lines); $key < $n; $key++) { + $line = $lines[$key]; + if (false === strpos($line, "\t")) { + continue; + } + + $pos = 0; + $length = strlen($line); + $lines[$key] = ''; // reduce memory + + $IN_TAG = false; + for ($i = 0; $i < $length; ++$i) { + $char = $line[$i]; + // Simple engine to work out whether we're in a tag. + // If we are we modify $pos. This is so we ignore HTML + // in the line and only workout the tab replacement + // via the actual content of the string + // This test could be improved to include strings in the + // html so that < or > would be allowed in user's styles + // (e.g. quotes: '<' '>'; or similar) + if ($IN_TAG) { + if ('>' == $char) { + $IN_TAG = false; + } + $lines[$key] .= $char; + } elseif ('<' == $char) { + $IN_TAG = true; + $lines[$key] .= '<'; + } elseif ('&' == $char) { + $substr = substr($line, $i + 3, 5); + $posi = strpos($substr, ';'); + if (false === $posi) { + ++$pos; + } else { + $pos -= $posi+2; + } + $lines[$key] .= $char; + } elseif ("\t" == $char) { + $str = ''; + // OPTIMISE - move $strs out. Make an array: + // $tabs = array( + // 1 => ' ', + // 2 => '  ', + // 3 => '   ' etc etc + // to use instead of building a string every time + $tab_end_width = $tab_width - ($pos % $tab_width); //Moved out of the look as it doesn't change within the loop + if (($pos & 1) || 1 == $tab_end_width) { + $str .= substr($tab_string, 6, $tab_end_width); + } else { + $str .= substr($tab_string, 0, $tab_end_width+5); + } + $lines[$key] .= $str; + $pos += $tab_end_width; + + if (false === strpos($line, "\t", $i + 1)) { + $lines[$key] .= substr($line, $i + 1); + break; + } + } elseif (0 == $pos && ' ' == $char) { + $lines[$key] .= ' '; + ++$pos; + } else { + $lines[$key] .= $char; + ++$pos; + } + } + } + $result = implode("\n", $lines); + unset($lines);//We don't need the lines separated beyond this --- free them! + } + // Other whitespace + // BenBE: Fix to reduce the number of replacements to be done + $result = preg_replace('/^ /m', ' ', $result); + $result = str_replace(' ', '  ', $result); + + if ($this->line_numbers == GESHI_NO_LINE_NUMBERS && $this->header_type != GESHI_HEADER_PRE_TABLE) { + if ($this->line_ending === null) { + $result = nl2br($result); + } else { + $result = str_replace("\n", $this->line_ending, $result); + } + } + } + + /** + * Changes the case of a keyword for those languages where a change is asked for + * + * @param string $instr The keyword to change the case of + * @return string The keyword with its case changed + * @since 1.0.0 + */ + protected function change_case($instr) { + switch ($this->language_data['CASE_KEYWORDS']) { + case GESHI_CAPS_UPPER: + return strtoupper($instr); + case GESHI_CAPS_LOWER: + return strtolower($instr); + default: + return $instr; + } + } + + /** + * Handles replacements of keywords to include markup and links if requested + * + * @param string $match The keyword to add the Markup to + * @return string The HTML for the match found + * @since 1.0.8 + * + * @todo Get rid of ender in keyword links + */ + protected function handle_keyword_replace($match) { + $k = $this->_kw_replace_group; + $keyword = $match[0]; + $keyword_match = $match[1]; + + $before = ''; + $after = ''; + + if ($this->keyword_links) { + // Keyword links have been ebabled + + if (isset($this->language_data['URLS'][$k]) && + $this->language_data['URLS'][$k] != '') { + // There is a base group for this keyword + + // Old system: strtolower + //$keyword = ( $this->language_data['CASE_SENSITIVE'][$group] ) ? $keyword : strtolower($keyword); + // New system: get keyword from language file to get correct case + if (!$this->language_data['CASE_SENSITIVE'][$k] && + strpos($this->language_data['URLS'][$k], '{FNAME}') !== false) { + foreach ($this->language_data['KEYWORDS'][$k] as $word) { + if (strcasecmp($word, $keyword_match) == 0) { + break; + } + } + } else { + $word = $keyword_match; + } + + $before = '<|UR1|"' . + str_replace( + array( + '{FNAME}', + '{FNAMEL}', + '{FNAMEU}', + '{FNAMEUF}', + '.'), + array( + str_replace('+', '%20', urlencode($this->hsc($word))), + str_replace('+', '%20', urlencode($this->hsc(strtolower($word)))), + str_replace('+', '%20', urlencode($this->hsc(strtoupper($word)))), + str_replace('+', '%20', urlencode($this->hsc(ucfirst($word)))), + ''), + $this->language_data['URLS'][$k] + ) . '">'; + $after = ''; + } + } + + return $before . '<|/'. $k .'/>' . $this->change_case($keyword) . '|>' . $after; + } + + /** + * handles regular expressions highlighting-definitions with callback functions + * + * @note this is a callback, don't use it directly + * + * @param array $matches the matches array + * @return string The highlighted string + * @since 1.0.8 + */ + protected function handle_regexps_callback($matches) { + // before: "' style=\"' . call_user_func(\"$func\", '\\1') . '\"\\1|>'", + return ' style="' . call_user_func($this->language_data['STYLES']['REGEXPS'][$this->_rx_key], $matches[1]) . '"'. $matches[1] . '|>'; + } + + /** + * handles newlines in REGEXPS matches. Set the _hmr_* vars before calling this + * + * @note this is a callback, don't use it directly + * + * @param array $matches the matches array + * @return string + * @since 1.0.8 + */ + protected function handle_multiline_regexps($matches) { + $before = $this->_hmr_before; + $after = $this->_hmr_after; + if ($this->_hmr_replace) { + $replace = $this->_hmr_replace; + $search = array(); + + foreach (array_keys($matches) as $k) { + $search[] = '\\' . $k; + } + + $before = str_replace($search, $matches, $before); + $after = str_replace($search, $matches, $after); + $replace = str_replace($search, $matches, $replace); + } else { + $replace = $matches[0]; + } + return $before + . '<|!REG3XP' . $this->_hmr_key .'!>' + . str_replace("\n", "|>\n<|!REG3XP" . $this->_hmr_key . '!>', $replace) + . '|>' + . $after; + } + + /** + * Takes a string that has no strings or comments in it, and highlights + * stuff like keywords, numbers and methods. + * + * @param string $stuff_to_parse The string to parse for keyword, numbers etc. + * @since 1.0.0 + * @todo BUGGY! Why? Why not build string and return? + * @return string + */ + protected function parse_non_string_part($stuff_to_parse) { + $stuff_to_parse = ' ' . $this->hsc($stuff_to_parse); + + // Highlight keywords + $disallowed_before = "(?lexic_permissions['STRINGS']) { + $quotemarks = preg_quote(implode($this->language_data['QUOTEMARKS']), '/'); + $disallowed_before .= $quotemarks; + $disallowed_after .= $quotemarks; + } + $disallowed_before .= "])"; + $disallowed_after .= "])"; + + $parser_control_pergroup = false; + if (isset($this->language_data['PARSER_CONTROL'])) { + if (isset($this->language_data['PARSER_CONTROL']['KEYWORDS'])) { + $x = 0; // check wether per-keyword-group parser_control is enabled + if (isset($this->language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_BEFORE'])) { + $disallowed_before = $this->language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_BEFORE']; + ++$x; + } + if (isset($this->language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_AFTER'])) { + $disallowed_after = $this->language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_AFTER']; + ++$x; + } + $parser_control_pergroup = (count($this->language_data['PARSER_CONTROL']['KEYWORDS']) - $x) > 0; + } + } + + foreach (array_keys($this->language_data['KEYWORDS']) as $k) { + if (!isset($this->lexic_permissions['KEYWORDS'][$k]) || + $this->lexic_permissions['KEYWORDS'][$k]) { + + $case_sensitive = $this->language_data['CASE_SENSITIVE'][$k]; + $modifiers = $case_sensitive ? '' : 'i'; + + // NEW in 1.0.8 - per-keyword-group parser control + $disallowed_before_local = $disallowed_before; + $disallowed_after_local = $disallowed_after; + if ($parser_control_pergroup && isset($this->language_data['PARSER_CONTROL']['KEYWORDS'][$k])) { + if (isset($this->language_data['PARSER_CONTROL']['KEYWORDS'][$k]['DISALLOWED_BEFORE'])) { + $disallowed_before_local = + $this->language_data['PARSER_CONTROL']['KEYWORDS'][$k]['DISALLOWED_BEFORE']; + } + + if (isset($this->language_data['PARSER_CONTROL']['KEYWORDS'][$k]['DISALLOWED_AFTER'])) { + $disallowed_after_local = + $this->language_data['PARSER_CONTROL']['KEYWORDS'][$k]['DISALLOWED_AFTER']; + } + } + + $this->_kw_replace_group = $k; + + //NEW in 1.0.8, the cached regexp list + // since we don't want PHP / PCRE to crash due to too large patterns we split them into smaller chunks + for ($set = 0, $set_length = count($this->language_data['CACHED_KEYWORD_LISTS'][$k]); $set < $set_length; ++$set) { + $keywordset =& $this->language_data['CACHED_KEYWORD_LISTS'][$k][$set]; + // Might make a more unique string for putting the number in soon + // Basically, we don't put the styles in yet because then the styles themselves will + // get highlighted if the language has a CSS keyword in it (like CSS, for example ;)) + $stuff_to_parse = preg_replace_callback( + "/$disallowed_before_local({$keywordset})(?!\(?:htm|php|aspx?))$disallowed_after_local/$modifiers", + array($this, 'handle_keyword_replace'), + $stuff_to_parse + ); + } + } + } + + // Regular expressions + foreach ($this->language_data['REGEXPS'] as $key => $regexp) { + if ($this->lexic_permissions['REGEXPS'][$key]) { + if (is_array($regexp)) { + if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) { + // produce valid HTML when we match multiple lines + $this->_hmr_replace = $regexp[GESHI_REPLACE]; + $this->_hmr_before = $regexp[GESHI_BEFORE]; + $this->_hmr_key = $key; + $this->_hmr_after = $regexp[GESHI_AFTER]; + $stuff_to_parse = preg_replace_callback( + "/" . $regexp[GESHI_SEARCH] . "/{$regexp[GESHI_MODIFIERS]}", + array($this, 'handle_multiline_regexps'), + $stuff_to_parse); + $this->_hmr_replace = false; + $this->_hmr_before = ''; + $this->_hmr_after = ''; + } else { + $stuff_to_parse = preg_replace( + '/' . $regexp[GESHI_SEARCH] . '/' . $regexp[GESHI_MODIFIERS], + $regexp[GESHI_BEFORE] . '<|!REG3XP'. $key .'!>' . $regexp[GESHI_REPLACE] . '|>' . $regexp[GESHI_AFTER], + $stuff_to_parse); + } + } else { + if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) { + // produce valid HTML when we match multiple lines + $this->_hmr_key = $key; + $stuff_to_parse = preg_replace_callback( "/(" . $regexp . ")/", + array($this, 'handle_multiline_regexps'), $stuff_to_parse); + $this->_hmr_key = ''; + } else { + $stuff_to_parse = preg_replace( "/(" . $regexp . ")/", "<|!REG3XP$key!>\\1|>", $stuff_to_parse); + } + } + } + } + + // Highlight numbers. As of 1.0.8 we support different types of numbers + $numbers_found = false; + + if ($this->lexic_permissions['NUMBERS'] && preg_match($this->language_data['PARSER_CONTROL']['NUMBERS']['PRECHECK_RX'], $stuff_to_parse )) { + $numbers_found = true; + + //For each of the formats ... + foreach($this->language_data['NUMBERS_RXCACHE'] as $id => $regexp) { + //Check if it should be highlighted ... + $stuff_to_parse = preg_replace($regexp, "<|/NUM!$id/>\\1|>", $stuff_to_parse); + } + } + + // + // Now that's all done, replace /[number]/ with the correct styles + // + foreach (array_keys($this->language_data['KEYWORDS']) as $k) { + if (!$this->use_classes) { + $attributes = ' style="' . + (isset($this->language_data['STYLES']['KEYWORDS'][$k]) ? + $this->language_data['STYLES']['KEYWORDS'][$k] : "") . '"'; + } else { + $attributes = ' class="kw' . $k . '"'; + } + $stuff_to_parse = str_replace("<|/$k/>", "<|$attributes>", $stuff_to_parse); + } + + if ($numbers_found) { + // Put number styles in + foreach($this->language_data['NUMBERS_RXCACHE'] as $id => $regexp) { + //Commented out for now, as this needs some review ... + // if ($numbers_permissions & $id) { + //Get the appropriate style ... + //Checking for unset styles is done by the style cache builder ... + if (!$this->use_classes) { + $attributes = ' style="' . $this->language_data['STYLES']['NUMBERS'][$id] . '"'; + } else { + $attributes = ' class="nu'.$id.'"'; + } + + //Set in the correct styles ... + $stuff_to_parse = str_replace("/NUM!$id/", $attributes, $stuff_to_parse); + // } + } + } + + // Highlight methods and fields in objects + if ($this->lexic_permissions['METHODS'] && $this->language_data['OOLANG']) { + $oolang_spaces = "[\s]*"; + $oolang_before = ""; + $oolang_after = "[a-zA-Z][a-zA-Z0-9_]*"; + if (isset($this->language_data['PARSER_CONTROL'])) { + if (isset($this->language_data['PARSER_CONTROL']['OOLANG'])) { + if (isset($this->language_data['PARSER_CONTROL']['OOLANG']['MATCH_BEFORE'])) { + $oolang_before = $this->language_data['PARSER_CONTROL']['OOLANG']['MATCH_BEFORE']; + } + if (isset($this->language_data['PARSER_CONTROL']['OOLANG']['MATCH_AFTER'])) { + $oolang_after = $this->language_data['PARSER_CONTROL']['OOLANG']['MATCH_AFTER']; + } + if (isset($this->language_data['PARSER_CONTROL']['OOLANG']['MATCH_SPACES'])) { + $oolang_spaces = $this->language_data['PARSER_CONTROL']['OOLANG']['MATCH_SPACES']; + } + } + } + + foreach ($this->language_data['OBJECT_SPLITTERS'] as $key => $splitter) { + if (false !== strpos($stuff_to_parse, $splitter)) { + if (!$this->use_classes) { + $attributes = ' style="' . $this->language_data['STYLES']['METHODS'][$key] . '"'; + } else { + $attributes = ' class="me' . $key . '"'; + } + $stuff_to_parse = preg_replace("/($oolang_before)(" . preg_quote($this->language_data['OBJECT_SPLITTERS'][$key], '/') . ")($oolang_spaces)($oolang_after)/", "\\1\\2\\3<|$attributes>\\4|>", $stuff_to_parse); + } + } + } + + // + // Highlight brackets. Yes, I've tried adding a semi-colon to this list. + // You try it, and see what happens ;) + // TODO: Fix lexic permissions not converting entities if shouldn't + // be highlighting regardless + // + if ($this->lexic_permissions['BRACKETS']) { + $stuff_to_parse = str_replace( $this->language_data['CACHE_BRACKET_MATCH'], + $this->language_data['CACHE_BRACKET_REPLACE'], $stuff_to_parse ); + } + + + //FIX for symbol highlighting ... + if ($this->lexic_permissions['SYMBOLS'] && !empty($this->language_data['SYMBOLS'])) { + //Get all matches and throw away those witin a block that is already highlighted... (i.e. matched by a regexp) + $n_symbols = preg_match_all("/<\|(?:|[^>])+>(?:(?!\|>).*?)\|>|<\/a>|(?:" . $this->language_data['SYMBOL_SEARCH'] . ")+(?![^<]+?>)/", $stuff_to_parse, $pot_symbols, PREG_OFFSET_CAPTURE | PREG_SET_ORDER); + $global_offset = 0; + for ($s_id = 0; $s_id < $n_symbols; ++$s_id) { + $symbol_match = $pot_symbols[$s_id][0][0]; + if (strpos($symbol_match, '<') !== false || strpos($symbol_match, '>') !== false) { + // already highlighted blocks _must_ include either < or > + // so if this conditional applies, we have to skip this match + // BenBE: UNLESS the block contains or + if(strpos($symbol_match, '') === false && + strpos($symbol_match, '') === false) { + continue; + } + } + + // if we reach this point, we have a valid match which needs to be highlighted + + $symbol_length = strlen($symbol_match); + $symbol_offset = $pot_symbols[$s_id][0][1]; + unset($pot_symbols[$s_id]); + $symbol_hl = ""; + + // if we have multiple styles, we have to handle them properly + if ($this->language_data['MULTIPLE_SYMBOL_GROUPS']) { + $old_sym = -1; + // Split the current stuff to replace into its atomic symbols ... + preg_match_all("/" . $this->language_data['SYMBOL_SEARCH'] . "/", $symbol_match, $sym_match_syms, PREG_PATTERN_ORDER); + foreach ($sym_match_syms[0] as $sym_ms) { + //Check if consequtive symbols belong to the same group to save output ... + if (isset($this->language_data['SYMBOL_DATA'][$sym_ms]) + && ($this->language_data['SYMBOL_DATA'][$sym_ms] != $old_sym)) { + if (-1 != $old_sym) { + $symbol_hl .= "|>"; + } + $old_sym = $this->language_data['SYMBOL_DATA'][$sym_ms]; + if (!$this->use_classes) { + $symbol_hl .= '<| style="' . $this->language_data['STYLES']['SYMBOLS'][$old_sym] . '">'; + } else { + $symbol_hl .= '<| class="sy' . $old_sym . '">'; + } + } + $symbol_hl .= $sym_ms; + } + unset($sym_match_syms); + + //Close remaining tags and insert the replacement at the right position ... + //Take caution if symbol_hl is empty to avoid doubled closing spans. + if (-1 != $old_sym) { + $symbol_hl .= "|>"; + } + } else { + if (!$this->use_classes) { + $symbol_hl = '<| style="' . $this->language_data['STYLES']['SYMBOLS'][0] . '">'; + } else { + $symbol_hl = '<| class="sy0">'; + } + $symbol_hl .= $symbol_match . '|>'; + } + + $stuff_to_parse = substr_replace($stuff_to_parse, $symbol_hl, $symbol_offset + $global_offset, $symbol_length); + + // since we replace old text with something of different size, + // we'll have to keep track of the differences + $global_offset += strlen($symbol_hl) - $symbol_length; + } + } + //FIX for symbol highlighting ... + + // Add class/style for regexps + foreach (array_keys($this->language_data['REGEXPS']) as $key) { + if ($this->lexic_permissions['REGEXPS'][$key]) { + if (is_callable($this->language_data['STYLES']['REGEXPS'][$key])) { + $this->_rx_key = $key; + $stuff_to_parse = preg_replace_callback("/!REG3XP$key!(.*)\|>/U", + array($this, 'handle_regexps_callback'), + $stuff_to_parse); + } else { + if (!$this->use_classes) { + $attributes = ' style="' . $this->language_data['STYLES']['REGEXPS'][$key] . '"'; + } else { + if (is_array($this->language_data['REGEXPS'][$key]) && + array_key_exists(GESHI_CLASS, $this->language_data['REGEXPS'][$key])) { + $attributes = ' class="' . + $this->language_data['REGEXPS'][$key][GESHI_CLASS] . '"'; + } else { + $attributes = ' class="re' . $key . '"'; + } + } + $stuff_to_parse = str_replace("!REG3XP$key!", "$attributes", $stuff_to_parse); + } + } + } + + // Replace with . for urls + $stuff_to_parse = str_replace('', '.', $stuff_to_parse); + // Replace <|UR1| with link_styles[GESHI_LINK])) { + if ($this->use_classes) { + $stuff_to_parse = str_replace('<|UR1|', 'link_target . ' href=', $stuff_to_parse); + } else { + $stuff_to_parse = str_replace('<|UR1|', 'link_target . ' style="' . $this->link_styles[GESHI_LINK] . '" href=', $stuff_to_parse); + } + } else { + $stuff_to_parse = str_replace('<|UR1|', 'link_target . ' href=', $stuff_to_parse); + } + + // + // NOW we add the span thingy ;) + // + + $stuff_to_parse = str_replace('<|', '', '', $stuff_to_parse ); + return substr($stuff_to_parse, 1); + } + + /** + * Sets the time taken to parse the code + * + * @param string $start_time The time when parsing started as returned by @see microtime() + * @param string $end_time The time when parsing ended as returned by @see microtime() + * @since 1.0.2 + */ + protected function set_time($start_time, $end_time) { + $start = explode(' ', $start_time); + $end = explode(' ', $end_time); + $this->time = $end[0] + $end[1] - $start[0] - $start[1]; + } + + /** + * Gets the time taken to parse the code + * + * @return double The time taken to parse the code + * @since 1.0.2 + */ + public function get_time() { + return $this->time; + } + + /** + * Merges arrays recursively, overwriting values of the first array with values of later arrays + * + * @since 1.0.8 + */ + protected function merge_arrays() { + $arrays = func_get_args(); + $narrays = count($arrays); + + // check arguments + // comment out if more performance is necessary (in this case the foreach loop will trigger a warning if the argument is not an array) + for ($i = 0; $i < $narrays; $i ++) { + if (!is_array($arrays[$i])) { + // also array_merge_recursive returns nothing in this case + trigger_error('Argument #' . ($i+1) . ' is not an array - trying to merge array with scalar! Returning false!', E_USER_WARNING); + return false; + } + } + + // the first array is in the output set in every case + $ret = $arrays[0]; + + // merege $ret with the remaining arrays + for ($i = 1; $i < $narrays; $i ++) { + foreach ($arrays[$i] as $key => $value) { + if (is_array($value) && isset($ret[$key])) { + // if $ret[$key] is not an array you try to merge an scalar value with an array - the result is not defined (incompatible arrays) + // in this case the call will trigger an E_USER_WARNING and the $ret[$key] will be false. + $ret[$key] = $this->merge_arrays($ret[$key], $value); + } else { + $ret[$key] = $value; + } + } + } + + return $ret; + } + + /** + * Gets language information and stores it for later use + * + * @param string $file_name The filename of the language file you want to load + * @since 1.0.0 + * @todo Needs to load keys for lexic permissions for keywords, regexps etc + */ + protected function load_language($file_name) { + if ($file_name == $this->loaded_language) { + // this file is already loaded! + return; + } + + //Prepare some stuff before actually loading the language file + $this->loaded_language = $file_name; + $this->parse_cache_built = false; + $this->enable_highlighting(); + $language_data = array(); + + //Load the language file + require $file_name; + + // Perhaps some checking might be added here later to check that + // $language data is a valid thing but maybe not + $this->language_data = $language_data; + + // Set strict mode if should be set + $this->strict_mode = $this->language_data['STRICT_MODE_APPLIES']; + + // Set permissions for all lexics to true + // so they'll be highlighted by default + foreach (array_keys($this->language_data['KEYWORDS']) as $key) { + if (!empty($this->language_data['KEYWORDS'][$key])) { + $this->lexic_permissions['KEYWORDS'][$key] = true; + } else { + $this->lexic_permissions['KEYWORDS'][$key] = false; + } + } + + foreach (array_keys($this->language_data['COMMENT_SINGLE']) as $key) { + $this->lexic_permissions['COMMENTS'][$key] = true; + } + foreach (array_keys($this->language_data['REGEXPS']) as $key) { + $this->lexic_permissions['REGEXPS'][$key] = true; + } + + // for BenBE and future code reviews: + // we can use empty here since we only check for existance and emptiness of an array + // if it is not an array at all but rather false or null this will work as intended as well + // even if $this->language_data['PARSER_CONTROL'] is undefined this won't trigger a notice + if (!empty($this->language_data['PARSER_CONTROL']['ENABLE_FLAGS'])) { + foreach ($this->language_data['PARSER_CONTROL']['ENABLE_FLAGS'] as $flag => $value) { + // it's either true or false and maybe is true as well + $perm = $value !== GESHI_NEVER; + if ($flag == 'ALL') { + $this->enable_highlighting($perm); + continue; + } + if (!isset($this->lexic_permissions[$flag])) { + // unknown lexic permission + continue; + } + if (is_array($this->lexic_permissions[$flag])) { + foreach ($this->lexic_permissions[$flag] as $key => $val) { + $this->lexic_permissions[$flag][$key] = $perm; + } + } else { + $this->lexic_permissions[$flag] = $perm; + } + } + unset($this->language_data['PARSER_CONTROL']['ENABLE_FLAGS']); + } + + //Fix: Problem where hardescapes weren't handled if no ESCAPE_CHAR was given + //You need to set one for HARDESCAPES only in this case. + if(!isset($this->language_data['HARDCHAR'])) { + $this->language_data['HARDCHAR'] = $this->language_data['ESCAPE_CHAR']; + } + + //NEW in 1.0.8: Allow styles to be loaded from a separate file to override defaults + $style_filename = substr($file_name, 0, -4) . '.style.php'; + if (is_readable($style_filename)) { + //Clear any style_data that could have been set before ... + if (isset($style_data)) { + unset($style_data); + } + + //Read the Style Information from the style file + include $style_filename; + + //Apply the new styles to our current language styles + if (isset($style_data) && is_array($style_data)) { + $this->language_data['STYLES'] = + $this->merge_arrays($this->language_data['STYLES'], $style_data); + } + } + } + + /** + * Takes the parsed code and various options, and creates the HTML + * surrounding it to make it look nice. + * + * @param string $parsed_code The code already parsed (reference!) + * @since 1.0.0 + */ + protected function finalise(&$parsed_code) { + // Remove end parts of important declarations + // This is BUGGY!! My fault for bad code: fix coming in 1.2 + // @todo Remove this crap + if ($this->enable_important_blocks && + (strpos($parsed_code, $this->hsc(GESHI_START_IMPORTANT)) === false)) { + $parsed_code = str_replace($this->hsc(GESHI_END_IMPORTANT), '', $parsed_code); + } + + // Add HTML whitespace stuff if we're using the
    header + if ($this->header_type != GESHI_HEADER_PRE && $this->header_type != GESHI_HEADER_PRE_VALID) { + $this->indent($parsed_code); + } + + // purge some unnecessary stuff + /** NOTE: memorypeak #1 */ + $parsed_code = preg_replace('#]+>(\s*)#', '\\1', $parsed_code); + + // If we are using IDs for line numbers, there needs to be an overall + // ID set to prevent collisions. + if ($this->add_ids && !$this->overall_id) { + $this->overall_id = 'geshi-' . substr(md5(microtime()), 0, 4); + } + + // Get code into lines + /** NOTE: memorypeak #2 */ + $code = explode("\n", $parsed_code); + $parsed_code = $this->header(); + + // If we're using line numbers, we insert
  • s and appropriate + // markup to style them (otherwise we don't need to do anything) + if ($this->line_numbers != GESHI_NO_LINE_NUMBERS && $this->header_type != GESHI_HEADER_PRE_TABLE) { + // If we're using the
     header, we shouldn't add newlines because
    +            // the 
     will line-break them (and the 
  • s already do this for us) + $ls = ($this->header_type != GESHI_HEADER_PRE && $this->header_type != GESHI_HEADER_PRE_VALID) ? "\n" : ''; + + // Foreach line... + for ($i = 0, $n = count($code); $i < $n;) { + //Reset the attributes for a new line ... + $attrs = array(); + + // Make lines have at least one space in them if they're empty + // BenBE: Checking emptiness using trim instead of relying on blanks + if ('' == trim($code[$i])) { + $code[$i] = ' '; + } + + // If this is a "special line"... + if ($this->line_numbers == GESHI_FANCY_LINE_NUMBERS && + $i % $this->line_nth_row == ($this->line_nth_row - 1)) { + // Set the attributes to style the line + if ($this->use_classes) { + //$attr = ' class="li2"'; + $attrs['class'][] = 'li2'; + $def_attr = ' class="de2"'; + } else { + //$attr = ' style="' . $this->line_style2 . '"'; + $attrs['style'][] = $this->line_style2; + // This style "covers up" the special styles set for special lines + // so that styles applied to special lines don't apply to the actual + // code on that line + $def_attr = ' style="' . $this->code_style . '"'; + } + } else { + if ($this->use_classes) { + //$attr = ' class="li1"'; + $attrs['class'][] = 'li1'; + $def_attr = ' class="de1"'; + } else { + //$attr = ' style="' . $this->line_style1 . '"'; + $attrs['style'][] = $this->line_style1; + $def_attr = ' style="' . $this->code_style . '"'; + } + } + + //Check which type of tag to insert for this line + if ($this->header_type == GESHI_HEADER_PRE_VALID) { + $start = ""; + $end = '
  • '; + } else { + // Span or div? + $start = ""; + $end = ''; + } + + ++$i; + + // Are we supposed to use ids? If so, add them + if ($this->add_ids) { + $attrs['id'][] = "$this->overall_id-$i"; + } + + //Is this some line with extra styles??? + if (in_array($i, $this->highlight_extra_lines)) { + if ($this->use_classes) { + if (isset($this->highlight_extra_lines_styles[$i])) { + $attrs['class'][] = "lx$i"; + } else { + $attrs['class'][] = "ln-xtra"; + } + } else { + array_push($attrs['style'], $this->get_line_style($i)); + } + } + + // Add in the line surrounded by appropriate list HTML + $attr_string = ''; + foreach ($attrs as $key => $attr) { + $attr_string .= ' ' . $key . '="' . implode(' ', $attr) . '"'; + } + + $parsed_code .= "$start{$code[$i-1]}$end
  • $ls"; + unset($code[$i - 1]); + } + } else { + $n = count($code); + if ($this->use_classes) { + $attributes = ' class="de1"'; + } else { + $attributes = ' style="'. $this->code_style .'"'; + } + if ($this->header_type == GESHI_HEADER_PRE_VALID) { + $parsed_code .= ''; + } elseif ($this->header_type == GESHI_HEADER_PRE_TABLE) { + if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) { + if ($this->use_classes) { + $attrs = ' class="ln"'; + } else { + $attrs = ' style="'. $this->table_linenumber_style .'"'; + } + $parsed_code .= ''; + // get linenumbers + // we don't merge it with the for below, since it should be better for + // memory consumption this way + // @todo: but... actually it would still be somewhat nice to merge the two loops + // the mem peaks are at different positions + for ($i = 0; $i < $n; ++$i) { + $close = 0; + // fancy lines + if ($this->line_numbers == GESHI_FANCY_LINE_NUMBERS && + $i % $this->line_nth_row == ($this->line_nth_row - 1)) { + // Set the attributes to style the line + if ($this->use_classes) { + $parsed_code .= ''; + } else { + // This style "covers up" the special styles set for special lines + // so that styles applied to special lines don't apply to the actual + // code on that line + $parsed_code .= '' + .''; + } + $close += 2; + } + //Is this some line with extra styles??? + if (in_array($i + 1, $this->highlight_extra_lines)) { + if ($this->use_classes) { + if (isset($this->highlight_extra_lines_styles[$i])) { + $parsed_code .= ""; + } else { + $parsed_code .= ""; + } + } else { + $parsed_code .= "get_line_style($i) . "\">"; + } + ++$close; + } + $parsed_code .= $this->line_numbers_start + $i; + if ($close) { + $parsed_code .= str_repeat('', $close); + } elseif ($i != $n) { + $parsed_code .= "\n"; + } + } + $parsed_code .= ''; + } + $parsed_code .= ''; + } + // No line numbers, but still need to handle highlighting lines extra. + // Have to use divs so the full width of the code is highlighted + $close = 0; + for ($i = 0; $i < $n; ++$i) { + // Make lines have at least one space in them if they're empty + // BenBE: Checking emptiness using trim instead of relying on blanks + if ('' == trim($code[$i])) { + $code[$i] = ' '; + } + // fancy lines + if ($this->line_numbers == GESHI_FANCY_LINE_NUMBERS && + $i % $this->line_nth_row == ($this->line_nth_row - 1)) { + // Set the attributes to style the line + if ($this->use_classes) { + $parsed_code .= ''; + } else { + // This style "covers up" the special styles set for special lines + // so that styles applied to special lines don't apply to the actual + // code on that line + $parsed_code .= '' + .''; + } + $close += 2; + } + //Is this some line with extra styles??? + if (in_array($i + 1, $this->highlight_extra_lines)) { + if ($this->use_classes) { + if (isset($this->highlight_extra_lines_styles[$i])) { + $parsed_code .= ""; + } else { + $parsed_code .= ""; + } + } else { + $parsed_code .= "get_line_style($i) . "\">"; + } + ++$close; + } + + $parsed_code .= $code[$i]; + + if ($close) { + $parsed_code .= str_repeat('', $close); + $close = 0; + } + elseif ($i + 1 < $n) { + $parsed_code .= "\n"; + } + unset($code[$i]); + } + + if ($this->header_type == GESHI_HEADER_PRE_VALID || $this->header_type == GESHI_HEADER_PRE_TABLE) { + $parsed_code .= ''; + } + if ($this->header_type == GESHI_HEADER_PRE_TABLE && $this->line_numbers != GESHI_NO_LINE_NUMBERS) { + $parsed_code .= ''; + } + } + + $parsed_code .= $this->footer(); + } + + /** + * Creates the header for the code block (with correct attributes) + * + * @return string The header for the code block + * @since 1.0.0 + */ + protected function header() { + // Get attributes needed + /** + * @todo Document behaviour change - class is outputted regardless of whether + * we're using classes or not. Same with style + */ + $attributes = ' class="' . $this->_genCSSName($this->language); + if ($this->overall_class != '') { + $attributes .= " ".$this->_genCSSName($this->overall_class); + } + $attributes .= '"'; + + if ($this->overall_id != '') { + $attributes .= " id=\"{$this->overall_id}\""; + } + if ($this->overall_style != '' && !$this->use_classes) { + $attributes .= ' style="' . $this->overall_style . '"'; + } + + $ol_attributes = ''; + + if ($this->line_numbers_start != 1) { + $ol_attributes .= ' start="' . $this->line_numbers_start . '"'; + } + + // Get the header HTML + $header = $this->header_content; + if ($header) { + if ($this->header_type == GESHI_HEADER_PRE || $this->header_type == GESHI_HEADER_PRE_VALID) { + $header = str_replace("\n", '', $header); + } + $header = $this->replace_keywords($header); + + if ($this->use_classes) { + $attr = ' class="head"'; + } else { + $attr = " style=\"{$this->header_content_style}\""; + } + if ($this->header_type == GESHI_HEADER_PRE_TABLE && $this->line_numbers != GESHI_NO_LINE_NUMBERS) { + $header = "$header"; + } else { + $header = "$header"; + } + } + + if (GESHI_HEADER_NONE == $this->header_type) { + if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) { + return "$header"; + } + return $header . ($this->force_code_block ? '
    ' : ''); + } + + // Work out what to return and do it + if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) { + if ($this->header_type == GESHI_HEADER_PRE) { + return "$header"; + } elseif ($this->header_type == GESHI_HEADER_DIV || + $this->header_type == GESHI_HEADER_PRE_VALID) { + return "$header"; + } elseif ($this->header_type == GESHI_HEADER_PRE_TABLE) { + return "$header"; + } + } else { + if ($this->header_type == GESHI_HEADER_PRE) { + return "$header" . + ($this->force_code_block ? '
    ' : ''); + } else { + return "$header" . + ($this->force_code_block ? '
    ' : ''); + } + } + } + + /** + * Returns the footer for the code block. + * + * @return string The footer for the code block + * @since 1.0.0 + */ + protected function footer() { + $footer = $this->footer_content; + if ($footer) { + if ($this->header_type == GESHI_HEADER_PRE) { + $footer = str_replace("\n", '', $footer);; + } + $footer = $this->replace_keywords($footer); + + if ($this->use_classes) { + $attr = ' class="foot"'; + } else { + $attr = " style=\"{$this->footer_content_style}\""; + } + if ($this->header_type == GESHI_HEADER_PRE_TABLE && $this->line_numbers != GESHI_NO_LINE_NUMBERS) { + $footer = "$footer"; + } else { + $footer = "$footer
    "; + } + } + + if (GESHI_HEADER_NONE == $this->header_type) { + return ($this->line_numbers != GESHI_NO_LINE_NUMBERS) ? '' . $footer : $footer; + } + + if ($this->header_type == GESHI_HEADER_DIV || $this->header_type == GESHI_HEADER_PRE_VALID) { + if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) { + return "$footer
    "; + } + return ($this->force_code_block ? '
    ' : '') . + "$footer"; + } + elseif ($this->header_type == GESHI_HEADER_PRE_TABLE) { + if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) { + return "$footer"; + } + return ($this->force_code_block ? '' : '') . + "$footer"; + } + else { + if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) { + return "$footer"; + } + return ($this->force_code_block ? '' : '') . + "$footer"; + } + } + + /** + * Replaces certain keywords in the header and footer with + * certain configuration values + * + * @param string $instr The header or footer content to do replacement on + * @return string The header or footer with replaced keywords + * @since 1.0.2 + */ + protected function replace_keywords($instr) { + $keywords = $replacements = array(); + + $keywords[] = '
      to have no effect at all if there are line numbers + // (
        s have margins that should be destroyed so all layout is + // controlled by the set_overall_style method, which works on the + //
         or 
        container). Additionally, set default styles for lines + if (!$economy_mode || $this->line_numbers != GESHI_NO_LINE_NUMBERS) { + //$stylesheet .= "$selector, {$selector}ol, {$selector}ol li {margin: 0;}\n"; + $stylesheet .= "$selector.de1, $selector.de2 {{$this->code_style}}\n"; + } + + // Add overall styles + // note: neglect economy_mode, empty styles are meaningless + if ($this->overall_style != '') { + $stylesheet .= "$selector {{$this->overall_style}}\n"; + } + + // Add styles for links + // note: economy mode does not make _any_ sense here + // either the style is empty and thus no selector is needed + // or the appropriate key is given. + foreach ($this->link_styles as $key => $style) { + if ($style != '') { + switch ($key) { + case GESHI_LINK: + $stylesheet .= "{$selector}a:link {{$style}}\n"; + break; + case GESHI_HOVER: + $stylesheet .= "{$selector}a:hover {{$style}}\n"; + break; + case GESHI_ACTIVE: + $stylesheet .= "{$selector}a:active {{$style}}\n"; + break; + case GESHI_VISITED: + $stylesheet .= "{$selector}a:visited {{$style}}\n"; + break; + } + } + } + + // Header and footer + // note: neglect economy_mode, empty styles are meaningless + if ($this->header_content_style != '') { + $stylesheet .= "$selector.head {{$this->header_content_style}}\n"; + } + if ($this->footer_content_style != '') { + $stylesheet .= "$selector.foot {{$this->footer_content_style}}\n"; + } + + // Styles for important stuff + // note: neglect economy_mode, empty styles are meaningless + if ($this->important_styles != '') { + $stylesheet .= "$selector.imp {{$this->important_styles}}\n"; + } + + // Simple line number styles + if ((!$economy_mode || $this->line_numbers != GESHI_NO_LINE_NUMBERS) && $this->line_style1 != '') { + $stylesheet .= "{$selector}li, {$selector}.li1 {{$this->line_style1}}\n"; + } + if ((!$economy_mode || $this->line_numbers != GESHI_NO_LINE_NUMBERS) && $this->table_linenumber_style != '') { + $stylesheet .= "{$selector}.ln {{$this->table_linenumber_style}}\n"; + } + // If there is a style set for fancy line numbers, echo it out + if ((!$economy_mode || $this->line_numbers == GESHI_FANCY_LINE_NUMBERS) && $this->line_style2 != '') { + $stylesheet .= "{$selector}.li2 {{$this->line_style2}}\n"; + } + + // note: empty styles are meaningless + foreach ($this->language_data['STYLES']['KEYWORDS'] as $group => $styles) { + if ($styles != '' && (!$economy_mode || + (isset($this->lexic_permissions['KEYWORDS'][$group]) && + $this->lexic_permissions['KEYWORDS'][$group]))) { + $stylesheet .= "$selector.kw$group {{$styles}}\n"; + } + } + foreach ($this->language_data['STYLES']['COMMENTS'] as $group => $styles) { + if ($styles != '' && (!$economy_mode || + (isset($this->lexic_permissions['COMMENTS'][$group]) && + $this->lexic_permissions['COMMENTS'][$group]) || + (!empty($this->language_data['COMMENT_REGEXP']) && + !empty($this->language_data['COMMENT_REGEXP'][$group])))) { + $stylesheet .= "$selector.co$group {{$styles}}\n"; + } + } + foreach ($this->language_data['STYLES']['ESCAPE_CHAR'] as $group => $styles) { + if ($styles != '' && (!$economy_mode || $this->lexic_permissions['ESCAPE_CHAR'])) { + // NEW: since 1.0.8 we have to handle hardescapes + if ($group === 'HARD') { + $group = '_h'; + } + $stylesheet .= "$selector.es$group {{$styles}}\n"; + } + } + foreach ($this->language_data['STYLES']['BRACKETS'] as $group => $styles) { + if ($styles != '' && (!$economy_mode || $this->lexic_permissions['BRACKETS'])) { + $stylesheet .= "$selector.br$group {{$styles}}\n"; + } + } + foreach ($this->language_data['STYLES']['SYMBOLS'] as $group => $styles) { + if ($styles != '' && (!$economy_mode || $this->lexic_permissions['SYMBOLS'])) { + $stylesheet .= "$selector.sy$group {{$styles}}\n"; + } + } + foreach ($this->language_data['STYLES']['STRINGS'] as $group => $styles) { + if ($styles != '' && (!$economy_mode || $this->lexic_permissions['STRINGS'])) { + // NEW: since 1.0.8 we have to handle hardquotes + if ($group === 'HARD') { + $group = '_h'; + } + $stylesheet .= "$selector.st$group {{$styles}}\n"; + } + } + foreach ($this->language_data['STYLES']['NUMBERS'] as $group => $styles) { + if ($styles != '' && (!$economy_mode || $this->lexic_permissions['NUMBERS'])) { + $stylesheet .= "$selector.nu$group {{$styles}}\n"; + } + } + foreach ($this->language_data['STYLES']['METHODS'] as $group => $styles) { + if ($styles != '' && (!$economy_mode || $this->lexic_permissions['METHODS'])) { + $stylesheet .= "$selector.me$group {{$styles}}\n"; + } + } + // note: neglect economy_mode, empty styles are meaningless + foreach ($this->language_data['STYLES']['SCRIPT'] as $group => $styles) { + if ($styles != '') { + $stylesheet .= "$selector.sc$group {{$styles}}\n"; + } + } + foreach ($this->language_data['STYLES']['REGEXPS'] as $group => $styles) { + if ($styles != '' && (!$economy_mode || + (isset($this->lexic_permissions['REGEXPS'][$group]) && + $this->lexic_permissions['REGEXPS'][$group]))) { + if (is_array($this->language_data['REGEXPS'][$group]) && + array_key_exists(GESHI_CLASS, $this->language_data['REGEXPS'][$group])) { + $stylesheet .= "$selector."; + $stylesheet .= $this->language_data['REGEXPS'][$group][GESHI_CLASS]; + $stylesheet .= " {{$styles}}\n"; + } else { + $stylesheet .= "$selector.re$group {{$styles}}\n"; + } + } + } + // Styles for lines being highlighted extra + if (!$economy_mode || (count($this->highlight_extra_lines)!=count($this->highlight_extra_lines_styles))) { + $stylesheet .= "{$selector}.ln-xtra, {$selector}li.ln-xtra, {$selector}div.ln-xtra {{$this->highlight_extra_lines_style}}\n"; + } + $stylesheet .= "{$selector}span.xtra { display:block; }\n"; + foreach ($this->highlight_extra_lines_styles as $lineid => $linestyle) { + $stylesheet .= "{$selector}.lx$lineid, {$selector}li.lx$lineid, {$selector}div.lx$lineid {{$linestyle}}\n"; + } + + return $stylesheet; + } + + /** + * Get's the style that is used for the specified line + * + * @param int $line The line number information is requested for + * @since 1.0.7.21 + */ + protected function get_line_style($line) { + $style = null; + if (isset($this->highlight_extra_lines_styles[$line])) { + $style = $this->highlight_extra_lines_styles[$line]; + } else { // if no "extra" style assigned + $style = $this->highlight_extra_lines_style; + } + + return $style; + } + + /** + * this functions creates an optimized regular expression list + * of an array of strings. + * + * Example: + * $list = array('faa', 'foo', 'foobar'); + * => string 'f(aa|oo(bar)?)' + * + * @param array $list array of (unquoted) strings + * @param string $regexp_delimiter your regular expression delimiter, @see preg_quote() + * @return string for regular expression + * @author Milian Wolff + * @since 1.0.8 + */ + protected function optimize_regexp_list($list, $regexp_delimiter = '/') { + $regex_chars = array('.', '\\', '+', '-', '*', '?', '[', '^', ']', '$', + '(', ')', '{', '}', '=', '!', '<', '>', '|', ':', $regexp_delimiter); + sort($list); + $regexp_list = array(''); + $num_subpatterns = 0; + $list_key = 0; + + // the tokens which we will use to generate the regexp list + $tokens = array(); + $prev_keys = array(); + // go through all entries of the list and generate the token list + $cur_len = 0; + for ($i = 0, $i_max = count($list); $i < $i_max; ++$i) { + if ($cur_len > GESHI_MAX_PCRE_LENGTH) { + // seems like the length of this pcre is growing exorbitantly + $regexp_list[++$list_key] = $this->_optimize_regexp_list_tokens_to_string($tokens); + $num_subpatterns = substr_count($regexp_list[$list_key], '(?:'); + $tokens = array(); + $cur_len = 0; + } + $level = 0; + $entry = preg_quote((string) $list[$i], $regexp_delimiter); + $pointer = &$tokens; + // properly assign the new entry to the correct position in the token array + // possibly generate smaller common denominator keys + while (true) { + // get the common denominator + if (isset($prev_keys[$level])) { + if ($prev_keys[$level] == $entry) { + // this is a duplicate entry, skip it + continue 2; + } + $char = 0; + while (isset($entry[$char]) && isset($prev_keys[$level][$char]) + && $entry[$char] == $prev_keys[$level][$char]) { + ++$char; + } + if ($char > 0) { + // this entry has at least some chars in common with the current key + if ($char == strlen($prev_keys[$level])) { + // current key is totally matched, i.e. this entry has just some bits appended + $pointer = &$pointer[$prev_keys[$level]]; + } else { + // only part of the keys match + $new_key_part1 = substr($prev_keys[$level], 0, $char); + $new_key_part2 = substr($prev_keys[$level], $char); + + if (in_array($new_key_part1[0], $regex_chars) + || in_array($new_key_part2[0], $regex_chars)) { + // this is bad, a regex char as first character + $pointer[$entry] = array('' => true); + array_splice($prev_keys, $level, count($prev_keys), $entry); + $cur_len += strlen($entry); + continue; + } else { + // relocate previous tokens + $pointer[$new_key_part1] = array($new_key_part2 => $pointer[$prev_keys[$level]]); + unset($pointer[$prev_keys[$level]]); + $pointer = &$pointer[$new_key_part1]; + // recreate key index + array_splice($prev_keys, $level, count($prev_keys), array($new_key_part1, $new_key_part2)); + $cur_len += strlen($new_key_part2); + } + } + ++$level; + $entry = substr($entry, $char); + continue; + } + // else: fall trough, i.e. no common denominator was found + } + if ($level == 0 && !empty($tokens)) { + // we can dump current tokens into the string and throw them away afterwards + $new_entry = $this->_optimize_regexp_list_tokens_to_string($tokens); + $new_subpatterns = substr_count($new_entry, '(?:'); + if (GESHI_MAX_PCRE_SUBPATTERNS && $num_subpatterns + $new_subpatterns > GESHI_MAX_PCRE_SUBPATTERNS) { + $regexp_list[++$list_key] = $new_entry; + $num_subpatterns = $new_subpatterns; + } else { + if (!empty($regexp_list[$list_key])) { + $new_entry = '|' . $new_entry; + } + $regexp_list[$list_key] .= $new_entry; + $num_subpatterns += $new_subpatterns; + } + $tokens = array(); + $cur_len = 0; + } + // no further common denominator found + $pointer[$entry] = array('' => true); + array_splice($prev_keys, $level, count($prev_keys), $entry); + + $cur_len += strlen($entry); + break; + } + unset($list[$i]); + } + // make sure the last tokens get converted as well + $new_entry = $this->_optimize_regexp_list_tokens_to_string($tokens); + if (GESHI_MAX_PCRE_SUBPATTERNS && $num_subpatterns + substr_count($new_entry, '(?:') > GESHI_MAX_PCRE_SUBPATTERNS) { + if ( !empty($regexp_list[$list_key]) ) { + ++$list_key; + } + $regexp_list[$list_key] = $new_entry; + } else { + if (!empty($regexp_list[$list_key])) { + $new_entry = '|' . $new_entry; + } + $regexp_list[$list_key] .= $new_entry; + } + return $regexp_list; + } + + /** + * this function creates the appropriate regexp string of an token array + * you should not call this function directly, @see $this->optimize_regexp_list(). + * + * @param array $tokens array of tokens + * @param bool $recursed to know wether we recursed or not + * @return string + * @author Milian Wolff + * @since 1.0.8 + */ + protected function _optimize_regexp_list_tokens_to_string(&$tokens, $recursed = false) { + $list = ''; + foreach ($tokens as $token => $sub_tokens) { + $list .= $token; + $close_entry = isset($sub_tokens['']); + unset($sub_tokens['']); + if (!empty($sub_tokens)) { + $list .= '(?:' . $this->_optimize_regexp_list_tokens_to_string($sub_tokens, true) . ')'; + if ($close_entry) { + // make sub_tokens optional + $list .= '?'; + } + } + $list .= '|'; + } + if (!$recursed) { + // do some optimizations + // common trailing strings + // BUGGY! + //$list = preg_replace_callback('#(?<=^|\:|\|)\w+?(\w+)(?:\|.+\1)+(?=\|)#', create_function( + // '$matches', 'return "(?:" . preg_replace("#" . preg_quote($matches[1], "#") . "(?=\||$)#", "", $matches[0]) . ")" . $matches[1];'), $list); + // (?:p)? => p? + $list = preg_replace('#\(\?\:(.)\)\?#', '\1?', $list); + // (?:a|b|c|d|...)? => [abcd...]? + // TODO: a|bb|c => [ac]|bb + static $callback_2; + if (!isset($callback_2)) { + $callback_2 = create_function('$matches', 'return "[" . str_replace("|", "", $matches[1]) . "]";'); + } + $list = preg_replace_callback('#\(\?\:((?:.\|)+.)\)#', $callback_2, $list); + } + // return $list without trailing pipe + return substr($list, 0, -1); + } +} // End Class GeSHi + + +if (!function_exists('geshi_highlight')) { + /** + * Easy way to highlight stuff. Behaves just like highlight_string + * + * @param string $string The code to highlight + * @param string $language The language to highlight the code in + * @param string $path The path to the language files. You can leave this blank if you need + * as from version 1.0.7 the path should be automatically detected + * @param boolean $return Whether to return the result or to echo + * @return string The code highlighted (if $return is true) + * @since 1.0.2 + */ + function geshi_highlight($string, $language, $path = null, $return = false) { + $geshi = new GeSHi($string, $language, $path); + $geshi->set_header_type(GESHI_HEADER_NONE); + + if ($return) { + return '' . $geshi->parse_code() . ''; + } + + echo '' . $geshi->parse_code() . ''; + + if ($geshi->error()) { + return false; + } + return true; + } +} diff --git a/includes/geshi/4cs.php b/includes/geshi/4cs.php new file mode 100644 index 0000000..8fdf931 --- /dev/null +++ b/includes/geshi/4cs.php @@ -0,0 +1,137 @@ + 'GADV 4CS', + 'COMMENT_SINGLE' => array(1 => "//"), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + 'All', 'AllMatches', 'And', 'And_Filters', 'As', 'Asc', 'BasedOn', + 'BestMatch', 'Block', 'Buffer', 'ByRef', 'ByVal', 'Call', 'Channel', + 'Chr', 'Clear', 'Close', 'Confirm', 'Const', 'Continue', 'Cos', + 'Critical', 'Declare', 'Default', 'DefaultChannel', 'DefaultDelayTime', + 'DefaultReceiveMode', 'DefaultResponseTime', '#Define', 'DelayTime', + 'Delete', 'Div', 'Else', '#Else', 'ElseIf', '#ElseIf', 'End', 'EndCritical', + 'EndInlineC', 'EndFunction', 'EndIf', '#EndIf', 'EndInputList', + 'EndLocalChannel', 'EndScenario', 'EndSub', 'EndWhile', 'Error', + 'ErrorLevelOff', 'ErrorLevelOn', 'ErrorLevelSet', 'ErrorLevelSetRaw', + 'Event', 'EventMode', 'EventOff', 'EventOn', 'EventSet', 'EventSetRaw', + 'Execute', 'Exit', 'Exp', 'FileClose', 'FilterClear', 'FileEOF', 'FileOpen', + 'FileRead', 'FileSize', 'FileWrite', 'FilterAdd', 'FilterMode', + 'FilterOff', 'FilterOn', 'For', 'Format', 'Function', 'GoOnline', 'GoTo', + 'Handle', 'Hide', 'If', '#If', '#IfDef', '#IfNDef', 'Ignore', '#Include', + 'InlineC', 'Input', 'InputItem', 'InputList', 'Kill', 'LBound', 'LocalChannel', + 'Local', 'Log', 'Log10', 'LogOff', 'LogOn', 'Loop', 'Message', 'Mod', + 'MonitorChannel', 'MostFormat', 'MostMessage', 'Named', 'Never', 'Next', + 'NoOrder', 'Not', 'Nothing', 'NoWait', 'Numeric', 'OnError', 'OnEvent', + 'Or', 'Or_Filters', 'Order', 'Pass', 'Pow', 'Prototype', 'Quit', 'Raise', + 'Random', 'Receive', 'ReceiveMode', 'ReceiveRaw', 'Redim', 'Remote', 'Repeat', + 'Repeated', 'ResponseTime', 'Resume', 'ResumeCritical', 'RT_Common', + 'RT_Dll_Call', 'RT_FILEIO', 'RT_General', 'RT_HardwareAccess', + 'RT_MessageVariableAccess', 'RT_Scenario', 'RT_VariableAccess', 'Runtime', + 'Scenario', 'ScenarioEnd', 'ScenarioStart', 'ScenarioStatus', 'ScenarioTerminate', + 'Send', 'SendRaw', 'Set', 'SetError', 'Sin', 'Single', 'Show', 'Start', + 'StartCritical', 'Starts', 'Static', 'Step', 'Stop', 'String', 'Sub', + 'System_Error', 'TerminateAllChilds', 'Terminates', 'Then', 'Throw', 'TimeOut', + 'To', 'TooLate', 'Trunc', 'UBound', 'Unexpected', 'Until', 'User_Error', + 'View', 'Wait', 'Warning', 'While', 'XOr' + ), + 2 => array( + 'alias', 'winapi', 'long', 'char', 'double', 'float', 'int', 'short', 'lib' + ) + ), + 'SYMBOLS' => array( + '=', ':=', '<', '>', '<>' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #0000C0; font-weight: bold;', + 2 => 'color: #808080;' + ), + 'COMMENTS' => array( + 1 => 'color: #008000;' + ), + 'BRACKETS' => array( + 0 => 'color: #000080;' + ), + 'STRINGS' => array( + 0 => 'color: #800080;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;' + ), + 'METHODS' => array( + 1 => 'color: #66cc66;' + ), + 'SYMBOLS' => array( + 0 => 'color: #000080;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099;' + ), + 'SCRIPT' => array( + ), + 'REGEXPS' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ) +); diff --git a/includes/geshi/6502acme.php b/includes/geshi/6502acme.php new file mode 100644 index 0000000..6b37a27 --- /dev/null +++ b/includes/geshi/6502acme.php @@ -0,0 +1,228 @@ + 'MOS 6502 (6510) ACME Cross Assembler format', + 'COMMENT_SINGLE' => array(1 => ';'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + /* 6502/6510 Opcodes. */ + 1 => array( + 'adc', 'and', 'asl', 'bcc', 'bcs', 'beq', 'bit', 'bmi', + 'bne', 'bpl', 'brk', 'bvc', 'bvs', 'clc', 'cld', 'cli', + 'clv', 'cmp', 'cpx', 'cpy', 'dec', 'dex', 'dey', 'eor', + 'inc', 'inx', 'iny', 'jmp', 'jsr', 'lda', 'ldx', 'ldy', + 'lsr', 'nop', 'ora', 'pha', 'php', 'pla', 'plp', 'rol', + 'ror', 'rti', 'rts', 'sbc', 'sec', 'sed', 'sei', 'sta', + 'stx', 'sty', 'tax', 'tay', 'tsx', 'txa', 'txs', 'tya', + ), + /* Index Registers, yes the 6502 has other registers by they are only + * accessable by specific opcodes. The 65816 also has access to the stack pointer S. */ + 2 => array( + 'x', 'y', 's' + ), + /* Directives or "pseudo opcodes" as defined by ACME 0.93 file AllPOs.txt. */ + 3 => array( + '!8', '!08', '!by', '!byte', + '!16', '!wo', '!word', + '!24', '!32', + '!fi', '!fill', + '!align', + '!ct', '!convtab', + '!tx', '!text', + '!pet', + '!raw', + '!scrxor', + '!to', + '!source', + '!bin', '!binary', + '!zn', '!zone', + '!sl', + '!svl', + '!sal', + '!if', '!ifdef', + '!for', + '!set', + '!do', 'while', 'until', + '!eof', '!endoffile', + '!warn', '!error', '!serious', + '!macro', +// , '*=' // Not a valid keyword (uses both * and = signs) moved to symbols instead. + '!initmem', + '!pseudopc', + '!cpu', + '!al', '!as', '!rl', '!rs', + ), + + /* 6502/6510 undocumented opcodes (often referred to as illegal instructions). + * These are present in the 6502/6510 but NOT in the newer CMOS revisions of the 65C02 or 65816. + * As they are undocumented instructions there are no "official" names for them, there are also + * several more that mainly perform various forms of crash and are not supported by ACME 0.93. + */ + 4 => array( + 'anc', 'arr', 'asr', 'dcp', 'dop', 'isc', 'jam', 'lax', + 'rla', 'rra', 'sax', 'sbx', 'slo', 'sre', 'top', + ), + /* 65c02 instructions, MOS added a few (much needed) instructions in the CMOS version of the 6502, but stupidly removed the undocumented/illegal opcodes. + * ACME 0.93 does not support the rmb0-7 and smb0-7 instructions (they are currently rem'ed out). */ + 5 => array( + 'bra', 'phx', 'phy', 'plx', 'ply', 'stz', 'trb', 'tsb' + ), + /* 65816 instructions. */ + 6 => array( + 'brl', 'cop', 'jml', 'jsl', 'mvn', 'mvp', 'pea', 'pei', + 'per', 'phb', 'phd', 'phk', 'plb', 'pld', 'rep', 'rtl', + 'sep', 'tcd', 'tcs', 'tdc', 'tsc', 'txy', 'tyx', 'wdm', + 'xba', 'xce', + ), + /* Deprecated directives or "pseudo opcodes" as defined by ACME 0.93 file AllPOs.txt. */ + 7 => array( + '!cbm', + '!sz', '!subzone', + '!realpc', + ), + /* Math functions, some are aliases for the symbols. */ + 8 => array( + 'not', 'div', 'mod', 'xor', 'or', 'sin', 'cos', 'tan', + 'arcsin', 'arccos', 'arctan', 'int', 'float', + + ), + + ), + 'SYMBOLS' => array( +// '[', ']', '(', ')', '{', '}', // These are already defined by GeSHi as BRACKETS. + '*=', '#', '!', '^', '-', '*', '/', + '%', '+', '-', '<<', '>>', '>>>', + '<', '>', '^', '<=', '<', '>=', '>', '!=', + '=', '&', '|', '<>', + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #00f; font-weight:bold;', + 2 => 'color: #00f; font-weight:bold;', + 3 => 'color: #080; font-weight:bold;', + 4 => 'color: #f00; font-weight:bold;', + 5 => 'color: #80f; font-weight:bold;', + 6 => 'color: #f08; font-weight:bold;', + 7 => 'color: #a04; font-weight:bold; font-style: italic;', + 8 => 'color: #000;', + ), + 'COMMENTS' => array( + 1 => 'color: #999; font-style: italic;', + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #009; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #000;' + ), + 'STRINGS' => array( + 0 => 'color: #080;' + ), + 'NUMBERS' => array( + GESHI_NUMBER_INT_BASIC => 'color: #f00;', + GESHI_NUMBER_HEX_PREFIX_DOLLAR => 'color: #f00;', + GESHI_NUMBER_HEX_PREFIX => 'color: #f00;', + GESHI_NUMBER_BIN_PREFIX_PERCENT => 'color: #f00;', + GESHI_NUMBER_FLT_NONSCI => 'color: #f00;', + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #080;' + ), + 'REGEXPS' => array( + 0 => 'color: #f00;' + , 1 => 'color: #933;' + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | + GESHI_NUMBER_FLT_NONSCI | + GESHI_NUMBER_HEX_PREFIX_DOLLAR | + GESHI_NUMBER_HEX_PREFIX | + GESHI_NUMBER_BIN_PREFIX_PERCENT, + // AMCE Octal format not support and gets picked up as Decimal unfortunately. + 'REGEXPS' => array( + //ACME .# Binary number format. e.g. %..##..##..## + 0 => '\%[\.\#]{1,64}', + //ACME Local Labels + 1 => '\.[_a-zA-Z][_a-zA-Z0-9]*', + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 8, + 'PARSER_CONTROL' => array( + 'NUMBERS' => array( + 'PRECHECK_RX' => '/[\da-fA-F\.\$\%]/' + ) + ) +); diff --git a/includes/geshi/6502kickass.php b/includes/geshi/6502kickass.php new file mode 100644 index 0000000..205cdd1 --- /dev/null +++ b/includes/geshi/6502kickass.php @@ -0,0 +1,239 @@ + 'MOS 6502 (6510) Kick Assembler format', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + /* 6502/6510 Opcodes including undocumented opcodes as Kick Assembler 3.13 does not make a distinction - they are ALL valid. */ + 1 => array( + 'adc', 'ahx', 'alr', 'anc', 'anc2', 'and', 'arr', 'asl', + 'axs', 'bcc', 'bcs', 'beq', 'bit', 'bmi', 'bne', 'bpl', + 'brk', 'bvc', 'bvs', 'clc', 'cld', 'cli', 'clv', 'cmp', + 'cpx', 'cpy', 'dcp', 'dec', 'dex', 'dey', 'eor', 'inc', + 'inx', 'iny', 'isc', 'jmp', 'jsr', 'las', 'lax', 'lda', + 'ldx', 'ldy', 'lsr', 'nop', 'ora', 'pha', 'php', 'pla', + 'plp', 'rla', 'rol', 'ror', 'rra', 'rti', 'rts', 'sax', + 'sbc', 'sbc2', 'sec', 'sed', 'sei', 'shx', 'shy', 'slo', + 'sre', 'sta', 'stx', 'sty', 'tas', 'tax', 'tay', 'tsx', + 'txa', 'txs', 'tya', 'xaa', + ), + /* DTV additional Opcodes. */ + 2 => array( + 'bra', 'sac', 'sir' + ), + /* Index Registers, yes the 6502 has other registers by they are only + * accessable by specific opcodes. */ + 3 => array( + 'x', 'y' + ), + /* Directives. */ + 4 => array( + '.pc', '.pseudopc', 'virtual', '.align', '.byte', '.word', '.text', '.fill', + '.import source', '.import binary', '.import c64', '.import text', '.import', '.print', '.printnow', + '.error', '.var', '.eval', '.const', '.eval const', '.enum', '.label', '.define', '.struct', + 'if', '.for', '.macro', '.function', '.return', '.pseudocommand', '.namespace', '.filenamespace', + '.assert', '.asserterror', + ), + /* Kick Assembler 3.13 Functions/Operators. */ + 5 => array( + 'size', 'charAt', 'substring', 'asNumber', 'asBoolean', 'toIntString', 'toBinaryString', 'toOctalString', + 'toHexString', 'lock', // String functions/operators. + 'get', 'set', 'add', 'remove', 'shuffle', // List functions. + 'put', 'keys', // Hashtable functions. + 'getType', 'getValue', 'CmdArgument', // Pseudo Commands functions. + 'asmCommandSize', // Opcode Constants functions. + 'LoadBinary', 'getSize', + 'LoadSid', 'getData', + 'LoadPicture', 'width', 'height', 'getPixel', 'getSinglecolorByte', 'getMulticolorByte', + 'createFile', 'writeln', + 'cmdLineVars', + 'getX', 'getY', 'getZ', // Vector functions. + 'RotationMatrix', 'ScaleMatrix', 'MoveMatrix', 'PerspectiveMatrix', // Matrix functions. + + ), + + /* Kick Assembler 3.13 Math Functions. */ + 6 => array( + 'abs', 'acos', 'asin', 'atan', 'atan2', 'cbrt', 'ceil', 'cos', 'cosh', + 'exp', 'expm1', 'floor', 'hypot', 'IEEEremainder', 'log', 'log10', + 'log1p', 'max', 'min', 'pow', 'mod', 'random', 'round', 'signum', + 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'toDegrees', 'toRadians', + ), + + /* Kick Assembler 3.13 Objects/Data Types. */ + 7 => array( + 'List', // List() Object. + 'Hashtable', // Hashtable() Object. + 'Vector', // Vector() Object. + 'Matrix', // Matrix() Object. + ), + + /* Kick Assembler 3.13 Constants. */ + 8 => array( + 'PI', 'E', // Math Constants. + 'AT_ABSOLUTE' , 'AT_ABSOLUTEX' , 'AT_ABSOLUTEY' , 'AT_IMMEDIATE', // Pseudo Commands Constants. + 'AT_INDIRECT' , 'AT_IZEROPAGEX' , 'AT_IZEROPAGEY' , 'AT_NONE', + 'BLACK', 'WHITE', 'RED', 'CYAN', 'PURPLE', 'GREEN', 'BLUE', // Colour Constants. + 'YELLOW', 'ORANGE', 'BROWN', 'LIGHT_RED', 'DARK_GRAY', 'GRAY', + 'LIGHT_GREEN', 'LIGHT_BLUE', 'LIGHT_GRAY', + 'C64FILE', // Template Tag names. + 'BF_C64FILE', 'BF_BITMAP_SINGLECOLOR', 'BF_KOALA' , 'BF_FLI', // Binary format constant + ), + + ), + 'SYMBOLS' => array( +// '[', ']', '(', ')', '{', '}', // These are already defined by GeSHi as BRACKETS. + '-', '+', '-', '*', '/', '>', '<', '<<', '>>', '&', '|', '^', '=', '==', + '!=', '>=', '<=', '!', '&&', '||', '#', + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => true, + 5 => true, + 6 => true, + 7 => true, + 8 => true, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #00f; font-weight:bold;', + 2 => 'color: #00f; font-weight:bold;', + 3 => 'color: #00f; font-weight:bold;', + 4 => 'color: #080; font-weight:bold;', + 5 => 'color: #80f; font-weight:bold;', + 6 => 'color: #f08; font-weight:bold;', + 7 => 'color: #a04; font-weight:bold; font-style: italic;', + 8 => 'color: #f08; font-weight:bold;', + ), + 'COMMENTS' => array( + 1 => 'color: #999; font-style: italic;', + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #009; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #000;' + ), + 'STRINGS' => array( + 0 => 'color: #080;' + ), + 'NUMBERS' => array( + GESHI_NUMBER_INT_BASIC => 'color: #f00;', + GESHI_NUMBER_HEX_PREFIX_DOLLAR => 'color: #f00;', + GESHI_NUMBER_BIN_PREFIX_PERCENT => 'color: #f00;', + GESHI_NUMBER_FLT_NONSCI => 'color: #f00;', + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #080;' + ), + 'REGEXPS' => array( + 0 => 'color: #933;', + 1 => 'color: #933;', + 2 => 'color: #933;', + 3 => 'color: #00f; font-weight:bold;', + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | + GESHI_NUMBER_FLT_NONSCI | + GESHI_NUMBER_HEX_PREFIX_DOLLAR | + GESHI_NUMBER_BIN_PREFIX_PERCENT, + // AMCE Octal format not support and gets picked up as Decimal unfortunately. + 'REGEXPS' => array( + //Labels end with a collon. + 0 => '[!]{0,1}[_a-zA-Z][_a-zA-Z0-9]*\:', + //Multi Labels (local labels) references start with ! and end with + or - for forward/backward reference. + 1 => '![_a-zA-Z][_a-zA-Z0-9]*[+-]', + //Macros start with a colon :Macro. + 2 => ':[_a-zA-Z][_a-zA-Z0-9]*', + // Opcode Constants, such as LDA_IMM, STA_IZPY are basically all 6502 opcodes + // in UPPER case followed by _underscore_ and the ADDRESS MODE. + // As you might imagine that is rather a lot ( 78 supported Opcodes * 12 Addressing modes = 936 variations) + // So I thought it better and easier to maintain as a regular expression. + // NOTE: The order of the Address Modes must be maintained or it wont work properly (eg. place ZP first and find out!) + 3 => '[A-Z]{3}[2]?_(?:IMM|IND|IZPX|IZPY|ZPX|ZPY|ABSX|ABSY|REL|ABS|ZP)', + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 8, + 'PARSER_CONTROL' => array( + 'NUMBERS' => array( + 'PRECHECK_RX' => '/[\da-fA-F\.\$\%]/' + ), + 'KEYWORDS' => array( + 5 => array ( + 'DISALLOWED_BEFORE' => "(?|^&'\"])" + ), + 6 => array ( + 'DISALLOWED_BEFORE' => "(?|^&'\"])" + ), + 8 => array ( + 'DISALLOWED_BEFORE' => "(?|^&'\"])" + ) + ) + ), +); diff --git a/includes/geshi/6502tasm.php b/includes/geshi/6502tasm.php new file mode 100644 index 0000000..4efe25e --- /dev/null +++ b/includes/geshi/6502tasm.php @@ -0,0 +1,187 @@ + 'MOS 6502 (6510) TASM/64TASS 1.46 Assembler format', + 'COMMENT_SINGLE' => array(1 => ';'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + /* 6502/6510 Opcodes. */ + 1 => array( + 'adc', 'and', 'asl', 'bcc', 'bcs', 'beq', 'bit', 'bmi', + 'bne', 'bpl', 'brk', 'bvc', 'bvs', 'clc', 'cld', 'cli', + 'clv', 'cmp', 'cpx', 'cpy', 'dec', 'dex', 'dey', 'eor', + 'inc', 'inx', 'iny', 'jmp', 'jsr', 'lda', 'ldx', 'ldy', + 'lsr', 'nop', 'ora', 'pha', 'php', 'pla', 'plp', 'rol', + 'ror', 'rti', 'rts', 'sbc', 'sec', 'sed', 'sei', 'sta', + 'stx', 'sty', 'tax', 'tay', 'tsx', 'txa', 'txs', 'tya', + ), + /* Index Registers, yes the 6502 has other registers by they are only + * accessable by specific opcodes. The 65816 also has access to the stack pointer S. */ + 2 => array( + 'x', 'y', 's' + ), + /* Directives. */ + 3 => array( + '.al', '.align', '.as', '.assert', '.binary', '.byte', '.cerror', '.char', + '.comment', '.cpu', '.cwarn', '.databank', '.dpage', '.else', '.elsif', + '.enc', '.endc', '.endif', '.endm', '.endp', '.error', '.fi', '.fill', + '.for', '.here', '.if', '.ifeq', '.ifmi', '.ifne', '.ifpl', + '.include', '.int', '.logical', '.long', '.macro', '.next', '.null', '.offs', + '.page', '.pend', '.proc', '.rept', '.rta', '.shift', '.text', '.warn', '.word', + '.xl', '.xs', +// , '*=' // Not a valid keyword (uses both * and = signs) moved to symbols instead. + ), + + /* 6502/6510 undocumented opcodes (often referred to as illegal instructions). + * These are present in the 6502/6510 but NOT in the newer CMOS revisions of the 65C02 or 65816. + * As they are undocumented instructions there are no "official" names for them, these are the names + * used by 64TASS V1.46. + */ + 4 => array( + 'ahx', 'alr', 'anc', 'ane', 'arr', 'asr', 'axs', 'dcm', + 'dcp', 'ins', 'isb', 'isc', 'jam', 'lae', 'las', 'lax', + 'lds', 'lxa', 'rla', 'rra', 'sax', 'sbx', 'sha', 'shs', + 'shx', 'shy', 'slo', 'sre', 'tas', 'xaa', + ), + /* 65c02 instructions, MOS added a few (much needed) instructions in the + * CMOS version of the 6502, but stupidly removed the undocumented/illegal opcodes. */ + 5 => array( + 'bra', 'dea', 'gra', 'ina', 'phx', 'phy', 'plx', 'ply', + 'stz', 'trb', 'tsb', + ), + /* 65816 instructions. */ + 6 => array( + 'brl', 'cop', 'jml', 'jsl', 'mvn', 'mvp', 'pea', 'pei', + 'per', 'phb', 'phd', 'phk', 'plb', 'pld', 'rep', 'rtl', + 'sep', 'stp', 'swa', 'tad', 'tcd', 'tcs', 'tda', + 'tdc', 'tsa', 'tsc', 'txy', 'tyx', 'wai', 'xba', 'xce', + ), + /* Deprecated directives (or yet to be implemented). */ + 7 => array( + '.global', '.check' + ), + ), + 'SYMBOLS' => array( +// '[', ']', '(', ')', '{', '}', // These are already defined by GeSHi as BRACKETS. + '*=', '#', '<', '>', '`', '=', '<', '>', + '!=', '>=', '<=', '+', '-', '*', '/', '//', '|', + '^', '&', '<<', '>>', '-', '~', '!', + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #00f; font-weight:bold;', + 2 => 'color: #00f; font-weight:bold;', + 3 => 'color: #080; font-weight:bold;', + 4 => 'color: #f00; font-weight:bold;', + 5 => 'color: #80f; font-weight:bold;', + 6 => 'color: #f08; font-weight:bold;', + 7 => 'color: #a04; font-weight:bold; font-style: italic;', + ), + 'COMMENTS' => array( + 1 => 'color: #999; font-style: italic;', + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #009; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #000;' + ), + 'STRINGS' => array( + 0 => 'color: #080;' + ), + 'NUMBERS' => array( + GESHI_NUMBER_INT_BASIC => 'color: #f00;', + GESHI_NUMBER_HEX_PREFIX_DOLLAR => 'color: #f00;', + GESHI_NUMBER_BIN_PREFIX_PERCENT => 'color: #f00;', + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #080;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | + GESHI_NUMBER_HEX_PREFIX_DOLLAR | + GESHI_NUMBER_BIN_PREFIX_PERCENT, + // AMCE Octal format not support and gets picked up as Decimal unfortunately. + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 8, + 'PARSER_CONTROL' => array( + 'NUMBERS' => array( + 'PRECHECK_RX' => '/[\da-fA-F\.\$\%]/' + ) + ) +); diff --git a/includes/geshi/68000devpac.php b/includes/geshi/68000devpac.php new file mode 100644 index 0000000..90aea4c --- /dev/null +++ b/includes/geshi/68000devpac.php @@ -0,0 +1,166 @@ + 'Motorola 68000 - HiSoft Devpac ST 2 Assembler format', + 'COMMENT_SINGLE' => array(1 => ';'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + /* Directives. */ + 1 => array( + 'end', 'include', 'incbin', 'opt', 'even', 'cnop', 'dc.b', 'dc.w', + 'dc.l', 'ds.b', 'ds.w', 'ds.l', 'dcb.b', 'dcb.w', 'dcb.l', + 'fail', 'output', '__g2', 'rept', 'endr', 'list', 'nolist', 'plen', + 'llen', 'ttl', 'subttl', 'spc', 'page', 'listchar', 'format', + 'equ', 'equr', 'set', 'reg', 'rs.b', 'rs.w', 'rs.l', 'rsreset', + 'rsset', '__rs', 'ifeq', 'ifne', 'ifgt', 'ifge', 'iflt', 'ifle', 'endc', + 'ifd', 'ifnd', 'ifc', 'ifnc', 'elseif', 'iif', 'macro', 'endm', 'mexit', + 'narg', '\@', 'section', 'text', 'data', 'bss', 'xdef', 'xref', 'org', + 'offset', '__lk', 'comment', + ), + /* 68000 Opcodes. */ + 2 => array( + 'abcd', 'add', 'adda', 'addi', 'addq', 'addx', 'and', 'andi', + 'asl', 'asr', 'bcc', 'bchg', 'bclr', 'bcs', 'beq', 'bge', + 'bgt', 'bhi', 'ble', 'bls', 'blt', 'bmi', 'bne', 'bpl', + 'bra', 'bset', 'bsr', 'btst', 'bvc', 'bvs', 'chk', 'clr', + 'cmp', 'cmpa', 'cmpi', 'cmpm', 'dbcc', 'dbcs', 'dbeq', 'dbf', + 'dbge', 'dbgt', 'dbhi', 'dble', 'dbls', 'dblt', 'dbmi', 'dbne', + 'dbpl', 'dbra', 'dbt', 'dbvc', 'dbvs', 'divs', 'divu', 'eor', + 'eori', 'exg', 'ext','illegal','jmp', 'jsr', 'lea', 'link', + 'lsl', 'lsr', 'move','movea','movem','movep','moveq', 'muls', + 'mulu', 'nbcd', 'neg', 'negx', 'nop', 'not', 'or', 'ori', + 'pea', 'reset', 'rol', 'ror', 'roxl', 'roxr', 'rte', 'rtr', + 'rts', 'sbcd', 'scc', 'scs', 'seq', 'sf', 'sge', 'sgt', + 'shi', 'sle', 'sls', 'slt', 'smi', 'sne', 'spl', 'st', + 'stop', 'sub', 'suba', 'subi', 'subq', 'subx', 'svc', 'svs', + 'swap', 'tas', 'trap','trapv', 'tst', 'unlk', + ), + /* oprand sizes. */ + 3 => array( + 'b', 'w', 'l' , 's' + ), + /* 68000 Registers. */ + 4 => array( + 'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7', + 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'sp', 'usp', 'ssp', + 'pc', 'ccr', 'sr', + ), + ), + 'SYMBOLS' => array( +// '[', ']', '(', ')', '{', '}', // These are already defined by GeSHi as BRACKETS. + '+', '-', '~', '<<', '>>', '&', + '!', '^', '*', '/', '=', '<', '>', + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #f08; font-weight:bold;', + 2 => 'color: #00f; font-weight:bold;', + 3 => 'color: #00f; font-weight:bold;', + 4 => 'color: #080; font-weight:bold;', + ), + 'COMMENTS' => array( + 1 => 'color: #999; font-style: italic;', + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #009; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #000;' + ), + 'STRINGS' => array( + 0 => 'color: #080;' + ), + 'NUMBERS' => array( + GESHI_NUMBER_INT_BASIC => 'color: #f00;', + GESHI_NUMBER_HEX_PREFIX_DOLLAR => 'color: #f00;', + GESHI_NUMBER_BIN_PREFIX_PERCENT => 'color: #f00;', + GESHI_NUMBER_OCT_PREFIX_AT => 'color: #f00;', + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #080;' + ), + 'REGEXPS' => array( + 0 => 'color: #933;' + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | + GESHI_NUMBER_HEX_PREFIX_DOLLAR | + GESHI_NUMBER_OCT_PREFIX_AT | + GESHI_NUMBER_BIN_PREFIX_PERCENT, + 'REGEXPS' => array( + //Labels may end in a colon. + 0 => '(?<=\A\x20|\r|\n|^)[\._a-zA-Z][\._a-zA-Z0-9]*[\:]?[\s]' + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 8, + 'PARSER_CONTROL' => array( + 'NUMBERS' => array( + 'PRECHECK_RX' => '/[\da-fA-F\.\$\%\@]/' + ) + ) +); diff --git a/includes/geshi/abap.php b/includes/geshi/abap.php new file mode 100644 index 0000000..2ff25c1 --- /dev/null +++ b/includes/geshi/abap.php @@ -0,0 +1,1407 @@ +.htm + * + * CHANGES + * ------- + * 2009/02/25 (1.0.8.3) + * - Some more rework of the language file + * 2009/01/04 (1.0.8.2) + * - Major Release, more than 1000 statements and keywords added = whole abap 7.1 (Sandra Rossi) + * 2007/06/27 (1.0.0) + * - First Release + * + * TODO + * ---- + * - in DATA data TYPE type, 2nd "data" and 2nd "type" are highlighted with data + * style, but should be ignored. Same problem for all words!!! This is quite impossible to + * solve it as we should define syntaxes of all statements (huge effort!) and use a lex + * or something like that instead of regexp I guess. + * - Some words are considered as being statement names (report, tables, etc.) though they + * are used as keyword in some statements. For example: FORM xxxx TABLES itab. It was + * arbitrary decided to define them as statement instead of keyword, because it may be + * useful to have the URL to SAP help for some of them. + * - if a comment is between 2 words of a keyword (for example SEPARATED "comment \n BY), + * it is not considered as a keyword, but it should! + * - for statements like "READ DATASET", GeSHi does not allow to set URLs because these + * statements are determined by REGEXPS. For "READ DATASET", the URL should be + * ABAPREAD_DATASET.htm. If a technical solution is found, be careful : URLs + * are sometimes not valid because the URL does not exist. For example, for "AT NEW" + * statement, the URL should be ABAPAT_ITAB.htm (not ABAPAT_NEW.htm). + * There are many other exceptions. + * Note: for adding this functionality within your php program, you can execute this code: + * function add_urls_to_multi_tokens( $matches ) { + * $url = preg_replace( "/[ \n]+/" , "_" , $matches[3] ); + * if( $url == $matches[3] ) return $matches[0] ; + * else return $matches[1]."".$matches[3]."".$matches[4]; + * } + * $html = $geshi->parse_code(); + * $html = preg_replace_callback( "£(zzz:(control|statement|data);\">)(.+?)()£s", "add_urls_to_multi_tokens", $html ); + * echo $html; + * - Numbers followed by a dot terminating the statement are not properly recognized + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array( + 'LANG_NAME' => 'ABAP', + 'COMMENT_SINGLE' => array( + 1 => '"' + ), + 'COMMENT_MULTI' => array(), + 'COMMENT_REGEXP' => array( + // lines beginning with star at 1st position are comments + // (star anywhere else is not a comment, especially be careful with + // "assign dref->* to " statement) + 2 => '/^\*.*?$/m' + ), + 'CASE_KEYWORDS' => 0, + 'QUOTEMARKS' => array( + 1 => "'", + 2 => "`" + ), + 'ESCAPE_CHAR' => '', + + 'KEYWORDS' => array( + //*********************************************** + // Section 2 : process sequences of several tokens + //*********************************************** + + 7 => array( + 'at new', + 'at end of', + 'at first', + 'at last', + 'loop at', + 'loop at screen', + ), + + 8 => array( + 'private section', + 'protected section', + 'public section', + 'at line-selection', + 'at selection-screen', + 'at user-command', + 'assign component', + 'assign table field', + 'call badi', + 'call customer-function', + 'call customer subscreen', + 'call dialog', + 'call function', + 'call method', + 'call screen', + 'call selection-screen', + 'call transaction', + 'call transformation', + 'close cursor', + 'close dataset', + 'commit work', + 'convert date', + 'convert text', + 'convert time stamp', + 'create data', + 'create object', + 'delete dataset', + 'delete from', + 'describe distance', + 'describe field', + 'describe list', + 'describe table', + 'exec sql', + 'exit from sql', + 'exit from step-loop', + 'export dynpro', + 'export nametab', + 'free memory', + 'generate subroutine-pool', + 'get badi', + 'get bit', + 'get cursor', + 'get dataset', + 'get locale', + 'get parameter', + 'get pf-status', + 'get property', + 'get reference', + 'get run time', + 'get time', + 'get time stamp', + 'import directory', + 'insert report', + 'insert text-pool', + 'leave list-processing', + 'leave program', + 'leave screen', + 'leave to list-processing', + 'leave to transaction', + 'modify line', + 'modify screen', + 'move percentage', + 'open cursor', + 'open dataset', + 'raise event', + 'raise exception', + 'read dataset', + 'read line', + 'read report', + 'read table', + 'read textpool', + 'receive results from function', + 'refresh control', + 'rollback work', + 'set bit', + 'set blank lines', + 'set country', + 'set cursor', + 'set dataset', + 'set extended check', + 'set handler', + 'set hold data', + 'set language', + 'set left scroll-boundary', + 'set locale', + 'set margin', + 'set parameter', + 'set pf-status', + 'set property', + 'set run time analyzer', + 'set run time clock', + 'set screen', + 'set titlebar', + 'set update task', + 'set user-command', + 'suppress dialog', + 'truncate dataset', + 'wait until', + 'wait up to', + ), + + 9 => array( + 'accepting duplicate keys', + 'accepting padding', + 'accepting truncation', + 'according to', + 'actual length', + 'adjacent duplicates', + 'after input', + 'all blob columns', + 'all clob columns', + 'all fields', + 'all methods', + 'all other columns', + 'and mark', + 'and return to screen', + 'and return', + 'and skip first screen', + 'and wait', + 'any table', + 'appendage type', + 'archive mode', + 'archiving parameters', + 'area handle', + 'as checkbox', + 'as icon', + 'as line', + 'as listbox', + 'as person table', + 'as search patterns', + 'as separate unit', + 'as subscreen', + 'as symbol', + 'as text', + 'as window', + 'at cursor-selection', + 'at exit-command', + 'at next application statement', + 'at position', + + 'backup into', + 'before output', + 'before unwind', + 'begin of block', + 'begin of common part', + 'begin of line', + 'begin of screen', + 'begin of tabbed block', + 'begin of version', + 'begin of', + 'big endian', + 'binary mode', + 'binary search', + 'by kernel module', + 'bypassing buffer', + + 'client specified', + 'code page', + 'code page hint', + 'code page into', + 'color black', + 'color blue', + 'color green', + 'color pink', + 'color red', + 'color yellow', + 'compression off', + 'compression on', + 'connect to', + 'corresponding fields of table', + 'corresponding fields of', + 'cover page', + 'cover text', + 'create package', + 'create private', + 'create protected', + 'create public', + 'current position', + + 'data buffer', + 'data values', + 'dataset expiration', + 'daylight saving time', + 'default key', + 'default program', + 'default screen', + 'defining database', + 'deleting leading', + 'deleting trailing', + 'directory entry', + 'display like', + 'display offset', + 'during line-selection', + 'dynamic selections', + + 'edit mask', + 'end of block', + 'end of common part', + 'end of file', + 'end of line', + 'end of screen', + 'end of tabbed block', + 'end of version', + 'end of', + 'endian into', + 'ending at', + 'enhancement options into', + 'enhancement into', + 'environment time format', + 'execute procedure', + 'exporting list to memory', + 'extension type', + + 'field format', + 'field selection', + 'field value into', + 'final methods', + 'first occurrence of', + 'fixed-point arithmetic', + 'for all entries', + 'for all instances', + 'for appending', + 'for columns', + 'for event of', + 'for field', + 'for high', + 'for input', + 'for lines', + 'for low', + 'for node', + 'for output', + 'for select', + 'for table', + 'for testing', + 'for update', + 'for user', + 'frame entry', + 'frame program from', + 'from code page', + 'from context', + 'from database', + 'from logfile id', + 'from number format', + 'from screen', + 'from table', + 'function key', + + 'get connection', + 'global friends', + 'group by', + + 'hashed table of', + 'hashed table', + + 'if found', + 'ignoring case', + 'ignoring conversion errors', + 'ignoring structure boundaries', + 'implementations from', + 'in background', + 'in background task', + 'in background unit', + 'in binary mode', + 'in byte mode', + 'in char-to-hex mode', + 'in character mode', + 'in group', + 'in legacy binary mode', + 'in legacy text mode', + 'in program', + 'in remote task', + 'in text mode', + 'in table', + 'in update task', + 'include bound', + 'include into', + 'include program from', + 'include structure', + 'include type', + 'including gaps', + 'index table', + 'inheriting from', + 'init destination', + 'initial line of', + 'initial line', + 'initial size', + 'internal table', + 'into sortable code', + + 'keep in spool', + 'keeping directory entry', + 'keeping logical unit of work', + 'keeping task', + 'keywords from', + + 'left margin', + 'left outer', + 'levels into', + 'line format', + 'line into', + 'line of', + 'line page', + 'line value from', + 'line value into', + 'lines of', + 'list authority', + 'list dataset', + 'list name', + 'little endian', + 'lob handle for', + 'local friends', + 'locator for', + 'lower case', + + 'main table field', + 'match count', + 'match length', + 'match line', + 'match offset', + 'matchcode object', + 'maximum length', + 'maximum width into', + 'memory id', + 'message into', + 'messages into', + 'modif id', + + 'nesting level', + 'new list identification', + 'next cursor', + 'no database selection', + 'no dialog', + 'no end of line', + 'no fields', + 'no flush', + 'no intervals', + 'no intervals off', + 'no standard page heading', + 'no-extension off', + 'non-unique key', + 'non-unique sorted key', + 'not at end of mode', + 'number of lines', + 'number of pages', + + 'object key', + 'obligatory off', + 'of current page', + 'of page', + 'of program', + 'offset into', + 'on block', + 'on commit', + 'on end of task', + 'on end of', + 'on exit-command', + 'on help-request for', + 'on radiobutton group', + 'on rollback', + 'on value-request for', + 'open for package', + 'option class-coding', + 'option class', + 'option coding', + 'option expand', + 'option syncpoints', + 'options from', + 'order by', + 'overflow into', + + 'package section', + 'package size', + 'preferred parameter', + 'preserving identifier escaping', + 'primary key', + 'print off', + 'print on', + 'program from', + 'program type', + + 'radiobutton groups', + 'radiobutton group', + 'range of', + 'reader for', + 'receive buffer', + 'reduced functionality', + 'ref to data', + 'ref to object', + 'ref to', + + 'reference into', + 'renaming with suffix', + 'replacement character', + 'replacement count', + 'replacement length', + 'replacement line', + 'replacement offset', + 'respecting blanks', + 'respecting case', + 'result into', + 'risk level', + + 'sap cover page', + 'search fkeq', + 'search fkge', + 'search gkeq', + 'search gkge', + 'section of', + 'send buffer', + 'separated by', + 'shared buffer', + 'shared memory', + 'shared memory enabled', + 'skipping byte-order mark', + 'sorted by', + 'sorted table of', + 'sorted table', + 'spool parameters', + 'standard table of', + 'standard table', + 'starting at', + 'starting new task', + 'statements into', + 'structure default', + 'structures into', + + 'table field', + 'table of', + 'text mode', + 'time stamp', + 'time zone', + 'to code page', + 'to column', + 'to context', + 'to first page', + 'to last page', + 'to last line', + 'to line', + 'to lower case', + 'to number format', + 'to page', + 'to sap spool', + 'to upper case', + 'tokens into', + 'transporting no fields', + 'type tableview', + 'type tabstrip', + + 'unicode enabling', + 'up to', + 'upper case', + 'using edit mask', + 'using key', + 'using no edit mask', + 'using screen', + 'using selection-screen', + 'using selection-set', + 'using selection-sets of program', + + 'valid between', + 'valid from', + 'value check', + 'via job', + 'via selection-screen', + 'visible length', + + 'whenever found', + 'with analysis', + 'with byte-order mark', + 'with comments', + 'with current switchstates', + 'with explicit enhancements', + 'with frame', + 'with free selections', + 'with further secondary keys', + 'with header line', + 'with hold', + 'with implicit enhancements', + 'with inactive enhancements', + 'with includes', + 'with key', + 'with linefeed', + 'with list tokenization', + 'with native linefeed', + 'with non-unique key', + 'with null', + 'with pragmas', + 'with precompiled headers', + 'with selection-table', + 'with smart linefeed', + 'with table key', + 'with test code', + 'with type-pools', + 'with unique key', + 'with unix linefeed', + 'with windows linefeed', + 'without further secondary keys', + 'without selection-screen', + 'without spool dynpro', + 'without trmac', + 'word into', + 'writer for' + ), + + //********************************************************** + // Other abap statements + //********************************************************** + 3 => array( + 'add', + 'add-corresponding', + 'aliases', + 'append', + 'assign', + 'at', + 'authority-check', + + 'break-point', + + 'clear', + 'collect', + 'compute', + 'concatenate', + 'condense', + 'class', + 'class-events', + 'class-methods', + 'class-pool', + + 'define', + 'delete', + 'demand', + 'detail', + 'divide', + 'divide-corresponding', + + 'editor-call', + 'end-of-file', + 'end-enhancement-section', + 'end-of-definition', + 'end-of-page', + 'end-of-selection', + 'endclass', + 'endenhancement', + 'endexec', + 'endform', + 'endfunction', + 'endinterface', + 'endmethod', + 'endmodule', + 'endon', + 'endprovide', + 'endselect', + 'enhancement', + 'enhancement-point', + 'enhancement-section', + 'export', + 'extract', + 'events', + + 'fetch', + 'field-groups', + 'find', + 'format', + 'form', + 'free', + 'function-pool', + 'function', + + 'get', + + 'hide', + + 'import', + 'infotypes', + 'input', + 'insert', + 'include', + 'initialization', + 'interface', + 'interface-pool', + 'interfaces', + + 'leave', + 'load-of-program', + 'log-point', + + 'maximum', + 'message', + 'methods', + 'method', + 'minimum', + 'modify', + 'move', + 'move-corresponding', + 'multiply', + 'multiply-corresponding', + + 'new-line', + 'new-page', + 'new-section', + + 'overlay', + + 'pack', + 'perform', + 'position', + 'print-control', + 'program', + 'provide', + 'put', + + 'raise', + 'refresh', + 'reject', + 'replace', + 'report', + 'reserve', + + 'scroll', + 'search', + 'select', + 'selection-screen', + 'shift', + 'skip', + 'sort', + 'split', + 'start-of-selection', + 'submit', + 'subtract', + 'subtract-corresponding', + 'sum', + 'summary', + 'summing', + 'supply', + 'syntax-check', + + 'top-of-page', + 'transfer', + 'translate', + 'type-pool', + + 'uline', + 'unpack', + 'update', + + 'window', + 'write' + + ), + + //********************************************************** + // keywords + //********************************************************** + + 4 => array( + 'abbreviated', + 'abstract', + 'accept', + 'acos', + 'activation', + 'alias', + 'align', + 'all', + 'allocate', + 'and', + 'assigned', + 'any', + 'appending', + 'area', + 'as', + 'ascending', + 'asin', + 'assigning', + 'atan', + 'attributes', + 'avg', + + 'backward', + 'between', + 'bit-and', + 'bit-not', + 'bit-or', + 'bit-set', + 'bit-xor', + 'boolc', + 'boolx', + 'bound', + 'bt', + 'blocks', + 'bounds', + 'boxed', + 'by', + 'byte-ca', + 'byte-cn', + 'byte-co', + 'byte-cs', + 'byte-na', + 'byte-ns', + + 'ca', + 'calling', + 'casting', + 'ceil', + 'center', + 'centered', + 'changing', + 'char_off', + 'charlen', + 'circular', + 'class_constructor', + 'client', + 'clike', + 'close', + 'cmax', + 'cmin', + 'cn', + 'cnt', + 'co', + 'col_background', + 'col_group', + 'col_heading', + 'col_key', + 'col_negative', + 'col_normal', + 'col_positive', + 'col_total', + 'color', + 'column', + 'comment', + 'comparing', + 'components', + 'condition', + 'context', + 'copies', + 'count', + 'country', + 'cpi', + 'creating', + 'critical', + 'concat_lines_of', + 'cos', + 'cosh', + 'count_any_not_of', + 'count_any_of', + 'cp', + 'cs', + 'csequence', + 'currency', + 'current', + 'cx_static_check', + 'cx_root', + 'cx_dynamic_check', + + 'dangerous', + 'database', + 'datainfo', + 'date', + 'dbmaxlen', + 'dd/mm/yy', + 'dd/mm/yyyy', + 'ddmmyy', + 'deallocate', + 'decfloat', + 'decfloat16', + 'decfloat34', + 'decimals', + 'default', + 'deferred', + 'definition', + 'department', + 'descending', + 'destination', + 'disconnect', + 'display-mode', + 'distance', + 'distinct', + 'div', + 'dummy', + + 'encoding', + 'end-lines', + 'engineering', + 'environment', + 'eq', + 'equiv', + 'error_message', + 'errormessage', + 'escape', + 'exact', + 'exception-table', + 'exceptions', + 'exclude', + 'excluding', + 'exists', + 'exp', + 'exponent', + 'exporting', + 'extended_monetary', + + 'field', + 'filter-table', + 'filters', + 'filter', + 'final', + 'find_any_not_of', + 'find_any_of', + 'find_end', + 'floor', + 'first-line', + 'font', + 'forward', + 'for', + 'frac', + 'from_mixed', + 'friends', + 'from', + + 'giving', + 'ge', + 'gt', + + 'handle', + 'harmless', + 'having', + 'head-lines', + 'help-id', + 'help-request', + 'high', + 'hold', + 'hotspot', + + 'id', + 'ids', + 'immediately', + 'implementation', + 'importing', + 'in', + 'initial', + 'incl', + 'including', + 'increment', + 'index', + 'index-line', + 'inner', + 'inout', + 'intensified', + 'into', + 'inverse', + 'is', + 'iso', + + 'join', + + 'key', + 'kind', + + 'log10', + 'language', + 'late', + 'layout', + 'le', + 'lt', + 'left-justified', + 'leftplus', + 'leftspace', + 'left', + 'length', + 'level', + 'like', + 'line-count', + 'line-size', + 'lines', + 'line', + 'load', + 'long', + 'lower', + 'low', + 'lpi', + + 'matches', + 'match', + 'mail', + 'major-id', + 'max', + 'medium', + 'memory', + 'message-id', + 'module', + 'minor-id', + 'min', + 'mm/dd/yyyy', + 'mm/dd/yy', + 'mmddyy', + 'mode', + 'modifier', + 'mod', + 'monetary', + + 'name', + 'nb', + 'ne', + 'next', + 'no-display', + 'no-extension', + 'no-gap', + 'no-gaps', + 'no-grouping', + 'no-heading', + 'no-scrolling', + 'no-sign', + 'no-title', + 'no-topofpage', + 'no-zero', + 'nodes', + 'non-unicode', + 'no', + 'number', + 'nmax', + 'nmin', + 'not', + 'null', + 'numeric', + 'numofchar', + + 'o', + 'objects', + 'obligatory', + 'occurs', + 'offset', + 'off', + 'of', + 'only', + 'open', + 'option', + 'optional', + 'options', + 'output-length', + 'output', + 'out', + 'on change of', + 'or', + 'others', + + 'pad', + 'page', + 'pages', + 'parameter-table', + 'part', + 'performing', + 'pos_high', + 'pos_low', + 'priority', + 'public', + 'pushbutton', + + 'queue-only', + 'quickinfo', + + 'raising', + 'range', + 'read-only', + 'received', + 'receiver', + 'receiving', + 'redefinition', + 'reference', + 'regex', + 'replacing', + 'reset', + 'responsible', + 'result', + 'results', + 'resumable', + 'returncode', + 'returning', + 'right', + 'right-specified', + 'rightplus', + 'rightspace', + 'round', + 'rows', + 'repeat', + 'requested', + 'rescale', + 'reverse', + + 'scale_preserving', + 'scale_preserving_scientific', + 'scientific', + 'scientific_with_leading_zero', + 'screen', + 'scrolling', + 'seconds', + 'segment', + 'shift_left', + 'shift_right', + 'sign', + 'simple', + 'sin', + 'sinh', + 'short', + 'shortdump-id', + 'sign_as_postfix', + 'single', + 'size', + 'some', + 'source', + 'space', + 'spots', + 'stable', + 'state', + 'static', + 'statusinfo', + 'sqrt', + 'string', + 'strlen', + 'structure', + 'style', + 'subkey', + 'submatches', + 'substring', + 'substring_after', + 'substring_before', + 'substring_from', + 'substring_to', + 'super', + 'supplied', + 'switch', + + 'tan', + 'tanh', + 'table_line', + 'table', + 'tab', + 'then', + 'timestamp', + 'times', + 'time', + 'timezone', + 'title-lines', + 'title', + 'top-lines', + 'to', + 'to_lower', + 'to_mixed', + 'to_upper', + 'trace-file', + 'trace-table', + 'transporting', + 'trunc', + 'type', + + 'under', + 'unique', + 'unit', + 'user-command', + 'using', + 'utf-8', + + 'valid', + 'value', + 'value-request', + 'values', + 'vary', + 'varying', + 'version', + + 'warning', + 'where', + 'width', + 'with', + 'word', + 'with-heading', + 'with-title', + + 'xsequence', + 'xstring', + 'xstrlen', + + 'yes', + 'yymmdd', + + 'z', + 'zero' + + ), + + //********************************************************** + // screen statements + //********************************************************** + + 5 => array( + 'call subscreen', + 'chain', + 'endchain', + 'on chain-input', + 'on chain-request', + 'on help-request', + 'on input', + 'on request', + 'on value-request', + 'process' + ), + + //********************************************************** + // internal statements + //********************************************************** + + 6 => array( + 'generate dynpro', + 'generate report', + 'import dynpro', + 'import nametab', + 'include methods', + 'load report', + 'scan abap-source', + 'scan and check abap-source', + 'syntax-check for dynpro', + 'syntax-check for program', + 'syntax-trace', + 'system-call', + 'system-exit', + 'verification-message' + ), + + //********************************************************** + // Control statements + //********************************************************** + + 1 => array( + 'assert', + 'case', + 'catch', + 'check', + 'cleanup', + 'continue', + 'do', + 'else', + 'elseif', + 'endat', + 'endcase', + 'endcatch', + 'endif', + 'enddo', + 'endloop', + 'endtry', + 'endwhile', + 'exit', + 'if', + 'loop', + 'resume', + 'retry', + 'return', + 'stop', + 'try', + 'when', + 'while' + + ), + + //********************************************************** + // variable declaration statements + //********************************************************** + + 2 => array( + 'class-data', + 'controls', + 'constants', + 'data', + 'field-symbols', + 'fields', + 'local', + 'parameters', + 'ranges', + 'select-options', + 'statics', + 'tables', + 'type-pools', + 'types' + ) + ), + 'SYMBOLS' => array( + 0 => array( + '->*', '->', '=>', + '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '!', '%', '^', '&', ':', ',', '.' + ), + 1 => array( + '>=', '<=', '<', '>', '=' + ), + 2 => array( + '?=' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000066; font-weight: bold; zzz:control;', //control statements + 2 => 'color: #cc4050; font-weight: bold; zzz:data;', //data statements + 3 => 'color: #005066; font-weight: bold; zzz:statement;', //first token of other statements + 4 => 'color: #500066; font-weight: bold; zzz:keyword;', // next tokens of other statements ("keywords") + 5 => 'color: #005066; font-weight: bold; zzz:statement;', + 6 => 'color: #000066; font-weight: bold; zzz:control;', + 7 => 'color: #000066; font-weight: bold; zzz:control;', + 8 => 'color: #005066; font-weight: bold; zzz:statement;', + 9 => 'color: #500066; font-weight: bold; zzz:keyword;' + ), + 'COMMENTS' => array( + 1 => 'color: #808080; font-style: italic;', + 2 => 'color: #339933;', + 'MULTI' => 'color: #808080; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #808080;' + ), + 'STRINGS' => array( + 0 => 'color: #4da619;' + ), + 'NUMBERS' => array( + 0 => 'color: #3399ff;' + ), + 'METHODS' => array( + 1 => 'color: #202020;', + 2 => 'color: #202020;' + ), + 'SYMBOLS' => array( + 0 => 'color: #808080;', + 1 => 'color: #800080;', + 2 => 'color: #0000ff;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => 'http://help.sap.com/abapdocu_740/en/ABAP{FNAMEU}.htm', + 2 => 'http://help.sap.com/abapdocu_740/en/ABAP{FNAMEU}.htm', + 3 => 'http://help.sap.com/abapdocu_740/en/ABAP{FNAMEU}.htm', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '->', + 2 => '=>' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 7 => array( + 'SPACE_AS_WHITESPACE' => true + ), + 8 => array( + 'SPACE_AS_WHITESPACE' => true + ), + 9 => array( + 'SPACE_AS_WHITESPACE' => true + ) + ) + ), + 'TAB_WIDTH' => 4 +); diff --git a/includes/geshi/actionscript.php b/includes/geshi/actionscript.php new file mode 100644 index 0000000..e8521f2 --- /dev/null +++ b/includes/geshi/actionscript.php @@ -0,0 +1,195 @@ + 'ActionScript', + 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + '#include', 'for', 'foreach', 'each', 'if', 'elseif', 'else', 'while', 'do', 'dowhile', + 'endwhile', 'endif', 'switch', 'case', 'endswitch', 'return', 'break', 'continue', 'in' + ), + 2 => array( + 'null', 'false', 'true', 'var', + 'default', 'function', 'class', + 'new', '_global' + ), + 3 => array( + '#endinitclip', '#initclip', '__proto__', '_accProps', '_alpha', '_currentframe', + '_droptarget', '_focusrect', '_framesloaded', '_height', '_highquality', '_lockroot', + '_name', '_parent', '_quality', '_root', '_rotation', '_soundbuftime', '_target', '_totalframes', + '_url', '_visible', '_width', '_x', '_xmouse', '_xscale', '_y', '_ymouse', '_yscale', 'abs', + 'Accessibility', 'acos', 'activityLevel', 'add', 'addListener', 'addPage', 'addProperty', + 'addRequestHeader', 'align', 'allowDomain', 'allowInsecureDomain', 'and', 'appendChild', + 'apply', 'Arguments', 'Array', 'asfunction', 'asin', 'atan', 'atan2', 'attachAudio', 'attachMovie', + 'attachSound', 'attachVideo', 'attributes', 'autosize', 'avHardwareDisable', 'background', + 'backgroundColor', 'BACKSPACE', 'bandwidth', 'beginFill', 'beginGradientFill', 'blockIndent', + 'bold', 'Boolean', 'border', 'borderColor', 'bottomScroll', 'bufferLength', 'bufferTime', + 'builtInItems', 'bullet', 'Button', 'bytesLoaded', 'bytesTotal', 'call', 'callee', 'caller', + 'Camera', 'capabilities', 'CAPSLOCK', 'caption', 'catch', 'ceil', 'charAt', 'charCodeAt', + 'childNodes', 'chr', 'clear', 'clearInterval', 'cloneNode', 'close', 'Color', 'concat', + 'connect', 'condenseWhite', 'constructor', 'contentType', 'ContextMenu', 'ContextMenuItem', + 'CONTROL', 'copy', 'cos', 'createElement', 'createEmptyMovieClip', 'createTextField', + 'createTextNode', 'currentFps', 'curveTo', 'CustomActions', 'customItems', 'data', 'Date', + 'deblocking', 'delete', 'DELETEKEY', 'docTypeDecl', 'domain', 'DOWN', + 'duplicateMovieClip', 'duration', 'dynamic', 'E', 'embedFonts', 'enabled', + 'END', 'endFill', 'ENTER', 'eq', 'Error', 'ESCAPE(Konstante)', 'escape(Funktion)', 'eval', + 'exactSettings', 'exp', 'extends', 'finally', 'findText', 'firstChild', 'floor', + 'flush', 'focusEnabled', 'font', 'fps', 'fromCharCode', 'fscommand', + 'gain', 'ge', 'get', 'getAscii', 'getBeginIndex', 'getBounds', 'getBytesLoaded', 'getBytesTotal', + 'getCaretIndex', 'getCode', 'getCount', 'getDate', 'getDay', 'getDepth', 'getEndIndex', 'getFocus', + 'getFontList', 'getFullYear', 'getHours', 'getInstanceAtDepth', 'getLocal', 'getMilliseconds', + 'getMinutes', 'getMonth', 'getNewTextFormat', 'getNextHighestDepth', 'getPan', 'getProgress', + 'getProperty', 'getRGB', 'getSeconds', 'getSelected', 'getSelectedText', 'getSize', 'getStyle', + 'getStyleNames', 'getSWFVersion', 'getText', 'getTextExtent', 'getTextFormat', 'getTextSnapshot', + 'getTime', 'getTimer', 'getTimezoneOffset', 'getTransform', 'getURL', 'getUTCDate', 'getUTCDay', + 'getUTCFullYear', 'getUTCHours', 'getUTCMilliseconds', 'getUTCMinutes', 'getUTCMonth', 'getUTCSeconds', + 'getVersion', 'getVolume', 'getYear', 'globalToLocal', 'goto', 'gotoAndPlay', 'gotoAndStop', + 'hasAccessibility', 'hasAudio', 'hasAudioEncoder', 'hasChildNodes', 'hasEmbeddedVideo', 'hasMP3', + 'hasPrinting', 'hasScreenBroadcast', 'hasScreenPlayback', 'hasStreamingAudio', 'hasStreamingVideo', + 'hasVideoEncoder', 'height', 'hide', 'hideBuiltInItems', 'hitArea', 'hitTest', 'hitTestTextNearPos', + 'HOME', 'hscroll', 'html', 'htmlText', 'ID3', 'ifFrameLoaded', 'ignoreWhite', 'implements', + 'import', 'indent', 'index', 'indexOf', 'Infinity', '-Infinity', 'INSERT', 'insertBefore', 'install', + 'instanceof', 'int', 'interface', 'isActive', 'isDebugger', 'isDown', 'isFinite', 'isNaN', 'isToggled', + 'italic', 'join', 'Key', 'language', 'lastChild', 'lastIndexOf', 'le', 'leading', 'LEFT', 'leftMargin', + 'length', 'level', 'lineStyle', 'lineTo', 'list', 'LN10', 'LN2', 'load', 'loadClip', 'loaded', 'loadMovie', + 'loadMovieNum', 'loadSound', 'loadVariables', 'loadVariablesNum', 'LoadVars', 'LocalConnection', + 'localFileReadDisable', 'localToGlobal', 'log', 'LOG10E', 'LOG2E', 'manufacturer', 'Math', 'max', + 'MAX_VALUE', 'maxChars', 'maxhscroll', 'maxscroll', 'mbchr', 'mblength', 'mbord', 'mbsubstring', 'menu', + 'message', 'Microphone', 'min', 'MIN_VALUE', 'MMExecute', 'motionLevel', 'motionTimeOut', 'Mouse', + 'mouseWheelEnabled', 'moveTo', 'Movieclip', 'MovieClipLoader', 'multiline', 'muted', 'name', 'names', 'NaN', + 'ne', 'NEGATIVE_INFINITY', 'NetConnection', 'NetStream', 'newline', 'nextFrame', + 'nextScene', 'nextSibling', 'nodeName', 'nodeType', 'nodeValue', 'not', 'Number', 'Object', + 'on', 'onActivity', 'onChanged', 'onClipEvent', 'onClose', 'onConnect', 'onData', 'onDragOut', + 'onDragOver', 'onEnterFrame', 'onID3', 'onKeyDown', 'onKeyUp', 'onKillFocus', 'onLoad', 'onLoadComplete', + 'onLoadError', 'onLoadInit', 'onLoadProgress', 'onLoadStart', 'onMouseDown', 'onMouseMove', 'onMouseUp', + 'onMouseWheel', 'onPress', 'onRelease', 'onReleaseOutside', 'onResize', 'onRollOut', 'onRollOver', + 'onScroller', 'onSelect', 'onSetFocus', 'onSoundComplete', 'onStatus', 'onUnload', 'onUpdate', 'onXML', + 'or(logischesOR)', 'ord', 'os', 'parentNode', 'parseCSS', 'parseFloat', 'parseInt', 'parseXML', 'password', + 'pause', 'PGDN', 'PGUP', 'PI', 'pixelAspectRatio', 'play', 'playerType', 'pop', 'position', + 'POSITIVE_INFINITY', 'pow', 'prevFrame', 'previousSibling', 'prevScene', 'print', 'printAsBitmap', + 'printAsBitmapNum', 'PrintJob', 'printNum', 'private', 'prototype', 'public', 'push', 'quality', + 'random', 'rate', 'registerClass', 'removeListener', 'removeMovieClip', 'removeNode', 'removeTextField', + 'replaceSel', 'replaceText', 'resolutionX', 'resolutionY', 'restrict', 'reverse', 'RIGHT', + 'rightMargin', 'round', 'scaleMode', 'screenColor', 'screenDPI', 'screenResolutionX', 'screenResolutionY', + 'scroll', 'seek', 'selectable', 'Selection', 'send', 'sendAndLoad', 'separatorBefore', 'serverString', + 'set', 'setvariable', 'setBufferTime', 'setClipboard', 'setDate', 'setFocus', 'setFullYear', 'setGain', + 'setHours', 'setInterval', 'setMask', 'setMilliseconds', 'setMinutes', 'setMode', 'setMonth', + 'setMotionLevel', 'setNewTextFormat', 'setPan', 'setProperty', 'setQuality', 'setRate', 'setRGB', + 'setSeconds', 'setSelectColor', 'setSelected', 'setSelection', 'setSilenceLevel', 'setStyle', + 'setTextFormat', 'setTime', 'setTransform', 'setUseEchoSuppression', 'setUTCDate', 'setUTCFullYear', + 'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds', 'setVolume', + 'setYear', 'SharedObject', 'SHIFT(Konstante)', 'shift(Methode)', 'show', 'showMenu', 'showSettings', + 'silenceLevel', 'silenceTimeout', 'sin', 'size', 'slice', 'smoothing', 'sort', 'sortOn', 'Sound', 'SPACE', + 'splice', 'split', 'sqrt', 'SQRT1_2', 'SQRT2', 'Stage', 'start', 'startDrag', 'static', 'status', 'stop', + 'stopAllSounds', 'stopDrag', 'String', 'StyleSheet(Klasse)', 'styleSheet(Eigenschaft)', 'substr', + 'substring', 'super', 'swapDepths', 'System', 'TAB', 'tabChildren', 'tabEnabled', 'tabIndex', + 'tabStops', 'tan', 'target', 'targetPath', 'tellTarget', 'text', 'textColor', 'TextField', 'TextFormat', + 'textHeight', 'TextSnapshot', 'textWidth', 'this', 'throw', 'time', 'toggleHighQuality', 'toLowerCase', + 'toString', 'toUpperCase', 'trace', 'trackAsMenu', 'try', 'type', 'typeof', 'undefined', + 'underline', 'unescape', 'uninstall', 'unloadClip', 'unloadMovie', 'unLoadMovieNum', 'unshift', 'unwatch', + 'UP', 'updateAfterEvent', 'updateProperties', 'url', 'useCodePage', 'useEchoSuppression', 'useHandCursor', + 'UTC', 'valueOf', 'variable', 'version', 'Video', 'visible', 'void', 'watch', 'width', + 'with', 'wordwrap', 'XML', 'xmlDecl', 'XMLNode', 'XMLSocket' + ) + ), + 'SYMBOLS' => array( + '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #b1b100;', + 2 => 'color: #000000; font-weight: bold;', + 3 => 'color: #0066CC;' + ), + 'COMMENTS' => array( + 1 => 'color: #808080; font-style: italic;', + 2 => 'color: #808080; font-style: italic;', + 'MULTI' => 'color: #808080; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #66cc66;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;' + ), + 'METHODS' => array( + 1 => 'color: #006600;' + ), + 'SYMBOLS' => array( + 0 => 'color: #66cc66;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array() +); diff --git a/includes/geshi/actionscript3.php b/includes/geshi/actionscript3.php new file mode 100644 index 0000000..f8425f1 --- /dev/null +++ b/includes/geshi/actionscript3.php @@ -0,0 +1,471 @@ + 'ActionScript 3', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'COMMENT_REGEXP' => array( + //Regular expressions + 2 => "/(?<=[\\s^])(s|tr|y)\\/(?!\s)(?:\\\\.|(?!\n)[^\\/\\\\])+(? GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + 'with', 'while', 'void', 'undefined', 'typeof', 'try', 'true', + 'throw', 'this', 'switch', 'super', 'set', 'return', 'public', 'protected', + 'private', 'null', 'new', 'is', 'internal', 'instanceof', 'in', + 'import', 'if', 'get', 'for', 'false', 'else', 'each', 'do', + 'delete', 'default', 'continue', 'catch', 'case', 'break', 'as', + 'extends', 'override' + ), + 2 => array( + 'var' + ), + 3 => array( + 'function' + ), + 4 => array( + 'class', 'package' + ), + 6 => array( + 'flash.xml', 'flash.utils', 'flash.ui', 'flash.text', + 'flash.system', 'flash.profiler', 'flash.printing', 'flash.net', + 'flash.media', 'flash.geom', 'flash.filters', 'flash.external', + 'flash.events', 'flash.errors', 'flash.display', + 'flash.accessibility' + ), + 7 => array( + 'zoom', 'year', 'y', 'xmlDecl', 'x', 'writeUnsignedInt', + 'writeUTFBytes', 'writeUTF', 'writeShort', 'writeObject', + 'writeMultiByte', 'writeInt', 'writeFloat', 'writeExternal', + 'writeDynamicProperty', 'writeDynamicProperties', 'writeDouble', + 'writeBytes', 'writeByte', 'writeBoolean', 'wordWrap', + 'willTrigger', 'width', 'volume', 'visible', 'videoWidth', + 'videoHeight', 'version', 'valueOf', 'value', 'usingTLS', + 'useRichTextClipboard', 'useHandCursor', 'useEchoSuppression', + 'useCodePage', 'url', 'uri', 'uploadCompleteData', 'upload', + 'updateProperties', 'updateAfterEvent', 'upState', 'unshift', + 'unlock', 'unload', 'union', 'unescapeMultiByte', 'unescape', + 'underline', 'uncompress', 'type', 'ty', 'tx', 'transparent', + 'translate', 'transformPoint', 'transform', 'trackAsMenu', 'track', + 'trace', 'totalMemory', 'totalFrames', 'topLeft', 'top', + 'togglePause', 'toXMLString', 'toUpperCase', 'toUTCString', + 'toTimeString', 'toString', 'toPrecision', 'toLowerCase', + 'toLocaleUpperCase', 'toLocaleTimeString', 'toLocaleString', + 'toLocaleLowerCase', 'toLocaleDateString', 'toFixed', + 'toExponential', 'toDateString', 'timezoneOffset', 'timerComplete', + 'timer', 'time', 'threshold', 'thickness', 'textWidth', + 'textSnapshot', 'textInput', 'textHeight', 'textColor', 'text', + 'test', 'target', 'tan', 'tabStops', 'tabIndexChange', 'tabIndex', + 'tabEnabledChange', 'tabEnabled', 'tabChildrenChange', + 'tabChildren', 'sync', 'swfVersion', 'swapChildrenAt', + 'swapChildren', 'subtract', 'substring', 'substr', 'styleSheet', + 'styleNames', 'strength', 'stopPropagation', + 'stopImmediatePropagation', 'stopDrag', 'stopAll', 'stop', 'status', + 'startDrag', 'start', 'stageY', 'stageX', 'stageWidth', + 'stageHeight', 'stageFocusRect', 'stage', 'sqrt', 'split', 'splice', + 'source', 'soundTransform', 'soundComplete', 'sortOn', 'sort', + 'songName', 'some', 'socketData', 'smoothing', 'slice', 'size', + 'sin', 'silent', 'silenceTimeout', 'silenceLevel', 'showSettings', + 'showRedrawRegions', 'showDefaultContextMenu', 'show', 'shortcut', + 'shiftKey', 'shift', 'sharpness', 'sharedEvents', 'shadowColor', + 'shadowAlpha', 'settings', 'setUseEchoSuppression', 'setUTCSeconds', + 'setUTCMonth', 'setUTCMinutes', 'setUTCMilliseconds', 'setUTCHours', + 'setUTCFullYear', 'setUTCDate', 'setTimeout', 'setTime', + 'setTextFormat', 'setStyle', 'setSilenceLevel', 'setSettings', + 'setSelection', 'setSelected', 'setSelectColor', 'setSeconds', + 'setQuality', 'setPropertyIsEnumerable', 'setProperty', 'setPixels', + 'setPixel32', 'setPixel', 'setNamespace', 'setName', + 'setMotionLevel', 'setMonth', 'setMode', 'setMinutes', + 'setMilliseconds', 'setLoopback', 'setLoopBack', 'setLocalName', + 'setKeyFrameInterval', 'setInterval', 'setHours', 'setFullYear', + 'setEmpty', 'setDirty', 'setDate', 'setCompositionString', + 'setClipboard', 'setChildren', 'setChildIndex', + 'setAdvancedAntiAliasingTable', 'serverString', 'separatorBefore', + 'sendToURL', 'send', 'selectionEndIndex', 'selectionBeginIndex', + 'selectable', 'select', 'seek', 'securityError', 'securityDomain', + 'secondsUTC', 'seconds', 'search', 'scrollV', 'scrollRect', + 'scrollH', 'scroll', 'screenResolutionY', 'screenResolutionX', + 'screenDPI', 'screenColor', 'scenes', 'scaleY', 'scaleX', + 'scaleMode', 'scale9Grid', 'scale', 'save', 'sandboxType', + 'sameDomain', 'running', 'round', 'rotation', 'rotate', 'root', + 'rollOver', 'rollOut', 'rightToRight', 'rightToLeft', 'rightPeak', + 'rightMargin', 'right', 'rewind', 'reverse', 'resume', 'restrict', + 'resize', 'reset', 'requestHeaders', 'replaceText', + 'replaceSelectedText', 'replace', 'repeatCount', 'render', + 'removedFromStage', 'removed', 'removeNode', 'removeNamespace', + 'removeEventListener', 'removeChildAt', 'removeChild', + 'relatedObject', 'registerFont', 'registerClassAlias', 'redOffset', + 'redMultiplier', 'rect', 'receiveVideo', 'receiveAudio', + 'readUnsignedShort', 'readUnsignedInt', 'readUnsignedByte', + 'readUTFBytes', 'readUTF', 'readShort', 'readObject', + 'readMultiByte', 'readInt', 'readFloat', 'readExternal', + 'readDouble', 'readBytes', 'readByte', 'readBoolean', 'ratios', + 'rate', 'random', 'quality', 'push', 'publish', 'proxyType', + 'prototype', 'propertyIsEnumerable', 'progress', + 'processingInstructions', 'printAsBitmap', 'print', + 'previousSibling', 'preventDefault', 'prevScene', 'prevFrame', + 'prettyPrinting', 'prettyIndent', 'preserveAlpha', 'prependChild', + 'prefix', 'pow', 'position', 'pop', 'polar', 'playerType', 'play', + 'pixelSnapping', 'pixelDissolve', 'pixelBounds', 'pixelAspectRatio', + 'perlinNoise', 'pause', 'parseXML', 'parseInt', 'parseFloat', + 'parseCSS', 'parse', 'parentNode', 'parentDomain', + 'parentAllowsChild', 'parent', 'parameters', 'paperWidth', + 'paperHeight', 'pan', 'paletteMap', 'pageWidth', 'pageHeight', + 'overState', 'outsideCutoff', 'os', 'orientation', 'open', + 'opaqueBackground', 'onPlayStatus', 'onMetaData', 'onCuePoint', + 'offsetPoint', 'offset', 'objectID', 'objectEncoding', 'numLock', + 'numLines', 'numFrames', 'numChildren', 'normalize', 'noise', + 'nodeValue', 'nodeType', 'nodeName', 'nodeKind', 'noAutoLabeling', + 'nextValue', 'nextSibling', 'nextScene', 'nextNameIndex', + 'nextName', 'nextFrame', 'netStatus', 'navigateToURL', + 'namespaceURI', 'namespaceDeclarations', 'namespace', 'names', + 'name', 'muted', 'multiline', 'moveTo', 'mouseY', 'mouseX', + 'mouseWheelEnabled', 'mouseWheel', 'mouseUp', 'mouseTarget', + 'mouseOver', 'mouseOut', 'mouseMove', 'mouseLeave', + 'mouseFocusChange', 'mouseEnabled', 'mouseDown', 'mouseChildren', + 'motionTimeout', 'motionLevel', 'monthUTC', 'month', + 'modificationDate', 'mode', 'minutesUTC', 'minutes', 'min', + 'millisecondsUTC', 'milliseconds', 'method', 'message', 'merge', + 'menuSelect', 'menuItemSelect', 'maxScrollV', 'maxScrollH', + 'maxLevel', 'maxChars', 'max', 'matrixY', 'matrixX', 'matrix', + 'match', 'mask', 'mapPoint', 'mapBitmap', 'map', 'manufacturer', + 'macType', 'loopback', 'loop', 'log', 'lock', 'localeCompare', + 'localY', 'localX', 'localToGlobal', 'localName', + 'localFileReadDisable', 'loaderURL', 'loaderInfo', 'loader', + 'loadPolicyFile', 'loadBytes', 'load', 'liveDelay', 'link', + 'lineTo', 'lineStyle', 'lineGradientStyle', 'level', + 'letterSpacing', 'length', 'leftToRight', 'leftToLeft', 'leftPeak', + 'leftMargin', 'left', 'leading', 'lastIndexOf', 'lastIndex', + 'lastChild', 'language', 'labels', 'knockout', 'keyUp', + 'keyLocation', 'keyFrameInterval', 'keyFocusChange', 'keyDown', + 'keyCode', 'kerning', 'join', 'italic', 'isXMLName', + 'isPrototypeOf', 'isNaN', 'isFocusInaccessible', 'isFinite', + 'isEmpty', 'isDefaultPrevented', 'isDebugger', 'isBuffering', + 'isAttribute', 'isAccessible', 'ioError', 'invert', 'invalidate', + 'intersects', 'intersection', 'interpolate', 'insideCutoff', + 'insertChildBefore', 'insertChildAfter', 'insertBefore', 'inner', + 'init', 'info', 'inflatePoint', 'inflate', 'indexOf', 'index', + 'indent', 'inScopeNamespaces', 'imeComposition', 'ime', + 'ignoreWhitespace', 'ignoreWhite', 'ignoreProcessingInstructions', + 'ignoreComments', 'ignoreCase', 'identity', 'idMap', 'id3', + 'httpStatus', 'htmlText', 'hoursUTC', 'hours', 'hitTestTextNearPos', + 'hitTestState', 'hitTestPoint', 'hitTestObject', 'hitTest', + 'hitArea', 'highlightColor', 'highlightAlpha', 'hideObject', + 'hideBuiltInItems', 'hide', 'height', 'hasVideoEncoder', 'hasTLS', + 'hasStreamingVideo', 'hasStreamingAudio', 'hasSimpleContent', + 'hasScreenPlayback', 'hasScreenBroadcast', 'hasProperty', + 'hasPrinting', 'hasOwnProperty', 'hasMP3', 'hasIME', 'hasGlyphs', + 'hasEventListener', 'hasEmbeddedVideo', 'hasDefinition', + 'hasComplexContent', 'hasChildNodes', 'hasAudioEncoder', 'hasAudio', + 'hasAccessibility', 'gridFitType', 'greenOffset', 'greenMultiplier', + 'graphics', 'gotoAndStop', 'gotoAndPlay', 'globalToLocal', 'global', + 'getUTCSeconds', 'getUTCMonth', 'getUTCMinutes', + 'getUTCMilliseconds', 'getUTCHours', 'getUTCFullYear', 'getUTCDay', + 'getUTCDate', 'getTimezoneOffset', 'getTimer', 'getTime', + 'getTextRunInfo', 'getTextFormat', 'getText', 'getStyle', + 'getStackTrace', 'getSelectedText', 'getSelected', 'getSeconds', + 'getRemote', 'getRect', 'getQualifiedSuperclassName', + 'getQualifiedClassName', 'getProperty', 'getPrefixForNamespace', + 'getPixels', 'getPixel32', 'getPixel', 'getParagraphLength', + 'getObjectsUnderPoint', 'getNamespaceForPrefix', 'getMonth', + 'getMinutes', 'getMilliseconds', 'getMicrophone', 'getLocal', + 'getLineText', 'getLineOffset', 'getLineMetrics', 'getLineLength', + 'getLineIndexOfChar', 'getLineIndexAtPoint', 'getImageReference', + 'getHours', 'getFullYear', 'getFirstCharInParagraph', + 'getDescendants', 'getDefinitionByName', 'getDefinition', 'getDay', + 'getDate', 'getColorBoundsRect', 'getClassByAlias', 'getChildIndex', + 'getChildByName', 'getChildAt', 'getCharIndexAtPoint', + 'getCharBoundaries', 'getCamera', 'getBounds', 'genre', + 'generateFilterRect', 'gain', 'fullYearUTC', 'fullYear', + 'fullScreen', 'fscommand', 'fromCharCode', 'framesLoaded', + 'frameRate', 'frame', 'fps', 'forwardAndBack', 'formatToString', + 'forceSimple', 'forEach', 'fontType', 'fontStyle', 'fontSize', + 'fontName', 'font', 'focusRect', 'focusOut', 'focusIn', 'focus', + 'flush', 'floor', 'floodFill', 'firstChild', 'findText', 'filters', + 'filter', 'fillRect', 'fileList', 'extension', 'extended', 'exp', + 'exec', 'exactSettings', 'every', 'eventPhase', 'escapeMultiByte', + 'escape', 'errorID', 'error', 'equals', 'enumerateFonts', + 'enterFrame', 'endian', 'endFill', 'encodeURIComponent', + 'encodeURI', 'enabled', 'embedFonts', 'elements', + 'dynamicPropertyWriter', 'dropTarget', 'drawRoundRect', 'drawRect', + 'drawEllipse', 'drawCircle', 'draw', 'download', 'downState', + 'doubleClickEnabled', 'doubleClick', 'dotall', 'domain', + 'docTypeDecl', 'doConversion', 'divisor', 'distance', 'dispose', + 'displayState', 'displayMode', 'displayAsPassword', 'dispatchEvent', + 'description', 'describeType', 'descent', 'descendants', + 'deltaTransformPoint', 'delta', 'deleteProperty', 'delay', + 'defaultTextFormat', 'defaultSettings', 'defaultObjectEncoding', + 'decodeURIComponent', 'decodeURI', 'decode', 'deblocking', + 'deactivate', 'dayUTC', 'day', 'dateUTC', 'date', 'dataFormat', + 'data', 'd', 'customItems', 'curveTo', 'currentTarget', + 'currentScene', 'currentLabels', 'currentLabel', 'currentFrame', + 'currentFPS', 'currentDomain', 'currentCount', 'ctrlKey', 'creator', + 'creationDate', 'createTextNode', 'createGradientBox', + 'createElement', 'createBox', 'cos', 'copyPixels', 'copyChannel', + 'copy', 'conversionMode', 'contextMenuOwner', 'contextMenu', + 'contentType', 'contentLoaderInfo', 'content', 'containsRect', + 'containsPoint', 'contains', 'constructor', 'connectedProxyType', + 'connected', 'connect', 'condenseWhite', 'concatenatedMatrix', + 'concatenatedColorTransform', 'concat', 'computeSpectrum', + 'compress', 'componentY', 'componentX', 'complete', 'compare', + 'comments', 'comment', 'colors', 'colorTransform', 'color', 'code', + 'close', 'cloneNode', 'clone', 'client', 'click', 'clearTimeout', + 'clearInterval', 'clear', 'clamp', 'children', 'childNodes', + 'childIndex', 'childAllowsParent', 'child', 'checkPolicyFile', + 'charCount', 'charCodeAt', 'charCode', 'charAt', 'changeList', + 'change', 'ceil', 'caretIndex', 'caption', 'capsLock', 'cancelable', + 'cancel', 'callee', 'callProperty', 'call', 'cacheAsBitmap', 'c', + 'bytesTotal', 'bytesLoaded', 'bytesAvailable', 'buttonMode', + 'buttonDown', 'bullet', 'builtInItems', 'bufferTime', + 'bufferLength', 'bubbles', 'browse', 'bottomScrollV', 'bottomRight', + 'bottom', 'borderColor', 'border', 'bold', 'blurY', 'blurX', + 'blueOffset', 'blueMultiplier', 'blockIndent', 'blendMode', + 'bitmapData', 'bias', 'beginGradientFill', 'beginFill', + 'beginBitmapFill', 'bandwidth', 'backgroundColor', 'background', + 'b', 'available', 'avHardwareDisable', 'autoSize', 'attributes', + 'attribute', 'attachNetStream', 'attachCamera', 'attachAudio', + 'atan2', 'atan', 'asyncError', 'asin', 'ascent', 'artist', + 'areSoundsInaccessible', 'areInaccessibleObjectsUnderPoint', + 'applyFilter', 'apply', 'applicationDomain', 'appendText', + 'appendChild', 'antiAliasType', 'angle', 'alwaysShowSelection', + 'altKey', 'alphas', 'alphaOffset', 'alphaMultiplier', 'alpha', + 'allowInsecureDomain', 'allowDomain', 'align', 'album', + 'addedToStage', 'added', 'addPage', 'addNamespace', 'addHeader', + 'addEventListener', 'addChildAt', 'addChild', 'addCallback', 'add', + 'activityLevel', 'activity', 'active', 'activating', 'activate', + 'actionScriptVersion', 'acos', 'accessibilityProperties', 'abs' + ), + 8 => array( + 'WRAP', 'VERTICAL', 'VARIABLES', + 'UTC', 'UPLOAD_COMPLETE_DATA', 'UP', 'UNLOAD', 'UNKNOWN', + 'UNIQUESORT', 'TOP_RIGHT', 'TOP_LEFT', 'TOP', 'TIMER_COMPLETE', + 'TIMER', 'TEXT_NODE', 'TEXT_INPUT', 'TEXT', 'TAB_INDEX_CHANGE', + 'TAB_ENABLED_CHANGE', 'TAB_CHILDREN_CHANGE', 'TAB', 'SYNC', + 'SUBTRACT', 'SUBPIXEL', 'STATUS', 'STANDARD', 'SQUARE', 'SQRT2', + 'SQRT1_2', 'SPACE', 'SOUND_COMPLETE', 'SOCKET_DATA', 'SHOW_ALL', + 'SHIFT', 'SETTINGS_MANAGER', 'SELECT', 'SECURITY_ERROR', 'SCROLL', + 'SCREEN', 'ROUND', 'ROLL_OVER', 'ROLL_OUT', 'RIGHT', 'RGB', + 'RETURNINDEXEDARRAY', 'RESIZE', 'REPEAT', 'RENDER', + 'REMOVED_FROM_STAGE', 'REMOVED', 'REMOTE', 'REGULAR', 'REFLECT', + 'RED', 'RADIAL', 'PROGRESS', 'PRIVACY', 'POST', 'POSITIVE_INFINITY', + 'PORTRAIT', 'PIXEL', 'PI', 'PENDING', 'PAGE_UP', 'PAGE_DOWN', 'PAD', + 'OVERLAY', 'OUTER', 'OPEN', 'NaN', 'NUM_PAD', 'NUMPAD_SUBTRACT', + 'NUMPAD_MULTIPLY', 'NUMPAD_ENTER', 'NUMPAD_DIVIDE', + 'NUMPAD_DECIMAL', 'NUMPAD_ADD', 'NUMPAD_9', 'NUMPAD_8', 'NUMPAD_7', + 'NUMPAD_6', 'NUMPAD_5', 'NUMPAD_4', 'NUMPAD_3', 'NUMPAD_2', + 'NUMPAD_1', 'NUMPAD_0', 'NUMERIC', 'NO_SCALE', 'NO_BORDER', + 'NORMAL', 'NONE', 'NEVER', 'NET_STATUS', 'NEGATIVE_INFINITY', + 'MULTIPLY', 'MOUSE_WHEEL', 'MOUSE_UP', 'MOUSE_OVER', 'MOUSE_OUT', + 'MOUSE_MOVE', 'MOUSE_LEAVE', 'MOUSE_FOCUS_CHANGE', 'MOUSE_DOWN', + 'MITER', 'MIN_VALUE', 'MICROPHONE', 'MENU_SELECT', + 'MENU_ITEM_SELECT', 'MEDIUM', 'MAX_VALUE', 'LOW', 'LOG2E', 'LOG10E', + 'LOCAL_WITH_NETWORK', 'LOCAL_WITH_FILE', 'LOCAL_TRUSTED', + 'LOCAL_STORAGE', 'LN2', 'LN10', 'LITTLE_ENDIAN', 'LINK', + 'LINEAR_RGB', 'LINEAR', 'LIGHT_COLOR', 'LIGHTEN', 'LEFT', 'LCD', + 'LAYER', 'LANDSCAPE', 'KOREAN', 'KEY_UP', 'KEY_FOCUS_CHANGE', + 'KEY_DOWN', 'JUSTIFY', 'JAPANESE_KATAKANA_HALF', + 'JAPANESE_KATAKANA_FULL', 'JAPANESE_HIRAGANA', 'Infinity', 'ITALIC', + 'IO_ERROR', 'INVERT', 'INSERT', 'INPUT', 'INNER', 'INIT', + 'IME_COMPOSITION', 'IGNORE', 'ID3', 'HTTP_STATUS', 'HORIZONTAL', + 'HOME', 'HIGH', 'HARDLIGHT', 'GREEN', 'GET', 'FULLSCREEN', 'FULL', + 'FOCUS_OUT', 'FOCUS_IN', 'FLUSHED', 'FLASH9', 'FLASH8', 'FLASH7', + 'FLASH6', 'FLASH5', 'FLASH4', 'FLASH3', 'FLASH2', 'FLASH1', 'F9', + 'F8', 'F7', 'F6', 'F5', 'F4', 'F3', 'F2', 'F15', 'F14', 'F13', + 'F12', 'F11', 'F10', 'F1', 'EXACT_FIT', 'ESCAPE', 'ERROR', 'ERASE', + 'ENTER_FRAME', 'ENTER', 'END', 'EMBEDDED', 'ELEMENT_NODE', 'E', + 'DYNAMIC', 'DOWN', 'DOUBLE_CLICK', 'DIFFERENCE', 'DEVICE', + 'DESCENDING', 'DELETE', 'DEFAULT', 'DEACTIVATE', 'DATA', + 'DARK_COLOR', 'DARKEN', 'CRT', 'CONTROL', 'CONNECT', 'COMPLETE', + 'COLOR', 'CLOSE', 'CLICK', 'CLAMP', 'CHINESE', 'CHANGE', 'CENTER', + 'CASEINSENSITIVE', 'CAPTURING_PHASE', 'CAPS_LOCK', 'CANCEL', + 'CAMERA', 'BUBBLING_PHASE', 'BOTTOM_RIGHT', 'BOTTOM_LEFT', 'BOTTOM', + 'BOLD_ITALIC', 'BOLD', 'BLUE', 'BINARY', 'BIG_ENDIAN', 'BEVEL', + 'BEST', 'BACKSPACE', 'AUTO', 'AT_TARGET', 'ASYNC_ERROR', 'AMF3', + 'AMF0', 'ALWAYS', 'ALPHANUMERIC_HALF', 'ALPHANUMERIC_FULL', 'ALPHA', + 'ADVANCED', 'ADDED_TO_STAGE', 'ADDED', 'ADD', 'ACTIVITY', + 'ACTIONSCRIPT3', 'ACTIONSCRIPT2' + ), + //FIX: Must be last in order to avoid conflicts with keywords present + //in other keyword groups, that might get highlighted as part of the URL. + //I know this is not a proper work-around, but should do just fine. + 5 => array( + 'uint', 'int', 'arguments', 'XMLSocket', 'XMLNodeType', 'XMLNode', + 'XMLList', 'XMLDocument', 'XML', 'Video', 'VerifyError', + 'URLVariables', 'URLStream', 'URLRequestMethod', 'URLRequestHeader', + 'URLRequest', 'URLLoaderDataFormat', 'URLLoader', 'URIError', + 'TypeError', 'Transform', 'TimerEvent', 'Timer', 'TextSnapshot', + 'TextRenderer', 'TextLineMetrics', 'TextFormatAlign', 'TextFormat', + 'TextFieldType', 'TextFieldAutoSize', 'TextField', 'TextEvent', + 'TextDisplayMode', 'TextColorType', 'System', 'SyntaxError', + 'SyncEvent', 'StyleSheet', 'String', 'StatusEvent', 'StaticText', + 'StageScaleMode', 'StageQuality', 'StageAlign', 'Stage', + 'StackOverflowError', 'Sprite', 'SpreadMethod', 'SoundTransform', + 'SoundMixer', 'SoundLoaderContext', 'SoundChannel', 'Sound', + 'Socket', 'SimpleButton', 'SharedObjectFlushStatus', 'SharedObject', + 'Shape', 'SecurityPanel', 'SecurityErrorEvent', 'SecurityError', + 'SecurityDomain', 'Security', 'ScriptTimeoutError', 'Scene', + 'SWFVersion', 'Responder', 'RegExp', 'ReferenceError', 'Rectangle', + 'RangeError', 'QName', 'Proxy', 'ProgressEvent', + 'PrintJobOrientation', 'PrintJobOptions', 'PrintJob', 'Point', + 'PixelSnapping', 'ObjectEncoding', 'Object', 'Number', 'NetStream', + 'NetStatusEvent', 'NetConnection', 'Namespace', 'MovieClip', + 'MouseEvent', 'Mouse', 'MorphShape', 'Microphone', 'MemoryError', + 'Matrix', 'Math', 'LocalConnection', 'LoaderInfo', 'LoaderContext', + 'Loader', 'LineScaleMode', 'KeyboardEvent', 'Keyboard', + 'KeyLocation', 'JointStyle', 'InvalidSWFError', + 'InterpolationMethod', 'InteractiveObject', 'IllegalOperationError', + 'IOErrorEvent', 'IOError', 'IMEEvent', 'IMEConversionMode', 'IME', + 'IExternalizable', 'IEventDispatcher', 'IDynamicPropertyWriter', + 'IDynamicPropertyOutput', 'IDataOutput', 'IDataInput', 'ID3Info', + 'IBitmapDrawable', 'HTTPStatusEvent', 'GridFitType', 'Graphics', + 'GradientType', 'GradientGlowFilter', 'GradientBevelFilter', + 'GlowFilter', 'Function', 'FrameLabel', 'FontType', 'FontStyle', + 'Font', 'FocusEvent', 'FileReferenceList', 'FileReference', + 'FileFilter', 'ExternalInterface', 'EventPhase', 'EventDispatcher', + 'Event', 'EvalError', 'ErrorEvent', 'Error', 'Endian', 'EOFError', + 'DropShadowFilter', 'DisplayObjectContainer', 'DisplayObject', + 'DisplacementMapFilterMode', 'DisplacementMapFilter', 'Dictionary', + 'DefinitionError', 'Date', 'DataEvent', 'ConvolutionFilter', + 'ContextMenuItem', 'ContextMenuEvent', 'ContextMenuBuiltInItems', + 'ContextMenu', 'ColorTransform', 'ColorMatrixFilter', 'Class', + 'CapsStyle', 'Capabilities', 'Camera', 'CSMSettings', 'ByteArray', + 'Boolean', 'BlurFilter', 'BlendMode', 'BitmapFilterType', + 'BitmapFilterQuality', 'BitmapFilter', 'BitmapDataChannel', + 'BitmapData', 'Bitmap', 'BevelFilter', 'AsyncErrorEvent', 'Array', + 'ArgumentError', 'ApplicationDomain', 'AntiAliasType', + 'ActivityEvent', 'ActionScriptVersion', 'AccessibilityProperties', + 'Accessibility', 'AVM1Movie' + ) + ), + 'SYMBOLS' => array( + '(', ')', '[', ']', '{', '}', '!', '%', '&', '*', '|', '/', '<', '>', '^', '-', '+', '~', '?', ':', ';', '.', ',' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + 5 => true, + 6 => true, + 7 => true, + 8 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #0033ff; font-weight: bold;', + 2 => 'color: #6699cc; font-weight: bold;', + 3 => 'color: #339966; font-weight: bold;', + 4 => 'color: #9900cc; font-weight: bold;', + 5 => 'color: #004993;', + 6 => 'color: #004993;', + 7 => 'color: #004993;', + 8 => 'color: #004993;' + ), + 'COMMENTS' => array( + 1 => 'color: #009900; font-style: italic;', + 2 => 'color: #009966; font-style: italic;', + 'MULTI' => 'color: #3f5fbf;' + ), + 'ESCAPE_CHAR' => array( + 0 => '' + ), + 'BRACKETS' => array( + 0 => 'color: #000000;' + ), + 'STRINGS' => array( + 0 => 'color: #990000;' + ), + 'NUMBERS' => array( + 0 => 'color: #000000; font-weight:bold;' + ), + 'METHODS' => array( + 0 => 'color: #000000;', + ), + 'SYMBOLS' => array( + 0 => 'color: #000066; font-weight: bold;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => 'http://www.google.com/search?q={FNAMEL}%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:{FNAMEL}.html', + 6 => '', + 7 => '', + 8 => '' + ), + 'OOLANG' => false,//Save some time as OO identifiers aren't used + 'OBJECT_SPLITTERS' => array( + // commented out because it's not very relevant for AS, as all properties, methods and constants are dot-accessed. + // I believe it's preferable to have package highlighting for example, which is not possible with this enabled. + // 0 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array() +); diff --git a/includes/geshi/ada.php b/includes/geshi/ada.php new file mode 100644 index 0000000..3e48fd1 --- /dev/null +++ b/includes/geshi/ada.php @@ -0,0 +1,130 @@ + 'Ada', + 'COMMENT_SINGLE' => array(1 => '--'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + 'begin', 'declare', 'do', 'else', 'elsif', 'exception', 'for', 'if', + 'is', 'loop', 'while', 'then', 'end', 'select', 'case', 'until', + 'goto', 'return' + ), + 2 => array( + 'abs', 'and', 'at', 'mod', 'not', 'or', 'rem', 'xor' + ), + 3 => array( + 'abort', 'abstract', 'accept', 'access', 'aliased', 'all', 'array', + 'body', 'constant', 'delay', 'delta', 'digits', 'entry', 'exit', + 'function', 'generic', 'in', 'interface', 'limited', 'new', 'null', + 'of', 'others', 'out', 'overriding', 'package', 'pragma', 'private', + 'procedure', 'protected', 'raise', 'range', 'record', 'renames', + 'requeue', 'reverse', 'separate', 'subtype', 'synchronized', + 'tagged', 'task', 'terminate', 'type', 'use', 'when', 'with' + ) + ), + 'SYMBOLS' => array( + '(', ')' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #00007f;', + 2 => 'color: #0000ff;', + 3 => 'color: #46aa03; font-weight:bold;', + ), + 'BRACKETS' => array( + 0 => 'color: #66cc66;' + ), + 'COMMENTS' => array( + 1 => 'color: #adadad; font-style: italic;', + 'MULTI' => 'color: #808080; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'STRINGS' => array( + 0 => 'color: #7f007f;' + ), + 'NUMBERS' => array( + 0 => 'color: #ff0000;' + ), + 'METHODS' => array( + 1 => 'color: #202020;' + ), + 'SYMBOLS' => array( + 0 => 'color: #66cc66;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ) +); diff --git a/includes/geshi/aimms.php b/includes/geshi/aimms.php new file mode 100644 index 0000000..f46bdd0 --- /dev/null +++ b/includes/geshi/aimms.php @@ -0,0 +1,316 @@ + 'AIMMS3', + 'COMMENT_SINGLE' => array(1 => '!'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'HARDQUOTE' => array("'", "'"), + 'HARDESCAPE' => array("'", "\\"), + 'HARDCHAR' => "\\", + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'OBJECT_SPLITTERS' => array(), + 'REGEXPS' => array(), + 'STRICT_MODE_APPLIES' => GESHI_MAYBE, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array(), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + 'if', 'then', 'else', 'endif', 'elseif', 'for', 'do', 'while' , 'endfor' , 'endwhile', 'break', 'switch', 'endswitch', + 'display', 'return', 'in', 'apply' + + ), + 2 => array( + 'main model' , 'declaration section', 'procedure', 'endprocedure', 'endmodel', 'endsection' , 'set', 'parameter', + 'string parameter', 'element parameter', 'quantity' + ), + 3 => array( + 'identifier', 'index', 'index domain', 'body' + ), + 4 => array( + 'ActiveCard','Card','ConvertUnit','DistributionCumulative','DistributionDensity','DistributionDeviation', + 'DistributionInverseCumulative','DistributionInverseDensity','DistributionKurtosis','DistributionMean', + 'DistributionSkewness','DistributionVariance','Element','EvaluateUnit','First','FormatString','Last', + 'Ord','Unit','Val','Aggregate','AttributeToString','CaseCompareIdentifier','CaseCreateDifferenceFile', + 'CloseDataSource','CreateTimeTable','ConstraintVariables','ConvertReferenceDate','CloneElement', + 'FindNthString','FindReplaceNthString','FindReplaceStrings','FindString','StringOccurrences', + 'CurrentToMoment','CurrentToString','CurrentToTimeSlot','DaylightsavingEndDate','DaylightsavingStartDate', + 'DeclaredSubset','DomainIndex','IndexRange','IsRunningAsViewer','ListingFileCopy','ListingFileDelete', + 'DirectoryGetFiles','DirectoryGetSubdirectories','DirectSQL','Disaggregate','ElementCast','ElementRange', + 'EnvironmentGetString','EnvironmentSetString','errh::Adapt','errh::Attribute','errh::Category', + 'errh::Code','errh::Column','errh::CreationTime','errh::Filename','errh::InsideCategory', + 'errh::IsMarkedAsHandled','errh::Line','errh::MarkAsHandled','errh::Message','errh::Multiplicity', + 'errh::Node','errh::NumberOfLocations','errh::Severity','ExcelAddNewSheet','ExcelAssignParameter', + 'ExcelAssignSet','ExcelAssignTable','ExcelAssignValue','ExcelClearRange','ExcelCloseWorkbook', + 'ExcelColumnName','ExcelColumnNumber','ExcelCopyRange','ExcelCreateWorkbook','ExcelDeleteSheet', + 'ExcelPrint','ExcelRetrieveParameter','ExcelRetrieveSet','ExcelRetrieveTable','ExcelRetrieveValue', + 'ExcelRunMacro','ExcelSaveWorkbook','ExcelSetActiveSheet','ExcelSetUpdateLinksBehavior', + 'ExcelSetVisibility','FindUsedElements','GenerateCUT','GMP::Coefficient::Get', + 'GMP::Coefficient::GetQuadratic','GMP::Coefficient::Set','GMP::Coefficient::SetQuadratic', + 'GMP::Column::Add','GMP::Column::Delete','GMP::Column::Freeze','GMP::Column::GetLowerbound', + 'GMP::Column::GetScale','GMP::Column::GetStatus','GMP::Column::GetType','GMP::Column::GetUpperbound', + 'GMP::Column::SetAsObjective','GMP::Column::SetLowerbound','GMP::Column::SetType', + 'GMP::Column::SetUpperbound','GMP::Column::Unfreeze','GMP::Instance::AddIntegerEliminationRows', + 'GMP::Instance::CalculateSubGradient','GMP::Instance::Copy','GMP::Instance::CreateDual', + 'GMP::Instance::CreateMasterMip','GMP::Instance::CreatePresolved', + 'GMP::SolverSession::CreateProgressCategory','GMP::Instance::CreateProgressCategory', + 'GMP::Instance::CreateSolverSession','GMP::Stochastic::CreateBendersRootproblem', + 'GMP::Instance::Delete','GMP::Instance::DeleteIntegerEliminationRows', + 'GMP::Instance::DeleteSolverSession','GMP::Instance::FindApproximatelyFeasibleSolution', + 'GMP::Instance::FixColumns','GMP::Instance::Generate','GMP::Instance::GenerateRobustCounterpart', + 'GMP::Instance::GenerateStochasticProgram','GMP::SolverSession::GetCallbackInterruptStatus', + 'GMP::SolverSession::WaitForCompletion','GMP::SolverSession::WaitForSingleCompletion', + 'GMP::SolverSession::ExecutionStatus','GMP::Instance::GetDirection','GMP::Instance::GetLinearObjective', + 'GMP::Instance::GetMathematicalProgrammingType','GMP::Instance::GetMemoryUsed', + 'GMP::Instance::GetNumberOfColumns','GMP::Instance::GetNumberOfIndicatorRows', + 'GMP::Instance::GetNumberOfIntegerColumns','GMP::Instance::GetNumberOfNonlinearColumns', + 'GMP::Instance::GetNumberOfNonlinearNonzeros','GMP::Instance::GetNumberOfNonlinearRows', + 'GMP::Instance::GetNumberOfNonzeros','GMP::Instance::GetNumberOfRows', + 'GMP::Instance::GetNumberOfSOS1Rows','GMP::Instance::GetNumberOfSOS2Rows', + 'GMP::Instance::GetObjective','GMP::Instance::GetOptionValue','GMP::Instance::GetSolver', + 'GMP::Instance::GetSymbolicMathematicalProgram','GMP::Instance::MemoryStatistics', + 'GMP::Instance::Rename','GMP::Instance::SetCallbackAddCut','GMP::Instance::SetCallbackBranch', + 'GMP::Instance::SetCallbackHeuristic','GMP::Instance::SetCallbackIncumbent', + 'GMP::Instance::SetCallbackIterations','GMP::Instance::SetCallbackNewIncumbent', + 'GMP::Instance::SetCallbackStatusChange','GMP::Instance::SetCutoff','GMP::Instance::SetDirection', + 'GMP::Instance::SetMathematicalProgrammingType','GMP::Instance::SetSolver','GMP::Instance::Solve', + 'GMP::Stochastic::GetObjectiveBound','GMP::Stochastic::GetRelativeWeight', + 'GMP::Stochastic::GetRepresentativeScenario','GMP::Stochastic::UpdateBendersSubproblem', + 'GMP::Linearization::Add','GMP::Linearization::AddSingle','GMP::Linearization::Delete', + 'GMP::Linearization::GetDeviation','GMP::Linearization::GetDeviationBound', + 'GMP::Linearization::GetLagrangeMultiplier','GMP::Linearization::GetType', + 'GMP::Linearization::GetWeight','GMP::Linearization::RemoveDeviation', + 'GMP::Linearization::SetDeviationBound','GMP::Linearization::SetType', + 'GMP::Linearization::SetWeight','GMP::ProgressWindow::DeleteCategory', + 'GMP::ProgressWindow::DisplayLine','GMP::ProgressWindow::DisplayProgramStatus', + 'GMP::ProgressWindow::DisplaySolver','GMP::ProgressWindow::DisplaySolverStatus', + 'GMP::ProgressWindow::FreezeLine','GMP::ProgressWindow::UnfreezeLine', + 'GMP::QuadraticCoefficient::Get','GMP::QuadraticCoefficient::Set','GMP::Row::Activate', + 'GMP::Stochastic::AddBendersFeasibilityCut','GMP::Stochastic::AddBendersOptimalityCut', + 'GMP::Stochastic::BendersFindFeasibilityReference','GMP::Stochastic::MergeSolution', + 'GMP::Row::Add','GMP::Row::Deactivate','GMP::Row::Delete','GMP::Row::DeleteIndicatorCondition', + 'GMP::Row::Generate','GMP::Row::GetConvex','GMP::Row::GetIndicatorColumn', + 'GMP::Row::GetIndicatorCondition','GMP::Row::GetLeftHandSide','GMP::Row::GetRelaxationOnly', + 'GMP::Row::GetRightHandSide','GMP::Row::GetScale','GMP::Row::GetStatus','GMP::Row::GetType', + 'GMP::Row::SetConvex','GMP::Row::SetIndicatorCondition','GMP::Row::SetLeftHandSide', + 'GMP::Row::SetRelaxationOnly','GMP::Row::SetRightHandSide','GMP::Row::SetType', + 'GMP::Solution::Check','GMP::Solution::Copy','GMP::Solution::Count','GMP::Solution::Delete', + 'GMP::Solution::DeleteAll','GMP::Solution::GetColumnValue','GMP::Solution::GetCPUSecondsUsed', + 'GMP::Solution::GetDistance','GMP::Solution::GetFirstOrderDerivative', + 'GMP::Solution::GetIterationsUsed','GMP::Solution::GetNodesUsed','GMP::Solution::GetLinearObjective', + 'GMP::Solution::GetMemoryUsed','GMP::Solution::GetObjective','GMP::Solution::GetPenalizedObjective', + 'GMP::Solution::GetProgramStatus','GMP::Solution::GetRowValue','GMP::Solution::GetSolutionsSet', + 'GMP::Solution::GetSolverStatus','GMP::Solution::IsDualDegenerated','GMP::Solution::IsInteger', + 'GMP::Solution::IsPrimalDegenerated','GMP::Solution::SetMIPStartFlag','GMP::Solution::Move', + 'GMP::Solution::RandomlyGenerate','GMP::Solution::RetrieveFromModel', + 'GMP::Solution::RetrieveFromSolverSession','GMP::Solution::SendToModel', + 'GMP::Solution::SendToModelSelection','GMP::Solution::SendToSolverSession', + 'GMP::Solution::SetIterationCount','GMP::Solution::SetProgramStatus','GMP::Solution::SetSolverStatus', + 'GMP::Solution::UpdatePenaltyWeights','GMP::Solution::ConstructMean', + 'GMP::SolverSession::AsynchronousExecute','GMP::SolverSession::Execute', + 'GMP::SolverSession::Interrupt','GMP::SolverSession::AddLinearization', + 'GMP::SolverSession::GenerateBranchLowerBound','GMP::SolverSession::GenerateBranchUpperBound', + 'GMP::SolverSession::GenerateBranchRow','GMP::SolverSession::GenerateCut', + 'GMP::SolverSession::GenerateBinaryEliminationRow','GMP::SolverSession::GetCPUSecondsUsed', + 'GMP::SolverSession::GetHost','GMP::SolverSession::GetInstance', + 'GMP::SolverSession::GetIterationsUsed','GMP::SolverSession::GetNodesLeft', + 'GMP::SolverSession::GetNodesUsed','GMP::SolverSession::GetNodeNumber', + 'GMP::SolverSession::GetNodeObjective','GMP::SolverSession::GetNumberOfBranchNodes', + 'GMP::SolverSession::GetLinearObjective','GMP::SolverSession::GetMemoryUsed', + 'GMP::SolverSession::GetObjective','GMP::SolverSession::GetOptionValue', + 'GMP::SolverSession::GetProgramStatus','GMP::SolverSession::GetSolver', + 'GMP::SolverSession::GetSolverStatus','GMP::SolverSession::RejectIncumbent', + 'GMP::Event::Create','GMP::Event::Delete','GMP::Event::Reset','GMP::Event::Set', + 'GMP::SolverSession::SetObjective','GMP::SolverSession::SetOptionValue', + 'GMP::Instance::SetCPUSecondsLimit','GMP::Instance::SetIterationLimit', + 'GMP::Instance::SetMemoryLimit','GMP::Instance::SetOptionValue','GMP::Tuning::SolveSingleMPS', + 'GMP::Tuning::TuneMultipleMPS','GMP::Tuning::TuneSingleGMP', + 'GMP::Solver::GetAsynchronousSessionsLimit','GMP::Robust::EvaluateAdjustableVariables', + 'GenerateXML','GetDatasourceProperty','ReadGeneratedXML','ReadXML','ReferencedIdentifiers', + 'WriteXML','IdentifierAttributes','IdentifierDimension','IsRuntimeIdentifier','IdentifierMemory', + 'IdentifierMemoryStatistics','IdentifierText','IdentifierType','IdentifierUnit','ScalarValue', + 'SectionIdentifiers','SubRange','MemoryInUse','CommitTransaction','RollbackTransaction', + 'MemoryStatistics','me::AllowedAttribute','me::ChangeType','me::ChangeTypeAllowed','me::Children', + 'me::ChildTypeAllowed','me::Compile','me::Create','me::CreateLibrary','me::Delete','me::ExportNode', + 'me::GetAttribute','me::ImportLibrary','me::ImportNode','me::IsRunnable','me::Move','me::Parent', + 'me::Rename','me::SetAttribute','MomentToString','MomentToTimeSlot','OptionGetValue', + 'OptionGetKeywords','OptionGetString','OptionSetString','OptionSetValue','PeriodToString', + 'ProfilerContinue','ProfilerPause','ProfilerRestart','RestoreInactiveElements', + 'RetrieveCurrentVariableValues','SetAddRecursive','SetElementAdd','SetElementRename', + 'SQLColumnData','SQLCreateConnectionString','SQLDriverName','SQLNumberOfColumns', + 'SQLNumberOfDrivers','SQLNumberOfTables','SQLNumberOfViews','SQLTableName','SQLViewName', + 'StartTransaction','StringToElement','StringToMoment','StringToTimeSlot','TestDatabaseColumn', + 'TestDatabaseTable','TestDataSource','TestDate','TimeslotCharacteristic','TimeslotToMoment', + 'TimeslotToString','TimeZoneOffset','VariableConstraints','PageOpen','PageOpenSingle','PageClose', + 'PageGetActive','PageSetFocus','PageGetFocus','PageSetCursor','PageRefreshAll','PageGetChild', + 'PageGetParent','PageGetNext','PageGetPrevious','PageGetNextInTreeWalk','PageGetUsedIdentifiers', + 'PageGetTitle','PageGetAll','PageCopyTableToClipboard','PageCopyTableToExcel','PrintPage', + 'PrintPageCount','PrintStartReport','PrintEndReport','PivotTableReloadState','PivotTableSaveState', + 'PivotTableDeleteState','FileSelect','FileSelectNew','FileDelete','FileExists','FileCopy', + 'FileMove','FileView','FileEdit','FilePrint','FileTime','FileTouch','FileAppend','FileGetSize', + 'DirectorySelect','DirectoryCreate','DirectoryDelete','DirectoryExists','DirectoryCopy', + 'DirectoryMove','DirectoryGetCurrent','DialogProgress','DialogMessage','DialogError', + 'StatusMessage','DialogAsk','DialogGetString','DialogGetDate','DialogGetNumber','DialogGetElement', + 'DialogGetElementByText','DialogGetElementByData','DialogGetPassword','DialogGetColor','CaseNew', + 'CaseFind','CaseCreate','CaseLoadCurrent','CaseMerge','CaseLoadIntoCurrent','CaseSelect', + 'CaseSelectNew','CaseSetCurrent','CaseSave','CaseSaveAll','CaseSaveAs','CaseSelectMultiple', + 'CaseGetChangedStatus','CaseSetChangedStatus','CaseDelete','CaseGetType','CaseGetDatasetReference', + 'CaseWriteToSingleFile','CaseReadFromSingleFile','DatasetNew','DatasetFind','DatasetCreate', + 'DatasetLoadCurrent','DatasetMerge','DatasetLoadIntoCurrent','DatasetSelect','DatasetSelectNew', + 'DatasetSetCurrent','DatasetSave','DatasetSaveAll','DatasetSaveAs','DatasetGetChangedStatus', + 'DatasetSetChangedStatus','DatasetDelete','DatasetGetCategory','DataFileGetName', + 'DataFileGetAcronym','DataFileSetAcronym','DataFileGetComment','DataFileSetComment', + 'DataFileGetPath','DataFileGetTime','DataFileGetOwner','DataFileGetGroup','DataFileReadPermitted', + 'DataFileWritePermitted','DataFileExists','DataFileCopy','DataCategoryContents','CaseTypeContents', + 'CaseTypeCategories','Execute','OpenDocument','TestInternetConnection','GeoFindCoordinates', + 'ShowHelpTopic','Delay','ScheduleAt','ExitAimms','SessionArgument','SessionHasVisibleGUI', + 'ProjectDeveloperMode','DebuggerBreakpoint','ShowProgressWindow','ShowMessageWindow', + 'SolverGetControl','SolverReleaseControl','ProfilerStart','DataManagerImport','DataManagerExport', + 'DataManagerFileNew','DataManagerFileOpen','DataManagerFileGetCurrent','DataImport220', + 'SecurityGetUsers','SecurityGetGroups','UserColorAdd','UserColorDelete','UserColorGetRGB', + 'UserColorModify','LicenseNumber','LicenseType','LicenseStartDate','LicenseExpirationDate', + 'LicenseMaintenanceExpirationDate','VARLicenseExpirationDate','AimmsRevisionString', + 'VARLicenseCreate','HistogramCreate','HistogramDelete','HistogramSetDomain', + 'HistogramAddObservation','HistogramGetFrequencies','HistogramGetBounds', + 'HistogramGetObservationCount','HistogramGetAverage','HistogramGetDeviation', + 'HistogramGetSkewness','HistogramGetKurtosis','DateDifferenceDays','DateDifferenceYearFraction', + 'PriceFractional','PriceDecimal','RateEffective','RateNominal','DepreciationLinearLife', + 'DepreciationLinearRate','DepreciationNonLinearSumOfYear','DepreciationNonLinearLife', + 'DepreciationNonLinearFactor','DepreciationNonLinearRate','DepreciationSum', + 'InvestmentConstantPresentValue','InvestmentConstantFutureValue', + 'InvestmentConstantPeriodicPayment','InvestmentConstantInterestPayment', + 'InvestmentConstantPrincipalPayment','InvestmentConstantCumulativePrincipalPayment', + 'InvestmentConstantCumulativeInterestPayment','InvestmentConstantNumberPeriods', + 'InvestmentConstantRateAll','InvestmentConstantRate','InvestmentVariablePresentValue', + 'InvestmentVariablePresentValueInperiodic','InvestmentSingleFutureValue', + 'InvestmentVariableInternalRateReturnAll','InvestmentVariableInternalRateReturn', + 'InvestmentVariableInternalRateReturnInperiodicAll','InvestmentVariableInternalRateReturnInperiodic', + 'InvestmentVariableInternalRateReturnModified','SecurityDiscountedPrice', + 'SecurityDiscountedRedemption','SecurityDiscountedYield','SecurityDiscountedRate', + 'TreasuryBillPrice','TreasuryBillYield','TreasuryBillBondEquivalent','SecurityMaturityPrice', + 'SecurityMaturityCouponRate','SecurityMaturityYield','SecurityMaturityAccruedInterest', + 'SecurityCouponNumber','SecurityCouponPreviousDate','SecurityCouponNextDate','SecurityCouponDays', + 'SecurityCouponDaysPreSettlement','SecurityCouponDaysPostSettlement','SecurityPeriodicPrice', + 'SecurityPeriodicRedemption','SecurityPeriodicCouponRate','SecurityPeriodicYieldAll', + 'SecurityPeriodicYield','SecurityPeriodicAccruedInterest','SecurityPeriodicDuration', + 'SecurityPeriodicDurationModified','Abs','AtomicUnit','Ceil','Character','CharacterNumber','Cube', + 'Degrees','Div','Exp','FileRead','Floor','Log','Log10','Mapval','Max','Min','Mod','Power', + 'Radians','Round','Sign','Sqr','Sqrt','StringCapitalize','StringLength','StringToLower', + 'StringToUnit','StringToUpper','SubString','Trunc','Binomial','NegativeBinomial','Poisson', + 'Geometric','HyperGeometric','Uniform','Normal','LogNormal','Triangular','Exponential','Weibull', + 'Beta','Gamma','Logistic','Pareto','ExtremeValue','Precision','Factorial','Combination', + 'Permutation','Errorf','Cos','Sin','Tan','ArcCos','ArcSin','ArcTan','Cosh','Sinh','Tanh', + 'ArcCosh','ArcSinh','ArcTanh' + ) + ), + 'SYMBOLS' => array( + 0 => array( + '(', ')', '[', ']', '{', '}', + '%', '&', '|', '/', + '<', '>', '>=' , '<=', ':=', + '=', '-', '+', '*', + '.', ',' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #0000FF;', + 2 => 'color: #000000; font-weight: bold;', + 3 => 'color: #404040;', + 4 => 'color: #990000; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #808080; font-style: italic ', + 'HARD' => 'color: #808080; font-style: italic' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;', + GESHI_NUMBER_OCT_PREFIX => 'color: #208080;', + GESHI_NUMBER_HEX_PREFIX => 'color: #208080;', + GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;', + ), + 'COMMENTS' => array( + 1 => 'color: #008000; font-style: italic;', + 'MULTI' => 'color: #008000; font-style: italic;' + ), + + 'METHODS' => array( + 1 => 'color: #004000;', + 2 => 'color: #004000;' + ), + 'SYMBOLS' => array( + 0 => 'color: #339933;', + 1 => 'color: #000000; font-weight: bold;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + 0 => '', + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '' + ), + 'ESCAPE_CHAR' => array() + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '' + ), + 'OOLANG' => false, + 'TAB_WIDTH' => 4 +); diff --git a/includes/geshi/algol68.php b/includes/geshi/algol68.php new file mode 100644 index 0000000..2aadb0c --- /dev/null +++ b/includes/geshi/algol68.php @@ -0,0 +1,328 @@ + $prebits.$LONGS."(?:".$bl.")".$postbits, + "INT" => $preint.$LONGS."(?:".$il.")".$postint, + "REAL" => $prereal.$LONGS."(?:".$rl.")".$postreal, + + "BOLD" => 'color: #b1b100; font-weight: bold;', + "ITALIC" => 'color: #b1b100;', # procedures traditionally italic # + "NONSTD" => 'color: #FF0000; font-weight: bold;', # RED # + "COMMENT" => 'color: #666666; font-style: italic;' + ); + } +} +$a68=geshi_langfile_algol68_vars(); + +$language_data = array( + 'LANG_NAME' => 'ALGOL 68', + 'COMMENT_SINGLE' => array(), + 'COMMENT_MULTI' => array( + '¢' => '¢', + '£' => '£', + '#' => '#', + ), + 'COMMENT_REGEXP' => array( + 1 => '/\bCO((?:MMENT)?)\b.*?\bCO\\1\b/i', + 2 => '/\bPR((?:AGMAT)?)\b.*?\bPR\\1\b/i', + 3 => '/\bQUOTE\b.*?\bQUOTE\b/i' + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '"', + 'NUMBERS' => GESHI_NUMBER_HEX_SUFFIX, # Warning: Feature!! # +# GESHI_NUMBER_HEX_SUFFIX, # Attempt ignore default # + 'KEYWORDS' => array( +# Extensions + 1 => array('KEEP', 'FINISH', 'USE', 'SYSPROCS', 'IOSTATE', 'USING', 'ENVIRON', 'PROGRAM', 'CONTEXT'), +# 2 => array('CASE', 'IN', 'OUSE', 'IN', 'OUT', 'ESAC', '(', '|', '|:', ')', 'FOR', 'FROM', 'TO', 'BY', 'WHILE', 'DO', 'OD', 'IF', 'THEN', 'ELIF', 'THEN', 'ELSE', 'FI', 'PAR', 'BEGIN', 'EXIT', 'END', 'GO', 'GOTO', 'FORALL', 'UPTO', 'DOWNTO', 'FOREACH', 'ASSERT'), # + 2 => array('CASE', 'IN', 'OUSE', /* 'IN',*/ 'OUT', 'ESAC', 'PAR', 'BEGIN', 'EXIT', 'END', 'GO TO', 'GOTO', 'FOR', 'FROM', 'TO', 'BY', 'WHILE', 'DO', 'OD', 'IF', 'THEN', 'ELIF', /* 'THEN',*/ 'ELSE', 'FI' ), + 3 => array('BITS', 'BOOL', 'BYTES', 'CHAR', 'COMPL', 'INT', 'REAL', 'SEMA', 'STRING', 'VOID'), + 4 => array('MODE', 'OP', 'PRIO', 'PROC', 'FLEX', 'HEAP', 'LOC', 'REF', 'LONG', 'SHORT', 'EITHER'), +# Extensions or deprecated keywords +# 'PIPE': keyword somehow interferes with the internal operation of GeSHi + 5 => array('FORALL', 'UPTO', 'DOWNTO', 'FOREACH', 'ASSERT', 'CTB', 'CT', 'CTAB', 'COMPLEX', 'VECTOR', 'SOUND' /*, 'PIPE'*/), + 6 => array('CHANNEL', 'FILE', 'FORMAT', 'STRUCT', 'UNION', 'OF'), +# '(', '|', '|:', ')', # +# 7 => array('OF', 'AT', '@', 'IS', ':=:', 'ISNT', ':/=:', ':≠:', 'CTB', 'CT', '::', 'CTAB', '::=', 'TRUE', 'FALSE', 'EMPTY', 'NIL', 'â—‹', 'SKIP', '~'), + 7 => array('AT', 'IS', 'ISNT', 'TRUE', 'FALSE', 'EMPTY', 'NIL', 'SKIP'), + 8 => array('NOT', 'UP', 'DOWN', 'LWB', 'UPB', /* '-',*/ 'ABS', 'ARG', 'BIN', 'ENTIER', 'LENG', 'LEVEL', 'ODD', 'REPR', 'ROUND', 'SHORTEN', 'CONJ', 'SIGN'), +# OPERATORS ordered roughtly by PRIORITY # +# 9 => array('¬', '↑', '↓', '⌊', '⌈', '~', '⎩', '⎧'), +# 10 => array('+*', 'I', '+×', '⊥', '!', 'â¨'), + 10 => array('I'), +# 11 => array('SHL', 'SHR', '**', 'UP', 'DOWN', 'LWB', 'UPB', '↑', '↓', '⌊', '⌈', '⎩', '⎧'), + 11 => array('SHL', 'SHR', /*'UP', 'DOWN', 'LWB', 'UPB'*/), +# 12 => array('*', '/', '%', 'OVER', '%*', 'MOD', 'ELEM', '×', '÷', '÷×', '÷*', '%×', 'â–¡', '÷:'), + 12 => array('OVER', 'MOD', 'ELEM'), +# 13 => array('-', '+'), +# 14 => array('<', 'LT', '<=', 'LE', '>=', 'GE', '>', 'GT', '≤', '≥'), + 14 => array('LT', 'LE', 'GE', 'GT'), +# 15 => array('=', 'EQ', '/=', 'NE', '≠', '~='), + 15 => array('EQ', 'NE'), +# 16 => array('&', 'AND', '∧', 'OR', '∨', '/\\', '\\/'), + 16 => array('AND', 'OR'), + 17 => array('MINUSAB', 'PLUSAB', 'TIMESAB', 'DIVAB', 'OVERAB', 'MODAB', 'PLUSTO'), +# 18 => array('-:=', '+:=', '*:=', '/:=', '%:=', '%*:=', '+=:', '×:=', '÷:=', '÷×:=', '÷*:=', '%×:=', '÷::=', 'MINUS', 'PLUS', 'DIV', 'MOD', 'PRUS'), +# Extensions or deprecated keywords + 18 => array('MINUS', 'PLUS', 'DIV', /* 'MOD',*/ 'PRUS', 'IS NOT'), +# Extensions or deprecated keywords + 19 => array('THEF', 'ANDF', 'ORF', 'ANDTH', 'OREL', 'ANDTHEN', 'ORELSE'), +# Built in procedures - from standard prelude # + 20 => array('int lengths', 'intlengths', 'int shorths', 'intshorths', 'max int', 'maxint', 'real lengths', 'reallengths', 'real shorths', 'realshorths', 'bits lengths', 'bitslengths', 'bits shorths', 'bitsshorths', 'bytes lengths', 'byteslengths', 'bytes shorths', 'bytesshorths', 'max abs char', 'maxabschar', 'int width', 'intwidth', 'long int width', 'longintwidth', 'long long int width', 'longlongintwidth', 'real width', 'realwidth', 'long real width', 'longrealwidth', 'long long real width', 'longlongrealwidth', 'exp width', 'expwidth', 'long exp width', 'longexpwidth', 'long long exp width', 'longlongexpwidth', 'bits width', 'bitswidth', 'long bits width', 'longbitswidth', 'long long bits width', 'longlongbitswidth', 'bytes width', 'byteswidth', 'long bytes width', 'longbyteswidth', 'max real', 'maxreal', 'small real', 'smallreal', 'long max int', 'longmaxint', 'long long max int', 'longlongmaxint', 'long max real', 'longmaxreal', 'long small real', 'longsmallreal', 'long long max real', 'longlongmaxreal', 'long long small real', 'longlongsmallreal', 'long max bits', 'longmaxbits', 'long long max bits', 'longlongmaxbits', 'null character', 'nullcharacter', 'blank', 'flip', 'flop', 'error char', 'errorchar', 'exp char', 'expchar', 'newline char', 'newlinechar', 'formfeed char', 'formfeedchar', 'tab char', 'tabchar'), + 21 => array('stand in channel', 'standinchannel', 'stand out channel', 'standoutchannel', 'stand back channel', 'standbackchannel', 'stand draw channel', 'standdrawchannel', 'stand error channel', 'standerrorchannel'), + 22 => array('put possible', 'putpossible', 'get possible', 'getpossible', 'bin possible', 'binpossible', 'set possible', 'setpossible', 'reset possible', 'resetpossible', 'reidf possible', 'reidfpossible', 'draw possible', 'drawpossible', 'compressible', 'on logical file end', 'onlogicalfileend', 'on physical file end', 'onphysicalfileend', 'on line end', 'onlineend', 'on page end', 'onpageend', 'on format end', 'onformatend', 'on value error', 'onvalueerror', 'on open error', 'onopenerror', 'on transput error', 'ontransputerror', 'on format error', 'onformaterror', 'open', 'establish', 'create', 'associate', 'close', 'lock', 'scratch', 'space', 'new line', 'newline', 'print', 'write f', 'writef', 'print f', 'printf', 'write bin', 'writebin', 'print bin', 'printbin', 'read f', 'readf', 'read bin', 'readbin', 'put f', 'putf', 'get f', 'getf', 'make term', 'maketerm', 'make device', 'makedevice', 'idf', 'term', 'read int', 'readint', 'read long int', 'readlongint', 'read long long int', 'readlonglongint', 'read real', 'readreal', 'read long real', 'readlongreal', 'read long long real', 'readlonglongreal', 'read complex', 'readcomplex', 'read long complex', 'readlongcomplex', 'read long long complex', 'readlonglongcomplex', 'read bool', 'readbool', 'read bits', 'readbits', 'read long bits', 'readlongbits', 'read long long bits', 'readlonglongbits', 'read char', 'readchar', 'read string', 'readstring', 'print int', 'printint', 'print long int', 'printlongint', 'print long long int', 'printlonglongint', 'print real', 'printreal', 'print long real', 'printlongreal', 'print long long real', 'printlonglongreal', 'print complex', 'printcomplex', 'print long complex', 'printlongcomplex', 'print long long complex', 'printlonglongcomplex', 'print bool', 'printbool', 'print bits', 'printbits', 'print long bits', 'printlongbits', 'print long long bits', 'printlonglongbits', 'print char', 'printchar', 'print string', 'printstring', 'whole', 'fixed', 'float'), + 23 => array('pi', 'long pi', 'longpi', 'long long pi', 'longlongpi'), + 24 => array('sqrt', 'curt', 'cbrt', 'exp', 'ln', 'log', 'sin', 'arc sin', 'arcsin', 'cos', 'arc cos', 'arccos', 'tan', 'arc tan', 'arctan', 'long sqrt', 'longsqrt', 'long curt', 'longcurt', 'long cbrt', 'longcbrt', 'long exp', 'longexp', 'long ln', 'longln', 'long log', 'longlog', 'long sin', 'longsin', 'long arc sin', 'longarcsin', 'long cos', 'longcos', 'long arc cos', 'longarccos', 'long tan', 'longtan', 'long arc tan', 'longarctan', 'long long sqrt', 'longlongsqrt', 'long long curt', 'longlongcurt', 'long long cbrt', 'longlongcbrt', 'long long exp', 'longlongexp', 'long long ln', 'longlongln', 'long long log', 'longlonglog', 'long long sin', 'longlongsin', 'long long arc sin', 'longlongarcsin', 'long long cos', 'longlongcos', 'long long arc cos', 'longlongarccos', 'long long tan', 'longlongtan', 'long long arc tan', 'longlongarctan'), + 25 => array('first random', 'firstrandom', 'next random', 'nextrandom', 'long next random', 'longnextrandom', 'long long next random', 'longlongnextrandom'), + 26 => array('real', 'bits pack', 'bitspack', 'long bits pack', 'longbitspack', 'long long bits pack', 'longlongbitspack', 'bytes pack', 'bytespack', 'long bytes pack', 'longbytespack', 'char in string', 'charinstring', 'last char in string', 'lastcharinstring', 'string in string', 'stringinstring'), + 27 => array('utc time', 'utctime', 'local time', 'localtime', 'argc', 'argv', 'get env', 'getenv', 'reset errno', 'reseterrno', 'errno', 'strerror'), + 28 => array('sinh', 'long sinh', 'longsinh', 'long long sinh', 'longlongsinh', 'arc sinh', 'arcsinh', 'long arc sinh', 'longarcsinh', 'long long arc sinh', 'longlongarcsinh', 'cosh', 'long cosh', 'longcosh', 'long long cosh', 'longlongcosh', 'arc cosh', 'arccosh', 'long arc cosh', 'longarccosh', 'long long arc cosh', 'longlongarccosh', 'tanh', 'long tanh', 'longtanh', 'long long tanh', 'longlongtanh', 'arc tanh', 'arctanh', 'long arc tanh', 'longarctanh', 'long long arc tanh', 'longlongarctanh', 'arc tan2', 'arctan2', 'long arc tan2', 'longarctan2', 'long long arc tan2', 'longlongarctan2'), + 29 => array('complex sqrt', 'complexsqrt', 'long complex sqrt', 'longcomplexsqrt', 'long long complex sqrt', 'longlongcomplexsqrt', 'complex exp', 'complexexp', 'long complex exp', 'longcomplexexp', 'long long complex exp', 'longlongcomplexexp', 'complex ln', 'complexln', 'long complex ln', 'longcomplexln', 'long long complex ln', 'longlongcomplexln', 'complex sin', 'complexsin', 'long complex sin', 'longcomplexsin', 'long long complex sin', 'longlongcomplexsin', 'complex arc sin', 'complexarcsin', 'long complex arc sin', 'longcomplexarcsin', 'long long complex arc sin', 'longlongcomplexarcsin', 'complex cos', 'complexcos', 'long complex cos', 'longcomplexcos', 'long long complex cos', 'longlongcomplexcos', 'complex arc cos', 'complexarccos', 'long complex arc cos', 'longcomplexarccos', 'long long complex arc cos', 'longlongcomplexarccos', 'complex tan', 'complextan', 'long complex tan', 'longcomplextan', 'long long complex tan', 'longlongcomplextan', 'complex arc tan', 'complexarctan', 'long complex arc tan', 'longcomplexarctan', 'long long complex arc tan', 'longlongcomplexarctan', 'complex sinh', 'complexsinh', 'complex arc sinh', 'complexarcsinh', 'complex cosh', 'complexcosh', 'complex arc cosh', 'complexarccosh', 'complex tanh', 'complextanh', 'complex arc tanh', 'complexarctanh') + ), + 'SYMBOLS' => array( + 1 => array( /* reverse length sorted... */ '÷×:=', '%×:=', ':≠:', '÷*:=', '÷::=', '%*:=', ':/=:', '×:=', '÷:=', '÷×', '%:=', '%×', '*:=', '+:=', '+=:', '+×', '-:=', '/:=', '::=', ':=:', '÷*', '÷:', '↑', '↓', '∧', '∨', '≠', '≤', '≥', '⊥', '⌈', '⌊', '⎧', '⎩', /* 'â¨', */ 'â–¡', 'â—‹', '%*', '**', '+*', '/=', '::', '/\\', '\\/', '<=', '>=', '|:', '~=', '¬', '×', '÷', '!', '%', '&', '(', ')', '*', '+', ',', '-', '/', ':', ';', '<', '=', '>', '?', '@', '[', ']', '^', '{', '|', '}', '~') + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + 5 => true, + 6 => true, + 7 => true, + 8 => true, +# 9 => true, + 10 => true, + 11 => true, + 12 => true, +# 13 => true, + 14 => true, + 15 => true, + 16 => true, + 17 => true, + 18 => true, + 19 => true, + 20 => true, + 21 => true, + 22 => true, + 23 => true, + 24 => true, + 25 => true, + 26 => true, + 27 => true, + 28 => true, + 29 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => $a68['NONSTD'], 2 => $a68['BOLD'], 3 => $a68['BOLD'], 4 => $a68['BOLD'], + 5 => $a68['NONSTD'], 6 => $a68['BOLD'], 7 => $a68['BOLD'], 8 => $a68['BOLD'], + /* 9 => $a68['BOLD'],*/ 10 => $a68['BOLD'], 11 => $a68['BOLD'], 12 => $a68['BOLD'], + /* 13 => $a68['BOLD'],*/ 14 => $a68['BOLD'], 15 => $a68['BOLD'], 16 => $a68['BOLD'], 17 => $a68['BOLD'], + 18 => $a68['NONSTD'], 19 => $a68['NONSTD'], + 20 => $a68['ITALIC'], 21 => $a68['ITALIC'], 22 => $a68['ITALIC'], 23 => $a68['ITALIC'], + 24 => $a68['ITALIC'], 25 => $a68['ITALIC'], 26 => $a68['ITALIC'], 27 => $a68['ITALIC'], + 28 => $a68['ITALIC'], 29 => $a68['ITALIC'] + ), + 'COMMENTS' => array( + 1 => $a68['COMMENT'], 2 => $a68['COMMENT'], 3 => $a68['COMMENT'], /* 4 => $a68['COMMENT'], + 5 => $a68['COMMENT'],*/ 'MULTI' => $a68['COMMENT'] + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #0000ff;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;', + ), + 'METHODS' => array( + 0 => 'color: #004000;', + 1 => 'color: #004000;' + ), + 'SYMBOLS' => array( + 0 => 'color: #339933;', + 1 => 'color: #339933;' + ), + 'REGEXPS' => array( + 0 => 'color: #cc66cc;', # BITS # + 1 => 'color: #cc66cc;', # REAL # + /* 2 => 'color: #cc66cc;', # INT # */ + ), + 'SCRIPT' => array() + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', +# 9 => '', + 10 => '', + 11 => '', + 12 => '', +# 13 => '', + 14 => '', + 15 => '', + 16 => '', + 17 => '', + 18 => '', + 19 => '', + 20 => '', + 21 => '', + 22 => '', + 23 => '', + 24 => '', + 25 => '', + 26 => '', + 27 => '', + 28 => '', + 29 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 0 => '→', + 1 => 'OF' + ), + 'REGEXPS' => array( + 0 => $a68['BITS'], + 1 => $a68['REAL'] + # 2 => $a68['INT'], # Breaks formatting for some reason # + # 2 => $GESHI_NUMBER_INT_BASIC # Also breaks formatting # + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array() +); + +unset($a68); diff --git a/includes/geshi/apache.php b/includes/geshi/apache.php new file mode 100644 index 0000000..799f250 --- /dev/null +++ b/includes/geshi/apache.php @@ -0,0 +1,481 @@ + 'Apache configuration', + 'COMMENT_SINGLE' => array(1 => '#'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + /*keywords*/ + 1 => array( + //core.c + 'AcceptFilter','AcceptPathInfo','AccessConfig','AccessFileName', + 'AddDefaultCharset','AddOutputFilterByType','AllowEncodedSlashes', + 'AllowOverride','AuthName','AuthType','ContentDigest', + 'CoreDumpDirectory','DefaultType','DocumentRoot','EnableMMAP', + 'EnableSendfile','ErrorDocument','ErrorLog','FileETag','ForceType', + 'HostnameLookups','Include','LimitInternalRecursion', + 'LimitRequestBody','LimitRequestFields','LimitRequestFieldsize', + 'LimitRequestLine','LimitXMLRequestBody','LogLevel','MaxMemFree', + 'MaxRequestsPerChild','NameVirtualHost','Options','PidFile','Port', + 'Protocol','Require','RLimitCPU','RLimitMEM','RLimitNPROC', + 'Satisfy','ScoreBoardFile','ServerAdmin','ServerAlias','ServerName', + 'ServerPath','ServerRoot','ServerSignature','ServerTokens', + 'SetHandler','SetInputFilter','SetOutputFilter','ThreadStackSize', + 'Timeout','TraceEnable','UseCanonicalName', + 'UseCanonicalPhysicalPort', + + //http_core.c + 'KeepAlive','KeepAliveTimeout','MaxKeepAliveRequests', + + //mod_actions.c + 'Action','Script', + + //mod_alias.c + 'Alias','AliasMatch','Redirect','RedirectMatch','RedirectPermanent', + 'RedirectTemp','ScriptAlias','ScriptAliasMatch', + + //mod_asis.c + + //mod_auth_basic.c + 'AuthBasicAuthoritative','AuthBasicProvider', + + //mod_auth_digest.c + 'AuthDigestAlgorithm','AuthDigestDomain','AuthDigestNcCheck', + 'AuthDigestNonceFormat','AuthDigestNonceLifetime', + 'AuthDigestProvider','AuthDigestQop','AuthDigestShmemSize', + + //mod_authn_alias.c + + //mod_authn_anon.c + 'Anonymous','Anonymous_LogEmail','Anonymous_MustGiveEmail', + 'Anonymous_NoUserId','Anonymous_VerifyEmail', + + //mod_authn_dbd.c + 'AuthDBDUserPWQuery','AuthDBDUserRealmQuery', + + //mod_authn_dbm.c + 'AuthDBMType','AuthDBMUserFile', + + //mod_authn_default.c + 'AuthDefaultAuthoritative', + + //mod_authn_file.c + 'AuthUserFile', + + //mod_authnz_ldap.c + 'AuthLDAPBindDN','AuthLDAPBindPassword','AuthLDAPCharsetConfig', + 'AuthLDAPCompareDNOnServer','AuthLDAPDereferenceAliases', + 'AuthLDAPGroupAttribute','AuthLDAPGroupAttributeIsDN', + 'AuthLDAPRemoteUserAttribute','AuthLDAPRemoteUserIsDN', + 'AuthLDAPURL','AuthzLDAPAuthoritative', + + //mod_authz_dbm.c + 'AuthDBMGroupFile','AuthzDBMAuthoritative','AuthzDBMType', + + //mod_authz_default.c + 'AuthzDefaultAuthoritative', + + //mod_authz_groupfile.c + 'AuthGroupFile','AuthzGroupFileAuthoritative', + + //mod_authz_host.c + 'Allow','Deny','Order', + + //mod_authz_owner.c + 'AuthzOwnerAuthoritative', + + //mod_authz_svn.c + 'AuthzForceUsernameCase','AuthzSVNAccessFile','AuthzSVNAnonymous', + 'AuthzSVNAuthoritative','AuthzSVNNoAuthWhenAnonymousAllowed', + + //mod_authz_user.c + 'AuthzUserAuthoritative', + + //mod_autoindex.c + 'AddAlt','AddAltByEncoding','AddAltByType','AddDescription', + 'AddIcon','AddIconByEncoding','AddIconByType','DefaultIcon', + 'FancyIndexing','HeaderName','IndexHeadInsert','IndexIgnore', + 'IndexOptions','IndexOrderDefault','IndexStyleSheet','ReadmeName', + + //mod_bt.c + 'Tracker','TrackerDetailURL','TrackerFlags','TrackerHashMaxAge', + 'TrackerHashMinAge','TrackerHashWatermark','TrackerHome', + 'TrackerReturnInterval','TrackerReturnMax', + 'TrackerReturnPeerFactor','TrackerReturnPeers','TrackerRootInclude', + 'TrackerStyleSheet', + + //mod_bw.c + 'BandWidth','BandWidthError','BandWidthModule','BandWidthPacket', + 'ForceBandWidthModule','LargeFileLimit','MaxConnection', + 'MinBandWidth', + + //mod_cache.c + 'CacheDefaultExpire','CacheDisable','CacheEnable', + 'CacheIgnoreCacheControl','CacheIgnoreHeaders', + 'CacheIgnoreNoLastMod','CacheIgnoreQueryString', + 'CacheLastModifiedFactor','CacheMaxExpire','CacheStoreNoStore', + 'CacheStorePrivate', + + //mod_cern_meta.c + 'MetaDir','MetaFiles','MetaSuffix', + + //mod_cgi.c + 'ScriptLog','ScriptLogBuffer','ScriptLogLength', + + //mod_charset_lite.c + 'CharsetDefault','CharsetOptions','CharsetSourceEnc', + + //mod_dav.c + 'DAV','DAVDepthInfinity','DAVMinTimeout', + + //mod_dav_fs.c + 'DAVLockDB', + + //mod_dav_lock.c + 'DAVGenericLockDB', + + //mod_dav_svn.c + 'SVNActivitiesDB','SVNAllowBulkUpdates','SVNAutoversioning', + 'SVNIndexXSLT','SVNListParentPath','SVNMasterURI','SVNParentPath', + 'SVNPath','SVNPathAuthz','SVNReposName','SVNSpecialURI', + + //mod_dbd.c + 'DBDExptime','DBDKeep','DBDMax','DBDMin','DBDParams','DBDPersist', + 'DBDPrepareSQL','DBDriver', + + //mod_deflate.c + 'DeflateBufferSize','DeflateCompressionLevel','DeflateFilterNote', + 'DeflateMemLevel','DeflateWindowSize', + + //mod_dir.c + 'DirectoryIndex','DirectorySlash', + + //mod_disk_cache.c + 'CacheDirLength','CacheDirLevels','CacheMaxFileSize', + 'CacheMinFileSize','CacheRoot', + + //mod_dumpio.c + 'DumpIOInput','DumpIOLogLevel','DumpIOOutput', + + //mod_env.c + 'PassEnv','SetEnv','UnsetEnv', + + //mod_expires.c + 'ExpiresActive','ExpiresByType','ExpiresDefault', + + //mod_ext_filter.c + 'ExtFilterDefine','ExtFilterOptions', + + //mod_file_cache.c + 'cachefile','mmapfile', + + //mod_filter.c + 'FilterChain','FilterDeclare','FilterProtocol','FilterProvider', + 'FilterTrace', + + //mod_gnutls.c + 'GnuTLSCache','GnuTLSCacheTimeout','GnuTLSCertificateFile', + 'GnuTLSKeyFile','GnuTLSPGPCertificateFile','GnuTLSPGPKeyFile', + 'GnuTLSClientVerify','GnuTLSClientCAFile','GnuTLSPGPKeyringFile', + 'GnuTLSEnable','GnuTLSDHFile','GnuTLSRSAFile','GnuTLSSRPPasswdFile', + 'GnuTLSSRPPasswdConfFile','GnuTLSPriorities', + 'GnuTLSExportCertificates', + + //mod_headers.c + 'Header','RequestHeader', + + //mod_imagemap.c + 'ImapBase','ImapDefault','ImapMenu', + + //mod_include.c + 'SSIAccessEnable','SSIEndTag','SSIErrorMsg','SSIStartTag', + 'SSITimeFormat','SSIUndefinedEcho','XBitHack', + + //mod_ident.c + 'IdentityCheck','IdentityCheckTimeout', + + //mod_info.c + 'AddModuleInfo', + + //mod_isapi.c + 'ISAPIAppendLogToErrors','ISAPIAppendLogToQuery','ISAPICacheFile', + 'ISAPIFakeAsync','ISAPILogNotSupported','ISAPIReadAheadBuffer', + + //mod_log_config.c + 'BufferedLogs','CookieLog','CustomLog','LogFormat','TransferLog', + + //mod_log_forensic.c + 'ForensicLog', + + //mod_log_rotate.c + 'RotateInterval','RotateLogs','RotateLogsLocalTime', + + //mod_logio.c + + //mod_mem_cache.c + 'MCacheMaxObjectCount','MCacheMaxObjectSize', + 'MCacheMaxStreamingBuffer','MCacheMinObjectSize', + 'MCacheRemovalAlgorithm','MCacheSize', + + //mod_mime.c + 'AddCharset','AddEncoding','AddHandler','AddInputFilter', + 'AddLanguage','AddOutputFilter','AddType','DefaultLanguage', + 'ModMimeUsePathInfo','MultiviewsMatch','RemoveCharset', + 'RemoveEncoding','RemoveHandler','RemoveInputFilter', + 'RemoveLanguage','RemoveOutputFilter','RemoveType','TypesConfig', + + //mod_mime_magic.c + 'MimeMagicFile', + + //mod_negotiation.c + 'CacheNegotiatedDocs','ForceLanguagePriority','LanguagePriority', + + //mod_php5.c + 'php_admin_flag','php_admin_value','php_flag','php_value', + 'PHPINIDir', + + //mod_proxy.c + 'AllowCONNECT','BalancerMember','NoProxy','ProxyBadHeader', + 'ProxyBlock','ProxyDomain','ProxyErrorOverride', + 'ProxyFtpDirCharset','ProxyIOBufferSize','ProxyMaxForwards', + 'ProxyPass','ProxyPassInterpolateEnv','ProxyPassMatch', + 'ProxyPassReverse','ProxyPassReverseCookieDomain', + 'ProxyPassReverseCookiePath','ProxyPreserveHost', + 'ProxyReceiveBufferSize','ProxyRemote','ProxyRemoteMatch', + 'ProxyRequests','ProxySet','ProxyStatus','ProxyTimeout','ProxyVia', + + //mod_proxy_ajp.c + + //mod_proxy_balancer.c + + //mod_proxy_connect.c + + //mod_proxy_ftp.c + + //mod_proxy_http.c + + //mod_rewrite.c + 'RewriteBase','RewriteCond','RewriteEngine','RewriteLock', + 'RewriteLog','RewriteLogLevel','RewriteMap','RewriteOptions', + 'RewriteRule', + + //mod_setenvif.c + 'BrowserMatch','BrowserMatchNoCase','SetEnvIf','SetEnvIfNoCase', + + //mod_so.c + 'LoadFile','LoadModule', + + //mod_speling.c + 'CheckCaseOnly','CheckSpelling', + + //mod_ssl.c + 'SSLCACertificateFile','SSLCACertificatePath','SSLCADNRequestFile', + 'SSLCADNRequestPath','SSLCARevocationFile','SSLCARevocationPath', + 'SSLCertificateChainFile','SSLCertificateFile', + 'SSLCertificateKeyFile','SSLCipherSuite','SSLCryptoDevice', + 'SSLEngine','SSLHonorCipherOrder','SSLMutex','SSLOptions', + 'SSLPassPhraseDialog','SSLProtocol','SSLProxyCACertificateFile', + 'SSLProxyCACertificatePath','SSLProxyCARevocationFile', + 'SSLProxyCARevocationPath','SSLProxyCipherSuite','SSLProxyEngine', + 'SSLProxyMachineCertificateFile','SSLProxyMachineCertificatePath', + 'SSLProxyProtocol','SSLProxyVerify','SSLProxyVerifyDepth', + 'SSLRandomSeed','SSLRenegBufferSize','SSLRequire','SSLRequireSSL', + 'SSLSessionCache','SSLSessionCacheTimeout','SSLUserName', + 'SSLVerifyClient','SSLVerifyDepth', + + //mod_status.c + 'ExtendedStatus','SeeRequestTail', + + //mod_substitute.c + 'Substitute', + + //mod_suexec.c + 'SuexecUserGroup', + + //mod_unique_id.c + + //mod_upload_progress + 'ReportUploads', 'TrackUploads', 'UploadProgressSharedMemorySize', + + //mod_userdir.c + 'UserDir', + + //mod_usertrack.c + 'CookieDomain','CookieExpires','CookieName','CookieStyle', + 'CookieTracking', + + //mod_version.c + + //mod_vhost_alias.c + 'VirtualDocumentRoot','VirtualDocumentRootIP', + 'VirtualScriptAlias','VirtualScriptAliasIP', + + //mod_view.c + 'ViewEnable', + + //mod_win32.c + 'ScriptInterpreterSource', + + //mpm_winnt.c + 'Listen','ListenBacklog','ReceiveBufferSize','SendBufferSize', + 'ThreadLimit','ThreadsPerChild','Win32DisableAcceptEx', + + //mpm_common.c + 'AcceptMutex','AddModule','ClearModuleList','EnableExceptionHook', + 'Group','LockFile','MaxClients','MaxSpareServers','MaxSpareThreads', + 'MinSpareServers','MinSpareThreads','ServerLimit','StartServers', + 'StartThreads','User', + + //util_ldap.c + 'LDAPCacheEntries','LDAPCacheTTL','LDAPConnectionTimeout', + 'LDAPOpCacheEntries','LDAPOpCacheTTL','LDAPSharedCacheFile', + 'LDAPSharedCacheSize','LDAPTrustedClientCert', + 'LDAPTrustedGlobalCert','LDAPTrustedMode','LDAPVerifyServerCert', + + //Unknown Mods ... + 'AgentLog','BindAddress','bs2000account','CacheForceCompletion', + 'CacheGCInterval','CacheSize','NoCache','qsc','RefererIgnore', + 'RefererLog','Resourceconfig','ServerType','SingleListen' + ), + /*keywords 2*/ + 2 => array( + 'all','on','off','standalone','inetd','indexes', + 'force-response-1.0','downgrade-1.0','nokeepalive', + 'includes','followsymlinks','none', + 'x-compress','x-gzip' + ), + /*keywords 3*/ + 3 => array( + //core.c + 'Directory','DirectoryMatch','Files','FilesMatch','IfDefine', + 'IfModule','Limit','LimitExcept','Location','LocationMatch', + 'VirtualHost', + + //mod_authn_alias.c + 'AuthnProviderAlias', + + //mod_proxy.c + 'Proxy','ProxyMatch', + + //mod_version.c + 'IfVersion' + ) + ), + 'SYMBOLS' => array( + '+', '-' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #00007f;', + 2 => 'color: #0000ff;', + 3 => 'color: #000000; font-weight:bold;', + ), + 'COMMENTS' => array( + 1 => 'color: #adadad; font-style: italic;', + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #339933;' + ), + 'STRINGS' => array( + 0 => 'color: #7f007f;' + ), + 'NUMBERS' => array( + 0 => 'color: #ff0000;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #008000;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'PARSER_CONTROL' => array( + 'ENABLE_FLAGS' => array( + 'BRACKETS' => GESHI_NEVER, + 'SYMBOLS' => GESHI_NEVER + ), + 'KEYWORDS' => array( + 3 => array( + 'DISALLOWED_BEFORE' => '(?<=<|<\/)', + 'DISALLOWED_AFTER' => '(?=\s|\/|>)', + ) + ) + ) +); diff --git a/includes/geshi/applescript.php b/includes/geshi/applescript.php new file mode 100644 index 0000000..fae9bb8 --- /dev/null +++ b/includes/geshi/applescript.php @@ -0,0 +1,155 @@ + 'AppleScript', + 'COMMENT_SINGLE' => array(1 => '--'), + 'COMMENT_MULTI' => array( '(*' => '*)'), + 'COMMENT_REGEXP' => array( + 2 => '/(?<=[a-z])\'/i', + 3 => '/(? GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + 'application','close','count','delete','duplicate','exists','launch','make','move','open', + 'print','quit','reopen','run','save','saving', 'idle', 'path to', 'number', 'alias', 'list', 'text', 'string', + 'integer', 'it','me','version','pi','result','space','tab','anything','case','diacriticals','expansion', + 'hyphens','punctuation','bold','condensed','expanded','hidden','italic','outline','plain', + 'shadow','strikethrough','subscript','superscript','underline','ask','no','yes','false', 'id', + 'true','weekday','monday','mon','tuesday','tue','wednesday','wed','thursday','thu','friday', + 'fri','saturday','sat','sunday','sun','month','january','jan','february','feb','march', + 'mar','april','apr','may','june','jun','july','jul','august','aug','september', 'quote', 'do JavaScript', + 'sep','october','oct','november','nov','december','dec','minutes','hours', 'name', 'default answer', + 'days','weeks', 'folder', 'folders', 'file', 'files', 'window', 'eject', 'disk', 'reveal', 'sleep', + 'shut down', 'restart', 'display dialog', 'buttons', 'invisibles', 'item', 'items', 'delimiters', 'offset of', + 'AppleScript\'s', 'choose file', 'choose folder', 'choose from list', 'beep', 'contents', 'do shell script', + 'paragraph', 'paragraphs', 'missing value', 'quoted form', 'desktop', 'POSIX path', 'POSIX file', + 'activate', 'document', 'adding', 'receiving', 'content', 'new', 'properties', 'info for', 'bounds', + 'selection', 'extension', 'into', 'onto', 'by', 'between', 'against', 'set the clipboard to', 'the clipboard' + ), + 2 => array( + 'each','some','every','whose','where','index','first','second','third','fourth', + 'fifth','sixth','seventh','eighth','ninth','tenth','last','front','back','st','nd', + 'rd','th','middle','named','through','thru','before','after','beginning','the', 'as', + 'div','mod','and','not','or','contains','equal','equals','isnt', 'less', 'greater' + ), + 3 => array( + 'script','property','prop','end','to','set','global','local','on','of', + 'in','given','with','without','return','continue','tell','if','then','else','repeat', + 'times','while','until','from','exit','try','error','considering','ignoring','timeout', + 'transaction','my','get','put','is', 'copy' + ) + ), + 'SYMBOLS' => array( + ')','+','-','^','*','/','&','<','>=','<','<=','=','�' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #0066ff;', + 2 => 'color: #ff0033;', + 3 => 'color: #ff0033; font-weight: bold;' + ), + 'COMMENTS' => array( + 1 => 'color: #808080; font-style: italic;', + 2 => '', + 3 => 'color: #ff0000;', + 'MULTI' => 'color: #808080; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000000; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #000000;' + ), + 'STRINGS' => array( + 0 => 'color: #009900;' + ), + 'NUMBERS' => array( + 0 => 'color: #000000;' + ), + 'METHODS' => array( + 1 => 'color: #006600;', + 2 => 'color: #006600;' + ), + 'SYMBOLS' => array( + 0 => 'color: #000000;' + ), + 'REGEXPS' => array( + 0 => 'color: #339933;', + 4 => 'color: #0066ff;', + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => ',+-=<>/?^&*' + ), + 'REGEXPS' => array( + //Variables + 0 => '[\\$%@]+[a-zA-Z_][a-zA-Z0-9_]*', + //File descriptors + 4 => '<[a-zA-Z_][a-zA-Z0-9_]*>', + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 'SPACE_AS_WHITESPACE' => true + ) + ) +); diff --git a/includes/geshi/apt_sources.php b/includes/geshi/apt_sources.php new file mode 100644 index 0000000..f270ea3 --- /dev/null +++ b/includes/geshi/apt_sources.php @@ -0,0 +1,153 @@ + 'Apt sources', + 'COMMENT_SINGLE' => array(1 => '#'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array(), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + /*keywords*/ + 1 => array( + 'deb-src', 'deb' + ), + 2 => array( + //Generic + 'stable', 'old-stable', 'testing', 'testing-proposed-updates', + 'unstable', 'unstable-proposed-updates', 'experimental', + 'non-US', 'security', 'volatile', 'volatile-sloppy', + 'apt-build', + 'stable/updates', + //Debian + 'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato', 'woody', 'sarge', + 'etch', 'lenny', 'wheezy', 'jessie', 'sid', + //Ubuntu + 'warty', 'warty-updates', 'warty-security', 'warty-proposed', 'warty-backports', + 'hoary', 'hoary-updates', 'hoary-security', 'hoary-proposed', 'hoary-backports', + 'breezy', 'breezy-updates', 'breezy-security', 'breezy-proposed', 'breezy-backports', + 'dapper', 'dapper-updates', 'dapper-security', 'dapper-proposed', 'dapper-backports', + 'edgy', 'edgy-updates', 'edgy-security', 'edgy-proposed', 'edgy-backports', + 'feisty', 'feisty-updates', 'feisty-security', 'feisty-proposed', 'feisty-backports', + 'gutsy', 'gutsy-updates', 'gutsy-security', 'gutsy-proposed', 'gutsy-backports', + 'hardy', 'hardy-updates', 'hardy-security', 'hardy-proposed', 'hardy-backports', + 'intrepid', 'intrepid-updates', 'intrepid-security', 'intrepid-proposed', 'intrepid-backports', + 'jaunty', 'jaunty-updates', 'jaunty-security', 'jaunty-proposed', 'jaunty-backports', + 'karmic', 'karmic-updates', 'karmic-security', 'karmic-proposed', 'karmic-backports', + 'lucid', 'lucid-updates', 'lucid-security', 'lucid-proposed', 'lucid-backports', + 'maverick', 'maverick-updates', 'maverick-security', 'maverick-proposed', 'maverick-backports', + 'natty', 'natty-updates', 'natty-security', 'natty-proposed', 'natty-backports', + 'oneiric', 'oneiric-updates', 'oneiric-security', 'oneiric-proposed', 'oneiric-backports', + 'precise', 'precise-updates', 'precise-security', 'precise-proposed', 'precise-backports', + 'quantal', 'quantal-updates', 'quantal-security', 'quantal-proposed', 'quantal-backports', + 'raring', 'raring-updates', 'raring-security', 'raring-proposed', 'raring-backports', + 'saucy', 'saucy-updates', 'saucy-security', 'saucy-proposed', 'saucy-backports', + 'trusty', 'trusty-updates', 'trusty-security', 'trusty-proposed', 'trusty-backports' + ), + 3 => array( + 'main', 'restricted', 'preview', 'contrib', 'non-free', + 'commercial', 'universe', 'multiverse' + ) + ), + 'REGEXPS' => array( + 0 => "(((http|ftp):\/\/|file:\/)[^\s]+)|(cdrom:\[[^\]]*\][^\s]*)", + ), + 'SYMBOLS' => array( + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => true, + 3 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #00007f;', + 2 => 'color: #b1b100;', + 3 => 'color: #b16000;' + ), + 'COMMENTS' => array( + 1 => 'color: #adadad; font-style: italic;', + ), + 'ESCAPE_CHAR' => array( + ), + 'BRACKETS' => array( + ), + 'STRINGS' => array( + ), + 'NUMBERS' => array( + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + ), + 'REGEXPS' => array( + 0 => 'color: #009900;', + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'PARSER_CONTROL' => array( + 'ENABLE_FLAGS' => array( + 'NUMBERS' => GESHI_NEVER, + 'METHODS' => GESHI_NEVER, + 'SCRIPT' => GESHI_NEVER, + 'SYMBOLS' => GESHI_NEVER, + 'ESCAPE_CHAR' => GESHI_NEVER, + 'BRACKETS' => GESHI_NEVER, + 'STRINGS' => GESHI_NEVER, + ), + 'KEYWORDS' => array( + 'DISALLOWED_BEFORE' => '(?|^\/])', + 'DISALLOWED_AFTER' => '(?![a-zA-Z0-9_\|%\\-&\.])' + ) + ), + 'TAB_WIDTH' => 4 +); diff --git a/includes/geshi/arm.php b/includes/geshi/arm.php new file mode 100644 index 0000000..dd2870c --- /dev/null +++ b/includes/geshi/arm.php @@ -0,0 +1,3316 @@ + 'ARM ASSEMBLER', + 'COMMENT_SINGLE' => array( + 1 => ';' + ), + 'COMMENT_MULTI' => array(), + //Line address prefix suppression + 'COMMENT_REGEXP' => array( + 2 => "/^(?:[0-9a-f]{0,4}:)?[0-9a-f]{4}(?:[0-9a-f]{4})?/mi" + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + /* Unconditional Data Processing Instructions */ + 1 => array( + /* Data Processing: Unconditional Addition & Subtraction */ + 'adc.w','adcal.w', + 'adc','adcal', + 'add.w','addal.w', + 'add','addal', + 'addw','addwal', + 'rsb.w','rsbal.w', + 'rsb','rsbal', + 'rsc','rscal', + 'sbc.w','sbcal.w', + 'sbc','sbcal', + 'sub.w','subal.w', + 'sub','subal', + 'neg.w','negal.w', + 'neg','negal', + 'adr.w','adral.w', + 'adr','adral', + /* Data Processing: Unconditional Logical */ + 'and.w','andal.w', + 'and','andal', + 'bic.w','bical.w', + 'bic','bical', + 'orr.w','orral.w', + 'orr','orral', + 'orn.w','ornal.w', + 'orn','ornal', + 'eor.w','eoral.w', + 'eor','eoral', + 'mov.w','moval.w', + 'mov','moval', + 'movw','movwal', + 'movt','movtal', + 'cpy','cpyal', + 'mvn.w','mvnal.w', + 'mvn','mvnal', + /* Data Processing: Unconditional Shifts and Rotates */ + 'asr.w','asral.w', + 'asr','asral', + 'lsl.w','lslal.w', + 'lsl','lslal', + 'lsr.w','lsral.w', + 'lsr','lsral', + 'ror.w','roral.w', + 'ror','roral', + 'rrx','rrxal', + /* Data Processing: Unconditional Word Multiply and Multiply-Add */ + 'mul','mulal', + 'mla','mlaal', + 'mls','mlsal', + 'smull','smullal', + 'muls','mulsal', + 'umull','umullal', + 'smlal','smlalal', + 'umlal','umlalal', + /* Data Processing: Unconditional Halfword Multiply and Multiply-Add (ARMv5TE) */ + 'smulbb','smulbbal', + 'smulbt','smulbtal', + 'smultb','smultbal', + 'smultt','smulttal', + 'smulwb','smulwbal', + 'smulwt','smulwtal', + 'smlalbb','smlalbbal', + 'smlalbt','smlalbtal', + 'smlaltb','smlaltbal', + 'smlaltt','smlalttal', + 'smlabb','smlabbal', + 'smlabt','smlabtal', + 'smlatb','smlatbal', + 'smlatt','smlattal', + 'smlawb','smlawbal', + 'smlawt','smlawtal', + /* Data Processing: Unconditional Bit Operations */ + 'ubfx','ubfxal', + 'sbfx','sbfxal', + 'bfc','bfcal', + 'bfi','bfial', + 'clz','clzal', + /* Data Processing: Unconditional Divide (ARMv7-R) */ + 'sdiv','sdival', + 'udiv','udival' + ), + /* Conditional Data Processing Instructions */ + 2 => array( + /* Data Processing: Conditional Addition & Subtraction */ + 'adceq.w','adcne.w','adccs.w','adchs.w','adccc.w','adclo.w','adcmi.w','adcpl.w','adcvs.w','adcvc.w','adchi.w','adcls.w','adcge.w','adclt.w','adcgt.w','adcle.w', + 'adceq','adcne','adccs','adchs','adccc','adclo','adcmi','adcpl','adcvs','adcvc','adchi','adcls','adcge','adclt','adcgt','adcle', + 'addeq.w','addne.w','addcs.w','addhs.w','addcc.w','addlo.w','addmi.w','addpl.w','addvs.w','addvc.w','addhi.w','addls.w','addge.w','addlt.w','addgt.w','addle.w', + 'addeq','addne','addcs','addhs','addcc','addlo','addmi','addpl','addvs','addvc','addhi','addls','addge','addlt','addgt','addle', + 'addweq','addwne','addwcs','addwhs','addwcc','addwlo','addwmi','addwpl','addwvs','addwvc','addwhi','addwls','addwge','addwlt','addwgt','addwle', + 'rsbeq.w','rsbne.w','rsbcs.w','rsbhs.w','rsbcc.w','rsblo.w','rsbmi.w','rsbpl.w','rsbvs.w','rsbvc.w','rsbhi.w','rsbls.w','rsbge.w','rsblt.w','rsbgt.w','rsble.w', + 'rsbeq','rsbne','rsbcs','rsbhs','rsbcc','rsblo','rsbmi','rsbpl','rsbvs','rsbvc','rsbhi','rsbls','rsbge','rsblt','rsbgt','rsble', + 'rsceq','rscne','rsccs','rschs','rsccc','rsclo','rscmi','rscpl','rscvs','rscvc','rschi','rscls','rscge','rsclt','rscgt','rscle', + 'sbceq.w','sbcne.w','sbccs.w','sbchs.w','sbccc.w','sbclo.w','sbcmi.w','sbcpl.w','sbcvs.w','sbcvc.w','sbchi.w','sbcls.w','sbcge.w','sbclt.w','sbcgt.w','sbcle.w', + 'sbceq','sbcne','sbccs','sbchs','sbccc','sbclo','sbcmi','sbcpl','sbcvs','sbcvc','sbchi','sbcls','sbcge','sbclt','sbcgt','sbcle', + 'subeq.w','subne.w','subcs.w','subhs.w','subcc.w','sublo.w','submi.w','subpl.w','subvs.w','subvc.w','subhi.w','subls.w','subge.w','sublt.w','subgt.w','suble.w', + 'subeq','subne','subcs','subhs','subcc','sublo','submi','subpl','subvs','subvc','subhi','subls','subge','sublt','subgt','suble', + 'negeq.w','negne.w','negcs.w','neghs.w','negcc.w','neglo.w','negmi.w','negpl.w','negvs.w','negvc.w','neghi.w','negls.w','negge.w','neglt.w','neggt.w','negle.w', + 'negeq','negne','negcs','neghs','negcc','neglo','negmi','negpl','negvs','negvc','neghi','negls','negge','neglt','neggt','negle', + 'adreq.w','adrne.w','adrcs.w','adrhs.w','adrcc.w','adrlo.w','adrmi.w','adrpl.w','adrvs.w','adrvc.w','adrhi.w','adrls.w','adrge.w','adrlt.w','adrgt.w','adrle.w', + 'adreq','adrne','adrcs','adrhs','adrcc','adrlo','adrmi','adrpl','adrvs','adrvc','adrhi','adrls','adrge','adrlt','adrgt','adrle', + /* Data Processing: Conditional Logical */ + 'andeq.w','andne.w','andcs.w','andhs.w','andcc.w','andlo.w','andmi.w','andpl.w','andvs.w','andvc.w','andhi.w','andls.w','andge.w','andlt.w','andgt.w','andle.w', + 'andeq','andne','andcs','andhs','andcc','andlo','andmi','andpl','andvs','andvc','andhi','andls','andge','andlt','andgt','andle', + 'biceq.w','bicne.w','biccs.w','bichs.w','biccc.w','biclo.w','bicmi.w','bicpl.w','bicvs.w','bicvc.w','bichi.w','bicls.w','bicge.w','biclt.w','bicgt.w','bicle.w', + 'biceq','bicne','biccs','bichs','biccc','biclo','bicmi','bicpl','bicvs','bicvc','bichi','bicls','bicge','biclt','bicgt','bicle', + 'orreq.w','orrne.w','orrcs.w','orrhs.w','orrcc.w','orrlo.w','orrmi.w','orrpl.w','orrvs.w','orrvc.w','orrhi.w','orrls.w','orrge.w','orrlt.w','orrgt.w','orrle.w', + 'orreq','orrne','orrcs','orrhs','orrcc','orrlo','orrmi','orrpl','orrvs','orrvc','orrhi','orrls','orrge','orrlt','orrgt','orrle', + 'orneq.w','ornne.w','orncs.w','ornhs.w','orncc.w','ornlo.w','ornmi.w','ornpl.w','ornvs.w','ornvc.w','ornhi.w','ornls.w','ornge.w','ornlt.w','orngt.w','ornle.w', + 'orneq','ornne','orncs','ornhs','orncc','ornlo','ornmi','ornpl','ornvs','ornvc','ornhi','ornls','ornge','ornlt','orngt','ornle', + 'eoreq.w','eorne.w','eorcs.w','eorhs.w','eorcc.w','eorlo.w','eormi.w','eorpl.w','eorvs.w','eorvc.w','eorhi.w','eorls.w','eorge.w','eorlt.w','eorgt.w','eorle.w', + 'eoreq','eorne','eorcs','eorhs','eorcc','eorlo','eormi','eorpl','eorvs','eorvc','eorhi','eorls','eorge','eorlt','eorgt','eorle', + 'moveq.w','movne.w','movcs.w','movhs.w','movcc.w','movlo.w','movmi.w','movpl.w','movvs.w','movvc.w','movhi.w','movls.w','movge.w','movlt.w','movgt.w','movle.w', + 'moveq','movne','movcs','movhs','movcc','movlo','movmi','movpl','movvs','movvc','movhi','movls','movge','movlt','movgt','movle', + 'movweq','movwne','movwcs','movwhs','movwcc','movwlo','movwmi','movwpl','movwvs','movwvc','movwhi','movwls','movwge','movwlt','movwgt','movwle', + 'movteq','movtne','movtcs','movths','movtcc','movtlo','movtmi','movtpl','movtvs','movtvc','movthi','movtls','movtge','movtlt','movtgt','movtle', + 'cpyeq','cpyne','cpycs','cpyhs','cpycc','cpylo','cpymi','cpypl','cpyvs','cpyvc','cpyhi','cpyls','cpyge','cpylt','cpygt','cpyle', + 'mvneq.w','mvnne.w','mvncs.w','mvnhs.w','mvncc.w','mvnlo.w','mvnmi.w','mvnpl.w','mvnvs.w','mvnvc.w','mvnhi.w','mvnls.w','mvnge.w','mvnlt.w','mvngt.w','mvnle.w', + 'mvneq','mvnne','mvncs','mvnhs','mvncc','mvnlo','mvnmi','mvnpl','mvnvs','mvnvc','mvnhi','mvnls','mvnge','mvnlt','mvngt','mvnle', + /* Data Processing: Conditional Shifts and Rotates */ + 'asreq.w','asrne.w','asrcs.w','asrhs.w','asrcc.w','asrlo.w','asrmi.w','asrpl.w','asrvs.w','asrvc.w','asrhi.w','asrls.w','asrge.w','asrlt.w','asrgt.w','asrle.w', + 'asreq','asrne','asrcs','asrhs','asrcc','asrlo','asrmi','asrpl','asrvs','asrvc','asrhi','asrls','asrge','asrlt','asrgt','asrle', + 'lsleq.w','lslne.w','lslcs.w','lslhs.w','lslcc.w','lsllo.w','lslmi.w','lslpl.w','lslvs.w','lslvc.w','lslhi.w','lslls.w','lslge.w','lsllt.w','lslgt.w','lslle.w', + 'lsleq','lslne','lslcs','lslhs','lslcc','lsllo','lslmi','lslpl','lslvs','lslvc','lslhi','lslls','lslge','lsllt','lslgt','lslle', + 'lsreq.w','lsrne.w','lsrcs.w','lsrhs.w','lsrcc.w','lsrlo.w','lsrmi.w','lsrpl.w','lsrvs.w','lsrvc.w','lsrhi.w','lsrls.w','lsrge.w','lsrlt.w','lsrgt.w','lsrle.w', + 'lsreq','lsrne','lsrcs','lsrhs','lsrcc','lsrlo','lsrmi','lsrpl','lsrvs','lsrvc','lsrhi','lsrls','lsrge','lsrlt','lsrgt','lsrle', + 'roreq.w','rorne.w','rorcs.w','rorhs.w','rorcc.w','rorlo.w','rormi.w','rorpl.w','rorvs.w','rorvc.w','rorhi.w','rorls.w','rorge.w','rorlt.w','rorgt.w','rorle.w', + 'roreq','rorne','rorcs','rorhs','rorcc','rorlo','rormi','rorpl','rorvs','rorvc','rorhi','rorls','rorge','rorlt','rorgt','rorle', + 'rrxeq','rrxne','rrxcs','rrxhs','rrxcc','rrxlo','rrxmi','rrxpl','rrxvs','rrxvc','rrxhi','rrxls','rrxge','rrxlt','rrxgt','rrxle', + /* Data Processing: Conditional Word Multiply and Multiply-Add */ + 'muleq','mulne','mulcs','mulhs','mulcc','mullo','mulmi','mulpl','mulvs','mulvc','mulhi','mulls','mulge','mullt','mulgt','mulle', + 'mlaeq','mlane','mlacs','mlahs','mlacc','mlalo','mlami','mlapl','mlavs','mlavc','mlahi','mlals','mlage','mlalt','mlagt','mlale', + 'mlseq','mlsne','mlscs','mlshs','mlscc','mlslo','mlsmi','mlspl','mlsvs','mlsvc','mlshi','mlsls','mlsge','mlslt','mlsgt','mlsle', + 'smulleq','smullne','smullcs','smullhs','smullcc','smulllo','smullmi','smullpl','smullvs','smullvc','smullhi','smullls','smullge','smulllt','smullgt','smullle', + 'mulseq','mulsne','mulscs','mulshs','mulscc','mulslo','mulsmi','mulspl','mulsvs','mulsvc','mulshi','mulsls','mulsge','mulslt','mulsgt','mulsle', + 'umulleq','umullne','umullcs','umullhs','umullcc','umulllo','umullmi','umullpl','umullvs','umullvc','umullhi','umullls','umullge','umulllt','umullgt','umullle', + 'smlaleq','smlalne','smlalcs','smlalhs','smlalcc','smlallo','smlalmi','smlalpl','smlalvs','smlalvc','smlalhi','smlalls','smlalge','smlallt','smlalgt','smlalle', + 'umlaleq','umlalne','umlalcs','umlalhs','umlalcc','umlallo','umlalmi','umlalpl','umlalvs','umlalvc','umlalhi','umlalls','umlalge','umlallt','umlalgt','umlalle', + /* Data Processing: Conditional Halfword Multiply and Multiply-Add (ARMv5TE) */ + 'smulbbeq','smulbbne','smulbbcs','smulbbhs','smulbbcc','smulbblo','smulbbmi','smulbbpl','smulbbvs','smulbbvc','smulbbhi','smulbbls','smulbbge','smulbblt','smulbbgt','smulbble', + 'smulbteq','smulbtne','smulbtcs','smulbths','smulbtcc','smulbtlo','smulbtmi','smulbtpl','smulbtvs','smulbtvc','smulbthi','smulbtls','smulbtge','smulbtlt','smulbtgt','smulbtle', + 'smultbeq','smultbne','smultbcs','smultbhs','smultbcc','smultblo','smultbmi','smultbpl','smultbvs','smultbvc','smultbhi','smultbls','smultbge','smultblt','smultbgt','smultble', + 'smultteq','smulttne','smulttcs','smultths','smulttcc','smulttlo','smulttmi','smulttpl','smulttvs','smulttvc','smultthi','smulttls','smulttge','smulttlt','smulttgt','smulttle', + 'smulwbeq','smulwbne','smulwbcs','smulwbhs','smulwbcc','smulwblo','smulwbmi','smulwbpl','smulwbvs','smulwbvc','smulwbhi','smulwbls','smulwbge','smulwblt','smulwbgt','smulwble', + 'smulwteq','smulwtne','smulwtcs','smulwths','smulwtcc','smulwtlo','smulwtmi','smulwtpl','smulwtvs','smulwtvc','smulwthi','smulwtls','smulwtge','smulwtlt','smulwtgt','smulwtle', + 'smlalbbeq','smlalbbne','smlalbbcs','smlalbbhs','smlalbbcc','smlalbblo','smlalbbmi','smlalbbpl','smlalbbvs','smlalbbvc','smlalbbhi','smlalbbls','smlalbbge','smlalbblt','smlalbbgt','smlalbble', + 'smlalbteq','smlalbtne','smlalbtcs','smlalbths','smlalbtcc','smlalbtlo','smlalbtmi','smlalbtpl','smlalbtvs','smlalbtvc','smlalbthi','smlalbtls','smlalbtge','smlalbtlt','smlalbtgt','smlalbtle', + 'smlaltbeq','smlaltbne','smlaltbcs','smlaltbhs','smlaltbcc','smlaltblo','smlaltbmi','smlaltbpl','smlaltbvs','smlaltbvc','smlaltbhi','smlaltbls','smlaltbge','smlaltblt','smlaltbgt','smlaltble', + 'smlaltteq','smlalttne','smlalttcs','smlaltths','smlalttcc','smlalttlo','smlalttmi','smlalttpl','smlalttvs','smlalttvc','smlaltthi','smlalttls','smlalttge','smlalttlt','smlalttgt','smlalttle', + 'smlabbeq','smlabbne','smlabbcs','smlabbhs','smlabbcc','smlabblo','smlabbmi','smlabbpl','smlabbvs','smlabbvc','smlabbhi','smlabbls','smlabbge','smlabblt','smlabbgt','smlabble', + 'smlabteq','smlabtne','smlabtcs','smlabths','smlabtcc','smlabtlo','smlabtmi','smlabtpl','smlabtvs','smlabtvc','smlabthi','smlabtls','smlabtge','smlabtlt','smlabtgt','smlabtle', + 'smlatbeq','smlatbne','smlatbcs','smlatbhs','smlatbcc','smlatblo','smlatbmi','smlatbpl','smlatbvs','smlatbvc','smlatbhi','smlatbls','smlatbge','smlatblt','smlatbgt','smlatble', + 'smlatteq','smlattne','smlattcs','smlatths','smlattcc','smlattlo','smlattmi','smlattpl','smlattvs','smlattvc','smlatthi','smlattls','smlattge','smlattlt','smlattgt','smlattle', + 'smlawbeq','smlawbne','smlawbcs','smlawbhs','smlawbcc','smlawblo','smlawbmi','smlawbpl','smlawbvs','smlawbvc','smlawbhi','smlawbls','smlawbge','smlawblt','smlawbgt','smlawble', + 'smlawteq','smlawtne','smlawtcs','smlawths','smlawtcc','smlawtlo','smlawtmi','smlawtpl','smlawtvs','smlawtvc','smlawthi','smlawtls','smlawtge','smlawtlt','smlawtgt','smlawtle', + /* Data Processing: Conditional Bit Operations */ + 'ubfxeq','ubfxne','ubfxcs','ubfxhs','ubfxcc','ubfxlo','ubfxmi','ubfxpl','ubfxvs','ubfxvc','ubfxhi','ubfxls','ubfxge','ubfxlt','ubfxgt','ubfxle', + 'sbfxeq','sbfxne','sbfxcs','sbfxhs','sbfxcc','sbfxlo','sbfxmi','sbfxpl','sbfxvs','sbfxvc','sbfxhi','sbfxls','sbfxge','sbfxlt','sbfxgt','sbfxle', + 'bfceq','bfcne','bfccs','bfchs','bfccc','bfclo','bfcmi','bfcpl','bfcvs','bfcvc','bfchi','bfcls','bfcge','bfclt','bfcgt','bfcle', + 'bfieq','bfine','bfics','bfihs','bficc','bfilo','bfimi','bfipl','bfivs','bfivc','bfihi','bfils','bfige','bfilt','bfigt','bfile', + 'clzeq','clzne','clzcs','clzhs','clzcc','clzlo','clzmi','clzpl','clzvs','clzvc','clzhi','clzls','clzge','clzlt','clzgt','clzle', + /* ARMv7-R: Conditional Divide */ + 'sdiveq','sdivne','sdivcs','sdivhs','sdivcc','sdivlo','sdivmi','sdivpl','sdivvs','sdivvc','sdivhi','sdivls','sdivge','sdivlt','sdivgt','sdivle', + 'udiveq','udivne','udivcs','udivhs','udivcc','udivlo','udivmi','udivpl','udivvs','udivvc','udivhi','udivls','udivge','udivlt','udivgt','udivle' + ), + /* Unconditional Memory Access */ + 3 => array( + /* Memory Access: Unconditional Memory Loads and Prefetches */ + 'ldm.w','ldmal.w', + 'ldm','ldmal', + 'ldmda','ldmdaal', + 'ldmdb','ldmdbal', + 'ldmib','ldmibal', + 'ldmia','ldmiaal', + 'ldmea','ldmeaal', + 'ldmed','ldmedal', + 'ldmfa','ldmfaal', + 'ldmfd','ldmfdal', + 'ldrd','ldrdal', + 'ldr.w','ldral.w', + 'ldr','ldral', + 'ldrh.w','ldrhal.w', + 'ldrh','ldrhal', + 'ldrb.w','ldrbal.w', + 'ldrb','ldrbal', + 'ldrsh.w','ldrshal.w', + 'ldrsh','ldrshal', + 'ldrsb.w','ldrsbal.w', + 'ldrsb','ldrsbal', + 'ldrt','ldrtal', + 'ldrht','ldrhtal', + 'ldrbt','ldrbtal', + 'ldrsht','ldrshtal', + 'ldrsbt','ldrsbtal', + 'pop.w','popal.w', + 'pop','popal', + 'pld','pldal', + 'pldw','pldwal', + 'pli','plial', + /* Memory Access: Unconditional Memory Stores */ + 'stm.w','stmal.w', + 'stm','stmal', + 'stmda','stmdaal', + 'stmdb','stmdbal', + 'stmib','stmibal', + 'stmia','stmiaal', + 'stmea','stmeaal', + 'stmed','stmedal', + 'stdfa','stdfaal', + 'stdfd','stdfdal', + 'strd','strdal', + 'str.w','stral.w', + 'str','stral', + 'strh.w','strhal.w', + 'strh','strhal', + 'strb.w','strbal.w', + 'strb','strbal', + 'strt','strtal', + 'strht','strhtal', + 'strbt','strbtal', + 'push.w','pushal.w', + 'push','pushal' + ), + /* Conditional Memory Access */ + 4 => array( + /* Memory Access: Conditional Memory Loads and Prefetches */ + 'ldmeq.w','ldmne.w','ldmcs.w','ldmhs.w','ldmcc.w','ldmlo.w','ldmmi.w','ldmpl.w','ldmvs.w','ldmvc.w','ldmhi.w','ldmls.w','ldmge.w','ldmlt.w','ldmgt.w','ldmle.w', + 'ldmeq','ldmne','ldmcs','ldmhs','ldmcc','ldmlo','ldmmi','ldmpl','ldmvs','ldmvc','ldmhi','ldmls','ldmge','ldmlt','ldmgt','ldmle', + 'ldmdaeq','ldmdane','ldmdacs','ldmdahs','ldmdacc','ldmdalo','ldmdami','ldmdapl','ldmdavs','ldmdavc','ldmdahi','ldmdals','ldmdage','ldmdalt','ldmdagt','ldmdale', + 'ldmdbeq','ldmdbne','ldmdbcs','ldmdbhs','ldmdbcc','ldmdblo','ldmdbmi','ldmdbpl','ldmdbvs','ldmdbvc','ldmdbhi','ldmdbls','ldmdbge','ldmdblt','ldmdbgt','ldmdble', + 'ldmibeq','ldmibne','ldmibcs','ldmibhs','ldmibcc','ldmiblo','ldmibmi','ldmibpl','ldmibvs','ldmibvc','ldmibhi','ldmibls','ldmibge','ldmiblt','ldmibgt','ldmible', + 'ldmiaeq','ldmiane','ldmiacs','ldmiahs','ldmiacc','ldmialo','ldmiami','ldmiapl','ldmiavs','ldmiavc','ldmiahi','ldmials','ldmiage','ldmialt','ldmiagt','ldmiale', + 'ldmeaeq','ldmeane','ldmeacs','ldmeahs','ldmeacc','ldmealo','ldmeami','ldmeapl','ldmeavs','ldmeavc','ldmeahi','ldmeals','ldmeage','ldmealt','ldmeagt','ldmeale', + 'ldmedeq','ldmedne','ldmedcs','ldmedhs','ldmedcc','ldmedlo','ldmedmi','ldmedpl','ldmedvs','ldmedvc','ldmedhi','ldmedls','ldmedge','ldmedlt','ldmedgt','ldmedle', + 'ldmfaeq','ldmfane','ldmfacs','ldmfahs','ldmfacc','ldmfalo','ldmfami','ldmfapl','ldmfavs','ldmfavc','ldmfahi','ldmfals','ldmfage','ldmfalt','ldmfagt','ldmfale', + 'ldmfdeq','ldmfdne','ldmfdcs','ldmfdhs','ldmfdcc','ldmfdlo','ldmfdmi','ldmfdpl','ldmfdvs','ldmfdvc','ldmfdhi','ldmfdls','ldmfdge','ldmfdlt','ldmfdgt','ldmfdle', + 'ldrdeq','ldrdne','ldrdcs','ldrdhs','ldrdcc','ldrdlo','ldrdmi','ldrdpl','ldrdvs','ldrdvc','ldrdhi','ldrdls','ldrdge','ldrdlt','ldrdgt','ldrdle', + 'ldreq.w','ldrne.w','ldrcs.w','ldrhs.w','ldrcc.w','ldrlo.w','ldrmi.w','ldrpl.w','ldrvs.w','ldrvc.w','ldrhi.w','ldrls.w','ldrge.w','ldrlt.w','ldrgt.w','ldrle.w', + 'ldreq','ldrne','ldrcs','ldrhs','ldrcc','ldrlo','ldrmi','ldrpl','ldrvs','ldrvc','ldrhi','ldrls','ldrge','ldrlt','ldrgt','ldrle', + 'ldrheq.w','ldrhne.w','ldrhcs.w','ldrhhs.w','ldrhcc.w','ldrhlo.w','ldrhmi.w','ldrhpl.w','ldrhvs.w','ldrhvc.w','ldrhhi.w','ldrhls.w','ldrhge.w','ldrhlt.w','ldrhgt.w','ldrhle.w', + 'ldrheq','ldrhne','ldrhcs','ldrhhs','ldrhcc','ldrhlo','ldrhmi','ldrhpl','ldrhvs','ldrhvc','ldrhhi','ldrhls','ldrhge','ldrhlt','ldrhgt','ldrhle', + 'ldrbeq.w','ldrbne.w','ldrbcs.w','ldrbhs.w','ldrbcc.w','ldrblo.w','ldrbmi.w','ldrbpl.w','ldrbvs.w','ldrbvc.w','ldrbhi.w','ldrbls.w','ldrbge.w','ldrblt.w','ldrbgt.w','ldrble.w', + 'ldrbeq','ldrbne','ldrbcs','ldrbhs','ldrbcc','ldrblo','ldrbmi','ldrbpl','ldrbvs','ldrbvc','ldrbhi','ldrbls','ldrbge','ldrblt','ldrbgt','ldrble', + 'ldrsheq.w','ldrshne.w','ldrshcs.w','ldrshhs.w','ldrshcc.w','ldrshlo.w','ldrshmi.w','ldrshpl.w','ldrshvs.w','ldrshvc.w','ldrshhi.w','ldrshls.w','ldrshge.w','ldrshlt.w','ldrshgt.w','ldrshle.w', + 'ldrsheq','ldrshne','ldrshcs','ldrshhs','ldrshcc','ldrshlo','ldrshmi','ldrshpl','ldrshvs','ldrshvc','ldrshhi','ldrshls','ldrshge','ldrshlt','ldrshgt','ldrshle', + 'ldrsbeq.w','ldrsbne.w','ldrsbcs.w','ldrsbhs.w','ldrsbcc.w','ldrsblo.w','ldrsbmi.w','ldrsbpl.w','ldrsbvs.w','ldrsbvc.w','ldrsbhi.w','ldrsbls.w','ldrsbge.w','ldrsblt.w','ldrsbgt.w','ldrsble.w', + 'ldrsbeq','ldrsbne','ldrsbcs','ldrsbhs','ldrsbcc','ldrsblo','ldrsbmi','ldrsbpl','ldrsbvs','ldrsbvc','ldrsbhi','ldrsbls','ldrsbge','ldrsblt','ldrsbgt','ldrsble', + 'ldrteq','ldrtne','ldrtcs','ldrths','ldrtcc','ldrtlo','ldrtmi','ldrtpl','ldrtvs','ldrtvc','ldrthi','ldrtls','ldrtge','ldrtlt','ldrtgt','ldrtle', + 'ldrhteq','ldrhtne','ldrhtcs','ldrhths','ldrhtcc','ldrhtlo','ldrhtmi','ldrhtpl','ldrhtvs','ldrhtvc','ldrhthi','ldrhtls','ldrhtge','ldrhtlt','ldrhtgt','ldrhtle', + 'ldrbteq','ldrbtne','ldrbtcs','ldrbths','ldrbtcc','ldrbtlo','ldrbtmi','ldrbtpl','ldrbtvs','ldrbtvc','ldrbthi','ldrbtls','ldrbtge','ldrbtlt','ldrbtgt','ldrbtle', + 'ldrshteq','ldrshtne','ldrshtcs','ldrshths','ldrshtcc','ldrshtlo','ldrshtmi','ldrshtpl','ldrshtvs','ldrshtvc','ldrshthi','ldrshtls','ldrshtge','ldrshtlt','ldrshtgt','ldrshtle', + 'ldrsbteq','ldrsbtne','ldrsbtcs','ldrsbths','ldrsbtcc','ldrsbtlo','ldrsbtmi','ldrsbtpl','ldrsbtvs','ldrsbtvc','ldrsbthi','ldrsbtls','ldrsbtge','ldrsbtlt','ldrsbtgt','ldrsbtle', + 'popeq.w','popne.w','popcs.w','pophs.w','popcc.w','poplo.w','popmi.w','poppl.w','popvs.w','popvc.w','pophi.w','popls.w','popge.w','poplt.w','popgt.w','pople.w', + 'popeq','popne','popcs','pophs','popcc','poplo','popmi','poppl','popvs','popvc','pophi','popls','popge','poplt','popgt','pople', + 'pldeq','pldne','pldcs','pldhs','pldcc','pldlo','pldmi','pldpl','pldvs','pldvc','pldhi','pldls','pldge','pldlt','pldgt','pldle', + 'pldweq','pldwne','pldwcs','pldwhs','pldwcc','pldwlo','pldwmi','pldwpl','pldwvs','pldwvc','pldwhi','pldwls','pldwge','pldwlt','pldwgt','pldwle', + 'plieq','pline','plics','plihs','plicc','plilo','plimi','plipl','plivs','plivc','plihi','plils','plige','plilt','pligt','plile', + /* Memory Access: Conditional Memory Stores */ + 'stmeq.w','stmne.w','stmcs.w','stmhs.w','stmcc.w','stmlo.w','stmmi.w','stmpl.w','stmvs.w','stmvc.w','stmhi.w','stmls.w','stmge.w','stmlt.w','stmgt.w','stmle.w', + 'stmeq','stmne','stmcs','stmhs','stmcc','stmlo','stmmi','stmpl','stmvs','stmvc','stmhi','stmls','stmge','stmlt','stmgt','stmle', + 'stmdaeq','stmdane','stmdacs','stmdahs','stmdacc','stmdalo','stmdami','stmdapl','stmdavs','stmdavc','stmdahi','stmdals','stmdage','stmdalt','stmdagt','stmdale', + 'stmdbeq','stmdbne','stmdbcs','stmdbhs','stmdbcc','stmdblo','stmdbmi','stmdbpl','stmdbvs','stmdbvc','stmdbhi','stmdbls','stmdbge','stmdblt','stmdbgt','stmdble', + 'stmibeq','stmibne','stmibcs','stmibhs','stmibcc','stmiblo','stmibmi','stmibpl','stmibvs','stmibvc','stmibhi','stmibls','stmibge','stmiblt','stmibgt','stmible', + 'stmiaeq','stmiane','stmiacs','stmiahs','stmiacc','stmialo','stmiami','stmiapl','stmiavs','stmiavc','stmiahi','stmials','stmiage','stmialt','stmiagt','stmiale', + 'stmeaeq','stmeane','stmeacs','stmeahs','stmeacc','stmealo','stmeami','stmeapl','stmeavs','stmeavc','stmeahi','stmeals','stmeage','stmealt','stmeagt','stmeale', + 'stmedeq','stmedne','stmedcs','stmedhs','stmedcc','stmedlo','stmedmi','stmedpl','stmedvs','stmedvc','stmedhi','stmedls','stmedge','stmedlt','stmedgt','stmedle', + 'stdfaeq','stdfane','stdfacs','stdfahs','stdfacc','stdfalo','stdfami','stdfapl','stdfavs','stdfavc','stdfahi','stdfals','stdfage','stdfalt','stdfagt','stdfale', + 'stdfdeq','stdfdne','stdfdcs','stdfdhs','stdfdcc','stdfdlo','stdfdmi','stdfdpl','stdfdvs','stdfdvc','stdfdhi','stdfdls','stdfdge','stdfdlt','stdfdgt','stdfdle', + 'strdeq','strdne','strdcs','strdhs','strdcc','strdlo','strdmi','strdpl','strdvs','strdvc','strdhi','strdls','strdge','strdlt','strdgt','strdle', + 'streq.w','strne.w','strcs.w','strhs.w','strcc.w','strlo.w','strmi.w','strpl.w','strvs.w','strvc.w','strhi.w','strls.w','strge.w','strlt.w','strgt.w','strle.w', + 'streq','strne','strcs','strhs','strcc','strlo','strmi','strpl','strvs','strvc','strhi','strls','strge','strlt','strgt','strle', + 'strheq.w','strhne.w','strhcs.w','strhhs.w','strhcc.w','strhlo.w','strhmi.w','strhpl.w','strhvs.w','strhvc.w','strhhi.w','strhls.w','strhge.w','strhlt.w','strhgt.w','strhle.w', + 'strheq','strhne','strhcs','strhhs','strhcc','strhlo','strhmi','strhpl','strhvs','strhvc','strhhi','strhls','strhge','strhlt','strhgt','strhle', + 'strbeq.w','strbne.w','strbcs.w','strbhs.w','strbcc.w','strblo.w','strbmi.w','strbpl.w','strbvs.w','strbvc.w','strbhi.w','strbls.w','strbge.w','strblt.w','strbgt.w','strble.w', + 'strbeq','strbne','strbcs','strbhs','strbcc','strblo','strbmi','strbpl','strbvs','strbvc','strbhi','strbls','strbge','strblt','strbgt','strble', + 'strteq','strtne','strtcs','strths','strtcc','strtlo','strtmi','strtpl','strtvs','strtvc','strthi','strtls','strtge','strtlt','strtgt','strtle', + 'strhteq','strhtne','strhtcs','strhths','strhtcc','strhtlo','strhtmi','strhtpl','strhtvs','strhtvc','strhthi','strhtls','strhtge','strhtlt','strhtgt','strhtle', + 'strbteq','strbtne','strbtcs','strbths','strbtcc','strbtlo','strbtmi','strbtpl','strbtvs','strbtvc','strbthi','strbtls','strbtge','strbtlt','strbtgt','strbtle', + 'pusheq.w','pushne.w','pushcs.w','pushhs.w','pushcc.w','pushlo.w','pushmi.w','pushpl.w','pushvs.w','pushvc.w','pushhi.w','pushls.w','pushge.w','pushlt.w','pushgt.w','pushle.w', + 'pusheq','pushne','pushcs','pushhs','pushcc','pushlo','pushmi','pushpl','pushvs','pushvc','pushhi','pushls','pushge','pushlt','pushgt','pushle' + ), + /* Unconditional Flags-Affecting Instructions */ + 5 => array( + /* Set Flags: Unconditional Addition and Subtraction */ + 'adds.w','addsal.w', + 'adds','addsal', + 'subs.w','subsal.w', + 'subs','subsal', + 'rsbs.w','rsbsal.w', + 'rsbs','rsbsal', + 'negs.w','negsal.w', + 'negs','negsal', + 'adcs.w','adcsal.w', + 'adcs','adcsal', + 'sbcs.w','sbcsal.w', + 'sbcs','sbcsal', + 'rscs','rscsal', + 'cmp.w','cmpal.w', + 'cmp','cmpal', + 'cmn.w','cmnal.w', + 'cmn','cmnal', + /* Set Flags: Unconditional Logical */ + 'ands.w','andsal.w', + 'ands','andsal', + 'bics.w','bicsal.w', + 'bics','bicsal', + 'orrs.w','orrsal.w', + 'orrs','orrsal', + 'orns.w','ornsal.w', + 'orns','ornsal', + 'eors.w','eorsal.w', + 'eors','eorsal', + 'mvns.w','mvnsal.w', + 'mvns','mvnsal', + 'movs.w','movsal.w', + 'movs','movsal', + 'teq','teqal', + 'tst.w','tstal.w', + 'tst','tstal', + 'mrs','mrsal', + 'msr','msral', + /* Set Flags: Unconditional Shifts and Rotates */ + 'asrs.w','asrsal.w', + 'asrs','asrsal', + 'lsls.w','lslsal.w', + 'lsls','lslsal', + 'lsrs.w','lsrsal.w', + 'lsrs','lsrsal', + 'rors.w','rorsal.w', + 'rors','rorsal', + 'rrxs','rrxsal', + /* Set Flags: Unconditional Multiply and Multiply-Add */ + 'mlas','mlasal', + 'smulls','smullsal', + 'umulls','umullsal', + 'smlals','smlalsal', + 'umlals','umlalsal' + ), + /* Conditional Flags-Affecting Instructions */ + 6 => array( + /* Set Flags: Conditional Addition and Subtraction */ + 'addseq.w','addsne.w','addscs.w','addshs.w','addscc.w','addslo.w','addsmi.w','addspl.w','addsvs.w','addsvc.w','addshi.w','addsls.w','addsge.w','addslt.w','addsgt.w','addsle.w', + 'addseq','addsne','addscs','addshs','addscc','addslo','addsmi','addspl','addsvs','addsvc','addshi','addsls','addsge','addslt','addsgt','addsle', + 'subseq.w','subsne.w','subscs.w','subshs.w','subscc.w','subslo.w','subsmi.w','subspl.w','subsvs.w','subsvc.w','subshi.w','subsls.w','subsge.w','subslt.w','subsgt.w','subsle.w', + 'subseq','subsne','subscs','subshs','subscc','subslo','subsmi','subspl','subsvs','subsvc','subshi','subsls','subsge','subslt','subsgt','subsle', + 'rsbseq.w','rsbsne.w','rsbscs.w','rsbshs.w','rsbscc.w','rsbslo.w','rsbsmi.w','rsbspl.w','rsbsvs.w','rsbsvc.w','rsbshi.w','rsbsls.w','rsbsge.w','rsbslt.w','rsbsgt.w','rsbsle.w', + 'rsbseq','rsbsne','rsbscs','rsbshs','rsbscc','rsbslo','rsbsmi','rsbspl','rsbsvs','rsbsvc','rsbshi','rsbsls','rsbsge','rsbslt','rsbsgt','rsbsle', + 'negseq.w','negsne.w','negscs.w','negshs.w','negscc.w','negslo.w','negsmi.w','negspl.w','negsvs.w','negsvc.w','negshi.w','negsls.w','negsge.w','negslt.w','negsgt.w','negsle.w', + 'negseq','negsne','negscs','negshs','negscc','negslo','negsmi','negspl','negsvs','negsvc','negshi','negsls','negsge','negslt','negsgt','negsle', + 'adcseq.w','adcsne.w','adcscs.w','adcshs.w','adcscc.w','adcslo.w','adcsmi.w','adcspl.w','adcsvs.w','adcsvc.w','adcshi.w','adcsls.w','adcsge.w','adcslt.w','adcsgt.w','adcsle.w', + 'adcseq','adcsne','adcscs','adcshs','adcscc','adcslo','adcsmi','adcspl','adcsvs','adcsvc','adcshi','adcsls','adcsge','adcslt','adcsgt','adcsle', + 'sbcseq.w','sbcsne.w','sbcscs.w','sbcshs.w','sbcscc.w','sbcslo.w','sbcsmi.w','sbcspl.w','sbcsvs.w','sbcsvc.w','sbcshi.w','sbcsls.w','sbcsge.w','sbcslt.w','sbcsgt.w','sbcsle.w', + 'sbcseq','sbcsne','sbcscs','sbcshs','sbcscc','sbcslo','sbcsmi','sbcspl','sbcsvs','sbcsvc','sbcshi','sbcsls','sbcsge','sbcslt','sbcsgt','sbcsle', + 'rscseq','rscsne','rscscs','rscshs','rscscc','rscslo','rscsmi','rscspl','rscsvs','rscsvc','rscshi','rscsls','rscsge','rscslt','rscsgt','rscsle', + 'cmpeq.w','cmpne.w','cmpcs.w','cmphs.w','cmpcc.w','cmplo.w','cmpmi.w','cmppl.w','cmpvs.w','cmpvc.w','cmphi.w','cmpls.w','cmpge.w','cmplt.w','cmpgt.w','cmple.w', + 'cmpeq','cmpne','cmpcs','cmphs','cmpcc','cmplo','cmpmi','cmppl','cmpvs','cmpvc','cmphi','cmpls','cmpge','cmplt','cmpgt','cmple', + 'cmneq.w','cmnne.w','cmncs.w','cmnhs.w','cmncc.w','cmnlo.w','cmnmi.w','cmnpl.w','cmnvs.w','cmnvc.w','cmnhi.w','cmnls.w','cmnge.w','cmnlt.w','cmngt.w','cmnle.w', + 'cmneq','cmnne','cmncs','cmnhs','cmncc','cmnlo','cmnmi','cmnpl','cmnvs','cmnvc','cmnhi','cmnls','cmnge','cmnlt','cmngt','cmnle', + /* Set Flags: Conditional Logical */ + 'andseq.w','andsne.w','andscs.w','andshs.w','andscc.w','andslo.w','andsmi.w','andspl.w','andsvs.w','andsvc.w','andshi.w','andsls.w','andsge.w','andslt.w','andsgt.w','andsle.w', + 'andseq','andsne','andscs','andshs','andscc','andslo','andsmi','andspl','andsvs','andsvc','andshi','andsls','andsge','andslt','andsgt','andsle', + 'bicseq.w','bicsne.w','bicscs.w','bicshs.w','bicscc.w','bicslo.w','bicsmi.w','bicspl.w','bicsvs.w','bicsvc.w','bicshi.w','bicsls.w','bicsge.w','bicslt.w','bicsgt.w','bicsle.w', + 'bicseq','bicsne','bicscs','bicshs','bicscc','bicslo','bicsmi','bicspl','bicsvs','bicsvc','bicshi','bicsls','bicsge','bicslt','bicsgt','bicsle', + 'orrseq.w','orrsne.w','orrscs.w','orrshs.w','orrscc.w','orrslo.w','orrsmi.w','orrspl.w','orrsvs.w','orrsvc.w','orrshi.w','orrsls.w','orrsge.w','orrslt.w','orrsgt.w','orrsle.w', + 'orrseq','orrsne','orrscs','orrshs','orrscc','orrslo','orrsmi','orrspl','orrsvs','orrsvc','orrshi','orrsls','orrsge','orrslt','orrsgt','orrsle', + 'ornseq.w','ornsne.w','ornscs.w','ornshs.w','ornscc.w','ornslo.w','ornsmi.w','ornspl.w','ornsvs.w','ornsvc.w','ornshi.w','ornsls.w','ornsge.w','ornslt.w','ornsgt.w','ornsle.w', + 'ornseq','ornsne','ornscs','ornshs','ornscc','ornslo','ornsmi','ornspl','ornsvs','ornsvc','ornshi','ornsls','ornsge','ornslt','ornsgt','ornsle', + 'eorseq.w','eorsne.w','eorscs.w','eorshs.w','eorscc.w','eorslo.w','eorsmi.w','eorspl.w','eorsvs.w','eorsvc.w','eorshi.w','eorsls.w','eorsge.w','eorslt.w','eorsgt.w','eorsle.w', + 'eorseq','eorsne','eorscs','eorshs','eorscc','eorslo','eorsmi','eorspl','eorsvs','eorsvc','eorshi','eorsls','eorsge','eorslt','eorsgt','eorsle', + 'mvnseq.w','mvnsne.w','mvnscs.w','mvnshs.w','mvnscc.w','mvnslo.w','mvnsmi.w','mvnspl.w','mvnsvs.w','mvnsvc.w','mvnshi.w','mvnsls.w','mvnsge.w','mvnslt.w','mvnsgt.w','mvnsle.w', + 'mvnseq','mvnsne','mvnscs','mvnshs','mvnscc','mvnslo','mvnsmi','mvnspl','mvnsvs','mvnsvc','mvnshi','mvnsls','mvnsge','mvnslt','mvnsgt','mvnsle', + 'movseq.w','movsne.w','movscs.w','movshs.w','movscc.w','movslo.w','movsmi.w','movspl.w','movsvs.w','movsvc.w','movshi.w','movsls.w','movsge.w','movslt.w','movsgt.w','movsle.w', + 'movseq','movsne','movscs','movshs','movscc','movslo','movsmi','movspl','movsvs','movsvc','movshi','movsls','movsge','movslt','movsgt','movsle', + 'teqeq','teqne','teqcs','teqhs','teqcc','teqlo','teqmi','teqpl','teqvs','teqvc','teqhi','teqls','teqge','teqlt','teqgt','teqle', + 'tsteq.w','tstne.w','tstcs.w','tsths.w','tstcc.w','tstlo.w','tstmi.w','tstpl.w','tstvs.w','tstvc.w','tsthi.w','tstls.w','tstge.w','tstlt.w','tstgt.w','tstle.w', + 'tsteq','tstne','tstcs','tsths','tstcc','tstlo','tstmi','tstpl','tstvs','tstvc','tsthi','tstls','tstge','tstlt','tstgt','tstle', + 'mrseq','mrsne','mrscs','mrshs','mrscc','mrslo','mrsmi','mrspl','mrsvs','mrsvc','mrshi','mrsls','mrsge','mrslt','mrsgt','mrsle', + 'msreq','msrne','msrcs','msrhs','msrcc','msrlo','msrmi','msrpl','msrvs','msrvc','msrhi','msrls','msrge','msrlt','msrgt','msrle', + /* Set Flags: Conditional Shifts and Rotates */ + 'asrseq.w','asrsne.w','asrscs.w','asrshs.w','asrscc.w','asrslo.w','asrsmi.w','asrspl.w','asrsvs.w','asrsvc.w','asrshi.w','asrsls.w','asrsge.w','asrslt.w','asrsgt.w','asrsle.w', + 'asrseq','asrsne','asrscs','asrshs','asrscc','asrslo','asrsmi','asrspl','asrsvs','asrsvc','asrshi','asrsls','asrsge','asrslt','asrsgt','asrsle', + 'lslseq.w','lslsne.w','lslscs.w','lslshs.w','lslscc.w','lslslo.w','lslsmi.w','lslspl.w','lslsvs.w','lslsvc.w','lslshi.w','lslsls.w','lslsge.w','lslslt.w','lslsgt.w','lslsle.w', + 'lslseq','lslsne','lslscs','lslshs','lslscc','lslslo','lslsmi','lslspl','lslsvs','lslsvc','lslshi','lslsls','lslsge','lslslt','lslsgt','lslsle', + 'lsrseq.w','lsrsne.w','lsrscs.w','lsrshs.w','lsrscc.w','lsrslo.w','lsrsmi.w','lsrspl.w','lsrsvs.w','lsrsvc.w','lsrshi.w','lsrsls.w','lsrsge.w','lsrslt.w','lsrsgt.w','lsrsle.w', + 'lsrseq','lsrsne','lsrscs','lsrshs','lsrscc','lsrslo','lsrsmi','lsrspl','lsrsvs','lsrsvc','lsrshi','lsrsls','lsrsge','lsrslt','lsrsgt','lsrsle', + 'rorseq.w','rorsne.w','rorscs.w','rorshs.w','rorscc.w','rorslo.w','rorsmi.w','rorspl.w','rorsvs.w','rorsvc.w','rorshi.w','rorsls.w','rorsge.w','rorslt.w','rorsgt.w','rorsle.w', + 'rorseq','rorsne','rorscs','rorshs','rorscc','rorslo','rorsmi','rorspl','rorsvs','rorsvc','rorshi','rorsls','rorsge','rorslt','rorsgt','rorsle', + 'rrxseq','rrxsne','rrxscs','rrxshs','rrxscc','rrxslo','rrxsmi','rrxspl','rrxsvs','rrxsvc','rrxshi','rrxsls','rrxsge','rrxslt','rrxsgt','rrxsle', + /* Set Flags: Conditional Multiply and Multiply-Add */ + 'mlaseq','mlasne','mlascs','mlashs','mlascc','mlaslo','mlasmi','mlaspl','mlasvs','mlasvc','mlashi','mlasls','mlasge','mlaslt','mlasgt','mlasle', + 'smullseq','smullsne','smullscs','smullshs','smullscc','smullslo','smullsmi','smullspl','smullsvs','smullsvc','smullshi','smullsls','smullsge','smullslt','smullsgt','smullsle', + 'umullseq','umullsne','umullscs','umullshs','umullscc','umullslo','umullsmi','umullspl','umullsvs','umullsvc','umullshi','umullsls','umullsge','umullslt','umullsgt','umullsle', + 'smlalseq','smlalsne','smlalscs','smlalshs','smlalscc','smlalslo','smlalsmi','smlalspl','smlalsvs','smlalsvc','smlalshi','smlalsls','smlalsge','smlalslt','smlalsgt','smlalsle', + 'umlalseq','umlalsne','umlalscs','umlalshs','umlalscc','umlalslo','umlalsmi','umlalspl','umlalsvs','umlalsvc','umlalshi','umlalsls','umlalsge','umlalslt','umlalsgt','umlalsle' + ), + /* Unconditional Flow Control Instructions */ + 7 => array( + /* Flow Control: Unconditional Branch and If-Then-Else */ + 'b.w','bal.w', + 'b','bal', + 'bl','blal', + 'bx','bxal', + 'blx','blxal', + 'bxj','bxjal', + 'cbnz', + 'cbz', + 'tbb','tbbal', + 'tbh','tbhal', + 'it', + 'itt', + 'ite', + 'ittt', + 'itet', + 'itte', + 'itee', + 'itttt', + 'itett', + 'ittet', + 'iteet', + 'ittte', + 'itete', + 'ittee', + 'iteee' + ), + /* Conditional Flow Control Instructions */ + 8 => array( + /* Flow Control: Conditional Branch and If-Then-Else */ + 'beq.w','bne.w','bcs.w','bhs.w','bcc.w','blo.w','bmi.w','bpl.w','bvs.w','bvc.w','bhi.w','bls.w','bge.w','blt.w','bgt.w','ble.w', + 'beq','bne','bcs','bhs','bcc','blo','bmi','bpl','bvs','bvc','bhi','bls','bge','blt','bgt','ble', + 'bleq','blne','blcs','blhs','blcc','bllo','blmi','blpl','blvs','blvc','blhi','blls','blge','bllt','blgt','blle', + 'bxeq','bxne','bxcs','bxhs','bxcc','bxlo','bxmi','bxpl','bxvs','bxvc','bxhi','bxls','bxge','bxlt','bxgt','bxle', + 'blxeq','blxne','blxcs','blxhs','blxcc','blxlo','blxmi','blxpl','blxvs','blxvc','blxhi','blxls','blxge','blxlt','blxgt','blxle', + 'bxjeq','bxjne','bxjcs','bxjhs','bxjcc','bxjlo','bxjmi','bxjpl','bxjvs','bxjvc','bxjhi','bxjls','bxjge','bxjlt','bxjgt','bxjle', + 'tbbeq','tbbne','tbbcs','tbbhs','tbbcc','tbblo','tbbmi','tbbpl','tbbvs','tbbvc','tbbhi','tbbls','tbbge','tbblt','tbbgt','tbble', + 'tbheq','tbhne','tbhcs','tbhhs','tbhcc','tbhlo','tbhmi','tbhpl','tbhvs','tbhvc','tbhhi','tbhls','tbhge','tbhlt','tbhgt','tbhle' + ), + /* Unconditional Syncronization Instructions */ + 9 => array( + /* Synchronization: Unconditional Loads, Stores and Barriers */ + 'ldrexd','ldrexdal', + 'ldrex','ldrexal', + 'ldrexh','ldrexhal', + 'ldrexb','ldrexbal', + 'strexd','strexdal', + 'strex','strexal', + 'strexh','strexhal', + 'strexb','strexbal', + 'clrex','clrexal', + 'swp','swpal', + 'swpb','swpbal', + 'dbc','dbcal', + 'dsb','dsbal', + 'isb','isbal', + 'yield.w','yieldal.w', + 'yield','yieldal', + 'nop.w','nopal.w', + 'nop','nopal' + ), + /* Conditional Syncronization Instructions */ + 10 => array( + /* Synchronization: Conditional Loads, Stores and Barriers */ + 'ldrexdeq','ldrexdne','ldrexdcs','ldrexdhs','ldrexdcc','ldrexdlo','ldrexdmi','ldrexdpl','ldrexdvs','ldrexdvc','ldrexdhi','ldrexdls','ldrexdge','ldrexdlt','ldrexdgt','ldrexdle', + 'ldrexeq','ldrexne','ldrexcs','ldrexhs','ldrexcc','ldrexlo','ldrexmi','ldrexpl','ldrexvs','ldrexvc','ldrexhi','ldrexls','ldrexge','ldrexlt','ldrexgt','ldrexle', + 'ldrexheq','ldrexhne','ldrexhcs','ldrexhhs','ldrexhcc','ldrexhlo','ldrexhmi','ldrexhpl','ldrexhvs','ldrexhvc','ldrexhhi','ldrexhls','ldrexhge','ldrexhlt','ldrexhgt','ldrexhle', + 'ldrexbeq','ldrexbne','ldrexbcs','ldrexbhs','ldrexbcc','ldrexblo','ldrexbmi','ldrexbpl','ldrexbvs','ldrexbvc','ldrexbhi','ldrexbls','ldrexbge','ldrexblt','ldrexbgt','ldrexble', + 'strexdeq','strexdne','strexdcs','strexdhs','strexdcc','strexdlo','strexdmi','strexdpl','strexdvs','strexdvc','strexdhi','strexdls','strexdge','strexdlt','strexdgt','strexdle', + 'strexeq','strexne','strexcs','strexhs','strexcc','strexlo','strexmi','strexpl','strexvs','strexvc','strexhi','strexls','strexge','strexlt','strexgt','strexle', + 'strexheq','strexhne','strexhcs','strexhhs','strexhcc','strexhlo','strexhmi','strexhpl','strexhvs','strexhvc','strexhhi','strexhls','strexhge','strexhlt','strexhgt','strexhle', + 'strexbeq','strexbne','strexbcs','strexbhs','strexbcc','strexblo','strexbmi','strexbpl','strexbvs','strexbvc','strexbhi','strexbls','strexbge','strexblt','strexbgt','strexble', + 'clrexeq','clrexne','clrexcs','clrexhs','clrexcc','clrexlo','clrexmi','clrexpl','clrexvs','clrexvc','clrexhi','clrexls','clrexge','clrexlt','clrexgt','clrexle', + 'swpeq','swpne','swpcs','swphs','swpcc','swplo','swpmi','swppl','swpvs','swpvc','swphi','swpls','swpge','swplt','swpgt','swple', + 'swpbeq','swpbne','swpbcs','swpbhs','swpbcc','swpblo','swpbmi','swpbpl','swpbvs','swpbvc','swpbhi','swpbls','swpbge','swpblt','swpbgt','swpble', + 'dbceq','dbcne','dbccs','dbchs','dbccc','dbclo','dbcmi','dbcpl','dbcvs','dbcvc','dbchi','dbcls','dbcge','dbclt','dbcgt','dbcle', + 'dsbeq','dsbne','dsbcs','dsbhs','dsbcc','dsblo','dsbmi','dsbpl','dsbvs','dsbvc','dsbhi','dsbls','dsbge','dsblt','dsbgt','dsble', + 'isbeq','isbne','isbcs','isbhs','isbcc','isblo','isbmi','isbpl','isbvs','isbvc','isbhi','isbls','isbge','isblt','isbgt','isble', + 'yieldeq.w','yieldne.w','yieldcs.w','yieldhs.w','yieldcc.w','yieldlo.w','yieldmi.w','yieldpl.w','yieldvs.w','yieldvc.w','yieldhi.w','yieldls.w','yieldge.w','yieldlt.w','yieldgt.w','yieldle.w', + 'yieldeq','yieldne','yieldcs','yieldhs','yieldcc','yieldlo','yieldmi','yieldpl','yieldvs','yieldvc','yieldhi','yieldls','yieldge','yieldlt','yieldgt','yieldle', + 'nopeq.w','nopne.w','nopcs.w','nophs.w','nopcc.w','noplo.w','nopmi.w','noppl.w','nopvs.w','nopvc.w','nophi.w','nopls.w','nopge.w','noplt.w','nopgt.w','nople.w', + 'nopeq','nopne','nopcs','nophs','nopcc','noplo','nopmi','noppl','nopvs','nopvc','nophi','nopls','nopge','noplt','nopgt','nople' + ), + /* Unconditional ARMv6 SIMD */ + 11 => array( + /* ARMv6 SIMD: Unconditional Addition, Subtraction & Saturation */ + 'sadd16','sadd16al', + 'sadd8','sadd8al', + 'uadd16','uadd16al', + 'uadd8','uadd8al', + 'ssub16','ssub16al', + 'ssub8','ssub8al', + 'usub16','usub16al', + 'usub8','usub8al', + 'sasx','sasxal', + 'ssax','ssaxal', + 'uasx','uasxal', + 'usax','usaxal', + 'usad8','usad8al', + 'usada8','usada8al', + /* ARMv6 SIMD: Unconditional Halving Addition & Subtraction */ + 'shadd16','shadd16al', + 'shadd8','shadd8al', + 'uhadd16','uhadd16al', + 'uhadd8','uhadd8al', + 'shsub16','shsub16al', + 'shsub8','shsub8al', + 'uhsub16','uhsub16al', + 'uhsub8','uhsub8al', + 'shasx','shasxal', + 'shsax','shsaxal', + 'uhasx','uhasxal', + 'uhsax','uhsaxal', + /* ARMv6 SIMD: Unconditional Saturating Operations */ + 'qadd','qaddal', + 'qadd16','qadd16al', + 'qadd8','qadd8al', + 'uqadd16','uqadd16al', + 'uqadd8','uqadd8al', + 'qsub','qsubal', + 'qsub16','qsub16al', + 'qsub8','qsub8al', + 'uqsub16','uqsub16al', + 'uqsub8','uqsub8al', + 'qasx','qasxal', + 'qsax','qsaxal', + 'uqasx','uqasxal', + 'uqsax','uqsaxal', + 'qdadd','qdaddal', + 'qdsub','qdsubal', + 'ssat','ssatal', + 'ssat16','ssat16al', + 'usat','usatal', + 'usat16','usat16al', + /* ARMv6 SIMD: Unconditional Permutation and Combine Operations */ + 'sxtah','sxtahal', + 'sxtab','sxtabal', + 'sxtab16','sxtab16al', + 'uxtah','uxtahal', + 'uxtab','uxtabal', + 'uxtab16','uxtab16al', + 'sxth.w','sxthal.w', + 'sxth','sxthal', + 'sxtb.w','sxtbal.w', + 'sxtb','sxtbal', + 'sxtb16','sxtb16al', + 'uxth.w','uxthal.w', + 'uxth','uxthal', + 'uxtb.w','uxtbal.w', + 'uxtb','uxtbal', + 'uxtb16','uxtb16al', + 'pkhbt','pkhbtal', + 'pkhtb','pkhtbal', + 'rbit','rbital', + 'rev.w','reval.w', + 'rev','reval', + 'rev16.w','rev16al.w', + 'rev16','rev16al', + 'revsh.w','revshal.w', + 'revsh','revshal', + 'sel','selal', + /* ARMv6 SIMD: Unconditional Multiply and Multiply-Add */ + 'smlad','smladal', + 'smladx','smladxal', + 'smlsd','smlsdal', + 'smlsdx','smlsdxal', + 'smlald','smlaldal', + 'smlaldx','smlaldxal', + 'smlsld','smlsldal', + 'smlsldx','smlsldxal', + 'smmul','smmulal', + 'smmulr','smmulral', + 'smmla','smmlaal', + 'smmlar','smmlaral', + 'smmls','smmlsal', + 'smmlsr','smmlsral', + 'smuad','smuadal', + 'smuadx','smuadxal', + 'smusd','smusdal', + 'smusdx','smusdxal', + 'umaal','umaalal' + ), + /* Conditional ARMv6 SIMD */ + 12 => array( + /* ARMv6 SIMD: Conditional Addition, Subtraction & Saturation */ + 'sadd16eq','sadd16ne','sadd16cs','sadd16hs','sadd16cc','sadd16lo','sadd16mi','sadd16pl','sadd16vs','sadd16vc','sadd16hi','sadd16ls','sadd16ge','sadd16lt','sadd16gt','sadd16le', + 'sadd8eq','sadd8ne','sadd8cs','sadd8hs','sadd8cc','sadd8lo','sadd8mi','sadd8pl','sadd8vs','sadd8vc','sadd8hi','sadd8ls','sadd8ge','sadd8lt','sadd8gt','sadd8le', + 'uadd16eq','uadd16ne','uadd16cs','uadd16hs','uadd16cc','uadd16lo','uadd16mi','uadd16pl','uadd16vs','uadd16vc','uadd16hi','uadd16ls','uadd16ge','uadd16lt','uadd16gt','uadd16le', + 'uadd8eq','uadd8ne','uadd8cs','uadd8hs','uadd8cc','uadd8lo','uadd8mi','uadd8pl','uadd8vs','uadd8vc','uadd8hi','uadd8ls','uadd8ge','uadd8lt','uadd8gt','uadd8le', + 'ssub16eq','ssub16ne','ssub16cs','ssub16hs','ssub16cc','ssub16lo','ssub16mi','ssub16pl','ssub16vs','ssub16vc','ssub16hi','ssub16ls','ssub16ge','ssub16lt','ssub16gt','ssub16le', + 'ssub8eq','ssub8ne','ssub8cs','ssub8hs','ssub8cc','ssub8lo','ssub8mi','ssub8pl','ssub8vs','ssub8vc','ssub8hi','ssub8ls','ssub8ge','ssub8lt','ssub8gt','ssub8le', + 'usub16eq','usub16ne','usub16cs','usub16hs','usub16cc','usub16lo','usub16mi','usub16pl','usub16vs','usub16vc','usub16hi','usub16ls','usub16ge','usub16lt','usub16gt','usub16le', + 'usub8eq','usub8ne','usub8cs','usub8hs','usub8cc','usub8lo','usub8mi','usub8pl','usub8vs','usub8vc','usub8hi','usub8ls','usub8ge','usub8lt','usub8gt','usub8le', + 'sasxeq','sasxne','sasxcs','sasxhs','sasxcc','sasxlo','sasxmi','sasxpl','sasxvs','sasxvc','sasxhi','sasxls','sasxge','sasxlt','sasxgt','sasxle', + 'ssaxeq','ssaxne','ssaxcs','ssaxhs','ssaxcc','ssaxlo','ssaxmi','ssaxpl','ssaxvs','ssaxvc','ssaxhi','ssaxls','ssaxge','ssaxlt','ssaxgt','ssaxle', + 'uasxeq','uasxne','uasxcs','uasxhs','uasxcc','uasxlo','uasxmi','uasxpl','uasxvs','uasxvc','uasxhi','uasxls','uasxge','uasxlt','uasxgt','uasxle', + 'usaxeq','usaxne','usaxcs','usaxhs','usaxcc','usaxlo','usaxmi','usaxpl','usaxvs','usaxvc','usaxhi','usaxls','usaxge','usaxlt','usaxgt','usaxle', + 'usad8eq','usad8ne','usad8cs','usad8hs','usad8cc','usad8lo','usad8mi','usad8pl','usad8vs','usad8vc','usad8hi','usad8ls','usad8ge','usad8lt','usad8gt','usad8le', + 'usada8eq','usada8ne','usada8cs','usada8hs','usada8cc','usada8lo','usada8mi','usada8pl','usada8vs','usada8vc','usada8hi','usada8ls','usada8ge','usada8lt','usada8gt','usada8le', + /* ARMv6 SIMD: Conditional Halving Addition & Subtraction */ + 'shadd16eq','shadd16ne','shadd16cs','shadd16hs','shadd16cc','shadd16lo','shadd16mi','shadd16pl','shadd16vs','shadd16vc','shadd16hi','shadd16ls','shadd16ge','shadd16lt','shadd16gt','shadd16le', + 'shadd8eq','shadd8ne','shadd8cs','shadd8hs','shadd8cc','shadd8lo','shadd8mi','shadd8pl','shadd8vs','shadd8vc','shadd8hi','shadd8ls','shadd8ge','shadd8lt','shadd8gt','shadd8le', + 'uhadd16eq','uhadd16ne','uhadd16cs','uhadd16hs','uhadd16cc','uhadd16lo','uhadd16mi','uhadd16pl','uhadd16vs','uhadd16vc','uhadd16hi','uhadd16ls','uhadd16ge','uhadd16lt','uhadd16gt','uhadd16le', + 'uhadd8eq','uhadd8ne','uhadd8cs','uhadd8hs','uhadd8cc','uhadd8lo','uhadd8mi','uhadd8pl','uhadd8vs','uhadd8vc','uhadd8hi','uhadd8ls','uhadd8ge','uhadd8lt','uhadd8gt','uhadd8le', + 'shsub16eq','shsub16ne','shsub16cs','shsub16hs','shsub16cc','shsub16lo','shsub16mi','shsub16pl','shsub16vs','shsub16vc','shsub16hi','shsub16ls','shsub16ge','shsub16lt','shsub16gt','shsub16le', + 'shsub8eq','shsub8ne','shsub8cs','shsub8hs','shsub8cc','shsub8lo','shsub8mi','shsub8pl','shsub8vs','shsub8vc','shsub8hi','shsub8ls','shsub8ge','shsub8lt','shsub8gt','shsub8le', + 'uhsub16eq','uhsub16ne','uhsub16cs','uhsub16hs','uhsub16cc','uhsub16lo','uhsub16mi','uhsub16pl','uhsub16vs','uhsub16vc','uhsub16hi','uhsub16ls','uhsub16ge','uhsub16lt','uhsub16gt','uhsub16le', + 'uhsub8eq','uhsub8ne','uhsub8cs','uhsub8hs','uhsub8cc','uhsub8lo','uhsub8mi','uhsub8pl','uhsub8vs','uhsub8vc','uhsub8hi','uhsub8ls','uhsub8ge','uhsub8lt','uhsub8gt','uhsub8le', + 'shasxeq','shasxne','shasxcs','shasxhs','shasxcc','shasxlo','shasxmi','shasxpl','shasxvs','shasxvc','shasxhi','shasxls','shasxge','shasxlt','shasxgt','shasxle', + 'shsaxeq','shsaxne','shsaxcs','shsaxhs','shsaxcc','shsaxlo','shsaxmi','shsaxpl','shsaxvs','shsaxvc','shsaxhi','shsaxls','shsaxge','shsaxlt','shsaxgt','shsaxle', + 'uhasxeq','uhasxne','uhasxcs','uhasxhs','uhasxcc','uhasxlo','uhasxmi','uhasxpl','uhasxvs','uhasxvc','uhasxhi','uhasxls','uhasxge','uhasxlt','uhasxgt','uhasxle', + 'uhsaxeq','uhsaxne','uhsaxcs','uhsaxhs','uhsaxcc','uhsaxlo','uhsaxmi','uhsaxpl','uhsaxvs','uhsaxvc','uhsaxhi','uhsaxls','uhsaxge','uhsaxlt','uhsaxgt','uhsaxle', + /* ARMv6 SIMD: Conditional Saturating Operations */ + 'qaddeq','qaddne','qaddcs','qaddhs','qaddcc','qaddlo','qaddmi','qaddpl','qaddvs','qaddvc','qaddhi','qaddls','qaddge','qaddlt','qaddgt','qaddle', + 'qadd16eq','qadd16ne','qadd16cs','qadd16hs','qadd16cc','qadd16lo','qadd16mi','qadd16pl','qadd16vs','qadd16vc','qadd16hi','qadd16ls','qadd16ge','qadd16lt','qadd16gt','qadd16le', + 'qadd8eq','qadd8ne','qadd8cs','qadd8hs','qadd8cc','qadd8lo','qadd8mi','qadd8pl','qadd8vs','qadd8vc','qadd8hi','qadd8ls','qadd8ge','qadd8lt','qadd8gt','qadd8le', + 'uqadd16eq','uqadd16ne','uqadd16cs','uqadd16hs','uqadd16cc','uqadd16lo','uqadd16mi','uqadd16pl','uqadd16vs','uqadd16vc','uqadd16hi','uqadd16ls','uqadd16ge','uqadd16lt','uqadd16gt','uqadd16le', + 'uqadd8eq','uqadd8ne','uqadd8cs','uqadd8hs','uqadd8cc','uqadd8lo','uqadd8mi','uqadd8pl','uqadd8vs','uqadd8vc','uqadd8hi','uqadd8ls','uqadd8ge','uqadd8lt','uqadd8gt','uqadd8le', + 'qsubeq','qsubne','qsubcs','qsubhs','qsubcc','qsublo','qsubmi','qsubpl','qsubvs','qsubvc','qsubhi','qsubls','qsubge','qsublt','qsubgt','qsuble', + 'qsub16eq','qsub16ne','qsub16cs','qsub16hs','qsub16cc','qsub16lo','qsub16mi','qsub16pl','qsub16vs','qsub16vc','qsub16hi','qsub16ls','qsub16ge','qsub16lt','qsub16gt','qsub16le', + 'qsub8eq','qsub8ne','qsub8cs','qsub8hs','qsub8cc','qsub8lo','qsub8mi','qsub8pl','qsub8vs','qsub8vc','qsub8hi','qsub8ls','qsub8ge','qsub8lt','qsub8gt','qsub8le', + 'uqsub16eq','uqsub16ne','uqsub16cs','uqsub16hs','uqsub16cc','uqsub16lo','uqsub16mi','uqsub16pl','uqsub16vs','uqsub16vc','uqsub16hi','uqsub16ls','uqsub16ge','uqsub16lt','uqsub16gt','uqsub16le', + 'uqsub8eq','uqsub8ne','uqsub8cs','uqsub8hs','uqsub8cc','uqsub8lo','uqsub8mi','uqsub8pl','uqsub8vs','uqsub8vc','uqsub8hi','uqsub8ls','uqsub8ge','uqsub8lt','uqsub8gt','uqsub8le', + 'qasxeq','qasxne','qasxcs','qasxhs','qasxcc','qasxlo','qasxmi','qasxpl','qasxvs','qasxvc','qasxhi','qasxls','qasxge','qasxlt','qasxgt','qasxle', + 'qsaxeq','qsaxne','qsaxcs','qsaxhs','qsaxcc','qsaxlo','qsaxmi','qsaxpl','qsaxvs','qsaxvc','qsaxhi','qsaxls','qsaxge','qsaxlt','qsaxgt','qsaxle', + 'uqasxeq','uqasxne','uqasxcs','uqasxhs','uqasxcc','uqasxlo','uqasxmi','uqasxpl','uqasxvs','uqasxvc','uqasxhi','uqasxls','uqasxge','uqasxlt','uqasxgt','uqasxle', + 'uqsaxeq','uqsaxne','uqsaxcs','uqsaxhs','uqsaxcc','uqsaxlo','uqsaxmi','uqsaxpl','uqsaxvs','uqsaxvc','uqsaxhi','uqsaxls','uqsaxge','uqsaxlt','uqsaxgt','uqsaxle', + 'qdaddeq','qdaddne','qdaddcs','qdaddhs','qdaddcc','qdaddlo','qdaddmi','qdaddpl','qdaddvs','qdaddvc','qdaddhi','qdaddls','qdaddge','qdaddlt','qdaddgt','qdaddle', + 'qdsubeq','qdsubne','qdsubcs','qdsubhs','qdsubcc','qdsublo','qdsubmi','qdsubpl','qdsubvs','qdsubvc','qdsubhi','qdsubls','qdsubge','qdsublt','qdsubgt','qdsuble', + 'ssateq','ssatne','ssatcs','ssaths','ssatcc','ssatlo','ssatmi','ssatpl','ssatvs','ssatvc','ssathi','ssatls','ssatge','ssatlt','ssatgt','ssatle', + 'ssat16eq','ssat16ne','ssat16cs','ssat16hs','ssat16cc','ssat16lo','ssat16mi','ssat16pl','ssat16vs','ssat16vc','ssat16hi','ssat16ls','ssat16ge','ssat16lt','ssat16gt','ssat16le', + 'usateq','usatne','usatcs','usaths','usatcc','usatlo','usatmi','usatpl','usatvs','usatvc','usathi','usatls','usatge','usatlt','usatgt','usatle', + 'usat16eq','usat16ne','usat16cs','usat16hs','usat16cc','usat16lo','usat16mi','usat16pl','usat16vs','usat16vc','usat16hi','usat16ls','usat16ge','usat16lt','usat16gt','usat16le', + /* ARMv6 SIMD: Conditional Permutation and Combine Operations */ + 'sxtaheq','sxtahne','sxtahcs','sxtahhs','sxtahcc','sxtahlo','sxtahmi','sxtahpl','sxtahvs','sxtahvc','sxtahhi','sxtahls','sxtahge','sxtahlt','sxtahgt','sxtahle', + 'sxtabeq','sxtabne','sxtabcs','sxtabhs','sxtabcc','sxtablo','sxtabmi','sxtabpl','sxtabvs','sxtabvc','sxtabhi','sxtabls','sxtabge','sxtablt','sxtabgt','sxtable', + 'sxtab16eq','sxtab16ne','sxtab16cs','sxtab16hs','sxtab16cc','sxtab16lo','sxtab16mi','sxtab16pl','sxtab16vs','sxtab16vc','sxtab16hi','sxtab16ls','sxtab16ge','sxtab16lt','sxtab16gt','sxtab16le', + 'uxtaheq','uxtahne','uxtahcs','uxtahhs','uxtahcc','uxtahlo','uxtahmi','uxtahpl','uxtahvs','uxtahvc','uxtahhi','uxtahls','uxtahge','uxtahlt','uxtahgt','uxtahle', + 'uxtabeq','uxtabne','uxtabcs','uxtabhs','uxtabcc','uxtablo','uxtabmi','uxtabpl','uxtabvs','uxtabvc','uxtabhi','uxtabls','uxtabge','uxtablt','uxtabgt','uxtable', + 'uxtab16eq','uxtab16ne','uxtab16cs','uxtab16hs','uxtab16cc','uxtab16lo','uxtab16mi','uxtab16pl','uxtab16vs','uxtab16vc','uxtab16hi','uxtab16ls','uxtab16ge','uxtab16lt','uxtab16gt','uxtab16le', + 'sxtheq.w','sxthne.w','sxthcs.w','sxthhs.w','sxthcc.w','sxthlo.w','sxthmi.w','sxthpl.w','sxthvs.w','sxthvc.w','sxthhi.w','sxthls.w','sxthge.w','sxthlt.w','sxthgt.w','sxthle.w', + 'sxtheq','sxthne','sxthcs','sxthhs','sxthcc','sxthlo','sxthmi','sxthpl','sxthvs','sxthvc','sxthhi','sxthls','sxthge','sxthlt','sxthgt','sxthle', + 'sxtbeq.w','sxtbne.w','sxtbcs.w','sxtbhs.w','sxtbcc.w','sxtblo.w','sxtbmi.w','sxtbpl.w','sxtbvs.w','sxtbvc.w','sxtbhi.w','sxtbls.w','sxtbge.w','sxtblt.w','sxtbgt.w','sxtble.w', + 'sxtbeq','sxtbne','sxtbcs','sxtbhs','sxtbcc','sxtblo','sxtbmi','sxtbpl','sxtbvs','sxtbvc','sxtbhi','sxtbls','sxtbge','sxtblt','sxtbgt','sxtble', + 'sxtb16eq','sxtb16ne','sxtb16cs','sxtb16hs','sxtb16cc','sxtb16lo','sxtb16mi','sxtb16pl','sxtb16vs','sxtb16vc','sxtb16hi','sxtb16ls','sxtb16ge','sxtb16lt','sxtb16gt','sxtb16le', + 'uxtheq.w','uxthne.w','uxthcs.w','uxthhs.w','uxthcc.w','uxthlo.w','uxthmi.w','uxthpl.w','uxthvs.w','uxthvc.w','uxthhi.w','uxthls.w','uxthge.w','uxthlt.w','uxthgt.w','uxthle.w', + 'uxtheq','uxthne','uxthcs','uxthhs','uxthcc','uxthlo','uxthmi','uxthpl','uxthvs','uxthvc','uxthhi','uxthls','uxthge','uxthlt','uxthgt','uxthle', + 'uxtbeq.w','uxtbne.w','uxtbcs.w','uxtbhs.w','uxtbcc.w','uxtblo.w','uxtbmi.w','uxtbpl.w','uxtbvs.w','uxtbvc.w','uxtbhi.w','uxtbls.w','uxtbge.w','uxtblt.w','uxtbgt.w','uxtble.w', + 'uxtbeq','uxtbne','uxtbcs','uxtbhs','uxtbcc','uxtblo','uxtbmi','uxtbpl','uxtbvs','uxtbvc','uxtbhi','uxtbls','uxtbge','uxtblt','uxtbgt','uxtble', + 'uxtb16eq','uxtb16ne','uxtb16cs','uxtb16hs','uxtb16cc','uxtb16lo','uxtb16mi','uxtb16pl','uxtb16vs','uxtb16vc','uxtb16hi','uxtb16ls','uxtb16ge','uxtb16lt','uxtb16gt','uxtb16le', + 'pkhbteq','pkhbtne','pkhbtcs','pkhbths','pkhbtcc','pkhbtlo','pkhbtmi','pkhbtpl','pkhbtvs','pkhbtvc','pkhbthi','pkhbtls','pkhbtge','pkhbtlt','pkhbtgt','pkhbtle', + 'pkhtbeq','pkhtbne','pkhtbcs','pkhtbhs','pkhtbcc','pkhtblo','pkhtbmi','pkhtbpl','pkhtbvs','pkhtbvc','pkhtbhi','pkhtbls','pkhtbge','pkhtblt','pkhtbgt','pkhtble', + 'rbiteq','rbitne','rbitcs','rbiths','rbitcc','rbitlo','rbitmi','rbitpl','rbitvs','rbitvc','rbithi','rbitls','rbitge','rbitlt','rbitgt','rbitle', + 'reveq.w','revne.w','revcs.w','revhs.w','revcc.w','revlo.w','revmi.w','revpl.w','revvs.w','revvc.w','revhi.w','revls.w','revge.w','revlt.w','revgt.w','revle.w', + 'reveq','revne','revcs','revhs','revcc','revlo','revmi','revpl','revvs','revvc','revhi','revls','revge','revlt','revgt','revle', + 'rev16eq.w','rev16ne.w','rev16cs.w','rev16hs.w','rev16cc.w','rev16lo.w','rev16mi.w','rev16pl.w','rev16vs.w','rev16vc.w','rev16hi.w','rev16ls.w','rev16ge.w','rev16lt.w','rev16gt.w','rev16le.w', + 'rev16eq','rev16ne','rev16cs','rev16hs','rev16cc','rev16lo','rev16mi','rev16pl','rev16vs','rev16vc','rev16hi','rev16ls','rev16ge','rev16lt','rev16gt','rev16le', + 'revsheq.w','revshne.w','revshcs.w','revshhs.w','revshcc.w','revshlo.w','revshmi.w','revshpl.w','revshvs.w','revshvc.w','revshhi.w','revshls.w','revshge.w','revshlt.w','revshgt.w','revshle.w', + 'revsheq','revshne','revshcs','revshhs','revshcc','revshlo','revshmi','revshpl','revshvs','revshvc','revshhi','revshls','revshge','revshlt','revshgt','revshle', + 'seleq','selne','selcs','selhs','selcc','sello','selmi','selpl','selvs','selvc','selhi','sells','selge','sellt','selgt','selle', + /* ARMv6 SIMD: Conditional Multiply and Multiply-Add */ + 'smladeq','smladne','smladcs','smladhs','smladcc','smladlo','smladmi','smladpl','smladvs','smladvc','smladhi','smladls','smladge','smladlt','smladgt','smladle', + 'smladxeq','smladxne','smladxcs','smladxhs','smladxcc','smladxlo','smladxmi','smladxpl','smladxvs','smladxvc','smladxhi','smladxls','smladxge','smladxlt','smladxgt','smladxle', + 'smlsdeq','smlsdne','smlsdcs','smlsdhs','smlsdcc','smlsdlo','smlsdmi','smlsdpl','smlsdvs','smlsdvc','smlsdhi','smlsdls','smlsdge','smlsdlt','smlsdgt','smlsdle', + 'smlsdxeq','smlsdxne','smlsdxcs','smlsdxhs','smlsdxcc','smlsdxlo','smlsdxmi','smlsdxpl','smlsdxvs','smlsdxvc','smlsdxhi','smlsdxls','smlsdxge','smlsdxlt','smlsdxgt','smlsdxle', + 'smlaldeq','smlaldne','smlaldcs','smlaldhs','smlaldcc','smlaldlo','smlaldmi','smlaldpl','smlaldvs','smlaldvc','smlaldhi','smlaldls','smlaldge','smlaldlt','smlaldgt','smlaldle', + 'smlaldxeq','smlaldxne','smlaldxcs','smlaldxhs','smlaldxcc','smlaldxlo','smlaldxmi','smlaldxpl','smlaldxvs','smlaldxvc','smlaldxhi','smlaldxls','smlaldxge','smlaldxlt','smlaldxgt','smlaldxle', + 'smlsldeq','smlsldne','smlsldcs','smlsldhs','smlsldcc','smlsldlo','smlsldmi','smlsldpl','smlsldvs','smlsldvc','smlsldhi','smlsldls','smlsldge','smlsldlt','smlsldgt','smlsldle', + 'smlsldxeq','smlsldxne','smlsldxcs','smlsldxhs','smlsldxcc','smlsldxlo','smlsldxmi','smlsldxpl','smlsldxvs','smlsldxvc','smlsldxhi','smlsldxls','smlsldxge','smlsldxlt','smlsldxgt','smlsldxle', + 'smmuleq','smmulne','smmulcs','smmulhs','smmulcc','smmullo','smmulmi','smmulpl','smmulvs','smmulvc','smmulhi','smmulls','smmulge','smmullt','smmulgt','smmulle', + 'smmulreq','smmulrne','smmulrcs','smmulrhs','smmulrcc','smmulrlo','smmulrmi','smmulrpl','smmulrvs','smmulrvc','smmulrhi','smmulrls','smmulrge','smmulrlt','smmulrgt','smmulrle', + 'smmlaeq','smmlane','smmlacs','smmlahs','smmlacc','smmlalo','smmlami','smmlapl','smmlavs','smmlavc','smmlahi','smmlals','smmlage','smmlalt','smmlagt','smmlale', + 'smmlareq','smmlarne','smmlarcs','smmlarhs','smmlarcc','smmlarlo','smmlarmi','smmlarpl','smmlarvs','smmlarvc','smmlarhi','smmlarls','smmlarge','smmlarlt','smmlargt','smmlarle', + 'smmlseq','smmlsne','smmlscs','smmlshs','smmlscc','smmlslo','smmlsmi','smmlspl','smmlsvs','smmlsvc','smmlshi','smmlsls','smmlsge','smmlslt','smmlsgt','smmlsle', + 'smmlsreq','smmlsrne','smmlsrcs','smmlsrhs','smmlsrcc','smmlsrlo','smmlsrmi','smmlsrpl','smmlsrvs','smmlsrvc','smmlsrhi','smmlsrls','smmlsrge','smmlsrlt','smmlsrgt','smmlsrle', + 'smuadeq','smuadne','smuadcs','smuadhs','smuadcc','smuadlo','smuadmi','smuadpl','smuadvs','smuadvc','smuadhi','smuadls','smuadge','smuadlt','smuadgt','smuadle', + 'smuadxeq','smuadxne','smuadxcs','smuadxhs','smuadxcc','smuadxlo','smuadxmi','smuadxpl','smuadxvs','smuadxvc','smuadxhi','smuadxls','smuadxge','smuadxlt','smuadxgt','smuadxle', + 'smusdeq','smusdne','smusdcs','smusdhs','smusdcc','smusdlo','smusdmi','smusdpl','smusdvs','smusdvc','smusdhi','smusdls','smusdge','smusdlt','smusdgt','smusdle', + 'smusdxeq','smusdxne','smusdxcs','smusdxhs','smusdxcc','smusdxlo','smusdxmi','smusdxpl','smusdxvs','smusdxvc','smusdxhi','smusdxls','smusdxge','smusdxlt','smusdxgt','smusdxle', + 'umaaleq','umaalne','umaalcs','umaalhs','umaalcc','umaallo','umaalmi','umaalpl','umaalvs','umaalvc','umaalhi','umaalls','umaalge','umaallt','umaalgt','umaalle' + ), + /* Unconditional Coprocessor Instructions */ + 13 => array( + /* Data Processing: Unconditional Coprocessor Instructions */ + 'cdp','cdpal', + 'cdp2','cdp2al', + 'ldc','ldcal', + 'ldcl','ldclal', + 'ldc2','ldc2al', + 'ldc2l','ldc2lal', + 'stc','stcal', + 'stcl','stclal', + 'stc2','stc2al', + 'stc2l','stc2lal', + 'mcr','mcral', + 'mcr2','mcr2al', + 'mcrr','mcrral', + 'mcrr2','mcrr2al', + 'mrc','mrcal', + 'mrc2','mrc2al', + 'mrrc','mrrcal', + 'mrrc2','mrrc2al' + ), + /* Conditional Coprocessor Instructions */ + 14 => array( + /* Data Processing: Conditional Coprocessor Instructions */ + 'cdpeq','cdpne','cdpcs','cdphs','cdpcc','cdplo','cdpmi','cdppl','cdpvs','cdpvc','cdphi','cdpls','cdpge','cdplt','cdpgt','cdple', + 'cdp2eq','cdp2ne','cdp2cs','cdp2hs','cdp2cc','cdp2lo','cdp2mi','cdp2pl','cdp2vs','cdp2vc','cdp2hi','cdp2ls','cdp2ge','cdp2lt','cdp2gt','cdp2le', + 'ldceq','ldcne','ldccs','ldchs','ldccc','ldclo','ldcmi','ldcpl','ldcvs','ldcvc','ldchi','ldcls','ldcge','ldclt','ldcgt','ldcle', + 'ldcleq','ldclne','ldclcs','ldclhs','ldclcc','ldcllo','ldclmi','ldclpl','ldclvs','ldclvc','ldclhi','ldclls','ldclge','ldcllt','ldclgt','ldclle', + 'ldc2eq','ldc2ne','ldc2cs','ldc2hs','ldc2cc','ldc2lo','ldc2mi','ldc2pl','ldc2vs','ldc2vc','ldc2hi','ldc2ls','ldc2ge','ldc2lt','ldc2gt','ldc2le', + 'ldc2leq','ldc2lne','ldc2lcs','ldc2lhs','ldc2lcc','ldc2llo','ldc2lmi','ldc2lpl','ldc2lvs','ldc2lvc','ldc2lhi','ldc2lls','ldc2lge','ldc2llt','ldc2lgt','ldc2lle', + 'stceq','stcne','stccs','stchs','stccc','stclo','stcmi','stcpl','stcvs','stcvc','stchi','stcls','stcge','stclt','stcgt','stcle', + 'stcleq','stclne','stclcs','stclhs','stclcc','stcllo','stclmi','stclpl','stclvs','stclvc','stclhi','stclls','stclge','stcllt','stclgt','stclle', + 'stc2eq','stc2ne','stc2cs','stc2hs','stc2cc','stc2lo','stc2mi','stc2pl','stc2vs','stc2vc','stc2hi','stc2ls','stc2ge','stc2lt','stc2gt','stc2le', + 'stc2leq','stc2lne','stc2lcs','stc2lhs','stc2lcc','stc2llo','stc2lmi','stc2lpl','stc2lvs','stc2lvc','stc2lhi','stc2lls','stc2lge','stc2llt','stc2lgt','stc2lle', + 'mcreq','mcrne','mcrcs','mcrhs','mcrcc','mcrlo','mcrmi','mcrpl','mcrvs','mcrvc','mcrhi','mcrls','mcrge','mcrlt','mcrgt','mcrle', + 'mcr2eq','mcr2ne','mcr2cs','mcr2hs','mcr2cc','mcr2lo','mcr2mi','mcr2pl','mcr2vs','mcr2vc','mcr2hi','mcr2ls','mcr2ge','mcr2lt','mcr2gt','mcr2le', + 'mcrreq','mcrrne','mcrrcs','mcrrhs','mcrrcc','mcrrlo','mcrrmi','mcrrpl','mcrrvs','mcrrvc','mcrrhi','mcrrls','mcrrge','mcrrlt','mcrrgt','mcrrle', + 'mcrr2eq','mcrr2ne','mcrr2cs','mcrr2hs','mcrr2cc','mcrr2lo','mcrr2mi','mcrr2pl','mcrr2vs','mcrr2vc','mcrr2hi','mcrr2ls','mcrr2ge','mcrr2lt','mcrr2gt','mcrr2le', + 'mrceq','mrcne','mrccs','mrchs','mrccc','mrclo','mrcmi','mrcpl','mrcvs','mrcvc','mrchi','mrcls','mrcge','mrclt','mrcgt','mrcle', + 'mrc2eq','mrc2ne','mrc2cs','mrc2hs','mrc2cc','mrc2lo','mrc2mi','mrc2pl','mrc2vs','mrc2vc','mrc2hi','mrc2ls','mrc2ge','mrc2lt','mrc2gt','mrc2le', + 'mrrceq','mrrcne','mrrccs','mrrchs','mrrccc','mrrclo','mrrcmi','mrrcpl','mrrcvs','mrrcvc','mrrchi','mrrcls','mrrcge','mrrclt','mrrcgt','mrrcle', + 'mrrc2eq','mrrc2ne','mrrc2cs','mrrc2hs','mrrc2cc','mrrc2lo','mrrc2mi','mrrc2pl','mrrc2vs','mrrc2vc','mrrc2hi','mrrc2ls','mrrc2ge','mrrc2lt','mrrc2gt','mrrc2le' + ), + /* Unconditional System Instructions */ + 15 => array( + /* System: Unconditional Debug and State-Change Instructions */ + 'bkpt', + 'dbg','dbgal', + 'setend', + 'svc','svcal', + 'sev.w','seval.w', + 'sev','seval', + 'wfe.w','wfeal.w', + 'wfe','wfeal', + 'wfi.w','wfial.w', + 'wfi','wfial', + /* System: Unconditional ThumbEE Instructions */ + 'enterx', + 'leavex', + 'chka.n','chkaal.n', + 'chka','chkaal', + 'hb.n','hbal.n', + 'hb','hbal', + 'hbl.n','hblal.n', + 'hbl','hblal', + 'hblp.n','hblpal.n', + 'hblp','hblpal', + 'hbp.n','hbpal.n', + 'hbp','hbpal', + /* System: Unconditional Privileged Instructions */ + 'cpsie.n', + 'cpsie.w', + 'cpsie', + 'cpsid.n', + 'cpsid.w', + 'cpsid', + 'smc','smcal', + 'rfeda','rfedaal', + 'rfedb','rfedbal', + 'rfeia','rfeiaal', + 'rfeib','rfeibal', + 'srsda','srsdaal', + 'srsdb','srsdbal', + 'srsia','srsiaal', + 'srsib','srsibal' + ), + /* Conditional System Instructions */ + 16 => array( + /* System: Conditional Debug and State-Change Instructions */ + 'dbgeq','dbgne','dbgcs','dbghs','dbgcc','dbglo','dbgmi','dbgpl','dbgvs','dbgvc','dbghi','dbgls','dbgge','dbglt','dbggt','dbgle', + 'svceq','svcne','svccs','svchs','svccc','svclo','svcmi','svcpl','svcvs','svcvc','svchi','svcls','svcge','svclt','svcgt','svcle', + 'seveq.w','sevne.w','sevcs.w','sevhs.w','sevcc.w','sevlo.w','sevmi.w','sevpl.w','sevvs.w','sevvc.w','sevhi.w','sevls.w','sevge.w','sevlt.w','sevgt.w','sevle.w', + 'seveq','sevne','sevcs','sevhs','sevcc','sevlo','sevmi','sevpl','sevvs','sevvc','sevhi','sevls','sevge','sevlt','sevgt','sevle', + 'wfeeq.w','wfene.w','wfecs.w','wfehs.w','wfecc.w','wfelo.w','wfemi.w','wfepl.w','wfevs.w','wfevc.w','wfehi.w','wfels.w','wfege.w','wfelt.w','wfegt.w','wfele.w', + 'wfeeq','wfene','wfecs','wfehs','wfecc','wfelo','wfemi','wfepl','wfevs','wfevc','wfehi','wfels','wfege','wfelt','wfegt','wfele', + 'wfieq.w','wfine.w','wfics.w','wfihs.w','wficc.w','wfilo.w','wfimi.w','wfipl.w','wfivs.w','wfivc.w','wfihi.w','wfils.w','wfige.w','wfilt.w','wfigt.w','wfile.w', + 'wfieq','wfine','wfics','wfihs','wficc','wfilo','wfimi','wfipl','wfivs','wfivc','wfihi','wfils','wfige','wfilt','wfigt','wfile', + /* System: Conditional ThumbEE Instructions */ + 'chkaeq.n','chkane.n','chkacs.n','chkahs.n','chkacc.n','chkalo.n','chkami.n','chkapl.n','chkavs.n','chkavc.n','chkahi.n','chkals.n','chkage.n','chkalt.n','chkagt.n','chkale.n', + 'chkaeq','chkane','chkacs','chkahs','chkacc','chkalo','chkami','chkapl','chkavs','chkavc','chkahi','chkals','chkage','chkalt','chkagt','chkale', + 'hbeq.n','hbne.n','hbcs.n','hbhs.n','hbcc.n','hblo.n','hbmi.n','hbpl.n','hbvs.n','hbvc.n','hbhi.n','hbls.n','hbge.n','hblt.n','hbgt.n','hble.n', + 'hbeq','hbne','hbcs','hbhs','hbcc','hblo','hbmi','hbpl','hbvs','hbvc','hbhi','hbls','hbge','hblt','hbgt','hble', + 'hbleq.n','hblne.n','hblcs.n','hblhs.n','hblcc.n','hbllo.n','hblmi.n','hblpl.n','hblvs.n','hblvc.n','hblhi.n','hblls.n','hblge.n','hbllt.n','hblgt.n','hblle.n', + 'hbleq','hblne','hblcs','hblhs','hblcc','hbllo','hblmi','hblpl','hblvs','hblvc','hblhi','hblls','hblge','hbllt','hblgt','hblle', + 'hblpeq.n','hblpne.n','hblpcs.n','hblphs.n','hblpcc.n','hblplo.n','hblpmi.n','hblppl.n','hblpvs.n','hblpvc.n','hblphi.n','hblpls.n','hblpge.n','hblplt.n','hblpgt.n','hblple.n', + 'hblpeq','hblpne','hblpcs','hblphs','hblpcc','hblplo','hblpmi','hblppl','hblpvs','hblpvc','hblphi','hblpls','hblpge','hblplt','hblpgt','hblple', + 'hbpeq.n','hbpne.n','hbpcs.n','hbphs.n','hbpcc.n','hbplo.n','hbpmi.n','hbppl.n','hbpvs.n','hbpvc.n','hbphi.n','hbpls.n','hbpge.n','hbplt.n','hbpgt.n','hbple.n', + 'hbpeq','hbpne','hbpcs','hbphs','hbpcc','hbplo','hbpmi','hbppl','hbpvs','hbpvc','hbphi','hbpls','hbpge','hbplt','hbpgt','hbple', + /* System: Conditional Privileged Instructions */ + 'smceq','smcne','smccs','smchs','smccc','smclo','smcmi','smcpl','smcvs','smcvc','smchi','smcls','smcge','smclt','smcgt','smcle', + 'rfedaeq','rfedane','rfedacs','rfedahs','rfedacc','rfedalo','rfedami','rfedapl','rfedavs','rfedavc','rfedahi','rfedals','rfedage','rfedalt','rfedagt','rfedale', + 'rfedbeq','rfedbne','rfedbcs','rfedbhs','rfedbcc','rfedblo','rfedbmi','rfedbpl','rfedbvs','rfedbvc','rfedbhi','rfedbls','rfedbge','rfedblt','rfedbgt','rfedble', + 'rfeiaeq','rfeiane','rfeiacs','rfeiahs','rfeiacc','rfeialo','rfeiami','rfeiapl','rfeiavs','rfeiavc','rfeiahi','rfeials','rfeiage','rfeialt','rfeiagt','rfeiale', + 'rfeibeq','rfeibne','rfeibcs','rfeibhs','rfeibcc','rfeiblo','rfeibmi','rfeibpl','rfeibvs','rfeibvc','rfeibhi','rfeibls','rfeibge','rfeiblt','rfeibgt','rfeible', + 'srsdaeq','srsdane','srsdacs','srsdahs','srsdacc','srsdalo','srsdami','srsdapl','srsdavs','srsdavc','srsdahi','srsdals','srsdage','srsdalt','srsdagt','srsdale', + 'srsdbeq','srsdbne','srsdbcs','srsdbhs','srsdbcc','srsdblo','srsdbmi','srsdbpl','srsdbvs','srsdbvc','srsdbhi','srsdbls','srsdbge','srsdblt','srsdbgt','srsdble', + 'srsiaeq','srsiane','srsiacs','srsiahs','srsiacc','srsialo','srsiami','srsiapl','srsiavs','srsiavc','srsiahi','srsials','srsiage','srsialt','srsiagt','srsiale', + 'srsibeq','srsibne','srsibcs','srsibhs','srsibcc','srsiblo','srsibmi','srsibpl','srsibvs','srsibvc','srsibhi','srsibls','srsibge','srsiblt','srsibgt','srsible' + ), + /* Unconditional WMMX/WMMX2 instructions */ + 17 => array( + /* Unconditional WMMX/WMMX2 SIMD Instructions */ + 'tandcb','tandcbal', + 'tandch','tandchal', + 'tandcw','tandcwal', + 'tbcstb','tbcstbal', + 'tbcsth','tbcsthal', + 'tbcstw','tbcstwal', + 'textrcb','textrcbal', + 'textrch','textrchal', + 'textrcw','textrcwal', + 'textrmsb','textrmsbal', + 'textrmsh','textrmshal', + 'textrmsw','textrmswal', + 'textrmub','textrmubal', + 'textrmuh','textrmuhal', + 'textrmuw','textrmuwal', + 'tinsrb','tinsrbal', + 'tinsrh','tinsrhal', + 'tinsrw','tinsrwal', + 'tmcr','tmcral', + 'tmcrr','tmcrral', + 'tmia','tmiaal', + 'tmiaph','tmiaphal', + 'tmiabb','tmiabbal', + 'tmiabt','tmiabtal', + 'tmiatb','tmiatbal', + 'tmiatt','tmiattal', + 'tmovmskb','tmovmskbal', + 'tmovmskh','tmovmskhal', + 'tmovmskw','tmovmskwal', + 'tmrc','tmrcal', + 'tmrrc','tmrrcal', + 'torcb','torcbal', + 'torch','torchal', + 'torcw','torcwal', + 'torvscb','torvscbal', + 'torvsch','torvschal', + 'torvscw','torvscwal', + 'wabsb','wabsbal', + 'wabsh','wabshal', + 'wabsw','wabswal', + 'wabsdiffb','wabsdiffbal', + 'wabsdiffh','wabsdiffhal', + 'wabsdiffw','wabsdiffwal', + 'waccb','waccbal', + 'wacch','wacchal', + 'waccw','waccwal', + 'waddb','waddbal', + 'waddh','waddhal', + 'waddw','waddwal', + 'waddbc','waddbcal', + 'waddhc','waddhcal', + 'waddwc','waddwcal', + 'waddbss','waddbssal', + 'waddhss','waddhssal', + 'waddwss','waddwssal', + 'waddbus','waddbusal', + 'waddhus','waddhusal', + 'waddwus','waddwusal', + 'waddsubhx','waddsubhxal', + 'waligni','walignial', + 'walignr0','walignr0al', + 'walignr1','walignr1al', + 'walignr2','walignr2al', + 'walignr3','walignr3al', + 'wand','wandal', + 'wandn','wandnal', + 'wavg2b','wavg2bal', + 'wavg2h','wavg2hal', + 'wavg2br','wavg2bral', + 'wavg2hr','wavg2hral', + 'wavg4','wavg4al', + 'wavg4r','wavg4ral', + 'wcmpeqb','wcmpeqbal', + 'wcmpeqh','wcmpeqhal', + 'wcmpeqw','wcmpeqwal', + 'wcmpgtsb','wcmpgtsbal', + 'wcmpgtsh','wcmpgtshal', + 'wcmpgtsw','wcmpgtswal', + 'wcmpgtub','wcmpgtubal', + 'wcmpgtuh','wcmpgtuhal', + 'wcmpgtuw','wcmpgtuwal', + 'wldrb','wldrbal', + 'wldrh','wldrhal', + 'wldrw','wldrwal', + 'wldrd','wldrdal', + 'wmacs','wmacsal', + 'wmacu','wmacual', + 'wmacsz','wmacszal', + 'wmacuz','wmacuzal', + 'wmadds','wmaddsal', + 'wmaddu','wmaddual', + 'wmaddsx','wmaddsxal', + 'wmaddux','wmadduxal', + 'wmaddsn','wmaddsnal', + 'wmaddun','wmaddunal', + 'wmaxsb','wmaxsbal', + 'wmaxsh','wmaxshal', + 'wmaxsw','wmaxswal', + 'wmaxub','wmaxubal', + 'wmaxuh','wmaxuhal', + 'wmaxuw','wmaxuwal', + 'wmerge','wmergeal', + 'wmiabb','wmiabbal', + 'wmiabt','wmiabtal', + 'wmiatb','wmiatbal', + 'wmiatt','wmiattal', + 'wmiabbn','wmiabbnal', + 'wmiabtn','wmiabtnal', + 'wmiatbn','wmiatbnal', + 'wmiattn','wmiattnal', + 'wmiawbb','wmiawbbal', + 'wmiawbt','wmiawbtal', + 'wmiawtb','wmiawtbal', + 'wmiawtt','wmiawttal', + 'wmiawbbn','wmiawbbnal', + 'wmiawbtn','wmiawbtnal', + 'wmiawtbn','wmiawtbnal', + 'wmiawttn','wmiawttnal', + 'wminsb','wminsbal', + 'wminsh','wminshal', + 'wminsw','wminswal', + 'wminub','wminubal', + 'wminuh','wminuhal', + 'wminuw','wminuwal', + 'wmov','wmoval', + 'wmulsm','wmulsmal', + 'wmulsl','wmulslal', + 'wmulum','wmulumal', + 'wmulul','wmululal', + 'wmulsmr','wmulsmral', + 'wmulslr','wmulslral', + 'wmulumr','wmulumral', + 'wmululr','wmululral', + 'wmulwum','wmulwumal', + 'wmulwsm','wmulwsmal', + 'wmulwl','wmulwlal', + 'wmulwumr','wmulwumral', + 'wmulwsmr','wmulwsmral', + 'wor','woral', + 'wpackhss','wpackhssal', + 'wpackwss','wpackwssal', + 'wpackdss','wpackdssal', + 'wpackhus','wpackhusal', + 'wpackwus','wpackwusal', + 'wpackdus','wpackdusal', + 'wqmiabb','wqmiabbal', + 'wqmiabt','wqmiabtal', + 'wqmiatb','wqmiatbal', + 'wqmiatt','wqmiattal', + 'wqmiabbn','wqmiabbnal', + 'wqmiabtn','wqmiabtnal', + 'wqmiatbn','wqmiatbnal', + 'wqmiattn','wqmiattnal', + 'wqmulm','wqmulmal', + 'wqmulmr','wqmulmral', + 'wqmulwm','wqmulwmal', + 'wqmulwmr','wqmulwmral', + 'wrorh','wrorhal', + 'wrorw','wrorwal', + 'wrord','wrordal', + 'wrorhg','wrorhgal', + 'wrorwg','wrorwgal', + 'wrordg','wrordgal', + 'wsadb','wsadbal', + 'wsadh','wsadhal', + 'wsadbz','wsadbzal', + 'wsadhz','wsadhzal', + 'wshufh','wshufhal', + 'wsllh','wsllhal', + 'wsllw','wsllwal', + 'wslld','wslldal', + 'wsllhg','wsllhgal', + 'wsllwg','wsllwgal', + 'wslldg','wslldgal', + 'wsrah','wsrahal', + 'wsraw','wsrawal', + 'wsrad','wsradal', + 'wsrahg','wsrahgal', + 'wsrawg','wsrawgal', + 'wsradg','wsradgal', + 'wsrlh','wsrlhal', + 'wsrlw','wsrlwal', + 'wsrld','wsrldal', + 'wsrlhg','wsrlhgal', + 'wsrlwg','wsrlwgal', + 'wsrldg','wsrldgal', + 'wstrb','wstrbal', + 'wstrh','wstrhal', + 'wstrw','wstrwal', + 'wstrd','wstrdal', + 'wsubb','wsubbal', + 'wsubh','wsubhal', + 'wsubw','wsubwal', + 'wsubbss','wsubbssal', + 'wsubhss','wsubhssal', + 'wsubwss','wsubwssal', + 'wsubbus','wsubbusal', + 'wsubhus','wsubhusal', + 'wsubwus','wsubwusal', + 'wsubaddhx','wsubaddhxal', + 'wunpckehsb','wunpckehsbal', + 'wunpckehsh','wunpckehshal', + 'wunpckehsw','wunpckehswal', + 'wunpckehub','wunpckehubal', + 'wunpckehuh','wunpckehuhal', + 'wunpckehuw','wunpckehuwal', + 'wunpckihb','wunpckihbal', + 'wunpckihh','wunpckihhal', + 'wunpckihw','wunpckihwal', + 'wunpckelsb','wunpckelsbal', + 'wunpckelsh','wunpckelshal', + 'wunpckelsw','wunpckelswal', + 'wunpckelub','wunpckelubal', + 'wunpckeluh','wunpckeluhal', + 'wunpckeluw','wunpckeluwal', + 'wunpckilb','wunpckilbal', + 'wunpckilh','wunpckilhal', + 'wunpckilw','wunpckilwal', + 'wxor','wxoral', + 'wzero','wzeroal' + ), + /* Conditional WMMX/WMMX2 SIMD Instructions */ + 18 => array( + /* Conditional WMMX/WMMX2 SIMD Instructions */ + 'tandcbeq','tandcbne','tandcbcs','tandcbhs','tandcbcc','tandcblo','tandcbmi','tandcbpl','tandcbvs','tandcbvc','tandcbhi','tandcbls','tandcbge','tandcblt','tandcbgt','tandcble', + 'tandcheq','tandchne','tandchcs','tandchhs','tandchcc','tandchlo','tandchmi','tandchpl','tandchvs','tandchvc','tandchhi','tandchls','tandchge','tandchlt','tandchgt','tandchle', + 'tandcweq','tandcwne','tandcwcs','tandcwhs','tandcwcc','tandcwlo','tandcwmi','tandcwpl','tandcwvs','tandcwvc','tandcwhi','tandcwls','tandcwge','tandcwlt','tandcwgt','tandcwle', + 'tbcstbeq','tbcstbne','tbcstbcs','tbcstbhs','tbcstbcc','tbcstblo','tbcstbmi','tbcstbpl','tbcstbvs','tbcstbvc','tbcstbhi','tbcstbls','tbcstbge','tbcstblt','tbcstbgt','tbcstble', + 'tbcstheq','tbcsthne','tbcsthcs','tbcsthhs','tbcsthcc','tbcsthlo','tbcsthmi','tbcsthpl','tbcsthvs','tbcsthvc','tbcsthhi','tbcsthls','tbcsthge','tbcsthlt','tbcsthgt','tbcsthle', + 'tbcstweq','tbcstwne','tbcstwcs','tbcstwhs','tbcstwcc','tbcstwlo','tbcstwmi','tbcstwpl','tbcstwvs','tbcstwvc','tbcstwhi','tbcstwls','tbcstwge','tbcstwlt','tbcstwgt','tbcstwle', + 'textrcbeq','textrcbne','textrcbcs','textrcbhs','textrcbcc','textrcblo','textrcbmi','textrcbpl','textrcbvs','textrcbvc','textrcbhi','textrcbls','textrcbge','textrcblt','textrcbgt','textrcble', + 'textrcheq','textrchne','textrchcs','textrchhs','textrchcc','textrchlo','textrchmi','textrchpl','textrchvs','textrchvc','textrchhi','textrchls','textrchge','textrchlt','textrchgt','textrchle', + 'textrcweq','textrcwne','textrcwcs','textrcwhs','textrcwcc','textrcwlo','textrcwmi','textrcwpl','textrcwvs','textrcwvc','textrcwhi','textrcwls','textrcwge','textrcwlt','textrcwgt','textrcwle', + 'textrmsbeq','textrmsbne','textrmsbcs','textrmsbhs','textrmsbcc','textrmsblo','textrmsbmi','textrmsbpl','textrmsbvs','textrmsbvc','textrmsbhi','textrmsbls','textrmsbge','textrmsblt','textrmsbgt','textrmsble', + 'textrmsheq','textrmshne','textrmshcs','textrmshhs','textrmshcc','textrmshlo','textrmshmi','textrmshpl','textrmshvs','textrmshvc','textrmshhi','textrmshls','textrmshge','textrmshlt','textrmshgt','textrmshle', + 'textrmsweq','textrmswne','textrmswcs','textrmswhs','textrmswcc','textrmswlo','textrmswmi','textrmswpl','textrmswvs','textrmswvc','textrmswhi','textrmswls','textrmswge','textrmswlt','textrmswgt','textrmswle', + 'textrmubeq','textrmubne','textrmubcs','textrmubhs','textrmubcc','textrmublo','textrmubmi','textrmubpl','textrmubvs','textrmubvc','textrmubhi','textrmubls','textrmubge','textrmublt','textrmubgt','textrmuble', + 'textrmuheq','textrmuhne','textrmuhcs','textrmuhhs','textrmuhcc','textrmuhlo','textrmuhmi','textrmuhpl','textrmuhvs','textrmuhvc','textrmuhhi','textrmuhls','textrmuhge','textrmuhlt','textrmuhgt','textrmuhle', + 'textrmuweq','textrmuwne','textrmuwcs','textrmuwhs','textrmuwcc','textrmuwlo','textrmuwmi','textrmuwpl','textrmuwvs','textrmuwvc','textrmuwhi','textrmuwls','textrmuwge','textrmuwlt','textrmuwgt','textrmuwle', + 'tinsrbeq','tinsrbne','tinsrbcs','tinsrbhs','tinsrbcc','tinsrblo','tinsrbmi','tinsrbpl','tinsrbvs','tinsrbvc','tinsrbhi','tinsrbls','tinsrbge','tinsrblt','tinsrbgt','tinsrble', + 'tinsrheq','tinsrhne','tinsrhcs','tinsrhhs','tinsrhcc','tinsrhlo','tinsrhmi','tinsrhpl','tinsrhvs','tinsrhvc','tinsrhhi','tinsrhls','tinsrhge','tinsrhlt','tinsrhgt','tinsrhle', + 'tinsrweq','tinsrwne','tinsrwcs','tinsrwhs','tinsrwcc','tinsrwlo','tinsrwmi','tinsrwpl','tinsrwvs','tinsrwvc','tinsrwhi','tinsrwls','tinsrwge','tinsrwlt','tinsrwgt','tinsrwle', + 'tmcreq','tmcrne','tmcrcs','tmcrhs','tmcrcc','tmcrlo','tmcrmi','tmcrpl','tmcrvs','tmcrvc','tmcrhi','tmcrls','tmcrge','tmcrlt','tmcrgt','tmcrle', + 'tmcrreq','tmcrrne','tmcrrcs','tmcrrhs','tmcrrcc','tmcrrlo','tmcrrmi','tmcrrpl','tmcrrvs','tmcrrvc','tmcrrhi','tmcrrls','tmcrrge','tmcrrlt','tmcrrgt','tmcrrle', + 'tmiaeq','tmiane','tmiacs','tmiahs','tmiacc','tmialo','tmiami','tmiapl','tmiavs','tmiavc','tmiahi','tmials','tmiage','tmialt','tmiagt','tmiale', + 'tmiapheq','tmiaphne','tmiaphcs','tmiaphhs','tmiaphcc','tmiaphlo','tmiaphmi','tmiaphpl','tmiaphvs','tmiaphvc','tmiaphhi','tmiaphls','tmiaphge','tmiaphlt','tmiaphgt','tmiaphle', + 'tmiabbeq','tmiabbne','tmiabbcs','tmiabbhs','tmiabbcc','tmiabblo','tmiabbmi','tmiabbpl','tmiabbvs','tmiabbvc','tmiabbhi','tmiabbls','tmiabbge','tmiabblt','tmiabbgt','tmiabble', + 'tmiabteq','tmiabtne','tmiabtcs','tmiabths','tmiabtcc','tmiabtlo','tmiabtmi','tmiabtpl','tmiabtvs','tmiabtvc','tmiabthi','tmiabtls','tmiabtge','tmiabtlt','tmiabtgt','tmiabtle', + 'tmiatbeq','tmiatbne','tmiatbcs','tmiatbhs','tmiatbcc','tmiatblo','tmiatbmi','tmiatbpl','tmiatbvs','tmiatbvc','tmiatbhi','tmiatbls','tmiatbge','tmiatblt','tmiatbgt','tmiatble', + 'tmiatteq','tmiattne','tmiattcs','tmiatths','tmiattcc','tmiattlo','tmiattmi','tmiattpl','tmiattvs','tmiattvc','tmiatthi','tmiattls','tmiattge','tmiattlt','tmiattgt','tmiattle', + 'tmovmskbeq','tmovmskbne','tmovmskbcs','tmovmskbhs','tmovmskbcc','tmovmskblo','tmovmskbmi','tmovmskbpl','tmovmskbvs','tmovmskbvc','tmovmskbhi','tmovmskbls','tmovmskbge','tmovmskblt','tmovmskbgt','tmovmskble', + 'tmovmskheq','tmovmskhne','tmovmskhcs','tmovmskhhs','tmovmskhcc','tmovmskhlo','tmovmskhmi','tmovmskhpl','tmovmskhvs','tmovmskhvc','tmovmskhhi','tmovmskhls','tmovmskhge','tmovmskhlt','tmovmskhgt','tmovmskhle', + 'tmovmskweq','tmovmskwne','tmovmskwcs','tmovmskwhs','tmovmskwcc','tmovmskwlo','tmovmskwmi','tmovmskwpl','tmovmskwvs','tmovmskwvc','tmovmskwhi','tmovmskwls','tmovmskwge','tmovmskwlt','tmovmskwgt','tmovmskwle', + 'tmrceq','tmrcne','tmrccs','tmrchs','tmrccc','tmrclo','tmrcmi','tmrcpl','tmrcvs','tmrcvc','tmrchi','tmrcls','tmrcge','tmrclt','tmrcgt','tmrcle', + 'tmrrceq','tmrrcne','tmrrccs','tmrrchs','tmrrccc','tmrrclo','tmrrcmi','tmrrcpl','tmrrcvs','tmrrcvc','tmrrchi','tmrrcls','tmrrcge','tmrrclt','tmrrcgt','tmrrcle', + 'torcbeq','torcbne','torcbcs','torcbhs','torcbcc','torcblo','torcbmi','torcbpl','torcbvs','torcbvc','torcbhi','torcbls','torcbge','torcblt','torcbgt','torcble', + 'torcheq','torchne','torchcs','torchhs','torchcc','torchlo','torchmi','torchpl','torchvs','torchvc','torchhi','torchls','torchge','torchlt','torchgt','torchle', + 'torcweq','torcwne','torcwcs','torcwhs','torcwcc','torcwlo','torcwmi','torcwpl','torcwvs','torcwvc','torcwhi','torcwls','torcwge','torcwlt','torcwgt','torcwle', + 'torvscbeq','torvscbne','torvscbcs','torvscbhs','torvscbcc','torvscblo','torvscbmi','torvscbpl','torvscbvs','torvscbvc','torvscbhi','torvscbls','torvscbge','torvscblt','torvscbgt','torvscble', + 'torvscheq','torvschne','torvschcs','torvschhs','torvschcc','torvschlo','torvschmi','torvschpl','torvschvs','torvschvc','torvschhi','torvschls','torvschge','torvschlt','torvschgt','torvschle', + 'torvscweq','torvscwne','torvscwcs','torvscwhs','torvscwcc','torvscwlo','torvscwmi','torvscwpl','torvscwvs','torvscwvc','torvscwhi','torvscwls','torvscwge','torvscwlt','torvscwgt','torvscwle', + 'wabsbeq','wabsbne','wabsbcs','wabsbhs','wabsbcc','wabsblo','wabsbmi','wabsbpl','wabsbvs','wabsbvc','wabsbhi','wabsbls','wabsbge','wabsblt','wabsbgt','wabsble', + 'wabsheq','wabshne','wabshcs','wabshhs','wabshcc','wabshlo','wabshmi','wabshpl','wabshvs','wabshvc','wabshhi','wabshls','wabshge','wabshlt','wabshgt','wabshle', + 'wabsweq','wabswne','wabswcs','wabswhs','wabswcc','wabswlo','wabswmi','wabswpl','wabswvs','wabswvc','wabswhi','wabswls','wabswge','wabswlt','wabswgt','wabswle', + 'wabsdiffbeq','wabsdiffbne','wabsdiffbcs','wabsdiffbhs','wabsdiffbcc','wabsdiffblo','wabsdiffbmi','wabsdiffbpl','wabsdiffbvs','wabsdiffbvc','wabsdiffbhi','wabsdiffbls','wabsdiffbge','wabsdiffblt','wabsdiffbgt','wabsdiffble', + 'wabsdiffheq','wabsdiffhne','wabsdiffhcs','wabsdiffhhs','wabsdiffhcc','wabsdiffhlo','wabsdiffhmi','wabsdiffhpl','wabsdiffhvs','wabsdiffhvc','wabsdiffhhi','wabsdiffhls','wabsdiffhge','wabsdiffhlt','wabsdiffhgt','wabsdiffhle', + 'wabsdiffweq','wabsdiffwne','wabsdiffwcs','wabsdiffwhs','wabsdiffwcc','wabsdiffwlo','wabsdiffwmi','wabsdiffwpl','wabsdiffwvs','wabsdiffwvc','wabsdiffwhi','wabsdiffwls','wabsdiffwge','wabsdiffwlt','wabsdiffwgt','wabsdiffwle', + 'waccbeq','waccbne','waccbcs','waccbhs','waccbcc','waccblo','waccbmi','waccbpl','waccbvs','waccbvc','waccbhi','waccbls','waccbge','waccblt','waccbgt','waccble', + 'waccheq','wacchne','wacchcs','wacchhs','wacchcc','wacchlo','wacchmi','wacchpl','wacchvs','wacchvc','wacchhi','wacchls','wacchge','wacchlt','wacchgt','wacchle', + 'waccweq','waccwne','waccwcs','waccwhs','waccwcc','waccwlo','waccwmi','waccwpl','waccwvs','waccwvc','waccwhi','waccwls','waccwge','waccwlt','waccwgt','waccwle', + 'waddbeq','waddbne','waddbcs','waddbhs','waddbcc','waddblo','waddbmi','waddbpl','waddbvs','waddbvc','waddbhi','waddbls','waddbge','waddblt','waddbgt','waddble', + 'waddheq','waddhne','waddhcs','waddhhs','waddhcc','waddhlo','waddhmi','waddhpl','waddhvs','waddhvc','waddhhi','waddhls','waddhge','waddhlt','waddhgt','waddhle', + 'waddweq','waddwne','waddwcs','waddwhs','waddwcc','waddwlo','waddwmi','waddwpl','waddwvs','waddwvc','waddwhi','waddwls','waddwge','waddwlt','waddwgt','waddwle', + 'waddbceq','waddbcne','waddbccs','waddbchs','waddbccc','waddbclo','waddbcmi','waddbcpl','waddbcvs','waddbcvc','waddbchi','waddbcls','waddbcge','waddbclt','waddbcgt','waddbcle', + 'waddhceq','waddhcne','waddhccs','waddhchs','waddhccc','waddhclo','waddhcmi','waddhcpl','waddhcvs','waddhcvc','waddhchi','waddhcls','waddhcge','waddhclt','waddhcgt','waddhcle', + 'waddwceq','waddwcne','waddwccs','waddwchs','waddwccc','waddwclo','waddwcmi','waddwcpl','waddwcvs','waddwcvc','waddwchi','waddwcls','waddwcge','waddwclt','waddwcgt','waddwcle', + 'waddbsseq','waddbssne','waddbsscs','waddbsshs','waddbsscc','waddbsslo','waddbssmi','waddbsspl','waddbssvs','waddbssvc','waddbsshi','waddbssls','waddbssge','waddbsslt','waddbssgt','waddbssle', + 'waddhsseq','waddhssne','waddhsscs','waddhsshs','waddhsscc','waddhsslo','waddhssmi','waddhsspl','waddhssvs','waddhssvc','waddhsshi','waddhssls','waddhssge','waddhsslt','waddhssgt','waddhssle', + 'waddwsseq','waddwssne','waddwsscs','waddwsshs','waddwsscc','waddwsslo','waddwssmi','waddwsspl','waddwssvs','waddwssvc','waddwsshi','waddwssls','waddwssge','waddwsslt','waddwssgt','waddwssle', + 'waddbuseq','waddbusne','waddbuscs','waddbushs','waddbuscc','waddbuslo','waddbusmi','waddbuspl','waddbusvs','waddbusvc','waddbushi','waddbusls','waddbusge','waddbuslt','waddbusgt','waddbusle', + 'waddhuseq','waddhusne','waddhuscs','waddhushs','waddhuscc','waddhuslo','waddhusmi','waddhuspl','waddhusvs','waddhusvc','waddhushi','waddhusls','waddhusge','waddhuslt','waddhusgt','waddhusle', + 'waddwuseq','waddwusne','waddwuscs','waddwushs','waddwuscc','waddwuslo','waddwusmi','waddwuspl','waddwusvs','waddwusvc','waddwushi','waddwusls','waddwusge','waddwuslt','waddwusgt','waddwusle', + 'waddsubhxeq','waddsubhxne','waddsubhxcs','waddsubhxhs','waddsubhxcc','waddsubhxlo','waddsubhxmi','waddsubhxpl','waddsubhxvs','waddsubhxvc','waddsubhxhi','waddsubhxls','waddsubhxge','waddsubhxlt','waddsubhxgt','waddsubhxle', + 'walignieq','walignine','walignics','walignihs','walignicc','walignilo','walignimi','walignipl','walignivs','walignivc','walignihi','walignils','walignige','walignilt','walignigt','walignile', + 'walignr0eq','walignr0ne','walignr0cs','walignr0hs','walignr0cc','walignr0lo','walignr0mi','walignr0pl','walignr0vs','walignr0vc','walignr0hi','walignr0ls','walignr0ge','walignr0lt','walignr0gt','walignr0le', + 'walignr1eq','walignr1ne','walignr1cs','walignr1hs','walignr1cc','walignr1lo','walignr1mi','walignr1pl','walignr1vs','walignr1vc','walignr1hi','walignr1ls','walignr1ge','walignr1lt','walignr1gt','walignr1le', + 'walignr2eq','walignr2ne','walignr2cs','walignr2hs','walignr2cc','walignr2lo','walignr2mi','walignr2pl','walignr2vs','walignr2vc','walignr2hi','walignr2ls','walignr2ge','walignr2lt','walignr2gt','walignr2le', + 'walignr3eq','walignr3ne','walignr3cs','walignr3hs','walignr3cc','walignr3lo','walignr3mi','walignr3pl','walignr3vs','walignr3vc','walignr3hi','walignr3ls','walignr3ge','walignr3lt','walignr3gt','walignr3le', + 'wandeq','wandne','wandcs','wandhs','wandcc','wandlo','wandmi','wandpl','wandvs','wandvc','wandhi','wandls','wandge','wandlt','wandgt','wandle', + 'wandneq','wandnne','wandncs','wandnhs','wandncc','wandnlo','wandnmi','wandnpl','wandnvs','wandnvc','wandnhi','wandnls','wandnge','wandnlt','wandngt','wandnle', + 'wavg2beq','wavg2bne','wavg2bcs','wavg2bhs','wavg2bcc','wavg2blo','wavg2bmi','wavg2bpl','wavg2bvs','wavg2bvc','wavg2bhi','wavg2bls','wavg2bge','wavg2blt','wavg2bgt','wavg2ble', + 'wavg2heq','wavg2hne','wavg2hcs','wavg2hhs','wavg2hcc','wavg2hlo','wavg2hmi','wavg2hpl','wavg2hvs','wavg2hvc','wavg2hhi','wavg2hls','wavg2hge','wavg2hlt','wavg2hgt','wavg2hle', + 'wavg2breq','wavg2brne','wavg2brcs','wavg2brhs','wavg2brcc','wavg2brlo','wavg2brmi','wavg2brpl','wavg2brvs','wavg2brvc','wavg2brhi','wavg2brls','wavg2brge','wavg2brlt','wavg2brgt','wavg2brle', + 'wavg2hreq','wavg2hrne','wavg2hrcs','wavg2hrhs','wavg2hrcc','wavg2hrlo','wavg2hrmi','wavg2hrpl','wavg2hrvs','wavg2hrvc','wavg2hrhi','wavg2hrls','wavg2hrge','wavg2hrlt','wavg2hrgt','wavg2hrle', + 'wavg4eq','wavg4ne','wavg4cs','wavg4hs','wavg4cc','wavg4lo','wavg4mi','wavg4pl','wavg4vs','wavg4vc','wavg4hi','wavg4ls','wavg4ge','wavg4lt','wavg4gt','wavg4le', + 'wavg4req','wavg4rne','wavg4rcs','wavg4rhs','wavg4rcc','wavg4rlo','wavg4rmi','wavg4rpl','wavg4rvs','wavg4rvc','wavg4rhi','wavg4rls','wavg4rge','wavg4rlt','wavg4rgt','wavg4rle', + 'wcmpeqbeq','wcmpeqbne','wcmpeqbcs','wcmpeqbhs','wcmpeqbcc','wcmpeqblo','wcmpeqbmi','wcmpeqbpl','wcmpeqbvs','wcmpeqbvc','wcmpeqbhi','wcmpeqbls','wcmpeqbge','wcmpeqblt','wcmpeqbgt','wcmpeqble', + 'wcmpeqheq','wcmpeqhne','wcmpeqhcs','wcmpeqhhs','wcmpeqhcc','wcmpeqhlo','wcmpeqhmi','wcmpeqhpl','wcmpeqhvs','wcmpeqhvc','wcmpeqhhi','wcmpeqhls','wcmpeqhge','wcmpeqhlt','wcmpeqhgt','wcmpeqhle', + 'wcmpeqweq','wcmpeqwne','wcmpeqwcs','wcmpeqwhs','wcmpeqwcc','wcmpeqwlo','wcmpeqwmi','wcmpeqwpl','wcmpeqwvs','wcmpeqwvc','wcmpeqwhi','wcmpeqwls','wcmpeqwge','wcmpeqwlt','wcmpeqwgt','wcmpeqwle', + 'wcmpgtsbeq','wcmpgtsbne','wcmpgtsbcs','wcmpgtsbhs','wcmpgtsbcc','wcmpgtsblo','wcmpgtsbmi','wcmpgtsbpl','wcmpgtsbvs','wcmpgtsbvc','wcmpgtsbhi','wcmpgtsbls','wcmpgtsbge','wcmpgtsblt','wcmpgtsbgt','wcmpgtsble', + 'wcmpgtsheq','wcmpgtshne','wcmpgtshcs','wcmpgtshhs','wcmpgtshcc','wcmpgtshlo','wcmpgtshmi','wcmpgtshpl','wcmpgtshvs','wcmpgtshvc','wcmpgtshhi','wcmpgtshls','wcmpgtshge','wcmpgtshlt','wcmpgtshgt','wcmpgtshle', + 'wcmpgtsweq','wcmpgtswne','wcmpgtswcs','wcmpgtswhs','wcmpgtswcc','wcmpgtswlo','wcmpgtswmi','wcmpgtswpl','wcmpgtswvs','wcmpgtswvc','wcmpgtswhi','wcmpgtswls','wcmpgtswge','wcmpgtswlt','wcmpgtswgt','wcmpgtswle', + 'wcmpgtubeq','wcmpgtubne','wcmpgtubcs','wcmpgtubhs','wcmpgtubcc','wcmpgtublo','wcmpgtubmi','wcmpgtubpl','wcmpgtubvs','wcmpgtubvc','wcmpgtubhi','wcmpgtubls','wcmpgtubge','wcmpgtublt','wcmpgtubgt','wcmpgtuble', + 'wcmpgtuheq','wcmpgtuhne','wcmpgtuhcs','wcmpgtuhhs','wcmpgtuhcc','wcmpgtuhlo','wcmpgtuhmi','wcmpgtuhpl','wcmpgtuhvs','wcmpgtuhvc','wcmpgtuhhi','wcmpgtuhls','wcmpgtuhge','wcmpgtuhlt','wcmpgtuhgt','wcmpgtuhle', + 'wcmpgtuweq','wcmpgtuwne','wcmpgtuwcs','wcmpgtuwhs','wcmpgtuwcc','wcmpgtuwlo','wcmpgtuwmi','wcmpgtuwpl','wcmpgtuwvs','wcmpgtuwvc','wcmpgtuwhi','wcmpgtuwls','wcmpgtuwge','wcmpgtuwlt','wcmpgtuwgt','wcmpgtuwle', + 'wldrbeq','wldrbne','wldrbcs','wldrbhs','wldrbcc','wldrblo','wldrbmi','wldrbpl','wldrbvs','wldrbvc','wldrbhi','wldrbls','wldrbge','wldrblt','wldrbgt','wldrble', + 'wldrheq','wldrhne','wldrhcs','wldrhhs','wldrhcc','wldrhlo','wldrhmi','wldrhpl','wldrhvs','wldrhvc','wldrhhi','wldrhls','wldrhge','wldrhlt','wldrhgt','wldrhle', + 'wldrweq','wldrwne','wldrwcs','wldrwhs','wldrwcc','wldrwlo','wldrwmi','wldrwpl','wldrwvs','wldrwvc','wldrwhi','wldrwls','wldrwge','wldrwlt','wldrwgt','wldrwle', + 'wldrdeq','wldrdne','wldrdcs','wldrdhs','wldrdcc','wldrdlo','wldrdmi','wldrdpl','wldrdvs','wldrdvc','wldrdhi','wldrdls','wldrdge','wldrdlt','wldrdgt','wldrdle', + 'wmacseq','wmacsne','wmacscs','wmacshs','wmacscc','wmacslo','wmacsmi','wmacspl','wmacsvs','wmacsvc','wmacshi','wmacsls','wmacsge','wmacslt','wmacsgt','wmacsle', + 'wmacueq','wmacune','wmacucs','wmacuhs','wmacucc','wmaculo','wmacumi','wmacupl','wmacuvs','wmacuvc','wmacuhi','wmaculs','wmacuge','wmacult','wmacugt','wmacule', + 'wmacszeq','wmacszne','wmacszcs','wmacszhs','wmacszcc','wmacszlo','wmacszmi','wmacszpl','wmacszvs','wmacszvc','wmacszhi','wmacszls','wmacszge','wmacszlt','wmacszgt','wmacszle', + 'wmacuzeq','wmacuzne','wmacuzcs','wmacuzhs','wmacuzcc','wmacuzlo','wmacuzmi','wmacuzpl','wmacuzvs','wmacuzvc','wmacuzhi','wmacuzls','wmacuzge','wmacuzlt','wmacuzgt','wmacuzle', + 'wmaddseq','wmaddsne','wmaddscs','wmaddshs','wmaddscc','wmaddslo','wmaddsmi','wmaddspl','wmaddsvs','wmaddsvc','wmaddshi','wmaddsls','wmaddsge','wmaddslt','wmaddsgt','wmaddsle', + 'wmaddueq','wmaddune','wmadducs','wmadduhs','wmadducc','wmaddulo','wmaddumi','wmaddupl','wmadduvs','wmadduvc','wmadduhi','wmadduls','wmadduge','wmaddult','wmaddugt','wmaddule', + 'wmaddsxeq','wmaddsxne','wmaddsxcs','wmaddsxhs','wmaddsxcc','wmaddsxlo','wmaddsxmi','wmaddsxpl','wmaddsxvs','wmaddsxvc','wmaddsxhi','wmaddsxls','wmaddsxge','wmaddsxlt','wmaddsxgt','wmaddsxle', + 'wmadduxeq','wmadduxne','wmadduxcs','wmadduxhs','wmadduxcc','wmadduxlo','wmadduxmi','wmadduxpl','wmadduxvs','wmadduxvc','wmadduxhi','wmadduxls','wmadduxge','wmadduxlt','wmadduxgt','wmadduxle', + 'wmaddsneq','wmaddsnne','wmaddsncs','wmaddsnhs','wmaddsncc','wmaddsnlo','wmaddsnmi','wmaddsnpl','wmaddsnvs','wmaddsnvc','wmaddsnhi','wmaddsnls','wmaddsnge','wmaddsnlt','wmaddsngt','wmaddsnle', + 'wmadduneq','wmaddunne','wmadduncs','wmaddunhs','wmadduncc','wmaddunlo','wmaddunmi','wmaddunpl','wmaddunvs','wmaddunvc','wmaddunhi','wmaddunls','wmaddunge','wmaddunlt','wmaddungt','wmaddunle', + 'wmaxsbeq','wmaxsbne','wmaxsbcs','wmaxsbhs','wmaxsbcc','wmaxsblo','wmaxsbmi','wmaxsbpl','wmaxsbvs','wmaxsbvc','wmaxsbhi','wmaxsbls','wmaxsbge','wmaxsblt','wmaxsbgt','wmaxsble', + 'wmaxsheq','wmaxshne','wmaxshcs','wmaxshhs','wmaxshcc','wmaxshlo','wmaxshmi','wmaxshpl','wmaxshvs','wmaxshvc','wmaxshhi','wmaxshls','wmaxshge','wmaxshlt','wmaxshgt','wmaxshle', + 'wmaxsweq','wmaxswne','wmaxswcs','wmaxswhs','wmaxswcc','wmaxswlo','wmaxswmi','wmaxswpl','wmaxswvs','wmaxswvc','wmaxswhi','wmaxswls','wmaxswge','wmaxswlt','wmaxswgt','wmaxswle', + 'wmaxubeq','wmaxubne','wmaxubcs','wmaxubhs','wmaxubcc','wmaxublo','wmaxubmi','wmaxubpl','wmaxubvs','wmaxubvc','wmaxubhi','wmaxubls','wmaxubge','wmaxublt','wmaxubgt','wmaxuble', + 'wmaxuheq','wmaxuhne','wmaxuhcs','wmaxuhhs','wmaxuhcc','wmaxuhlo','wmaxuhmi','wmaxuhpl','wmaxuhvs','wmaxuhvc','wmaxuhhi','wmaxuhls','wmaxuhge','wmaxuhlt','wmaxuhgt','wmaxuhle', + 'wmaxuweq','wmaxuwne','wmaxuwcs','wmaxuwhs','wmaxuwcc','wmaxuwlo','wmaxuwmi','wmaxuwpl','wmaxuwvs','wmaxuwvc','wmaxuwhi','wmaxuwls','wmaxuwge','wmaxuwlt','wmaxuwgt','wmaxuwle', + 'wmergeeq','wmergene','wmergecs','wmergehs','wmergecc','wmergelo','wmergemi','wmergepl','wmergevs','wmergevc','wmergehi','wmergels','wmergege','wmergelt','wmergegt','wmergele', + 'wmiabbeq','wmiabbne','wmiabbcs','wmiabbhs','wmiabbcc','wmiabblo','wmiabbmi','wmiabbpl','wmiabbvs','wmiabbvc','wmiabbhi','wmiabbls','wmiabbge','wmiabblt','wmiabbgt','wmiabble', + 'wmiabteq','wmiabtne','wmiabtcs','wmiabths','wmiabtcc','wmiabtlo','wmiabtmi','wmiabtpl','wmiabtvs','wmiabtvc','wmiabthi','wmiabtls','wmiabtge','wmiabtlt','wmiabtgt','wmiabtle', + 'wmiatbeq','wmiatbne','wmiatbcs','wmiatbhs','wmiatbcc','wmiatblo','wmiatbmi','wmiatbpl','wmiatbvs','wmiatbvc','wmiatbhi','wmiatbls','wmiatbge','wmiatblt','wmiatbgt','wmiatble', + 'wmiatteq','wmiattne','wmiattcs','wmiatths','wmiattcc','wmiattlo','wmiattmi','wmiattpl','wmiattvs','wmiattvc','wmiatthi','wmiattls','wmiattge','wmiattlt','wmiattgt','wmiattle', + 'wmiabbneq','wmiabbnne','wmiabbncs','wmiabbnhs','wmiabbncc','wmiabbnlo','wmiabbnmi','wmiabbnpl','wmiabbnvs','wmiabbnvc','wmiabbnhi','wmiabbnls','wmiabbnge','wmiabbnlt','wmiabbngt','wmiabbnle', + 'wmiabtneq','wmiabtnne','wmiabtncs','wmiabtnhs','wmiabtncc','wmiabtnlo','wmiabtnmi','wmiabtnpl','wmiabtnvs','wmiabtnvc','wmiabtnhi','wmiabtnls','wmiabtnge','wmiabtnlt','wmiabtngt','wmiabtnle', + 'wmiatbneq','wmiatbnne','wmiatbncs','wmiatbnhs','wmiatbncc','wmiatbnlo','wmiatbnmi','wmiatbnpl','wmiatbnvs','wmiatbnvc','wmiatbnhi','wmiatbnls','wmiatbnge','wmiatbnlt','wmiatbngt','wmiatbnle', + 'wmiattneq','wmiattnne','wmiattncs','wmiattnhs','wmiattncc','wmiattnlo','wmiattnmi','wmiattnpl','wmiattnvs','wmiattnvc','wmiattnhi','wmiattnls','wmiattnge','wmiattnlt','wmiattngt','wmiattnle', + 'wmiawbbeq','wmiawbbne','wmiawbbcs','wmiawbbhs','wmiawbbcc','wmiawbblo','wmiawbbmi','wmiawbbpl','wmiawbbvs','wmiawbbvc','wmiawbbhi','wmiawbbls','wmiawbbge','wmiawbblt','wmiawbbgt','wmiawbble', + 'wmiawbteq','wmiawbtne','wmiawbtcs','wmiawbths','wmiawbtcc','wmiawbtlo','wmiawbtmi','wmiawbtpl','wmiawbtvs','wmiawbtvc','wmiawbthi','wmiawbtls','wmiawbtge','wmiawbtlt','wmiawbtgt','wmiawbtle', + 'wmiawtbeq','wmiawtbne','wmiawtbcs','wmiawtbhs','wmiawtbcc','wmiawtblo','wmiawtbmi','wmiawtbpl','wmiawtbvs','wmiawtbvc','wmiawtbhi','wmiawtbls','wmiawtbge','wmiawtblt','wmiawtbgt','wmiawtble', + 'wmiawtteq','wmiawttne','wmiawttcs','wmiawtths','wmiawttcc','wmiawttlo','wmiawttmi','wmiawttpl','wmiawttvs','wmiawttvc','wmiawtthi','wmiawttls','wmiawttge','wmiawttlt','wmiawttgt','wmiawttle', + 'wmiawbbneq','wmiawbbnne','wmiawbbncs','wmiawbbnhs','wmiawbbncc','wmiawbbnlo','wmiawbbnmi','wmiawbbnpl','wmiawbbnvs','wmiawbbnvc','wmiawbbnhi','wmiawbbnls','wmiawbbnge','wmiawbbnlt','wmiawbbngt','wmiawbbnle', + 'wmiawbtneq','wmiawbtnne','wmiawbtncs','wmiawbtnhs','wmiawbtncc','wmiawbtnlo','wmiawbtnmi','wmiawbtnpl','wmiawbtnvs','wmiawbtnvc','wmiawbtnhi','wmiawbtnls','wmiawbtnge','wmiawbtnlt','wmiawbtngt','wmiawbtnle', + 'wmiawtbneq','wmiawtbnne','wmiawtbncs','wmiawtbnhs','wmiawtbncc','wmiawtbnlo','wmiawtbnmi','wmiawtbnpl','wmiawtbnvs','wmiawtbnvc','wmiawtbnhi','wmiawtbnls','wmiawtbnge','wmiawtbnlt','wmiawtbngt','wmiawtbnle', + 'wmiawttneq','wmiawttnne','wmiawttncs','wmiawttnhs','wmiawttncc','wmiawttnlo','wmiawttnmi','wmiawttnpl','wmiawttnvs','wmiawttnvc','wmiawttnhi','wmiawttnls','wmiawttnge','wmiawttnlt','wmiawttngt','wmiawttnle', + 'wminsbeq','wminsbne','wminsbcs','wminsbhs','wminsbcc','wminsblo','wminsbmi','wminsbpl','wminsbvs','wminsbvc','wminsbhi','wminsbls','wminsbge','wminsblt','wminsbgt','wminsble', + 'wminsheq','wminshne','wminshcs','wminshhs','wminshcc','wminshlo','wminshmi','wminshpl','wminshvs','wminshvc','wminshhi','wminshls','wminshge','wminshlt','wminshgt','wminshle', + 'wminsweq','wminswne','wminswcs','wminswhs','wminswcc','wminswlo','wminswmi','wminswpl','wminswvs','wminswvc','wminswhi','wminswls','wminswge','wminswlt','wminswgt','wminswle', + 'wminubeq','wminubne','wminubcs','wminubhs','wminubcc','wminublo','wminubmi','wminubpl','wminubvs','wminubvc','wminubhi','wminubls','wminubge','wminublt','wminubgt','wminuble', + 'wminuheq','wminuhne','wminuhcs','wminuhhs','wminuhcc','wminuhlo','wminuhmi','wminuhpl','wminuhvs','wminuhvc','wminuhhi','wminuhls','wminuhge','wminuhlt','wminuhgt','wminuhle', + 'wminuweq','wminuwne','wminuwcs','wminuwhs','wminuwcc','wminuwlo','wminuwmi','wminuwpl','wminuwvs','wminuwvc','wminuwhi','wminuwls','wminuwge','wminuwlt','wminuwgt','wminuwle', + 'wmoveq','wmovne','wmovcs','wmovhs','wmovcc','wmovlo','wmovmi','wmovpl','wmovvs','wmovvc','wmovhi','wmovls','wmovge','wmovlt','wmovgt','wmovle', + 'wmulsmeq','wmulsmne','wmulsmcs','wmulsmhs','wmulsmcc','wmulsmlo','wmulsmmi','wmulsmpl','wmulsmvs','wmulsmvc','wmulsmhi','wmulsmls','wmulsmge','wmulsmlt','wmulsmgt','wmulsmle', + 'wmulsleq','wmulslne','wmulslcs','wmulslhs','wmulslcc','wmulsllo','wmulslmi','wmulslpl','wmulslvs','wmulslvc','wmulslhi','wmulslls','wmulslge','wmulsllt','wmulslgt','wmulslle', + 'wmulumeq','wmulumne','wmulumcs','wmulumhs','wmulumcc','wmulumlo','wmulummi','wmulumpl','wmulumvs','wmulumvc','wmulumhi','wmulumls','wmulumge','wmulumlt','wmulumgt','wmulumle', + 'wmululeq','wmululne','wmululcs','wmululhs','wmululcc','wmulullo','wmululmi','wmululpl','wmululvs','wmululvc','wmululhi','wmululls','wmululge','wmulullt','wmululgt','wmululle', + 'wmulsmreq','wmulsmrne','wmulsmrcs','wmulsmrhs','wmulsmrcc','wmulsmrlo','wmulsmrmi','wmulsmrpl','wmulsmrvs','wmulsmrvc','wmulsmrhi','wmulsmrls','wmulsmrge','wmulsmrlt','wmulsmrgt','wmulsmrle', + 'wmulslreq','wmulslrne','wmulslrcs','wmulslrhs','wmulslrcc','wmulslrlo','wmulslrmi','wmulslrpl','wmulslrvs','wmulslrvc','wmulslrhi','wmulslrls','wmulslrge','wmulslrlt','wmulslrgt','wmulslrle', + 'wmulumreq','wmulumrne','wmulumrcs','wmulumrhs','wmulumrcc','wmulumrlo','wmulumrmi','wmulumrpl','wmulumrvs','wmulumrvc','wmulumrhi','wmulumrls','wmulumrge','wmulumrlt','wmulumrgt','wmulumrle', + 'wmululreq','wmululrne','wmululrcs','wmululrhs','wmululrcc','wmululrlo','wmululrmi','wmululrpl','wmululrvs','wmululrvc','wmululrhi','wmululrls','wmululrge','wmululrlt','wmululrgt','wmululrle', + 'wmulwumeq','wmulwumne','wmulwumcs','wmulwumhs','wmulwumcc','wmulwumlo','wmulwummi','wmulwumpl','wmulwumvs','wmulwumvc','wmulwumhi','wmulwumls','wmulwumge','wmulwumlt','wmulwumgt','wmulwumle', + 'wmulwsmeq','wmulwsmne','wmulwsmcs','wmulwsmhs','wmulwsmcc','wmulwsmlo','wmulwsmmi','wmulwsmpl','wmulwsmvs','wmulwsmvc','wmulwsmhi','wmulwsmls','wmulwsmge','wmulwsmlt','wmulwsmgt','wmulwsmle', + 'wmulwleq','wmulwlne','wmulwlcs','wmulwlhs','wmulwlcc','wmulwllo','wmulwlmi','wmulwlpl','wmulwlvs','wmulwlvc','wmulwlhi','wmulwlls','wmulwlge','wmulwllt','wmulwlgt','wmulwlle', + 'wmulwumreq','wmulwumrne','wmulwumrcs','wmulwumrhs','wmulwumrcc','wmulwumrlo','wmulwumrmi','wmulwumrpl','wmulwumrvs','wmulwumrvc','wmulwumrhi','wmulwumrls','wmulwumrge','wmulwumrlt','wmulwumrgt','wmulwumrle', + 'wmulwsmreq','wmulwsmrne','wmulwsmrcs','wmulwsmrhs','wmulwsmrcc','wmulwsmrlo','wmulwsmrmi','wmulwsmrpl','wmulwsmrvs','wmulwsmrvc','wmulwsmrhi','wmulwsmrls','wmulwsmrge','wmulwsmrlt','wmulwsmrgt','wmulwsmrle', + 'woreq','worne','worcs','worhs','worcc','worlo','wormi','worpl','worvs','worvc','worhi','worls','worge','worlt','worgt','worle', + 'wpackhsseq','wpackhssne','wpackhsscs','wpackhsshs','wpackhsscc','wpackhsslo','wpackhssmi','wpackhsspl','wpackhssvs','wpackhssvc','wpackhsshi','wpackhssls','wpackhssge','wpackhsslt','wpackhssgt','wpackhssle', + 'wpackwsseq','wpackwssne','wpackwsscs','wpackwsshs','wpackwsscc','wpackwsslo','wpackwssmi','wpackwsspl','wpackwssvs','wpackwssvc','wpackwsshi','wpackwssls','wpackwssge','wpackwsslt','wpackwssgt','wpackwssle', + 'wpackdsseq','wpackdssne','wpackdsscs','wpackdsshs','wpackdsscc','wpackdsslo','wpackdssmi','wpackdsspl','wpackdssvs','wpackdssvc','wpackdsshi','wpackdssls','wpackdssge','wpackdsslt','wpackdssgt','wpackdssle', + 'wpackhuseq','wpackhusne','wpackhuscs','wpackhushs','wpackhuscc','wpackhuslo','wpackhusmi','wpackhuspl','wpackhusvs','wpackhusvc','wpackhushi','wpackhusls','wpackhusge','wpackhuslt','wpackhusgt','wpackhusle', + 'wpackwuseq','wpackwusne','wpackwuscs','wpackwushs','wpackwuscc','wpackwuslo','wpackwusmi','wpackwuspl','wpackwusvs','wpackwusvc','wpackwushi','wpackwusls','wpackwusge','wpackwuslt','wpackwusgt','wpackwusle', + 'wpackduseq','wpackdusne','wpackduscs','wpackdushs','wpackduscc','wpackduslo','wpackdusmi','wpackduspl','wpackdusvs','wpackdusvc','wpackdushi','wpackdusls','wpackdusge','wpackduslt','wpackdusgt','wpackdusle', + 'wqmiabbeq','wqmiabbne','wqmiabbcs','wqmiabbhs','wqmiabbcc','wqmiabblo','wqmiabbmi','wqmiabbpl','wqmiabbvs','wqmiabbvc','wqmiabbhi','wqmiabbls','wqmiabbge','wqmiabblt','wqmiabbgt','wqmiabble', + 'wqmiabteq','wqmiabtne','wqmiabtcs','wqmiabths','wqmiabtcc','wqmiabtlo','wqmiabtmi','wqmiabtpl','wqmiabtvs','wqmiabtvc','wqmiabthi','wqmiabtls','wqmiabtge','wqmiabtlt','wqmiabtgt','wqmiabtle', + 'wqmiatbeq','wqmiatbne','wqmiatbcs','wqmiatbhs','wqmiatbcc','wqmiatblo','wqmiatbmi','wqmiatbpl','wqmiatbvs','wqmiatbvc','wqmiatbhi','wqmiatbls','wqmiatbge','wqmiatblt','wqmiatbgt','wqmiatble', + 'wqmiatteq','wqmiattne','wqmiattcs','wqmiatths','wqmiattcc','wqmiattlo','wqmiattmi','wqmiattpl','wqmiattvs','wqmiattvc','wqmiatthi','wqmiattls','wqmiattge','wqmiattlt','wqmiattgt','wqmiattle', + 'wqmiabbneq','wqmiabbnne','wqmiabbncs','wqmiabbnhs','wqmiabbncc','wqmiabbnlo','wqmiabbnmi','wqmiabbnpl','wqmiabbnvs','wqmiabbnvc','wqmiabbnhi','wqmiabbnls','wqmiabbnge','wqmiabbnlt','wqmiabbngt','wqmiabbnle', + 'wqmiabtneq','wqmiabtnne','wqmiabtncs','wqmiabtnhs','wqmiabtncc','wqmiabtnlo','wqmiabtnmi','wqmiabtnpl','wqmiabtnvs','wqmiabtnvc','wqmiabtnhi','wqmiabtnls','wqmiabtnge','wqmiabtnlt','wqmiabtngt','wqmiabtnle', + 'wqmiatbneq','wqmiatbnne','wqmiatbncs','wqmiatbnhs','wqmiatbncc','wqmiatbnlo','wqmiatbnmi','wqmiatbnpl','wqmiatbnvs','wqmiatbnvc','wqmiatbnhi','wqmiatbnls','wqmiatbnge','wqmiatbnlt','wqmiatbngt','wqmiatbnle', + 'wqmiattneq','wqmiattnne','wqmiattncs','wqmiattnhs','wqmiattncc','wqmiattnlo','wqmiattnmi','wqmiattnpl','wqmiattnvs','wqmiattnvc','wqmiattnhi','wqmiattnls','wqmiattnge','wqmiattnlt','wqmiattngt','wqmiattnle', + 'wqmulmeq','wqmulmne','wqmulmcs','wqmulmhs','wqmulmcc','wqmulmlo','wqmulmmi','wqmulmpl','wqmulmvs','wqmulmvc','wqmulmhi','wqmulmls','wqmulmge','wqmulmlt','wqmulmgt','wqmulmle', + 'wqmulmreq','wqmulmrne','wqmulmrcs','wqmulmrhs','wqmulmrcc','wqmulmrlo','wqmulmrmi','wqmulmrpl','wqmulmrvs','wqmulmrvc','wqmulmrhi','wqmulmrls','wqmulmrge','wqmulmrlt','wqmulmrgt','wqmulmrle', + 'wqmulwmeq','wqmulwmne','wqmulwmcs','wqmulwmhs','wqmulwmcc','wqmulwmlo','wqmulwmmi','wqmulwmpl','wqmulwmvs','wqmulwmvc','wqmulwmhi','wqmulwmls','wqmulwmge','wqmulwmlt','wqmulwmgt','wqmulwmle', + 'wqmulwmreq','wqmulwmrne','wqmulwmrcs','wqmulwmrhs','wqmulwmrcc','wqmulwmrlo','wqmulwmrmi','wqmulwmrpl','wqmulwmrvs','wqmulwmrvc','wqmulwmrhi','wqmulwmrls','wqmulwmrge','wqmulwmrlt','wqmulwmrgt','wqmulwmrle', + 'wrorheq','wrorhne','wrorhcs','wrorhhs','wrorhcc','wrorhlo','wrorhmi','wrorhpl','wrorhvs','wrorhvc','wrorhhi','wrorhls','wrorhge','wrorhlt','wrorhgt','wrorhle', + 'wrorweq','wrorwne','wrorwcs','wrorwhs','wrorwcc','wrorwlo','wrorwmi','wrorwpl','wrorwvs','wrorwvc','wrorwhi','wrorwls','wrorwge','wrorwlt','wrorwgt','wrorwle', + 'wrordeq','wrordne','wrordcs','wrordhs','wrordcc','wrordlo','wrordmi','wrordpl','wrordvs','wrordvc','wrordhi','wrordls','wrordge','wrordlt','wrordgt','wrordle', + 'wrorhgeq','wrorhgne','wrorhgcs','wrorhghs','wrorhgcc','wrorhglo','wrorhgmi','wrorhgpl','wrorhgvs','wrorhgvc','wrorhghi','wrorhgls','wrorhgge','wrorhglt','wrorhggt','wrorhgle', + 'wrorwgeq','wrorwgne','wrorwgcs','wrorwghs','wrorwgcc','wrorwglo','wrorwgmi','wrorwgpl','wrorwgvs','wrorwgvc','wrorwghi','wrorwgls','wrorwgge','wrorwglt','wrorwggt','wrorwgle', + 'wrordgeq','wrordgne','wrordgcs','wrordghs','wrordgcc','wrordglo','wrordgmi','wrordgpl','wrordgvs','wrordgvc','wrordghi','wrordgls','wrordgge','wrordglt','wrordggt','wrordgle', + 'wsadbeq','wsadbne','wsadbcs','wsadbhs','wsadbcc','wsadblo','wsadbmi','wsadbpl','wsadbvs','wsadbvc','wsadbhi','wsadbls','wsadbge','wsadblt','wsadbgt','wsadble', + 'wsadheq','wsadhne','wsadhcs','wsadhhs','wsadhcc','wsadhlo','wsadhmi','wsadhpl','wsadhvs','wsadhvc','wsadhhi','wsadhls','wsadhge','wsadhlt','wsadhgt','wsadhle', + 'wsadbzeq','wsadbzne','wsadbzcs','wsadbzhs','wsadbzcc','wsadbzlo','wsadbzmi','wsadbzpl','wsadbzvs','wsadbzvc','wsadbzhi','wsadbzls','wsadbzge','wsadbzlt','wsadbzgt','wsadbzle', + 'wsadhzeq','wsadhzne','wsadhzcs','wsadhzhs','wsadhzcc','wsadhzlo','wsadhzmi','wsadhzpl','wsadhzvs','wsadhzvc','wsadhzhi','wsadhzls','wsadhzge','wsadhzlt','wsadhzgt','wsadhzle', + 'wshufheq','wshufhne','wshufhcs','wshufhhs','wshufhcc','wshufhlo','wshufhmi','wshufhpl','wshufhvs','wshufhvc','wshufhhi','wshufhls','wshufhge','wshufhlt','wshufhgt','wshufhle', + 'wsllheq','wsllhne','wsllhcs','wsllhhs','wsllhcc','wsllhlo','wsllhmi','wsllhpl','wsllhvs','wsllhvc','wsllhhi','wsllhls','wsllhge','wsllhlt','wsllhgt','wsllhle', + 'wsllweq','wsllwne','wsllwcs','wsllwhs','wsllwcc','wsllwlo','wsllwmi','wsllwpl','wsllwvs','wsllwvc','wsllwhi','wsllwls','wsllwge','wsllwlt','wsllwgt','wsllwle', + 'wslldeq','wslldne','wslldcs','wslldhs','wslldcc','wslldlo','wslldmi','wslldpl','wslldvs','wslldvc','wslldhi','wslldls','wslldge','wslldlt','wslldgt','wslldle', + 'wsllhgeq','wsllhgne','wsllhgcs','wsllhghs','wsllhgcc','wsllhglo','wsllhgmi','wsllhgpl','wsllhgvs','wsllhgvc','wsllhghi','wsllhgls','wsllhgge','wsllhglt','wsllhggt','wsllhgle', + 'wsllwgeq','wsllwgne','wsllwgcs','wsllwghs','wsllwgcc','wsllwglo','wsllwgmi','wsllwgpl','wsllwgvs','wsllwgvc','wsllwghi','wsllwgls','wsllwgge','wsllwglt','wsllwggt','wsllwgle', + 'wslldgeq','wslldgne','wslldgcs','wslldghs','wslldgcc','wslldglo','wslldgmi','wslldgpl','wslldgvs','wslldgvc','wslldghi','wslldgls','wslldgge','wslldglt','wslldggt','wslldgle', + 'wsraheq','wsrahne','wsrahcs','wsrahhs','wsrahcc','wsrahlo','wsrahmi','wsrahpl','wsrahvs','wsrahvc','wsrahhi','wsrahls','wsrahge','wsrahlt','wsrahgt','wsrahle', + 'wsraweq','wsrawne','wsrawcs','wsrawhs','wsrawcc','wsrawlo','wsrawmi','wsrawpl','wsrawvs','wsrawvc','wsrawhi','wsrawls','wsrawge','wsrawlt','wsrawgt','wsrawle', + 'wsradeq','wsradne','wsradcs','wsradhs','wsradcc','wsradlo','wsradmi','wsradpl','wsradvs','wsradvc','wsradhi','wsradls','wsradge','wsradlt','wsradgt','wsradle', + 'wsrahgeq','wsrahgne','wsrahgcs','wsrahghs','wsrahgcc','wsrahglo','wsrahgmi','wsrahgpl','wsrahgvs','wsrahgvc','wsrahghi','wsrahgls','wsrahgge','wsrahglt','wsrahggt','wsrahgle', + 'wsrawgeq','wsrawgne','wsrawgcs','wsrawghs','wsrawgcc','wsrawglo','wsrawgmi','wsrawgpl','wsrawgvs','wsrawgvc','wsrawghi','wsrawgls','wsrawgge','wsrawglt','wsrawggt','wsrawgle', + 'wsradgeq','wsradgne','wsradgcs','wsradghs','wsradgcc','wsradglo','wsradgmi','wsradgpl','wsradgvs','wsradgvc','wsradghi','wsradgls','wsradgge','wsradglt','wsradggt','wsradgle', + 'wsrlheq','wsrlhne','wsrlhcs','wsrlhhs','wsrlhcc','wsrlhlo','wsrlhmi','wsrlhpl','wsrlhvs','wsrlhvc','wsrlhhi','wsrlhls','wsrlhge','wsrlhlt','wsrlhgt','wsrlhle', + 'wsrlweq','wsrlwne','wsrlwcs','wsrlwhs','wsrlwcc','wsrlwlo','wsrlwmi','wsrlwpl','wsrlwvs','wsrlwvc','wsrlwhi','wsrlwls','wsrlwge','wsrlwlt','wsrlwgt','wsrlwle', + 'wsrldeq','wsrldne','wsrldcs','wsrldhs','wsrldcc','wsrldlo','wsrldmi','wsrldpl','wsrldvs','wsrldvc','wsrldhi','wsrldls','wsrldge','wsrldlt','wsrldgt','wsrldle', + 'wsrlhgeq','wsrlhgne','wsrlhgcs','wsrlhghs','wsrlhgcc','wsrlhglo','wsrlhgmi','wsrlhgpl','wsrlhgvs','wsrlhgvc','wsrlhghi','wsrlhgls','wsrlhgge','wsrlhglt','wsrlhggt','wsrlhgle', + 'wsrlwgeq','wsrlwgne','wsrlwgcs','wsrlwghs','wsrlwgcc','wsrlwglo','wsrlwgmi','wsrlwgpl','wsrlwgvs','wsrlwgvc','wsrlwghi','wsrlwgls','wsrlwgge','wsrlwglt','wsrlwggt','wsrlwgle', + 'wsrldgeq','wsrldgne','wsrldgcs','wsrldghs','wsrldgcc','wsrldglo','wsrldgmi','wsrldgpl','wsrldgvs','wsrldgvc','wsrldghi','wsrldgls','wsrldgge','wsrldglt','wsrldggt','wsrldgle', + 'wstrbeq','wstrbne','wstrbcs','wstrbhs','wstrbcc','wstrblo','wstrbmi','wstrbpl','wstrbvs','wstrbvc','wstrbhi','wstrbls','wstrbge','wstrblt','wstrbgt','wstrble', + 'wstrheq','wstrhne','wstrhcs','wstrhhs','wstrhcc','wstrhlo','wstrhmi','wstrhpl','wstrhvs','wstrhvc','wstrhhi','wstrhls','wstrhge','wstrhlt','wstrhgt','wstrhle', + 'wstrweq','wstrwne','wstrwcs','wstrwhs','wstrwcc','wstrwlo','wstrwmi','wstrwpl','wstrwvs','wstrwvc','wstrwhi','wstrwls','wstrwge','wstrwlt','wstrwgt','wstrwle', + 'wstrdeq','wstrdne','wstrdcs','wstrdhs','wstrdcc','wstrdlo','wstrdmi','wstrdpl','wstrdvs','wstrdvc','wstrdhi','wstrdls','wstrdge','wstrdlt','wstrdgt','wstrdle', + 'wsubbeq','wsubbne','wsubbcs','wsubbhs','wsubbcc','wsubblo','wsubbmi','wsubbpl','wsubbvs','wsubbvc','wsubbhi','wsubbls','wsubbge','wsubblt','wsubbgt','wsubble', + 'wsubheq','wsubhne','wsubhcs','wsubhhs','wsubhcc','wsubhlo','wsubhmi','wsubhpl','wsubhvs','wsubhvc','wsubhhi','wsubhls','wsubhge','wsubhlt','wsubhgt','wsubhle', + 'wsubweq','wsubwne','wsubwcs','wsubwhs','wsubwcc','wsubwlo','wsubwmi','wsubwpl','wsubwvs','wsubwvc','wsubwhi','wsubwls','wsubwge','wsubwlt','wsubwgt','wsubwle', + 'wsubbsseq','wsubbssne','wsubbsscs','wsubbsshs','wsubbsscc','wsubbsslo','wsubbssmi','wsubbsspl','wsubbssvs','wsubbssvc','wsubbsshi','wsubbssls','wsubbssge','wsubbsslt','wsubbssgt','wsubbssle', + 'wsubhsseq','wsubhssne','wsubhsscs','wsubhsshs','wsubhsscc','wsubhsslo','wsubhssmi','wsubhsspl','wsubhssvs','wsubhssvc','wsubhsshi','wsubhssls','wsubhssge','wsubhsslt','wsubhssgt','wsubhssle', + 'wsubwsseq','wsubwssne','wsubwsscs','wsubwsshs','wsubwsscc','wsubwsslo','wsubwssmi','wsubwsspl','wsubwssvs','wsubwssvc','wsubwsshi','wsubwssls','wsubwssge','wsubwsslt','wsubwssgt','wsubwssle', + 'wsubbuseq','wsubbusne','wsubbuscs','wsubbushs','wsubbuscc','wsubbuslo','wsubbusmi','wsubbuspl','wsubbusvs','wsubbusvc','wsubbushi','wsubbusls','wsubbusge','wsubbuslt','wsubbusgt','wsubbusle', + 'wsubhuseq','wsubhusne','wsubhuscs','wsubhushs','wsubhuscc','wsubhuslo','wsubhusmi','wsubhuspl','wsubhusvs','wsubhusvc','wsubhushi','wsubhusls','wsubhusge','wsubhuslt','wsubhusgt','wsubhusle', + 'wsubwuseq','wsubwusne','wsubwuscs','wsubwushs','wsubwuscc','wsubwuslo','wsubwusmi','wsubwuspl','wsubwusvs','wsubwusvc','wsubwushi','wsubwusls','wsubwusge','wsubwuslt','wsubwusgt','wsubwusle', + 'wsubaddhxeq','wsubaddhxne','wsubaddhxcs','wsubaddhxhs','wsubaddhxcc','wsubaddhxlo','wsubaddhxmi','wsubaddhxpl','wsubaddhxvs','wsubaddhxvc','wsubaddhxhi','wsubaddhxls','wsubaddhxge','wsubaddhxlt','wsubaddhxgt','wsubaddhxle', + 'wunpckehsbeq','wunpckehsbne','wunpckehsbcs','wunpckehsbhs','wunpckehsbcc','wunpckehsblo','wunpckehsbmi','wunpckehsbpl','wunpckehsbvs','wunpckehsbvc','wunpckehsbhi','wunpckehsbls','wunpckehsbge','wunpckehsblt','wunpckehsbgt','wunpckehsble', + 'wunpckehsheq','wunpckehshne','wunpckehshcs','wunpckehshhs','wunpckehshcc','wunpckehshlo','wunpckehshmi','wunpckehshpl','wunpckehshvs','wunpckehshvc','wunpckehshhi','wunpckehshls','wunpckehshge','wunpckehshlt','wunpckehshgt','wunpckehshle', + 'wunpckehsweq','wunpckehswne','wunpckehswcs','wunpckehswhs','wunpckehswcc','wunpckehswlo','wunpckehswmi','wunpckehswpl','wunpckehswvs','wunpckehswvc','wunpckehswhi','wunpckehswls','wunpckehswge','wunpckehswlt','wunpckehswgt','wunpckehswle', + 'wunpckehubeq','wunpckehubne','wunpckehubcs','wunpckehubhs','wunpckehubcc','wunpckehublo','wunpckehubmi','wunpckehubpl','wunpckehubvs','wunpckehubvc','wunpckehubhi','wunpckehubls','wunpckehubge','wunpckehublt','wunpckehubgt','wunpckehuble', + 'wunpckehuheq','wunpckehuhne','wunpckehuhcs','wunpckehuhhs','wunpckehuhcc','wunpckehuhlo','wunpckehuhmi','wunpckehuhpl','wunpckehuhvs','wunpckehuhvc','wunpckehuhhi','wunpckehuhls','wunpckehuhge','wunpckehuhlt','wunpckehuhgt','wunpckehuhle', + 'wunpckehuweq','wunpckehuwne','wunpckehuwcs','wunpckehuwhs','wunpckehuwcc','wunpckehuwlo','wunpckehuwmi','wunpckehuwpl','wunpckehuwvs','wunpckehuwvc','wunpckehuwhi','wunpckehuwls','wunpckehuwge','wunpckehuwlt','wunpckehuwgt','wunpckehuwle', + 'wunpckihbeq','wunpckihbne','wunpckihbcs','wunpckihbhs','wunpckihbcc','wunpckihblo','wunpckihbmi','wunpckihbpl','wunpckihbvs','wunpckihbvc','wunpckihbhi','wunpckihbls','wunpckihbge','wunpckihblt','wunpckihbgt','wunpckihble', + 'wunpckihheq','wunpckihhne','wunpckihhcs','wunpckihhhs','wunpckihhcc','wunpckihhlo','wunpckihhmi','wunpckihhpl','wunpckihhvs','wunpckihhvc','wunpckihhhi','wunpckihhls','wunpckihhge','wunpckihhlt','wunpckihhgt','wunpckihhle', + 'wunpckihweq','wunpckihwne','wunpckihwcs','wunpckihwhs','wunpckihwcc','wunpckihwlo','wunpckihwmi','wunpckihwpl','wunpckihwvs','wunpckihwvc','wunpckihwhi','wunpckihwls','wunpckihwge','wunpckihwlt','wunpckihwgt','wunpckihwle', + 'wunpckelsbeq','wunpckelsbne','wunpckelsbcs','wunpckelsbhs','wunpckelsbcc','wunpckelsblo','wunpckelsbmi','wunpckelsbpl','wunpckelsbvs','wunpckelsbvc','wunpckelsbhi','wunpckelsbls','wunpckelsbge','wunpckelsblt','wunpckelsbgt','wunpckelsble', + 'wunpckelsheq','wunpckelshne','wunpckelshcs','wunpckelshhs','wunpckelshcc','wunpckelshlo','wunpckelshmi','wunpckelshpl','wunpckelshvs','wunpckelshvc','wunpckelshhi','wunpckelshls','wunpckelshge','wunpckelshlt','wunpckelshgt','wunpckelshle', + 'wunpckelsweq','wunpckelswne','wunpckelswcs','wunpckelswhs','wunpckelswcc','wunpckelswlo','wunpckelswmi','wunpckelswpl','wunpckelswvs','wunpckelswvc','wunpckelswhi','wunpckelswls','wunpckelswge','wunpckelswlt','wunpckelswgt','wunpckelswle', + 'wunpckelubeq','wunpckelubne','wunpckelubcs','wunpckelubhs','wunpckelubcc','wunpckelublo','wunpckelubmi','wunpckelubpl','wunpckelubvs','wunpckelubvc','wunpckelubhi','wunpckelubls','wunpckelubge','wunpckelublt','wunpckelubgt','wunpckeluble', + 'wunpckeluheq','wunpckeluhne','wunpckeluhcs','wunpckeluhhs','wunpckeluhcc','wunpckeluhlo','wunpckeluhmi','wunpckeluhpl','wunpckeluhvs','wunpckeluhvc','wunpckeluhhi','wunpckeluhls','wunpckeluhge','wunpckeluhlt','wunpckeluhgt','wunpckeluhle', + 'wunpckeluweq','wunpckeluwne','wunpckeluwcs','wunpckeluwhs','wunpckeluwcc','wunpckeluwlo','wunpckeluwmi','wunpckeluwpl','wunpckeluwvs','wunpckeluwvc','wunpckeluwhi','wunpckeluwls','wunpckeluwge','wunpckeluwlt','wunpckeluwgt','wunpckeluwle', + 'wunpckilbeq','wunpckilbne','wunpckilbcs','wunpckilbhs','wunpckilbcc','wunpckilblo','wunpckilbmi','wunpckilbpl','wunpckilbvs','wunpckilbvc','wunpckilbhi','wunpckilbls','wunpckilbge','wunpckilblt','wunpckilbgt','wunpckilble', + 'wunpckilheq','wunpckilhne','wunpckilhcs','wunpckilhhs','wunpckilhcc','wunpckilhlo','wunpckilhmi','wunpckilhpl','wunpckilhvs','wunpckilhvc','wunpckilhhi','wunpckilhls','wunpckilhge','wunpckilhlt','wunpckilhgt','wunpckilhle', + 'wunpckilweq','wunpckilwne','wunpckilwcs','wunpckilwhs','wunpckilwcc','wunpckilwlo','wunpckilwmi','wunpckilwpl','wunpckilwvs','wunpckilwvc','wunpckilwhi','wunpckilwls','wunpckilwge','wunpckilwlt','wunpckilwgt','wunpckilwle', + 'wxoreq','wxorne','wxorcs','wxorhs','wxorcc','wxorlo','wxormi','wxorpl','wxorvs','wxorvc','wxorhi','wxorls','wxorge','wxorlt','wxorgt','wxorle', + 'wzeroeq','wzerone','wzerocs','wzerohs','wzerocc','wzerolo','wzeromi','wzeropl','wzerovs','wzerovc','wzerohi','wzerols','wzeroge','wzerolt','wzerogt','wzerole' + ), + /* Unconditional VFPv3 & NEON SIMD Memory Access Instructions */ + 19 => array( + /* Unconditional VFPv3 & NEON SIMD Memory Access: Loads */ + 'vld.8','vldal.8', + 'vld.16','vldal.16', + 'vld.32','vldal.32', + 'vld.64','vldal.64', + + 'vld1.8','vld1al.8', + 'vld1.16','vld1al.16', + 'vld1.32','vld1al.32', + + 'vld2.8','vld2al.8', + 'vld2.16','vld2al.16', + 'vld2.32','vld2al.32', + + 'vld3.8','vld3al.8', + 'vld3.16','vld3al.16', + 'vld3.32','vld3al.32', + + 'vld4.8','vld4al.8', + 'vld4.16','vld4al.16', + 'vld4.32','vld4al.32', + + 'vldm','vldmal', + 'vldm.32','vldmal.32', + 'vldm.64','vldmal.64', + + 'vldmia','vldmiaal', + 'vldmia.32','vldmiaal.32', + 'vldmia.64','vldmiaal.64', + + 'vldmdb','vldmdbal', + 'vldmdb.32','vldmdbal.32', + 'vldmdb.64','vldmdbal.64', + + 'vldr','vldral', + 'vldr.32','vldral.32', + 'vldr.64','vldral.64', + + 'vpop','vpopal', + 'vpop.32','vpopal.32', + 'vpop.64','vpopal.64', + + /* Unconditional VFPv3 & NEON SIMD Memory Access: Stores */ + 'vst1.8','vst1al.8', + 'vst1.16','vst1al.16', + 'vst1.32','vst1al.32', + 'vst1.64','vst1al.64', + + 'vst2.8','vst2al.8', + 'vst2.16','vst2al.16', + 'vst2.32','vst2al.32', + + 'vst3.8','vst3al.8', + 'vst3.16','vst3al.16', + 'vst3.32','vst3al.32', + + 'vst4.8','vst4al.8', + 'vst4.16','vst4al.16', + 'vst4.32','vst4al.32', + + 'vstm','vstmal', + 'vstm.32','vstmal.32', + 'vstm.64','vstmal.64', + + 'vstmia','vstmiaal', + 'vstmia.32','vstmiaal.32', + 'vstmia.64','vstmiaal.64', + + 'vstmdb','vstmdbal', + 'vstmdb.32','vstmdbal.32', + 'vstmdb.64','vstmdbal.64', + + 'vstr','vstral', + 'vstr.32','vstral.32', + 'vstr.64','vstral.64', + + 'vpush','vpushal', + 'vpush.32','vpushal.32', + 'vpush.64','vpushal.64' + ), + /* Unconditional NEON SIMD Logical Instructions */ + 20 => array( + 'vand','vandal', + 'vand.i8','vandal.i8', + 'vand.i16','vandal.i16', + 'vand.i32','vandal.i32', + 'vand.i64','vandal.i64', + 'vand.s8','vandal.s8', + 'vand.s16','vandal.s16', + 'vand.s32','vandal.s32', + 'vand.s64','vandal.s64', + 'vand.u8','vandal.u8', + 'vand.u16','vandal.u16', + 'vand.u32','vandal.u32', + 'vand.u64','vandal.u64', + 'vand.f32','vandal.f32', + 'vand.f64','vandal.f64', + + 'vbic','vbical', + 'vbic.i8','vbical.i8', + 'vbic.i16','vbical.i16', + 'vbic.i32','vbical.i32', + 'vbic.i64','vbical.i64', + 'vbic.s8','vbical.s8', + 'vbic.s16','vbical.s16', + 'vbic.s32','vbical.s32', + 'vbic.s64','vbical.s64', + 'vbic.u8','vbical.u8', + 'vbic.u16','vbical.u16', + 'vbic.u32','vbical.u32', + 'vbic.u64','vbical.u64', + 'vbic.f32','vbical.f32', + 'vbic.f64','vbical.f64', + + 'vbif','vbifal', + 'vbif.i8','vbifal.i8', + 'vbif.i16','vbifal.i16', + 'vbif.i32','vbifal.i32', + 'vbif.i64','vbifal.i64', + 'vbif.s8','vbifal.s8', + 'vbif.s16','vbifal.s16', + 'vbif.s32','vbifal.s32', + 'vbif.s64','vbifal.s64', + 'vbif.u8','vbifal.u8', + 'vbif.u16','vbifal.u16', + 'vbif.u32','vbifal.u32', + 'vbif.u64','vbifal.u64', + 'vbif.f32','vbifal.f32', + 'vbif.f64','vbifal.f64', + + 'vbit','vbital', + 'vbit.i8','vbital.i8', + 'vbit.i16','vbital.i16', + 'vbit.i32','vbital.i32', + 'vbit.i64','vbital.i64', + 'vbit.s8','vbital.s8', + 'vbit.s16','vbital.s16', + 'vbit.s32','vbital.s32', + 'vbit.s64','vbital.s64', + 'vbit.u8','vbital.u8', + 'vbit.u16','vbital.u16', + 'vbit.u32','vbital.u32', + 'vbit.u64','vbital.u64', + 'vbit.f32','vbital.f32', + 'vbit.f64','vbital.f64', + + 'vbsl','vbslal', + 'vbsl.i8','vbslal.i8', + 'vbsl.i16','vbslal.i16', + 'vbsl.i32','vbslal.i32', + 'vbsl.i64','vbslal.i64', + 'vbsl.s8','vbslal.s8', + 'vbsl.s16','vbslal.s16', + 'vbsl.s32','vbslal.s32', + 'vbsl.s64','vbslal.s64', + 'vbsl.u8','vbslal.u8', + 'vbsl.u16','vbslal.u16', + 'vbsl.u32','vbslal.u32', + 'vbsl.u64','vbslal.u64', + 'vbsl.f32','vbslal.f32', + 'vbsl.f64','vbslal.f64', + + 'veor','veoral', + 'veor.i8','veoral.i8', + 'veor.i16','veoral.i16', + 'veor.i32','veoral.i32', + 'veor.i64','veoral.i64', + 'veor.s8','veoral.s8', + 'veor.s16','veoral.s16', + 'veor.s32','veoral.s32', + 'veor.s64','veoral.s64', + 'veor.u8','veoral.u8', + 'veor.u16','veoral.u16', + 'veor.u32','veoral.u32', + 'veor.u64','veoral.u64', + 'veor.f32','veoral.f32', + 'veor.f64','veoral.f64', + + 'vmov','vmoval', + 'vmov.8','vmoval.8', + 'vmov.16','vmoval.16', + 'vmov.32','vmoval.32', + 'vmov.i8','vmoval.i8', + 'vmov.i16','vmoval.i16', + 'vmov.i32','vmoval.i32', + 'vmov.i64','vmoval.i64', + 'vmov.f32','vmoval.f32', + 'vmov.f64','vmoval.f64', + + 'vmvn','vmvnal', + 'vmvn.s8','vmvnal.s8', + 'vmvn.s16','vmvnal.s16', + 'vmvn.s32','vmvnal.s32', + 'vmvn.s64','vmvnal.s64', + 'vmvn.u8','vmvnal.u8', + 'vmvn.u16','vmvnal.u16', + 'vmvn.u32','vmvnal.u32', + 'vmvn.u64','vmvnal.u64', + 'vmvn.i8','vmvnal.i8', + 'vmvn.i16','vmvnal.i16', + 'vmvn.i32','vmvnal.i32', + 'vmvn.i64','vmvnal.i64', + 'vmvn.f32','vmvnal.f32', + 'vmvn.f64','vmvnal.f64', + + 'vorn','vornal', + 'vorn.s8','vornal.s8', + 'vorn.s16','vornal.s16', + 'vorn.s32','vornal.s32', + 'vorn.s64','vornal.s64', + 'vorn.u8','vornal.u8', + 'vorn.u16','vornal.u16', + 'vorn.u32','vornal.u32', + 'vorn.u64','vornal.u64', + 'vorn.i8','vornal.i8', + 'vorn.i16','vornal.i16', + 'vorn.i32','vornal.i32', + 'vorn.i64','vornal.i64', + 'vorn.f32','vornal.f32', + 'vorn.f64','vornal.f64', + + 'vorr','vorral', + 'vorr.s8','vorral.s8', + 'vorr.s16','vorral.s16', + 'vorr.s32','vorral.s32', + 'vorr.s64','vorral.s64', + 'vorr.u8','vorral.u8', + 'vorr.u16','vorral.u16', + 'vorr.u32','vorral.u32', + 'vorr.u64','vorral.u64', + 'vorr.i8','vorral.i8', + 'vorr.i16','vorral.i16', + 'vorr.i32','vorral.i32', + 'vorr.i64','vorral.i64', + 'vorr.f32','vorral.f32', + 'vorr.f64','vorral.f64', + + 'vswp','vswpal', + 'vswp.s8','vswpal.s8', + 'vswp.s16','vswpal.s16', + 'vswp.s32','vswpal.s32', + 'vswp.s64','vswpal.s64', + 'vswp.u8','vswpal.u8', + 'vswp.u16','vswpal.u16', + 'vswp.u32','vswpal.u32', + 'vswp.u64','vswpal.u64', + 'vswp.i8','vswpal.i8', + 'vswp.i16','vswpal.i16', + 'vswp.i32','vswpal.i32', + 'vswp.i64','vswpal.i64', + 'vswp.f32','vswpal.f32', + 'vswp.f64','vswpal.f64' + ), + /* Unconditional NEON SIMD ARM Registers Interop Instructions */ + 21 => array( + 'vmrs','vmrsal', + 'vmsr','vmsral' + ), + /* Unconditional NEON SIMD Bit/Byte-Level Instructions */ + 22 => array( + 'vcnt.8','vcntal.8', + 'vdup.8','vdupal.8', + + 'vdup.16','vdupal.16', + 'vdup.32','vdupal.32', + + 'vext.8','vextal.8', + 'vext.16','vextal.16', + + 'vext.32','vextal.32', + 'vext.64','vextal.64', + + 'vrev16.8','vrev16al.8', + 'vrev32.8','vrev32al.8', + 'vrev32.16','vrev32al.16', + 'vrev64.8','vrev64al.8', + 'vrev64.16','vrev64al.16', + 'vrev64.32','vrev64al.32', + + 'vsli.8','vslial.8', + 'vsli.16','vslial.16', + 'vsli.32','vslial.32', + 'vsli.64','vslial.64', + + 'vsri.8','vsrial.8', + 'vsri.16','vsrial.16', + 'vsri.32','vsrial.32', + 'vsri.64','vsrial.64', + + 'vtbl.8','vtblal.8', + + 'vtbx','vtbxal', + + 'vtrn.8','vtrnal.8', + 'vtrn.16','vtrnal.16', + 'vtrn.32','vtrnal.32', + + 'vtst.8','vtstal.8', + 'vtst.16','vtstal.16', + 'vtst.32','vtstal.32', + + 'vuzp.8','vuzpal.8', + 'vuzp.16','vuzpal.16', + 'vuzp.32','vuzpal.32', + + 'vzip.8','vzipal.8', + 'vzip.16','vzipal.16', + 'vzip.32','vzipal.32', + + 'vmull.p8','vmullal.p8' + ), + /* Unconditional NEON SIMD Universal Integer Instructions */ + 23 => array( + 'vadd.i8','vaddal.i8', + 'vadd.i16','vaddal.i16', + 'vadd.i32','vaddal.i32', + 'vadd.i64','vaddal.i64', + + 'vsub.i8','vsubal.i8', + 'vsub.i16','vsubal.i16', + 'vsub.i32','vsubal.i32', + 'vsub.i64','vsubal.i64', + + 'vaddhn.i16','vaddhnal.i16', + 'vaddhn.i32','vaddhnal.i32', + 'vaddhn.i64','vaddhnal.i64', + + 'vsubhn.i16','vsubhnal.i16', + 'vsubhn.i32','vsubhnal.i32', + 'vsubhn.i64','vsubhnal.i64', + + 'vraddhn.i16','vraddhnal.i16', + 'vraddhn.i32','vraddhnal.i32', + 'vraddhn.i64','vraddhnal.i64', + + 'vrsubhn.i16','vrsubhnal.i16', + 'vrsubhn.i32','vrsubhnal.i32', + 'vrsubhn.i64','vrsubhnal.i64', + + 'vpadd.i8','vpaddal.i8', + 'vpadd.i16','vpaddal.i16', + 'vpadd.i32','vpaddal.i32', + + 'vceq.i8','vceqal.i8', + 'vceq.i16','vceqal.i16', + 'vceq.i32','vceqal.i32', + + 'vclz.i8','vclzal.i8', + 'vclz.i16','vclzal.i16', + 'vclz.i32','vclzal.i32', + + 'vmovn.i16','vmovnal.i16', + 'vmovn.i32','vmovnal.i32', + 'vmovn.i64','vmovnal.i64', + + 'vmla.s8','vmlaal.s8', + 'vmla.s16','vmlaal.s16', + 'vmla.s32','vmlaal.s32', + 'vmla.u8','vmlaal.u8', + 'vmla.u16','vmlaal.u16', + 'vmla.u32','vmlaal.u32', + 'vmla.i8','vmlaal.i8', + 'vmla.i16','vmlaal.i16', + 'vmla.i32','vmlaal.i32', + + 'vmls.s8','vmlsal.s8', + 'vmls.s16','vmlsal.s16', + 'vmls.s32','vmlsal.s32', + 'vmls.u8','vmlsal.u8', + 'vmls.u16','vmlsal.u16', + 'vmls.u32','vmlsal.u32', + 'vmls.i8','vmlsal.i8', + 'vmls.i16','vmlsal.i16', + 'vmls.i32','vmlsal.i32', + + 'vmul.s8','vmulal.s8', + 'vmul.s16','vmulal.s16', + 'vmul.s32','vmulal.s32', + 'vmul.u8','vmulal.u8', + 'vmul.u16','vmulal.u16', + 'vmul.u32','vmulal.u32', + 'vmul.i8','vmulal.i8', + 'vmul.i16','vmulal.i16', + 'vmul.i32','vmulal.i32', + 'vmul.p8','vmulal.p8', + + 'vrshrn.i16','vrshrnal.i16', + 'vrshrn.i32','vrshrnal.i32', + 'vrshrn.i64','vrshrnal.i64', + + 'vshrn.i16','vshrnal.i16', + 'vshrn.i32','vshrnal.i32', + 'vshrn.i64','vshrnal.i64', + + 'vshl.i8','vshlal.i8', + 'vshl.i16','vshlal.i16', + 'vshl.i32','vshlal.i32', + 'vshl.i64','vshlal.i64', + + 'vshll.i8','vshllal.i8', + 'vshll.i16','vshllal.i16', + 'vshll.i32','vshllal.i32' + ), + /* Unconditional NEON SIMD Signed Integer Instructions */ + 24 => array( + 'vaba.s8','vabaal.s8', + 'vaba.s16','vabaal.s16', + 'vaba.s32','vabaal.s32', + + 'vabal.s8','vabalal.s8', + 'vabal.s16','vabalal.s16', + 'vabal.s32','vabalal.s32', + + 'vabd.s8','vabdal.s8', + 'vabd.s16','vabdal.s16', + 'vabd.s32','vabdal.s32', + + 'vabs.s8','vabsal.s8', + 'vabs.s16','vabsal.s16', + 'vabs.s32','vabsal.s32', + + 'vaddl.s8','vaddlal.s8', + 'vaddl.s16','vaddlal.s16', + 'vaddl.s32','vaddlal.s32', + + 'vcge.s8','vcgeal.s8', + 'vcge.s16','vcgeal.s16', + 'vcge.s32','vcgeal.s32', + + 'vcle.s8','vcleal.s8', + 'vcle.s16','vcleal.s16', + 'vcle.s32','vcleal.s32', + + 'vcgt.s8','vcgtal.s8', + 'vcgt.s16','vcgtal.s16', + 'vcgt.s32','vcgtal.s32', + + 'vclt.s8','vcltal.s8', + 'vclt.s16','vcltal.s16', + 'vclt.s32','vcltal.s32', + + 'vcls.s8','vclsal.s8', + 'vcls.s16','vclsal.s16', + 'vcls.s32','vclsal.s32', + + 'vaddw.s8','vaddwal.s8', + 'vaddw.s16','vaddwal.s16', + 'vaddw.s32','vaddwal.s32', + + 'vhadd.s8','vhaddal.s8', + 'vhadd.s16','vhaddal.s16', + 'vhadd.s32','vhaddal.s32', + + 'vhsub.s8','vhsubal.s8', + 'vhsub.s16','vhsubal.s16', + 'vhsub.s32','vhsubal.s32', + + 'vmax.s8','vmaxal.s8', + 'vmax.s16','vmaxal.s16', + 'vmax.s32','vmaxal.s32', + + 'vmin.s8','vminal.s8', + 'vmin.s16','vminal.s16', + 'vmin.s32','vminal.s32', + + 'vmlal.s8','vmlalal.s8', + 'vmlal.s16','vmlalal.s16', + 'vmlal.s32','vmlalal.s32', + + 'vmlsl.s8','vmlslal.s8', + 'vmlsl.s16','vmlslal.s16', + 'vmlsl.s32','vmlslal.s32', + + 'vneg.s8','vnegal.s8', + 'vneg.s16','vnegal.s16', + 'vneg.s32','vnegal.s32', + + 'vpadal.s8','vpadalal.s8', + 'vpadal.s16','vpadalal.s16', + 'vpadal.s32','vpadalal.s32', + + 'vmovl.s8','vmovlal.s8', + 'vmovl.s16','vmovlal.s16', + 'vmovl.s32','vmovlal.s32', + + 'vmull.s8','vmullal.s8', + 'vmull.s16','vmullal.s16', + 'vmull.s32','vmullal.s32', + + 'vpaddl.s8','vpaddlal.s8', + 'vpaddl.s16','vpaddlal.s16', + 'vpaddl.s32','vpaddlal.s32', + + 'vpmax.s8','vpmaxal.s8', + 'vpmax.s16','vpmaxal.s16', + 'vpmax.s32','vpmaxal.s32', + + 'vpmin.s8','vpminal.s8', + 'vpmin.s16','vpminal.s16', + 'vpmin.s32','vpminal.s32', + + 'vqabs.s8','vqabsal.s8', + 'vqabs.s16','vqabsal.s16', + 'vqabs.s32','vqabsal.s32', + + 'vqadd.s8','vqaddal.s8', + 'vqadd.s16','vqaddal.s16', + 'vqadd.s32','vqaddal.s32', + 'vqadd.s64','vqaddal.s64', + + 'vqdmlal.s16','vqdmlalal.s16', + 'vqdmlal.s32','vqdmlalal.s32', + + 'vqdmlsl.s16','vqdmlslal.s16', + 'vqdmlsl.s32','vqdmlslal.s32', + + 'vqdmulh.s16','vqdmulhal.s16', + 'vqdmulh.s32','vqdmulhal.s32', + + 'vqdmull.s16','vqdmullal.s16', + 'vqdmull.s32','vqdmullal.s32', + + 'vqmovn.s16','vqmovnal.s16', + 'vqmovn.s32','vqmovnal.s32', + 'vqmovn.s64','vqmovnal.s64', + + 'vqmovun.s16','vqmovunal.s16', + 'vqmovun.s32','vqmovunal.s32', + 'vqmovun.s64','vqmovunal.s64', + + 'vqneg.s8','vqnegal.s8', + 'vqneg.s16','vqnegal.s16', + 'vqneg.s32','vqnegal.s32', + + 'vqrdmulh.s16','vqrdmulhal.s16', + 'vqrdmulh.s32','vqrdmulhal.s32', + + 'vqrshl.s8','vqrshlal.s8', + 'vqrshl.s16','vqrshlal.s16', + 'vqrshl.s32','vqrshlal.s32', + 'vqrshl.s64','vqrshlal.s64', + + 'vqrshrn.s16','vqrshrnal.s16', + 'vqrshrn.s32','vqrshrnal.s32', + 'vqrshrn.s64','vqrshrnal.s64', + + 'vqrshrun.s16','vqrshrunal.s16', + 'vqrshrun.s32','vqrshrunal.s32', + 'vqrshrun.s64','vqrshrunal.s64', + + 'vqshl.s8','vqshlal.s8', + 'vqshl.s16','vqshlal.s16', + 'vqshl.s32','vqshlal.s32', + 'vqshl.s64','vqshlal.s64', + + 'vqshlu.s8','vqshlual.s8', + 'vqshlu.s16','vqshlual.s16', + 'vqshlu.s32','vqshlual.s32', + 'vqshlu.s64','vqshlual.s64', + + 'vqshrn.s16','vqshrnal.s16', + 'vqshrn.s32','vqshrnal.s32', + 'vqshrn.s64','vqshrnal.s64', + + 'vqshrun.s16','vqshrunal.s16', + 'vqshrun.s32','vqshrunal.s32', + 'vqshrun.s64','vqshrunal.s64', + + 'vqsub.s8','vqsubal.s8', + 'vqsub.s16','vqsubal.s16', + 'vqsub.s32','vqsubal.s32', + 'vqsub.s64','vqsubal.s64', + + 'vrhadd.s8','vrhaddal.s8', + 'vrhadd.s16','vrhaddal.s16', + 'vrhadd.s32','vrhaddal.s32', + + 'vrshl.s8','vrshlal.s8', + 'vrshl.s16','vrshlal.s16', + 'vrshl.s32','vrshlal.s32', + 'vrshl.s64','vrshlal.s64', + + 'vrshr.s8','vrshral.s8', + 'vrshr.s16','vrshral.s16', + 'vrshr.s32','vrshral.s32', + 'vrshr.s64','vrshral.s64', + + 'vrsra.s8','vrsraal.s8', + 'vrsra.s16','vrsraal.s16', + 'vrsra.s32','vrsraal.s32', + 'vrsra.s64','vrsraal.s64', + + 'vshl.s8','vshlal.s8', + 'vshl.s16','vshlal.s16', + 'vshl.s32','vshlal.s32', + 'vshl.s64','vshlal.s64', + + 'vshll.s8','vshllal.s8', + 'vshll.s16','vshllal.s16', + 'vshll.s32','vshllal.s32', + + 'vshr.s8','vshral.s8', + 'vshr.s16','vshral.s16', + 'vshr.s32','vshral.s32', + 'vshr.s64','vshral.s64', + + 'vsra.s8','vsraal.s8', + 'vsra.s16','vsraal.s16', + 'vsra.s32','vsraal.s32', + 'vsra.s64','vsraal.s64', + + 'vsubl.s8','vsublal.s8', + 'vsubl.s16','vsublal.s16', + 'vsubl.s32','vsublal.s32', + + 'vsubh.s8','vsubhal.s8', + 'vsubh.s16','vsubhal.s16', + 'vsubh.s32','vsubhal.s32' + ), + /* Unconditional NEON SIMD Unsigned Integer Instructions */ + 25 => array( + 'vaba.u8','vabaal.u8', + 'vaba.u16','vabaal.u16', + 'vaba.u32','vabaal.u32', + + 'vabal.u8','vabalal.u8', + 'vabal.u16','vabalal.u16', + 'vabal.u32','vabalal.u32', + + 'vabd.u8','vabdal.u8', + 'vabd.u16','vabdal.u16', + 'vabd.u32','vabdal.u32', + + 'vaddl.u8','vaddlal.u8', + 'vaddl.u16','vaddlal.u16', + 'vaddl.u32','vaddlal.u32', + + 'vsubl.u8','vsublal.u8', + 'vsubl.u16','vsublal.u16', + 'vsubl.u32','vsublal.u32', + + 'vaddw.u8','vaddwal.u8', + 'vaddw.u16','vaddwal.u16', + 'vaddw.u32','vaddwal.u32', + + 'vsubh.u8','vsubhal.u8', + 'vsubh.u16','vsubhal.u16', + 'vsubh.u32','vsubhal.u32', + + 'vhadd.u8','vhaddal.u8', + 'vhadd.u16','vhaddal.u16', + 'vhadd.u32','vhaddal.u32', + + 'vhsub.u8','vhsubal.u8', + 'vhsub.u16','vhsubal.u16', + 'vhsub.u32','vhsubal.u32', + + 'vpadal.u8','vpadalal.u8', + 'vpadal.u16','vpadalal.u16', + 'vpadal.u32','vpadalal.u32', + + 'vpaddl.u8','vpaddlal.u8', + 'vpaddl.u16','vpaddlal.u16', + 'vpaddl.u32','vpaddlal.u32', + + 'vcge.u8','vcgeal.u8', + 'vcge.u16','vcgeal.u16', + 'vcge.u32','vcgeal.u32', + + 'vcle.u8','vcleal.u8', + 'vcle.u16','vcleal.u16', + 'vcle.u32','vcleal.u32', + + 'vcgt.u8','vcgtal.u8', + 'vcgt.u16','vcgtal.u16', + 'vcgt.u32','vcgtal.u32', + + 'vclt.u8','vcltal.u8', + 'vclt.u16','vcltal.u16', + 'vclt.u32','vcltal.u32', + + 'vmax.u8','vmaxal.u8', + 'vmax.u16','vmaxal.u16', + 'vmax.u32','vmaxal.u32', + + 'vmin.u8','vminal.u8', + 'vmin.u16','vminal.u16', + 'vmin.u32','vminal.u32', + + 'vmlal.u8','vmlalal.u8', + 'vmlal.u16','vmlalal.u16', + 'vmlal.u32','vmlalal.u32', + + 'vmlsl.u8','vmlslal.u8', + 'vmlsl.u16','vmlslal.u16', + 'vmlsl.u32','vmlslal.u32', + + 'vmull.u8','vmullal.u8', + 'vmull.u16','vmullal.u16', + 'vmull.u32','vmullal.u32', + + 'vmovl.u8','vmovlal.u8', + 'vmovl.u16','vmovlal.u16', + 'vmovl.u32','vmovlal.u32', + + 'vshl.u8','vshlal.u8', + 'vshl.u16','vshlal.u16', + 'vshl.u32','vshlal.u32', + 'vshl.u64','vshlal.u64', + + 'vshll.u8','vshllal.u8', + 'vshll.u16','vshllal.u16', + 'vshll.u32','vshllal.u32', + + 'vshr.u8','vshral.u8', + 'vshr.u16','vshral.u16', + 'vshr.u32','vshral.u32', + 'vshr.u64','vshral.u64', + + 'vsra.u8','vsraal.u8', + 'vsra.u16','vsraal.u16', + 'vsra.u32','vsraal.u32', + 'vsra.u64','vsraal.u64', + + 'vpmax.u8','vpmaxal.u8', + 'vpmax.u16','vpmaxal.u16', + 'vpmax.u32','vpmaxal.u32', + + 'vpmin.u8','vpminal.u8', + 'vpmin.u16','vpminal.u16', + 'vpmin.u32','vpminal.u32', + + 'vqadd.u8','vqaddal.u8', + 'vqadd.u16','vqaddal.u16', + 'vqadd.u32','vqaddal.u32', + 'vqadd.u64','vqaddal.u64', + + 'vqsub.u8','vqsubal.u8', + 'vqsub.u16','vqsubal.u16', + 'vqsub.u32','vqsubal.u32', + 'vqsub.u64','vqsubal.u64', + + 'vqmovn.u16','vqmovnal.u16', + 'vqmovn.u32','vqmovnal.u32', + 'vqmovn.u64','vqmovnal.u64', + + 'vqshl.u8','vqshlal.u8', + 'vqshl.u16','vqshlal.u16', + 'vqshl.u32','vqshlal.u32', + 'vqshl.u64','vqshlal.u64', + + 'vqshrn.u16','vqshrnal.u16', + 'vqshrn.u32','vqshrnal.u32', + 'vqshrn.u64','vqshrnal.u64', + + 'vqrshl.u8','vqrshlal.u8', + 'vqrshl.u16','vqrshlal.u16', + 'vqrshl.u32','vqrshlal.u32', + 'vqrshl.u64','vqrshlal.u64', + + 'vqrshrn.u16','vqrshrnal.u16', + 'vqrshrn.u32','vqrshrnal.u32', + 'vqrshrn.u64','vqrshrnal.u64', + + 'vrhadd.u8','vrhaddal.u8', + 'vrhadd.u16','vrhaddal.u16', + 'vrhadd.u32','vrhaddal.u32', + + 'vrshl.u8','vrshlal.u8', + 'vrshl.u16','vrshlal.u16', + 'vrshl.u32','vrshlal.u32', + 'vrshl.u64','vrshlal.u64', + + 'vrshr.u8','vrshral.u8', + 'vrshr.u16','vrshral.u16', + 'vrshr.u32','vrshral.u32', + 'vrshr.u64','vrshral.u64', + + 'vrsra.u8','vrsraal.u8', + 'vrsra.u16','vrsraal.u16', + 'vrsra.u32','vrsraal.u32', + 'vrsra.u64','vrsraal.u64' + ), + /* Unconditional VFPv3 & NEON SIMD Floating-Point Instructions */ + 26 => array( + 'vabd.f32','vabdal.f32', + + 'vabs.f32','vabsal.f32', + 'vabs.f64','vabsal.f64', + + 'vacge.f32','vacgeal.f32', + 'vacgt.f32','vacgtal.f32', + 'vacle.f32','vacleal.f32', + 'vaclt.f32','vacltal.f32', + + 'vadd.f32','vaddal.f32', + 'vadd.f64','vaddal.f64', + + 'vceq.f32','vceqal.f32', + 'vcge.f32','vcgeal.f32', + 'vcle.f32','vcleal.f32', + 'vcgt.f32','vcgtal.f32', + 'vclt.f32','vcltal.f32', + + 'vcmp.f32','vcmpal.f32', + 'vcmp.f64','vcmpal.f64', + + 'vcmpe.f32','vcmpeal.f32', + 'vcmpe.f64','vcmpeal.f64', + + 'vcvt.s16.f32','vcvtal.s16.f32', + 'vcvt.s16.f64','vcvtal.s16.f64', + 'vcvt.s32.f32','vcvtal.s32.f32', + 'vcvt.s32.f64','vcvtal.s32.f64', + 'vcvt.u16.f32','vcvtal.u16.f32', + 'vcvt.u16.f64','vcvtal.u16.f64', + 'vcvt.u32.f32','vcvtal.u32.f32', + 'vcvt.u32.f64','vcvtal.u32.f64', + 'vcvt.f16.f32','vcvtal.f16.f32', + 'vcvt.f32.s32','vcvtal.f32.s32', + 'vcvt.f32.u32','vcvtal.f32.u32', + 'vcvt.f32.f16','vcvtal.f32.f16', + 'vcvt.f32.f64','vcvtal.f32.f64', + 'vcvt.f64.s32','vcvtal.f64.s32', + 'vcvt.f64.u32','vcvtal.f64.u32', + 'vcvt.f64.f32','vcvtal.f64.f32', + + 'vcvtr.s32.f32','vcvtral.s32.f32', + 'vcvtr.s32.f64','vcvtral.s32.f64', + 'vcvtr.u32.f32','vcvtral.u32.f32', + 'vcvtr.u32.f64','vcvtral.u32.f64', + + 'vcvtb.f16.f32','vcvtbal.f16.f32', + 'vcvtb.f32.f16','vcvtbal.f32.f16', + + 'vcvtt.f16.f32','vcvttal.f16.f32', + 'vcvtt.f32.f16','vcvttal.f32.f16', + + 'vdiv.f32','vdival.f32', + 'vdiv.f64','vdival.f64', + + 'vmax.f32','vmaxal.f32', + 'vmin.f32','vminal.f32', + + 'vmla.f32','vmlaal.f32', + 'vmla.f64','vmlaal.f64', + + 'vmls.f32','vmlsal.f32', + 'vmls.f64','vmlsal.f64', + + 'vmul.f32','vmulal.f32', + 'vmul.f64','vmulal.f64', + + 'vneg.f32','vnegal.f32', + 'vneg.f64','vnegal.f64', + + 'vnmla.f32','vnmlaal.f32', + 'vnmla.f64','vnmlaal.f64', + + 'vnmls.f32','vnmlsal.f32', + 'vnmls.f64','vnmlsal.f64', + + 'vnmul.f64','vnmulal.f64', + 'vnmul.f32','vnmulal.f32', + + 'vpadd.f32','vpaddal.f32', + + 'vpmax.f32','vpmaxal.f32', + 'vpmin.f32','vpminal.f32', + + 'vrecpe.u32','vrecpeal.u32', + 'vrecpe.f32','vrecpeal.f32', + 'vrecps.f32','vrecpsal.f32', + + 'vrsqrte.u32','vrsqrteal.u32', + 'vrsqrte.f32','vrsqrteal.f32', + 'vrsqrts.f32','vrsqrtsal.f32', + + 'vsqrt.f32','vsqrtal.f32', + 'vsqrt.f64','vsqrtal.f64', + + 'vsub.f32','vsubal.f32', + 'vsub.f64','vsubal.f64' + ), + /* Conditional VFPv3 & NEON SIMD Memory Access Instructions */ + 27 => array( + /* Conditional VFPv3 & NEON SIMD Memory Access: Loads */ + 'vldeq.8','vldne.8','vldcs.8','vldhs.8','vldcc.8','vldlo.8','vldmi.8','vldpl.8','vldvs.8','vldvc.8','vldhi.8','vldls.8','vldge.8','vldlt.8','vldgt.8','vldle.8', + 'vldeq.16','vldne.16','vldcs.16','vldhs.16','vldcc.16','vldlo.16','vldmi.16','vldpl.16','vldvs.16','vldvc.16','vldhi.16','vldls.16','vldge.16','vldlt.16','vldgt.16','vldle.16', + 'vldeq.32','vldne.32','vldcs.32','vldhs.32','vldcc.32','vldlo.32','vldmi.32','vldpl.32','vldvs.32','vldvc.32','vldhi.32','vldls.32','vldge.32','vldlt.32','vldgt.32','vldle.32', + 'vldeq.64','vldne.64','vldcs.64','vldhs.64','vldcc.64','vldlo.64','vldmi.64','vldpl.64','vldvs.64','vldvc.64','vldhi.64','vldls.64','vldge.64','vldlt.64','vldgt.64','vldle.64', + + 'vld1eq.8','vld1ne.8','vld1cs.8','vld1hs.8','vld1cc.8','vld1lo.8','vld1mi.8','vld1pl.8','vld1vs.8','vld1vc.8','vld1hi.8','vld1ls.8','vld1ge.8','vld1lt.8','vld1gt.8','vld1le.8', + 'vld1eq.16','vld1ne.16','vld1cs.16','vld1hs.16','vld1cc.16','vld1lo.16','vld1mi.16','vld1pl.16','vld1vs.16','vld1vc.16','vld1hi.16','vld1ls.16','vld1ge.16','vld1lt.16','vld1gt.16','vld1le.16', + 'vld1eq.32','vld1ne.32','vld1cs.32','vld1hs.32','vld1cc.32','vld1lo.32','vld1mi.32','vld1pl.32','vld1vs.32','vld1vc.32','vld1hi.32','vld1ls.32','vld1ge.32','vld1lt.32','vld1gt.32','vld1le.32', + + 'vld2eq.8','vld2ne.8','vld2cs.8','vld2hs.8','vld2cc.8','vld2lo.8','vld2mi.8','vld2pl.8','vld2vs.8','vld2vc.8','vld2hi.8','vld2ls.8','vld2ge.8','vld2lt.8','vld2gt.8','vld2le.8', + 'vld2eq.16','vld2ne.16','vld2cs.16','vld2hs.16','vld2cc.16','vld2lo.16','vld2mi.16','vld2pl.16','vld2vs.16','vld2vc.16','vld2hi.16','vld2ls.16','vld2ge.16','vld2lt.16','vld2gt.16','vld2le.16', + 'vld2eq.32','vld2ne.32','vld2cs.32','vld2hs.32','vld2cc.32','vld2lo.32','vld2mi.32','vld2pl.32','vld2vs.32','vld2vc.32','vld2hi.32','vld2ls.32','vld2ge.32','vld2lt.32','vld2gt.32','vld2le.32', + + 'vld3eq.8','vld3ne.8','vld3cs.8','vld3hs.8','vld3cc.8','vld3lo.8','vld3mi.8','vld3pl.8','vld3vs.8','vld3vc.8','vld3hi.8','vld3ls.8','vld3ge.8','vld3lt.8','vld3gt.8','vld3le.8', + 'vld3eq.16','vld3ne.16','vld3cs.16','vld3hs.16','vld3cc.16','vld3lo.16','vld3mi.16','vld3pl.16','vld3vs.16','vld3vc.16','vld3hi.16','vld3ls.16','vld3ge.16','vld3lt.16','vld3gt.16','vld3le.16', + 'vld3eq.32','vld3ne.32','vld3cs.32','vld3hs.32','vld3cc.32','vld3lo.32','vld3mi.32','vld3pl.32','vld3vs.32','vld3vc.32','vld3hi.32','vld3ls.32','vld3ge.32','vld3lt.32','vld3gt.32','vld3le.32', + + 'vld4eq.8','vld4ne.8','vld4cs.8','vld4hs.8','vld4cc.8','vld4lo.8','vld4mi.8','vld4pl.8','vld4vs.8','vld4vc.8','vld4hi.8','vld4ls.8','vld4ge.8','vld4lt.8','vld4gt.8','vld4le.8', + 'vld4eq.16','vld4ne.16','vld4cs.16','vld4hs.16','vld4cc.16','vld4lo.16','vld4mi.16','vld4pl.16','vld4vs.16','vld4vc.16','vld4hi.16','vld4ls.16','vld4ge.16','vld4lt.16','vld4gt.16','vld4le.16', + 'vld4eq.32','vld4ne.32','vld4cs.32','vld4hs.32','vld4cc.32','vld4lo.32','vld4mi.32','vld4pl.32','vld4vs.32','vld4vc.32','vld4hi.32','vld4ls.32','vld4ge.32','vld4lt.32','vld4gt.32','vld4le.32', + + 'vldmeq','vldmne','vldmcs','vldmhs','vldmcc','vldmlo','vldmmi','vldmpl','vldmvs','vldmvc','vldmhi','vldmls','vldmge','vldmlt','vldmgt','vldmle', + 'vldmeq.32','vldmne.32','vldmcs.32','vldmhs.32','vldmcc.32','vldmlo.32','vldmmi.32','vldmpl.32','vldmvs.32','vldmvc.32','vldmhi.32','vldmls.32','vldmge.32','vldmlt.32','vldmgt.32','vldmle.32', + 'vldmeq.64','vldmne.64','vldmcs.64','vldmhs.64','vldmcc.64','vldmlo.64','vldmmi.64','vldmpl.64','vldmvs.64','vldmvc.64','vldmhi.64','vldmls.64','vldmge.64','vldmlt.64','vldmgt.64','vldmle.64', + + 'vldmiaeq','vldmiane','vldmiacs','vldmiahs','vldmiacc','vldmialo','vldmiami','vldmiapl','vldmiavs','vldmiavc','vldmiahi','vldmials','vldmiage','vldmialt','vldmiagt','vldmiale', + 'vldmiaeq.32','vldmiane.32','vldmiacs.32','vldmiahs.32','vldmiacc.32','vldmialo.32','vldmiami.32','vldmiapl.32','vldmiavs.32','vldmiavc.32','vldmiahi.32','vldmials.32','vldmiage.32','vldmialt.32','vldmiagt.32','vldmiale.32', + 'vldmiaeq.64','vldmiane.64','vldmiacs.64','vldmiahs.64','vldmiacc.64','vldmialo.64','vldmiami.64','vldmiapl.64','vldmiavs.64','vldmiavc.64','vldmiahi.64','vldmials.64','vldmiage.64','vldmialt.64','vldmiagt.64','vldmiale.64', + + 'vldmdbeq','vldmdbne','vldmdbcs','vldmdbhs','vldmdbcc','vldmdblo','vldmdbmi','vldmdbpl','vldmdbvs','vldmdbvc','vldmdbhi','vldmdbls','vldmdbge','vldmdblt','vldmdbgt','vldmdble', + 'vldmdbeq.32','vldmdbne.32','vldmdbcs.32','vldmdbhs.32','vldmdbcc.32','vldmdblo.32','vldmdbmi.32','vldmdbpl.32','vldmdbvs.32','vldmdbvc.32','vldmdbhi.32','vldmdbls.32','vldmdbge.32','vldmdblt.32','vldmdbgt.32','vldmdble.32', + 'vldmdbeq.64','vldmdbne.64','vldmdbcs.64','vldmdbhs.64','vldmdbcc.64','vldmdblo.64','vldmdbmi.64','vldmdbpl.64','vldmdbvs.64','vldmdbvc.64','vldmdbhi.64','vldmdbls.64','vldmdbge.64','vldmdblt.64','vldmdbgt.64','vldmdble.64', + + 'vldreq','vldrne','vldrcs','vldrhs','vldrcc','vldrlo','vldrmi','vldrpl','vldrvs','vldrvc','vldrhi','vldrls','vldrge','vldrlt','vldrgt','vldrle', + 'vldreq.32','vldrne.32','vldrcs.32','vldrhs.32','vldrcc.32','vldrlo.32','vldrmi.32','vldrpl.32','vldrvs.32','vldrvc.32','vldrhi.32','vldrls.32','vldrge.32','vldrlt.32','vldrgt.32','vldrle.32', + 'vldreq.64','vldrne.64','vldrcs.64','vldrhs.64','vldrcc.64','vldrlo.64','vldrmi.64','vldrpl.64','vldrvs.64','vldrvc.64','vldrhi.64','vldrls.64','vldrge.64','vldrlt.64','vldrgt.64','vldrle.64', + + 'vpopeq','vpopne','vpopcs','vpophs','vpopcc','vpoplo','vpopmi','vpoppl','vpopvs','vpopvc','vpophi','vpopls','vpopge','vpoplt','vpopgt','vpople', + 'vpopeq.32','vpopne.32','vpopcs.32','vpophs.32','vpopcc.32','vpoplo.32','vpopmi.32','vpoppl.32','vpopvs.32','vpopvc.32','vpophi.32','vpopls.32','vpopge.32','vpoplt.32','vpopgt.32','vpople.32', + 'vpopeq.64','vpopne.64','vpopcs.64','vpophs.64','vpopcc.64','vpoplo.64','vpopmi.64','vpoppl.64','vpopvs.64','vpopvc.64','vpophi.64','vpopls.64','vpopge.64','vpoplt.64','vpopgt.64','vpople.64', + + /* Conditional VFPv3 & NEON SIMD Memory Access: Stores */ + 'vst1eq.8','vst1ne.8','vst1cs.8','vst1hs.8','vst1cc.8','vst1lo.8','vst1mi.8','vst1pl.8','vst1vs.8','vst1vc.8','vst1hi.8','vst1ls.8','vst1ge.8','vst1lt.8','vst1gt.8','vst1le.8', + 'vst1eq.16','vst1ne.16','vst1cs.16','vst1hs.16','vst1cc.16','vst1lo.16','vst1mi.16','vst1pl.16','vst1vs.16','vst1vc.16','vst1hi.16','vst1ls.16','vst1ge.16','vst1lt.16','vst1gt.16','vst1le.16', + 'vst1eq.32','vst1ne.32','vst1cs.32','vst1hs.32','vst1cc.32','vst1lo.32','vst1mi.32','vst1pl.32','vst1vs.32','vst1vc.32','vst1hi.32','vst1ls.32','vst1ge.32','vst1lt.32','vst1gt.32','vst1le.32', + 'vst1eq.64','vst1ne.64','vst1cs.64','vst1hs.64','vst1cc.64','vst1lo.64','vst1mi.64','vst1pl.64','vst1vs.64','vst1vc.64','vst1hi.64','vst1ls.64','vst1ge.64','vst1lt.64','vst1gt.64','vst1le.64', + + 'vst2eq.8','vst2ne.8','vst2cs.8','vst2hs.8','vst2cc.8','vst2lo.8','vst2mi.8','vst2pl.8','vst2vs.8','vst2vc.8','vst2hi.8','vst2ls.8','vst2ge.8','vst2lt.8','vst2gt.8','vst2le.8', + 'vst2eq.16','vst2ne.16','vst2cs.16','vst2hs.16','vst2cc.16','vst2lo.16','vst2mi.16','vst2pl.16','vst2vs.16','vst2vc.16','vst2hi.16','vst2ls.16','vst2ge.16','vst2lt.16','vst2gt.16','vst2le.16', + 'vst2eq.32','vst2ne.32','vst2cs.32','vst2hs.32','vst2cc.32','vst2lo.32','vst2mi.32','vst2pl.32','vst2vs.32','vst2vc.32','vst2hi.32','vst2ls.32','vst2ge.32','vst2lt.32','vst2gt.32','vst2le.32', + + 'vst3eq.8','vst3ne.8','vst3cs.8','vst3hs.8','vst3cc.8','vst3lo.8','vst3mi.8','vst3pl.8','vst3vs.8','vst3vc.8','vst3hi.8','vst3ls.8','vst3ge.8','vst3lt.8','vst3gt.8','vst3le.8', + 'vst3eq.16','vst3ne.16','vst3cs.16','vst3hs.16','vst3cc.16','vst3lo.16','vst3mi.16','vst3pl.16','vst3vs.16','vst3vc.16','vst3hi.16','vst3ls.16','vst3ge.16','vst3lt.16','vst3gt.16','vst3le.16', + 'vst3eq.32','vst3ne.32','vst3cs.32','vst3hs.32','vst3cc.32','vst3lo.32','vst3mi.32','vst3pl.32','vst3vs.32','vst3vc.32','vst3hi.32','vst3ls.32','vst3ge.32','vst3lt.32','vst3gt.32','vst3le.32', + + 'vst4eq.8','vst4ne.8','vst4cs.8','vst4hs.8','vst4cc.8','vst4lo.8','vst4mi.8','vst4pl.8','vst4vs.8','vst4vc.8','vst4hi.8','vst4ls.8','vst4ge.8','vst4lt.8','vst4gt.8','vst4le.8', + 'vst4eq.16','vst4ne.16','vst4cs.16','vst4hs.16','vst4cc.16','vst4lo.16','vst4mi.16','vst4pl.16','vst4vs.16','vst4vc.16','vst4hi.16','vst4ls.16','vst4ge.16','vst4lt.16','vst4gt.16','vst4le.16', + 'vst4eq.32','vst4ne.32','vst4cs.32','vst4hs.32','vst4cc.32','vst4lo.32','vst4mi.32','vst4pl.32','vst4vs.32','vst4vc.32','vst4hi.32','vst4ls.32','vst4ge.32','vst4lt.32','vst4gt.32','vst4le.32', + + 'vstmeq','vstmne','vstmcs','vstmhs','vstmcc','vstmlo','vstmmi','vstmpl','vstmvs','vstmvc','vstmhi','vstmls','vstmge','vstmlt','vstmgt','vstmle', + 'vstmeq.32','vstmne.32','vstmcs.32','vstmhs.32','vstmcc.32','vstmlo.32','vstmmi.32','vstmpl.32','vstmvs.32','vstmvc.32','vstmhi.32','vstmls.32','vstmge.32','vstmlt.32','vstmgt.32','vstmle.32', + 'vstmeq.64','vstmne.64','vstmcs.64','vstmhs.64','vstmcc.64','vstmlo.64','vstmmi.64','vstmpl.64','vstmvs.64','vstmvc.64','vstmhi.64','vstmls.64','vstmge.64','vstmlt.64','vstmgt.64','vstmle.64', + + 'vstmiaeq','vstmiane','vstmiacs','vstmiahs','vstmiacc','vstmialo','vstmiami','vstmiapl','vstmiavs','vstmiavc','vstmiahi','vstmials','vstmiage','vstmialt','vstmiagt','vstmiale', + 'vstmiaeq.32','vstmiane.32','vstmiacs.32','vstmiahs.32','vstmiacc.32','vstmialo.32','vstmiami.32','vstmiapl.32','vstmiavs.32','vstmiavc.32','vstmiahi.32','vstmials.32','vstmiage.32','vstmialt.32','vstmiagt.32','vstmiale.32', + 'vstmiaeq.64','vstmiane.64','vstmiacs.64','vstmiahs.64','vstmiacc.64','vstmialo.64','vstmiami.64','vstmiapl.64','vstmiavs.64','vstmiavc.64','vstmiahi.64','vstmials.64','vstmiage.64','vstmialt.64','vstmiagt.64','vstmiale.64', + + 'vstmdbeq','vstmdbne','vstmdbcs','vstmdbhs','vstmdbcc','vstmdblo','vstmdbmi','vstmdbpl','vstmdbvs','vstmdbvc','vstmdbhi','vstmdbls','vstmdbge','vstmdblt','vstmdbgt','vstmdble', + 'vstmdbeq.32','vstmdbne.32','vstmdbcs.32','vstmdbhs.32','vstmdbcc.32','vstmdblo.32','vstmdbmi.32','vstmdbpl.32','vstmdbvs.32','vstmdbvc.32','vstmdbhi.32','vstmdbls.32','vstmdbge.32','vstmdblt.32','vstmdbgt.32','vstmdble.32', + 'vstmdbeq.64','vstmdbne.64','vstmdbcs.64','vstmdbhs.64','vstmdbcc.64','vstmdblo.64','vstmdbmi.64','vstmdbpl.64','vstmdbvs.64','vstmdbvc.64','vstmdbhi.64','vstmdbls.64','vstmdbge.64','vstmdblt.64','vstmdbgt.64','vstmdble.64', + + 'vstreq','vstrne','vstrcs','vstrhs','vstrcc','vstrlo','vstrmi','vstrpl','vstrvs','vstrvc','vstrhi','vstrls','vstrge','vstrlt','vstrgt','vstrle', + 'vstreq.32','vstrne.32','vstrcs.32','vstrhs.32','vstrcc.32','vstrlo.32','vstrmi.32','vstrpl.32','vstrvs.32','vstrvc.32','vstrhi.32','vstrls.32','vstrge.32','vstrlt.32','vstrgt.32','vstrle.32', + 'vstreq.64','vstrne.64','vstrcs.64','vstrhs.64','vstrcc.64','vstrlo.64','vstrmi.64','vstrpl.64','vstrvs.64','vstrvc.64','vstrhi.64','vstrls.64','vstrge.64','vstrlt.64','vstrgt.64','vstrle.64', + + 'vpusheq','vpushne','vpushcs','vpushhs','vpushcc','vpushlo','vpushmi','vpushpl','vpushvs','vpushvc','vpushhi','vpushls','vpushge','vpushlt','vpushgt','vpushle', + 'vpusheq.32','vpushne.32','vpushcs.32','vpushhs.32','vpushcc.32','vpushlo.32','vpushmi.32','vpushpl.32','vpushvs.32','vpushvc.32','vpushhi.32','vpushls.32','vpushge.32','vpushlt.32','vpushgt.32','vpushle.32', + 'vpusheq.64','vpushne.64','vpushcs.64','vpushhs.64','vpushcc.64','vpushlo.64','vpushmi.64','vpushpl.64','vpushvs.64','vpushvc.64','vpushhi.64','vpushls.64','vpushge.64','vpushlt.64','vpushgt.64','vpushle.64' + ), + /* Conditional NEON SIMD Logical Instructions */ + 28 => array( + 'vandeq','vandne','vandcs','vandhs','vandcc','vandlo','vandmi','vandpl','vandvs','vandvc','vandhi','vandls','vandge','vandlt','vandgt','vandle', + 'vandeq.i8','vandne.i8','vandcs.i8','vandhs.i8','vandcc.i8','vandlo.i8','vandmi.i8','vandpl.i8','vandvs.i8','vandvc.i8','vandhi.i8','vandls.i8','vandge.i8','vandlt.i8','vandgt.i8','vandle.i8', + 'vandeq.i16','vandne.i16','vandcs.i16','vandhs.i16','vandcc.i16','vandlo.i16','vandmi.i16','vandpl.i16','vandvs.i16','vandvc.i16','vandhi.i16','vandls.i16','vandge.i16','vandlt.i16','vandgt.i16','vandle.i16', + 'vandeq.i32','vandne.i32','vandcs.i32','vandhs.i32','vandcc.i32','vandlo.i32','vandmi.i32','vandpl.i32','vandvs.i32','vandvc.i32','vandhi.i32','vandls.i32','vandge.i32','vandlt.i32','vandgt.i32','vandle.i32', + 'vandeq.i64','vandne.i64','vandcs.i64','vandhs.i64','vandcc.i64','vandlo.i64','vandmi.i64','vandpl.i64','vandvs.i64','vandvc.i64','vandhi.i64','vandls.i64','vandge.i64','vandlt.i64','vandgt.i64','vandle.i64', + 'vandeq.s8','vandne.s8','vandcs.s8','vandhs.s8','vandcc.s8','vandlo.s8','vandmi.s8','vandpl.s8','vandvs.s8','vandvc.s8','vandhi.s8','vandls.s8','vandge.s8','vandlt.s8','vandgt.s8','vandle.s8', + 'vandeq.s16','vandne.s16','vandcs.s16','vandhs.s16','vandcc.s16','vandlo.s16','vandmi.s16','vandpl.s16','vandvs.s16','vandvc.s16','vandhi.s16','vandls.s16','vandge.s16','vandlt.s16','vandgt.s16','vandle.s16', + 'vandeq.s32','vandne.s32','vandcs.s32','vandhs.s32','vandcc.s32','vandlo.s32','vandmi.s32','vandpl.s32','vandvs.s32','vandvc.s32','vandhi.s32','vandls.s32','vandge.s32','vandlt.s32','vandgt.s32','vandle.s32', + 'vandeq.s64','vandne.s64','vandcs.s64','vandhs.s64','vandcc.s64','vandlo.s64','vandmi.s64','vandpl.s64','vandvs.s64','vandvc.s64','vandhi.s64','vandls.s64','vandge.s64','vandlt.s64','vandgt.s64','vandle.s64', + 'vandeq.u8','vandne.u8','vandcs.u8','vandhs.u8','vandcc.u8','vandlo.u8','vandmi.u8','vandpl.u8','vandvs.u8','vandvc.u8','vandhi.u8','vandls.u8','vandge.u8','vandlt.u8','vandgt.u8','vandle.u8', + 'vandeq.u16','vandne.u16','vandcs.u16','vandhs.u16','vandcc.u16','vandlo.u16','vandmi.u16','vandpl.u16','vandvs.u16','vandvc.u16','vandhi.u16','vandls.u16','vandge.u16','vandlt.u16','vandgt.u16','vandle.u16', + 'vandeq.u32','vandne.u32','vandcs.u32','vandhs.u32','vandcc.u32','vandlo.u32','vandmi.u32','vandpl.u32','vandvs.u32','vandvc.u32','vandhi.u32','vandls.u32','vandge.u32','vandlt.u32','vandgt.u32','vandle.u32', + 'vandeq.u64','vandne.u64','vandcs.u64','vandhs.u64','vandcc.u64','vandlo.u64','vandmi.u64','vandpl.u64','vandvs.u64','vandvc.u64','vandhi.u64','vandls.u64','vandge.u64','vandlt.u64','vandgt.u64','vandle.u64', + 'vandeq.f32','vandne.f32','vandcs.f32','vandhs.f32','vandcc.f32','vandlo.f32','vandmi.f32','vandpl.f32','vandvs.f32','vandvc.f32','vandhi.f32','vandls.f32','vandge.f32','vandlt.f32','vandgt.f32','vandle.f32', + 'vandeq.f64','vandne.f64','vandcs.f64','vandhs.f64','vandcc.f64','vandlo.f64','vandmi.f64','vandpl.f64','vandvs.f64','vandvc.f64','vandhi.f64','vandls.f64','vandge.f64','vandlt.f64','vandgt.f64','vandle.f64', + + 'vbiceq','vbicne','vbiccs','vbichs','vbiccc','vbiclo','vbicmi','vbicpl','vbicvs','vbicvc','vbichi','vbicls','vbicge','vbiclt','vbicgt','vbicle', + 'vbiceq.i8','vbicne.i8','vbiccs.i8','vbichs.i8','vbiccc.i8','vbiclo.i8','vbicmi.i8','vbicpl.i8','vbicvs.i8','vbicvc.i8','vbichi.i8','vbicls.i8','vbicge.i8','vbiclt.i8','vbicgt.i8','vbicle.i8', + 'vbiceq.i16','vbicne.i16','vbiccs.i16','vbichs.i16','vbiccc.i16','vbiclo.i16','vbicmi.i16','vbicpl.i16','vbicvs.i16','vbicvc.i16','vbichi.i16','vbicls.i16','vbicge.i16','vbiclt.i16','vbicgt.i16','vbicle.i16', + 'vbiceq.i32','vbicne.i32','vbiccs.i32','vbichs.i32','vbiccc.i32','vbiclo.i32','vbicmi.i32','vbicpl.i32','vbicvs.i32','vbicvc.i32','vbichi.i32','vbicls.i32','vbicge.i32','vbiclt.i32','vbicgt.i32','vbicle.i32', + 'vbiceq.i64','vbicne.i64','vbiccs.i64','vbichs.i64','vbiccc.i64','vbiclo.i64','vbicmi.i64','vbicpl.i64','vbicvs.i64','vbicvc.i64','vbichi.i64','vbicls.i64','vbicge.i64','vbiclt.i64','vbicgt.i64','vbicle.i64', + 'vbiceq.s8','vbicne.s8','vbiccs.s8','vbichs.s8','vbiccc.s8','vbiclo.s8','vbicmi.s8','vbicpl.s8','vbicvs.s8','vbicvc.s8','vbichi.s8','vbicls.s8','vbicge.s8','vbiclt.s8','vbicgt.s8','vbicle.s8', + 'vbiceq.s16','vbicne.s16','vbiccs.s16','vbichs.s16','vbiccc.s16','vbiclo.s16','vbicmi.s16','vbicpl.s16','vbicvs.s16','vbicvc.s16','vbichi.s16','vbicls.s16','vbicge.s16','vbiclt.s16','vbicgt.s16','vbicle.s16', + 'vbiceq.s32','vbicne.s32','vbiccs.s32','vbichs.s32','vbiccc.s32','vbiclo.s32','vbicmi.s32','vbicpl.s32','vbicvs.s32','vbicvc.s32','vbichi.s32','vbicls.s32','vbicge.s32','vbiclt.s32','vbicgt.s32','vbicle.s32', + 'vbiceq.s64','vbicne.s64','vbiccs.s64','vbichs.s64','vbiccc.s64','vbiclo.s64','vbicmi.s64','vbicpl.s64','vbicvs.s64','vbicvc.s64','vbichi.s64','vbicls.s64','vbicge.s64','vbiclt.s64','vbicgt.s64','vbicle.s64', + 'vbiceq.u8','vbicne.u8','vbiccs.u8','vbichs.u8','vbiccc.u8','vbiclo.u8','vbicmi.u8','vbicpl.u8','vbicvs.u8','vbicvc.u8','vbichi.u8','vbicls.u8','vbicge.u8','vbiclt.u8','vbicgt.u8','vbicle.u8', + 'vbiceq.u16','vbicne.u16','vbiccs.u16','vbichs.u16','vbiccc.u16','vbiclo.u16','vbicmi.u16','vbicpl.u16','vbicvs.u16','vbicvc.u16','vbichi.u16','vbicls.u16','vbicge.u16','vbiclt.u16','vbicgt.u16','vbicle.u16', + 'vbiceq.u32','vbicne.u32','vbiccs.u32','vbichs.u32','vbiccc.u32','vbiclo.u32','vbicmi.u32','vbicpl.u32','vbicvs.u32','vbicvc.u32','vbichi.u32','vbicls.u32','vbicge.u32','vbiclt.u32','vbicgt.u32','vbicle.u32', + 'vbiceq.u64','vbicne.u64','vbiccs.u64','vbichs.u64','vbiccc.u64','vbiclo.u64','vbicmi.u64','vbicpl.u64','vbicvs.u64','vbicvc.u64','vbichi.u64','vbicls.u64','vbicge.u64','vbiclt.u64','vbicgt.u64','vbicle.u64', + 'vbiceq.f32','vbicne.f32','vbiccs.f32','vbichs.f32','vbiccc.f32','vbiclo.f32','vbicmi.f32','vbicpl.f32','vbicvs.f32','vbicvc.f32','vbichi.f32','vbicls.f32','vbicge.f32','vbiclt.f32','vbicgt.f32','vbicle.f32', + 'vbiceq.f64','vbicne.f64','vbiccs.f64','vbichs.f64','vbiccc.f64','vbiclo.f64','vbicmi.f64','vbicpl.f64','vbicvs.f64','vbicvc.f64','vbichi.f64','vbicls.f64','vbicge.f64','vbiclt.f64','vbicgt.f64','vbicle.f64', + + 'vbifeq','vbifne','vbifcs','vbifhs','vbifcc','vbiflo','vbifmi','vbifpl','vbifvs','vbifvc','vbifhi','vbifls','vbifge','vbiflt','vbifgt','vbifle', + 'vbifeq.i8','vbifne.i8','vbifcs.i8','vbifhs.i8','vbifcc.i8','vbiflo.i8','vbifmi.i8','vbifpl.i8','vbifvs.i8','vbifvc.i8','vbifhi.i8','vbifls.i8','vbifge.i8','vbiflt.i8','vbifgt.i8','vbifle.i8', + 'vbifeq.i16','vbifne.i16','vbifcs.i16','vbifhs.i16','vbifcc.i16','vbiflo.i16','vbifmi.i16','vbifpl.i16','vbifvs.i16','vbifvc.i16','vbifhi.i16','vbifls.i16','vbifge.i16','vbiflt.i16','vbifgt.i16','vbifle.i16', + 'vbifeq.i32','vbifne.i32','vbifcs.i32','vbifhs.i32','vbifcc.i32','vbiflo.i32','vbifmi.i32','vbifpl.i32','vbifvs.i32','vbifvc.i32','vbifhi.i32','vbifls.i32','vbifge.i32','vbiflt.i32','vbifgt.i32','vbifle.i32', + 'vbifeq.i64','vbifne.i64','vbifcs.i64','vbifhs.i64','vbifcc.i64','vbiflo.i64','vbifmi.i64','vbifpl.i64','vbifvs.i64','vbifvc.i64','vbifhi.i64','vbifls.i64','vbifge.i64','vbiflt.i64','vbifgt.i64','vbifle.i64', + 'vbifeq.s8','vbifne.s8','vbifcs.s8','vbifhs.s8','vbifcc.s8','vbiflo.s8','vbifmi.s8','vbifpl.s8','vbifvs.s8','vbifvc.s8','vbifhi.s8','vbifls.s8','vbifge.s8','vbiflt.s8','vbifgt.s8','vbifle.s8', + 'vbifeq.s16','vbifne.s16','vbifcs.s16','vbifhs.s16','vbifcc.s16','vbiflo.s16','vbifmi.s16','vbifpl.s16','vbifvs.s16','vbifvc.s16','vbifhi.s16','vbifls.s16','vbifge.s16','vbiflt.s16','vbifgt.s16','vbifle.s16', + 'vbifeq.s32','vbifne.s32','vbifcs.s32','vbifhs.s32','vbifcc.s32','vbiflo.s32','vbifmi.s32','vbifpl.s32','vbifvs.s32','vbifvc.s32','vbifhi.s32','vbifls.s32','vbifge.s32','vbiflt.s32','vbifgt.s32','vbifle.s32', + 'vbifeq.s64','vbifne.s64','vbifcs.s64','vbifhs.s64','vbifcc.s64','vbiflo.s64','vbifmi.s64','vbifpl.s64','vbifvs.s64','vbifvc.s64','vbifhi.s64','vbifls.s64','vbifge.s64','vbiflt.s64','vbifgt.s64','vbifle.s64', + 'vbifeq.u8','vbifne.u8','vbifcs.u8','vbifhs.u8','vbifcc.u8','vbiflo.u8','vbifmi.u8','vbifpl.u8','vbifvs.u8','vbifvc.u8','vbifhi.u8','vbifls.u8','vbifge.u8','vbiflt.u8','vbifgt.u8','vbifle.u8', + 'vbifeq.u16','vbifne.u16','vbifcs.u16','vbifhs.u16','vbifcc.u16','vbiflo.u16','vbifmi.u16','vbifpl.u16','vbifvs.u16','vbifvc.u16','vbifhi.u16','vbifls.u16','vbifge.u16','vbiflt.u16','vbifgt.u16','vbifle.u16', + 'vbifeq.u32','vbifne.u32','vbifcs.u32','vbifhs.u32','vbifcc.u32','vbiflo.u32','vbifmi.u32','vbifpl.u32','vbifvs.u32','vbifvc.u32','vbifhi.u32','vbifls.u32','vbifge.u32','vbiflt.u32','vbifgt.u32','vbifle.u32', + 'vbifeq.u64','vbifne.u64','vbifcs.u64','vbifhs.u64','vbifcc.u64','vbiflo.u64','vbifmi.u64','vbifpl.u64','vbifvs.u64','vbifvc.u64','vbifhi.u64','vbifls.u64','vbifge.u64','vbiflt.u64','vbifgt.u64','vbifle.u64', + 'vbifeq.f32','vbifne.f32','vbifcs.f32','vbifhs.f32','vbifcc.f32','vbiflo.f32','vbifmi.f32','vbifpl.f32','vbifvs.f32','vbifvc.f32','vbifhi.f32','vbifls.f32','vbifge.f32','vbiflt.f32','vbifgt.f32','vbifle.f32', + 'vbifeq.f64','vbifne.f64','vbifcs.f64','vbifhs.f64','vbifcc.f64','vbiflo.f64','vbifmi.f64','vbifpl.f64','vbifvs.f64','vbifvc.f64','vbifhi.f64','vbifls.f64','vbifge.f64','vbiflt.f64','vbifgt.f64','vbifle.f64', + + 'vbiteq','vbitne','vbitcs','vbiths','vbitcc','vbitlo','vbitmi','vbitpl','vbitvs','vbitvc','vbithi','vbitls','vbitge','vbitlt','vbitgt','vbitle', + 'vbiteq.i8','vbitne.i8','vbitcs.i8','vbiths.i8','vbitcc.i8','vbitlo.i8','vbitmi.i8','vbitpl.i8','vbitvs.i8','vbitvc.i8','vbithi.i8','vbitls.i8','vbitge.i8','vbitlt.i8','vbitgt.i8','vbitle.i8', + 'vbiteq.i16','vbitne.i16','vbitcs.i16','vbiths.i16','vbitcc.i16','vbitlo.i16','vbitmi.i16','vbitpl.i16','vbitvs.i16','vbitvc.i16','vbithi.i16','vbitls.i16','vbitge.i16','vbitlt.i16','vbitgt.i16','vbitle.i16', + 'vbiteq.i32','vbitne.i32','vbitcs.i32','vbiths.i32','vbitcc.i32','vbitlo.i32','vbitmi.i32','vbitpl.i32','vbitvs.i32','vbitvc.i32','vbithi.i32','vbitls.i32','vbitge.i32','vbitlt.i32','vbitgt.i32','vbitle.i32', + 'vbiteq.i64','vbitne.i64','vbitcs.i64','vbiths.i64','vbitcc.i64','vbitlo.i64','vbitmi.i64','vbitpl.i64','vbitvs.i64','vbitvc.i64','vbithi.i64','vbitls.i64','vbitge.i64','vbitlt.i64','vbitgt.i64','vbitle.i64', + 'vbiteq.s8','vbitne.s8','vbitcs.s8','vbiths.s8','vbitcc.s8','vbitlo.s8','vbitmi.s8','vbitpl.s8','vbitvs.s8','vbitvc.s8','vbithi.s8','vbitls.s8','vbitge.s8','vbitlt.s8','vbitgt.s8','vbitle.s8', + 'vbiteq.s16','vbitne.s16','vbitcs.s16','vbiths.s16','vbitcc.s16','vbitlo.s16','vbitmi.s16','vbitpl.s16','vbitvs.s16','vbitvc.s16','vbithi.s16','vbitls.s16','vbitge.s16','vbitlt.s16','vbitgt.s16','vbitle.s16', + 'vbiteq.s32','vbitne.s32','vbitcs.s32','vbiths.s32','vbitcc.s32','vbitlo.s32','vbitmi.s32','vbitpl.s32','vbitvs.s32','vbitvc.s32','vbithi.s32','vbitls.s32','vbitge.s32','vbitlt.s32','vbitgt.s32','vbitle.s32', + 'vbiteq.s64','vbitne.s64','vbitcs.s64','vbiths.s64','vbitcc.s64','vbitlo.s64','vbitmi.s64','vbitpl.s64','vbitvs.s64','vbitvc.s64','vbithi.s64','vbitls.s64','vbitge.s64','vbitlt.s64','vbitgt.s64','vbitle.s64', + 'vbiteq.u8','vbitne.u8','vbitcs.u8','vbiths.u8','vbitcc.u8','vbitlo.u8','vbitmi.u8','vbitpl.u8','vbitvs.u8','vbitvc.u8','vbithi.u8','vbitls.u8','vbitge.u8','vbitlt.u8','vbitgt.u8','vbitle.u8', + 'vbiteq.u16','vbitne.u16','vbitcs.u16','vbiths.u16','vbitcc.u16','vbitlo.u16','vbitmi.u16','vbitpl.u16','vbitvs.u16','vbitvc.u16','vbithi.u16','vbitls.u16','vbitge.u16','vbitlt.u16','vbitgt.u16','vbitle.u16', + 'vbiteq.u32','vbitne.u32','vbitcs.u32','vbiths.u32','vbitcc.u32','vbitlo.u32','vbitmi.u32','vbitpl.u32','vbitvs.u32','vbitvc.u32','vbithi.u32','vbitls.u32','vbitge.u32','vbitlt.u32','vbitgt.u32','vbitle.u32', + 'vbiteq.u64','vbitne.u64','vbitcs.u64','vbiths.u64','vbitcc.u64','vbitlo.u64','vbitmi.u64','vbitpl.u64','vbitvs.u64','vbitvc.u64','vbithi.u64','vbitls.u64','vbitge.u64','vbitlt.u64','vbitgt.u64','vbitle.u64', + 'vbiteq.f32','vbitne.f32','vbitcs.f32','vbiths.f32','vbitcc.f32','vbitlo.f32','vbitmi.f32','vbitpl.f32','vbitvs.f32','vbitvc.f32','vbithi.f32','vbitls.f32','vbitge.f32','vbitlt.f32','vbitgt.f32','vbitle.f32', + 'vbiteq.f64','vbitne.f64','vbitcs.f64','vbiths.f64','vbitcc.f64','vbitlo.f64','vbitmi.f64','vbitpl.f64','vbitvs.f64','vbitvc.f64','vbithi.f64','vbitls.f64','vbitge.f64','vbitlt.f64','vbitgt.f64','vbitle.f64', + + 'vbsleq','vbslne','vbslcs','vbslhs','vbslcc','vbsllo','vbslmi','vbslpl','vbslvs','vbslvc','vbslhi','vbslls','vbslge','vbsllt','vbslgt','vbslle', + 'vbsleq.i8','vbslne.i8','vbslcs.i8','vbslhs.i8','vbslcc.i8','vbsllo.i8','vbslmi.i8','vbslpl.i8','vbslvs.i8','vbslvc.i8','vbslhi.i8','vbslls.i8','vbslge.i8','vbsllt.i8','vbslgt.i8','vbslle.i8', + 'vbsleq.i16','vbslne.i16','vbslcs.i16','vbslhs.i16','vbslcc.i16','vbsllo.i16','vbslmi.i16','vbslpl.i16','vbslvs.i16','vbslvc.i16','vbslhi.i16','vbslls.i16','vbslge.i16','vbsllt.i16','vbslgt.i16','vbslle.i16', + 'vbsleq.i32','vbslne.i32','vbslcs.i32','vbslhs.i32','vbslcc.i32','vbsllo.i32','vbslmi.i32','vbslpl.i32','vbslvs.i32','vbslvc.i32','vbslhi.i32','vbslls.i32','vbslge.i32','vbsllt.i32','vbslgt.i32','vbslle.i32', + 'vbsleq.i64','vbslne.i64','vbslcs.i64','vbslhs.i64','vbslcc.i64','vbsllo.i64','vbslmi.i64','vbslpl.i64','vbslvs.i64','vbslvc.i64','vbslhi.i64','vbslls.i64','vbslge.i64','vbsllt.i64','vbslgt.i64','vbslle.i64', + 'vbsleq.s8','vbslne.s8','vbslcs.s8','vbslhs.s8','vbslcc.s8','vbsllo.s8','vbslmi.s8','vbslpl.s8','vbslvs.s8','vbslvc.s8','vbslhi.s8','vbslls.s8','vbslge.s8','vbsllt.s8','vbslgt.s8','vbslle.s8', + 'vbsleq.s16','vbslne.s16','vbslcs.s16','vbslhs.s16','vbslcc.s16','vbsllo.s16','vbslmi.s16','vbslpl.s16','vbslvs.s16','vbslvc.s16','vbslhi.s16','vbslls.s16','vbslge.s16','vbsllt.s16','vbslgt.s16','vbslle.s16', + 'vbsleq.s32','vbslne.s32','vbslcs.s32','vbslhs.s32','vbslcc.s32','vbsllo.s32','vbslmi.s32','vbslpl.s32','vbslvs.s32','vbslvc.s32','vbslhi.s32','vbslls.s32','vbslge.s32','vbsllt.s32','vbslgt.s32','vbslle.s32', + 'vbsleq.s64','vbslne.s64','vbslcs.s64','vbslhs.s64','vbslcc.s64','vbsllo.s64','vbslmi.s64','vbslpl.s64','vbslvs.s64','vbslvc.s64','vbslhi.s64','vbslls.s64','vbslge.s64','vbsllt.s64','vbslgt.s64','vbslle.s64', + 'vbsleq.u8','vbslne.u8','vbslcs.u8','vbslhs.u8','vbslcc.u8','vbsllo.u8','vbslmi.u8','vbslpl.u8','vbslvs.u8','vbslvc.u8','vbslhi.u8','vbslls.u8','vbslge.u8','vbsllt.u8','vbslgt.u8','vbslle.u8', + 'vbsleq.u16','vbslne.u16','vbslcs.u16','vbslhs.u16','vbslcc.u16','vbsllo.u16','vbslmi.u16','vbslpl.u16','vbslvs.u16','vbslvc.u16','vbslhi.u16','vbslls.u16','vbslge.u16','vbsllt.u16','vbslgt.u16','vbslle.u16', + 'vbsleq.u32','vbslne.u32','vbslcs.u32','vbslhs.u32','vbslcc.u32','vbsllo.u32','vbslmi.u32','vbslpl.u32','vbslvs.u32','vbslvc.u32','vbslhi.u32','vbslls.u32','vbslge.u32','vbsllt.u32','vbslgt.u32','vbslle.u32', + 'vbsleq.u64','vbslne.u64','vbslcs.u64','vbslhs.u64','vbslcc.u64','vbsllo.u64','vbslmi.u64','vbslpl.u64','vbslvs.u64','vbslvc.u64','vbslhi.u64','vbslls.u64','vbslge.u64','vbsllt.u64','vbslgt.u64','vbslle.u64', + 'vbsleq.f32','vbslne.f32','vbslcs.f32','vbslhs.f32','vbslcc.f32','vbsllo.f32','vbslmi.f32','vbslpl.f32','vbslvs.f32','vbslvc.f32','vbslhi.f32','vbslls.f32','vbslge.f32','vbsllt.f32','vbslgt.f32','vbslle.f32', + 'vbsleq.f64','vbslne.f64','vbslcs.f64','vbslhs.f64','vbslcc.f64','vbsllo.f64','vbslmi.f64','vbslpl.f64','vbslvs.f64','vbslvc.f64','vbslhi.f64','vbslls.f64','vbslge.f64','vbsllt.f64','vbslgt.f64','vbslle.f64', + + 'veoreq','veorne','veorcs','veorhs','veorcc','veorlo','veormi','veorpl','veorvs','veorvc','veorhi','veorls','veorge','veorlt','veorgt','veorle', + 'veoreq.i8','veorne.i8','veorcs.i8','veorhs.i8','veorcc.i8','veorlo.i8','veormi.i8','veorpl.i8','veorvs.i8','veorvc.i8','veorhi.i8','veorls.i8','veorge.i8','veorlt.i8','veorgt.i8','veorle.i8', + 'veoreq.i16','veorne.i16','veorcs.i16','veorhs.i16','veorcc.i16','veorlo.i16','veormi.i16','veorpl.i16','veorvs.i16','veorvc.i16','veorhi.i16','veorls.i16','veorge.i16','veorlt.i16','veorgt.i16','veorle.i16', + 'veoreq.i32','veorne.i32','veorcs.i32','veorhs.i32','veorcc.i32','veorlo.i32','veormi.i32','veorpl.i32','veorvs.i32','veorvc.i32','veorhi.i32','veorls.i32','veorge.i32','veorlt.i32','veorgt.i32','veorle.i32', + 'veoreq.i64','veorne.i64','veorcs.i64','veorhs.i64','veorcc.i64','veorlo.i64','veormi.i64','veorpl.i64','veorvs.i64','veorvc.i64','veorhi.i64','veorls.i64','veorge.i64','veorlt.i64','veorgt.i64','veorle.i64', + 'veoreq.s8','veorne.s8','veorcs.s8','veorhs.s8','veorcc.s8','veorlo.s8','veormi.s8','veorpl.s8','veorvs.s8','veorvc.s8','veorhi.s8','veorls.s8','veorge.s8','veorlt.s8','veorgt.s8','veorle.s8', + 'veoreq.s16','veorne.s16','veorcs.s16','veorhs.s16','veorcc.s16','veorlo.s16','veormi.s16','veorpl.s16','veorvs.s16','veorvc.s16','veorhi.s16','veorls.s16','veorge.s16','veorlt.s16','veorgt.s16','veorle.s16', + 'veoreq.s32','veorne.s32','veorcs.s32','veorhs.s32','veorcc.s32','veorlo.s32','veormi.s32','veorpl.s32','veorvs.s32','veorvc.s32','veorhi.s32','veorls.s32','veorge.s32','veorlt.s32','veorgt.s32','veorle.s32', + 'veoreq.s64','veorne.s64','veorcs.s64','veorhs.s64','veorcc.s64','veorlo.s64','veormi.s64','veorpl.s64','veorvs.s64','veorvc.s64','veorhi.s64','veorls.s64','veorge.s64','veorlt.s64','veorgt.s64','veorle.s64', + 'veoreq.u8','veorne.u8','veorcs.u8','veorhs.u8','veorcc.u8','veorlo.u8','veormi.u8','veorpl.u8','veorvs.u8','veorvc.u8','veorhi.u8','veorls.u8','veorge.u8','veorlt.u8','veorgt.u8','veorle.u8', + 'veoreq.u16','veorne.u16','veorcs.u16','veorhs.u16','veorcc.u16','veorlo.u16','veormi.u16','veorpl.u16','veorvs.u16','veorvc.u16','veorhi.u16','veorls.u16','veorge.u16','veorlt.u16','veorgt.u16','veorle.u16', + 'veoreq.u32','veorne.u32','veorcs.u32','veorhs.u32','veorcc.u32','veorlo.u32','veormi.u32','veorpl.u32','veorvs.u32','veorvc.u32','veorhi.u32','veorls.u32','veorge.u32','veorlt.u32','veorgt.u32','veorle.u32', + 'veoreq.u64','veorne.u64','veorcs.u64','veorhs.u64','veorcc.u64','veorlo.u64','veormi.u64','veorpl.u64','veorvs.u64','veorvc.u64','veorhi.u64','veorls.u64','veorge.u64','veorlt.u64','veorgt.u64','veorle.u64', + 'veoreq.f32','veorne.f32','veorcs.f32','veorhs.f32','veorcc.f32','veorlo.f32','veormi.f32','veorpl.f32','veorvs.f32','veorvc.f32','veorhi.f32','veorls.f32','veorge.f32','veorlt.f32','veorgt.f32','veorle.f32', + 'veoreq.f64','veorne.f64','veorcs.f64','veorhs.f64','veorcc.f64','veorlo.f64','veormi.f64','veorpl.f64','veorvs.f64','veorvc.f64','veorhi.f64','veorls.f64','veorge.f64','veorlt.f64','veorgt.f64','veorle.f64', + + 'vmoveq','vmovne','vmovcs','vmovhs','vmovcc','vmovlo','vmovmi','vmovpl','vmovvs','vmovvc','vmovhi','vmovls','vmovge','vmovlt','vmovgt','vmovle', + 'vmoveq.8','vmovne.8','vmovcs.8','vmovhs.8','vmovcc.8','vmovlo.8','vmovmi.8','vmovpl.8','vmovvs.8','vmovvc.8','vmovhi.8','vmovls.8','vmovge.8','vmovlt.8','vmovgt.8','vmovle.8', + 'vmoveq.16','vmovne.16','vmovcs.16','vmovhs.16','vmovcc.16','vmovlo.16','vmovmi.16','vmovpl.16','vmovvs.16','vmovvc.16','vmovhi.16','vmovls.16','vmovge.16','vmovlt.16','vmovgt.16','vmovle.16', + 'vmoveq.32','vmovne.32','vmovcs.32','vmovhs.32','vmovcc.32','vmovlo.32','vmovmi.32','vmovpl.32','vmovvs.32','vmovvc.32','vmovhi.32','vmovls.32','vmovge.32','vmovlt.32','vmovgt.32','vmovle.32', + 'vmoveq.i8','vmovne.i8','vmovcs.i8','vmovhs.i8','vmovcc.i8','vmovlo.i8','vmovmi.i8','vmovpl.i8','vmovvs.i8','vmovvc.i8','vmovhi.i8','vmovls.i8','vmovge.i8','vmovlt.i8','vmovgt.i8','vmovle.i8', + 'vmoveq.i16','vmovne.i16','vmovcs.i16','vmovhs.i16','vmovcc.i16','vmovlo.i16','vmovmi.i16','vmovpl.i16','vmovvs.i16','vmovvc.i16','vmovhi.i16','vmovls.i16','vmovge.i16','vmovlt.i16','vmovgt.i16','vmovle.i16', + 'vmoveq.i32','vmovne.i32','vmovcs.i32','vmovhs.i32','vmovcc.i32','vmovlo.i32','vmovmi.i32','vmovpl.i32','vmovvs.i32','vmovvc.i32','vmovhi.i32','vmovls.i32','vmovge.i32','vmovlt.i32','vmovgt.i32','vmovle.i32', + 'vmoveq.i64','vmovne.i64','vmovcs.i64','vmovhs.i64','vmovcc.i64','vmovlo.i64','vmovmi.i64','vmovpl.i64','vmovvs.i64','vmovvc.i64','vmovhi.i64','vmovls.i64','vmovge.i64','vmovlt.i64','vmovgt.i64','vmovle.i64', + 'vmoveq.f32','vmovne.f32','vmovcs.f32','vmovhs.f32','vmovcc.f32','vmovlo.f32','vmovmi.f32','vmovpl.f32','vmovvs.f32','vmovvc.f32','vmovhi.f32','vmovls.f32','vmovge.f32','vmovlt.f32','vmovgt.f32','vmovle.f32', + 'vmoveq.f64','vmovne.f64','vmovcs.f64','vmovhs.f64','vmovcc.f64','vmovlo.f64','vmovmi.f64','vmovpl.f64','vmovvs.f64','vmovvc.f64','vmovhi.f64','vmovls.f64','vmovge.f64','vmovlt.f64','vmovgt.f64','vmovle.f64', + + 'vmvneq','vmvnne','vmvncs','vmvnhs','vmvncc','vmvnlo','vmvnmi','vmvnpl','vmvnvs','vmvnvc','vmvnhi','vmvnls','vmvnge','vmvnlt','vmvngt','vmvnle', + 'vmvneq.s8','vmvnne.s8','vmvncs.s8','vmvnhs.s8','vmvncc.s8','vmvnlo.s8','vmvnmi.s8','vmvnpl.s8','vmvnvs.s8','vmvnvc.s8','vmvnhi.s8','vmvnls.s8','vmvnge.s8','vmvnlt.s8','vmvngt.s8','vmvnle.s8', + 'vmvneq.s16','vmvnne.s16','vmvncs.s16','vmvnhs.s16','vmvncc.s16','vmvnlo.s16','vmvnmi.s16','vmvnpl.s16','vmvnvs.s16','vmvnvc.s16','vmvnhi.s16','vmvnls.s16','vmvnge.s16','vmvnlt.s16','vmvngt.s16','vmvnle.s16', + 'vmvneq.s32','vmvnne.s32','vmvncs.s32','vmvnhs.s32','vmvncc.s32','vmvnlo.s32','vmvnmi.s32','vmvnpl.s32','vmvnvs.s32','vmvnvc.s32','vmvnhi.s32','vmvnls.s32','vmvnge.s32','vmvnlt.s32','vmvngt.s32','vmvnle.s32', + 'vmvneq.s64','vmvnne.s64','vmvncs.s64','vmvnhs.s64','vmvncc.s64','vmvnlo.s64','vmvnmi.s64','vmvnpl.s64','vmvnvs.s64','vmvnvc.s64','vmvnhi.s64','vmvnls.s64','vmvnge.s64','vmvnlt.s64','vmvngt.s64','vmvnle.s64', + 'vmvneq.u8','vmvnne.u8','vmvncs.u8','vmvnhs.u8','vmvncc.u8','vmvnlo.u8','vmvnmi.u8','vmvnpl.u8','vmvnvs.u8','vmvnvc.u8','vmvnhi.u8','vmvnls.u8','vmvnge.u8','vmvnlt.u8','vmvngt.u8','vmvnle.u8', + 'vmvneq.u16','vmvnne.u16','vmvncs.u16','vmvnhs.u16','vmvncc.u16','vmvnlo.u16','vmvnmi.u16','vmvnpl.u16','vmvnvs.u16','vmvnvc.u16','vmvnhi.u16','vmvnls.u16','vmvnge.u16','vmvnlt.u16','vmvngt.u16','vmvnle.u16', + 'vmvneq.u32','vmvnne.u32','vmvncs.u32','vmvnhs.u32','vmvncc.u32','vmvnlo.u32','vmvnmi.u32','vmvnpl.u32','vmvnvs.u32','vmvnvc.u32','vmvnhi.u32','vmvnls.u32','vmvnge.u32','vmvnlt.u32','vmvngt.u32','vmvnle.u32', + 'vmvneq.u64','vmvnne.u64','vmvncs.u64','vmvnhs.u64','vmvncc.u64','vmvnlo.u64','vmvnmi.u64','vmvnpl.u64','vmvnvs.u64','vmvnvc.u64','vmvnhi.u64','vmvnls.u64','vmvnge.u64','vmvnlt.u64','vmvngt.u64','vmvnle.u64', + 'vmvneq.i8','vmvnne.i8','vmvncs.i8','vmvnhs.i8','vmvncc.i8','vmvnlo.i8','vmvnmi.i8','vmvnpl.i8','vmvnvs.i8','vmvnvc.i8','vmvnhi.i8','vmvnls.i8','vmvnge.i8','vmvnlt.i8','vmvngt.i8','vmvnle.i8', + 'vmvneq.i16','vmvnne.i16','vmvncs.i16','vmvnhs.i16','vmvncc.i16','vmvnlo.i16','vmvnmi.i16','vmvnpl.i16','vmvnvs.i16','vmvnvc.i16','vmvnhi.i16','vmvnls.i16','vmvnge.i16','vmvnlt.i16','vmvngt.i16','vmvnle.i16', + 'vmvneq.i32','vmvnne.i32','vmvncs.i32','vmvnhs.i32','vmvncc.i32','vmvnlo.i32','vmvnmi.i32','vmvnpl.i32','vmvnvs.i32','vmvnvc.i32','vmvnhi.i32','vmvnls.i32','vmvnge.i32','vmvnlt.i32','vmvngt.i32','vmvnle.i32', + 'vmvneq.i64','vmvnne.i64','vmvncs.i64','vmvnhs.i64','vmvncc.i64','vmvnlo.i64','vmvnmi.i64','vmvnpl.i64','vmvnvs.i64','vmvnvc.i64','vmvnhi.i64','vmvnls.i64','vmvnge.i64','vmvnlt.i64','vmvngt.i64','vmvnle.i64', + 'vmvneq.f32','vmvnne.f32','vmvncs.f32','vmvnhs.f32','vmvncc.f32','vmvnlo.f32','vmvnmi.f32','vmvnpl.f32','vmvnvs.f32','vmvnvc.f32','vmvnhi.f32','vmvnls.f32','vmvnge.f32','vmvnlt.f32','vmvngt.f32','vmvnle.f32', + 'vmvneq.f64','vmvnne.f64','vmvncs.f64','vmvnhs.f64','vmvncc.f64','vmvnlo.f64','vmvnmi.f64','vmvnpl.f64','vmvnvs.f64','vmvnvc.f64','vmvnhi.f64','vmvnls.f64','vmvnge.f64','vmvnlt.f64','vmvngt.f64','vmvnle.f64', + + 'vorneq','vornne','vorncs','vornhs','vorncc','vornlo','vornmi','vornpl','vornvs','vornvc','vornhi','vornls','vornge','vornlt','vorngt','vornle', + 'vorneq.s8','vornne.s8','vorncs.s8','vornhs.s8','vorncc.s8','vornlo.s8','vornmi.s8','vornpl.s8','vornvs.s8','vornvc.s8','vornhi.s8','vornls.s8','vornge.s8','vornlt.s8','vorngt.s8','vornle.s8', + 'vorneq.s16','vornne.s16','vorncs.s16','vornhs.s16','vorncc.s16','vornlo.s16','vornmi.s16','vornpl.s16','vornvs.s16','vornvc.s16','vornhi.s16','vornls.s16','vornge.s16','vornlt.s16','vorngt.s16','vornle.s16', + 'vorneq.s32','vornne.s32','vorncs.s32','vornhs.s32','vorncc.s32','vornlo.s32','vornmi.s32','vornpl.s32','vornvs.s32','vornvc.s32','vornhi.s32','vornls.s32','vornge.s32','vornlt.s32','vorngt.s32','vornle.s32', + 'vorneq.s64','vornne.s64','vorncs.s64','vornhs.s64','vorncc.s64','vornlo.s64','vornmi.s64','vornpl.s64','vornvs.s64','vornvc.s64','vornhi.s64','vornls.s64','vornge.s64','vornlt.s64','vorngt.s64','vornle.s64', + 'vorneq.u8','vornne.u8','vorncs.u8','vornhs.u8','vorncc.u8','vornlo.u8','vornmi.u8','vornpl.u8','vornvs.u8','vornvc.u8','vornhi.u8','vornls.u8','vornge.u8','vornlt.u8','vorngt.u8','vornle.u8', + 'vorneq.u16','vornne.u16','vorncs.u16','vornhs.u16','vorncc.u16','vornlo.u16','vornmi.u16','vornpl.u16','vornvs.u16','vornvc.u16','vornhi.u16','vornls.u16','vornge.u16','vornlt.u16','vorngt.u16','vornle.u16', + 'vorneq.u32','vornne.u32','vorncs.u32','vornhs.u32','vorncc.u32','vornlo.u32','vornmi.u32','vornpl.u32','vornvs.u32','vornvc.u32','vornhi.u32','vornls.u32','vornge.u32','vornlt.u32','vorngt.u32','vornle.u32', + 'vorneq.u64','vornne.u64','vorncs.u64','vornhs.u64','vorncc.u64','vornlo.u64','vornmi.u64','vornpl.u64','vornvs.u64','vornvc.u64','vornhi.u64','vornls.u64','vornge.u64','vornlt.u64','vorngt.u64','vornle.u64', + 'vorneq.i8','vornne.i8','vorncs.i8','vornhs.i8','vorncc.i8','vornlo.i8','vornmi.i8','vornpl.i8','vornvs.i8','vornvc.i8','vornhi.i8','vornls.i8','vornge.i8','vornlt.i8','vorngt.i8','vornle.i8', + 'vorneq.i16','vornne.i16','vorncs.i16','vornhs.i16','vorncc.i16','vornlo.i16','vornmi.i16','vornpl.i16','vornvs.i16','vornvc.i16','vornhi.i16','vornls.i16','vornge.i16','vornlt.i16','vorngt.i16','vornle.i16', + 'vorneq.i32','vornne.i32','vorncs.i32','vornhs.i32','vorncc.i32','vornlo.i32','vornmi.i32','vornpl.i32','vornvs.i32','vornvc.i32','vornhi.i32','vornls.i32','vornge.i32','vornlt.i32','vorngt.i32','vornle.i32', + 'vorneq.i64','vornne.i64','vorncs.i64','vornhs.i64','vorncc.i64','vornlo.i64','vornmi.i64','vornpl.i64','vornvs.i64','vornvc.i64','vornhi.i64','vornls.i64','vornge.i64','vornlt.i64','vorngt.i64','vornle.i64', + 'vorneq.f32','vornne.f32','vorncs.f32','vornhs.f32','vorncc.f32','vornlo.f32','vornmi.f32','vornpl.f32','vornvs.f32','vornvc.f32','vornhi.f32','vornls.f32','vornge.f32','vornlt.f32','vorngt.f32','vornle.f32', + 'vorneq.f64','vornne.f64','vorncs.f64','vornhs.f64','vorncc.f64','vornlo.f64','vornmi.f64','vornpl.f64','vornvs.f64','vornvc.f64','vornhi.f64','vornls.f64','vornge.f64','vornlt.f64','vorngt.f64','vornle.f64', + + 'vorreq','vorrne','vorrcs','vorrhs','vorrcc','vorrlo','vorrmi','vorrpl','vorrvs','vorrvc','vorrhi','vorrls','vorrge','vorrlt','vorrgt','vorrle', + 'vorreq.s8','vorrne.s8','vorrcs.s8','vorrhs.s8','vorrcc.s8','vorrlo.s8','vorrmi.s8','vorrpl.s8','vorrvs.s8','vorrvc.s8','vorrhi.s8','vorrls.s8','vorrge.s8','vorrlt.s8','vorrgt.s8','vorrle.s8', + 'vorreq.s16','vorrne.s16','vorrcs.s16','vorrhs.s16','vorrcc.s16','vorrlo.s16','vorrmi.s16','vorrpl.s16','vorrvs.s16','vorrvc.s16','vorrhi.s16','vorrls.s16','vorrge.s16','vorrlt.s16','vorrgt.s16','vorrle.s16', + 'vorreq.s32','vorrne.s32','vorrcs.s32','vorrhs.s32','vorrcc.s32','vorrlo.s32','vorrmi.s32','vorrpl.s32','vorrvs.s32','vorrvc.s32','vorrhi.s32','vorrls.s32','vorrge.s32','vorrlt.s32','vorrgt.s32','vorrle.s32', + 'vorreq.s64','vorrne.s64','vorrcs.s64','vorrhs.s64','vorrcc.s64','vorrlo.s64','vorrmi.s64','vorrpl.s64','vorrvs.s64','vorrvc.s64','vorrhi.s64','vorrls.s64','vorrge.s64','vorrlt.s64','vorrgt.s64','vorrle.s64', + 'vorreq.u8','vorrne.u8','vorrcs.u8','vorrhs.u8','vorrcc.u8','vorrlo.u8','vorrmi.u8','vorrpl.u8','vorrvs.u8','vorrvc.u8','vorrhi.u8','vorrls.u8','vorrge.u8','vorrlt.u8','vorrgt.u8','vorrle.u8', + 'vorreq.u16','vorrne.u16','vorrcs.u16','vorrhs.u16','vorrcc.u16','vorrlo.u16','vorrmi.u16','vorrpl.u16','vorrvs.u16','vorrvc.u16','vorrhi.u16','vorrls.u16','vorrge.u16','vorrlt.u16','vorrgt.u16','vorrle.u16', + 'vorreq.u32','vorrne.u32','vorrcs.u32','vorrhs.u32','vorrcc.u32','vorrlo.u32','vorrmi.u32','vorrpl.u32','vorrvs.u32','vorrvc.u32','vorrhi.u32','vorrls.u32','vorrge.u32','vorrlt.u32','vorrgt.u32','vorrle.u32', + 'vorreq.u64','vorrne.u64','vorrcs.u64','vorrhs.u64','vorrcc.u64','vorrlo.u64','vorrmi.u64','vorrpl.u64','vorrvs.u64','vorrvc.u64','vorrhi.u64','vorrls.u64','vorrge.u64','vorrlt.u64','vorrgt.u64','vorrle.u64', + 'vorreq.i8','vorrne.i8','vorrcs.i8','vorrhs.i8','vorrcc.i8','vorrlo.i8','vorrmi.i8','vorrpl.i8','vorrvs.i8','vorrvc.i8','vorrhi.i8','vorrls.i8','vorrge.i8','vorrlt.i8','vorrgt.i8','vorrle.i8', + 'vorreq.i16','vorrne.i16','vorrcs.i16','vorrhs.i16','vorrcc.i16','vorrlo.i16','vorrmi.i16','vorrpl.i16','vorrvs.i16','vorrvc.i16','vorrhi.i16','vorrls.i16','vorrge.i16','vorrlt.i16','vorrgt.i16','vorrle.i16', + 'vorreq.i32','vorrne.i32','vorrcs.i32','vorrhs.i32','vorrcc.i32','vorrlo.i32','vorrmi.i32','vorrpl.i32','vorrvs.i32','vorrvc.i32','vorrhi.i32','vorrls.i32','vorrge.i32','vorrlt.i32','vorrgt.i32','vorrle.i32', + 'vorreq.i64','vorrne.i64','vorrcs.i64','vorrhs.i64','vorrcc.i64','vorrlo.i64','vorrmi.i64','vorrpl.i64','vorrvs.i64','vorrvc.i64','vorrhi.i64','vorrls.i64','vorrge.i64','vorrlt.i64','vorrgt.i64','vorrle.i64', + 'vorreq.f32','vorrne.f32','vorrcs.f32','vorrhs.f32','vorrcc.f32','vorrlo.f32','vorrmi.f32','vorrpl.f32','vorrvs.f32','vorrvc.f32','vorrhi.f32','vorrls.f32','vorrge.f32','vorrlt.f32','vorrgt.f32','vorrle.f32', + 'vorreq.f64','vorrne.f64','vorrcs.f64','vorrhs.f64','vorrcc.f64','vorrlo.f64','vorrmi.f64','vorrpl.f64','vorrvs.f64','vorrvc.f64','vorrhi.f64','vorrls.f64','vorrge.f64','vorrlt.f64','vorrgt.f64','vorrle.f64', + + 'vswpeq','vswpne','vswpcs','vswphs','vswpcc','vswplo','vswpmi','vswppl','vswpvs','vswpvc','vswphi','vswpls','vswpge','vswplt','vswpgt','vswple', + 'vswpeq.s8','vswpne.s8','vswpcs.s8','vswphs.s8','vswpcc.s8','vswplo.s8','vswpmi.s8','vswppl.s8','vswpvs.s8','vswpvc.s8','vswphi.s8','vswpls.s8','vswpge.s8','vswplt.s8','vswpgt.s8','vswple.s8', + 'vswpeq.s16','vswpne.s16','vswpcs.s16','vswphs.s16','vswpcc.s16','vswplo.s16','vswpmi.s16','vswppl.s16','vswpvs.s16','vswpvc.s16','vswphi.s16','vswpls.s16','vswpge.s16','vswplt.s16','vswpgt.s16','vswple.s16', + 'vswpeq.s32','vswpne.s32','vswpcs.s32','vswphs.s32','vswpcc.s32','vswplo.s32','vswpmi.s32','vswppl.s32','vswpvs.s32','vswpvc.s32','vswphi.s32','vswpls.s32','vswpge.s32','vswplt.s32','vswpgt.s32','vswple.s32', + 'vswpeq.s64','vswpne.s64','vswpcs.s64','vswphs.s64','vswpcc.s64','vswplo.s64','vswpmi.s64','vswppl.s64','vswpvs.s64','vswpvc.s64','vswphi.s64','vswpls.s64','vswpge.s64','vswplt.s64','vswpgt.s64','vswple.s64', + 'vswpeq.u8','vswpne.u8','vswpcs.u8','vswphs.u8','vswpcc.u8','vswplo.u8','vswpmi.u8','vswppl.u8','vswpvs.u8','vswpvc.u8','vswphi.u8','vswpls.u8','vswpge.u8','vswplt.u8','vswpgt.u8','vswple.u8', + 'vswpeq.u16','vswpne.u16','vswpcs.u16','vswphs.u16','vswpcc.u16','vswplo.u16','vswpmi.u16','vswppl.u16','vswpvs.u16','vswpvc.u16','vswphi.u16','vswpls.u16','vswpge.u16','vswplt.u16','vswpgt.u16','vswple.u16', + 'vswpeq.u32','vswpne.u32','vswpcs.u32','vswphs.u32','vswpcc.u32','vswplo.u32','vswpmi.u32','vswppl.u32','vswpvs.u32','vswpvc.u32','vswphi.u32','vswpls.u32','vswpge.u32','vswplt.u32','vswpgt.u32','vswple.u32', + 'vswpeq.u64','vswpne.u64','vswpcs.u64','vswphs.u64','vswpcc.u64','vswplo.u64','vswpmi.u64','vswppl.u64','vswpvs.u64','vswpvc.u64','vswphi.u64','vswpls.u64','vswpge.u64','vswplt.u64','vswpgt.u64','vswple.u64', + 'vswpeq.i8','vswpne.i8','vswpcs.i8','vswphs.i8','vswpcc.i8','vswplo.i8','vswpmi.i8','vswppl.i8','vswpvs.i8','vswpvc.i8','vswphi.i8','vswpls.i8','vswpge.i8','vswplt.i8','vswpgt.i8','vswple.i8', + 'vswpeq.i16','vswpne.i16','vswpcs.i16','vswphs.i16','vswpcc.i16','vswplo.i16','vswpmi.i16','vswppl.i16','vswpvs.i16','vswpvc.i16','vswphi.i16','vswpls.i16','vswpge.i16','vswplt.i16','vswpgt.i16','vswple.i16', + 'vswpeq.i32','vswpne.i32','vswpcs.i32','vswphs.i32','vswpcc.i32','vswplo.i32','vswpmi.i32','vswppl.i32','vswpvs.i32','vswpvc.i32','vswphi.i32','vswpls.i32','vswpge.i32','vswplt.i32','vswpgt.i32','vswple.i32', + 'vswpeq.i64','vswpne.i64','vswpcs.i64','vswphs.i64','vswpcc.i64','vswplo.i64','vswpmi.i64','vswppl.i64','vswpvs.i64','vswpvc.i64','vswphi.i64','vswpls.i64','vswpge.i64','vswplt.i64','vswpgt.i64','vswple.i64', + 'vswpeq.f32','vswpne.f32','vswpcs.f32','vswphs.f32','vswpcc.f32','vswplo.f32','vswpmi.f32','vswppl.f32','vswpvs.f32','vswpvc.f32','vswphi.f32','vswpls.f32','vswpge.f32','vswplt.f32','vswpgt.f32','vswple.f32', + 'vswpeq.f64','vswpne.f64','vswpcs.f64','vswphs.f64','vswpcc.f64','vswplo.f64','vswpmi.f64','vswppl.f64','vswpvs.f64','vswpvc.f64','vswphi.f64','vswpls.f64','vswpge.f64','vswplt.f64','vswpgt.f64','vswple.f64' + ), + /* Conditional NEON SIMD ARM Registers Interop Instructions */ + 29 => array( + 'vmrseq','vmrsne','vmrscs','vmrshs','vmrscc','vmrslo','vmrsmi','vmrspl','vmrsvs','vmrsvc','vmrshi','vmrsls','vmrsge','vmrslt','vmrsgt','vmrsle', + 'vmsreq','vmsrne','vmsrcs','vmsrhs','vmsrcc','vmsrlo','vmsrmi','vmsrpl','vmsrvs','vmsrvc','vmsrhi','vmsrls','vmsrge','vmsrlt','vmsrgt','vmsrle' + ), + /* Conditional NEON SIMD Bit/Byte-Level Instructions */ + 30 => array( + 'vcnteq.8','vcntne.8','vcntcs.8','vcnths.8','vcntcc.8','vcntlo.8','vcntmi.8','vcntpl.8','vcntvs.8','vcntvc.8','vcnthi.8','vcntls.8','vcntge.8','vcntlt.8','vcntgt.8','vcntle.8', + 'vdupeq.8','vdupne.8','vdupcs.8','vduphs.8','vdupcc.8','vduplo.8','vdupmi.8','vduppl.8','vdupvs.8','vdupvc.8','vduphi.8','vdupls.8','vdupge.8','vduplt.8','vdupgt.8','vduple.8', + + 'vdupeq.16','vdupne.16','vdupcs.16','vduphs.16','vdupcc.16','vduplo.16','vdupmi.16','vduppl.16','vdupvs.16','vdupvc.16','vduphi.16','vdupls.16','vdupge.16','vduplt.16','vdupgt.16','vduple.16', + 'vdupeq.32','vdupne.32','vdupcs.32','vduphs.32','vdupcc.32','vduplo.32','vdupmi.32','vduppl.32','vdupvs.32','vdupvc.32','vduphi.32','vdupls.32','vdupge.32','vduplt.32','vdupgt.32','vduple.32', + + 'vexteq.8','vextne.8','vextcs.8','vexths.8','vextcc.8','vextlo.8','vextmi.8','vextpl.8','vextvs.8','vextvc.8','vexthi.8','vextls.8','vextge.8','vextlt.8','vextgt.8','vextle.8', + 'vexteq.16','vextne.16','vextcs.16','vexths.16','vextcc.16','vextlo.16','vextmi.16','vextpl.16','vextvs.16','vextvc.16','vexthi.16','vextls.16','vextge.16','vextlt.16','vextgt.16','vextle.16', + + 'vexteq.32','vextne.32','vextcs.32','vexths.32','vextcc.32','vextlo.32','vextmi.32','vextpl.32','vextvs.32','vextvc.32','vexthi.32','vextls.32','vextge.32','vextlt.32','vextgt.32','vextle.32', + 'vexteq.64','vextne.64','vextcs.64','vexths.64','vextcc.64','vextlo.64','vextmi.64','vextpl.64','vextvs.64','vextvc.64','vexthi.64','vextls.64','vextge.64','vextlt.64','vextgt.64','vextle.64', + + 'vrev16eq.8','vrev16ne.8','vrev16cs.8','vrev16hs.8','vrev16cc.8','vrev16lo.8','vrev16mi.8','vrev16pl.8','vrev16vs.8','vrev16vc.8','vrev16hi.8','vrev16ls.8','vrev16ge.8','vrev16lt.8','vrev16gt.8','vrev16le.8', + 'vrev32eq.8','vrev32ne.8','vrev32cs.8','vrev32hs.8','vrev32cc.8','vrev32lo.8','vrev32mi.8','vrev32pl.8','vrev32vs.8','vrev32vc.8','vrev32hi.8','vrev32ls.8','vrev32ge.8','vrev32lt.8','vrev32gt.8','vrev32le.8', + 'vrev32eq.16','vrev32ne.16','vrev32cs.16','vrev32hs.16','vrev32cc.16','vrev32lo.16','vrev32mi.16','vrev32pl.16','vrev32vs.16','vrev32vc.16','vrev32hi.16','vrev32ls.16','vrev32ge.16','vrev32lt.16','vrev32gt.16','vrev32le.16', + 'vrev64eq.8','vrev64ne.8','vrev64cs.8','vrev64hs.8','vrev64cc.8','vrev64lo.8','vrev64mi.8','vrev64pl.8','vrev64vs.8','vrev64vc.8','vrev64hi.8','vrev64ls.8','vrev64ge.8','vrev64lt.8','vrev64gt.8','vrev64le.8', + 'vrev64eq.16','vrev64ne.16','vrev64cs.16','vrev64hs.16','vrev64cc.16','vrev64lo.16','vrev64mi.16','vrev64pl.16','vrev64vs.16','vrev64vc.16','vrev64hi.16','vrev64ls.16','vrev64ge.16','vrev64lt.16','vrev64gt.16','vrev64le.16', + 'vrev64eq.32','vrev64ne.32','vrev64cs.32','vrev64hs.32','vrev64cc.32','vrev64lo.32','vrev64mi.32','vrev64pl.32','vrev64vs.32','vrev64vc.32','vrev64hi.32','vrev64ls.32','vrev64ge.32','vrev64lt.32','vrev64gt.32','vrev64le.32', + + 'vslieq.8','vsline.8','vslics.8','vslihs.8','vslicc.8','vslilo.8','vslimi.8','vslipl.8','vslivs.8','vslivc.8','vslihi.8','vslils.8','vslige.8','vslilt.8','vsligt.8','vslile.8', + 'vslieq.16','vsline.16','vslics.16','vslihs.16','vslicc.16','vslilo.16','vslimi.16','vslipl.16','vslivs.16','vslivc.16','vslihi.16','vslils.16','vslige.16','vslilt.16','vsligt.16','vslile.16', + 'vslieq.32','vsline.32','vslics.32','vslihs.32','vslicc.32','vslilo.32','vslimi.32','vslipl.32','vslivs.32','vslivc.32','vslihi.32','vslils.32','vslige.32','vslilt.32','vsligt.32','vslile.32', + 'vslieq.64','vsline.64','vslics.64','vslihs.64','vslicc.64','vslilo.64','vslimi.64','vslipl.64','vslivs.64','vslivc.64','vslihi.64','vslils.64','vslige.64','vslilt.64','vsligt.64','vslile.64', + + 'vsrieq.8','vsrine.8','vsrics.8','vsrihs.8','vsricc.8','vsrilo.8','vsrimi.8','vsripl.8','vsrivs.8','vsrivc.8','vsrihi.8','vsrils.8','vsrige.8','vsrilt.8','vsrigt.8','vsrile.8', + 'vsrieq.16','vsrine.16','vsrics.16','vsrihs.16','vsricc.16','vsrilo.16','vsrimi.16','vsripl.16','vsrivs.16','vsrivc.16','vsrihi.16','vsrils.16','vsrige.16','vsrilt.16','vsrigt.16','vsrile.16', + 'vsrieq.32','vsrine.32','vsrics.32','vsrihs.32','vsricc.32','vsrilo.32','vsrimi.32','vsripl.32','vsrivs.32','vsrivc.32','vsrihi.32','vsrils.32','vsrige.32','vsrilt.32','vsrigt.32','vsrile.32', + 'vsrieq.64','vsrine.64','vsrics.64','vsrihs.64','vsricc.64','vsrilo.64','vsrimi.64','vsripl.64','vsrivs.64','vsrivc.64','vsrihi.64','vsrils.64','vsrige.64','vsrilt.64','vsrigt.64','vsrile.64', + + 'vtbleq.8','vtblne.8','vtblcs.8','vtblhs.8','vtblcc.8','vtbllo.8','vtblmi.8','vtblpl.8','vtblvs.8','vtblvc.8','vtblhi.8','vtblls.8','vtblge.8','vtbllt.8','vtblgt.8','vtblle.8', + + 'vtbxeq','vtbxne','vtbxcs','vtbxhs','vtbxcc','vtbxlo','vtbxmi','vtbxpl','vtbxvs','vtbxvc','vtbxhi','vtbxls','vtbxge','vtbxlt','vtbxgt','vtbxle', + + 'vtrneq.8','vtrnne.8','vtrncs.8','vtrnhs.8','vtrncc.8','vtrnlo.8','vtrnmi.8','vtrnpl.8','vtrnvs.8','vtrnvc.8','vtrnhi.8','vtrnls.8','vtrnge.8','vtrnlt.8','vtrngt.8','vtrnle.8', + 'vtrneq.16','vtrnne.16','vtrncs.16','vtrnhs.16','vtrncc.16','vtrnlo.16','vtrnmi.16','vtrnpl.16','vtrnvs.16','vtrnvc.16','vtrnhi.16','vtrnls.16','vtrnge.16','vtrnlt.16','vtrngt.16','vtrnle.16', + 'vtrneq.32','vtrnne.32','vtrncs.32','vtrnhs.32','vtrncc.32','vtrnlo.32','vtrnmi.32','vtrnpl.32','vtrnvs.32','vtrnvc.32','vtrnhi.32','vtrnls.32','vtrnge.32','vtrnlt.32','vtrngt.32','vtrnle.32', + + 'vtsteq.8','vtstne.8','vtstcs.8','vtsths.8','vtstcc.8','vtstlo.8','vtstmi.8','vtstpl.8','vtstvs.8','vtstvc.8','vtsthi.8','vtstls.8','vtstge.8','vtstlt.8','vtstgt.8','vtstle.8', + 'vtsteq.16','vtstne.16','vtstcs.16','vtsths.16','vtstcc.16','vtstlo.16','vtstmi.16','vtstpl.16','vtstvs.16','vtstvc.16','vtsthi.16','vtstls.16','vtstge.16','vtstlt.16','vtstgt.16','vtstle.16', + 'vtsteq.32','vtstne.32','vtstcs.32','vtsths.32','vtstcc.32','vtstlo.32','vtstmi.32','vtstpl.32','vtstvs.32','vtstvc.32','vtsthi.32','vtstls.32','vtstge.32','vtstlt.32','vtstgt.32','vtstle.32', + + 'vuzpeq.8','vuzpne.8','vuzpcs.8','vuzphs.8','vuzpcc.8','vuzplo.8','vuzpmi.8','vuzppl.8','vuzpvs.8','vuzpvc.8','vuzphi.8','vuzpls.8','vuzpge.8','vuzplt.8','vuzpgt.8','vuzple.8', + 'vuzpeq.16','vuzpne.16','vuzpcs.16','vuzphs.16','vuzpcc.16','vuzplo.16','vuzpmi.16','vuzppl.16','vuzpvs.16','vuzpvc.16','vuzphi.16','vuzpls.16','vuzpge.16','vuzplt.16','vuzpgt.16','vuzple.16', + 'vuzpeq.32','vuzpne.32','vuzpcs.32','vuzphs.32','vuzpcc.32','vuzplo.32','vuzpmi.32','vuzppl.32','vuzpvs.32','vuzpvc.32','vuzphi.32','vuzpls.32','vuzpge.32','vuzplt.32','vuzpgt.32','vuzple.32', + + 'vzipeq.8','vzipne.8','vzipcs.8','vziphs.8','vzipcc.8','vziplo.8','vzipmi.8','vzippl.8','vzipvs.8','vzipvc.8','vziphi.8','vzipls.8','vzipge.8','vziplt.8','vzipgt.8','vziple.8', + 'vzipeq.16','vzipne.16','vzipcs.16','vziphs.16','vzipcc.16','vziplo.16','vzipmi.16','vzippl.16','vzipvs.16','vzipvc.16','vziphi.16','vzipls.16','vzipge.16','vziplt.16','vzipgt.16','vziple.16', + 'vzipeq.32','vzipne.32','vzipcs.32','vziphs.32','vzipcc.32','vziplo.32','vzipmi.32','vzippl.32','vzipvs.32','vzipvc.32','vziphi.32','vzipls.32','vzipge.32','vziplt.32','vzipgt.32','vziple.32', + + 'vmulleq.p8','vmullne.p8','vmullcs.p8','vmullhs.p8','vmullcc.p8','vmulllo.p8','vmullmi.p8','vmullpl.p8','vmullvs.p8','vmullvc.p8','vmullhi.p8','vmullls.p8','vmullge.p8','vmulllt.p8','vmullgt.p8','vmullle.p8' + ), + /* Conditional NEON SIMD Universal Integer Instructions */ + 31 => array( + 'vaddeq.i8','vaddne.i8','vaddcs.i8','vaddhs.i8','vaddcc.i8','vaddlo.i8','vaddmi.i8','vaddpl.i8','vaddvs.i8','vaddvc.i8','vaddhi.i8','vaddls.i8','vaddge.i8','vaddlt.i8','vaddgt.i8','vaddle.i8', + 'vaddeq.i16','vaddne.i16','vaddcs.i16','vaddhs.i16','vaddcc.i16','vaddlo.i16','vaddmi.i16','vaddpl.i16','vaddvs.i16','vaddvc.i16','vaddhi.i16','vaddls.i16','vaddge.i16','vaddlt.i16','vaddgt.i16','vaddle.i16', + 'vaddeq.i32','vaddne.i32','vaddcs.i32','vaddhs.i32','vaddcc.i32','vaddlo.i32','vaddmi.i32','vaddpl.i32','vaddvs.i32','vaddvc.i32','vaddhi.i32','vaddls.i32','vaddge.i32','vaddlt.i32','vaddgt.i32','vaddle.i32', + 'vaddeq.i64','vaddne.i64','vaddcs.i64','vaddhs.i64','vaddcc.i64','vaddlo.i64','vaddmi.i64','vaddpl.i64','vaddvs.i64','vaddvc.i64','vaddhi.i64','vaddls.i64','vaddge.i64','vaddlt.i64','vaddgt.i64','vaddle.i64', + + 'vsubeq.i8','vsubne.i8','vsubcs.i8','vsubhs.i8','vsubcc.i8','vsublo.i8','vsubmi.i8','vsubpl.i8','vsubvs.i8','vsubvc.i8','vsubhi.i8','vsubls.i8','vsubge.i8','vsublt.i8','vsubgt.i8','vsuble.i8', + 'vsubeq.i16','vsubne.i16','vsubcs.i16','vsubhs.i16','vsubcc.i16','vsublo.i16','vsubmi.i16','vsubpl.i16','vsubvs.i16','vsubvc.i16','vsubhi.i16','vsubls.i16','vsubge.i16','vsublt.i16','vsubgt.i16','vsuble.i16', + 'vsubeq.i32','vsubne.i32','vsubcs.i32','vsubhs.i32','vsubcc.i32','vsublo.i32','vsubmi.i32','vsubpl.i32','vsubvs.i32','vsubvc.i32','vsubhi.i32','vsubls.i32','vsubge.i32','vsublt.i32','vsubgt.i32','vsuble.i32', + 'vsubeq.i64','vsubne.i64','vsubcs.i64','vsubhs.i64','vsubcc.i64','vsublo.i64','vsubmi.i64','vsubpl.i64','vsubvs.i64','vsubvc.i64','vsubhi.i64','vsubls.i64','vsubge.i64','vsublt.i64','vsubgt.i64','vsuble.i64', + + 'vaddhneq.i16','vaddhnne.i16','vaddhncs.i16','vaddhnhs.i16','vaddhncc.i16','vaddhnlo.i16','vaddhnmi.i16','vaddhnpl.i16','vaddhnvs.i16','vaddhnvc.i16','vaddhnhi.i16','vaddhnls.i16','vaddhnge.i16','vaddhnlt.i16','vaddhngt.i16','vaddhnle.i16', + 'vaddhneq.i32','vaddhnne.i32','vaddhncs.i32','vaddhnhs.i32','vaddhncc.i32','vaddhnlo.i32','vaddhnmi.i32','vaddhnpl.i32','vaddhnvs.i32','vaddhnvc.i32','vaddhnhi.i32','vaddhnls.i32','vaddhnge.i32','vaddhnlt.i32','vaddhngt.i32','vaddhnle.i32', + 'vaddhneq.i64','vaddhnne.i64','vaddhncs.i64','vaddhnhs.i64','vaddhncc.i64','vaddhnlo.i64','vaddhnmi.i64','vaddhnpl.i64','vaddhnvs.i64','vaddhnvc.i64','vaddhnhi.i64','vaddhnls.i64','vaddhnge.i64','vaddhnlt.i64','vaddhngt.i64','vaddhnle.i64', + + 'vsubhneq.i16','vsubhnne.i16','vsubhncs.i16','vsubhnhs.i16','vsubhncc.i16','vsubhnlo.i16','vsubhnmi.i16','vsubhnpl.i16','vsubhnvs.i16','vsubhnvc.i16','vsubhnhi.i16','vsubhnls.i16','vsubhnge.i16','vsubhnlt.i16','vsubhngt.i16','vsubhnle.i16', + 'vsubhneq.i32','vsubhnne.i32','vsubhncs.i32','vsubhnhs.i32','vsubhncc.i32','vsubhnlo.i32','vsubhnmi.i32','vsubhnpl.i32','vsubhnvs.i32','vsubhnvc.i32','vsubhnhi.i32','vsubhnls.i32','vsubhnge.i32','vsubhnlt.i32','vsubhngt.i32','vsubhnle.i32', + 'vsubhneq.i64','vsubhnne.i64','vsubhncs.i64','vsubhnhs.i64','vsubhncc.i64','vsubhnlo.i64','vsubhnmi.i64','vsubhnpl.i64','vsubhnvs.i64','vsubhnvc.i64','vsubhnhi.i64','vsubhnls.i64','vsubhnge.i64','vsubhnlt.i64','vsubhngt.i64','vsubhnle.i64', + + 'vraddhneq.i16','vraddhnne.i16','vraddhncs.i16','vraddhnhs.i16','vraddhncc.i16','vraddhnlo.i16','vraddhnmi.i16','vraddhnpl.i16','vraddhnvs.i16','vraddhnvc.i16','vraddhnhi.i16','vraddhnls.i16','vraddhnge.i16','vraddhnlt.i16','vraddhngt.i16','vraddhnle.i16', + 'vraddhneq.i32','vraddhnne.i32','vraddhncs.i32','vraddhnhs.i32','vraddhncc.i32','vraddhnlo.i32','vraddhnmi.i32','vraddhnpl.i32','vraddhnvs.i32','vraddhnvc.i32','vraddhnhi.i32','vraddhnls.i32','vraddhnge.i32','vraddhnlt.i32','vraddhngt.i32','vraddhnle.i32', + 'vraddhneq.i64','vraddhnne.i64','vraddhncs.i64','vraddhnhs.i64','vraddhncc.i64','vraddhnlo.i64','vraddhnmi.i64','vraddhnpl.i64','vraddhnvs.i64','vraddhnvc.i64','vraddhnhi.i64','vraddhnls.i64','vraddhnge.i64','vraddhnlt.i64','vraddhngt.i64','vraddhnle.i64', + + 'vrsubhneq.i16','vrsubhnne.i16','vrsubhncs.i16','vrsubhnhs.i16','vrsubhncc.i16','vrsubhnlo.i16','vrsubhnmi.i16','vrsubhnpl.i16','vrsubhnvs.i16','vrsubhnvc.i16','vrsubhnhi.i16','vrsubhnls.i16','vrsubhnge.i16','vrsubhnlt.i16','vrsubhngt.i16','vrsubhnle.i16', + 'vrsubhneq.i32','vrsubhnne.i32','vrsubhncs.i32','vrsubhnhs.i32','vrsubhncc.i32','vrsubhnlo.i32','vrsubhnmi.i32','vrsubhnpl.i32','vrsubhnvs.i32','vrsubhnvc.i32','vrsubhnhi.i32','vrsubhnls.i32','vrsubhnge.i32','vrsubhnlt.i32','vrsubhngt.i32','vrsubhnle.i32', + 'vrsubhneq.i64','vrsubhnne.i64','vrsubhncs.i64','vrsubhnhs.i64','vrsubhncc.i64','vrsubhnlo.i64','vrsubhnmi.i64','vrsubhnpl.i64','vrsubhnvs.i64','vrsubhnvc.i64','vrsubhnhi.i64','vrsubhnls.i64','vrsubhnge.i64','vrsubhnlt.i64','vrsubhngt.i64','vrsubhnle.i64', + + 'vpaddeq.i8','vpaddne.i8','vpaddcs.i8','vpaddhs.i8','vpaddcc.i8','vpaddlo.i8','vpaddmi.i8','vpaddpl.i8','vpaddvs.i8','vpaddvc.i8','vpaddhi.i8','vpaddls.i8','vpaddge.i8','vpaddlt.i8','vpaddgt.i8','vpaddle.i8', + 'vpaddeq.i16','vpaddne.i16','vpaddcs.i16','vpaddhs.i16','vpaddcc.i16','vpaddlo.i16','vpaddmi.i16','vpaddpl.i16','vpaddvs.i16','vpaddvc.i16','vpaddhi.i16','vpaddls.i16','vpaddge.i16','vpaddlt.i16','vpaddgt.i16','vpaddle.i16', + 'vpaddeq.i32','vpaddne.i32','vpaddcs.i32','vpaddhs.i32','vpaddcc.i32','vpaddlo.i32','vpaddmi.i32','vpaddpl.i32','vpaddvs.i32','vpaddvc.i32','vpaddhi.i32','vpaddls.i32','vpaddge.i32','vpaddlt.i32','vpaddgt.i32','vpaddle.i32', + + 'vceqeq.i8','vceqne.i8','vceqcs.i8','vceqhs.i8','vceqcc.i8','vceqlo.i8','vceqmi.i8','vceqpl.i8','vceqvs.i8','vceqvc.i8','vceqhi.i8','vceqls.i8','vceqge.i8','vceqlt.i8','vceqgt.i8','vceqle.i8', + 'vceqeq.i16','vceqne.i16','vceqcs.i16','vceqhs.i16','vceqcc.i16','vceqlo.i16','vceqmi.i16','vceqpl.i16','vceqvs.i16','vceqvc.i16','vceqhi.i16','vceqls.i16','vceqge.i16','vceqlt.i16','vceqgt.i16','vceqle.i16', + 'vceqeq.i32','vceqne.i32','vceqcs.i32','vceqhs.i32','vceqcc.i32','vceqlo.i32','vceqmi.i32','vceqpl.i32','vceqvs.i32','vceqvc.i32','vceqhi.i32','vceqls.i32','vceqge.i32','vceqlt.i32','vceqgt.i32','vceqle.i32', + + 'vclzeq.i8','vclzne.i8','vclzcs.i8','vclzhs.i8','vclzcc.i8','vclzlo.i8','vclzmi.i8','vclzpl.i8','vclzvs.i8','vclzvc.i8','vclzhi.i8','vclzls.i8','vclzge.i8','vclzlt.i8','vclzgt.i8','vclzle.i8', + 'vclzeq.i16','vclzne.i16','vclzcs.i16','vclzhs.i16','vclzcc.i16','vclzlo.i16','vclzmi.i16','vclzpl.i16','vclzvs.i16','vclzvc.i16','vclzhi.i16','vclzls.i16','vclzge.i16','vclzlt.i16','vclzgt.i16','vclzle.i16', + 'vclzeq.i32','vclzne.i32','vclzcs.i32','vclzhs.i32','vclzcc.i32','vclzlo.i32','vclzmi.i32','vclzpl.i32','vclzvs.i32','vclzvc.i32','vclzhi.i32','vclzls.i32','vclzge.i32','vclzlt.i32','vclzgt.i32','vclzle.i32', + + 'vmovneq.i16','vmovnne.i16','vmovncs.i16','vmovnhs.i16','vmovncc.i16','vmovnlo.i16','vmovnmi.i16','vmovnpl.i16','vmovnvs.i16','vmovnvc.i16','vmovnhi.i16','vmovnls.i16','vmovnge.i16','vmovnlt.i16','vmovngt.i16','vmovnle.i16', + 'vmovneq.i32','vmovnne.i32','vmovncs.i32','vmovnhs.i32','vmovncc.i32','vmovnlo.i32','vmovnmi.i32','vmovnpl.i32','vmovnvs.i32','vmovnvc.i32','vmovnhi.i32','vmovnls.i32','vmovnge.i32','vmovnlt.i32','vmovngt.i32','vmovnle.i32', + 'vmovneq.i64','vmovnne.i64','vmovncs.i64','vmovnhs.i64','vmovncc.i64','vmovnlo.i64','vmovnmi.i64','vmovnpl.i64','vmovnvs.i64','vmovnvc.i64','vmovnhi.i64','vmovnls.i64','vmovnge.i64','vmovnlt.i64','vmovngt.i64','vmovnle.i64', + + 'vmlaeq.s8','vmlane.s8','vmlacs.s8','vmlahs.s8','vmlacc.s8','vmlalo.s8','vmlami.s8','vmlapl.s8','vmlavs.s8','vmlavc.s8','vmlahi.s8','vmlals.s8','vmlage.s8','vmlalt.s8','vmlagt.s8','vmlale.s8', + 'vmlaeq.s16','vmlane.s16','vmlacs.s16','vmlahs.s16','vmlacc.s16','vmlalo.s16','vmlami.s16','vmlapl.s16','vmlavs.s16','vmlavc.s16','vmlahi.s16','vmlals.s16','vmlage.s16','vmlalt.s16','vmlagt.s16','vmlale.s16', + 'vmlaeq.s32','vmlane.s32','vmlacs.s32','vmlahs.s32','vmlacc.s32','vmlalo.s32','vmlami.s32','vmlapl.s32','vmlavs.s32','vmlavc.s32','vmlahi.s32','vmlals.s32','vmlage.s32','vmlalt.s32','vmlagt.s32','vmlale.s32', + 'vmlaeq.u8','vmlane.u8','vmlacs.u8','vmlahs.u8','vmlacc.u8','vmlalo.u8','vmlami.u8','vmlapl.u8','vmlavs.u8','vmlavc.u8','vmlahi.u8','vmlals.u8','vmlage.u8','vmlalt.u8','vmlagt.u8','vmlale.u8', + 'vmlaeq.u16','vmlane.u16','vmlacs.u16','vmlahs.u16','vmlacc.u16','vmlalo.u16','vmlami.u16','vmlapl.u16','vmlavs.u16','vmlavc.u16','vmlahi.u16','vmlals.u16','vmlage.u16','vmlalt.u16','vmlagt.u16','vmlale.u16', + 'vmlaeq.u32','vmlane.u32','vmlacs.u32','vmlahs.u32','vmlacc.u32','vmlalo.u32','vmlami.u32','vmlapl.u32','vmlavs.u32','vmlavc.u32','vmlahi.u32','vmlals.u32','vmlage.u32','vmlalt.u32','vmlagt.u32','vmlale.u32', + 'vmlaeq.i8','vmlane.i8','vmlacs.i8','vmlahs.i8','vmlacc.i8','vmlalo.i8','vmlami.i8','vmlapl.i8','vmlavs.i8','vmlavc.i8','vmlahi.i8','vmlals.i8','vmlage.i8','vmlalt.i8','vmlagt.i8','vmlale.i8', + 'vmlaeq.i16','vmlane.i16','vmlacs.i16','vmlahs.i16','vmlacc.i16','vmlalo.i16','vmlami.i16','vmlapl.i16','vmlavs.i16','vmlavc.i16','vmlahi.i16','vmlals.i16','vmlage.i16','vmlalt.i16','vmlagt.i16','vmlale.i16', + 'vmlaeq.i32','vmlane.i32','vmlacs.i32','vmlahs.i32','vmlacc.i32','vmlalo.i32','vmlami.i32','vmlapl.i32','vmlavs.i32','vmlavc.i32','vmlahi.i32','vmlals.i32','vmlage.i32','vmlalt.i32','vmlagt.i32','vmlale.i32', + + 'vmlseq.s8','vmlsne.s8','vmlscs.s8','vmlshs.s8','vmlscc.s8','vmlslo.s8','vmlsmi.s8','vmlspl.s8','vmlsvs.s8','vmlsvc.s8','vmlshi.s8','vmlsls.s8','vmlsge.s8','vmlslt.s8','vmlsgt.s8','vmlsle.s8', + 'vmlseq.s16','vmlsne.s16','vmlscs.s16','vmlshs.s16','vmlscc.s16','vmlslo.s16','vmlsmi.s16','vmlspl.s16','vmlsvs.s16','vmlsvc.s16','vmlshi.s16','vmlsls.s16','vmlsge.s16','vmlslt.s16','vmlsgt.s16','vmlsle.s16', + 'vmlseq.s32','vmlsne.s32','vmlscs.s32','vmlshs.s32','vmlscc.s32','vmlslo.s32','vmlsmi.s32','vmlspl.s32','vmlsvs.s32','vmlsvc.s32','vmlshi.s32','vmlsls.s32','vmlsge.s32','vmlslt.s32','vmlsgt.s32','vmlsle.s32', + 'vmlseq.u8','vmlsne.u8','vmlscs.u8','vmlshs.u8','vmlscc.u8','vmlslo.u8','vmlsmi.u8','vmlspl.u8','vmlsvs.u8','vmlsvc.u8','vmlshi.u8','vmlsls.u8','vmlsge.u8','vmlslt.u8','vmlsgt.u8','vmlsle.u8', + 'vmlseq.u16','vmlsne.u16','vmlscs.u16','vmlshs.u16','vmlscc.u16','vmlslo.u16','vmlsmi.u16','vmlspl.u16','vmlsvs.u16','vmlsvc.u16','vmlshi.u16','vmlsls.u16','vmlsge.u16','vmlslt.u16','vmlsgt.u16','vmlsle.u16', + 'vmlseq.u32','vmlsne.u32','vmlscs.u32','vmlshs.u32','vmlscc.u32','vmlslo.u32','vmlsmi.u32','vmlspl.u32','vmlsvs.u32','vmlsvc.u32','vmlshi.u32','vmlsls.u32','vmlsge.u32','vmlslt.u32','vmlsgt.u32','vmlsle.u32', + 'vmlseq.i8','vmlsne.i8','vmlscs.i8','vmlshs.i8','vmlscc.i8','vmlslo.i8','vmlsmi.i8','vmlspl.i8','vmlsvs.i8','vmlsvc.i8','vmlshi.i8','vmlsls.i8','vmlsge.i8','vmlslt.i8','vmlsgt.i8','vmlsle.i8', + 'vmlseq.i16','vmlsne.i16','vmlscs.i16','vmlshs.i16','vmlscc.i16','vmlslo.i16','vmlsmi.i16','vmlspl.i16','vmlsvs.i16','vmlsvc.i16','vmlshi.i16','vmlsls.i16','vmlsge.i16','vmlslt.i16','vmlsgt.i16','vmlsle.i16', + 'vmlseq.i32','vmlsne.i32','vmlscs.i32','vmlshs.i32','vmlscc.i32','vmlslo.i32','vmlsmi.i32','vmlspl.i32','vmlsvs.i32','vmlsvc.i32','vmlshi.i32','vmlsls.i32','vmlsge.i32','vmlslt.i32','vmlsgt.i32','vmlsle.i32', + + 'vmuleq.s8','vmulne.s8','vmulcs.s8','vmulhs.s8','vmulcc.s8','vmullo.s8','vmulmi.s8','vmulpl.s8','vmulvs.s8','vmulvc.s8','vmulhi.s8','vmulls.s8','vmulge.s8','vmullt.s8','vmulgt.s8','vmulle.s8', + 'vmuleq.s16','vmulne.s16','vmulcs.s16','vmulhs.s16','vmulcc.s16','vmullo.s16','vmulmi.s16','vmulpl.s16','vmulvs.s16','vmulvc.s16','vmulhi.s16','vmulls.s16','vmulge.s16','vmullt.s16','vmulgt.s16','vmulle.s16', + 'vmuleq.s32','vmulne.s32','vmulcs.s32','vmulhs.s32','vmulcc.s32','vmullo.s32','vmulmi.s32','vmulpl.s32','vmulvs.s32','vmulvc.s32','vmulhi.s32','vmulls.s32','vmulge.s32','vmullt.s32','vmulgt.s32','vmulle.s32', + 'vmuleq.u8','vmulne.u8','vmulcs.u8','vmulhs.u8','vmulcc.u8','vmullo.u8','vmulmi.u8','vmulpl.u8','vmulvs.u8','vmulvc.u8','vmulhi.u8','vmulls.u8','vmulge.u8','vmullt.u8','vmulgt.u8','vmulle.u8', + 'vmuleq.u16','vmulne.u16','vmulcs.u16','vmulhs.u16','vmulcc.u16','vmullo.u16','vmulmi.u16','vmulpl.u16','vmulvs.u16','vmulvc.u16','vmulhi.u16','vmulls.u16','vmulge.u16','vmullt.u16','vmulgt.u16','vmulle.u16', + 'vmuleq.u32','vmulne.u32','vmulcs.u32','vmulhs.u32','vmulcc.u32','vmullo.u32','vmulmi.u32','vmulpl.u32','vmulvs.u32','vmulvc.u32','vmulhi.u32','vmulls.u32','vmulge.u32','vmullt.u32','vmulgt.u32','vmulle.u32', + 'vmuleq.i8','vmulne.i8','vmulcs.i8','vmulhs.i8','vmulcc.i8','vmullo.i8','vmulmi.i8','vmulpl.i8','vmulvs.i8','vmulvc.i8','vmulhi.i8','vmulls.i8','vmulge.i8','vmullt.i8','vmulgt.i8','vmulle.i8', + 'vmuleq.i16','vmulne.i16','vmulcs.i16','vmulhs.i16','vmulcc.i16','vmullo.i16','vmulmi.i16','vmulpl.i16','vmulvs.i16','vmulvc.i16','vmulhi.i16','vmulls.i16','vmulge.i16','vmullt.i16','vmulgt.i16','vmulle.i16', + 'vmuleq.i32','vmulne.i32','vmulcs.i32','vmulhs.i32','vmulcc.i32','vmullo.i32','vmulmi.i32','vmulpl.i32','vmulvs.i32','vmulvc.i32','vmulhi.i32','vmulls.i32','vmulge.i32','vmullt.i32','vmulgt.i32','vmulle.i32', + 'vmuleq.p8','vmulne.p8','vmulcs.p8','vmulhs.p8','vmulcc.p8','vmullo.p8','vmulmi.p8','vmulpl.p8','vmulvs.p8','vmulvc.p8','vmulhi.p8','vmulls.p8','vmulge.p8','vmullt.p8','vmulgt.p8','vmulle.p8', + + 'vrshrneq.i16','vrshrnne.i16','vrshrncs.i16','vrshrnhs.i16','vrshrncc.i16','vrshrnlo.i16','vrshrnmi.i16','vrshrnpl.i16','vrshrnvs.i16','vrshrnvc.i16','vrshrnhi.i16','vrshrnls.i16','vrshrnge.i16','vrshrnlt.i16','vrshrngt.i16','vrshrnle.i16', + 'vrshrneq.i32','vrshrnne.i32','vrshrncs.i32','vrshrnhs.i32','vrshrncc.i32','vrshrnlo.i32','vrshrnmi.i32','vrshrnpl.i32','vrshrnvs.i32','vrshrnvc.i32','vrshrnhi.i32','vrshrnls.i32','vrshrnge.i32','vrshrnlt.i32','vrshrngt.i32','vrshrnle.i32', + 'vrshrneq.i64','vrshrnne.i64','vrshrncs.i64','vrshrnhs.i64','vrshrncc.i64','vrshrnlo.i64','vrshrnmi.i64','vrshrnpl.i64','vrshrnvs.i64','vrshrnvc.i64','vrshrnhi.i64','vrshrnls.i64','vrshrnge.i64','vrshrnlt.i64','vrshrngt.i64','vrshrnle.i64', + + 'vshrneq.i16','vshrnne.i16','vshrncs.i16','vshrnhs.i16','vshrncc.i16','vshrnlo.i16','vshrnmi.i16','vshrnpl.i16','vshrnvs.i16','vshrnvc.i16','vshrnhi.i16','vshrnls.i16','vshrnge.i16','vshrnlt.i16','vshrngt.i16','vshrnle.i16', + 'vshrneq.i32','vshrnne.i32','vshrncs.i32','vshrnhs.i32','vshrncc.i32','vshrnlo.i32','vshrnmi.i32','vshrnpl.i32','vshrnvs.i32','vshrnvc.i32','vshrnhi.i32','vshrnls.i32','vshrnge.i32','vshrnlt.i32','vshrngt.i32','vshrnle.i32', + 'vshrneq.i64','vshrnne.i64','vshrncs.i64','vshrnhs.i64','vshrncc.i64','vshrnlo.i64','vshrnmi.i64','vshrnpl.i64','vshrnvs.i64','vshrnvc.i64','vshrnhi.i64','vshrnls.i64','vshrnge.i64','vshrnlt.i64','vshrngt.i64','vshrnle.i64', + + 'vshleq.i8','vshlne.i8','vshlcs.i8','vshlhs.i8','vshlcc.i8','vshllo.i8','vshlmi.i8','vshlpl.i8','vshlvs.i8','vshlvc.i8','vshlhi.i8','vshlls.i8','vshlge.i8','vshllt.i8','vshlgt.i8','vshlle.i8', + 'vshleq.i16','vshlne.i16','vshlcs.i16','vshlhs.i16','vshlcc.i16','vshllo.i16','vshlmi.i16','vshlpl.i16','vshlvs.i16','vshlvc.i16','vshlhi.i16','vshlls.i16','vshlge.i16','vshllt.i16','vshlgt.i16','vshlle.i16', + 'vshleq.i32','vshlne.i32','vshlcs.i32','vshlhs.i32','vshlcc.i32','vshllo.i32','vshlmi.i32','vshlpl.i32','vshlvs.i32','vshlvc.i32','vshlhi.i32','vshlls.i32','vshlge.i32','vshllt.i32','vshlgt.i32','vshlle.i32', + 'vshleq.i64','vshlne.i64','vshlcs.i64','vshlhs.i64','vshlcc.i64','vshllo.i64','vshlmi.i64','vshlpl.i64','vshlvs.i64','vshlvc.i64','vshlhi.i64','vshlls.i64','vshlge.i64','vshllt.i64','vshlgt.i64','vshlle.i64', + + 'vshlleq.i8','vshllne.i8','vshllcs.i8','vshllhs.i8','vshllcc.i8','vshlllo.i8','vshllmi.i8','vshllpl.i8','vshllvs.i8','vshllvc.i8','vshllhi.i8','vshllls.i8','vshllge.i8','vshlllt.i8','vshllgt.i8','vshllle.i8', + 'vshlleq.i16','vshllne.i16','vshllcs.i16','vshllhs.i16','vshllcc.i16','vshlllo.i16','vshllmi.i16','vshllpl.i16','vshllvs.i16','vshllvc.i16','vshllhi.i16','vshllls.i16','vshllge.i16','vshlllt.i16','vshllgt.i16','vshllle.i16', + 'vshlleq.i32','vshllne.i32','vshllcs.i32','vshllhs.i32','vshllcc.i32','vshlllo.i32','vshllmi.i32','vshllpl.i32','vshllvs.i32','vshllvc.i32','vshllhi.i32','vshllls.i32','vshllge.i32','vshlllt.i32','vshllgt.i32','vshllle.i32' + ), + /* Conditional NEON SIMD Signed Integer Instructions */ + 32 => array( + 'vabaeq.s8','vabane.s8','vabacs.s8','vabahs.s8','vabacc.s8','vabalo.s8','vabami.s8','vabapl.s8','vabavs.s8','vabavc.s8','vabahi.s8','vabals.s8','vabage.s8','vabalt.s8','vabagt.s8','vabale.s8', + 'vabaeq.s16','vabane.s16','vabacs.s16','vabahs.s16','vabacc.s16','vabalo.s16','vabami.s16','vabapl.s16','vabavs.s16','vabavc.s16','vabahi.s16','vabals.s16','vabage.s16','vabalt.s16','vabagt.s16','vabale.s16', + 'vabaeq.s32','vabane.s32','vabacs.s32','vabahs.s32','vabacc.s32','vabalo.s32','vabami.s32','vabapl.s32','vabavs.s32','vabavc.s32','vabahi.s32','vabals.s32','vabage.s32','vabalt.s32','vabagt.s32','vabale.s32', + + 'vabaleq.s8','vabalne.s8','vabalcs.s8','vabalhs.s8','vabalcc.s8','vaballo.s8','vabalmi.s8','vabalpl.s8','vabalvs.s8','vabalvc.s8','vabalhi.s8','vaballs.s8','vabalge.s8','vaballt.s8','vabalgt.s8','vaballe.s8', + 'vabaleq.s16','vabalne.s16','vabalcs.s16','vabalhs.s16','vabalcc.s16','vaballo.s16','vabalmi.s16','vabalpl.s16','vabalvs.s16','vabalvc.s16','vabalhi.s16','vaballs.s16','vabalge.s16','vaballt.s16','vabalgt.s16','vaballe.s16', + 'vabaleq.s32','vabalne.s32','vabalcs.s32','vabalhs.s32','vabalcc.s32','vaballo.s32','vabalmi.s32','vabalpl.s32','vabalvs.s32','vabalvc.s32','vabalhi.s32','vaballs.s32','vabalge.s32','vaballt.s32','vabalgt.s32','vaballe.s32', + + 'vabdeq.s8','vabdne.s8','vabdcs.s8','vabdhs.s8','vabdcc.s8','vabdlo.s8','vabdmi.s8','vabdpl.s8','vabdvs.s8','vabdvc.s8','vabdhi.s8','vabdls.s8','vabdge.s8','vabdlt.s8','vabdgt.s8','vabdle.s8', + 'vabdeq.s16','vabdne.s16','vabdcs.s16','vabdhs.s16','vabdcc.s16','vabdlo.s16','vabdmi.s16','vabdpl.s16','vabdvs.s16','vabdvc.s16','vabdhi.s16','vabdls.s16','vabdge.s16','vabdlt.s16','vabdgt.s16','vabdle.s16', + 'vabdeq.s32','vabdne.s32','vabdcs.s32','vabdhs.s32','vabdcc.s32','vabdlo.s32','vabdmi.s32','vabdpl.s32','vabdvs.s32','vabdvc.s32','vabdhi.s32','vabdls.s32','vabdge.s32','vabdlt.s32','vabdgt.s32','vabdle.s32', + + 'vabseq.s8','vabsne.s8','vabscs.s8','vabshs.s8','vabscc.s8','vabslo.s8','vabsmi.s8','vabspl.s8','vabsvs.s8','vabsvc.s8','vabshi.s8','vabsls.s8','vabsge.s8','vabslt.s8','vabsgt.s8','vabsle.s8', + 'vabseq.s16','vabsne.s16','vabscs.s16','vabshs.s16','vabscc.s16','vabslo.s16','vabsmi.s16','vabspl.s16','vabsvs.s16','vabsvc.s16','vabshi.s16','vabsls.s16','vabsge.s16','vabslt.s16','vabsgt.s16','vabsle.s16', + 'vabseq.s32','vabsne.s32','vabscs.s32','vabshs.s32','vabscc.s32','vabslo.s32','vabsmi.s32','vabspl.s32','vabsvs.s32','vabsvc.s32','vabshi.s32','vabsls.s32','vabsge.s32','vabslt.s32','vabsgt.s32','vabsle.s32', + + 'vaddleq.s8','vaddlne.s8','vaddlcs.s8','vaddlhs.s8','vaddlcc.s8','vaddllo.s8','vaddlmi.s8','vaddlpl.s8','vaddlvs.s8','vaddlvc.s8','vaddlhi.s8','vaddlls.s8','vaddlge.s8','vaddllt.s8','vaddlgt.s8','vaddlle.s8', + 'vaddleq.s16','vaddlne.s16','vaddlcs.s16','vaddlhs.s16','vaddlcc.s16','vaddllo.s16','vaddlmi.s16','vaddlpl.s16','vaddlvs.s16','vaddlvc.s16','vaddlhi.s16','vaddlls.s16','vaddlge.s16','vaddllt.s16','vaddlgt.s16','vaddlle.s16', + 'vaddleq.s32','vaddlne.s32','vaddlcs.s32','vaddlhs.s32','vaddlcc.s32','vaddllo.s32','vaddlmi.s32','vaddlpl.s32','vaddlvs.s32','vaddlvc.s32','vaddlhi.s32','vaddlls.s32','vaddlge.s32','vaddllt.s32','vaddlgt.s32','vaddlle.s32', + + 'vcgeeq.s8','vcgene.s8','vcgecs.s8','vcgehs.s8','vcgecc.s8','vcgelo.s8','vcgemi.s8','vcgepl.s8','vcgevs.s8','vcgevc.s8','vcgehi.s8','vcgels.s8','vcgege.s8','vcgelt.s8','vcgegt.s8','vcgele.s8', + 'vcgeeq.s16','vcgene.s16','vcgecs.s16','vcgehs.s16','vcgecc.s16','vcgelo.s16','vcgemi.s16','vcgepl.s16','vcgevs.s16','vcgevc.s16','vcgehi.s16','vcgels.s16','vcgege.s16','vcgelt.s16','vcgegt.s16','vcgele.s16', + 'vcgeeq.s32','vcgene.s32','vcgecs.s32','vcgehs.s32','vcgecc.s32','vcgelo.s32','vcgemi.s32','vcgepl.s32','vcgevs.s32','vcgevc.s32','vcgehi.s32','vcgels.s32','vcgege.s32','vcgelt.s32','vcgegt.s32','vcgele.s32', + + 'vcleeq.s8','vclene.s8','vclecs.s8','vclehs.s8','vclecc.s8','vclelo.s8','vclemi.s8','vclepl.s8','vclevs.s8','vclevc.s8','vclehi.s8','vclels.s8','vclege.s8','vclelt.s8','vclegt.s8','vclele.s8', + 'vcleeq.s16','vclene.s16','vclecs.s16','vclehs.s16','vclecc.s16','vclelo.s16','vclemi.s16','vclepl.s16','vclevs.s16','vclevc.s16','vclehi.s16','vclels.s16','vclege.s16','vclelt.s16','vclegt.s16','vclele.s16', + 'vcleeq.s32','vclene.s32','vclecs.s32','vclehs.s32','vclecc.s32','vclelo.s32','vclemi.s32','vclepl.s32','vclevs.s32','vclevc.s32','vclehi.s32','vclels.s32','vclege.s32','vclelt.s32','vclegt.s32','vclele.s32', + + 'vcgteq.s8','vcgtne.s8','vcgtcs.s8','vcgths.s8','vcgtcc.s8','vcgtlo.s8','vcgtmi.s8','vcgtpl.s8','vcgtvs.s8','vcgtvc.s8','vcgthi.s8','vcgtls.s8','vcgtge.s8','vcgtlt.s8','vcgtgt.s8','vcgtle.s8', + 'vcgteq.s16','vcgtne.s16','vcgtcs.s16','vcgths.s16','vcgtcc.s16','vcgtlo.s16','vcgtmi.s16','vcgtpl.s16','vcgtvs.s16','vcgtvc.s16','vcgthi.s16','vcgtls.s16','vcgtge.s16','vcgtlt.s16','vcgtgt.s16','vcgtle.s16', + 'vcgteq.s32','vcgtne.s32','vcgtcs.s32','vcgths.s32','vcgtcc.s32','vcgtlo.s32','vcgtmi.s32','vcgtpl.s32','vcgtvs.s32','vcgtvc.s32','vcgthi.s32','vcgtls.s32','vcgtge.s32','vcgtlt.s32','vcgtgt.s32','vcgtle.s32', + + 'vclteq.s8','vcltne.s8','vcltcs.s8','vclths.s8','vcltcc.s8','vcltlo.s8','vcltmi.s8','vcltpl.s8','vcltvs.s8','vcltvc.s8','vclthi.s8','vcltls.s8','vcltge.s8','vcltlt.s8','vcltgt.s8','vcltle.s8', + 'vclteq.s16','vcltne.s16','vcltcs.s16','vclths.s16','vcltcc.s16','vcltlo.s16','vcltmi.s16','vcltpl.s16','vcltvs.s16','vcltvc.s16','vclthi.s16','vcltls.s16','vcltge.s16','vcltlt.s16','vcltgt.s16','vcltle.s16', + 'vclteq.s32','vcltne.s32','vcltcs.s32','vclths.s32','vcltcc.s32','vcltlo.s32','vcltmi.s32','vcltpl.s32','vcltvs.s32','vcltvc.s32','vclthi.s32','vcltls.s32','vcltge.s32','vcltlt.s32','vcltgt.s32','vcltle.s32', + + 'vclseq.s8','vclsne.s8','vclscs.s8','vclshs.s8','vclscc.s8','vclslo.s8','vclsmi.s8','vclspl.s8','vclsvs.s8','vclsvc.s8','vclshi.s8','vclsls.s8','vclsge.s8','vclslt.s8','vclsgt.s8','vclsle.s8', + 'vclseq.s16','vclsne.s16','vclscs.s16','vclshs.s16','vclscc.s16','vclslo.s16','vclsmi.s16','vclspl.s16','vclsvs.s16','vclsvc.s16','vclshi.s16','vclsls.s16','vclsge.s16','vclslt.s16','vclsgt.s16','vclsle.s16', + 'vclseq.s32','vclsne.s32','vclscs.s32','vclshs.s32','vclscc.s32','vclslo.s32','vclsmi.s32','vclspl.s32','vclsvs.s32','vclsvc.s32','vclshi.s32','vclsls.s32','vclsge.s32','vclslt.s32','vclsgt.s32','vclsle.s32', + + 'vaddweq.s8','vaddwne.s8','vaddwcs.s8','vaddwhs.s8','vaddwcc.s8','vaddwlo.s8','vaddwmi.s8','vaddwpl.s8','vaddwvs.s8','vaddwvc.s8','vaddwhi.s8','vaddwls.s8','vaddwge.s8','vaddwlt.s8','vaddwgt.s8','vaddwle.s8', + 'vaddweq.s16','vaddwne.s16','vaddwcs.s16','vaddwhs.s16','vaddwcc.s16','vaddwlo.s16','vaddwmi.s16','vaddwpl.s16','vaddwvs.s16','vaddwvc.s16','vaddwhi.s16','vaddwls.s16','vaddwge.s16','vaddwlt.s16','vaddwgt.s16','vaddwle.s16', + 'vaddweq.s32','vaddwne.s32','vaddwcs.s32','vaddwhs.s32','vaddwcc.s32','vaddwlo.s32','vaddwmi.s32','vaddwpl.s32','vaddwvs.s32','vaddwvc.s32','vaddwhi.s32','vaddwls.s32','vaddwge.s32','vaddwlt.s32','vaddwgt.s32','vaddwle.s32', + + 'vhaddeq.s8','vhaddne.s8','vhaddcs.s8','vhaddhs.s8','vhaddcc.s8','vhaddlo.s8','vhaddmi.s8','vhaddpl.s8','vhaddvs.s8','vhaddvc.s8','vhaddhi.s8','vhaddls.s8','vhaddge.s8','vhaddlt.s8','vhaddgt.s8','vhaddle.s8', + 'vhaddeq.s16','vhaddne.s16','vhaddcs.s16','vhaddhs.s16','vhaddcc.s16','vhaddlo.s16','vhaddmi.s16','vhaddpl.s16','vhaddvs.s16','vhaddvc.s16','vhaddhi.s16','vhaddls.s16','vhaddge.s16','vhaddlt.s16','vhaddgt.s16','vhaddle.s16', + 'vhaddeq.s32','vhaddne.s32','vhaddcs.s32','vhaddhs.s32','vhaddcc.s32','vhaddlo.s32','vhaddmi.s32','vhaddpl.s32','vhaddvs.s32','vhaddvc.s32','vhaddhi.s32','vhaddls.s32','vhaddge.s32','vhaddlt.s32','vhaddgt.s32','vhaddle.s32', + + 'vhsubeq.s8','vhsubne.s8','vhsubcs.s8','vhsubhs.s8','vhsubcc.s8','vhsublo.s8','vhsubmi.s8','vhsubpl.s8','vhsubvs.s8','vhsubvc.s8','vhsubhi.s8','vhsubls.s8','vhsubge.s8','vhsublt.s8','vhsubgt.s8','vhsuble.s8', + 'vhsubeq.s16','vhsubne.s16','vhsubcs.s16','vhsubhs.s16','vhsubcc.s16','vhsublo.s16','vhsubmi.s16','vhsubpl.s16','vhsubvs.s16','vhsubvc.s16','vhsubhi.s16','vhsubls.s16','vhsubge.s16','vhsublt.s16','vhsubgt.s16','vhsuble.s16', + 'vhsubeq.s32','vhsubne.s32','vhsubcs.s32','vhsubhs.s32','vhsubcc.s32','vhsublo.s32','vhsubmi.s32','vhsubpl.s32','vhsubvs.s32','vhsubvc.s32','vhsubhi.s32','vhsubls.s32','vhsubge.s32','vhsublt.s32','vhsubgt.s32','vhsuble.s32', + + 'vmaxeq.s8','vmaxne.s8','vmaxcs.s8','vmaxhs.s8','vmaxcc.s8','vmaxlo.s8','vmaxmi.s8','vmaxpl.s8','vmaxvs.s8','vmaxvc.s8','vmaxhi.s8','vmaxls.s8','vmaxge.s8','vmaxlt.s8','vmaxgt.s8','vmaxle.s8', + 'vmaxeq.s16','vmaxne.s16','vmaxcs.s16','vmaxhs.s16','vmaxcc.s16','vmaxlo.s16','vmaxmi.s16','vmaxpl.s16','vmaxvs.s16','vmaxvc.s16','vmaxhi.s16','vmaxls.s16','vmaxge.s16','vmaxlt.s16','vmaxgt.s16','vmaxle.s16', + 'vmaxeq.s32','vmaxne.s32','vmaxcs.s32','vmaxhs.s32','vmaxcc.s32','vmaxlo.s32','vmaxmi.s32','vmaxpl.s32','vmaxvs.s32','vmaxvc.s32','vmaxhi.s32','vmaxls.s32','vmaxge.s32','vmaxlt.s32','vmaxgt.s32','vmaxle.s32', + + 'vmineq.s8','vminne.s8','vmincs.s8','vminhs.s8','vmincc.s8','vminlo.s8','vminmi.s8','vminpl.s8','vminvs.s8','vminvc.s8','vminhi.s8','vminls.s8','vminge.s8','vminlt.s8','vmingt.s8','vminle.s8', + 'vmineq.s16','vminne.s16','vmincs.s16','vminhs.s16','vmincc.s16','vminlo.s16','vminmi.s16','vminpl.s16','vminvs.s16','vminvc.s16','vminhi.s16','vminls.s16','vminge.s16','vminlt.s16','vmingt.s16','vminle.s16', + 'vmineq.s32','vminne.s32','vmincs.s32','vminhs.s32','vmincc.s32','vminlo.s32','vminmi.s32','vminpl.s32','vminvs.s32','vminvc.s32','vminhi.s32','vminls.s32','vminge.s32','vminlt.s32','vmingt.s32','vminle.s32', + + 'vmlaleq.s8','vmlalne.s8','vmlalcs.s8','vmlalhs.s8','vmlalcc.s8','vmlallo.s8','vmlalmi.s8','vmlalpl.s8','vmlalvs.s8','vmlalvc.s8','vmlalhi.s8','vmlalls.s8','vmlalge.s8','vmlallt.s8','vmlalgt.s8','vmlalle.s8', + 'vmlaleq.s16','vmlalne.s16','vmlalcs.s16','vmlalhs.s16','vmlalcc.s16','vmlallo.s16','vmlalmi.s16','vmlalpl.s16','vmlalvs.s16','vmlalvc.s16','vmlalhi.s16','vmlalls.s16','vmlalge.s16','vmlallt.s16','vmlalgt.s16','vmlalle.s16', + 'vmlaleq.s32','vmlalne.s32','vmlalcs.s32','vmlalhs.s32','vmlalcc.s32','vmlallo.s32','vmlalmi.s32','vmlalpl.s32','vmlalvs.s32','vmlalvc.s32','vmlalhi.s32','vmlalls.s32','vmlalge.s32','vmlallt.s32','vmlalgt.s32','vmlalle.s32', + + 'vmlsleq.s8','vmlslne.s8','vmlslcs.s8','vmlslhs.s8','vmlslcc.s8','vmlsllo.s8','vmlslmi.s8','vmlslpl.s8','vmlslvs.s8','vmlslvc.s8','vmlslhi.s8','vmlslls.s8','vmlslge.s8','vmlsllt.s8','vmlslgt.s8','vmlslle.s8', + 'vmlsleq.s16','vmlslne.s16','vmlslcs.s16','vmlslhs.s16','vmlslcc.s16','vmlsllo.s16','vmlslmi.s16','vmlslpl.s16','vmlslvs.s16','vmlslvc.s16','vmlslhi.s16','vmlslls.s16','vmlslge.s16','vmlsllt.s16','vmlslgt.s16','vmlslle.s16', + 'vmlsleq.s32','vmlslne.s32','vmlslcs.s32','vmlslhs.s32','vmlslcc.s32','vmlsllo.s32','vmlslmi.s32','vmlslpl.s32','vmlslvs.s32','vmlslvc.s32','vmlslhi.s32','vmlslls.s32','vmlslge.s32','vmlsllt.s32','vmlslgt.s32','vmlslle.s32', + + 'vnegeq.s8','vnegne.s8','vnegcs.s8','vneghs.s8','vnegcc.s8','vneglo.s8','vnegmi.s8','vnegpl.s8','vnegvs.s8','vnegvc.s8','vneghi.s8','vnegls.s8','vnegge.s8','vneglt.s8','vneggt.s8','vnegle.s8', + 'vnegeq.s16','vnegne.s16','vnegcs.s16','vneghs.s16','vnegcc.s16','vneglo.s16','vnegmi.s16','vnegpl.s16','vnegvs.s16','vnegvc.s16','vneghi.s16','vnegls.s16','vnegge.s16','vneglt.s16','vneggt.s16','vnegle.s16', + 'vnegeq.s32','vnegne.s32','vnegcs.s32','vneghs.s32','vnegcc.s32','vneglo.s32','vnegmi.s32','vnegpl.s32','vnegvs.s32','vnegvc.s32','vneghi.s32','vnegls.s32','vnegge.s32','vneglt.s32','vneggt.s32','vnegle.s32', + + 'vpadaleq.s8','vpadalne.s8','vpadalcs.s8','vpadalhs.s8','vpadalcc.s8','vpadallo.s8','vpadalmi.s8','vpadalpl.s8','vpadalvs.s8','vpadalvc.s8','vpadalhi.s8','vpadalls.s8','vpadalge.s8','vpadallt.s8','vpadalgt.s8','vpadalle.s8', + 'vpadaleq.s16','vpadalne.s16','vpadalcs.s16','vpadalhs.s16','vpadalcc.s16','vpadallo.s16','vpadalmi.s16','vpadalpl.s16','vpadalvs.s16','vpadalvc.s16','vpadalhi.s16','vpadalls.s16','vpadalge.s16','vpadallt.s16','vpadalgt.s16','vpadalle.s16', + 'vpadaleq.s32','vpadalne.s32','vpadalcs.s32','vpadalhs.s32','vpadalcc.s32','vpadallo.s32','vpadalmi.s32','vpadalpl.s32','vpadalvs.s32','vpadalvc.s32','vpadalhi.s32','vpadalls.s32','vpadalge.s32','vpadallt.s32','vpadalgt.s32','vpadalle.s32', + + 'vmovleq.s8','vmovlne.s8','vmovlcs.s8','vmovlhs.s8','vmovlcc.s8','vmovllo.s8','vmovlmi.s8','vmovlpl.s8','vmovlvs.s8','vmovlvc.s8','vmovlhi.s8','vmovlls.s8','vmovlge.s8','vmovllt.s8','vmovlgt.s8','vmovlle.s8', + 'vmovleq.s16','vmovlne.s16','vmovlcs.s16','vmovlhs.s16','vmovlcc.s16','vmovllo.s16','vmovlmi.s16','vmovlpl.s16','vmovlvs.s16','vmovlvc.s16','vmovlhi.s16','vmovlls.s16','vmovlge.s16','vmovllt.s16','vmovlgt.s16','vmovlle.s16', + 'vmovleq.s32','vmovlne.s32','vmovlcs.s32','vmovlhs.s32','vmovlcc.s32','vmovllo.s32','vmovlmi.s32','vmovlpl.s32','vmovlvs.s32','vmovlvc.s32','vmovlhi.s32','vmovlls.s32','vmovlge.s32','vmovllt.s32','vmovlgt.s32','vmovlle.s32', + + 'vmulleq.s8','vmullne.s8','vmullcs.s8','vmullhs.s8','vmullcc.s8','vmulllo.s8','vmullmi.s8','vmullpl.s8','vmullvs.s8','vmullvc.s8','vmullhi.s8','vmullls.s8','vmullge.s8','vmulllt.s8','vmullgt.s8','vmullle.s8', + 'vmulleq.s16','vmullne.s16','vmullcs.s16','vmullhs.s16','vmullcc.s16','vmulllo.s16','vmullmi.s16','vmullpl.s16','vmullvs.s16','vmullvc.s16','vmullhi.s16','vmullls.s16','vmullge.s16','vmulllt.s16','vmullgt.s16','vmullle.s16', + 'vmulleq.s32','vmullne.s32','vmullcs.s32','vmullhs.s32','vmullcc.s32','vmulllo.s32','vmullmi.s32','vmullpl.s32','vmullvs.s32','vmullvc.s32','vmullhi.s32','vmullls.s32','vmullge.s32','vmulllt.s32','vmullgt.s32','vmullle.s32', + + 'vpaddleq.s8','vpaddlne.s8','vpaddlcs.s8','vpaddlhs.s8','vpaddlcc.s8','vpaddllo.s8','vpaddlmi.s8','vpaddlpl.s8','vpaddlvs.s8','vpaddlvc.s8','vpaddlhi.s8','vpaddlls.s8','vpaddlge.s8','vpaddllt.s8','vpaddlgt.s8','vpaddlle.s8', + 'vpaddleq.s16','vpaddlne.s16','vpaddlcs.s16','vpaddlhs.s16','vpaddlcc.s16','vpaddllo.s16','vpaddlmi.s16','vpaddlpl.s16','vpaddlvs.s16','vpaddlvc.s16','vpaddlhi.s16','vpaddlls.s16','vpaddlge.s16','vpaddllt.s16','vpaddlgt.s16','vpaddlle.s16', + 'vpaddleq.s32','vpaddlne.s32','vpaddlcs.s32','vpaddlhs.s32','vpaddlcc.s32','vpaddllo.s32','vpaddlmi.s32','vpaddlpl.s32','vpaddlvs.s32','vpaddlvc.s32','vpaddlhi.s32','vpaddlls.s32','vpaddlge.s32','vpaddllt.s32','vpaddlgt.s32','vpaddlle.s32', + + 'vpmaxeq.s8','vpmaxne.s8','vpmaxcs.s8','vpmaxhs.s8','vpmaxcc.s8','vpmaxlo.s8','vpmaxmi.s8','vpmaxpl.s8','vpmaxvs.s8','vpmaxvc.s8','vpmaxhi.s8','vpmaxls.s8','vpmaxge.s8','vpmaxlt.s8','vpmaxgt.s8','vpmaxle.s8', + 'vpmaxeq.s16','vpmaxne.s16','vpmaxcs.s16','vpmaxhs.s16','vpmaxcc.s16','vpmaxlo.s16','vpmaxmi.s16','vpmaxpl.s16','vpmaxvs.s16','vpmaxvc.s16','vpmaxhi.s16','vpmaxls.s16','vpmaxge.s16','vpmaxlt.s16','vpmaxgt.s16','vpmaxle.s16', + 'vpmaxeq.s32','vpmaxne.s32','vpmaxcs.s32','vpmaxhs.s32','vpmaxcc.s32','vpmaxlo.s32','vpmaxmi.s32','vpmaxpl.s32','vpmaxvs.s32','vpmaxvc.s32','vpmaxhi.s32','vpmaxls.s32','vpmaxge.s32','vpmaxlt.s32','vpmaxgt.s32','vpmaxle.s32', + + 'vpmineq.s8','vpminne.s8','vpmincs.s8','vpminhs.s8','vpmincc.s8','vpminlo.s8','vpminmi.s8','vpminpl.s8','vpminvs.s8','vpminvc.s8','vpminhi.s8','vpminls.s8','vpminge.s8','vpminlt.s8','vpmingt.s8','vpminle.s8', + 'vpmineq.s16','vpminne.s16','vpmincs.s16','vpminhs.s16','vpmincc.s16','vpminlo.s16','vpminmi.s16','vpminpl.s16','vpminvs.s16','vpminvc.s16','vpminhi.s16','vpminls.s16','vpminge.s16','vpminlt.s16','vpmingt.s16','vpminle.s16', + 'vpmineq.s32','vpminne.s32','vpmincs.s32','vpminhs.s32','vpmincc.s32','vpminlo.s32','vpminmi.s32','vpminpl.s32','vpminvs.s32','vpminvc.s32','vpminhi.s32','vpminls.s32','vpminge.s32','vpminlt.s32','vpmingt.s32','vpminle.s32', + + 'vqabseq.s8','vqabsne.s8','vqabscs.s8','vqabshs.s8','vqabscc.s8','vqabslo.s8','vqabsmi.s8','vqabspl.s8','vqabsvs.s8','vqabsvc.s8','vqabshi.s8','vqabsls.s8','vqabsge.s8','vqabslt.s8','vqabsgt.s8','vqabsle.s8', + 'vqabseq.s16','vqabsne.s16','vqabscs.s16','vqabshs.s16','vqabscc.s16','vqabslo.s16','vqabsmi.s16','vqabspl.s16','vqabsvs.s16','vqabsvc.s16','vqabshi.s16','vqabsls.s16','vqabsge.s16','vqabslt.s16','vqabsgt.s16','vqabsle.s16', + 'vqabseq.s32','vqabsne.s32','vqabscs.s32','vqabshs.s32','vqabscc.s32','vqabslo.s32','vqabsmi.s32','vqabspl.s32','vqabsvs.s32','vqabsvc.s32','vqabshi.s32','vqabsls.s32','vqabsge.s32','vqabslt.s32','vqabsgt.s32','vqabsle.s32', + + 'vqaddeq.s8','vqaddne.s8','vqaddcs.s8','vqaddhs.s8','vqaddcc.s8','vqaddlo.s8','vqaddmi.s8','vqaddpl.s8','vqaddvs.s8','vqaddvc.s8','vqaddhi.s8','vqaddls.s8','vqaddge.s8','vqaddlt.s8','vqaddgt.s8','vqaddle.s8', + 'vqaddeq.s16','vqaddne.s16','vqaddcs.s16','vqaddhs.s16','vqaddcc.s16','vqaddlo.s16','vqaddmi.s16','vqaddpl.s16','vqaddvs.s16','vqaddvc.s16','vqaddhi.s16','vqaddls.s16','vqaddge.s16','vqaddlt.s16','vqaddgt.s16','vqaddle.s16', + 'vqaddeq.s32','vqaddne.s32','vqaddcs.s32','vqaddhs.s32','vqaddcc.s32','vqaddlo.s32','vqaddmi.s32','vqaddpl.s32','vqaddvs.s32','vqaddvc.s32','vqaddhi.s32','vqaddls.s32','vqaddge.s32','vqaddlt.s32','vqaddgt.s32','vqaddle.s32', + 'vqaddeq.s64','vqaddne.s64','vqaddcs.s64','vqaddhs.s64','vqaddcc.s64','vqaddlo.s64','vqaddmi.s64','vqaddpl.s64','vqaddvs.s64','vqaddvc.s64','vqaddhi.s64','vqaddls.s64','vqaddge.s64','vqaddlt.s64','vqaddgt.s64','vqaddle.s64', + + 'vqdmlaleq.s16','vqdmlalne.s16','vqdmlalcs.s16','vqdmlalhs.s16','vqdmlalcc.s16','vqdmlallo.s16','vqdmlalmi.s16','vqdmlalpl.s16','vqdmlalvs.s16','vqdmlalvc.s16','vqdmlalhi.s16','vqdmlalls.s16','vqdmlalge.s16','vqdmlallt.s16','vqdmlalgt.s16','vqdmlalle.s16', + 'vqdmlaleq.s32','vqdmlalne.s32','vqdmlalcs.s32','vqdmlalhs.s32','vqdmlalcc.s32','vqdmlallo.s32','vqdmlalmi.s32','vqdmlalpl.s32','vqdmlalvs.s32','vqdmlalvc.s32','vqdmlalhi.s32','vqdmlalls.s32','vqdmlalge.s32','vqdmlallt.s32','vqdmlalgt.s32','vqdmlalle.s32', + + 'vqdmlsleq.s16','vqdmlslne.s16','vqdmlslcs.s16','vqdmlslhs.s16','vqdmlslcc.s16','vqdmlsllo.s16','vqdmlslmi.s16','vqdmlslpl.s16','vqdmlslvs.s16','vqdmlslvc.s16','vqdmlslhi.s16','vqdmlslls.s16','vqdmlslge.s16','vqdmlsllt.s16','vqdmlslgt.s16','vqdmlslle.s16', + 'vqdmlsleq.s32','vqdmlslne.s32','vqdmlslcs.s32','vqdmlslhs.s32','vqdmlslcc.s32','vqdmlsllo.s32','vqdmlslmi.s32','vqdmlslpl.s32','vqdmlslvs.s32','vqdmlslvc.s32','vqdmlslhi.s32','vqdmlslls.s32','vqdmlslge.s32','vqdmlsllt.s32','vqdmlslgt.s32','vqdmlslle.s32', + + 'vqdmulheq.s16','vqdmulhne.s16','vqdmulhcs.s16','vqdmulhhs.s16','vqdmulhcc.s16','vqdmulhlo.s16','vqdmulhmi.s16','vqdmulhpl.s16','vqdmulhvs.s16','vqdmulhvc.s16','vqdmulhhi.s16','vqdmulhls.s16','vqdmulhge.s16','vqdmulhlt.s16','vqdmulhgt.s16','vqdmulhle.s16', + 'vqdmulheq.s32','vqdmulhne.s32','vqdmulhcs.s32','vqdmulhhs.s32','vqdmulhcc.s32','vqdmulhlo.s32','vqdmulhmi.s32','vqdmulhpl.s32','vqdmulhvs.s32','vqdmulhvc.s32','vqdmulhhi.s32','vqdmulhls.s32','vqdmulhge.s32','vqdmulhlt.s32','vqdmulhgt.s32','vqdmulhle.s32', + + 'vqdmulleq.s16','vqdmullne.s16','vqdmullcs.s16','vqdmullhs.s16','vqdmullcc.s16','vqdmulllo.s16','vqdmullmi.s16','vqdmullpl.s16','vqdmullvs.s16','vqdmullvc.s16','vqdmullhi.s16','vqdmullls.s16','vqdmullge.s16','vqdmulllt.s16','vqdmullgt.s16','vqdmullle.s16', + 'vqdmulleq.s32','vqdmullne.s32','vqdmullcs.s32','vqdmullhs.s32','vqdmullcc.s32','vqdmulllo.s32','vqdmullmi.s32','vqdmullpl.s32','vqdmullvs.s32','vqdmullvc.s32','vqdmullhi.s32','vqdmullls.s32','vqdmullge.s32','vqdmulllt.s32','vqdmullgt.s32','vqdmullle.s32', + + 'vqmovneq.s16','vqmovnne.s16','vqmovncs.s16','vqmovnhs.s16','vqmovncc.s16','vqmovnlo.s16','vqmovnmi.s16','vqmovnpl.s16','vqmovnvs.s16','vqmovnvc.s16','vqmovnhi.s16','vqmovnls.s16','vqmovnge.s16','vqmovnlt.s16','vqmovngt.s16','vqmovnle.s16', + 'vqmovneq.s32','vqmovnne.s32','vqmovncs.s32','vqmovnhs.s32','vqmovncc.s32','vqmovnlo.s32','vqmovnmi.s32','vqmovnpl.s32','vqmovnvs.s32','vqmovnvc.s32','vqmovnhi.s32','vqmovnls.s32','vqmovnge.s32','vqmovnlt.s32','vqmovngt.s32','vqmovnle.s32', + 'vqmovneq.s64','vqmovnne.s64','vqmovncs.s64','vqmovnhs.s64','vqmovncc.s64','vqmovnlo.s64','vqmovnmi.s64','vqmovnpl.s64','vqmovnvs.s64','vqmovnvc.s64','vqmovnhi.s64','vqmovnls.s64','vqmovnge.s64','vqmovnlt.s64','vqmovngt.s64','vqmovnle.s64', + + 'vqmovuneq.s16','vqmovunne.s16','vqmovuncs.s16','vqmovunhs.s16','vqmovuncc.s16','vqmovunlo.s16','vqmovunmi.s16','vqmovunpl.s16','vqmovunvs.s16','vqmovunvc.s16','vqmovunhi.s16','vqmovunls.s16','vqmovunge.s16','vqmovunlt.s16','vqmovungt.s16','vqmovunle.s16', + 'vqmovuneq.s32','vqmovunne.s32','vqmovuncs.s32','vqmovunhs.s32','vqmovuncc.s32','vqmovunlo.s32','vqmovunmi.s32','vqmovunpl.s32','vqmovunvs.s32','vqmovunvc.s32','vqmovunhi.s32','vqmovunls.s32','vqmovunge.s32','vqmovunlt.s32','vqmovungt.s32','vqmovunle.s32', + 'vqmovuneq.s64','vqmovunne.s64','vqmovuncs.s64','vqmovunhs.s64','vqmovuncc.s64','vqmovunlo.s64','vqmovunmi.s64','vqmovunpl.s64','vqmovunvs.s64','vqmovunvc.s64','vqmovunhi.s64','vqmovunls.s64','vqmovunge.s64','vqmovunlt.s64','vqmovungt.s64','vqmovunle.s64', + + 'vqnegeq.s8','vqnegne.s8','vqnegcs.s8','vqneghs.s8','vqnegcc.s8','vqneglo.s8','vqnegmi.s8','vqnegpl.s8','vqnegvs.s8','vqnegvc.s8','vqneghi.s8','vqnegls.s8','vqnegge.s8','vqneglt.s8','vqneggt.s8','vqnegle.s8', + 'vqnegeq.s16','vqnegne.s16','vqnegcs.s16','vqneghs.s16','vqnegcc.s16','vqneglo.s16','vqnegmi.s16','vqnegpl.s16','vqnegvs.s16','vqnegvc.s16','vqneghi.s16','vqnegls.s16','vqnegge.s16','vqneglt.s16','vqneggt.s16','vqnegle.s16', + 'vqnegeq.s32','vqnegne.s32','vqnegcs.s32','vqneghs.s32','vqnegcc.s32','vqneglo.s32','vqnegmi.s32','vqnegpl.s32','vqnegvs.s32','vqnegvc.s32','vqneghi.s32','vqnegls.s32','vqnegge.s32','vqneglt.s32','vqneggt.s32','vqnegle.s32', + + 'vqrdmulheq.s16','vqrdmulhne.s16','vqrdmulhcs.s16','vqrdmulhhs.s16','vqrdmulhcc.s16','vqrdmulhlo.s16','vqrdmulhmi.s16','vqrdmulhpl.s16','vqrdmulhvs.s16','vqrdmulhvc.s16','vqrdmulhhi.s16','vqrdmulhls.s16','vqrdmulhge.s16','vqrdmulhlt.s16','vqrdmulhgt.s16','vqrdmulhle.s16', + 'vqrdmulheq.s32','vqrdmulhne.s32','vqrdmulhcs.s32','vqrdmulhhs.s32','vqrdmulhcc.s32','vqrdmulhlo.s32','vqrdmulhmi.s32','vqrdmulhpl.s32','vqrdmulhvs.s32','vqrdmulhvc.s32','vqrdmulhhi.s32','vqrdmulhls.s32','vqrdmulhge.s32','vqrdmulhlt.s32','vqrdmulhgt.s32','vqrdmulhle.s32', + + 'vqrshleq.s8','vqrshlne.s8','vqrshlcs.s8','vqrshlhs.s8','vqrshlcc.s8','vqrshllo.s8','vqrshlmi.s8','vqrshlpl.s8','vqrshlvs.s8','vqrshlvc.s8','vqrshlhi.s8','vqrshlls.s8','vqrshlge.s8','vqrshllt.s8','vqrshlgt.s8','vqrshlle.s8', + 'vqrshleq.s16','vqrshlne.s16','vqrshlcs.s16','vqrshlhs.s16','vqrshlcc.s16','vqrshllo.s16','vqrshlmi.s16','vqrshlpl.s16','vqrshlvs.s16','vqrshlvc.s16','vqrshlhi.s16','vqrshlls.s16','vqrshlge.s16','vqrshllt.s16','vqrshlgt.s16','vqrshlle.s16', + 'vqrshleq.s32','vqrshlne.s32','vqrshlcs.s32','vqrshlhs.s32','vqrshlcc.s32','vqrshllo.s32','vqrshlmi.s32','vqrshlpl.s32','vqrshlvs.s32','vqrshlvc.s32','vqrshlhi.s32','vqrshlls.s32','vqrshlge.s32','vqrshllt.s32','vqrshlgt.s32','vqrshlle.s32', + 'vqrshleq.s64','vqrshlne.s64','vqrshlcs.s64','vqrshlhs.s64','vqrshlcc.s64','vqrshllo.s64','vqrshlmi.s64','vqrshlpl.s64','vqrshlvs.s64','vqrshlvc.s64','vqrshlhi.s64','vqrshlls.s64','vqrshlge.s64','vqrshllt.s64','vqrshlgt.s64','vqrshlle.s64', + + 'vqrshrneq.s16','vqrshrnne.s16','vqrshrncs.s16','vqrshrnhs.s16','vqrshrncc.s16','vqrshrnlo.s16','vqrshrnmi.s16','vqrshrnpl.s16','vqrshrnvs.s16','vqrshrnvc.s16','vqrshrnhi.s16','vqrshrnls.s16','vqrshrnge.s16','vqrshrnlt.s16','vqrshrngt.s16','vqrshrnle.s16', + 'vqrshrneq.s32','vqrshrnne.s32','vqrshrncs.s32','vqrshrnhs.s32','vqrshrncc.s32','vqrshrnlo.s32','vqrshrnmi.s32','vqrshrnpl.s32','vqrshrnvs.s32','vqrshrnvc.s32','vqrshrnhi.s32','vqrshrnls.s32','vqrshrnge.s32','vqrshrnlt.s32','vqrshrngt.s32','vqrshrnle.s32', + 'vqrshrneq.s64','vqrshrnne.s64','vqrshrncs.s64','vqrshrnhs.s64','vqrshrncc.s64','vqrshrnlo.s64','vqrshrnmi.s64','vqrshrnpl.s64','vqrshrnvs.s64','vqrshrnvc.s64','vqrshrnhi.s64','vqrshrnls.s64','vqrshrnge.s64','vqrshrnlt.s64','vqrshrngt.s64','vqrshrnle.s64', + + 'vqrshruneq.s16','vqrshrunne.s16','vqrshruncs.s16','vqrshrunhs.s16','vqrshruncc.s16','vqrshrunlo.s16','vqrshrunmi.s16','vqrshrunpl.s16','vqrshrunvs.s16','vqrshrunvc.s16','vqrshrunhi.s16','vqrshrunls.s16','vqrshrunge.s16','vqrshrunlt.s16','vqrshrungt.s16','vqrshrunle.s16', + 'vqrshruneq.s32','vqrshrunne.s32','vqrshruncs.s32','vqrshrunhs.s32','vqrshruncc.s32','vqrshrunlo.s32','vqrshrunmi.s32','vqrshrunpl.s32','vqrshrunvs.s32','vqrshrunvc.s32','vqrshrunhi.s32','vqrshrunls.s32','vqrshrunge.s32','vqrshrunlt.s32','vqrshrungt.s32','vqrshrunle.s32', + 'vqrshruneq.s64','vqrshrunne.s64','vqrshruncs.s64','vqrshrunhs.s64','vqrshruncc.s64','vqrshrunlo.s64','vqrshrunmi.s64','vqrshrunpl.s64','vqrshrunvs.s64','vqrshrunvc.s64','vqrshrunhi.s64','vqrshrunls.s64','vqrshrunge.s64','vqrshrunlt.s64','vqrshrungt.s64','vqrshrunle.s64', + + 'vqshleq.s8','vqshlne.s8','vqshlcs.s8','vqshlhs.s8','vqshlcc.s8','vqshllo.s8','vqshlmi.s8','vqshlpl.s8','vqshlvs.s8','vqshlvc.s8','vqshlhi.s8','vqshlls.s8','vqshlge.s8','vqshllt.s8','vqshlgt.s8','vqshlle.s8', + 'vqshleq.s16','vqshlne.s16','vqshlcs.s16','vqshlhs.s16','vqshlcc.s16','vqshllo.s16','vqshlmi.s16','vqshlpl.s16','vqshlvs.s16','vqshlvc.s16','vqshlhi.s16','vqshlls.s16','vqshlge.s16','vqshllt.s16','vqshlgt.s16','vqshlle.s16', + 'vqshleq.s32','vqshlne.s32','vqshlcs.s32','vqshlhs.s32','vqshlcc.s32','vqshllo.s32','vqshlmi.s32','vqshlpl.s32','vqshlvs.s32','vqshlvc.s32','vqshlhi.s32','vqshlls.s32','vqshlge.s32','vqshllt.s32','vqshlgt.s32','vqshlle.s32', + 'vqshleq.s64','vqshlne.s64','vqshlcs.s64','vqshlhs.s64','vqshlcc.s64','vqshllo.s64','vqshlmi.s64','vqshlpl.s64','vqshlvs.s64','vqshlvc.s64','vqshlhi.s64','vqshlls.s64','vqshlge.s64','vqshllt.s64','vqshlgt.s64','vqshlle.s64', + + 'vqshlueq.s8','vqshlune.s8','vqshlucs.s8','vqshluhs.s8','vqshlucc.s8','vqshlulo.s8','vqshlumi.s8','vqshlupl.s8','vqshluvs.s8','vqshluvc.s8','vqshluhi.s8','vqshluls.s8','vqshluge.s8','vqshlult.s8','vqshlugt.s8','vqshlule.s8', + 'vqshlueq.s16','vqshlune.s16','vqshlucs.s16','vqshluhs.s16','vqshlucc.s16','vqshlulo.s16','vqshlumi.s16','vqshlupl.s16','vqshluvs.s16','vqshluvc.s16','vqshluhi.s16','vqshluls.s16','vqshluge.s16','vqshlult.s16','vqshlugt.s16','vqshlule.s16', + 'vqshlueq.s32','vqshlune.s32','vqshlucs.s32','vqshluhs.s32','vqshlucc.s32','vqshlulo.s32','vqshlumi.s32','vqshlupl.s32','vqshluvs.s32','vqshluvc.s32','vqshluhi.s32','vqshluls.s32','vqshluge.s32','vqshlult.s32','vqshlugt.s32','vqshlule.s32', + 'vqshlueq.s64','vqshlune.s64','vqshlucs.s64','vqshluhs.s64','vqshlucc.s64','vqshlulo.s64','vqshlumi.s64','vqshlupl.s64','vqshluvs.s64','vqshluvc.s64','vqshluhi.s64','vqshluls.s64','vqshluge.s64','vqshlult.s64','vqshlugt.s64','vqshlule.s64', + + 'vqshrneq.s16','vqshrnne.s16','vqshrncs.s16','vqshrnhs.s16','vqshrncc.s16','vqshrnlo.s16','vqshrnmi.s16','vqshrnpl.s16','vqshrnvs.s16','vqshrnvc.s16','vqshrnhi.s16','vqshrnls.s16','vqshrnge.s16','vqshrnlt.s16','vqshrngt.s16','vqshrnle.s16', + 'vqshrneq.s32','vqshrnne.s32','vqshrncs.s32','vqshrnhs.s32','vqshrncc.s32','vqshrnlo.s32','vqshrnmi.s32','vqshrnpl.s32','vqshrnvs.s32','vqshrnvc.s32','vqshrnhi.s32','vqshrnls.s32','vqshrnge.s32','vqshrnlt.s32','vqshrngt.s32','vqshrnle.s32', + 'vqshrneq.s64','vqshrnne.s64','vqshrncs.s64','vqshrnhs.s64','vqshrncc.s64','vqshrnlo.s64','vqshrnmi.s64','vqshrnpl.s64','vqshrnvs.s64','vqshrnvc.s64','vqshrnhi.s64','vqshrnls.s64','vqshrnge.s64','vqshrnlt.s64','vqshrngt.s64','vqshrnle.s64', + + 'vqshruneq.s16','vqshrunne.s16','vqshruncs.s16','vqshrunhs.s16','vqshruncc.s16','vqshrunlo.s16','vqshrunmi.s16','vqshrunpl.s16','vqshrunvs.s16','vqshrunvc.s16','vqshrunhi.s16','vqshrunls.s16','vqshrunge.s16','vqshrunlt.s16','vqshrungt.s16','vqshrunle.s16', + 'vqshruneq.s32','vqshrunne.s32','vqshruncs.s32','vqshrunhs.s32','vqshruncc.s32','vqshrunlo.s32','vqshrunmi.s32','vqshrunpl.s32','vqshrunvs.s32','vqshrunvc.s32','vqshrunhi.s32','vqshrunls.s32','vqshrunge.s32','vqshrunlt.s32','vqshrungt.s32','vqshrunle.s32', + 'vqshruneq.s64','vqshrunne.s64','vqshruncs.s64','vqshrunhs.s64','vqshruncc.s64','vqshrunlo.s64','vqshrunmi.s64','vqshrunpl.s64','vqshrunvs.s64','vqshrunvc.s64','vqshrunhi.s64','vqshrunls.s64','vqshrunge.s64','vqshrunlt.s64','vqshrungt.s64','vqshrunle.s64', + + 'vqsubeq.s8','vqsubne.s8','vqsubcs.s8','vqsubhs.s8','vqsubcc.s8','vqsublo.s8','vqsubmi.s8','vqsubpl.s8','vqsubvs.s8','vqsubvc.s8','vqsubhi.s8','vqsubls.s8','vqsubge.s8','vqsublt.s8','vqsubgt.s8','vqsuble.s8', + 'vqsubeq.s16','vqsubne.s16','vqsubcs.s16','vqsubhs.s16','vqsubcc.s16','vqsublo.s16','vqsubmi.s16','vqsubpl.s16','vqsubvs.s16','vqsubvc.s16','vqsubhi.s16','vqsubls.s16','vqsubge.s16','vqsublt.s16','vqsubgt.s16','vqsuble.s16', + 'vqsubeq.s32','vqsubne.s32','vqsubcs.s32','vqsubhs.s32','vqsubcc.s32','vqsublo.s32','vqsubmi.s32','vqsubpl.s32','vqsubvs.s32','vqsubvc.s32','vqsubhi.s32','vqsubls.s32','vqsubge.s32','vqsublt.s32','vqsubgt.s32','vqsuble.s32', + 'vqsubeq.s64','vqsubne.s64','vqsubcs.s64','vqsubhs.s64','vqsubcc.s64','vqsublo.s64','vqsubmi.s64','vqsubpl.s64','vqsubvs.s64','vqsubvc.s64','vqsubhi.s64','vqsubls.s64','vqsubge.s64','vqsublt.s64','vqsubgt.s64','vqsuble.s64', + + 'vrhaddeq.s8','vrhaddne.s8','vrhaddcs.s8','vrhaddhs.s8','vrhaddcc.s8','vrhaddlo.s8','vrhaddmi.s8','vrhaddpl.s8','vrhaddvs.s8','vrhaddvc.s8','vrhaddhi.s8','vrhaddls.s8','vrhaddge.s8','vrhaddlt.s8','vrhaddgt.s8','vrhaddle.s8', + 'vrhaddeq.s16','vrhaddne.s16','vrhaddcs.s16','vrhaddhs.s16','vrhaddcc.s16','vrhaddlo.s16','vrhaddmi.s16','vrhaddpl.s16','vrhaddvs.s16','vrhaddvc.s16','vrhaddhi.s16','vrhaddls.s16','vrhaddge.s16','vrhaddlt.s16','vrhaddgt.s16','vrhaddle.s16', + 'vrhaddeq.s32','vrhaddne.s32','vrhaddcs.s32','vrhaddhs.s32','vrhaddcc.s32','vrhaddlo.s32','vrhaddmi.s32','vrhaddpl.s32','vrhaddvs.s32','vrhaddvc.s32','vrhaddhi.s32','vrhaddls.s32','vrhaddge.s32','vrhaddlt.s32','vrhaddgt.s32','vrhaddle.s32', + + 'vrshleq.s8','vrshlne.s8','vrshlcs.s8','vrshlhs.s8','vrshlcc.s8','vrshllo.s8','vrshlmi.s8','vrshlpl.s8','vrshlvs.s8','vrshlvc.s8','vrshlhi.s8','vrshlls.s8','vrshlge.s8','vrshllt.s8','vrshlgt.s8','vrshlle.s8', + 'vrshleq.s16','vrshlne.s16','vrshlcs.s16','vrshlhs.s16','vrshlcc.s16','vrshllo.s16','vrshlmi.s16','vrshlpl.s16','vrshlvs.s16','vrshlvc.s16','vrshlhi.s16','vrshlls.s16','vrshlge.s16','vrshllt.s16','vrshlgt.s16','vrshlle.s16', + 'vrshleq.s32','vrshlne.s32','vrshlcs.s32','vrshlhs.s32','vrshlcc.s32','vrshllo.s32','vrshlmi.s32','vrshlpl.s32','vrshlvs.s32','vrshlvc.s32','vrshlhi.s32','vrshlls.s32','vrshlge.s32','vrshllt.s32','vrshlgt.s32','vrshlle.s32', + 'vrshleq.s64','vrshlne.s64','vrshlcs.s64','vrshlhs.s64','vrshlcc.s64','vrshllo.s64','vrshlmi.s64','vrshlpl.s64','vrshlvs.s64','vrshlvc.s64','vrshlhi.s64','vrshlls.s64','vrshlge.s64','vrshllt.s64','vrshlgt.s64','vrshlle.s64', + + 'vrshreq.s8','vrshrne.s8','vrshrcs.s8','vrshrhs.s8','vrshrcc.s8','vrshrlo.s8','vrshrmi.s8','vrshrpl.s8','vrshrvs.s8','vrshrvc.s8','vrshrhi.s8','vrshrls.s8','vrshrge.s8','vrshrlt.s8','vrshrgt.s8','vrshrle.s8', + 'vrshreq.s16','vrshrne.s16','vrshrcs.s16','vrshrhs.s16','vrshrcc.s16','vrshrlo.s16','vrshrmi.s16','vrshrpl.s16','vrshrvs.s16','vrshrvc.s16','vrshrhi.s16','vrshrls.s16','vrshrge.s16','vrshrlt.s16','vrshrgt.s16','vrshrle.s16', + 'vrshreq.s32','vrshrne.s32','vrshrcs.s32','vrshrhs.s32','vrshrcc.s32','vrshrlo.s32','vrshrmi.s32','vrshrpl.s32','vrshrvs.s32','vrshrvc.s32','vrshrhi.s32','vrshrls.s32','vrshrge.s32','vrshrlt.s32','vrshrgt.s32','vrshrle.s32', + 'vrshreq.s64','vrshrne.s64','vrshrcs.s64','vrshrhs.s64','vrshrcc.s64','vrshrlo.s64','vrshrmi.s64','vrshrpl.s64','vrshrvs.s64','vrshrvc.s64','vrshrhi.s64','vrshrls.s64','vrshrge.s64','vrshrlt.s64','vrshrgt.s64','vrshrle.s64', + + 'vrsraeq.s8','vrsrane.s8','vrsracs.s8','vrsrahs.s8','vrsracc.s8','vrsralo.s8','vrsrami.s8','vrsrapl.s8','vrsravs.s8','vrsravc.s8','vrsrahi.s8','vrsrals.s8','vrsrage.s8','vrsralt.s8','vrsragt.s8','vrsrale.s8', + 'vrsraeq.s16','vrsrane.s16','vrsracs.s16','vrsrahs.s16','vrsracc.s16','vrsralo.s16','vrsrami.s16','vrsrapl.s16','vrsravs.s16','vrsravc.s16','vrsrahi.s16','vrsrals.s16','vrsrage.s16','vrsralt.s16','vrsragt.s16','vrsrale.s16', + 'vrsraeq.s32','vrsrane.s32','vrsracs.s32','vrsrahs.s32','vrsracc.s32','vrsralo.s32','vrsrami.s32','vrsrapl.s32','vrsravs.s32','vrsravc.s32','vrsrahi.s32','vrsrals.s32','vrsrage.s32','vrsralt.s32','vrsragt.s32','vrsrale.s32', + 'vrsraeq.s64','vrsrane.s64','vrsracs.s64','vrsrahs.s64','vrsracc.s64','vrsralo.s64','vrsrami.s64','vrsrapl.s64','vrsravs.s64','vrsravc.s64','vrsrahi.s64','vrsrals.s64','vrsrage.s64','vrsralt.s64','vrsragt.s64','vrsrale.s64', + + 'vshleq.s8','vshlne.s8','vshlcs.s8','vshlhs.s8','vshlcc.s8','vshllo.s8','vshlmi.s8','vshlpl.s8','vshlvs.s8','vshlvc.s8','vshlhi.s8','vshlls.s8','vshlge.s8','vshllt.s8','vshlgt.s8','vshlle.s8', + 'vshleq.s16','vshlne.s16','vshlcs.s16','vshlhs.s16','vshlcc.s16','vshllo.s16','vshlmi.s16','vshlpl.s16','vshlvs.s16','vshlvc.s16','vshlhi.s16','vshlls.s16','vshlge.s16','vshllt.s16','vshlgt.s16','vshlle.s16', + 'vshleq.s32','vshlne.s32','vshlcs.s32','vshlhs.s32','vshlcc.s32','vshllo.s32','vshlmi.s32','vshlpl.s32','vshlvs.s32','vshlvc.s32','vshlhi.s32','vshlls.s32','vshlge.s32','vshllt.s32','vshlgt.s32','vshlle.s32', + 'vshleq.s64','vshlne.s64','vshlcs.s64','vshlhs.s64','vshlcc.s64','vshllo.s64','vshlmi.s64','vshlpl.s64','vshlvs.s64','vshlvc.s64','vshlhi.s64','vshlls.s64','vshlge.s64','vshllt.s64','vshlgt.s64','vshlle.s64', + + 'vshlleq.s8','vshllne.s8','vshllcs.s8','vshllhs.s8','vshllcc.s8','vshlllo.s8','vshllmi.s8','vshllpl.s8','vshllvs.s8','vshllvc.s8','vshllhi.s8','vshllls.s8','vshllge.s8','vshlllt.s8','vshllgt.s8','vshllle.s8', + 'vshlleq.s16','vshllne.s16','vshllcs.s16','vshllhs.s16','vshllcc.s16','vshlllo.s16','vshllmi.s16','vshllpl.s16','vshllvs.s16','vshllvc.s16','vshllhi.s16','vshllls.s16','vshllge.s16','vshlllt.s16','vshllgt.s16','vshllle.s16', + 'vshlleq.s32','vshllne.s32','vshllcs.s32','vshllhs.s32','vshllcc.s32','vshlllo.s32','vshllmi.s32','vshllpl.s32','vshllvs.s32','vshllvc.s32','vshllhi.s32','vshllls.s32','vshllge.s32','vshlllt.s32','vshllgt.s32','vshllle.s32', + + 'vshreq.s8','vshrne.s8','vshrcs.s8','vshrhs.s8','vshrcc.s8','vshrlo.s8','vshrmi.s8','vshrpl.s8','vshrvs.s8','vshrvc.s8','vshrhi.s8','vshrls.s8','vshrge.s8','vshrlt.s8','vshrgt.s8','vshrle.s8', + 'vshreq.s16','vshrne.s16','vshrcs.s16','vshrhs.s16','vshrcc.s16','vshrlo.s16','vshrmi.s16','vshrpl.s16','vshrvs.s16','vshrvc.s16','vshrhi.s16','vshrls.s16','vshrge.s16','vshrlt.s16','vshrgt.s16','vshrle.s16', + 'vshreq.s32','vshrne.s32','vshrcs.s32','vshrhs.s32','vshrcc.s32','vshrlo.s32','vshrmi.s32','vshrpl.s32','vshrvs.s32','vshrvc.s32','vshrhi.s32','vshrls.s32','vshrge.s32','vshrlt.s32','vshrgt.s32','vshrle.s32', + 'vshreq.s64','vshrne.s64','vshrcs.s64','vshrhs.s64','vshrcc.s64','vshrlo.s64','vshrmi.s64','vshrpl.s64','vshrvs.s64','vshrvc.s64','vshrhi.s64','vshrls.s64','vshrge.s64','vshrlt.s64','vshrgt.s64','vshrle.s64', + + 'vsraeq.s8','vsrane.s8','vsracs.s8','vsrahs.s8','vsracc.s8','vsralo.s8','vsrami.s8','vsrapl.s8','vsravs.s8','vsravc.s8','vsrahi.s8','vsrals.s8','vsrage.s8','vsralt.s8','vsragt.s8','vsrale.s8', + 'vsraeq.s16','vsrane.s16','vsracs.s16','vsrahs.s16','vsracc.s16','vsralo.s16','vsrami.s16','vsrapl.s16','vsravs.s16','vsravc.s16','vsrahi.s16','vsrals.s16','vsrage.s16','vsralt.s16','vsragt.s16','vsrale.s16', + 'vsraeq.s32','vsrane.s32','vsracs.s32','vsrahs.s32','vsracc.s32','vsralo.s32','vsrami.s32','vsrapl.s32','vsravs.s32','vsravc.s32','vsrahi.s32','vsrals.s32','vsrage.s32','vsralt.s32','vsragt.s32','vsrale.s32', + 'vsraeq.s64','vsrane.s64','vsracs.s64','vsrahs.s64','vsracc.s64','vsralo.s64','vsrami.s64','vsrapl.s64','vsravs.s64','vsravc.s64','vsrahi.s64','vsrals.s64','vsrage.s64','vsralt.s64','vsragt.s64','vsrale.s64', + + 'vsubleq.s8','vsublne.s8','vsublcs.s8','vsublhs.s8','vsublcc.s8','vsubllo.s8','vsublmi.s8','vsublpl.s8','vsublvs.s8','vsublvc.s8','vsublhi.s8','vsublls.s8','vsublge.s8','vsubllt.s8','vsublgt.s8','vsublle.s8', + 'vsubleq.s16','vsublne.s16','vsublcs.s16','vsublhs.s16','vsublcc.s16','vsubllo.s16','vsublmi.s16','vsublpl.s16','vsublvs.s16','vsublvc.s16','vsublhi.s16','vsublls.s16','vsublge.s16','vsubllt.s16','vsublgt.s16','vsublle.s16', + 'vsubleq.s32','vsublne.s32','vsublcs.s32','vsublhs.s32','vsublcc.s32','vsubllo.s32','vsublmi.s32','vsublpl.s32','vsublvs.s32','vsublvc.s32','vsublhi.s32','vsublls.s32','vsublge.s32','vsubllt.s32','vsublgt.s32','vsublle.s32', + + 'vsubheq.s8','vsubhne.s8','vsubhcs.s8','vsubhhs.s8','vsubhcc.s8','vsubhlo.s8','vsubhmi.s8','vsubhpl.s8','vsubhvs.s8','vsubhvc.s8','vsubhhi.s8','vsubhls.s8','vsubhge.s8','vsubhlt.s8','vsubhgt.s8','vsubhle.s8', + 'vsubheq.s16','vsubhne.s16','vsubhcs.s16','vsubhhs.s16','vsubhcc.s16','vsubhlo.s16','vsubhmi.s16','vsubhpl.s16','vsubhvs.s16','vsubhvc.s16','vsubhhi.s16','vsubhls.s16','vsubhge.s16','vsubhlt.s16','vsubhgt.s16','vsubhle.s16', + 'vsubheq.s32','vsubhne.s32','vsubhcs.s32','vsubhhs.s32','vsubhcc.s32','vsubhlo.s32','vsubhmi.s32','vsubhpl.s32','vsubhvs.s32','vsubhvc.s32','vsubhhi.s32','vsubhls.s32','vsubhge.s32','vsubhlt.s32','vsubhgt.s32','vsubhle.s32' + ), + /* Conditional NEON SIMD Unsigned Integer Instructions */ + 33 => array( + 'vabaeq.u8','vabane.u8','vabacs.u8','vabahs.u8','vabacc.u8','vabalo.u8','vabami.u8','vabapl.u8','vabavs.u8','vabavc.u8','vabahi.u8','vabals.u8','vabage.u8','vabalt.u8','vabagt.u8','vabale.u8', + 'vabaeq.u16','vabane.u16','vabacs.u16','vabahs.u16','vabacc.u16','vabalo.u16','vabami.u16','vabapl.u16','vabavs.u16','vabavc.u16','vabahi.u16','vabals.u16','vabage.u16','vabalt.u16','vabagt.u16','vabale.u16', + 'vabaeq.u32','vabane.u32','vabacs.u32','vabahs.u32','vabacc.u32','vabalo.u32','vabami.u32','vabapl.u32','vabavs.u32','vabavc.u32','vabahi.u32','vabals.u32','vabage.u32','vabalt.u32','vabagt.u32','vabale.u32', + + 'vabaleq.u8','vabalne.u8','vabalcs.u8','vabalhs.u8','vabalcc.u8','vaballo.u8','vabalmi.u8','vabalpl.u8','vabalvs.u8','vabalvc.u8','vabalhi.u8','vaballs.u8','vabalge.u8','vaballt.u8','vabalgt.u8','vaballe.u8', + 'vabaleq.u16','vabalne.u16','vabalcs.u16','vabalhs.u16','vabalcc.u16','vaballo.u16','vabalmi.u16','vabalpl.u16','vabalvs.u16','vabalvc.u16','vabalhi.u16','vaballs.u16','vabalge.u16','vaballt.u16','vabalgt.u16','vaballe.u16', + 'vabaleq.u32','vabalne.u32','vabalcs.u32','vabalhs.u32','vabalcc.u32','vaballo.u32','vabalmi.u32','vabalpl.u32','vabalvs.u32','vabalvc.u32','vabalhi.u32','vaballs.u32','vabalge.u32','vaballt.u32','vabalgt.u32','vaballe.u32', + + 'vabdeq.u8','vabdne.u8','vabdcs.u8','vabdhs.u8','vabdcc.u8','vabdlo.u8','vabdmi.u8','vabdpl.u8','vabdvs.u8','vabdvc.u8','vabdhi.u8','vabdls.u8','vabdge.u8','vabdlt.u8','vabdgt.u8','vabdle.u8', + 'vabdeq.u16','vabdne.u16','vabdcs.u16','vabdhs.u16','vabdcc.u16','vabdlo.u16','vabdmi.u16','vabdpl.u16','vabdvs.u16','vabdvc.u16','vabdhi.u16','vabdls.u16','vabdge.u16','vabdlt.u16','vabdgt.u16','vabdle.u16', + 'vabdeq.u32','vabdne.u32','vabdcs.u32','vabdhs.u32','vabdcc.u32','vabdlo.u32','vabdmi.u32','vabdpl.u32','vabdvs.u32','vabdvc.u32','vabdhi.u32','vabdls.u32','vabdge.u32','vabdlt.u32','vabdgt.u32','vabdle.u32', + + 'vaddleq.u8','vaddlne.u8','vaddlcs.u8','vaddlhs.u8','vaddlcc.u8','vaddllo.u8','vaddlmi.u8','vaddlpl.u8','vaddlvs.u8','vaddlvc.u8','vaddlhi.u8','vaddlls.u8','vaddlge.u8','vaddllt.u8','vaddlgt.u8','vaddlle.u8', + 'vaddleq.u16','vaddlne.u16','vaddlcs.u16','vaddlhs.u16','vaddlcc.u16','vaddllo.u16','vaddlmi.u16','vaddlpl.u16','vaddlvs.u16','vaddlvc.u16','vaddlhi.u16','vaddlls.u16','vaddlge.u16','vaddllt.u16','vaddlgt.u16','vaddlle.u16', + 'vaddleq.u32','vaddlne.u32','vaddlcs.u32','vaddlhs.u32','vaddlcc.u32','vaddllo.u32','vaddlmi.u32','vaddlpl.u32','vaddlvs.u32','vaddlvc.u32','vaddlhi.u32','vaddlls.u32','vaddlge.u32','vaddllt.u32','vaddlgt.u32','vaddlle.u32', + + 'vsubleq.u8','vsublne.u8','vsublcs.u8','vsublhs.u8','vsublcc.u8','vsubllo.u8','vsublmi.u8','vsublpl.u8','vsublvs.u8','vsublvc.u8','vsublhi.u8','vsublls.u8','vsublge.u8','vsubllt.u8','vsublgt.u8','vsublle.u8', + 'vsubleq.u16','vsublne.u16','vsublcs.u16','vsublhs.u16','vsublcc.u16','vsubllo.u16','vsublmi.u16','vsublpl.u16','vsublvs.u16','vsublvc.u16','vsublhi.u16','vsublls.u16','vsublge.u16','vsubllt.u16','vsublgt.u16','vsublle.u16', + 'vsubleq.u32','vsublne.u32','vsublcs.u32','vsublhs.u32','vsublcc.u32','vsubllo.u32','vsublmi.u32','vsublpl.u32','vsublvs.u32','vsublvc.u32','vsublhi.u32','vsublls.u32','vsublge.u32','vsubllt.u32','vsublgt.u32','vsublle.u32', + + 'vaddweq.u8','vaddwne.u8','vaddwcs.u8','vaddwhs.u8','vaddwcc.u8','vaddwlo.u8','vaddwmi.u8','vaddwpl.u8','vaddwvs.u8','vaddwvc.u8','vaddwhi.u8','vaddwls.u8','vaddwge.u8','vaddwlt.u8','vaddwgt.u8','vaddwle.u8', + 'vaddweq.u16','vaddwne.u16','vaddwcs.u16','vaddwhs.u16','vaddwcc.u16','vaddwlo.u16','vaddwmi.u16','vaddwpl.u16','vaddwvs.u16','vaddwvc.u16','vaddwhi.u16','vaddwls.u16','vaddwge.u16','vaddwlt.u16','vaddwgt.u16','vaddwle.u16', + 'vaddweq.u32','vaddwne.u32','vaddwcs.u32','vaddwhs.u32','vaddwcc.u32','vaddwlo.u32','vaddwmi.u32','vaddwpl.u32','vaddwvs.u32','vaddwvc.u32','vaddwhi.u32','vaddwls.u32','vaddwge.u32','vaddwlt.u32','vaddwgt.u32','vaddwle.u32', + + 'vsubheq.u8','vsubhne.u8','vsubhcs.u8','vsubhhs.u8','vsubhcc.u8','vsubhlo.u8','vsubhmi.u8','vsubhpl.u8','vsubhvs.u8','vsubhvc.u8','vsubhhi.u8','vsubhls.u8','vsubhge.u8','vsubhlt.u8','vsubhgt.u8','vsubhle.u8', + 'vsubheq.u16','vsubhne.u16','vsubhcs.u16','vsubhhs.u16','vsubhcc.u16','vsubhlo.u16','vsubhmi.u16','vsubhpl.u16','vsubhvs.u16','vsubhvc.u16','vsubhhi.u16','vsubhls.u16','vsubhge.u16','vsubhlt.u16','vsubhgt.u16','vsubhle.u16', + 'vsubheq.u32','vsubhne.u32','vsubhcs.u32','vsubhhs.u32','vsubhcc.u32','vsubhlo.u32','vsubhmi.u32','vsubhpl.u32','vsubhvs.u32','vsubhvc.u32','vsubhhi.u32','vsubhls.u32','vsubhge.u32','vsubhlt.u32','vsubhgt.u32','vsubhle.u32', + + 'vhaddeq.u8','vhaddne.u8','vhaddcs.u8','vhaddhs.u8','vhaddcc.u8','vhaddlo.u8','vhaddmi.u8','vhaddpl.u8','vhaddvs.u8','vhaddvc.u8','vhaddhi.u8','vhaddls.u8','vhaddge.u8','vhaddlt.u8','vhaddgt.u8','vhaddle.u8', + 'vhaddeq.u16','vhaddne.u16','vhaddcs.u16','vhaddhs.u16','vhaddcc.u16','vhaddlo.u16','vhaddmi.u16','vhaddpl.u16','vhaddvs.u16','vhaddvc.u16','vhaddhi.u16','vhaddls.u16','vhaddge.u16','vhaddlt.u16','vhaddgt.u16','vhaddle.u16', + 'vhaddeq.u32','vhaddne.u32','vhaddcs.u32','vhaddhs.u32','vhaddcc.u32','vhaddlo.u32','vhaddmi.u32','vhaddpl.u32','vhaddvs.u32','vhaddvc.u32','vhaddhi.u32','vhaddls.u32','vhaddge.u32','vhaddlt.u32','vhaddgt.u32','vhaddle.u32', + + 'vhsubeq.u8','vhsubne.u8','vhsubcs.u8','vhsubhs.u8','vhsubcc.u8','vhsublo.u8','vhsubmi.u8','vhsubpl.u8','vhsubvs.u8','vhsubvc.u8','vhsubhi.u8','vhsubls.u8','vhsubge.u8','vhsublt.u8','vhsubgt.u8','vhsuble.u8', + 'vhsubeq.u16','vhsubne.u16','vhsubcs.u16','vhsubhs.u16','vhsubcc.u16','vhsublo.u16','vhsubmi.u16','vhsubpl.u16','vhsubvs.u16','vhsubvc.u16','vhsubhi.u16','vhsubls.u16','vhsubge.u16','vhsublt.u16','vhsubgt.u16','vhsuble.u16', + 'vhsubeq.u32','vhsubne.u32','vhsubcs.u32','vhsubhs.u32','vhsubcc.u32','vhsublo.u32','vhsubmi.u32','vhsubpl.u32','vhsubvs.u32','vhsubvc.u32','vhsubhi.u32','vhsubls.u32','vhsubge.u32','vhsublt.u32','vhsubgt.u32','vhsuble.u32', + + 'vpadaleq.u8','vpadalne.u8','vpadalcs.u8','vpadalhs.u8','vpadalcc.u8','vpadallo.u8','vpadalmi.u8','vpadalpl.u8','vpadalvs.u8','vpadalvc.u8','vpadalhi.u8','vpadalls.u8','vpadalge.u8','vpadallt.u8','vpadalgt.u8','vpadalle.u8', + 'vpadaleq.u16','vpadalne.u16','vpadalcs.u16','vpadalhs.u16','vpadalcc.u16','vpadallo.u16','vpadalmi.u16','vpadalpl.u16','vpadalvs.u16','vpadalvc.u16','vpadalhi.u16','vpadalls.u16','vpadalge.u16','vpadallt.u16','vpadalgt.u16','vpadalle.u16', + 'vpadaleq.u32','vpadalne.u32','vpadalcs.u32','vpadalhs.u32','vpadalcc.u32','vpadallo.u32','vpadalmi.u32','vpadalpl.u32','vpadalvs.u32','vpadalvc.u32','vpadalhi.u32','vpadalls.u32','vpadalge.u32','vpadallt.u32','vpadalgt.u32','vpadalle.u32', + + 'vpaddleq.u8','vpaddlne.u8','vpaddlcs.u8','vpaddlhs.u8','vpaddlcc.u8','vpaddllo.u8','vpaddlmi.u8','vpaddlpl.u8','vpaddlvs.u8','vpaddlvc.u8','vpaddlhi.u8','vpaddlls.u8','vpaddlge.u8','vpaddllt.u8','vpaddlgt.u8','vpaddlle.u8', + 'vpaddleq.u16','vpaddlne.u16','vpaddlcs.u16','vpaddlhs.u16','vpaddlcc.u16','vpaddllo.u16','vpaddlmi.u16','vpaddlpl.u16','vpaddlvs.u16','vpaddlvc.u16','vpaddlhi.u16','vpaddlls.u16','vpaddlge.u16','vpaddllt.u16','vpaddlgt.u16','vpaddlle.u16', + 'vpaddleq.u32','vpaddlne.u32','vpaddlcs.u32','vpaddlhs.u32','vpaddlcc.u32','vpaddllo.u32','vpaddlmi.u32','vpaddlpl.u32','vpaddlvs.u32','vpaddlvc.u32','vpaddlhi.u32','vpaddlls.u32','vpaddlge.u32','vpaddllt.u32','vpaddlgt.u32','vpaddlle.u32', + + 'vcgeeq.u8','vcgene.u8','vcgecs.u8','vcgehs.u8','vcgecc.u8','vcgelo.u8','vcgemi.u8','vcgepl.u8','vcgevs.u8','vcgevc.u8','vcgehi.u8','vcgels.u8','vcgege.u8','vcgelt.u8','vcgegt.u8','vcgele.u8', + 'vcgeeq.u16','vcgene.u16','vcgecs.u16','vcgehs.u16','vcgecc.u16','vcgelo.u16','vcgemi.u16','vcgepl.u16','vcgevs.u16','vcgevc.u16','vcgehi.u16','vcgels.u16','vcgege.u16','vcgelt.u16','vcgegt.u16','vcgele.u16', + 'vcgeeq.u32','vcgene.u32','vcgecs.u32','vcgehs.u32','vcgecc.u32','vcgelo.u32','vcgemi.u32','vcgepl.u32','vcgevs.u32','vcgevc.u32','vcgehi.u32','vcgels.u32','vcgege.u32','vcgelt.u32','vcgegt.u32','vcgele.u32', + + 'vcleeq.u8','vclene.u8','vclecs.u8','vclehs.u8','vclecc.u8','vclelo.u8','vclemi.u8','vclepl.u8','vclevs.u8','vclevc.u8','vclehi.u8','vclels.u8','vclege.u8','vclelt.u8','vclegt.u8','vclele.u8', + 'vcleeq.u16','vclene.u16','vclecs.u16','vclehs.u16','vclecc.u16','vclelo.u16','vclemi.u16','vclepl.u16','vclevs.u16','vclevc.u16','vclehi.u16','vclels.u16','vclege.u16','vclelt.u16','vclegt.u16','vclele.u16', + 'vcleeq.u32','vclene.u32','vclecs.u32','vclehs.u32','vclecc.u32','vclelo.u32','vclemi.u32','vclepl.u32','vclevs.u32','vclevc.u32','vclehi.u32','vclels.u32','vclege.u32','vclelt.u32','vclegt.u32','vclele.u32', + + 'vcgteq.u8','vcgtne.u8','vcgtcs.u8','vcgths.u8','vcgtcc.u8','vcgtlo.u8','vcgtmi.u8','vcgtpl.u8','vcgtvs.u8','vcgtvc.u8','vcgthi.u8','vcgtls.u8','vcgtge.u8','vcgtlt.u8','vcgtgt.u8','vcgtle.u8', + 'vcgteq.u16','vcgtne.u16','vcgtcs.u16','vcgths.u16','vcgtcc.u16','vcgtlo.u16','vcgtmi.u16','vcgtpl.u16','vcgtvs.u16','vcgtvc.u16','vcgthi.u16','vcgtls.u16','vcgtge.u16','vcgtlt.u16','vcgtgt.u16','vcgtle.u16', + 'vcgteq.u32','vcgtne.u32','vcgtcs.u32','vcgths.u32','vcgtcc.u32','vcgtlo.u32','vcgtmi.u32','vcgtpl.u32','vcgtvs.u32','vcgtvc.u32','vcgthi.u32','vcgtls.u32','vcgtge.u32','vcgtlt.u32','vcgtgt.u32','vcgtle.u32', + + 'vclteq.u8','vcltne.u8','vcltcs.u8','vclths.u8','vcltcc.u8','vcltlo.u8','vcltmi.u8','vcltpl.u8','vcltvs.u8','vcltvc.u8','vclthi.u8','vcltls.u8','vcltge.u8','vcltlt.u8','vcltgt.u8','vcltle.u8', + 'vclteq.u16','vcltne.u16','vcltcs.u16','vclths.u16','vcltcc.u16','vcltlo.u16','vcltmi.u16','vcltpl.u16','vcltvs.u16','vcltvc.u16','vclthi.u16','vcltls.u16','vcltge.u16','vcltlt.u16','vcltgt.u16','vcltle.u16', + 'vclteq.u32','vcltne.u32','vcltcs.u32','vclths.u32','vcltcc.u32','vcltlo.u32','vcltmi.u32','vcltpl.u32','vcltvs.u32','vcltvc.u32','vclthi.u32','vcltls.u32','vcltge.u32','vcltlt.u32','vcltgt.u32','vcltle.u32', + + 'vmaxeq.u8','vmaxne.u8','vmaxcs.u8','vmaxhs.u8','vmaxcc.u8','vmaxlo.u8','vmaxmi.u8','vmaxpl.u8','vmaxvs.u8','vmaxvc.u8','vmaxhi.u8','vmaxls.u8','vmaxge.u8','vmaxlt.u8','vmaxgt.u8','vmaxle.u8', + 'vmaxeq.u16','vmaxne.u16','vmaxcs.u16','vmaxhs.u16','vmaxcc.u16','vmaxlo.u16','vmaxmi.u16','vmaxpl.u16','vmaxvs.u16','vmaxvc.u16','vmaxhi.u16','vmaxls.u16','vmaxge.u16','vmaxlt.u16','vmaxgt.u16','vmaxle.u16', + 'vmaxeq.u32','vmaxne.u32','vmaxcs.u32','vmaxhs.u32','vmaxcc.u32','vmaxlo.u32','vmaxmi.u32','vmaxpl.u32','vmaxvs.u32','vmaxvc.u32','vmaxhi.u32','vmaxls.u32','vmaxge.u32','vmaxlt.u32','vmaxgt.u32','vmaxle.u32', + + 'vmineq.u8','vminne.u8','vmincs.u8','vminhs.u8','vmincc.u8','vminlo.u8','vminmi.u8','vminpl.u8','vminvs.u8','vminvc.u8','vminhi.u8','vminls.u8','vminge.u8','vminlt.u8','vmingt.u8','vminle.u8', + 'vmineq.u16','vminne.u16','vmincs.u16','vminhs.u16','vmincc.u16','vminlo.u16','vminmi.u16','vminpl.u16','vminvs.u16','vminvc.u16','vminhi.u16','vminls.u16','vminge.u16','vminlt.u16','vmingt.u16','vminle.u16', + 'vmineq.u32','vminne.u32','vmincs.u32','vminhs.u32','vmincc.u32','vminlo.u32','vminmi.u32','vminpl.u32','vminvs.u32','vminvc.u32','vminhi.u32','vminls.u32','vminge.u32','vminlt.u32','vmingt.u32','vminle.u32', + + 'vmlaleq.u8','vmlalne.u8','vmlalcs.u8','vmlalhs.u8','vmlalcc.u8','vmlallo.u8','vmlalmi.u8','vmlalpl.u8','vmlalvs.u8','vmlalvc.u8','vmlalhi.u8','vmlalls.u8','vmlalge.u8','vmlallt.u8','vmlalgt.u8','vmlalle.u8', + 'vmlaleq.u16','vmlalne.u16','vmlalcs.u16','vmlalhs.u16','vmlalcc.u16','vmlallo.u16','vmlalmi.u16','vmlalpl.u16','vmlalvs.u16','vmlalvc.u16','vmlalhi.u16','vmlalls.u16','vmlalge.u16','vmlallt.u16','vmlalgt.u16','vmlalle.u16', + 'vmlaleq.u32','vmlalne.u32','vmlalcs.u32','vmlalhs.u32','vmlalcc.u32','vmlallo.u32','vmlalmi.u32','vmlalpl.u32','vmlalvs.u32','vmlalvc.u32','vmlalhi.u32','vmlalls.u32','vmlalge.u32','vmlallt.u32','vmlalgt.u32','vmlalle.u32', + + 'vmlsleq.u8','vmlslne.u8','vmlslcs.u8','vmlslhs.u8','vmlslcc.u8','vmlsllo.u8','vmlslmi.u8','vmlslpl.u8','vmlslvs.u8','vmlslvc.u8','vmlslhi.u8','vmlslls.u8','vmlslge.u8','vmlsllt.u8','vmlslgt.u8','vmlslle.u8', + 'vmlsleq.u16','vmlslne.u16','vmlslcs.u16','vmlslhs.u16','vmlslcc.u16','vmlsllo.u16','vmlslmi.u16','vmlslpl.u16','vmlslvs.u16','vmlslvc.u16','vmlslhi.u16','vmlslls.u16','vmlslge.u16','vmlsllt.u16','vmlslgt.u16','vmlslle.u16', + 'vmlsleq.u32','vmlslne.u32','vmlslcs.u32','vmlslhs.u32','vmlslcc.u32','vmlsllo.u32','vmlslmi.u32','vmlslpl.u32','vmlslvs.u32','vmlslvc.u32','vmlslhi.u32','vmlslls.u32','vmlslge.u32','vmlsllt.u32','vmlslgt.u32','vmlslle.u32', + + 'vmulleq.u8','vmullne.u8','vmullcs.u8','vmullhs.u8','vmullcc.u8','vmulllo.u8','vmullmi.u8','vmullpl.u8','vmullvs.u8','vmullvc.u8','vmullhi.u8','vmullls.u8','vmullge.u8','vmulllt.u8','vmullgt.u8','vmullle.u8', + 'vmulleq.u16','vmullne.u16','vmullcs.u16','vmullhs.u16','vmullcc.u16','vmulllo.u16','vmullmi.u16','vmullpl.u16','vmullvs.u16','vmullvc.u16','vmullhi.u16','vmullls.u16','vmullge.u16','vmulllt.u16','vmullgt.u16','vmullle.u16', + 'vmulleq.u32','vmullne.u32','vmullcs.u32','vmullhs.u32','vmullcc.u32','vmulllo.u32','vmullmi.u32','vmullpl.u32','vmullvs.u32','vmullvc.u32','vmullhi.u32','vmullls.u32','vmullge.u32','vmulllt.u32','vmullgt.u32','vmullle.u32', + + 'vmovleq.u8','vmovlne.u8','vmovlcs.u8','vmovlhs.u8','vmovlcc.u8','vmovllo.u8','vmovlmi.u8','vmovlpl.u8','vmovlvs.u8','vmovlvc.u8','vmovlhi.u8','vmovlls.u8','vmovlge.u8','vmovllt.u8','vmovlgt.u8','vmovlle.u8', + 'vmovleq.u16','vmovlne.u16','vmovlcs.u16','vmovlhs.u16','vmovlcc.u16','vmovllo.u16','vmovlmi.u16','vmovlpl.u16','vmovlvs.u16','vmovlvc.u16','vmovlhi.u16','vmovlls.u16','vmovlge.u16','vmovllt.u16','vmovlgt.u16','vmovlle.u16', + 'vmovleq.u32','vmovlne.u32','vmovlcs.u32','vmovlhs.u32','vmovlcc.u32','vmovllo.u32','vmovlmi.u32','vmovlpl.u32','vmovlvs.u32','vmovlvc.u32','vmovlhi.u32','vmovlls.u32','vmovlge.u32','vmovllt.u32','vmovlgt.u32','vmovlle.u32', + + 'vshleq.u8','vshlne.u8','vshlcs.u8','vshlhs.u8','vshlcc.u8','vshllo.u8','vshlmi.u8','vshlpl.u8','vshlvs.u8','vshlvc.u8','vshlhi.u8','vshlls.u8','vshlge.u8','vshllt.u8','vshlgt.u8','vshlle.u8', + 'vshleq.u16','vshlne.u16','vshlcs.u16','vshlhs.u16','vshlcc.u16','vshllo.u16','vshlmi.u16','vshlpl.u16','vshlvs.u16','vshlvc.u16','vshlhi.u16','vshlls.u16','vshlge.u16','vshllt.u16','vshlgt.u16','vshlle.u16', + 'vshleq.u32','vshlne.u32','vshlcs.u32','vshlhs.u32','vshlcc.u32','vshllo.u32','vshlmi.u32','vshlpl.u32','vshlvs.u32','vshlvc.u32','vshlhi.u32','vshlls.u32','vshlge.u32','vshllt.u32','vshlgt.u32','vshlle.u32', + 'vshleq.u64','vshlne.u64','vshlcs.u64','vshlhs.u64','vshlcc.u64','vshllo.u64','vshlmi.u64','vshlpl.u64','vshlvs.u64','vshlvc.u64','vshlhi.u64','vshlls.u64','vshlge.u64','vshllt.u64','vshlgt.u64','vshlle.u64', + + 'vshlleq.u8','vshllne.u8','vshllcs.u8','vshllhs.u8','vshllcc.u8','vshlllo.u8','vshllmi.u8','vshllpl.u8','vshllvs.u8','vshllvc.u8','vshllhi.u8','vshllls.u8','vshllge.u8','vshlllt.u8','vshllgt.u8','vshllle.u8', + 'vshlleq.u16','vshllne.u16','vshllcs.u16','vshllhs.u16','vshllcc.u16','vshlllo.u16','vshllmi.u16','vshllpl.u16','vshllvs.u16','vshllvc.u16','vshllhi.u16','vshllls.u16','vshllge.u16','vshlllt.u16','vshllgt.u16','vshllle.u16', + 'vshlleq.u32','vshllne.u32','vshllcs.u32','vshllhs.u32','vshllcc.u32','vshlllo.u32','vshllmi.u32','vshllpl.u32','vshllvs.u32','vshllvc.u32','vshllhi.u32','vshllls.u32','vshllge.u32','vshlllt.u32','vshllgt.u32','vshllle.u32', + + 'vshreq.u8','vshrne.u8','vshrcs.u8','vshrhs.u8','vshrcc.u8','vshrlo.u8','vshrmi.u8','vshrpl.u8','vshrvs.u8','vshrvc.u8','vshrhi.u8','vshrls.u8','vshrge.u8','vshrlt.u8','vshrgt.u8','vshrle.u8', + 'vshreq.u16','vshrne.u16','vshrcs.u16','vshrhs.u16','vshrcc.u16','vshrlo.u16','vshrmi.u16','vshrpl.u16','vshrvs.u16','vshrvc.u16','vshrhi.u16','vshrls.u16','vshrge.u16','vshrlt.u16','vshrgt.u16','vshrle.u16', + 'vshreq.u32','vshrne.u32','vshrcs.u32','vshrhs.u32','vshrcc.u32','vshrlo.u32','vshrmi.u32','vshrpl.u32','vshrvs.u32','vshrvc.u32','vshrhi.u32','vshrls.u32','vshrge.u32','vshrlt.u32','vshrgt.u32','vshrle.u32', + 'vshreq.u64','vshrne.u64','vshrcs.u64','vshrhs.u64','vshrcc.u64','vshrlo.u64','vshrmi.u64','vshrpl.u64','vshrvs.u64','vshrvc.u64','vshrhi.u64','vshrls.u64','vshrge.u64','vshrlt.u64','vshrgt.u64','vshrle.u64', + + 'vsraeq.u8','vsrane.u8','vsracs.u8','vsrahs.u8','vsracc.u8','vsralo.u8','vsrami.u8','vsrapl.u8','vsravs.u8','vsravc.u8','vsrahi.u8','vsrals.u8','vsrage.u8','vsralt.u8','vsragt.u8','vsrale.u8', + 'vsraeq.u16','vsrane.u16','vsracs.u16','vsrahs.u16','vsracc.u16','vsralo.u16','vsrami.u16','vsrapl.u16','vsravs.u16','vsravc.u16','vsrahi.u16','vsrals.u16','vsrage.u16','vsralt.u16','vsragt.u16','vsrale.u16', + 'vsraeq.u32','vsrane.u32','vsracs.u32','vsrahs.u32','vsracc.u32','vsralo.u32','vsrami.u32','vsrapl.u32','vsravs.u32','vsravc.u32','vsrahi.u32','vsrals.u32','vsrage.u32','vsralt.u32','vsragt.u32','vsrale.u32', + 'vsraeq.u64','vsrane.u64','vsracs.u64','vsrahs.u64','vsracc.u64','vsralo.u64','vsrami.u64','vsrapl.u64','vsravs.u64','vsravc.u64','vsrahi.u64','vsrals.u64','vsrage.u64','vsralt.u64','vsragt.u64','vsrale.u64', + + 'vpmaxeq.u8','vpmaxne.u8','vpmaxcs.u8','vpmaxhs.u8','vpmaxcc.u8','vpmaxlo.u8','vpmaxmi.u8','vpmaxpl.u8','vpmaxvs.u8','vpmaxvc.u8','vpmaxhi.u8','vpmaxls.u8','vpmaxge.u8','vpmaxlt.u8','vpmaxgt.u8','vpmaxle.u8', + 'vpmaxeq.u16','vpmaxne.u16','vpmaxcs.u16','vpmaxhs.u16','vpmaxcc.u16','vpmaxlo.u16','vpmaxmi.u16','vpmaxpl.u16','vpmaxvs.u16','vpmaxvc.u16','vpmaxhi.u16','vpmaxls.u16','vpmaxge.u16','vpmaxlt.u16','vpmaxgt.u16','vpmaxle.u16', + 'vpmaxeq.u32','vpmaxne.u32','vpmaxcs.u32','vpmaxhs.u32','vpmaxcc.u32','vpmaxlo.u32','vpmaxmi.u32','vpmaxpl.u32','vpmaxvs.u32','vpmaxvc.u32','vpmaxhi.u32','vpmaxls.u32','vpmaxge.u32','vpmaxlt.u32','vpmaxgt.u32','vpmaxle.u32', + + 'vpmineq.u8','vpminne.u8','vpmincs.u8','vpminhs.u8','vpmincc.u8','vpminlo.u8','vpminmi.u8','vpminpl.u8','vpminvs.u8','vpminvc.u8','vpminhi.u8','vpminls.u8','vpminge.u8','vpminlt.u8','vpmingt.u8','vpminle.u8', + 'vpmineq.u16','vpminne.u16','vpmincs.u16','vpminhs.u16','vpmincc.u16','vpminlo.u16','vpminmi.u16','vpminpl.u16','vpminvs.u16','vpminvc.u16','vpminhi.u16','vpminls.u16','vpminge.u16','vpminlt.u16','vpmingt.u16','vpminle.u16', + 'vpmineq.u32','vpminne.u32','vpmincs.u32','vpminhs.u32','vpmincc.u32','vpminlo.u32','vpminmi.u32','vpminpl.u32','vpminvs.u32','vpminvc.u32','vpminhi.u32','vpminls.u32','vpminge.u32','vpminlt.u32','vpmingt.u32','vpminle.u32', + + 'vqaddeq.u8','vqaddne.u8','vqaddcs.u8','vqaddhs.u8','vqaddcc.u8','vqaddlo.u8','vqaddmi.u8','vqaddpl.u8','vqaddvs.u8','vqaddvc.u8','vqaddhi.u8','vqaddls.u8','vqaddge.u8','vqaddlt.u8','vqaddgt.u8','vqaddle.u8', + 'vqaddeq.u16','vqaddne.u16','vqaddcs.u16','vqaddhs.u16','vqaddcc.u16','vqaddlo.u16','vqaddmi.u16','vqaddpl.u16','vqaddvs.u16','vqaddvc.u16','vqaddhi.u16','vqaddls.u16','vqaddge.u16','vqaddlt.u16','vqaddgt.u16','vqaddle.u16', + 'vqaddeq.u32','vqaddne.u32','vqaddcs.u32','vqaddhs.u32','vqaddcc.u32','vqaddlo.u32','vqaddmi.u32','vqaddpl.u32','vqaddvs.u32','vqaddvc.u32','vqaddhi.u32','vqaddls.u32','vqaddge.u32','vqaddlt.u32','vqaddgt.u32','vqaddle.u32', + 'vqaddeq.u64','vqaddne.u64','vqaddcs.u64','vqaddhs.u64','vqaddcc.u64','vqaddlo.u64','vqaddmi.u64','vqaddpl.u64','vqaddvs.u64','vqaddvc.u64','vqaddhi.u64','vqaddls.u64','vqaddge.u64','vqaddlt.u64','vqaddgt.u64','vqaddle.u64', + + 'vqsubeq.u8','vqsubne.u8','vqsubcs.u8','vqsubhs.u8','vqsubcc.u8','vqsublo.u8','vqsubmi.u8','vqsubpl.u8','vqsubvs.u8','vqsubvc.u8','vqsubhi.u8','vqsubls.u8','vqsubge.u8','vqsublt.u8','vqsubgt.u8','vqsuble.u8', + 'vqsubeq.u16','vqsubne.u16','vqsubcs.u16','vqsubhs.u16','vqsubcc.u16','vqsublo.u16','vqsubmi.u16','vqsubpl.u16','vqsubvs.u16','vqsubvc.u16','vqsubhi.u16','vqsubls.u16','vqsubge.u16','vqsublt.u16','vqsubgt.u16','vqsuble.u16', + 'vqsubeq.u32','vqsubne.u32','vqsubcs.u32','vqsubhs.u32','vqsubcc.u32','vqsublo.u32','vqsubmi.u32','vqsubpl.u32','vqsubvs.u32','vqsubvc.u32','vqsubhi.u32','vqsubls.u32','vqsubge.u32','vqsublt.u32','vqsubgt.u32','vqsuble.u32', + 'vqsubeq.u64','vqsubne.u64','vqsubcs.u64','vqsubhs.u64','vqsubcc.u64','vqsublo.u64','vqsubmi.u64','vqsubpl.u64','vqsubvs.u64','vqsubvc.u64','vqsubhi.u64','vqsubls.u64','vqsubge.u64','vqsublt.u64','vqsubgt.u64','vqsuble.u64', + + 'vqmovneq.u16','vqmovnne.u16','vqmovncs.u16','vqmovnhs.u16','vqmovncc.u16','vqmovnlo.u16','vqmovnmi.u16','vqmovnpl.u16','vqmovnvs.u16','vqmovnvc.u16','vqmovnhi.u16','vqmovnls.u16','vqmovnge.u16','vqmovnlt.u16','vqmovngt.u16','vqmovnle.u16', + 'vqmovneq.u32','vqmovnne.u32','vqmovncs.u32','vqmovnhs.u32','vqmovncc.u32','vqmovnlo.u32','vqmovnmi.u32','vqmovnpl.u32','vqmovnvs.u32','vqmovnvc.u32','vqmovnhi.u32','vqmovnls.u32','vqmovnge.u32','vqmovnlt.u32','vqmovngt.u32','vqmovnle.u32', + 'vqmovneq.u64','vqmovnne.u64','vqmovncs.u64','vqmovnhs.u64','vqmovncc.u64','vqmovnlo.u64','vqmovnmi.u64','vqmovnpl.u64','vqmovnvs.u64','vqmovnvc.u64','vqmovnhi.u64','vqmovnls.u64','vqmovnge.u64','vqmovnlt.u64','vqmovngt.u64','vqmovnle.u64', + + 'vqshleq.u8','vqshlne.u8','vqshlcs.u8','vqshlhs.u8','vqshlcc.u8','vqshllo.u8','vqshlmi.u8','vqshlpl.u8','vqshlvs.u8','vqshlvc.u8','vqshlhi.u8','vqshlls.u8','vqshlge.u8','vqshllt.u8','vqshlgt.u8','vqshlle.u8', + 'vqshleq.u16','vqshlne.u16','vqshlcs.u16','vqshlhs.u16','vqshlcc.u16','vqshllo.u16','vqshlmi.u16','vqshlpl.u16','vqshlvs.u16','vqshlvc.u16','vqshlhi.u16','vqshlls.u16','vqshlge.u16','vqshllt.u16','vqshlgt.u16','vqshlle.u16', + 'vqshleq.u32','vqshlne.u32','vqshlcs.u32','vqshlhs.u32','vqshlcc.u32','vqshllo.u32','vqshlmi.u32','vqshlpl.u32','vqshlvs.u32','vqshlvc.u32','vqshlhi.u32','vqshlls.u32','vqshlge.u32','vqshllt.u32','vqshlgt.u32','vqshlle.u32', + 'vqshleq.u64','vqshlne.u64','vqshlcs.u64','vqshlhs.u64','vqshlcc.u64','vqshllo.u64','vqshlmi.u64','vqshlpl.u64','vqshlvs.u64','vqshlvc.u64','vqshlhi.u64','vqshlls.u64','vqshlge.u64','vqshllt.u64','vqshlgt.u64','vqshlle.u64', + + 'vqshrneq.u16','vqshrnne.u16','vqshrncs.u16','vqshrnhs.u16','vqshrncc.u16','vqshrnlo.u16','vqshrnmi.u16','vqshrnpl.u16','vqshrnvs.u16','vqshrnvc.u16','vqshrnhi.u16','vqshrnls.u16','vqshrnge.u16','vqshrnlt.u16','vqshrngt.u16','vqshrnle.u16', + 'vqshrneq.u32','vqshrnne.u32','vqshrncs.u32','vqshrnhs.u32','vqshrncc.u32','vqshrnlo.u32','vqshrnmi.u32','vqshrnpl.u32','vqshrnvs.u32','vqshrnvc.u32','vqshrnhi.u32','vqshrnls.u32','vqshrnge.u32','vqshrnlt.u32','vqshrngt.u32','vqshrnle.u32', + 'vqshrneq.u64','vqshrnne.u64','vqshrncs.u64','vqshrnhs.u64','vqshrncc.u64','vqshrnlo.u64','vqshrnmi.u64','vqshrnpl.u64','vqshrnvs.u64','vqshrnvc.u64','vqshrnhi.u64','vqshrnls.u64','vqshrnge.u64','vqshrnlt.u64','vqshrngt.u64','vqshrnle.u64', + + 'vqrshleq.u8','vqrshlne.u8','vqrshlcs.u8','vqrshlhs.u8','vqrshlcc.u8','vqrshllo.u8','vqrshlmi.u8','vqrshlpl.u8','vqrshlvs.u8','vqrshlvc.u8','vqrshlhi.u8','vqrshlls.u8','vqrshlge.u8','vqrshllt.u8','vqrshlgt.u8','vqrshlle.u8', + 'vqrshleq.u16','vqrshlne.u16','vqrshlcs.u16','vqrshlhs.u16','vqrshlcc.u16','vqrshllo.u16','vqrshlmi.u16','vqrshlpl.u16','vqrshlvs.u16','vqrshlvc.u16','vqrshlhi.u16','vqrshlls.u16','vqrshlge.u16','vqrshllt.u16','vqrshlgt.u16','vqrshlle.u16', + 'vqrshleq.u32','vqrshlne.u32','vqrshlcs.u32','vqrshlhs.u32','vqrshlcc.u32','vqrshllo.u32','vqrshlmi.u32','vqrshlpl.u32','vqrshlvs.u32','vqrshlvc.u32','vqrshlhi.u32','vqrshlls.u32','vqrshlge.u32','vqrshllt.u32','vqrshlgt.u32','vqrshlle.u32', + 'vqrshleq.u64','vqrshlne.u64','vqrshlcs.u64','vqrshlhs.u64','vqrshlcc.u64','vqrshllo.u64','vqrshlmi.u64','vqrshlpl.u64','vqrshlvs.u64','vqrshlvc.u64','vqrshlhi.u64','vqrshlls.u64','vqrshlge.u64','vqrshllt.u64','vqrshlgt.u64','vqrshlle.u64', + + 'vqrshrneq.u16','vqrshrnne.u16','vqrshrncs.u16','vqrshrnhs.u16','vqrshrncc.u16','vqrshrnlo.u16','vqrshrnmi.u16','vqrshrnpl.u16','vqrshrnvs.u16','vqrshrnvc.u16','vqrshrnhi.u16','vqrshrnls.u16','vqrshrnge.u16','vqrshrnlt.u16','vqrshrngt.u16','vqrshrnle.u16', + 'vqrshrneq.u32','vqrshrnne.u32','vqrshrncs.u32','vqrshrnhs.u32','vqrshrncc.u32','vqrshrnlo.u32','vqrshrnmi.u32','vqrshrnpl.u32','vqrshrnvs.u32','vqrshrnvc.u32','vqrshrnhi.u32','vqrshrnls.u32','vqrshrnge.u32','vqrshrnlt.u32','vqrshrngt.u32','vqrshrnle.u32', + 'vqrshrneq.u64','vqrshrnne.u64','vqrshrncs.u64','vqrshrnhs.u64','vqrshrncc.u64','vqrshrnlo.u64','vqrshrnmi.u64','vqrshrnpl.u64','vqrshrnvs.u64','vqrshrnvc.u64','vqrshrnhi.u64','vqrshrnls.u64','vqrshrnge.u64','vqrshrnlt.u64','vqrshrngt.u64','vqrshrnle.u64', + + 'vrhaddeq.u8','vrhaddne.u8','vrhaddcs.u8','vrhaddhs.u8','vrhaddcc.u8','vrhaddlo.u8','vrhaddmi.u8','vrhaddpl.u8','vrhaddvs.u8','vrhaddvc.u8','vrhaddhi.u8','vrhaddls.u8','vrhaddge.u8','vrhaddlt.u8','vrhaddgt.u8','vrhaddle.u8', + 'vrhaddeq.u16','vrhaddne.u16','vrhaddcs.u16','vrhaddhs.u16','vrhaddcc.u16','vrhaddlo.u16','vrhaddmi.u16','vrhaddpl.u16','vrhaddvs.u16','vrhaddvc.u16','vrhaddhi.u16','vrhaddls.u16','vrhaddge.u16','vrhaddlt.u16','vrhaddgt.u16','vrhaddle.u16', + 'vrhaddeq.u32','vrhaddne.u32','vrhaddcs.u32','vrhaddhs.u32','vrhaddcc.u32','vrhaddlo.u32','vrhaddmi.u32','vrhaddpl.u32','vrhaddvs.u32','vrhaddvc.u32','vrhaddhi.u32','vrhaddls.u32','vrhaddge.u32','vrhaddlt.u32','vrhaddgt.u32','vrhaddle.u32', + + 'vrshleq.u8','vrshlne.u8','vrshlcs.u8','vrshlhs.u8','vrshlcc.u8','vrshllo.u8','vrshlmi.u8','vrshlpl.u8','vrshlvs.u8','vrshlvc.u8','vrshlhi.u8','vrshlls.u8','vrshlge.u8','vrshllt.u8','vrshlgt.u8','vrshlle.u8', + 'vrshleq.u16','vrshlne.u16','vrshlcs.u16','vrshlhs.u16','vrshlcc.u16','vrshllo.u16','vrshlmi.u16','vrshlpl.u16','vrshlvs.u16','vrshlvc.u16','vrshlhi.u16','vrshlls.u16','vrshlge.u16','vrshllt.u16','vrshlgt.u16','vrshlle.u16', + 'vrshleq.u32','vrshlne.u32','vrshlcs.u32','vrshlhs.u32','vrshlcc.u32','vrshllo.u32','vrshlmi.u32','vrshlpl.u32','vrshlvs.u32','vrshlvc.u32','vrshlhi.u32','vrshlls.u32','vrshlge.u32','vrshllt.u32','vrshlgt.u32','vrshlle.u32', + 'vrshleq.u64','vrshlne.u64','vrshlcs.u64','vrshlhs.u64','vrshlcc.u64','vrshllo.u64','vrshlmi.u64','vrshlpl.u64','vrshlvs.u64','vrshlvc.u64','vrshlhi.u64','vrshlls.u64','vrshlge.u64','vrshllt.u64','vrshlgt.u64','vrshlle.u64', + + 'vrshreq.u8','vrshrne.u8','vrshrcs.u8','vrshrhs.u8','vrshrcc.u8','vrshrlo.u8','vrshrmi.u8','vrshrpl.u8','vrshrvs.u8','vrshrvc.u8','vrshrhi.u8','vrshrls.u8','vrshrge.u8','vrshrlt.u8','vrshrgt.u8','vrshrle.u8', + 'vrshreq.u16','vrshrne.u16','vrshrcs.u16','vrshrhs.u16','vrshrcc.u16','vrshrlo.u16','vrshrmi.u16','vrshrpl.u16','vrshrvs.u16','vrshrvc.u16','vrshrhi.u16','vrshrls.u16','vrshrge.u16','vrshrlt.u16','vrshrgt.u16','vrshrle.u16', + 'vrshreq.u32','vrshrne.u32','vrshrcs.u32','vrshrhs.u32','vrshrcc.u32','vrshrlo.u32','vrshrmi.u32','vrshrpl.u32','vrshrvs.u32','vrshrvc.u32','vrshrhi.u32','vrshrls.u32','vrshrge.u32','vrshrlt.u32','vrshrgt.u32','vrshrle.u32', + 'vrshreq.u64','vrshrne.u64','vrshrcs.u64','vrshrhs.u64','vrshrcc.u64','vrshrlo.u64','vrshrmi.u64','vrshrpl.u64','vrshrvs.u64','vrshrvc.u64','vrshrhi.u64','vrshrls.u64','vrshrge.u64','vrshrlt.u64','vrshrgt.u64','vrshrle.u64', + + 'vrsraeq.u8','vrsrane.u8','vrsracs.u8','vrsrahs.u8','vrsracc.u8','vrsralo.u8','vrsrami.u8','vrsrapl.u8','vrsravs.u8','vrsravc.u8','vrsrahi.u8','vrsrals.u8','vrsrage.u8','vrsralt.u8','vrsragt.u8','vrsrale.u8', + 'vrsraeq.u16','vrsrane.u16','vrsracs.u16','vrsrahs.u16','vrsracc.u16','vrsralo.u16','vrsrami.u16','vrsrapl.u16','vrsravs.u16','vrsravc.u16','vrsrahi.u16','vrsrals.u16','vrsrage.u16','vrsralt.u16','vrsragt.u16','vrsrale.u16', + 'vrsraeq.u32','vrsrane.u32','vrsracs.u32','vrsrahs.u32','vrsracc.u32','vrsralo.u32','vrsrami.u32','vrsrapl.u32','vrsravs.u32','vrsravc.u32','vrsrahi.u32','vrsrals.u32','vrsrage.u32','vrsralt.u32','vrsragt.u32','vrsrale.u32', + 'vrsraeq.u64','vrsrane.u64','vrsracs.u64','vrsrahs.u64','vrsracc.u64','vrsralo.u64','vrsrami.u64','vrsrapl.u64','vrsravs.u64','vrsravc.u64','vrsrahi.u64','vrsrals.u64','vrsrage.u64','vrsralt.u64','vrsragt.u64','vrsrale.u64', + ), + /* Conditional VFPv3 & NEON SIMD Floating-Point Instructions */ + 34 => array( + 'vabdeq.f32','vabdne.f32','vabdcs.f32','vabdhs.f32','vabdcc.f32','vabdlo.f32','vabdmi.f32','vabdpl.f32','vabdvs.f32','vabdvc.f32','vabdhi.f32','vabdls.f32','vabdge.f32','vabdlt.f32','vabdgt.f32','vabdle.f32', + + 'vabseq.f32','vabsne.f32','vabscs.f32','vabshs.f32','vabscc.f32','vabslo.f32','vabsmi.f32','vabspl.f32','vabsvs.f32','vabsvc.f32','vabshi.f32','vabsls.f32','vabsge.f32','vabslt.f32','vabsgt.f32','vabsle.f32', + 'vabseq.f64','vabsne.f64','vabscs.f64','vabshs.f64','vabscc.f64','vabslo.f64','vabsmi.f64','vabspl.f64','vabsvs.f64','vabsvc.f64','vabshi.f64','vabsls.f64','vabsge.f64','vabslt.f64','vabsgt.f64','vabsle.f64', + + 'vacgeeq.f32','vacgene.f32','vacgecs.f32','vacgehs.f32','vacgecc.f32','vacgelo.f32','vacgemi.f32','vacgepl.f32','vacgevs.f32','vacgevc.f32','vacgehi.f32','vacgels.f32','vacgege.f32','vacgelt.f32','vacgegt.f32','vacgele.f32', + 'vacgteq.f32','vacgtne.f32','vacgtcs.f32','vacgths.f32','vacgtcc.f32','vacgtlo.f32','vacgtmi.f32','vacgtpl.f32','vacgtvs.f32','vacgtvc.f32','vacgthi.f32','vacgtls.f32','vacgtge.f32','vacgtlt.f32','vacgtgt.f32','vacgtle.f32', + 'vacleeq.f32','vaclene.f32','vaclecs.f32','vaclehs.f32','vaclecc.f32','vaclelo.f32','vaclemi.f32','vaclepl.f32','vaclevs.f32','vaclevc.f32','vaclehi.f32','vaclels.f32','vaclege.f32','vaclelt.f32','vaclegt.f32','vaclele.f32', + 'vaclteq.f32','vacltne.f32','vacltcs.f32','vaclths.f32','vacltcc.f32','vacltlo.f32','vacltmi.f32','vacltpl.f32','vacltvs.f32','vacltvc.f32','vaclthi.f32','vacltls.f32','vacltge.f32','vacltlt.f32','vacltgt.f32','vacltle.f32', + + 'vaddeq.f32','vaddne.f32','vaddcs.f32','vaddhs.f32','vaddcc.f32','vaddlo.f32','vaddmi.f32','vaddpl.f32','vaddvs.f32','vaddvc.f32','vaddhi.f32','vaddls.f32','vaddge.f32','vaddlt.f32','vaddgt.f32','vaddle.f32', + 'vaddeq.f64','vaddne.f64','vaddcs.f64','vaddhs.f64','vaddcc.f64','vaddlo.f64','vaddmi.f64','vaddpl.f64','vaddvs.f64','vaddvc.f64','vaddhi.f64','vaddls.f64','vaddge.f64','vaddlt.f64','vaddgt.f64','vaddle.f64', + + 'vceqeq.f32','vceqne.f32','vceqcs.f32','vceqhs.f32','vceqcc.f32','vceqlo.f32','vceqmi.f32','vceqpl.f32','vceqvs.f32','vceqvc.f32','vceqhi.f32','vceqls.f32','vceqge.f32','vceqlt.f32','vceqgt.f32','vceqle.f32', + 'vcgeeq.f32','vcgene.f32','vcgecs.f32','vcgehs.f32','vcgecc.f32','vcgelo.f32','vcgemi.f32','vcgepl.f32','vcgevs.f32','vcgevc.f32','vcgehi.f32','vcgels.f32','vcgege.f32','vcgelt.f32','vcgegt.f32','vcgele.f32', + 'vcleeq.f32','vclene.f32','vclecs.f32','vclehs.f32','vclecc.f32','vclelo.f32','vclemi.f32','vclepl.f32','vclevs.f32','vclevc.f32','vclehi.f32','vclels.f32','vclege.f32','vclelt.f32','vclegt.f32','vclele.f32', + 'vcgteq.f32','vcgtne.f32','vcgtcs.f32','vcgths.f32','vcgtcc.f32','vcgtlo.f32','vcgtmi.f32','vcgtpl.f32','vcgtvs.f32','vcgtvc.f32','vcgthi.f32','vcgtls.f32','vcgtge.f32','vcgtlt.f32','vcgtgt.f32','vcgtle.f32', + 'vclteq.f32','vcltne.f32','vcltcs.f32','vclths.f32','vcltcc.f32','vcltlo.f32','vcltmi.f32','vcltpl.f32','vcltvs.f32','vcltvc.f32','vclthi.f32','vcltls.f32','vcltge.f32','vcltlt.f32','vcltgt.f32','vcltle.f32', + + 'vcmpeq.f32','vcmpne.f32','vcmpcs.f32','vcmphs.f32','vcmpcc.f32','vcmplo.f32','vcmpmi.f32','vcmppl.f32','vcmpvs.f32','vcmpvc.f32','vcmphi.f32','vcmpls.f32','vcmpge.f32','vcmplt.f32','vcmpgt.f32','vcmple.f32', + 'vcmpeq.f64','vcmpne.f64','vcmpcs.f64','vcmphs.f64','vcmpcc.f64','vcmplo.f64','vcmpmi.f64','vcmppl.f64','vcmpvs.f64','vcmpvc.f64','vcmphi.f64','vcmpls.f64','vcmpge.f64','vcmplt.f64','vcmpgt.f64','vcmple.f64', + + 'vcmpeeq.f32','vcmpene.f32','vcmpecs.f32','vcmpehs.f32','vcmpecc.f32','vcmpelo.f32','vcmpemi.f32','vcmpepl.f32','vcmpevs.f32','vcmpevc.f32','vcmpehi.f32','vcmpels.f32','vcmpege.f32','vcmpelt.f32','vcmpegt.f32','vcmpele.f32', + 'vcmpeeq.f64','vcmpene.f64','vcmpecs.f64','vcmpehs.f64','vcmpecc.f64','vcmpelo.f64','vcmpemi.f64','vcmpepl.f64','vcmpevs.f64','vcmpevc.f64','vcmpehi.f64','vcmpels.f64','vcmpege.f64','vcmpelt.f64','vcmpegt.f64','vcmpele.f64', + + 'vcvteq.s16.f32','vcvtne.s16.f32','vcvtcs.s16.f32','vcvths.s16.f32','vcvtcc.s16.f32','vcvtlo.s16.f32','vcvtmi.s16.f32','vcvtpl.s16.f32','vcvtvs.s16.f32','vcvtvc.s16.f32','vcvthi.s16.f32','vcvtls.s16.f32','vcvtge.s16.f32','vcvtlt.s16.f32','vcvtgt.s16.f32','vcvtle.s16.f32', + 'vcvteq.s16.f64','vcvtne.s16.f64','vcvtcs.s16.f64','vcvths.s16.f64','vcvtcc.s16.f64','vcvtlo.s16.f64','vcvtmi.s16.f64','vcvtpl.s16.f64','vcvtvs.s16.f64','vcvtvc.s16.f64','vcvthi.s16.f64','vcvtls.s16.f64','vcvtge.s16.f64','vcvtlt.s16.f64','vcvtgt.s16.f64','vcvtle.s16.f64', + 'vcvteq.s32.f32','vcvtne.s32.f32','vcvtcs.s32.f32','vcvths.s32.f32','vcvtcc.s32.f32','vcvtlo.s32.f32','vcvtmi.s32.f32','vcvtpl.s32.f32','vcvtvs.s32.f32','vcvtvc.s32.f32','vcvthi.s32.f32','vcvtls.s32.f32','vcvtge.s32.f32','vcvtlt.s32.f32','vcvtgt.s32.f32','vcvtle.s32.f32', + 'vcvteq.s32.f64','vcvtne.s32.f64','vcvtcs.s32.f64','vcvths.s32.f64','vcvtcc.s32.f64','vcvtlo.s32.f64','vcvtmi.s32.f64','vcvtpl.s32.f64','vcvtvs.s32.f64','vcvtvc.s32.f64','vcvthi.s32.f64','vcvtls.s32.f64','vcvtge.s32.f64','vcvtlt.s32.f64','vcvtgt.s32.f64','vcvtle.s32.f64', + 'vcvteq.u16.f32','vcvtne.u16.f32','vcvtcs.u16.f32','vcvths.u16.f32','vcvtcc.u16.f32','vcvtlo.u16.f32','vcvtmi.u16.f32','vcvtpl.u16.f32','vcvtvs.u16.f32','vcvtvc.u16.f32','vcvthi.u16.f32','vcvtls.u16.f32','vcvtge.u16.f32','vcvtlt.u16.f32','vcvtgt.u16.f32','vcvtle.u16.f32', + 'vcvteq.u16.f64','vcvtne.u16.f64','vcvtcs.u16.f64','vcvths.u16.f64','vcvtcc.u16.f64','vcvtlo.u16.f64','vcvtmi.u16.f64','vcvtpl.u16.f64','vcvtvs.u16.f64','vcvtvc.u16.f64','vcvthi.u16.f64','vcvtls.u16.f64','vcvtge.u16.f64','vcvtlt.u16.f64','vcvtgt.u16.f64','vcvtle.u16.f64', + 'vcvteq.u32.f32','vcvtne.u32.f32','vcvtcs.u32.f32','vcvths.u32.f32','vcvtcc.u32.f32','vcvtlo.u32.f32','vcvtmi.u32.f32','vcvtpl.u32.f32','vcvtvs.u32.f32','vcvtvc.u32.f32','vcvthi.u32.f32','vcvtls.u32.f32','vcvtge.u32.f32','vcvtlt.u32.f32','vcvtgt.u32.f32','vcvtle.u32.f32', + 'vcvteq.u32.f64','vcvtne.u32.f64','vcvtcs.u32.f64','vcvths.u32.f64','vcvtcc.u32.f64','vcvtlo.u32.f64','vcvtmi.u32.f64','vcvtpl.u32.f64','vcvtvs.u32.f64','vcvtvc.u32.f64','vcvthi.u32.f64','vcvtls.u32.f64','vcvtge.u32.f64','vcvtlt.u32.f64','vcvtgt.u32.f64','vcvtle.u32.f64', + 'vcvteq.f16.f32','vcvtne.f16.f32','vcvtcs.f16.f32','vcvths.f16.f32','vcvtcc.f16.f32','vcvtlo.f16.f32','vcvtmi.f16.f32','vcvtpl.f16.f32','vcvtvs.f16.f32','vcvtvc.f16.f32','vcvthi.f16.f32','vcvtls.f16.f32','vcvtge.f16.f32','vcvtlt.f16.f32','vcvtgt.f16.f32','vcvtle.f16.f32', + 'vcvteq.f32.s32','vcvtne.f32.s32','vcvtcs.f32.s32','vcvths.f32.s32','vcvtcc.f32.s32','vcvtlo.f32.s32','vcvtmi.f32.s32','vcvtpl.f32.s32','vcvtvs.f32.s32','vcvtvc.f32.s32','vcvthi.f32.s32','vcvtls.f32.s32','vcvtge.f32.s32','vcvtlt.f32.s32','vcvtgt.f32.s32','vcvtle.f32.s32', + 'vcvteq.f32.u32','vcvtne.f32.u32','vcvtcs.f32.u32','vcvths.f32.u32','vcvtcc.f32.u32','vcvtlo.f32.u32','vcvtmi.f32.u32','vcvtpl.f32.u32','vcvtvs.f32.u32','vcvtvc.f32.u32','vcvthi.f32.u32','vcvtls.f32.u32','vcvtge.f32.u32','vcvtlt.f32.u32','vcvtgt.f32.u32','vcvtle.f32.u32', + 'vcvteq.f32.f16','vcvtne.f32.f16','vcvtcs.f32.f16','vcvths.f32.f16','vcvtcc.f32.f16','vcvtlo.f32.f16','vcvtmi.f32.f16','vcvtpl.f32.f16','vcvtvs.f32.f16','vcvtvc.f32.f16','vcvthi.f32.f16','vcvtls.f32.f16','vcvtge.f32.f16','vcvtlt.f32.f16','vcvtgt.f32.f16','vcvtle.f32.f16', + 'vcvteq.f32.f64','vcvtne.f32.f64','vcvtcs.f32.f64','vcvths.f32.f64','vcvtcc.f32.f64','vcvtlo.f32.f64','vcvtmi.f32.f64','vcvtpl.f32.f64','vcvtvs.f32.f64','vcvtvc.f32.f64','vcvthi.f32.f64','vcvtls.f32.f64','vcvtge.f32.f64','vcvtlt.f32.f64','vcvtgt.f32.f64','vcvtle.f32.f64', + 'vcvteq.f64.s32','vcvtne.f64.s32','vcvtcs.f64.s32','vcvths.f64.s32','vcvtcc.f64.s32','vcvtlo.f64.s32','vcvtmi.f64.s32','vcvtpl.f64.s32','vcvtvs.f64.s32','vcvtvc.f64.s32','vcvthi.f64.s32','vcvtls.f64.s32','vcvtge.f64.s32','vcvtlt.f64.s32','vcvtgt.f64.s32','vcvtle.f64.s32', + 'vcvteq.f64.u32','vcvtne.f64.u32','vcvtcs.f64.u32','vcvths.f64.u32','vcvtcc.f64.u32','vcvtlo.f64.u32','vcvtmi.f64.u32','vcvtpl.f64.u32','vcvtvs.f64.u32','vcvtvc.f64.u32','vcvthi.f64.u32','vcvtls.f64.u32','vcvtge.f64.u32','vcvtlt.f64.u32','vcvtgt.f64.u32','vcvtle.f64.u32', + 'vcvteq.f64.f32','vcvtne.f64.f32','vcvtcs.f64.f32','vcvths.f64.f32','vcvtcc.f64.f32','vcvtlo.f64.f32','vcvtmi.f64.f32','vcvtpl.f64.f32','vcvtvs.f64.f32','vcvtvc.f64.f32','vcvthi.f64.f32','vcvtls.f64.f32','vcvtge.f64.f32','vcvtlt.f64.f32','vcvtgt.f64.f32','vcvtle.f64.f32', + + 'vcvtreq.s32.f32','vcvtrne.s32.f32','vcvtrcs.s32.f32','vcvtrhs.s32.f32','vcvtrcc.s32.f32','vcvtrlo.s32.f32','vcvtrmi.s32.f32','vcvtrpl.s32.f32','vcvtrvs.s32.f32','vcvtrvc.s32.f32','vcvtrhi.s32.f32','vcvtrls.s32.f32','vcvtrge.s32.f32','vcvtrlt.s32.f32','vcvtrgt.s32.f32','vcvtrle.s32.f32', + 'vcvtreq.s32.f64','vcvtrne.s32.f64','vcvtrcs.s32.f64','vcvtrhs.s32.f64','vcvtrcc.s32.f64','vcvtrlo.s32.f64','vcvtrmi.s32.f64','vcvtrpl.s32.f64','vcvtrvs.s32.f64','vcvtrvc.s32.f64','vcvtrhi.s32.f64','vcvtrls.s32.f64','vcvtrge.s32.f64','vcvtrlt.s32.f64','vcvtrgt.s32.f64','vcvtrle.s32.f64', + 'vcvtreq.u32.f32','vcvtrne.u32.f32','vcvtrcs.u32.f32','vcvtrhs.u32.f32','vcvtrcc.u32.f32','vcvtrlo.u32.f32','vcvtrmi.u32.f32','vcvtrpl.u32.f32','vcvtrvs.u32.f32','vcvtrvc.u32.f32','vcvtrhi.u32.f32','vcvtrls.u32.f32','vcvtrge.u32.f32','vcvtrlt.u32.f32','vcvtrgt.u32.f32','vcvtrle.u32.f32', + 'vcvtreq.u32.f64','vcvtrne.u32.f64','vcvtrcs.u32.f64','vcvtrhs.u32.f64','vcvtrcc.u32.f64','vcvtrlo.u32.f64','vcvtrmi.u32.f64','vcvtrpl.u32.f64','vcvtrvs.u32.f64','vcvtrvc.u32.f64','vcvtrhi.u32.f64','vcvtrls.u32.f64','vcvtrge.u32.f64','vcvtrlt.u32.f64','vcvtrgt.u32.f64','vcvtrle.u32.f64', + + 'vcvtbeq.f16.f32','vcvtbne.f16.f32','vcvtbcs.f16.f32','vcvtbhs.f16.f32','vcvtbcc.f16.f32','vcvtblo.f16.f32','vcvtbmi.f16.f32','vcvtbpl.f16.f32','vcvtbvs.f16.f32','vcvtbvc.f16.f32','vcvtbhi.f16.f32','vcvtbls.f16.f32','vcvtbge.f16.f32','vcvtblt.f16.f32','vcvtbgt.f16.f32','vcvtble.f16.f32', + 'vcvtbeq.f32.f16','vcvtbne.f32.f16','vcvtbcs.f32.f16','vcvtbhs.f32.f16','vcvtbcc.f32.f16','vcvtblo.f32.f16','vcvtbmi.f32.f16','vcvtbpl.f32.f16','vcvtbvs.f32.f16','vcvtbvc.f32.f16','vcvtbhi.f32.f16','vcvtbls.f32.f16','vcvtbge.f32.f16','vcvtblt.f32.f16','vcvtbgt.f32.f16','vcvtble.f32.f16', + + 'vcvtteq.f16.f32','vcvttne.f16.f32','vcvttcs.f16.f32','vcvtths.f16.f32','vcvttcc.f16.f32','vcvttlo.f16.f32','vcvttmi.f16.f32','vcvttpl.f16.f32','vcvttvs.f16.f32','vcvttvc.f16.f32','vcvtthi.f16.f32','vcvttls.f16.f32','vcvttge.f16.f32','vcvttlt.f16.f32','vcvttgt.f16.f32','vcvttle.f16.f32', + 'vcvtteq.f32.f16','vcvttne.f32.f16','vcvttcs.f32.f16','vcvtths.f32.f16','vcvttcc.f32.f16','vcvttlo.f32.f16','vcvttmi.f32.f16','vcvttpl.f32.f16','vcvttvs.f32.f16','vcvttvc.f32.f16','vcvtthi.f32.f16','vcvttls.f32.f16','vcvttge.f32.f16','vcvttlt.f32.f16','vcvttgt.f32.f16','vcvttle.f32.f16', + + 'vdiveq.f32','vdivne.f32','vdivcs.f32','vdivhs.f32','vdivcc.f32','vdivlo.f32','vdivmi.f32','vdivpl.f32','vdivvs.f32','vdivvc.f32','vdivhi.f32','vdivls.f32','vdivge.f32','vdivlt.f32','vdivgt.f32','vdivle.f32', + 'vdiveq.f64','vdivne.f64','vdivcs.f64','vdivhs.f64','vdivcc.f64','vdivlo.f64','vdivmi.f64','vdivpl.f64','vdivvs.f64','vdivvc.f64','vdivhi.f64','vdivls.f64','vdivge.f64','vdivlt.f64','vdivgt.f64','vdivle.f64', + + 'vmaxeq.f32','vmaxne.f32','vmaxcs.f32','vmaxhs.f32','vmaxcc.f32','vmaxlo.f32','vmaxmi.f32','vmaxpl.f32','vmaxvs.f32','vmaxvc.f32','vmaxhi.f32','vmaxls.f32','vmaxge.f32','vmaxlt.f32','vmaxgt.f32','vmaxle.f32', + 'vmineq.f32','vminne.f32','vmincs.f32','vminhs.f32','vmincc.f32','vminlo.f32','vminmi.f32','vminpl.f32','vminvs.f32','vminvc.f32','vminhi.f32','vminls.f32','vminge.f32','vminlt.f32','vmingt.f32','vminle.f32', + + 'vmlaeq.f32','vmlane.f32','vmlacs.f32','vmlahs.f32','vmlacc.f32','vmlalo.f32','vmlami.f32','vmlapl.f32','vmlavs.f32','vmlavc.f32','vmlahi.f32','vmlals.f32','vmlage.f32','vmlalt.f32','vmlagt.f32','vmlale.f32', + 'vmlaeq.f64','vmlane.f64','vmlacs.f64','vmlahs.f64','vmlacc.f64','vmlalo.f64','vmlami.f64','vmlapl.f64','vmlavs.f64','vmlavc.f64','vmlahi.f64','vmlals.f64','vmlage.f64','vmlalt.f64','vmlagt.f64','vmlale.f64', + + 'vmlseq.f32','vmlsne.f32','vmlscs.f32','vmlshs.f32','vmlscc.f32','vmlslo.f32','vmlsmi.f32','vmlspl.f32','vmlsvs.f32','vmlsvc.f32','vmlshi.f32','vmlsls.f32','vmlsge.f32','vmlslt.f32','vmlsgt.f32','vmlsle.f32', + 'vmlseq.f64','vmlsne.f64','vmlscs.f64','vmlshs.f64','vmlscc.f64','vmlslo.f64','vmlsmi.f64','vmlspl.f64','vmlsvs.f64','vmlsvc.f64','vmlshi.f64','vmlsls.f64','vmlsge.f64','vmlslt.f64','vmlsgt.f64','vmlsle.f64', + + 'vmuleq.f32','vmulne.f32','vmulcs.f32','vmulhs.f32','vmulcc.f32','vmullo.f32','vmulmi.f32','vmulpl.f32','vmulvs.f32','vmulvc.f32','vmulhi.f32','vmulls.f32','vmulge.f32','vmullt.f32','vmulgt.f32','vmulle.f32', + 'vmuleq.f64','vmulne.f64','vmulcs.f64','vmulhs.f64','vmulcc.f64','vmullo.f64','vmulmi.f64','vmulpl.f64','vmulvs.f64','vmulvc.f64','vmulhi.f64','vmulls.f64','vmulge.f64','vmullt.f64','vmulgt.f64','vmulle.f64', + + 'vnegeq.f32','vnegne.f32','vnegcs.f32','vneghs.f32','vnegcc.f32','vneglo.f32','vnegmi.f32','vnegpl.f32','vnegvs.f32','vnegvc.f32','vneghi.f32','vnegls.f32','vnegge.f32','vneglt.f32','vneggt.f32','vnegle.f32', + 'vnegeq.f64','vnegne.f64','vnegcs.f64','vneghs.f64','vnegcc.f64','vneglo.f64','vnegmi.f64','vnegpl.f64','vnegvs.f64','vnegvc.f64','vneghi.f64','vnegls.f64','vnegge.f64','vneglt.f64','vneggt.f64','vnegle.f64', + + 'vnmlaeq.f32','vnmlane.f32','vnmlacs.f32','vnmlahs.f32','vnmlacc.f32','vnmlalo.f32','vnmlami.f32','vnmlapl.f32','vnmlavs.f32','vnmlavc.f32','vnmlahi.f32','vnmlals.f32','vnmlage.f32','vnmlalt.f32','vnmlagt.f32','vnmlale.f32', + 'vnmlaeq.f64','vnmlane.f64','vnmlacs.f64','vnmlahs.f64','vnmlacc.f64','vnmlalo.f64','vnmlami.f64','vnmlapl.f64','vnmlavs.f64','vnmlavc.f64','vnmlahi.f64','vnmlals.f64','vnmlage.f64','vnmlalt.f64','vnmlagt.f64','vnmlale.f64', + + 'vnmlseq.f32','vnmlsne.f32','vnmlscs.f32','vnmlshs.f32','vnmlscc.f32','vnmlslo.f32','vnmlsmi.f32','vnmlspl.f32','vnmlsvs.f32','vnmlsvc.f32','vnmlshi.f32','vnmlsls.f32','vnmlsge.f32','vnmlslt.f32','vnmlsgt.f32','vnmlsle.f32', + 'vnmlseq.f64','vnmlsne.f64','vnmlscs.f64','vnmlshs.f64','vnmlscc.f64','vnmlslo.f64','vnmlsmi.f64','vnmlspl.f64','vnmlsvs.f64','vnmlsvc.f64','vnmlshi.f64','vnmlsls.f64','vnmlsge.f64','vnmlslt.f64','vnmlsgt.f64','vnmlsle.f64', + + 'vnmuleq.f64','vnmulne.f64','vnmulcs.f64','vnmulhs.f64','vnmulcc.f64','vnmullo.f64','vnmulmi.f64','vnmulpl.f64','vnmulvs.f64','vnmulvc.f64','vnmulhi.f64','vnmulls.f64','vnmulge.f64','vnmullt.f64','vnmulgt.f64','vnmulle.f64', + 'vnmuleq.f32','vnmulne.f32','vnmulcs.f32','vnmulhs.f32','vnmulcc.f32','vnmullo.f32','vnmulmi.f32','vnmulpl.f32','vnmulvs.f32','vnmulvc.f32','vnmulhi.f32','vnmulls.f32','vnmulge.f32','vnmullt.f32','vnmulgt.f32','vnmulle.f32', + + 'vpaddeq.f32','vpaddne.f32','vpaddcs.f32','vpaddhs.f32','vpaddcc.f32','vpaddlo.f32','vpaddmi.f32','vpaddpl.f32','vpaddvs.f32','vpaddvc.f32','vpaddhi.f32','vpaddls.f32','vpaddge.f32','vpaddlt.f32','vpaddgt.f32','vpaddle.f32', + + 'vpmaxeq.f32','vpmaxne.f32','vpmaxcs.f32','vpmaxhs.f32','vpmaxcc.f32','vpmaxlo.f32','vpmaxmi.f32','vpmaxpl.f32','vpmaxvs.f32','vpmaxvc.f32','vpmaxhi.f32','vpmaxls.f32','vpmaxge.f32','vpmaxlt.f32','vpmaxgt.f32','vpmaxle.f32', + 'vpmineq.f32','vpminne.f32','vpmincs.f32','vpminhs.f32','vpmincc.f32','vpminlo.f32','vpminmi.f32','vpminpl.f32','vpminvs.f32','vpminvc.f32','vpminhi.f32','vpminls.f32','vpminge.f32','vpminlt.f32','vpmingt.f32','vpminle.f32', + + 'vrecpeeq.u32','vrecpene.u32','vrecpecs.u32','vrecpehs.u32','vrecpecc.u32','vrecpelo.u32','vrecpemi.u32','vrecpepl.u32','vrecpevs.u32','vrecpevc.u32','vrecpehi.u32','vrecpels.u32','vrecpege.u32','vrecpelt.u32','vrecpegt.u32','vrecpele.u32', + 'vrecpeeq.f32','vrecpene.f32','vrecpecs.f32','vrecpehs.f32','vrecpecc.f32','vrecpelo.f32','vrecpemi.f32','vrecpepl.f32','vrecpevs.f32','vrecpevc.f32','vrecpehi.f32','vrecpels.f32','vrecpege.f32','vrecpelt.f32','vrecpegt.f32','vrecpele.f32', + 'vrecpseq.f32','vrecpsne.f32','vrecpscs.f32','vrecpshs.f32','vrecpscc.f32','vrecpslo.f32','vrecpsmi.f32','vrecpspl.f32','vrecpsvs.f32','vrecpsvc.f32','vrecpshi.f32','vrecpsls.f32','vrecpsge.f32','vrecpslt.f32','vrecpsgt.f32','vrecpsle.f32', + + 'vrsqrteeq.u32','vrsqrtene.u32','vrsqrtecs.u32','vrsqrtehs.u32','vrsqrtecc.u32','vrsqrtelo.u32','vrsqrtemi.u32','vrsqrtepl.u32','vrsqrtevs.u32','vrsqrtevc.u32','vrsqrtehi.u32','vrsqrtels.u32','vrsqrtege.u32','vrsqrtelt.u32','vrsqrtegt.u32','vrsqrtele.u32', + 'vrsqrteeq.f32','vrsqrtene.f32','vrsqrtecs.f32','vrsqrtehs.f32','vrsqrtecc.f32','vrsqrtelo.f32','vrsqrtemi.f32','vrsqrtepl.f32','vrsqrtevs.f32','vrsqrtevc.f32','vrsqrtehi.f32','vrsqrtels.f32','vrsqrtege.f32','vrsqrtelt.f32','vrsqrtegt.f32','vrsqrtele.f32', + 'vrsqrtseq.f32','vrsqrtsne.f32','vrsqrtscs.f32','vrsqrtshs.f32','vrsqrtscc.f32','vrsqrtslo.f32','vrsqrtsmi.f32','vrsqrtspl.f32','vrsqrtsvs.f32','vrsqrtsvc.f32','vrsqrtshi.f32','vrsqrtsls.f32','vrsqrtsge.f32','vrsqrtslt.f32','vrsqrtsgt.f32','vrsqrtsle.f32', + + 'vsqrteq.f32','vsqrtne.f32','vsqrtcs.f32','vsqrths.f32','vsqrtcc.f32','vsqrtlo.f32','vsqrtmi.f32','vsqrtpl.f32','vsqrtvs.f32','vsqrtvc.f32','vsqrthi.f32','vsqrtls.f32','vsqrtge.f32','vsqrtlt.f32','vsqrtgt.f32','vsqrtle.f32', + 'vsqrteq.f64','vsqrtne.f64','vsqrtcs.f64','vsqrths.f64','vsqrtcc.f64','vsqrtlo.f64','vsqrtmi.f64','vsqrtpl.f64','vsqrtvs.f64','vsqrtvc.f64','vsqrthi.f64','vsqrtls.f64','vsqrtge.f64','vsqrtlt.f64','vsqrtgt.f64','vsqrtle.f64', + + 'vsubeq.f32','vsubne.f32','vsubcs.f32','vsubhs.f32','vsubcc.f32','vsublo.f32','vsubmi.f32','vsubpl.f32','vsubvs.f32','vsubvc.f32','vsubhi.f32','vsubls.f32','vsubge.f32','vsublt.f32','vsubgt.f32','vsuble.f32', + 'vsubeq.f64','vsubne.f64','vsubcs.f64','vsubhs.f64','vsubcc.f64','vsublo.f64','vsubmi.f64','vsubpl.f64','vsubvs.f64','vsubvc.f64','vsubhi.f64','vsubls.f64','vsubge.f64','vsublt.f64','vsubgt.f64','vsuble.f64' + ), + /* Registers */ + 35 => array( + /* General-Purpose Registers */ + 'r0','r1','r2','r3','r4','r5','r6','r7', + 'r8','r9','r10','r11','r12','r13','r14','r15', + /* Scratch Registers */ + 'a1','a2','a3','a4', + /* Variable Registers */ + 'v1','v2','v3','v4','v5','v6','v7','v8', + /* Other Synonims for General-Purpose Registers */ + 'sb','sl','fp','ip','sp','lr','pc', + /* WMMX Data Registers */ + 'wr0','wr1','wr2','wr3','wr4','wr5','wr6','wr7', + 'wr8','wr9','wr10','wr11','wr12','wr13','wr14','wr15', + /* WMMX Control Registers */ + 'wcid','wcon','wcssf','wcasf', + /* WMMX-Mapped General-Purpose Registers */ + 'wcgr0','wcgr1','wcgr2','wcgr3', + /* VFPv3 Registers */ + 's0','s1','s2','s3','s4','s5','s6','s7', + 's8','s9','s10','s11','s12','s13','s14','s15', + 's16','s17','s18','s19','s20','s21','s22','s23', + 's24','s25','s26','s27','s28','s29','s30','s31', + /* VFPv3/NEON Registers */ + 'd0','d1','d2','d3','d4','d5','d6','d7', + 'd8','d9','d10','d11','d12','d13','d14','d15', + 'd16','d17','d18','d19','d20','d21','d22','d23', + 'd24','d25','d26','d27','d28','d29','d30','d31', + /* NEON Registers */ + 'q0','q1','q2','q3','q4','q5','q6','q7', + 'q8','q9','q10','q11','q12','q13','q14','q15' + ) + ), + 'SYMBOLS' => array( + '[', ']', '(', ')', + '+', '-', '*', '/', '%', + '.', ',', ';', ':' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + 15 => false, + 16 => false, + 17 => false, + 18 => false, + 19 => false, + 20 => false, + 21 => false, + 22 => false, + 23 => false, + 24 => false, + 25 => false, + 26 => false, + 27 => false, + 28 => false, + 29 => false, + 30 => false, + 31 => false, + 32 => false, + 33 => false, + 34 => false, + 35 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + /* Unconditional Data Processing Instructions */ + 1 => 'color: #00007f; font-weight: normal; font-style: normal;', + /* Conditional Data Processing Instructions */ + 2 => 'color: #00007f; font-weight: normal; font-style: italic;', + /* Unconditional Memory Access Instructions */ + 3 => 'color: #00007f; font-weight: normal; font-style: normal;', + /* Conditional Memory Access Instructions */ + 4 => 'color: #00007f; font-weight: normal; font-style: italic;', + /* Unconditional Flags Changing Instructions */ + 5 => 'color: #00007f; font-weight: bold; font-style: normal;', + /* Conditional Flags Changing Instructions */ + 6 => 'color: #00007f; font-weight: bold; font-style: italic;', + /* Unconditional Flow Control Instructions */ + 7 => 'color: #0000ff; font-weight: normal; font-style: normal;', + /* Conditional Flow Control Instructions */ + 8 => 'color: #0000ff; font-weight: normal; font-style: italic;', + /* Unconditional Syncronization Instructions */ + 9 => 'color: #00007f; font-weight: normal; font-style: normal;', + /* Conditional Syncronization Instructions */ + 10 => 'color: #00007f; font-weight: normal; font-style: italic;', + /* Unonditional ARMv6 SIMD */ + 11 => 'color: #b00040; font-weight: normal; font-style: normal;', + /* Conditional ARMv6 SIMD */ + 12 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Unconditional Coprocessor Instructions */ + 13 => 'color: #00007f; font-weight: normal; font-style: normal;', + /* Conditional Coprocessor Instructions */ + 14 => 'color: #00007f; font-weight: bold; font-style: italic;', + /* Unconditional System Instructions */ + 15 => 'color: #00007f; font-weight: normal; font-style: normal;', + /* Conditional System Instructions */ + 16 => 'color: #00007f; font-weight: bold; font-style: italic;', + /* Unconditional WMMX/WMMX2 SIMD Instructions */ + 17 => 'color: #b00040; font-weight: normal; font-style: normal;', + /* Conditional WMMX/WMMX2 SIMD Instructions */ + 18 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Unconditional VFPv3 & NEON SIMD Memory Access Instructions */ + 19 => 'color: #b00040; font-weight: normal; font-style: normal;', + /* Unconditional NEON SIMD Logical Instructions */ + 20 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Unconditional NEON SIMD ARM Registers Interop Instructions */ + 21 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Unconditional NEON SIMD Bit/Byte-Level Instructions */ + 22 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Unconditional NEON SIMD Universal Integer Instructions */ + 23 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Unconditional NEON SIMD Signed Integer Instructions */ + 24 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Unconditional NEON SIMD Unsigned Integer Instructions */ + 25 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Unconditional VFPv3 & NEON SIMD Floating-Point Instructions */ + 26 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Conditional VFPv3 & NEON SIMD Memory Access Instructions */ + 27 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Conditional NEON SIMD Logical Instructions */ + 28 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Conditional NEON SIMD ARM Registers Interop Instructions */ + 29 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Conditional NEON SIMD Bit/Byte-Level Instructions */ + 30 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Conditional NEON SIMD Universal Integer Instructions */ + 31 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Conditional NEON SIMD Signed Integer Instructions */ + 32 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Conditional NEON SIMD Unsigned Integer Instructions */ + 33 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Conditional VFPv3 & NEON SIMD Floating-Point Instructions */ + 34 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Registers */ + 35 => 'color: #46aa03; font-weight: bold;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 2 => 'color: #adadad; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900; font-weight: bold;' + ), + 'STRINGS' => array( + 0 => 'color: #7f007f;' + ), + 'NUMBERS' => array( + 0 => 'color: #ff0000;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #339933;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 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 => '' + ), + 'NUMBERS' => + GESHI_NUMBER_BIN_PREFIX_PERCENT | + GESHI_NUMBER_BIN_SUFFIX | + GESHI_NUMBER_HEX_PREFIX | + GESHI_NUMBER_HEX_SUFFIX | + GESHI_NUMBER_OCT_SUFFIX | + GESHI_NUMBER_INT_BASIC | + GESHI_NUMBER_FLT_NONSCI | + GESHI_NUMBER_FLT_NONSCI_F | + GESHI_NUMBER_FLT_SCI_ZERO, + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 8, + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 'DISALLOWED_BEFORE' => "(?|^])", + 'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_<\|%])" + ) + ) +); diff --git a/includes/geshi/asm.php b/includes/geshi/asm.php new file mode 100644 index 0000000..b602830 --- /dev/null +++ b/includes/geshi/asm.php @@ -0,0 +1,601 @@ + 'ASM', + 'COMMENT_SINGLE' => array(1 => ';'), + 'COMMENT_MULTI' => array(), + //Line address prefix suppression + 'COMMENT_REGEXP' => array(2 => "/^(?:[0-9a-f]{0,4}:)?[0-9a-f]{4}(?:[0-9a-f]{4})?/mi"), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + /* General-Purpose */ + 1 => array( + /* BCD instructions */ + 'aaa','aad','aam','aas','daa','das', + /* Control flow instructions */ + 'ja','jae','jb','jbe','jc','je','jg','jge','jl','jle','jmp','jna', + 'jnae','jnb','jnbe','jnc','jne','jng','jnge','jnl','jnle','jno','jnp','jns','jnz', + 'jo','jp','jpe','jpo','js','jz','jcxz','jecxz','jrcxz','loop','loope','loopne', + 'call','ret','enter','leave','syscall','sysenter','int','into', + /* Predicate instructions */ + 'seta','setae','setb','setbe','setc','sete','setg','setge','setl','setle','setna', + 'setnae','setnb','setnbe','setnc','setne','setng','setnge','setnl','setnle','setno', + 'setnp','setns','setnz','seto','setp','setpe','setpo','sets','setz','salc', + /* Conditional move instructions */ + 'cmovo','cmovno','cmovb','cmovc','cmovnae','cmovae','cmovnb','cmovnc','cmove','cmovz', + 'cmovne','cmovnz','cmovbe','cmovna','cmova','cmovnbe','cmovs','cmovns','cmovp','cmovpe', + 'cmovnp','cmovpo','cmovl','cmovnge','cmovge','cmovnl','cmovle','cmovng','cmovg','cmovnle', + /* ALU instructions */ + 'add','sub','adc','sbb','neg','cmp','inc','dec','and','or','xor','not','test', + 'shl','shr','sal','sar','shld','shrd','rol','ror','rcl','rcr', + 'cbw','cwd','cwde','cdq','cdqe','cqo','bsf','bsr','bt','btc','btr','bts', + 'idiv','imul','div','mul','bswap','nop', + /* Memory instructions */ + 'lea','mov','movsx','movsxd','movzx','xlatb','bound','xchg','xadd','cmpxchg','cmpxchg8b','cmpxchg16b', + /* Stack instructions */ + 'push','pop','pusha','popa','pushad','popad','pushf','popf','pushfd','popfd','pushfq','popfq', + /* EFLAGS manipulations instructions */ + 'clc','cld','stc','std','cmc','lahf','sahf', + /* Prefix instructions */ + 'lock','rep','repe','repz','repne','repnz', + /* String instructions */ + 'cmps','cmpsb','cmpsw',/*'cmpsd',*/ 'cmpsq', /*CMPSD conflicts with the SSE2 instructions of the same name*/ + 'movs','movsb','movsw',/*'movsd',*/ 'movsq', /*MOVSD conflicts with the SSE2 instructions of the same name*/ + 'scas','scasb','scasw','scasd','scasq', + 'stos','stosb','stosw','stosd','stosq', + 'lods','lodsb','lodsw','lodsd','lodsq', + /* Information instructions */ + 'cpuid','rdtsc','rdtscp','rdpmc','xgetbv', + 'sgdt','sidt','sldt','smsw','str','lar', + /* LWP instructions */ + 'llwpcb','slwpcb','lwpval','lwpins', + /* Instructions from miscellaneous extensions */ + 'crc32','popcnt','lzcnt','tzcnt','movbe','pclmulqdq','rdrand', + /* FSGSBASE instructions */ + 'rdfsbase','rdgsbase','wrfsbase','wrgsbase', + /* BMI1 instructions */ + 'andn','bextr','blsi','blsmk','blsr', + /* BMI2 instructions */ + 'bzhi','mulx','pdep','pext','rorx','sarx','shlx','shrx', + /* TBM instructions */ + 'blcfill','blci','blcic','blcmsk','blcs','blsfill','blsic','t1mskc','tzmsk', + /* Legacy instructions */ + 'arpl','ud2','lds','les','lfs','lgs','lss','lsl','verr','verw', + /* Privileged instructions */ + 'cli','sti','clts','hlt','rsm','in','insb','insw','insd', + 'out','outsb','outsw','outsd','clflush','invd','invlpg','invpcid','wbinvd', + 'iret','iretd','iretq','sysexit','sysret','lidt','lgdt','lldt','lmsw','ltr', + 'monitor','mwait','rdmsr','wrmsr','swapgs', + 'fxsave','fxsave64','fxrstor','fxrstor64', + 'xsave','xsaveopt','xrstor','xsetbv','getsec', + /* VMX instructions */ + 'invept','invvpid','vmcall','vmclear','vmlaunch','vmresume', + 'vmptrld','vmptrst','vmread','vmwrite','vmxoff','vmxon', + /* SVM (AMD-V) instructions */ + 'invlpga','skinit','clgi','stgi','vmload','vmsave','vmmcall','vmrun' + ), + /*FPU*/ + 2 => array( + 'f2xm1','fabs','fadd','faddp','fbld','fbstp','fchs','fclex','fcom','fcomp','fcompp','fdecstp', + 'fdisi','fdiv','fdivp','fdivr','fdivrp','feni','ffree','fiadd','ficom','ficomp','fidiv', + 'fidivr','fild','fimul','fincstp','finit','fist','fistp','fisub','fisubr','fld','fld1', + 'fldcw','fldenv','fldenvw','fldl2e','fldl2t','fldlg2','fldln2','fldpi','fldz','fmul', + 'fmulp','fnclex','fndisi','fneni','fninit','fnop','fnsave','fnsavew','fnstcw','fnstenv', + 'fnstenvw','fnstsw','fpatan','fprem','fptan','frndint','frstor','frstorw','fsave', + 'fsavew','fscale','fsqrt','fst','fstcw','fstenv','fstenvw','fstp','fstsw','fsub','fsubp', + 'fsubr','fsubrp','ftst','fwait','fxam','fxch','fxtract','fyl2x','fyl2xp1', + 'fsetpm','fcos','fldenvd','fnsaved','fnstenvd','fprem1','frstord','fsaved','fsin','fsincos', + 'fstenvd','fucom','fucomp','fucompp','ffreep', + /* FCMOV instructions */ + 'fcomi','fcomip','fucomi','fucomip', + 'fcmovb','fcmove','fcmovbe','fcmovu','fcmovnb','fcmovne','fcmovnbe','fcmovnu', + /* SSE3 instructions */ + 'fisttp' + ), + /*SIMD*/ + 3 => array( + /* MMX instructions */ + 'movd','movq', + 'paddb','paddw','paddd','paddsb','paddsw','paddusb','paddusw', + 'psubb','psubw','psubd','psubsb','psubsw','psubusb','psubusw', + 'pand','pandn','por','pxor', + 'pcmpeqb','pcmpeqd','pcmpeqw','pcmpgtb','pcmpgtd','pcmpgtw', + 'pmaddwd','pmulhw','pmullw', + 'psllw','pslld','psllq','psrlw','psrld','psrlq','psraw','psrad', + 'packuswb','packsswb','packssdw', + 'punpcklbw','punpcklwd','punpckldq','punpckhbw','punpckhwd','punpckhdq', + 'emms', + /* MMX+ instructions */ + 'pavgb','pavgw', + 'pextrw','pinsrw','pmovmskb', + 'pmaxsw','pmaxub','pminsw','pminub', + 'pmulhuw','psadbw','pshufw', + 'prefetchnta','prefetcht0','prefetcht1','prefetcht2', + 'maskmovq','movntq','sfence', + /* EMMX instructions (only available on Cyrix MediaGXm) */ + 'paddsiw','psubsiw', + /*'pmulhrw',*/'pmachriw','pmulhriw', /* PMULHRW conflicts with the 3dnow! instruction of the same name */ + 'pmagw','pdistib','paveb', + 'pmvzb','pmvnzb','pmvlzb','pmvgezb', + /* 3dnow! instructions! */ + 'pfacc','pfadd','pfsub','pfsubr','pfmul', + 'pfcmpeq','pfcmpge','pfcmpgt', + 'pfmax','pfmin', + 'pfrcp','pfrcpit1','pfrcpit2','pfrsqit1','pfrsqrt', + 'pi2fd','pf2id', + 'pavgusb','pmulhrw', + 'femms', + /* 3dnow!+ instructions */ + 'pfnacc','pfpnacc','pi2fw','pf2iw','pswapd', + /* 3dnow! Geode instructions */ + 'pfrsqrtv','pfrcpv', + /* 3dnow! Prefetch instructions */ + 'prefetch','prefetchw', + /* SSE instructions */ + 'addss','addps','subss','subps', + 'mulss','mulps','divss','divps','sqrtss','sqrtps', + 'rcpss','rcpps','rsqrtss','rsqrtps', + 'maxss','maxps','minss','minps', + 'cmpss','comiss','ucomiss','cmpps', + 'cmpeqss','cmpltss','cmpless','cmpunordss','cmpneqss','cmpnltss','cmpnless','cmpordss', + 'cmpeqps','cmpltps','cmpleps','cmpunordps','cmpneqps','cmpnltps','cmpnleps','cmpordps', + 'andnps','andps','orps','xorps', + 'cvtsi2ss','cvtss2si','cvttss2si', + 'cvtpi2ps','cvtps2pi','cvttps2pi', + 'movss','movlps','movhps','movlhps','movhlps','movaps','movups','movntps','movmskps', + 'shufps','unpckhps','unpcklps', + 'ldmxcsr','stmxcsr', + /* SSE2 instructions */ + 'addpd','addsd','subpd','subsd', + 'mulsd','mulpd','divsd','divpd','sqrtsd','sqrtpd', + 'maxsd','maxpd','minsd','minpd', + 'cmpsd','comisd','ucomisd','cmppd', + 'cmpeqsd','cmpltsd','cmplesd','cmpunordsd','cmpneqsd','cmpnltsd','cmpnlesd','cmpordsd', + 'cmpeqpd','cmpltpd','cmplepd','cmpunordpd','cmpneqpd','cmpnltpd','cmpnlepd','cmpordpd', + 'andnpd','andpd','orpd','xorpd', + 'cvtsd2ss','cvtpd2ps','cvtss2sd','cvtps2pd', + 'cvtdq2ps','cvtps2dq','cvttps2dq', + 'cvtdq2pd','cvtpd2dq','cvttpd2dq', + 'cvtsi2sd','cvtsd2si','cvttsd2si', + 'cvtpi2pd','cvtpd2pi','cvttpd2pi', + 'movsd','movlpd','movhpd','movapd','movupd','movntpd','movmskpd', + 'shufpd','unpckhpd','unpcklpd', + 'movnti','movdqa','movdqu','movntdq','maskmovdqu', + 'movdq2q','movq2dq', + 'paddq','psubq','pmuludq', + 'pslldq','psrldq', + 'punpcklqdq','punpckhqdq', + 'pshufhw','pshuflw','pshufd', + 'lfence','mfence', + /* SSE3 instructions */ + 'addsubps','addsubpd', + 'haddps','haddpd','hsubps','hsubpd', + 'movsldup','movshdup','movddup', + 'lddqu', + /* SSSE3 instructions */ + 'psignb','psignw','psignd', + 'pabsb','pabsw','pabsd', + 'palignr','pshufb', + 'pmulhrsw','pmaddubsw', + 'phaddw','phaddd','phaddsw', + 'phsubw','phsubd','phsubsw', + /* SSE4A instructions */ + 'extrq','insertq','movntsd','movntss', + /* SSE4.1 instructions */ + 'mpsadbw','phminposuw', + 'pmuldq','pmulld', + 'dpps','dppd', + 'blendps','blendpd','blendvps','blendvpd','pblendvb','pblendw', + 'pmaxsb','pmaxuw','pmaxsd','pmaxud','pminsb','pminuw','pminsd','pminud', + 'roundps','roundss','roundpd','roundsd', + 'insertps','pinsrb','pinsrd','pinsrq', + 'extractps','pextrb','pextrd','pextrq', + 'pmovsxbw','pmovsxbd','pmovsxbq','pmovsxwd','pmovsxwq','pmovsxdq', + 'pmovzxbw','pmovzxbd','pmovzxbq','pmovzxwd','pmovzxwq','pmovzxdq', + 'ptest', + 'pcmpeqq', + 'packusdw', + 'movntdqa', + /* SSE4.2 instructions */ + 'pcmpgtq', + 'pcmpestri','pcmpestrm','pcmpistri','pcmpistrm', + /* AES instructions */ + 'aesenc','aesenclast','aesdec','aesdeclast','aeskeygenassist','aesimc', + /* VIA Padlock instructions */ + 'xcryptcbc','xcryptcfb','xcryptctr','xcryptecb','xcryptofb', + 'xsha1','xsha256','montmul','xstore', + /* AVX instructions */ + 'vaddss','vaddps','vaddsd','vaddpd','vsubss','vsubps','vsubsd','vsubpd', + 'vaddsubps','vaddsubpd', + 'vhaddps','vhaddpd','vhsubps','vhsubpd', + 'vmulss','vmulps','vmulsd','vmulpd', + 'vmaxss','vmaxps','vmaxsd','vmaxpd','vminss','vminps','vminsd','vminpd', + 'vandps','vandpd','vandnps','vandnpd','vorps','vorpd','vxorps','vxorpd', + 'vblendps','vblendpd','vblendvps','vblendvpd', + 'vcmpss','vcomiss','vucomiss','vcmpsd','vcomisd','vucomisd','vcmpps','vcmppd', + 'vcmpeqss','vcmpltss','vcmpless','vcmpunordss','vcmpneqss','vcmpnltss','vcmpnless','vcmpordss', + 'vcmpeq_uqss','vcmpngess','vcmpngtss','vcmpfalsess','vcmpneq_oqss','vcmpgess','vcmpgtss','vcmptruess', + 'vcmpeq_osss','vcmplt_oqss','vcmple_oqss','vcmpunord_sss','vcmpneq_usss','vcmpnlt_uqss','vcmpnle_uqss','vcmpord_sss', + 'vcmpeq_usss','vcmpnge_uqss','vcmpngt_uqss','vcmpfalse_osss','vcmpneq_osss','vcmpge_oqss','vcmpgt_oqss','vcmptrue_usss', + 'vcmpeqps','vcmpltps','vcmpleps','vcmpunordps','vcmpneqps','vcmpnltps','vcmpnleps','vcmpordps', + 'vcmpeq_uqps','vcmpngeps','vcmpngtps','vcmpfalseps','vcmpneq_oqps','vcmpgeps','vcmpgtps','vcmptrueps', + 'vcmpeq_osps','vcmplt_oqps','vcmple_oqps','vcmpunord_sps','vcmpneq_usps','vcmpnlt_uqps','vcmpnle_uqps','vcmpord_sps', + 'vcmpeq_usps','vcmpnge_uqps','vcmpngt_uqps','vcmpfalse_osps','vcmpneq_osps','vcmpge_oqps','vcmpgt_oqps','vcmptrue_usps', + 'vcmpeqsd','vcmpltsd','vcmplesd','vcmpunordsd','vcmpneqsd','vcmpnltsd','vcmpnlesd','vcmpordsd', + 'vcmpeq_uqsd','vcmpngesd','vcmpngtsd','vcmpfalsesd','vcmpneq_oqsd','vcmpgesd','vcmpgtsd','vcmptruesd', + 'vcmpeq_ossd','vcmplt_oqsd','vcmple_oqsd','vcmpunord_ssd','vcmpneq_ussd','vcmpnlt_uqsd','vcmpnle_uqsd','vcmpord_ssd', + 'vcmpeq_ussd','vcmpnge_uqsd','vcmpngt_uqsd','vcmpfalse_ossd','vcmpneq_ossd','vcmpge_oqsd','vcmpgt_oqsd','vcmptrue_ussd', + 'vcmpeqpd','vcmpltpd','vcmplepd','vcmpunordpd','vcmpneqpd','vcmpnltpd','vcmpnlepd','vcmpordpd', + 'vcmpeq_uqpd','vcmpngepd','vcmpngtpd','vcmpfalsepd','vcmpneq_oqpd','vcmpgepd','vcmpgtpd','vcmptruepd', + 'vcmpeq_ospd','vcmplt_oqpd','vcmple_oqpd','vcmpunord_spd','vcmpneq_uspd','vcmpnlt_uqpd','vcmpnle_uqpd','vcmpord_spd', + 'vcmpeq_uspd','vcmpnge_uqpd','vcmpngt_uqpd','vcmpfalse_ospd','vcmpneq_ospd','vcmpge_oqpd','vcmpgt_oqpd','vcmptrue_uspd', + 'vcvtsd2ss','vcvtpd2ps','vcvtss2sd','vcvtps2pd', + 'vcvtsi2ss','vcvtss2si','vcvttss2si', + 'vcvtpi2ps','vcvtps2pi','vcvttps2pi', + 'vcvtdq2ps','vcvtps2dq','vcvttps2dq', + 'vcvtdq2pd','vcvtpd2dq','vcvttpd2dq', + 'vcvtsi2sd','vcvtsd2si','vcvttsd2si', + 'vcvtpi2pd','vcvtpd2pi','vcvttpd2pi', + 'vdivss','vdivps','vdivsd','vdivpd','vsqrtss','vsqrtps','vsqrtsd','vsqrtpd', + 'vdpps','vdppd', + 'vmaskmovps','vmaskmovpd', + 'vmovss','vmovsd','vmovaps','vmovapd','vmovups','vmovupd','vmovntps','vmovntpd', + 'vmovhlps','vmovlhps','vmovlps','vmovlpd','vmovhps','vmovhpd', + 'vmovsldup','vmovshdup','vmovddup', + 'vmovmskps','vmovmskpd', + 'vroundss','vroundps','vroundsd','vroundpd', + 'vrcpss','vrcpps','vrsqrtss','vrsqrtps', + 'vunpcklps','vunpckhps','vunpcklpd','vunpckhpd', + 'vbroadcastss','vbroadcastsd','vbroadcastf128', + 'vextractps','vinsertps','vextractf128','vinsertf128', + 'vshufps','vshufpd','vpermilps','vpermilpd','vperm2f128', + 'vtestps','vtestpd', + 'vpaddb','vpaddusb','vpaddsb','vpaddw','vpaddusw','vpaddsw','vpaddd','vpaddq', + 'vpsubb','vpsubusb','vpsubsb','vpsubw','vpsubusw','vpsubsw','vpsubd','vpsubq', + 'vphaddw','vphaddsw','vphaddd','vphsubw','vphsubsw','vphsubd', + 'vpsllw','vpslld','vpsllq','vpsrlw','vpsrld','vpsrlq','vpsraw','vpsrad', + 'vpand','vpandn','vpor','vpxor', + 'vpblendwb','vpblendw', + 'vpsignb','vpsignw','vpsignd', + 'vpavgb','vpavgw', + 'vpabsb','vpabsw','vpabsd', + 'vmovd','vmovq','vmovdqa','vmovdqu','vlddqu','vmovntdq','vmovntdqa','vmaskmovdqu', + 'vpmovsxbw','vpmovsxbd','vpmovsxbq','vpmovsxwd','vpmovsxwq','vpmovsxdq', + 'vpmovzxbw','vpmovzxbd','vpmovzxbq','vpmovzxwd','vpmovzxwq','vpmovzxdq', + 'vpackuswb','vpacksswb','vpackusdw','vpackssdw', + 'vpcmpeqb','vpcmpeqw','vpcmpeqd','vpcmpeqq','vpcmpgtb','vpcmpgtw','vpcmpgtd','vpcmpgtq', + 'vpmaddubsw','vpmaddwd', + 'vpmullw','vpmulhuw','vpmulhw','vpmulhrsw','vpmulld','vpmuludq','vpmuldq', + 'vpmaxub','vpmaxsb','vpmaxuw','vpmaxsw','vpmaxud','vpmaxsd', + 'vpminub','vpminsb','vpminuw','vpminsw','vpminud','vpminsd', + 'vpmovmskb','vptest', + 'vpunpcklbw','vpunpcklwd','vpunpckldq','vpunpcklqdq', + 'vpunpckhbw','vpunpckhwd','vpunpckhdq','vpunpckhqdq', + 'vpslldq','vpsrldq','vpalignr', + 'vpshufb','vpshuflw','vpshufhw','vpshufd', + 'vpextrb','vpextrw','vpextrd','vpextrq','vpinsrb','vpinsrw','vpinsrd','vpinsrq', + 'vpsadbw','vmpsadbw','vphminposuw', + 'vpcmpestri','vpcmpestrm','vpcmpistri','vpcmpistrm', + 'vpclmulqdq','vaesenc','vaesenclast','vaesdec','vaesdeclast','vaeskeygenassist','vaesimc', + 'vldmxcsr','vstmxcsr','vzeroall','vzeroupper', + /* AVX2 instructions */ + 'vbroadcasti128','vpbroadcastb','vpbroadcastw','vpbroadcastd','vpbroadcastq', + 'vpblendd', + 'vpermd','vpermq','vperm2i128', + 'vextracti128','vinserti128', + 'vpmaskmovd','vpmaskmovq', + 'vpsllvd','vpsllvq','vpsravd','vpsrlvd', + 'vpgatherdd','vpgatherqd','vgatherdq','vgatherqq', + 'vpermps','vpermpd', + 'vgatherdpd','vgatherqpd','vgatherdps','vgatherqps', + /* XOP instructions */ + 'vfrczss','vfrczps','vfrczsd','vfrczpd', + 'vpermil2ps','vperlil2pd', + 'vpcomub','vpcomb','vpcomuw','vpcomw','vpcomud','vpcomd','vpcomuq','vpcomq', + 'vphaddubw','vphaddbw','vphaddubd','vphaddbd','vphaddubq','vphaddbq', + 'vphadduwd','vphaddwd','vphadduwq','vphaddwq','vphaddudq','vphadddq', + 'vphsubbw','vphsubwd','vphsubdq', + 'vpmacsdd','vpmacssdd','vpmacsdql','vpmacssdql','vpmacsdqh','vpmacssdqh', + 'vpmacsww','vpmacssww','vpmacswd','vpmacsswd', + 'vpmadcswd','vpmadcsswd', + 'vpcmov','vpperm', + 'vprotb','vprotw','vprotd','vprotq', + 'vpshab','vpshaw','vpshad','vpshaq', + 'vpshlb','vpshlw','vpshld','vpshlq', + /* CVT16 instructions */ + 'vcvtph2ps','vcvtps2ph', + /* FMA4 instructions */ + 'vfmaddss','vfmaddps','vfmaddsd','vfmaddpd', + 'vfmsubss','vfmsubps','vfmsubsd','vfmsubpd', + 'vnfmaddss','vnfmaddps','vnfmaddsd','vnfmaddpd', + 'vnfmsubss','vnfmsubps','vnfmsubsd','vnfmsubpd', + 'vfmaddsubps','vfmaddsubpd','vfmsubaddps','vfmsubaddpd', + /* FMA3 instructions */ + 'vfmadd132ss','vfmadd213ss','vfmadd231ss', + 'vfmadd132ps','vfmadd213ps','vfmadd231ps', + 'vfmadd132sd','vfmadd213sd','vfmadd231sd', + 'vfmadd132pd','vfmadd213pd','vfmadd231pd', + 'vfmaddsub132ps','vfmaddsub213ps','vfmaddsub231ps', + 'vfmaddsub132pd','vfmaddsub213pd','vfmaddsub231pd', + 'vfmsubadd132ps','vfmsubadd213ps','vfmsubadd231ps', + 'vfmsubadd132pd','vfmsubadd213pd','vfmsubadd231pd', + 'vfmsub132ss','vfmsub213ss','vfmsub231ss', + 'vfmsub132ps','vfmsub213ps','vfmsub231ps', + 'vfmsub132sd','vfmsub213sd','vfmsub231sd', + 'vfmsub132pd','vfmsub213pd','vfmsub231pd', + 'vfnmadd132ss','vfnmadd213ss','vfnmadd231ss', + 'vfnmadd132ps','vfnmadd213ps','vfnmadd231ps', + 'vfnmadd132sd','vfnmadd213sd','vfnmadd231sd', + 'vfnmadd132pd','vfnmadd213pd','vfnmadd231pd', + 'vfnmsub132ss','vfnmsub213ss','vfnmsub231ss', + 'vfnmsub132ps','vfnmsub213ps','vfnmsub231ps', + 'vfnmsub132sd','vfnmsub213sd','vfnmsub231sd', + 'vfnmsub132pd','vfnmsub213pd','vfnmsub231pd' + ), + /*registers*/ + 4 => array( + /* General-Purpose Registers */ + 'al','ah','bl','bh','cl','ch','dl','dh','sil','dil','bpl','spl', + 'r8b','r9b','r10b','r11b','r12b','r13b','r14b','r15b', + 'ax','bx','cx','dx','si','di','bp','sp', + 'r8w','r9w','r10w','r11w','r12w','r13w','r14w','r15w', + 'eax','ebx','ecx','edx','esi','edi','ebp','esp', + 'r8d','r9d','r10d','r11d','r12d','r13d','r14d','r15d', + 'rax','rcx','rdx','rbx','rsp','rbp','rsi','rdi', + 'r8','r9','r10','r11','r12','r13','r14','r15', + /* Debug Registers */ + 'dr0','dr1','dr2','dr3','dr6','dr7', + /* Control Registers */ + 'cr0','cr2','cr3','cr4','cr8', + /* Test Registers (Supported on Intel 486 only) */ + 'tr3','tr4','tr5','tr6','tr7', + /* Segment Registers */ + 'cs','ds','es','fs','gs','ss', + /* FPU Registers */ + 'st','st0','st1','st2','st3','st4','st5','st6','st7', + /* MMX Registers */ + 'mm0','mm1','mm2','mm3','mm4','mm5','mm6','mm7', + /* SSE Registers */ + 'xmm0','xmm1','xmm2','xmm3','xmm4','xmm5','xmm6','xmm7', + 'xmm8','xmm9','xmm10','xmm11','xmm12','xmm13','xmm14','xmm15', + /* AVX Registers */ + 'ymm0','ymm1','ymm2','ymm3','ymm4','ymm5','ymm6','ymm7', + 'ymm8','ymm9','ymm10','ymm11','ymm12','ymm13','ymm14','ymm15' + ), + /*Directive*/ + 5 => array( + 'db','dw','dd','dq','dt','do','dy', + 'resb','resw','resd','resq','rest','reso','resy','incbin','equ','times','safeseh', + '__utf16__','__utf32__', + 'default','cpu','float','start','imagebase','osabi', + '..start','..imagebase','..gotpc','..gotoff','..gottpoff','..got','..plt','..sym','..tlsie', + 'section','segment','__sect__','group','absolute', + '.bss','.comment','.data','.lbss','.ldata','.lrodata','.rdata','.rodata','.tbss','.tdata','.text', + 'alloc','bss','code','exec','data','noalloc','nobits','noexec','nowrite','progbits','rdata','tls','write', + 'private','public','common','stack','overlay','class', + 'extern','global','import','export', + '%define','%idefine','%xdefine','%ixdefine','%assign','%undef', + '%defstr','%idefstr','%deftok','%ideftok', + '%strcat','%strlen','%substr', + '%macro','%imacro','%rmacro','%exitmacro','%endmacro','%unmacro', + '%if','%ifn','%elif','%elifn','%else','%endif', + '%ifdef','%ifndef','%elifdef','%elifndef', + '%ifmacro','%ifnmacro','%elifmacro','%elifnmacro', + '%ifctx','%ifnctx','%elifctx','%elifnctx', + '%ifidn','%ifnidn','%elifidn','%elifnidn', + '%ifidni','%ifnidni','%elifidni','%elifnidni', + '%ifid','%ifnid','%elifid','%elifnid', + '%ifnum','%ifnnum','%elifnum','%elifnnum', + '%ifstr','%ifnstr','%elifstr','%elifnstr', + '%iftoken','%ifntoken','%eliftoken','%elifntoken', + '%ifempty','%ifnempty','%elifempty','%elifnempty', + '%ifenv','%ifnenv','%elifenv','%elifnenv', + '%rep','%exitrep','%endrep', + '%while','%exitwhile','%endwhile', + '%include','%pathsearch','%depend','%use', + '%push','%pop','%repl','%arg','%local','%stacksize','flat','flat64','large','small', + '%error','%warning','%fatal', + '%00','.nolist','%rotate','%line','%!','%final','%clear', + 'struc','endstruc','istruc','at','iend', + 'align','alignb','sectalign', + 'bits','use16','use32','use64', + '__nasm_major__','__nasm_minor__','__nasm_subminor__','___nasm_patchlevel__', + '__nasm_version_id__','__nasm_ver__', + '__file__','__line__','__pass__','__bits__','__output_format__', + '__date__','__time__','__date_num__','__time_num__','__posix_time__', + '__utc_date__','__utc_time__','__utc_date_num__','__utc_time_num__', + '__float_daz__','__float_round__','__float__', + /* Keywords from standard packages */ + '__use_altreg__', + '__use_smartalign__','smartalign','__alignmode__', + '__use_fp__','__infinity__','__nan__','__qnan__','__snan__', + '__float8__','__float16__','__float32__','__float64__','__float80m__','__float80e__','__float128l__','__float128h__' + ), + /*Operands*/ + 6 => array( + 'a16','a32','a64','o16','o32','o64','strict', + 'byte','word','dword','qword','tword','oword','yword','nosplit', + '%0','%1','%2','%3','%4','%5','%6','%7','%8','%9', + 'abs','rel', + 'seg','wrt' + ) + ), + 'SYMBOLS' => array( + 1 => array( + '[', ']', '(', ')', + '+', '-', '*', '/', '%', + '.', ',', ';', ':' + ), + 2 => array( + '$','$$','%+','%?','%??' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #00007f; font-weight: bold;', + 2 => 'color: #0000ff;', + 3 => 'color: #b00040;', + 4 => 'color: #46aa03; font-weight: bold;', + 5 => 'color: #0000ff; font-weight: bold;', + 6 => 'color: #0000ff; font-weight: bold;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 2 => 'color: #adadad; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900; font-weight: bold;' + ), + 'STRINGS' => array( + 0 => 'color: #7f007f;' + ), + 'NUMBERS' => array( + 0 => 'color: #ff0000;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 1 => 'color: #339933;', + 2 => 'color: #0000ff; font-weight: bold;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '' + ), + 'NUMBERS' => + GESHI_NUMBER_BIN_PREFIX_PERCENT | + GESHI_NUMBER_BIN_SUFFIX | + GESHI_NUMBER_HEX_PREFIX | + GESHI_NUMBER_HEX_SUFFIX | + GESHI_NUMBER_OCT_SUFFIX | + GESHI_NUMBER_INT_BASIC | + GESHI_NUMBER_FLT_NONSCI | + GESHI_NUMBER_FLT_NONSCI_F | + GESHI_NUMBER_FLT_SCI_ZERO, + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 8, + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 'DISALLOWED_BEFORE' => "(?|^])", + 'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_<\|%])" + ) + ) +); diff --git a/includes/geshi/asp.php b/includes/geshi/asp.php new file mode 100644 index 0000000..c68ba07 --- /dev/null +++ b/includes/geshi/asp.php @@ -0,0 +1,162 @@ + 'ASP', + 'COMMENT_SINGLE' => array(1 => "'", 2 => '//'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + 'include', 'file', 'Const', 'Dim', 'Option', 'Explicit', 'Implicit', 'Set', 'Select', 'ReDim', 'Preserve', + 'ByVal', 'ByRef', 'End', 'Private', 'Public', 'If', 'Then', 'Else', 'ElseIf', 'Case', 'With', 'NOT', + 'While', 'Wend', 'For', 'Loop', 'Do', 'Request', 'Response', 'Server', 'ADODB', 'Session', 'Application', + 'Each', 'In', 'Get', 'Next', 'INT', 'CINT', 'CBOOL', 'CDATE', 'CBYTE', 'CCUR', 'CDBL', 'CLNG', 'CSNG', + 'CSTR', 'Fix', 'Is', 'Sgn', 'String', 'Boolean', 'Currency', 'Me', 'Single', 'Long', 'Integer', 'Byte', + 'Variant', 'Double', 'To', 'Let', 'Xor', 'Resume', 'On', 'Error', 'Imp', 'GoTo', 'Call', 'Global' + ), + 2 => array( + 'Null', 'Nothing', 'And', + 'False', + 'True', 'var', 'Or', 'BOF', 'EOF', 'xor', + 'Function', 'Class', 'New', 'Sub' + ), + 3 => array( + 'CreateObject', 'Write', 'Redirect', 'Cookies', 'BinaryRead', 'ClientCertificate', 'Form', 'QueryString', + 'ServerVariables', 'TotalBytes', 'AddHeader', 'AppendToLog', 'BinaryWrite', 'Buffer', 'CacheControl', + 'Charset', 'Clear', 'ContentType', 'End()', 'Expires', 'ExpiresAbsolute', 'Flush()', 'IsClientConnected', + 'PICS', 'Status', 'Connection', 'Recordset', 'Execute', 'Abandon', 'Lock', 'UnLock', 'Command', 'Fields', + 'Properties', 'Property', 'Send', 'Replace', 'InStr', 'TRIM', 'NOW', 'Day', 'Month', 'Hour', 'Minute', 'Second', + 'Year', 'MonthName', 'LCase', 'UCase', 'Abs', 'Array', 'As', 'LEN', 'MoveFirst', 'MoveLast', 'MovePrevious', + 'MoveNext', 'LBound', 'UBound', 'Transfer', 'Open', 'Close', 'MapPath', 'FileExists', 'OpenTextFile', 'ReadAll' + ) + ), + 'SYMBOLS' => array( + 1 => array( + '<%', '%>' + ), + 0 => array( + '(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>', + ';', ':', '?', '='), + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #990099; font-weight: bold;', + 2 => 'color: #0000ff; font-weight: bold;', + 3 => 'color: #330066;' + ), + 'COMMENTS' => array( + 1 => 'color: #008000;', + 2 => 'color: #ff6600;', + 'MULTI' => 'color: #008000;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #006600; font-weight:bold;' + ), + 'STRINGS' => array( + 0 => 'color: #cc0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #800000;' + ), + 'METHODS' => array( + 1 => 'color: #9900cc;' + ), + 'SYMBOLS' => array( + 0 => 'color: #006600; font-weight: bold;', + 1 => 'color: #000000; font-weight: bold;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + 0 => '', + 1 => '', + 2 => '', + 3 => '' + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_MAYBE, + 'SCRIPT_DELIMITERS' => array( + 0 => array( + '<%' => '%>' + ), + 1 => array( + '' + ), + 2 => array( + '' + ), + 3 => "/(?P<%=?)(?:\"[^\"]*?\"|\/\*(?!\*\/).*?\*\/|.)*?(?P%>|\Z)/sm" + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + 0 => true, + 1 => true, + 2 => true, + 3 => true + ) +); diff --git a/includes/geshi/asymptote.php b/includes/geshi/asymptote.php new file mode 100644 index 0000000..d7c795b --- /dev/null +++ b/includes/geshi/asymptote.php @@ -0,0 +1,1850 @@ + 'asymptote', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'COMMENT_REGEXP' => array( + //Multiline-continued single-line comments + 1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m', + //Multiline-continued preprocessor define + 2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m' + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'ESCAPE_REGEXP' => array( + //Simple Single Char Escapes + 1 => "#\\\\[\\\\abfnrtv\'\"?\n]#i", + //Hexadecimal Char Specs + 2 => "#\\\\x[\da-fA-F]{2}#", + //Hexadecimal Char Specs + 3 => "#\\\\u[\da-fA-F]{4}#", + //Hexadecimal Char Specs + 4 => "#\\\\U[\da-fA-F]{8}#", + //Octal Char Specs + 5 => "#\\\\[0-7]{1,3}#" + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B | + GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI | + GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO, + 'KEYWORDS' => array( + 1 => array( + 'and', + 'controls', + 'tension', + 'atleast', + 'curl', + 'if', + 'else', + 'while', + 'for', + 'do', + 'return', + 'break', + 'continue', + 'struct', + 'typedef', + 'new', + 'access', + 'import', + 'unravel', + 'from', + 'include', + 'quote', + 'static', + 'public', + 'private', + 'restricted', + 'this', + 'explicit', + 'true', + 'false', + 'null', + 'cycle', + 'newframe', + 'operator' + ), + 2 => array( + 'Braid', + 'FitResult', + 'Label', + 'Legend', + 'Segment', + 'Solution', + 'TreeNode', + 'abscissa', + 'arrowhead', + 'binarytree', + 'binarytreeNode', + 'block', + 'bool', + 'bool3', + 'bounds', + 'bqe', + 'circle', + 'conic', + 'coord', + 'coordsys', + 'cputime', + 'ellipse', + 'file', + 'filltype', + 'frame', + 'grid3', + 'guide', + 'horner', + 'hsv', + 'hyperbola', + 'indexedTransform', + 'int', + 'inversion', + 'key', + 'light', + 'line', + 'linefit', + 'marginT', + 'marker', + 'mass', + 'object', + 'pair', + 'parabola', + 'path', + 'path3', + 'pen', + 'picture', + 'point', + 'position', + 'projection', + 'real', + 'revolution', + 'scaleT', + 'scientific', + 'segment', + 'side', + 'slice', + 'solution', + 'splitface', + 'string', + 'surface', + 'tensionSpecifier', + 'ticklocate', + 'ticksgridT', + 'tickvalues', + 'transform', + 'transformation', + 'tree', + 'triangle', + 'trilinear', + 'triple', + 'vector', + 'vertex', + 'void'), + + 3 => array( + 'AND', + 'Arc', + 'ArcArrow', + 'ArcArrows', + 'Arrow', + 'Arrows', + 'Automatic', + 'AvantGarde', + 'BBox', + 'BWRainbow', + 'BWRainbow2', + 'Bar', + 'Bars', + 'BeginArcArrow', + 'BeginArrow', + 'BeginBar', + 'BeginDotMargin', + 'BeginMargin', + 'BeginPenMargin', + 'Blank', + 'Bookman', + 'Bottom', + 'BottomTop', + 'Bounds', + 'Break', + 'Broken', + 'BrokenLog', + 'CLZ', + 'CTZ', + 'Ceil', + 'Circle', + 'CircleBarIntervalMarker', + 'Cos', + 'Courier', + 'CrossIntervalMarker', + 'DOSendl', + 'DOSnewl', + 'DefaultFormat', + 'DefaultLogFormat', + 'Degrees', + 'Dir', + 'DotMargin', + 'DotMargins', + 'Dotted', + 'Draw', + 'Drawline', + 'Embed', + 'EndArcArrow', + 'EndArrow', + 'EndBar', + 'EndDotMargin', + 'EndMargin', + 'EndPenMargin', + 'Fill', + 'FillDraw', + 'Floor', + 'Format', + 'Full', + 'Gaussian', + 'Gaussrand', + 'Gaussrandpair', + 'Gradient', + 'Grayscale', + 'Helvetica', + 'Hermite', + 'HookHead', + 'InOutTicks', + 'InTicks', + 'Jn', + 'Landscape', + 'Left', + 'LeftRight', + 'LeftTicks', + 'Linear', + 'Link', + 'Log', + 'LogFormat', + 'Margin', + 'Margins', + 'Mark', + 'MidArcArrow', + 'MidArrow', + 'NOT', + 'NewCenturySchoolBook', + 'NoBox', + 'NoMargin', + 'NoModifier', + 'NoTicks', + 'NoTicks3', + 'NoZero', + 'NoZeroFormat', + 'None', + 'OR', + 'OmitFormat', + 'OmitTick', + 'OmitTickInterval', + 'OmitTickIntervals', + 'OutTicks', + 'Ox', + 'Oy', + 'Palatino', + 'PaletteTicks', + 'Pen', + 'PenMargin', + 'PenMargins', + 'Pentype', + 'Portrait', + 'RadialShade', + 'RadialShadeDraw', + 'Rainbow', + 'Range', + 'Relative', + 'Right', + 'RightTicks', + 'Rotate', + 'Round', + 'SQR', + 'Scale', + 'ScaleX', + 'ScaleY', + 'ScaleZ', + 'Seascape', + 'Shift', + 'Sin', + 'Slant', + 'Spline', + 'StickIntervalMarker', + 'Straight', + 'Symbol', + 'Tan', + 'TeXify', + 'Ticks', + 'Ticks3', + 'TildeIntervalMarker', + 'TimesRoman', + 'Top', + 'TrueMargin', + 'UnFill', + 'UpsideDown', + 'Wheel', + 'X', + 'XEquals', + 'XOR', + 'XY', + 'XYEquals', + 'XYZero', + 'XYgrid', + 'XZEquals', + 'XZZero', + 'XZero', + 'XZgrid', + 'Y', + 'YEquals', + 'YXgrid', + 'YZ', + 'YZEquals', + 'YZZero', + 'YZero', + 'YZgrid', + 'Yn', + 'Z', + 'ZX', + 'ZXgrid', + 'ZYgrid', + 'ZapfChancery', + 'ZapfDingbats', + '_begingroup3', + '_cputime', + '_draw', + '_eval', + '_image', + '_labelpath', + '_projection', + '_strokepath', + '_texpath', + 'aCos', + 'aSin', + 'aTan', + 'abort', + 'abs', + 'accel', + 'acos', + 'acosh', + 'acot', + 'acsc', + 'activatequote', + 'add', + 'addArrow', + 'addMargins', + 'addSaveFunction', + 'addpenarc', + 'addpenline', + 'adjust', + 'alias', + 'align', + 'all', + 'altitude', + 'angabscissa', + 'angle', + 'angpoint', + 'animate', + 'annotate', + 'anticomplementary', + 'antipedal', + 'apply', + 'approximate', + 'arc', + 'arcarrowsize', + 'arccircle', + 'arcdir', + 'arcfromcenter', + 'arcfromfocus', + 'arclength', + 'arcnodesnumber', + 'arcpoint', + 'arcsubtended', + 'arcsubtendedcenter', + 'arctime', + 'arctopath', + 'array', + 'arrow', + 'arrow2', + 'arrowbase', + 'arrowbasepoints', + 'arrowsize', + 'asec', + 'asin', + 'asinh', + 'ask', + 'assert', + 'asy', + 'asycode', + 'asydir', + 'asyfigure', + 'asyfilecode', + 'asyinclude', + 'asywrite', + 'atan', + 'atan2', + 'atanh', + 'atbreakpoint', + 'atexit', + 'attach', + 'attract', + 'atupdate', + 'autoformat', + 'autoscale', + 'autoscale3', + 'axes', + 'axes3', + 'axialshade', + 'axis', + 'axiscoverage', + 'azimuth', + 'babel', + 'bangles', + 'bar', + 'barmarksize', + 'barsize', + 'baseline', + 'bbox', + 'beep', + 'begin', + 'beginclip', + 'begingroup', + 'beginpoint', + 'between', + 'bevel', + 'bezier', + 'bezierP', + 'bezierPP', + 'bezierPPP', + 'bezulate', + 'bibliography', + 'bibliographystyle', + 'binomial', + 'binput', + 'bins', + 'bisector', + 'bisectorpoint', + 'bispline', + 'blend', + 'blockconnector', + 'boutput', + 'box', + 'breakpoint', + 'breakpoints', + 'brick', + 'buildRestoreDefaults', + 'buildRestoreThunk', + 'buildcycle', + 'bulletcolor', + 'byte', + 'calculateScaling', + 'canonical', + 'canonicalcartesiansystem', + 'cartesiansystem', + 'case1', + 'case2', + 'case3', + 'case4', + 'cbrt', + 'cd', + 'ceil', + 'center', + 'centerToFocus', + 'centroid', + 'cevian', + 'change2', + 'changecoordsys', + 'checkSegment', + 'checkconditionlength', + 'checker', + 'checkincreasing', + 'checklengths', + 'checkposition', + 'checktriangle', + 'choose', + 'circlebarframe', + 'circlemarkradius', + 'circlenodesnumber', + 'circumcenter', + 'circumcircle', + 'clamped', + 'clear', + 'clip', + 'clipdraw', + 'close', + 'cmyk', + 'code', + 'colatitude', + 'collect', + 'collinear', + 'color', + 'colorless', + 'colors', + 'colorspace', + 'comma', + 'compassmark', + 'complement', + 'complementary', + 'concat', + 'concurrent', + 'cone', + 'conicnodesnumber', + 'conictype', + 'conj', + 'connect', + 'connected', + 'connectedindex', + 'containmentTree', + 'contains', + 'contour', + 'contour3', + 'contouredges', + 'controlSpecifier', + 'convert', + 'coordinates', + 'copy', + 'copyPairOrTriple', + 'cos', + 'cosh', + 'cot', + 'countIntersections', + 'crop', + 'cropcode', + 'cross', + 'crossframe', + 'crosshatch', + 'crossmarksize', + 'csc', + 'cubicroots', + 'curabscissa', + 'curlSpecifier', + 'curpoint', + 'currentarrow', + 'currentexitfunction', + 'currentmomarrow', + 'currentpolarconicroutine', + 'curve', + 'cut', + 'cutafter', + 'cutbefore', + 'cyclic', + 'cylinder', + 'deactivatequote', + 'debugger', + 'deconstruct', + 'defaultdir', + 'defined', + 'degenerate', + 'degrees', + 'delete', + 'deletepreamble', + 'determinant', + 'diagonal', + 'diamond', + 'diffdiv', + 'dir', + 'dirSpecifier', + 'dirtime', + 'display', + 'distance', + 'divisors', + 'do_overpaint', + 'dotsize', + 'downcase', + 'draw', + 'drawAll', + 'drawDoubleLine', + 'drawFermion', + 'drawGhost', + 'drawGluon', + 'drawMomArrow', + 'drawPRCcylinder', + 'drawPRCdisk', + 'drawPRCsphere', + 'drawPRCtube', + 'drawPhoton', + 'drawScalar', + 'drawVertex', + 'drawVertexBox', + 'drawVertexBoxO', + 'drawVertexBoxX', + 'drawVertexO', + 'drawVertexOX', + 'drawVertexTriangle', + 'drawVertexTriangleO', + 'drawVertexX', + 'drawarrow', + 'drawarrow2', + 'drawline', + 'drawpixel', + 'drawtick', + 'duplicate', + 'elle', + 'ellipsenodesnumber', + 'embed', + 'embed3', + 'empty', + 'enclose', + 'end', + 'endScript', + 'endclip', + 'endgroup', + 'endgroup3', + 'endl', + 'endpoint', + 'endpoints', + 'eof', + 'eol', + 'equation', + 'equations', + 'erase', + 'erasestep', + 'erf', + 'erfc', + 'error', + 'errorbar', + 'errorbars', + 'eval', + 'excenter', + 'excircle', + 'exit', + 'exitXasyMode', + 'exitfunction', + 'exp', + 'expfactors', + 'expi', + 'expm1', + 'exradius', + 'extend', + 'extension', + 'extouch', + 'fabs', + 'factorial', + 'fermat', + 'fft', + 'fhorner', + 'figure', + 'filecode', + 'fill', + 'filldraw', + 'filloutside', + 'fillrule', + 'find', + 'finite', + 'finiteDifferenceJacobian', + 'firstcut', + 'firstframe', + 'fit', + 'fit2', + 'fixedscaling', + 'floor', + 'flush', + 'fmdefaults', + 'fmod', + 'focusToCenter', + 'font', + 'fontcommand', + 'fontsize', + 'foot', + 'format', + 'frac', + 'frequency', + 'fromCenter', + 'fromFocus', + 'fspline', + 'functionshade', + 'gamma', + 'generate_random_backtrace', + 'generateticks', + 'gergonne', + 'getc', + 'getint', + 'getpair', + 'getreal', + 'getstring', + 'gettriple', + 'gluon', + 'gouraudshade', + 'graph', + 'graphic', + 'gray', + 'grestore', + 'grid', + 'gsave', + 'halfbox', + 'hatch', + 'hdiffdiv', + 'hermite', + 'hex', + 'histogram', + 'history', + 'hline', + 'hprojection', + 'hyperbolanodesnumber', + 'hyperlink', + 'hypot', + 'identity', + 'image', + 'incenter', + 'incentral', + 'incircle', + 'increasing', + 'incrementposition', + 'indexedfigure', + 'initXasyMode', + 'initdefaults', + 'input', + 'inradius', + 'insert', + 'inside', + 'integrate', + 'interactive', + 'interior', + 'interp', + 'interpolate', + 'intersect', + 'intersection', + 'intersectionpoint', + 'intersectionpoints', + 'intersections', + 'intouch', + 'inverse', + 'invisible', + 'is3D', + 'isCCW', + 'isDuplicate', + 'isogonal', + 'isogonalconjugate', + 'isotomic', + 'isotomicconjugate', + 'isparabola', + 'italic', + 'item', + 'jobname', + 'kurtosis', + 'kurtosisexcess', + 'label', + 'labelaxis', + 'labelmargin', + 'labelpath', + 'labels', + 'labeltick', + 'labelx', + 'labelx3', + 'labely', + 'labely3', + 'labelz', + 'labelz3', + 'lastcut', + 'latex', + 'latitude', + 'latticeshade', + 'layer', + 'layout', + 'ldexp', + 'leastsquares', + 'legend', + 'legenditem', + 'length', + 'lexorder', + 'lift', + 'limits', + 'linear', + 'linecap', + 'lineinversion', + 'linejoin', + 'linemargin', + 'lineskip', + 'linetype', + 'linewidth', + 'link', + 'list', + 'lm_enorm', + 'lm_evaluate_default', + 'lm_lmdif', + 'lm_lmpar', + 'lm_minimize', + 'lm_print_default', + 'lm_print_quiet', + 'lm_qrfac', + 'lm_qrsolv', + 'locale', + 'locate', + 'locatefile', + 'location', + 'log', + 'log10', + 'log1p', + 'logaxiscoverage', + 'longitude', + 'lookup', + 'makeNode', + 'makedraw', + 'makepen', + 'map', + 'margin', + 'markangle', + 'markarc', + 'markinterval', + 'marknodes', + 'markrightangle', + 'markuniform', + 'masscenter', + 'massformat', + 'math', + 'max', + 'max3', + 'maxAfterTransform', + 'maxbezier', + 'maxbound', + 'maxcoords', + 'maxlength', + 'maxratio', + 'maxtimes', + 'mean', + 'medial', + 'median', + 'midpoint', + 'min', + 'min3', + 'minAfterTransform', + 'minbezier', + 'minbound', + 'minipage', + 'minratio', + 'mintimes', + 'miterlimit', + 'mktemp', + 'momArrowPath', + 'momarrowsize', + 'monotonic', + 'multifigure', + 'nativeformat', + 'natural', + 'needshipout', + 'newl', + 'newpage', + 'newslide', + 'newton', + 'newtree', + 'nextframe', + 'nextnormal', + 'nextpage', + 'nib', + 'nodabscissa', + 'none', + 'norm', + 'normalvideo', + 'notaknot', + 'nowarn', + 'numberpage', + 'nurb', + 'offset', + 'onpath', + 'opacity', + 'opposite', + 'orientation', + 'origin', + 'orthic', + 'orthocentercenter', + 'outformat', + 'outline', + 'outname', + 'outprefix', + 'output', + 'overloadedMessage', + 'overwrite', + 'pack', + 'pad', + 'pairs', + 'palette', + 'parabolanodesnumber', + 'parallel', + 'parallelogram', + 'partialsum', + 'pattern', + 'pause', + 'pdf', + 'pedal', + 'periodic', + 'perp', + 'perpendicular', + 'perpendicularmark', + 'phantom', + 'phi1', + 'phi2', + 'phi3', + 'photon', + 'piecewisestraight', + 'polar', + 'polarconicroutine', + 'polargraph', + 'polygon', + 'postcontrol', + 'postscript', + 'pow10', + 'ppoint', + 'prc', + 'prc0', + 'precision', + 'precontrol', + 'prepend', + 'printBytecode', + 'print_random_addresses', + 'project', + 'purge', + 'pwhermite', + 'quadrant', + 'quadraticroots', + 'quantize', + 'quarticroots', + 'quotient', + 'radialshade', + 'radians', + 'radicalcenter', + 'radicalline', + 'radius', + 'rand', + 'randompath', + 'rd', + 'readline', + 'realmult', + 'realquarticroots', + 'rectangle', + 'rectangular', + 'rectify', + 'reflect', + 'relabscissa', + 'relative', + 'relativedistance', + 'reldir', + 'relpoint', + 'reltime', + 'remainder', + 'remark', + 'removeDuplicates', + 'rename', + 'replace', + 'report', + 'resetdefaultpen', + 'restore', + 'restoredefaults', + 'reverse', + 'reversevideo', + 'rf', + 'rfind', + 'rgb', + 'rgba', + 'rgbint', + 'rms', + 'rotate', + 'rotateO', + 'rotation', + 'round', + 'roundbox', + 'roundedpath', + 'roundrectangle', + 'same', + 'samecoordsys', + 'sameside', + 'sample', + 'save', + 'savedefaults', + 'saveline', + 'scale', + 'scale3', + 'scaleO', + 'scaleless', + 'search', + 'searchindex', + 'searchtree', + 'sec', + 'secondaryX', + 'secondaryY', + 'seconds', + 'section', + 'sector', + 'seek', + 'seekeof', + 'sequence', + 'setcontour', + 'setpens', + 'sgn', + 'sgnd', + 'sharpangle', + 'sharpdegrees', + 'shift', + 'shiftless', + 'shipout', + 'shipout3', + 'show', + 'simeq', + 'simpson', + 'sin', + 'sinh', + 'size', + 'size3', + 'skewness', + 'skip', + 'slant', + 'sleep', + 'slope', + 'slopefield', + 'solve', + 'solveBVP', + 'sort', + 'sourceline', + 'sphere', + 'split', + 'sqrt', + 'square', + 'srand', + 'standardizecoordsys', + 'startScript', + 'stdev', + 'step', + 'stickframe', + 'stickmarksize', + 'stickmarkspace', + 'stop', + 'straight', + 'straightness', + 'stripdirectory', + 'stripextension', + 'stripfile', + 'stripsuffix', + 'strokepath', + 'subdivide', + 'subitem', + 'subpath', + 'substr', + 'sum', + 'symmedial', + 'symmedian', + 'system', + 'tab', + 'tableau', + 'tan', + 'tangent', + 'tangential', + 'tangents', + 'tanh', + 'tell', + 'tensorshade', + 'tex', + 'texcolor', + 'texify', + 'texpath', + 'texpreamble', + 'texreset', + 'texshipout', + 'texsize', + 'textpath', + 'thick', + 'thin', + 'tick', + 'tickMax', + 'tickMax3', + 'tickMin', + 'tickMin3', + 'ticklabelshift', + 'tildeframe', + 'tildemarksize', + 'tile', + 'tiling', + 'time', + 'times', + 'title', + 'titlepage', + 'topbox', + 'transpose', + 'trembleFuzz', + 'triangleAbc', + 'triangleabc', + 'triangulate', + 'tricoef', + 'tridiagonal', + 'trim', + 'truepoint', + 'tube', + 'uncycle', + 'unfill', + 'uniform', + 'unique', + 'unit', + 'unitrand', + 'unitsize', + 'unityroot', + 'unstraighten', + 'upcase', + 'updatefunction', + 'uperiodic', + 'upscale', + 'uptodate', + 'usepackage', + 'usersetting', + 'usetypescript', + 'usleep', + 'value', + 'variance', + 'variancebiased', + 'vbox', + 'vectorfield', + 'verbatim', + 'view', + 'vperiodic', + 'vprojection', + 'warn', + 'warning', + 'windingnumber', + 'write', + 'xaxis', + 'xaxis3', + 'xaxis3At', + 'xaxisAt', + 'xequals', + 'xinput', + 'xlimits', + 'xoutput', + 'xpart', + 'xscale', + 'xscaleO', + 'xtick', + 'xtick3', + 'xtrans', + 'yaxis', + 'yaxis3', + 'yaxis3At', + 'yaxisAt', + 'yequals', + 'ylimits', + 'ypart', + 'yscale', + 'yscaleO', + 'ytick', + 'ytick3', + 'ytrans', + 'zaxis3', + 'zaxis3At', + 'zero', + 'zero3', + 'zlimits', + 'zpart', + 'ztick', + 'ztick3', + 'ztrans' + ), + + 4 => array( + 'AliceBlue', + 'Align', + 'Allow', + 'AntiqueWhite', + 'Apricot', + 'Aqua', + 'Aquamarine', + 'Aspect', + 'Azure', + 'BeginPoint', + 'Beige', + 'Bisque', + 'Bittersweet', + 'Black', + 'BlanchedAlmond', + 'Blue', + 'BlueGreen', + 'BlueViolet', + 'Both', + 'BrickRed', + 'Brown', + 'BurlyWood', + 'BurntOrange', + 'CCW', + 'CW', + 'CadetBlue', + 'CarnationPink', + 'Center', + 'Centered', + 'Cerulean', + 'Chartreuse', + 'Chocolate', + 'Coeff', + 'Coral', + 'CornflowerBlue', + 'Cornsilk', + 'Crimson', + 'Crop', + 'Cyan', + 'Dandelion', + 'DarkBlue', + 'DarkCyan', + 'DarkGoldenrod', + 'DarkGray', + 'DarkGreen', + 'DarkKhaki', + 'DarkMagenta', + 'DarkOliveGreen', + 'DarkOrange', + 'DarkOrchid', + 'DarkRed', + 'DarkSalmon', + 'DarkSeaGreen', + 'DarkSlateBlue', + 'DarkSlateGray', + 'DarkTurquoise', + 'DarkViolet', + 'DeepPink', + 'DeepSkyBlue', + 'DefaultHead', + 'DimGray', + 'DodgerBlue', + 'Down', + 'E', + 'ENE', + 'EPS', + 'ESE', + 'E_Euler', + 'E_PC', + 'E_RK2', + 'E_RK3BS', + 'Emerald', + 'EndPoint', + 'Euler', + 'FireBrick', + 'FloralWhite', + 'ForestGreen', + 'Fuchsia', + 'Gainsboro', + 'GhostWhite', + 'Gold', + 'Goldenrod', + 'Gray', + 'Green', + 'GreenYellow', + 'Honeydew', + 'Horizontal', + 'HotPink', + 'I', + 'IgnoreAspect', + 'IndianRed', + 'Indigo', + 'Ivory', + 'JOIN_IN', + 'JOIN_OUT', + 'JungleGreen', + 'Khaki', + 'LM_DWARF', + 'LM_MACHEP', + 'LM_SQRT_DWARF', + 'LM_SQRT_GIANT', + 'LM_USERTOL', + 'Lavender', + 'LavenderBlush', + 'LawnGreen', + 'LeftJustified', + 'LeftSide', + 'LemonChiffon', + 'LightBlue', + 'LightCoral', + 'LightCyan', + 'LightGoldenrodYellow', + 'LightGreen', + 'LightGrey', + 'LightPink', + 'LightSalmon', + 'LightSeaGreen', + 'LightSkyBlue', + 'LightSlateGray', + 'LightSteelBlue', + 'LightYellow', + 'Lime', + 'LimeGreen', + 'Linen', + 'Logarithmic', + 'Magenta', + 'Mahogany', + 'MarkFill', + 'Maroon', + 'Max', + 'MediumAquamarine', + 'MediumBlue', + 'MediumOrchid', + 'MediumPurple', + 'MediumSeaGreen', + 'MediumSlateBlue', + 'MediumSpringGreen', + 'MediumTurquoise', + 'MediumVioletRed', + 'Melon', + 'MidPoint', + 'MidnightBlue', + 'Min', + 'MintCream', + 'MistyRose', + 'Moccasin', + 'Move', + 'MoveQuiet', + 'Mulberry', + 'N', + 'NE', + 'NNE', + 'NNW', + 'NW', + 'NavajoWhite', + 'Navy', + 'NavyBlue', + 'NoAlign', + 'NoCrop', + 'NoFill', + 'NoSide', + 'OldLace', + 'Olive', + 'OliveDrab', + 'OliveGreen', + 'Orange', + 'OrangeRed', + 'Orchid', + 'PC', + 'PaleGoldenrod', + 'PaleGreen', + 'PaleTurquoise', + 'PaleVioletRed', + 'PapayaWhip', + 'Peach', + 'PeachPuff', + 'Periwinkle', + 'Peru', + 'PineGreen', + 'Pink', + 'Plum', + 'PowderBlue', + 'ProcessBlue', + 'Purple', + 'RK2', + 'RK3', + 'RK3BS', + 'RK4', + 'RK5', + 'RK5DP', + 'RK5F', + 'RawSienna', + 'Red', + 'RedOrange', + 'RedViolet', + 'Rhodamine', + 'RightJustified', + 'RightSide', + 'RosyBrown', + 'RoyalBlue', + 'RoyalPurple', + 'RubineRed', + 'S', + 'SE', + 'SSE', + 'SSW', + 'SW', + 'SaddleBrown', + 'Salmon', + 'SandyBrown', + 'SeaGreen', + 'Seashell', + 'Sepia', + 'Sienna', + 'Silver', + 'SimpleHead', + 'SkyBlue', + 'SlateBlue', + 'SlateGray', + 'Snow', + 'SpringGreen', + 'SteelBlue', + 'Suppress', + 'SuppressQuiet', + 'TeXHead', + 'Teal', + 'TealBlue', + 'Thistle', + 'Ticksize', + 'Tomato', + 'Turquoise', + 'Up', + 'VERSION', + 'Value', + 'Vertical', + 'Violet', + 'VioletRed', + 'W', + 'WNW', + 'WSW', + 'Wheat', + 'White', + 'WhiteSmoke', + 'WildStrawberry', + 'XYAlign', + 'YAlign', + 'Yellow', + 'YellowGreen', + 'YellowOrange', + 'allowstepping', + 'angularsystem', + 'animationdelay', + 'appendsuffix', + 'arcarrowangle', + 'arcarrowfactor', + 'arrow2sizelimit', + 'arrowangle', + 'arrowbarb', + 'arrowdir', + 'arrowfactor', + 'arrowhookfactor', + 'arrowlength', + 'arrowsizelimit', + 'arrowtexfactor', + 'authorpen', + 'axislabelfactor', + 'background', + 'backgroundcolor', + 'backgroundpen', + 'barfactor', + 'barmarksizefactor', + 'basealign', + 'baselinetemplate', + 'beveljoin', + 'bigvertexpen', + 'bigvertexsize', + 'black', + 'blue', + 'bm', + 'bottom', + 'bp', + 'brown', + 'bullet', + 'byfoci', + 'byvertices', + 'camerafactor', + 'chartreuse', + 'circlemarkradiusfactor', + 'circlenodesnumberfactor', + 'circleprecision', + 'circlescale', + 'cm', + 'codefile', + 'codepen', + 'codeskip', + 'colorPen', + 'coloredNodes', + 'coloredSegments', + 'conditionlength', + 'conicnodesfactor', + 'count', + 'cputimeformat', + 'crossmarksizefactor', + 'currentcoordsys', + 'currentlight', + 'currentpatterns', + 'currentpen', + 'currentpicture', + 'currentposition', + 'currentprojection', + 'curvilinearsystem', + 'cuttings', + 'cyan', + 'darkblue', + 'darkbrown', + 'darkcyan', + 'darkgray', + 'darkgreen', + 'darkgrey', + 'darkmagenta', + 'darkolive', + 'darkred', + 'dashdotted', + 'dashed', + 'datepen', + 'dateskip', + 'debuggerlines', + 'debugging', + 'deepblue', + 'deepcyan', + 'deepgray', + 'deepgreen', + 'deepgrey', + 'deepmagenta', + 'deepred', + 'default', + 'defaultControl', + 'defaultS', + 'defaultbackpen', + 'defaultcoordsys', + 'defaultexcursion', + 'defaultfilename', + 'defaultformat', + 'defaultmassformat', + 'defaultpen', + 'diagnostics', + 'differentlengths', + 'dot', + 'dotfactor', + 'dotframe', + 'dotted', + 'doublelinepen', + 'doublelinespacing', + 'down', + 'duplicateFuzz', + 'edge', + 'ellipsenodesnumberfactor', + 'eps', + 'epsgeo', + 'epsilon', + 'evenodd', + 'expansionfactor', + 'extendcap', + 'exterior', + 'fermionpen', + 'figureborder', + 'figuremattpen', + 'file3', + 'firstnode', + 'firststep', + 'foregroundcolor', + 'fuchsia', + 'fuzz', + 'gapfactor', + 'ghostpen', + 'gluonamplitude', + 'gluonpen', + 'gluonratio', + 'green', + 'grey', + 'hatchepsilon', + 'havepagenumber', + 'heavyblue', + 'heavycyan', + 'heavygray', + 'heavygreen', + 'heavygrey', + 'heavymagenta', + 'heavyred', + 'hwratio', + 'hyperbolanodesnumberfactor', + 'identity4', + 'ignore', + 'inXasyMode', + 'inch', + 'inches', + 'includegraphicscommand', + 'inf', + 'infinity', + 'institutionpen', + 'intMax', + 'intMin', + 'invert', + 'itempen', + 'itemskip', + 'itemstep', + 'landscape', + 'lastnode', + 'left', + 'legendhskip', + 'legendlinelength', + 'legendmargin', + 'legendmarkersize', + 'legendmaxrelativewidth', + 'legendvskip', + 'lightblue', + 'lightcyan', + 'lightgray', + 'lightgreen', + 'lightgrey', + 'lightmagenta', + 'lightolive', + 'lightred', + 'lightyellow', + 'lm_infmsg', + 'lm_shortmsg', + 'longdashdotted', + 'longdashed', + 'magenta', + 'magneticRadius', + 'mantissaBits', + 'markangleradius', + 'markangleradiusfactor', + 'markanglespace', + 'markanglespacefactor', + 'mediumblue', + 'mediumcyan', + 'mediumgray', + 'mediumgreen', + 'mediumgrey', + 'mediummagenta', + 'mediumred', + 'mediumyellow', + 'middle', + 'minDistDefault', + 'minblockheight', + 'minblockwidth', + 'mincirclediameter', + 'minipagemargin', + 'minipagewidth', + 'minvertexangle', + 'miterjoin', + 'mm', + 'momarrowfactor', + 'momarrowlength', + 'momarrowmargin', + 'momarrowoffset', + 'momarrowpen', + 'monoPen', + 'morepoints', + 'nCircle', + 'newbulletcolor', + 'ngraph', + 'nil', + 'nmesh', + 'nobasealign', + 'nodeMarginDefault', + 'nodesystem', + 'nomarker', + 'nopoint', + 'noprimary', + 'nullpath', + 'nullpen', + 'numarray', + 'ocgindex', + 'oldbulletcolor', + 'olive', + 'orange', + 'overpaint', + 'page', + 'pageheight', + 'pagemargin', + 'pagenumberalign', + 'pagenumberpen', + 'pagenumberposition', + 'pagewidth', + 'paleblue', + 'palecyan', + 'palegray', + 'palegreen', + 'palegrey', + + 'palemagenta', + 'palered', + 'paleyellow', + 'parabolanodesnumberfactor', + 'perpfactor', + 'phi', + 'photonamplitude', + 'photonpen', + 'photonratio', + 'pi', + 'pink', + 'plain', + 'plain_bounds', + 'plain_scaling', + 'plus', + 'preamblenodes', + 'pt', + 'purple', + 'r3', + 'r4a', + 'r4b', + 'randMax', + 'realDigits', + 'realEpsilon', + 'realMax', + 'realMin', + 'red', + 'relativesystem', + 'right', + 'roundcap', + 'roundjoin', + 'royalblue', + 'salmon', + 'saveFunctions', + 'scalarpen', + 'sequencereal', + 'settings', + 'shipped', + 'signedtrailingzero', + 'solid', + 'springgreen', + 'sqrtEpsilon', + 'squarecap', + 'squarepen', + 'startposition', + 'stdin', + 'stdout', + 'stepfactor', + 'stepfraction', + 'steppagenumberpen', + 'stepping', + 'stickmarksizefactor', + 'stickmarkspacefactor', + 'swap', + 'textpen', + 'ticksize', + 'tildemarksizefactor', + 'tinv', + 'titlealign', + 'titlepagepen', + 'titlepageposition', + 'titlepen', + 'titleskip', + 'top', + 'trailingzero', + 'treeLevelStep', + 'treeMinNodeWidth', + 'treeNodeStep', + 'trembleAngle', + 'trembleFrequency', + 'trembleRandom', + 'undefined', + 'unitcircle', + 'unitsquare', + 'up', + 'urlpen', + 'urlskip', + 'version', + 'vertexpen', + 'vertexsize', + 'viewportmargin', + 'viewportsize', + 'vline', + 'white', + 'wye', + 'xformStack', + 'yellow', + 'ylabelwidth', + 'zerotickfuzz', + 'zerowinding' + ) + ), + 'SYMBOLS' => array( + 0 => array( + '(', ')', '{', '}', '[', ']' + ), + 1 => array('<', '>', '='), + 2 => array('+', '-', '*', '/', '%'), + 3 => array('!', '^', '&', '|'), + 4 => array('?', ':', ';'), + 5 => array('..') + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #b1b100;', + 2 => 'color: #000000; font-weight: bold;', + 3 => 'color: #990000;', + 4 => 'color: #009900; font-weight: bold;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666;', + 2 => 'color: #339900;', + 'MULTI' => 'color: #ff0000; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;', + 1 => 'color: #000099; font-weight: bold;', + 2 => 'color: #660099; font-weight: bold;', + 3 => 'color: #660099; font-weight: bold;', + 4 => 'color: #660099; font-weight: bold;', + 5 => 'color: #006699; font-weight: bold;', + 'HARD' => '', + ), + 'BRACKETS' => array( + 0 => 'color: #008000;' + ), + 'STRINGS' => array( + 0 => 'color: #FF0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #0000dd;', + GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;', + GESHI_NUMBER_OCT_PREFIX => 'color: #208080;', + GESHI_NUMBER_HEX_PREFIX => 'color: #208080;', + GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;', + GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;', + GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;', + GESHI_NUMBER_FLT_NONSCI => 'color:#800080;' + ), + 'METHODS' => array( + 1 => 'color: #007788;', + 2 => 'color: #007788;' + ), + 'SYMBOLS' => array( + 0 => 'color: #008000;', + 1 => 'color: #000080;', + 2 => 'color: #000040;', + 3 => 'color: #000040;', + 4 => 'color: #008080;', + 5 => 'color: #009080;' + ), + 'REGEXPS' => array(), + 'SCRIPT' => array() + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.', + 2 => '::' + ), + 'REGEXPS' => array(), + 'STRICT_MODE_APPLIES' => GESHI_MAYBE, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array(), + 'TAB_WIDTH' => 4, + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 'DISALLOWED_BEFORE' => "(? "(?![a-zA-Z0-9_\|%\\-])" + ) + ) +); diff --git a/includes/geshi/autoconf.php b/includes/geshi/autoconf.php new file mode 100644 index 0000000..ec1cd0a --- /dev/null +++ b/includes/geshi/autoconf.php @@ -0,0 +1,510 @@ + 'Autoconf', + 'COMMENT_SINGLE' => array(2 => '#'), + 'COMMENT_MULTI' => array(), + 'COMMENT_REGEXP' => array( + //Multiline-continued single-line comments + 1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m', + //Multiline-continued preprocessor define + 2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m', + //Single Line comment started by dnl + 3 => '/(? GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'ESCAPE_REGEXP' => array(), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B | + GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI | + GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO, + 'KEYWORDS' => array( + 1 => array( + 'AC_ACT_IFELSE', + 'AC_AIX', + 'AC_ALLOCA', + 'AC_ARG_ARRAY', + 'AC_ARG_ENABLE', + 'AC_ARG_PROGRAM', + 'AC_ARG_VAR', + 'AC_ARG_WITH', + 'AC_AUTOCONF_VERSION', + 'AC_BEFORE', + 'AC_C_BACKSLASH_A', + 'AC_C_BIGENDIAN', + 'AC_C_CHAR_UNSIGNED', + 'AC_C_CONST', + 'AC_C_CROSS', + 'AC_C_FLEXIBLE_ARRAY_MEMBER', + 'AC_C_INLINE', + 'AC_C_LONG_DOUBLE', + 'AC_C_PROTOTYPES', + 'AC_C_RESTRICT', + 'AC_C_STRINGIZE', + 'AC_C_TYPEOF', + 'AC_C_VARARRAYS', + 'AC_C_VOLATILE', + 'AC_CACHE_CHECK', + 'AC_CACHE_LOAD', + 'AC_CACHE_SAVE', + 'AC_CACHE_VAL', + 'AC_CANONICAL_BUILD', + 'AC_CANONICAL_HOST', + 'AC_CANONICAL_SYSTEM', + 'AC_CANONICAL_TARGET', + 'AC_CHAR_UNSIGNED', + 'AC_CHECK_ALIGNOF', + 'AC_CHECK_DECL', + 'AC_CHECK_DECLS', + 'AC_CHECK_DECLS_ONCE', + 'AC_CHECK_FILE', + 'AC_CHECK_FILES', + 'AC_CHECK_FUNC', + 'AC_CHECK_FUNCS', + 'AC_CHECK_FUNCS_ONCE', + 'AC_CHECK_HEADER', + 'AC_CHECK_HEADERS', + 'AC_CHECK_HEADERS_ONCE', + 'AC_CHECK_LIB', + 'AC_CHECK_MEMBER', + 'AC_CHECK_MEMBERS', + 'AC_CHECK_PROG', + 'AC_CHECK_PROGS', + 'AC_CHECK_SIZEOF', + 'AC_CHECK_TARGET_TOOL', + 'AC_CHECK_TARGET_TOOLS', + 'AC_CHECK_TOOL', + 'AC_CHECK_TOOLS', + 'AC_CHECK_TYPE', + 'AC_CHECK_TYPES', + 'AC_CHECKING', + 'AC_COMPILE_CHECK', + 'AC_COMPILE_IFELSE', + 'AC_COMPUTE_INT', + 'AC_CONFIG_AUX_DIR', + 'AC_CONFIG_COMMANDS', + 'AC_CONFIG_COMMANDS_POST', + 'AC_CONFIG_COMMANDS_PRE', + 'AC_CONFIG_FILES', + 'AC_CONFIG_HEADERS', + 'AC_CONFIG_ITEMS', + 'AC_CONFIG_LIBOBJ_DIR', + 'AC_CONFIG_LINKS', + 'AC_CONFIG_MACRO_DIR', + 'AC_CONFIG_SRCDIR', + 'AC_CONFIG_SUBDIRS', + 'AC_CONFIG_TESTDIR', + 'AC_CONST', + 'AC_COPYRIGHT', + 'AC_CROSS_CHECK', + 'AC_CYGWIN', + 'AC_DATAROOTDIR_CHECKED', + 'AC_DECL_SYS_SIGLIST', + 'AC_DECL_YYTEXT', + 'AC_DEFINE', + 'AC_DEFINE_UNQUOTED', + 'AC_DEFUN', + 'AC_DEFUN_ONCE', + 'AC_DIAGNOSE', + 'AC_DIR_HEADER', + 'AC_DISABLE_OPTION_CHECKING', + 'AC_DYNIX_SEQ', + 'AC_EGREP_CPP', + 'AC_EGREP_HEADER', + 'AC_EMXOS2', + 'AC_ENABLE', + 'AC_ERLANG_CHECK_LIB', + 'AC_ERLANG_NEED_ERL', + 'AC_ERLANG_NEED_ERLC', + 'AC_ERLANG_PATH_ERL', + 'AC_ERLANG_PATH_ERLC', + 'AC_ERLANG_SUBST_ERTS_VER', + 'AC_ERLANG_SUBST_INSTALL_LIB_DIR', + 'AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR', + 'AC_ERLANG_SUBST_LIB_DIR', + 'AC_ERLANG_SUBST_ROOT_DIR', + 'AC_ERROR', + 'AC_EXEEXT', + 'AC_F77_DUMMY_MAIN', + 'AC_F77_FUNC', + 'AC_F77_LIBRARY_LDFLAGS', + 'AC_F77_MAIN', + 'AC_F77_WRAPPERS', + 'AC_FATAL', + 'AC_FC_FREEFORM', + 'AC_FC_FUNC', + 'AC_FC_LIBRARY_LDFLAGS', + 'AC_FC_MAIN', + 'AC_FC_SRCEXT', + 'AC_FC_WRAPPERS', + 'AC_FIND_X', + 'AC_FIND_XTRA', + 'AC_FOREACH', + 'AC_FUNC_ALLOCA', + 'AC_FUNC_CHECK', + 'AC_FUNC_CHOWN', + 'AC_FUNC_CLOSEDIR_VOID', + 'AC_FUNC_ERROR_AT_LINE', + 'AC_FUNC_FNMATCH', + 'AC_FUNC_FNMATCH_GNU', + 'AC_FUNC_FORK', + 'AC_FUNC_FSEEKO', + 'AC_FUNC_GETGROUPS', + 'AC_FUNC_GETLOADAVG', + 'AC_FUNC_GETMNTENT', + 'AC_FUNC_GETPGRP', + 'AC_FUNC_LSTAT', + 'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK', + 'AC_FUNC_MALLOC', + 'AC_FUNC_MBRTOWC', + 'AC_FUNC_MEMCMP', + 'AC_FUNC_MKTIME', + 'AC_FUNC_MMAP', + 'AC_FUNC_OBSTACK', + 'AC_FUNC_REALLOC', + 'AC_FUNC_SELECT_ARGTYPES', + 'AC_FUNC_SETPGRP', + 'AC_FUNC_SETVBUF_REVERSED', + 'AC_FUNC_STAT', + 'AC_FUNC_STRCOLL', + 'AC_FUNC_STRERROR_R', + 'AC_FUNC_STRFTIME', + 'AC_FUNC_STRNLEN', + 'AC_FUNC_STRTOD', + 'AC_FUNC_STRTOLD', + 'AC_FUNC_UTIME_NULL', + 'AC_FUNC_VPRINTF', + 'AC_FUNC_WAIT3', + 'AC_GCC_TRADITIONAL', + 'AC_GETGROUPS_T', + 'AC_GETLOADAVG', + 'AC_GNU_SOURCE', + 'AC_HAVE_FUNCS', + 'AC_HAVE_HEADERS', + 'AC_HAVE_LIBRARY', + 'AC_HAVE_POUNDBANG', + 'AC_HEADER_ASSERT', + 'AC_HEADER_CHECK', + 'AC_HEADER_DIRENT', + 'AC_HEADER_EGREP', + 'AC_HEADER_MAJOR', + 'AC_HEADER_RESOLV', + 'AC_HEADER_STAT', + 'AC_HEADER_STDBOOL', + 'AC_HEADER_STDC', + 'AC_HEADER_SYS_WAIT', + 'AC_HEADER_TIME', + 'AC_HEADER_TIOCGWINSZ', + 'AC_HELP_STRING', + 'AC_INCLUDES_DEFAULT', + 'AC_INIT', + 'AC_INLINE', + 'AC_INT_16_BITS', + 'AC_IRIX_SUN', + 'AC_ISC_POSIX', + 'AC_LANG_ASSERT', + 'AC_LANG_C', + 'AC_LANG_CALL', + 'AC_LANG_CONFTEST', + 'AC_LANG_CPLUSPLUS', + 'AC_LANG_FORTRAN77', + 'AC_LANG_FUNC_LINK_TRY', + 'AC_LANG_POP', + 'AC_LANG_PROGRAM', + 'AC_LANG_PUSH', + 'AC_LANG_RESTORE', + 'AC_LANG_SAVE', + 'AC_LANG_SOURCE', + 'AC_LANG_WERROR', + 'AC_LIBOBJ', + 'AC_LIBSOURCE', + 'AC_LIBSOURCES', + 'AC_LINK_FILES', + 'AC_LINK_IFELSE', + 'AC_LN_S', + 'AC_LONG_64_BITS', + 'AC_LONG_DOUBLE', + 'AC_LONG_FILE_NAMES', + 'AC_MAJOR_HEADER', + 'AC_MEMORY_H', + 'AC_MINGW32', + 'AC_MINIX', + 'AC_MINUS_C_MINUS_O', + 'AC_MMAP', + 'AC_MODE_T', + 'AC_MSG_CHECKING', + 'AC_MSG_ERROR', + 'AC_MSG_FAILURE', + 'AC_MSG_NOTICE', + 'AC_MSG_RESULT', + 'AC_MSG_WARN', + 'AC_OBJEXT', + 'AC_OBSOLETE', + 'AC_OFF_T', + 'AC_OPENMP', + 'AC_OUTPUT', + 'AC_OUTPUT_COMMANDS', + 'AC_PACKAGE_BUGREPORT', + 'AC_PACKAGE_NAME', + 'AC_PACKAGE_STRING', + 'AC_PACKAGE_TARNAME', + 'AC_PACKAGE_URL', + 'AC_PACKAGE_VERSION', + 'AC_PATH_PROG', + 'AC_PATH_PROGS', + 'AC_PATH_PROGS_FEATURE_CHECK', + 'AC_PATH_TARGET_TOOL', + 'AC_PATH_TOOL', + 'AC_PATH_X', + 'AC_PATH_XTRA', + 'AC_PID_T', + 'AC_PREFIX', + 'AC_PREFIX_DEFAULT', + 'AC_PREFIX_PROGRAM', + 'AC_PREPROC_IFELSE', + 'AC_PREREQ', + 'AC_PRESERVE_HELP_ORDER', + 'AC_PROG_AWK', + 'AC_PROG_CC', + 'AC_PROG_CC_C89', + 'AC_PROG_CC_C99', + 'AC_PROG_CC_C_O', + 'AC_PROG_CC_STDC', + 'AC_PROG_CPP', + 'AC_PROG_CPP_WERROR', + 'AC_PROG_CXX', + 'AC_PROG_CXX_C_O', + 'AC_PROG_CXXCPP', + 'AC_PROG_EGREP', + 'AC_PROG_F77', + 'AC_PROG_F77_C_O', + 'AC_PROG_FC', + 'AC_PROG_FC_C_O', + 'AC_PROG_FGREP', + 'AC_PROG_GCC_TRADITIONAL', + 'AC_PROG_GREP', + 'AC_PROG_INSTALL', + 'AC_PROG_LEX', + 'AC_PROG_LN_S', + 'AC_PROG_MAKE_SET', + 'AC_PROG_MKDIR_P', + 'AC_PROG_OBJC', + 'AC_PROG_OBJCPP', + 'AC_PROG_OBJCXX', + 'AC_PROG_OBJCXXCPP', + 'AC_PROG_RANLIB', + 'AC_PROG_SED', + 'AC_PROG_YACC', + 'AC_PROGRAM_CHECK', + 'AC_PROGRAM_EGREP', + 'AC_PROGRAM_PATH', + 'AC_PROGRAMS_CHECK', + 'AC_PROGRAMS_PATH', + 'AC_REMOTE_TAPE', + 'AC_REPLACE_FNMATCH', + 'AC_REPLACE_FUNCS', + 'AC_REQUIRE', + 'AC_REQUIRE_AUX_FILE', + 'AC_REQUIRE_CPP', + 'AC_RESTARTABLE_SYSCALLS', + 'AC_RETSIGTYPE', + 'AC_REVISION', + 'AC_RSH', + 'AC_RUN_IFELSE', + 'AC_SCO_INTL', + 'AC_SEARCH_LIBS', + 'AC_SET_MAKE', + 'AC_SETVBUF_REVERSED', + 'AC_SIZE_T', + 'AC_SIZEOF_TYPE', + 'AC_ST_BLKSIZE', + 'AC_ST_BLOCKS', + 'AC_ST_RDEV', + 'AC_STAT_MACROS_BROKEN', + 'AC_STDC_HEADERS', + 'AC_STRCOLL', + 'AC_STRUCT_DIRENT_D_INO', + 'AC_STRUCT_DIRENT_D_TYPE', + 'AC_STRUCT_ST_BLKSIZE', + 'AC_STRUCT_ST_BLOCKS', + 'AC_STRUCT_ST_RDEV', + 'AC_STRUCT_TIMEZONE', + 'AC_STRUCT_TM', + 'AC_SUBST', + 'AC_SUBST_FILE', + 'AC_SYS_INTERPRETER', + 'AC_SYS_LARGEFILE', + 'AC_SYS_LONG_FILE_NAMES', + 'AC_SYS_POSIX_TERMIOS', + 'AC_SYS_RESTARTABLE_SYSCALLS', + 'AC_SYS_SIGLIST_DECLARED', + 'AC_TEST_CPP', + 'AC_TEST_PROGRAM', + 'AC_TIME_WITH_SYS_TIME', + 'AC_TIMEZONE', + 'AC_TRY_ACT', + 'AC_TRY_COMPILE', + 'AC_TRY_CPP', + 'AC_TRY_LINK', + 'AC_TRY_LINK_FUNC', + 'AC_TRY_RUN', + 'AC_TYPE_GETGROUPS', + 'AC_TYPE_INT16_T', + 'AC_TYPE_INT32_T', + 'AC_TYPE_INT64_T', + 'AC_TYPE_INT8_T', + 'AC_TYPE_INTMAX_T', + 'AC_TYPE_INTPTR_T', + 'AC_TYPE_LONG_DOUBLE', + 'AC_TYPE_LONG_DOUBLE_WIDER', + 'AC_TYPE_LONG_LONG_INT', + 'AC_TYPE_MBSTATE_T', + 'AC_TYPE_MODE_T', + 'AC_TYPE_OFF_T', + 'AC_TYPE_PID_T', + 'AC_TYPE_SIGNAL', + 'AC_TYPE_SIZE_T', + 'AC_TYPE_SSIZE_T', + 'AC_TYPE_UID_T', + 'AC_TYPE_UINT16_T', + 'AC_TYPE_UINT32_T', + 'AC_TYPE_UINT64_T', + 'AC_TYPE_UINT8_T', + 'AC_TYPE_UINTMAX_T', + 'AC_TYPE_UINTPTR_T', + 'AC_TYPE_UNSIGNED_LONG_LONG_INT', + 'AC_UID_T', + 'AC_UNISTD_H', + 'AC_USE_SYSTEM_EXTENSIONS', + 'AC_USG', + 'AC_UTIME_NULL', + 'AC_VALIDATE_CACHED_SYSTEM_TUPLE', + 'AC_VERBOSE', + 'AC_VFORK', + 'AC_VPRINTF', + 'AC_WAIT3', + 'AC_WARN', + 'AC_WARNING', + 'AC_WITH', + 'AC_WORDS_BIGENDIAN', + 'AC_XENIX_DIR', + 'AC_YYTEXT_POINTER', + 'AH_BOTTOM', + 'AH_HEADER', + 'AH_TEMPLATE', + 'AH_TOP', + 'AH_VERBATIM', + 'AU_ALIAS', + 'AU_DEFUN'), + ), + 'SYMBOLS' => array('(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>', ';;', '`'), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #00ffff;', + ), + 'COMMENTS' => array( + 1 => 'color: #666666;', + 2 => 'color: #339900;', + 3 => 'color: #666666;', + 'MULTI' => 'color: #ff0000; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099;', + 1 => 'color: #000099;', + 2 => 'color: #660099;', + 3 => 'color: #660099;', + 4 => 'color: #660099;', + 5 => 'color: #006699;', + 'HARD' => '', + ), + 'BRACKETS' => array( + 0 => 'color: #008000;' + ), + 'STRINGS' => array( + 0 => 'color: #996600;' + ), + 'NUMBERS' => array( + 0 => 'color: #0000dd;', + GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;', + GESHI_NUMBER_OCT_PREFIX => 'color: #208080;', + GESHI_NUMBER_HEX_PREFIX => 'color: #208080;', + GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;', + GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;', + GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;', + GESHI_NUMBER_FLT_NONSCI => 'color:#800080;' + ), + 'METHODS' => array( + 1 => 'color: #202020;', + 2 => 'color: #202020;' + ), + 'SYMBOLS' => array( + 0 => 'color: #008000;', + 1 => 'color: #000080;', + 2 => 'color: #000040;', + 3 => 'color: #000040;', + 4 => 'color: #008080;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4, + 'PARSER_CONTROL' => array( + 'COMMENTS' => array( + 'DISALLOWED_BEFORE' => '$' + ), + 'KEYWORDS' => array( + 'DISALLOWED_BEFORE' => "(? "(?![\.\-a-zA-Z0-9_%\\/])" + ) + ) +); diff --git a/includes/geshi/autohotkey.php b/includes/geshi/autohotkey.php new file mode 100644 index 0000000..f6318af --- /dev/null +++ b/includes/geshi/autohotkey.php @@ -0,0 +1,371 @@ + 'Autohotkey', + 'COMMENT_SINGLE' => array( + 1 => ';' + ), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + 'while','if','and','or','else','return' + ), + 2 => array( + // built in variables + 'A_AhkPath','A_AhkVersion','A_AppData','A_AppDataCommon', + 'A_AutoTrim','A_BatchLines','A_CaretX','A_CaretY', + 'A_ComputerName','A_ControlDelay','A_Cursor','A_DD', + 'A_DDD','A_DDDD','A_DefaultMouseSpeed','A_Desktop', + 'A_DesktopCommon','A_DetectHiddenText','A_DetectHiddenWindows','A_EndChar', + 'A_EventInfo','A_ExitReason','A_FormatFloat','A_FormatInteger', + 'A_Gui','A_GuiEvent','A_GuiControl','A_GuiControlEvent', + 'A_GuiHeight','A_GuiWidth','A_GuiX','A_GuiY', + 'A_Hour','A_IconFile','A_IconHidden','A_IconNumber', + 'A_IconTip','A_Index','A_IPAddress1','A_IPAddress2', + 'A_IPAddress3','A_IPAddress4','A_ISAdmin','A_IsCompiled', + 'A_IsCritical','A_IsPaused','A_IsSuspended','A_KeyDelay', + 'A_Language','A_LastError','A_LineFile','A_LineNumber', + 'A_LoopField','A_LoopFileAttrib','A_LoopFileDir','A_LoopFileExt', + 'A_LoopFileFullPath','A_LoopFileLongPath','A_LoopFileName','A_LoopFileShortName', + 'A_LoopFileShortPath','A_LoopFileSize','A_LoopFileSizeKB','A_LoopFileSizeMB', + 'A_LoopFileTimeAccessed','A_LoopFileTimeCreated','A_LoopFileTimeModified','A_LoopReadLine', + 'A_LoopRegKey','A_LoopRegName','A_LoopRegSubkey','A_LoopRegTimeModified', + 'A_LoopRegType','A_MDAY','A_Min','A_MM', + 'A_MMM','A_MMMM','A_Mon','A_MouseDelay', + 'A_MSec','A_MyDocuments','A_Now','A_NowUTC', + 'A_NumBatchLines','A_OSType','A_OSVersion','A_PriorHotkey', + 'A_ProgramFiles','A_Programs','A_ProgramsCommon','A_ScreenHeight', + 'A_ScreenWidth','A_ScriptDir','A_ScriptFullPath','A_ScriptName', + 'A_Sec','A_Space','A_StartMenu','A_StartMenuCommon', + 'A_Startup','A_StartupCommon','A_StringCaseSense','A_Tab', + 'A_Temp','A_ThisFunc','A_ThisHotkey','A_ThisLabel', + 'A_ThisMenu','A_ThisMenuItem','A_ThisMenuItemPos','A_TickCount', + 'A_TimeIdle','A_TimeIdlePhysical','A_TimeSincePriorHotkey','A_TimeSinceThisHotkey', + 'A_TitleMatchMode','A_TitleMatchModeSpeed','A_UserName','A_WDay', + 'A_WinDelay','A_WinDir','A_WorkingDir','A_YDay', + 'A_YEAR','A_YWeek','A_YYYY','Clipboard', + 'ClipboardAll','ComSpec','ErrorLevel','ProgramFiles', + ), + 3 => array( + 'AutoTrim', + 'BlockInput','Break','Click', + 'ClipWait','Continue','Control', + 'ControlClick','ControlFocus','ControlGet', + 'ControlGetFocus','ControlGetPos','ControlGetText', + 'ControlMove','ControlSend','ControlSendRaw', + 'ControlSetText','CoordMode','Critical', + 'DetectHiddenText','DetectHiddenWindows','DllCall','Drive', + 'DriveGet','DriveSpaceFree', + 'Else','EnvAdd','EnvDiv', + 'EnvGet','EnvMult','EnvSet', + 'EnvSub','EnvUpdate','Exit', + 'ExitApp','FileAppend','FileCopy', + 'FileCopyDir','FileCreateDir','FileCreateShortcut', + 'FileDelete','FileGetAttrib','FileGetShortcut', + 'FileGetSize','FileGetTime','FileGetVersion', + 'FileInstall','FileMove','FileMoveDir', + 'FileRead','FileReadLine','FileRecycle', + 'FileRecycleEmpty','FileRemoveDir','FileSelectFile', + 'FileSelectFolder','FileSetAttrib','FileSetTime', + 'FormatTime','Gosub', + 'Goto','GroupActivate','GroupAdd', + 'GroupClose','GroupDeactivate','Gui', + 'GuiControl','GuiControlGet','Hotkey', + 'IfExist','IfGreater','IfGreaterOrEqual', + 'IfInString','IfLess','IfLessOrEqual', + 'IfMsgBox','IfNotEqual','IfNotExist', + 'IfNotInString','IfWinActive','IfWinExist', + 'IfWinNotActive','IfWinNotExist','ImageSearch', + 'IniDelete','IniRead','IniWrite', + 'Input','InputBox','KeyHistory', + 'KeyWait','ListHotkeys','ListLines', + 'ListVars','Loop', + 'Menu','MouseClick','MouseClickDrag', + 'MouseGetPos','MouseMove','MsgBox', + 'OnMessage','OnExit','OutputDebug', + 'PixelGetColor','PixelSearch','PostMessage', + 'Process','Progress','Random', + 'RegExMatch','RegExReplace','RegisterCallback', + 'RegDelete','RegRead','RegWrite', + 'Reload','Repeat','Return', + 'Run','RunAs','RunWait', + 'Send','SendEvent','SendInput', + 'SendMessage','SendMode','SendPlay', + 'SendRaw','SetBatchLines','SetCapslockState', + 'SetControlDelay','SetDefaultMouseSpeed','SetEnv', + 'SetFormat','SetKeyDelay','SetMouseDelay', + 'SetNumlockState','SetScrollLockState','SetStoreCapslockMode', + 'SetTimer','SetTitleMatchMode','SetWinDelay', + 'SetWorkingDir','Shutdown','Sleep', + 'Sort','SoundBeep','SoundGet', + 'SoundGetWaveVolume','SoundPlay','SoundSet', + 'SoundSetWaveVolume','SplashImage','SplashTextOff', + 'SplashTextOn','SplitPath','StatusBarGetText', + 'StatusBarWait','StringCaseSense','StringGetPos', + 'StringLeft','StringLen','StringLower', + 'StringMid','StringReplace','StringRight', + 'StringSplit','StringTrimLeft','StringTrimRight', + 'StringUpper','Suspend','SysGet', + 'Thread','ToolTip','Transform', + 'TrayTip','URLDownloadToFile','While', + 'VarSetCapacity', + 'WinActivate','WinActivateBottom','WinClose', + 'WinGet','WinGetActiveStats','WinGetActiveTitle', + 'WinGetClass','WinGetPos','WinGetText', + 'WinGetTitle','WinHide','WinKill', + 'WinMaximize','WinMenuSelectItem','WinMinimize', + 'WinMinimizeAll','WinMinimizeAllUndo','WinMove', + 'WinRestore','WinSet','WinSetTitle', + 'WinShow','WinWait','WinWaitActive', + 'WinWaitClose','WinWaitNotActive' + ), + 4 => array( + 'Abs','ACos','Asc','ASin', + 'ATan','Ceil','Chr','Cos', + 'Exp','FileExist','Floor', + 'GetKeyState','IL_Add','IL_Create','IL_Destroy', + 'InStr','IsFunc','IsLabel','Ln', + 'Log','LV_Add','LV_Delete','LV_DeleteCol', + 'LV_GetCount','LV_GetNext','LV_GetText','LV_Insert', + 'LV_InsertCol','LV_Modify','LV_ModifyCol','LV_SetImageList', + 'Mod','NumGet','NumPut', + 'Round', + 'SB_SetIcon','SB_SetParts','SB_SetText','Sin', + 'Sqrt','StrLen','SubStr','Tan', + 'TV_Add','TV_Delete','TV_GetChild','TV_GetCount', + 'TV_GetNext','TV_Get','TV_GetParent','TV_GetPrev', + 'TV_GetSelection','TV_GetText','TV_Modify', + 'WinActive','WinExist' + ), + 5 => array( + // #Directives + 'AllowSameLineComments','ClipboardTimeout','CommentFlag', + 'ErrorStdOut','EscapeChar','HotkeyInterval', + 'HotkeyModifierTimeout','Hotstring','IfWinActive', + 'IfWinExist','IfWinNotActive','IfWinNotExist', + 'Include','IncludeAgain','InstallKeybdHook', + 'InstallMouseHook','KeyHistory','LTrim', + 'MaxHotkeysPerInterval','MaxMem','MaxThreads', + 'MaxThreadsBuffer','MaxThreadsPerHotkey','NoEnv', + 'NoTrayIcon','Persistent','SingleInstance', + 'UseHook','WinActivateForce' + ), + 6 => array( + 'Shift','LShift','RShift', + 'Alt','LAlt','RAlt', + 'LControl','RControl', + 'Ctrl','LCtrl','RCtrl', + 'LWin','RWin','AppsKey', + 'AltDown','AltUp','ShiftDown', + 'ShiftUp','CtrlDown','CtrlUp', + 'LWinDown','LWinUp','RWinDown', + 'RWinUp','LButton','RButton', + 'MButton','WheelUp','WheelDown', + 'WheelLeft','WheelRight','XButton1', + 'XButton2','Joy1','Joy2', + 'Joy3','Joy4','Joy5', + 'Joy6','Joy7','Joy8', + 'Joy9','Joy10','Joy11', + 'Joy12','Joy13','Joy14', + 'Joy15','Joy16','Joy17', + 'Joy18','Joy19','Joy20', + 'Joy21','Joy22','Joy23', + 'Joy24','Joy25','Joy26', + 'Joy27','Joy28','Joy29', + 'Joy30','Joy31','Joy32', + 'JoyX','JoyY','JoyZ', + 'JoyR','JoyU','JoyV', + 'JoyPOV','JoyName','JoyButtons', + 'JoyAxes','JoyInfo','Space', + 'Tab','Enter', + 'Escape','Esc','BackSpace', + 'BS','Delete','Del', + 'Insert','Ins','PGUP', + 'PGDN','Home','End', + 'Up','Down','Left', + 'Right','PrintScreen','CtrlBreak', + 'Pause','ScrollLock','CapsLock', + 'NumLock','Numpad0','Numpad1', + 'Numpad2','Numpad3','Numpad4', + 'Numpad5','Numpad6','Numpad7', + 'Numpad8','Numpad9','NumpadMult', + 'NumpadAdd','NumpadSub','NumpadDiv', + 'NumpadDot','NumpadDel','NumpadIns', + 'NumpadClear','NumpadUp','NumpadDown', + 'NumpadLeft','NumpadRight','NumpadHome', + 'NumpadEnd','NumpadPgup','NumpadPgdn', + 'NumpadEnter','F1','F2', + 'F3','F4','F5', + 'F6','F7','F8', + 'F9','F10','F11', + 'F12','F13','F14', + 'F15','F16','F17', + 'F18','F19','F20', + 'F21','F22','F23', + 'F24','Browser_Back','Browser_Forward', + 'Browser_Refresh','Browser_Stop','Browser_Search', + 'Browser_Favorites','Browser_Home','Volume_Mute', + 'Volume_Down','Volume_Up','Media_Next', + 'Media_Prev','Media_Stop','Media_Play_Pause', + 'Launch_Mail','Launch_Media','Launch_App1', + 'Launch_App2' + ), + 7 => array( + // Gui commands + 'Add', + 'Show', 'Submit', 'Cancel', 'Destroy', + 'Font', 'Color', 'Margin', 'Flash', 'Default', + 'GuiEscape','GuiClose','GuiSize','GuiContextMenu','GuiDropFilesTabStop', + ), + 8 => array( + // Gui Controls + 'Button', + 'Checkbox','Radio','DropDownList','DDL', + 'ComboBox','ListBox','ListView', + 'Text', 'Edit', 'UpDown', 'Picture', + 'TreeView','DateTime', 'MonthCal', + 'Slider' + ) + ), + 'SYMBOLS' => array( + '(',')','[',']', + '+','-','*','/','&','^', + '=','+=','-=','*=','/=','&=', + '==','<','<=','>','>=',':=', + ',','.' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #AAAAFF; font-weight: bold;', // reserved #blue + 2 => 'color: #88FF88;', // BIV yellow + 3 => 'color: #FF00FF; font-style: italic;', // commands purple + 4 => 'color: #888844; font-weight: bold;', // functions #0080FF + 5 => 'color: #000000; font-style: italic;', // directives #black + 6 => 'color: #FF0000; font-style: italic;', // hotkeys #red + 7 => 'color: #000000; font-style: italic;', // gui commands #black + 8 => 'color: #000000; font-style: italic;' // gui controls + ), + 'COMMENTS' => array( + 'MULTI' => 'font-style: italic; color: #669900;', + 1 => 'font-style: italic; color: #009933;' + ), + 'ESCAPE_CHAR' => array( + 0 => '' + ), + 'BRACKETS' => array( + 0 => 'color: #00FF00; font-weight: bold;' + ), + 'STRINGS' => array( + 0 => 'font-weight: bold; color: #008080;' + ), + 'NUMBERS' => array( + 0 => 'color: #0000dd;' + ), + 'METHODS' => array( + 1 => 'color: #0000FF; font-style: italic; font-weight: italic;' + ), + 'SYMBOLS' => array( + 0 => 'color: #000000; font-weight: italic;' + ), + 'REGEXPS' => array( + 0 => 'font-weight: italic; color: #A00A0;', + 1 => 'color: #CC0000; font-style: italic;', + 2 => 'color: #DD0000; font-style: italic;', + 3 => 'color: #88FF88;' + ), + 'SCRIPT' => array( + ) + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + 1 => '_' + ), + 'REGEXPS' => array( + //Variables + 0 => '%[a-zA-Z_][a-zA-Z0-9_]*%', + //hotstrings + 1 => '::[\w\d]+::', + //labels + 2 => '\w[\w\d]+:\s', + //Built-in Variables + 3 => '\bA_\w+\b(?![^<]*>)' + ), + 'URLS' => array( + 1 => '', + 2 => 'http://www.autohotkey.com/docs/Variables.htm#{FNAME}', + 3 => 'http://www.autohotkey.com/docs/commands/{FNAME}.htm', + 4 => 'http://www.autohotkey.com/docs/Functions.htm#BuiltIn', + 5 => 'http://www.autohotkey.com/docs/commands/_{FNAME}.htm', + 6 => '', + 7 => 'http://www.autohotkey.com/docs/commands/Gui.htm#{FNAME}', + 8 => 'http://www.autohotkey.com/docs/commands/GuiControls.htm#{FNAME}' + ), + 'STRICT_MODE_APPLIES' => GESHI_MAYBE, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + 0 => true, + 1 => true, + 2 => true, + 3 => true + ), + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 5 => array( + 'DISALLOWED_BEFORE' => '(? 'AutoIt', + 'COMMENT_SINGLE' => array( + 1 => ';', + 2 => ';~' + ), + 'COMMENT_MULTI' => array( + '#comments-start' => '#comments-end', + '#cs' => '#ce'), + 'COMMENT_REGEXP' => array( + 0 => '/(?<=(i|I)nclude)\s*<.*?>/' + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + 'And', 'ByRef', 'Case', 'Const', 'ContinueCase', 'ContinueLoop', + 'Default', 'Dim', 'Do', 'Else', 'ElseIf', 'EndFunc', 'EndIf', 'EndSelect', + 'EndSwitch', 'EndWith', 'Enum', 'Exit', 'ExitLoop', 'False', 'For', 'Func', + 'Global', 'If', 'In', 'Local', 'Next', 'Not', 'Null', 'Or', 'ReDim', + 'Return', 'Select', 'Static', 'Step', 'Switch', 'Then', 'To', 'True', + 'Until', 'Volatile', 'WEnd', 'While', 'With' + ), + 2 => array( + '@AppDataCommonDir', '@AppDataDir', '@AutoItExe', '@AutoItPID', + '@AutoItVersion', '@AutoItX64', '@COM_EventObj', '@CommonFilesDir', + '@Compiled', '@ComputerName', '@ComSpec', '@CPUArch', '@CR', '@CRLF', + '@DesktopCommonDir', '@DesktopDepth', '@DesktopDir', '@DesktopHeight', + '@DesktopRefresh', '@DesktopWidth', '@DocumentsCommonDir', '@error', + '@exitCode', '@exitMethod', '@extended', '@FavoritesCommonDir', + '@FavoritesDir', '@GUI_CtrlHandle', '@GUI_CtrlId', '@GUI_DragFile', + '@GUI_DragId', '@GUI_DropId', '@GUI_WinHandle', '@HomeDrive', + '@HomePath', '@HomeShare', '@HotKeyPressed', '@HOUR', '@IPAddress1', + '@IPAddress2', '@IPAddress3', '@IPAddress4', '@KBLayout', '@LF', + '@LocalAppDataDir', '@LogonDNSDomain', '@LogonDomain', '@LogonServer', + '@MDAY', '@MIN', '@MON', '@MSEC', '@MUILang', '@MyDocumentsDir', + '@NumParams', '@OSArch', '@OSBuild', '@OSLang', '@OSServicePack', + '@OSType', '@OSVersion', '@ProgramFilesDir', '@ProgramsCommonDir', + '@ProgramsDir', '@ScriptDir', '@ScriptFullPath', '@ScriptLineNumber', + '@ScriptName', '@SEC', '@StartMenuCommonDir', '@StartMenuDir', + '@StartupCommonDir', '@StartupDir', '@SW_DISABLE', '@SW_ENABLE', + '@SW_HIDE', '@SW_LOCK', '@SW_MAXIMIZE', '@SW_MINIMIZE', '@SW_RESTORE', + '@SW_SHOW', '@SW_SHOWDEFAULT', '@SW_SHOWMAXIMIZED', + '@SW_SHOWMINIMIZED', '@SW_SHOWMINNOACTIVE', '@SW_SHOWNA', + '@SW_SHOWNOACTIVATE', '@SW_SHOWNORMAL', '@SW_UNLOCK', '@SystemDir', + '@TAB', '@TempDir', '@TRAY_ID', '@TrayIconFlashing', '@TrayIconVisible', + '@UserName', '@UserProfileDir', '@WDAY', '@WindowsDir', '@WorkingDir', + '@YDAY', '@YEAR' + ), + 3 => array( + 'Abs', 'ACos', 'AdlibRegister', 'AdlibUnRegister', 'Asc', 'AscW', 'ASin', + 'Assign', 'ATan', 'AutoItSetOption', 'AutoItWinGetTitle', + 'AutoItWinSetTitle', 'Beep', 'Binary', 'BinaryLen', 'BinaryMid', + 'BinaryToString', 'BitAND', 'BitNOT', 'BitOR', 'BitRotate', 'BitShift', + 'BitXOR', 'BlockInput', 'Break', 'Call', 'CDTray', 'Ceiling', 'Chr', + 'ChrW', 'ClipGet', 'ClipPut', 'ConsoleRead', 'ConsoleWrite', + 'ConsoleWriteError', 'ControlClick', 'ControlCommand', + 'ControlDisable', 'ControlEnable', 'ControlFocus', 'ControlGetFocus', + 'ControlGetHandle', 'ControlGetPos', 'ControlGetText', 'ControlHide', + 'ControlListView', 'ControlMove', 'ControlSend', 'ControlSetText', + 'ControlShow', 'ControlTreeView', 'Cos', 'Dec', 'DirCopy', 'DirCreate', + 'DirGetSize', 'DirMove', 'DirRemove', 'DllCall', 'DllCallAddress', + 'DllCallbackFree', 'DllCallbackGetPtr', 'DllCallbackRegister', + 'DllClose', 'DllOpen', 'DllStructCreate', 'DllStructGetData', + 'DllStructGetPtr', 'DllStructGetSize', 'DllStructSetData', + 'DriveGetDrive', 'DriveGetFileSystem', 'DriveGetLabel', + 'DriveGetSerial', 'DriveGetType', 'DriveMapAdd', 'DriveMapDel', + 'DriveMapGet', 'DriveSetLabel', 'DriveSpaceFree', 'DriveSpaceTotal', + 'DriveStatus', 'EnvGet', 'EnvSet', 'EnvUpdate', 'Eval', 'Execute', 'Exp', + 'FileChangeDir', 'FileClose', 'FileCopy', 'FileCreateNTFSLink', + 'FileCreateShortcut', 'FileDelete', 'FileExists', 'FileFindFirstFile', + 'FileFindNextFile', 'FileFlush', 'FileGetAttrib', 'FileGetEncoding', + 'FileGetLongName', 'FileGetPos', 'FileGetShortcut', 'FileGetShortName', + 'FileGetSize', 'FileGetTime', 'FileGetVersion', 'FileInstall', + 'FileMove', 'FileOpen', 'FileOpenDialog', 'FileRead', 'FileReadLine', + 'FileReadToArray', 'FileRecycle', 'FileRecycleEmpty', 'FileSaveDialog', + 'FileSelectFolder', 'FileSetAttrib', 'FileSetEnd', 'FileSetPos', + 'FileSetTime', 'FileWrite', 'FileWriteLine', 'Floor', 'FtpSetProxy', + 'FuncName', 'GUICreate', 'GUICtrlCreateAvi', 'GUICtrlCreateButton', + 'GUICtrlCreateCheckbox', 'GUICtrlCreateCombo', + 'GUICtrlCreateContextMenu', 'GUICtrlCreateDate', 'GUICtrlCreateDummy', + 'GUICtrlCreateEdit', 'GUICtrlCreateGraphic', 'GUICtrlCreateGroup', + 'GUICtrlCreateIcon', 'GUICtrlCreateInput', 'GUICtrlCreateLabel', + 'GUICtrlCreateList', 'GUICtrlCreateListView', + 'GUICtrlCreateListViewItem', 'GUICtrlCreateMenu', + 'GUICtrlCreateMenuItem', 'GUICtrlCreateMonthCal', 'GUICtrlCreateObj', + 'GUICtrlCreatePic', 'GUICtrlCreateProgress', 'GUICtrlCreateRadio', + 'GUICtrlCreateSlider', 'GUICtrlCreateTab', 'GUICtrlCreateTabItem', + 'GUICtrlCreateTreeView', 'GUICtrlCreateTreeViewItem', + 'GUICtrlCreateUpdown', 'GUICtrlDelete', 'GUICtrlGetHandle', + 'GUICtrlGetState', 'GUICtrlRead', 'GUICtrlRecvMsg', + 'GUICtrlRegisterListViewSort', 'GUICtrlSendMsg', 'GUICtrlSendToDummy', + 'GUICtrlSetBkColor', 'GUICtrlSetColor', 'GUICtrlSetCursor', + 'GUICtrlSetData', 'GUICtrlSetDefBkColor', 'GUICtrlSetDefColor', + 'GUICtrlSetFont', 'GUICtrlSetGraphic', 'GUICtrlSetImage', + 'GUICtrlSetLimit', 'GUICtrlSetOnEvent', 'GUICtrlSetPos', + 'GUICtrlSetResizing', 'GUICtrlSetState', 'GUICtrlSetStyle', + 'GUICtrlSetTip', 'GUIDelete', 'GUIGetCursorInfo', 'GUIGetMsg', + 'GUIGetStyle', 'GUIRegisterMsg', 'GUISetAccelerators', 'GUISetBkColor', + 'GUISetCoord', 'GUISetCursor', 'GUISetFont', 'GUISetHelp', 'GUISetIcon', + 'GUISetOnEvent', 'GUISetState', 'GUISetStyle', 'GUIStartGroup', + 'GUISwitch', 'Hex', 'HotKeySet', 'HttpSetProxy', 'HttpSetUserAgent', + 'HWnd', 'InetClose', 'InetGet', 'InetGetInfo', 'InetGetSize', 'InetRead', + 'IniDelete', 'IniRead', 'IniReadSection', 'IniReadSectionNames', + 'IniRenameSection', 'IniWrite', 'IniWriteSection', 'InputBox', 'Int', + 'IsAdmin', 'IsArray', 'IsBinary', 'IsBool', 'IsDeclared', 'IsDllStruct', + 'IsFloat', 'IsFunc', 'IsHWnd', 'IsInt', 'IsKeyword', 'IsNumber', 'IsObj', + 'IsPtr', 'IsString', 'Log', 'MemGetStats', 'Mod', 'MouseClick', + 'MouseClickDrag', 'MouseDown', 'MouseGetCursor', 'MouseGetPos', + 'MouseMove', 'MouseUp', 'MouseWheel', 'MsgBox', 'Number', 'ObjCreate', + 'ObjCreateInterface', 'ObjEvent', 'ObjGet', 'ObjName', + 'OnAutoItExitRegister', 'OnAutoItExitUnRegister', 'Opt', 'Ping', + 'PixelChecksum', 'PixelGetColor', 'PixelSearch', 'ProcessClose', + 'ProcessExists', 'ProcessGetStats', 'ProcessList', + 'ProcessSetPriority', 'ProcessWait', 'ProcessWaitClose', 'ProgressOff', + 'ProgressOn', 'ProgressSet', 'Ptr', 'Random', 'RegDelete', 'RegEnumKey', + 'RegEnumVal', 'RegRead', 'RegWrite', 'Round', 'Run', 'RunAs', 'RunAsWait', + 'RunWait', 'Send', 'SendKeepActive', 'SetError', 'SetExtended', + 'ShellExecute', 'ShellExecuteWait', 'Shutdown', 'Sin', 'Sleep', + 'SoundPlay', 'SoundSetWaveVolume', 'SplashImageOn', 'SplashOff', + 'SplashTextOn', 'Sqrt', 'SRandom', 'StatusbarGetText', 'StderrRead', + 'StdinWrite', 'StdioClose', 'StdoutRead', 'String', 'StringAddCR', + 'StringCompare', 'StringFormat', 'StringFromASCIIArray', 'StringInStr', + 'StringIsAlNum', 'StringIsAlpha', 'StringIsASCII', 'StringIsDigit', + 'StringIsFloat', 'StringIsInt', 'StringIsLower', 'StringIsSpace', + 'StringIsUpper', 'StringIsXDigit', 'StringLeft', 'StringLen', + 'StringLower', 'StringMid', 'StringRegExp', 'StringRegExpReplace', + 'StringReplace', 'StringReverse', 'StringRight', 'StringSplit', + 'StringStripCR', 'StringStripWS', 'StringToASCIIArray', + 'StringToBinary', 'StringTrimLeft', 'StringTrimRight', 'StringUpper', + 'Tan', 'TCPAccept', 'TCPCloseSocket', 'TCPConnect', 'TCPListen', + 'TCPNameToIP', 'TCPRecv', 'TCPSend', 'TCPShutdown', 'TCPStartup', + 'TimerDiff', 'TimerInit', 'ToolTip', 'TrayCreateItem', 'TrayCreateMenu', + 'TrayGetMsg', 'TrayItemDelete', 'TrayItemGetHandle', + 'TrayItemGetState', 'TrayItemGetText', 'TrayItemSetOnEvent', + 'TrayItemSetState', 'TrayItemSetText', 'TraySetClick', 'TraySetIcon', + 'TraySetOnEvent', 'TraySetPauseIcon', 'TraySetState', 'TraySetToolTip', + 'TrayTip', 'UBound', 'UDPBind', 'UDPCloseSocket', 'UDPOpen', 'UDPRecv', + 'UDPSend', 'UDPShutdown', 'UDPStartup', 'VarGetType', 'WinActivate', + 'WinActive', 'WinClose', 'WinExists', 'WinFlash', 'WinGetCaretPos', + 'WinGetClassList', 'WinGetClientSize', 'WinGetHandle', 'WinGetPos', + 'WinGetProcess', 'WinGetState', 'WinGetText', 'WinGetTitle', 'WinKill', + 'WinList', 'WinMenuSelectItem', 'WinMinimizeAll', 'WinMinimizeAllUndo', + 'WinMove', 'WinSetOnTop', 'WinSetState', 'WinSetTitle', 'WinSetTrans', + 'WinWait', 'WinWaitActive', 'WinWaitClose', 'WinWaitNotActive' + ), + 4 => array( + 'Array1DToHistogram', 'ArrayAdd', 'ArrayBinarySearch', + 'ArrayColDelete', 'ArrayColInsert', 'ArrayCombinations', + 'ArrayConcatenate', 'ArrayDelete', 'ArrayDisplay', 'ArrayExtract', + 'ArrayFindAll', 'ArrayInsert', 'ArrayMax', 'ArrayMaxIndex', 'ArrayMin', + 'ArrayMinIndex', 'ArrayPermute', 'ArrayPop', 'ArrayPush', + 'ArrayReverse', 'ArraySearch', 'ArrayShuffle', 'ArraySort', 'ArraySwap', + 'ArrayToClip', 'ArrayToString', 'ArrayTranspose', 'ArrayTrim', + 'ArrayUnique', 'Assert', 'ChooseColor', 'ChooseFont', + 'ClipBoard_ChangeChain', 'ClipBoard_Close', 'ClipBoard_CountFormats', + 'ClipBoard_Empty', 'ClipBoard_EnumFormats', 'ClipBoard_FormatStr', + 'ClipBoard_GetData', 'ClipBoard_GetDataEx', 'ClipBoard_GetFormatName', + 'ClipBoard_GetOpenWindow', 'ClipBoard_GetOwner', + 'ClipBoard_GetPriorityFormat', 'ClipBoard_GetSequenceNumber', + 'ClipBoard_GetViewer', 'ClipBoard_IsFormatAvailable', + 'ClipBoard_Open', 'ClipBoard_RegisterFormat', 'ClipBoard_SetData', + 'ClipBoard_SetDataEx', 'ClipBoard_SetViewer', 'ClipPutFile', + 'ColorConvertHSLtoRGB', 'ColorConvertRGBtoHSL', 'ColorGetBlue', + 'ColorGetCOLORREF', 'ColorGetGreen', 'ColorGetRed', 'ColorGetRGB', + 'ColorSetCOLORREF', 'ColorSetRGB', 'Crypt_DecryptData', + 'Crypt_DecryptFile', 'Crypt_DeriveKey', 'Crypt_DestroyKey', + 'Crypt_EncryptData', 'Crypt_EncryptFile', 'Crypt_GenRandom', + 'Crypt_HashData', 'Crypt_HashFile', 'Crypt_Shutdown', 'Crypt_Startup', + 'DateAdd', 'DateDayOfWeek', 'DateDaysInMonth', 'DateDiff', + 'DateIsLeapYear', 'DateIsValid', 'DateTimeFormat', 'DateTimeSplit', + 'DateToDayOfWeek', 'DateToDayOfWeekISO', 'DateToDayValue', + 'DateToMonth', 'Date_Time_CompareFileTime', + 'Date_Time_DOSDateTimeToArray', 'Date_Time_DOSDateTimeToFileTime', + 'Date_Time_DOSDateTimeToStr', 'Date_Time_DOSDateToArray', + 'Date_Time_DOSDateToStr', 'Date_Time_DOSTimeToArray', + 'Date_Time_DOSTimeToStr', 'Date_Time_EncodeFileTime', + 'Date_Time_EncodeSystemTime', 'Date_Time_FileTimeToArray', + 'Date_Time_FileTimeToDOSDateTime', + 'Date_Time_FileTimeToLocalFileTime', 'Date_Time_FileTimeToStr', + 'Date_Time_FileTimeToSystemTime', 'Date_Time_GetFileTime', + 'Date_Time_GetLocalTime', 'Date_Time_GetSystemTime', + 'Date_Time_GetSystemTimeAdjustment', + 'Date_Time_GetSystemTimeAsFileTime', 'Date_Time_GetSystemTimes', + 'Date_Time_GetTickCount', 'Date_Time_GetTimeZoneInformation', + 'Date_Time_LocalFileTimeToFileTime', 'Date_Time_SetFileTime', + 'Date_Time_SetLocalTime', 'Date_Time_SetSystemTime', + 'Date_Time_SetSystemTimeAdjustment', + 'Date_Time_SetTimeZoneInformation', 'Date_Time_SystemTimeToArray', + 'Date_Time_SystemTimeToDateStr', 'Date_Time_SystemTimeToDateTimeStr', + 'Date_Time_SystemTimeToFileTime', 'Date_Time_SystemTimeToTimeStr', + 'Date_Time_SystemTimeToTzSpecificLocalTime', + 'Date_Time_TzSpecificLocalTimeToSystemTime', 'DayValueToDate', + 'DebugBugReportEnv', 'DebugCOMError', 'DebugOut', 'DebugReport', + 'DebugReportEx', 'DebugReportVar', 'DebugSetup', 'Degree', + 'EventLog__Backup', 'EventLog__Clear', 'EventLog__Close', + 'EventLog__Count', 'EventLog__DeregisterSource', 'EventLog__Full', + 'EventLog__Notify', 'EventLog__Oldest', 'EventLog__Open', + 'EventLog__OpenBackup', 'EventLog__Read', 'EventLog__RegisterSource', + 'EventLog__Report', 'Excel_BookAttach', 'Excel_BookClose', + 'Excel_BookList', 'Excel_BookNew', 'Excel_BookOpen', + 'Excel_BookOpenText', 'Excel_BookSave', 'Excel_BookSaveAs', + 'Excel_Close', 'Excel_ColumnToLetter', 'Excel_ColumnToNumber', + 'Excel_ConvertFormula', 'Excel_Export', 'Excel_FilterGet', + 'Excel_FilterSet', 'Excel_Open', 'Excel_PictureAdd', 'Excel_Print', + 'Excel_RangeCopyPaste', 'Excel_RangeDelete', 'Excel_RangeFind', + 'Excel_RangeInsert', 'Excel_RangeLinkAddRemove', 'Excel_RangeRead', + 'Excel_RangeReplace', 'Excel_RangeSort', 'Excel_RangeValidate', + 'Excel_RangeWrite', 'Excel_SheetAdd', 'Excel_SheetCopyMove', + 'Excel_SheetDelete', 'Excel_SheetList', 'FileCountLines', 'FileCreate', + 'FileListToArray', 'FileListToArrayRec', 'FilePrint', + 'FileReadToArray', 'FileWriteFromArray', 'FileWriteLog', + 'FileWriteToLine', 'FTP_Close', 'FTP_Command', 'FTP_Connect', + 'FTP_DecodeInternetStatus', 'FTP_DirCreate', 'FTP_DirDelete', + 'FTP_DirGetCurrent', 'FTP_DirPutContents', 'FTP_DirSetCurrent', + 'FTP_FileClose', 'FTP_FileDelete', 'FTP_FileGet', 'FTP_FileGetSize', + 'FTP_FileOpen', 'FTP_FilePut', 'FTP_FileRead', 'FTP_FileRename', + 'FTP_FileTimeLoHiToStr', 'FTP_FindFileClose', 'FTP_FindFileFirst', + 'FTP_FindFileNext', 'FTP_GetLastResponseInfo', 'FTP_ListToArray', + 'FTP_ListToArray2D', 'FTP_ListToArrayEx', 'FTP_Open', + 'FTP_ProgressDownload', 'FTP_ProgressUpload', 'FTP_SetStatusCallback', + 'GDIPlus_ArrowCapCreate', 'GDIPlus_ArrowCapDispose', + 'GDIPlus_ArrowCapGetFillState', 'GDIPlus_ArrowCapGetHeight', + 'GDIPlus_ArrowCapGetMiddleInset', 'GDIPlus_ArrowCapGetWidth', + 'GDIPlus_ArrowCapSetFillState', 'GDIPlus_ArrowCapSetHeight', + 'GDIPlus_ArrowCapSetMiddleInset', 'GDIPlus_ArrowCapSetWidth', + 'GDIPlus_BitmapApplyEffect', 'GDIPlus_BitmapApplyEffectEx', + 'GDIPlus_BitmapCloneArea', 'GDIPlus_BitmapConvertFormat', + 'GDIPlus_BitmapCreateApplyEffect', + 'GDIPlus_BitmapCreateApplyEffectEx', + 'GDIPlus_BitmapCreateDIBFromBitmap', 'GDIPlus_BitmapCreateFromFile', + 'GDIPlus_BitmapCreateFromGraphics', + 'GDIPlus_BitmapCreateFromHBITMAP', 'GDIPlus_BitmapCreateFromHICON', + 'GDIPlus_BitmapCreateFromHICON32', 'GDIPlus_BitmapCreateFromMemory', + 'GDIPlus_BitmapCreateFromResource', 'GDIPlus_BitmapCreateFromScan0', + 'GDIPlus_BitmapCreateFromStream', + 'GDIPlus_BitmapCreateHBITMAPFromBitmap', 'GDIPlus_BitmapDispose', + 'GDIPlus_BitmapGetHistogram', 'GDIPlus_BitmapGetHistogramEx', + 'GDIPlus_BitmapGetHistogramSize', 'GDIPlus_BitmapGetPixel', + 'GDIPlus_BitmapLockBits', 'GDIPlus_BitmapSetPixel', + 'GDIPlus_BitmapUnlockBits', 'GDIPlus_BrushClone', + 'GDIPlus_BrushCreateSolid', 'GDIPlus_BrushDispose', + 'GDIPlus_BrushGetSolidColor', 'GDIPlus_BrushGetType', + 'GDIPlus_BrushSetSolidColor', 'GDIPlus_ColorMatrixCreate', + 'GDIPlus_ColorMatrixCreateGrayScale', + 'GDIPlus_ColorMatrixCreateNegative', + 'GDIPlus_ColorMatrixCreateSaturation', + 'GDIPlus_ColorMatrixCreateScale', + 'GDIPlus_ColorMatrixCreateTranslate', 'GDIPlus_CustomLineCapClone', + 'GDIPlus_CustomLineCapCreate', 'GDIPlus_CustomLineCapDispose', + 'GDIPlus_CustomLineCapGetStrokeCaps', + 'GDIPlus_CustomLineCapSetStrokeCaps', 'GDIPlus_Decoders', + 'GDIPlus_DecodersGetCount', 'GDIPlus_DecodersGetSize', + 'GDIPlus_DrawImageFX', 'GDIPlus_DrawImageFXEx', + 'GDIPlus_DrawImagePoints', 'GDIPlus_EffectCreate', + 'GDIPlus_EffectCreateBlur', 'GDIPlus_EffectCreateBrightnessContrast', + 'GDIPlus_EffectCreateColorBalance', 'GDIPlus_EffectCreateColorCurve', + 'GDIPlus_EffectCreateColorLUT', 'GDIPlus_EffectCreateColorMatrix', + 'GDIPlus_EffectCreateHueSaturationLightness', + 'GDIPlus_EffectCreateLevels', 'GDIPlus_EffectCreateRedEyeCorrection', + 'GDIPlus_EffectCreateSharpen', 'GDIPlus_EffectCreateTint', + 'GDIPlus_EffectDispose', 'GDIPlus_EffectGetParameters', + 'GDIPlus_EffectSetParameters', 'GDIPlus_Encoders', + 'GDIPlus_EncodersGetCLSID', 'GDIPlus_EncodersGetCount', + 'GDIPlus_EncodersGetParamList', 'GDIPlus_EncodersGetParamListSize', + 'GDIPlus_EncodersGetSize', 'GDIPlus_FontCreate', + 'GDIPlus_FontDispose', 'GDIPlus_FontFamilyCreate', + 'GDIPlus_FontFamilyCreateFromCollection', + 'GDIPlus_FontFamilyDispose', 'GDIPlus_FontFamilyGetCellAscent', + 'GDIPlus_FontFamilyGetCellDescent', 'GDIPlus_FontFamilyGetEmHeight', + 'GDIPlus_FontFamilyGetLineSpacing', 'GDIPlus_FontGetHeight', + 'GDIPlus_FontPrivateAddFont', 'GDIPlus_FontPrivateAddMemoryFont', + 'GDIPlus_FontPrivateCollectionDispose', + 'GDIPlus_FontPrivateCreateCollection', 'GDIPlus_GraphicsClear', + 'GDIPlus_GraphicsCreateFromHDC', 'GDIPlus_GraphicsCreateFromHWND', + 'GDIPlus_GraphicsDispose', 'GDIPlus_GraphicsDrawArc', + 'GDIPlus_GraphicsDrawBezier', 'GDIPlus_GraphicsDrawClosedCurve', + 'GDIPlus_GraphicsDrawClosedCurve2', 'GDIPlus_GraphicsDrawCurve', + 'GDIPlus_GraphicsDrawCurve2', 'GDIPlus_GraphicsDrawEllipse', + 'GDIPlus_GraphicsDrawImage', 'GDIPlus_GraphicsDrawImagePointsRect', + 'GDIPlus_GraphicsDrawImageRect', 'GDIPlus_GraphicsDrawImageRectRect', + 'GDIPlus_GraphicsDrawLine', 'GDIPlus_GraphicsDrawPath', + 'GDIPlus_GraphicsDrawPie', 'GDIPlus_GraphicsDrawPolygon', + 'GDIPlus_GraphicsDrawRect', 'GDIPlus_GraphicsDrawString', + 'GDIPlus_GraphicsDrawStringEx', 'GDIPlus_GraphicsFillClosedCurve', + 'GDIPlus_GraphicsFillClosedCurve2', 'GDIPlus_GraphicsFillEllipse', + 'GDIPlus_GraphicsFillPath', 'GDIPlus_GraphicsFillPie', + 'GDIPlus_GraphicsFillPolygon', 'GDIPlus_GraphicsFillRect', + 'GDIPlus_GraphicsFillRegion', 'GDIPlus_GraphicsGetCompositingMode', + 'GDIPlus_GraphicsGetCompositingQuality', 'GDIPlus_GraphicsGetDC', + 'GDIPlus_GraphicsGetInterpolationMode', + 'GDIPlus_GraphicsGetSmoothingMode', 'GDIPlus_GraphicsGetTransform', + 'GDIPlus_GraphicsMeasureCharacterRanges', + 'GDIPlus_GraphicsMeasureString', 'GDIPlus_GraphicsReleaseDC', + 'GDIPlus_GraphicsResetClip', 'GDIPlus_GraphicsResetTransform', + 'GDIPlus_GraphicsRestore', 'GDIPlus_GraphicsRotateTransform', + 'GDIPlus_GraphicsSave', 'GDIPlus_GraphicsScaleTransform', + 'GDIPlus_GraphicsSetClipPath', 'GDIPlus_GraphicsSetClipRect', + 'GDIPlus_GraphicsSetClipRegion', + 'GDIPlus_GraphicsSetCompositingMode', + 'GDIPlus_GraphicsSetCompositingQuality', + 'GDIPlus_GraphicsSetInterpolationMode', + 'GDIPlus_GraphicsSetPixelOffsetMode', + 'GDIPlus_GraphicsSetSmoothingMode', + 'GDIPlus_GraphicsSetTextRenderingHint', + 'GDIPlus_GraphicsSetTransform', 'GDIPlus_GraphicsTransformPoints', + 'GDIPlus_GraphicsTranslateTransform', 'GDIPlus_HatchBrushCreate', + 'GDIPlus_HICONCreateFromBitmap', 'GDIPlus_ImageAttributesCreate', + 'GDIPlus_ImageAttributesDispose', + 'GDIPlus_ImageAttributesSetColorKeys', + 'GDIPlus_ImageAttributesSetColorMatrix', 'GDIPlus_ImageDispose', + 'GDIPlus_ImageGetDimension', 'GDIPlus_ImageGetFlags', + 'GDIPlus_ImageGetGraphicsContext', 'GDIPlus_ImageGetHeight', + 'GDIPlus_ImageGetHorizontalResolution', + 'GDIPlus_ImageGetPixelFormat', 'GDIPlus_ImageGetRawFormat', + 'GDIPlus_ImageGetThumbnail', 'GDIPlus_ImageGetType', + 'GDIPlus_ImageGetVerticalResolution', 'GDIPlus_ImageGetWidth', + 'GDIPlus_ImageLoadFromFile', 'GDIPlus_ImageLoadFromStream', + 'GDIPlus_ImageResize', 'GDIPlus_ImageRotateFlip', + 'GDIPlus_ImageSaveToFile', 'GDIPlus_ImageSaveToFileEx', + 'GDIPlus_ImageSaveToStream', 'GDIPlus_ImageScale', + 'GDIPlus_LineBrushCreate', 'GDIPlus_LineBrushCreateFromRect', + 'GDIPlus_LineBrushCreateFromRectWithAngle', + 'GDIPlus_LineBrushGetColors', 'GDIPlus_LineBrushGetRect', + 'GDIPlus_LineBrushMultiplyTransform', + 'GDIPlus_LineBrushResetTransform', 'GDIPlus_LineBrushSetBlend', + 'GDIPlus_LineBrushSetColors', 'GDIPlus_LineBrushSetGammaCorrection', + 'GDIPlus_LineBrushSetLinearBlend', 'GDIPlus_LineBrushSetPresetBlend', + 'GDIPlus_LineBrushSetSigmaBlend', 'GDIPlus_LineBrushSetTransform', + 'GDIPlus_MatrixClone', 'GDIPlus_MatrixCreate', + 'GDIPlus_MatrixDispose', 'GDIPlus_MatrixGetElements', + 'GDIPlus_MatrixInvert', 'GDIPlus_MatrixMultiply', + 'GDIPlus_MatrixRotate', 'GDIPlus_MatrixScale', + 'GDIPlus_MatrixSetElements', 'GDIPlus_MatrixShear', + 'GDIPlus_MatrixTransformPoints', 'GDIPlus_MatrixTranslate', + 'GDIPlus_PaletteInitialize', 'GDIPlus_ParamAdd', 'GDIPlus_ParamInit', + 'GDIPlus_ParamSize', 'GDIPlus_PathAddArc', 'GDIPlus_PathAddBezier', + 'GDIPlus_PathAddClosedCurve', 'GDIPlus_PathAddClosedCurve2', + 'GDIPlus_PathAddCurve', 'GDIPlus_PathAddCurve2', + 'GDIPlus_PathAddCurve3', 'GDIPlus_PathAddEllipse', + 'GDIPlus_PathAddLine', 'GDIPlus_PathAddLine2', 'GDIPlus_PathAddPath', + 'GDIPlus_PathAddPie', 'GDIPlus_PathAddPolygon', + 'GDIPlus_PathAddRectangle', 'GDIPlus_PathAddString', + 'GDIPlus_PathBrushCreate', 'GDIPlus_PathBrushCreateFromPath', + 'GDIPlus_PathBrushGetCenterPoint', 'GDIPlus_PathBrushGetFocusScales', + 'GDIPlus_PathBrushGetPointCount', 'GDIPlus_PathBrushGetRect', + 'GDIPlus_PathBrushGetWrapMode', 'GDIPlus_PathBrushMultiplyTransform', + 'GDIPlus_PathBrushResetTransform', 'GDIPlus_PathBrushSetBlend', + 'GDIPlus_PathBrushSetCenterColor', 'GDIPlus_PathBrushSetCenterPoint', + 'GDIPlus_PathBrushSetFocusScales', + 'GDIPlus_PathBrushSetGammaCorrection', + 'GDIPlus_PathBrushSetLinearBlend', 'GDIPlus_PathBrushSetPresetBlend', + 'GDIPlus_PathBrushSetSigmaBlend', + 'GDIPlus_PathBrushSetSurroundColor', + 'GDIPlus_PathBrushSetSurroundColorsWithCount', + 'GDIPlus_PathBrushSetTransform', 'GDIPlus_PathBrushSetWrapMode', + 'GDIPlus_PathClone', 'GDIPlus_PathCloseFigure', 'GDIPlus_PathCreate', + 'GDIPlus_PathCreate2', 'GDIPlus_PathDispose', 'GDIPlus_PathFlatten', + 'GDIPlus_PathGetData', 'GDIPlus_PathGetFillMode', + 'GDIPlus_PathGetLastPoint', 'GDIPlus_PathGetPointCount', + 'GDIPlus_PathGetPoints', 'GDIPlus_PathGetWorldBounds', + 'GDIPlus_PathIsOutlineVisiblePoint', 'GDIPlus_PathIsVisiblePoint', + 'GDIPlus_PathIterCreate', 'GDIPlus_PathIterDispose', + 'GDIPlus_PathIterGetSubpathCount', 'GDIPlus_PathIterNextMarkerPath', + 'GDIPlus_PathIterNextSubpathPath', 'GDIPlus_PathIterRewind', + 'GDIPlus_PathReset', 'GDIPlus_PathReverse', 'GDIPlus_PathSetFillMode', + 'GDIPlus_PathSetMarker', 'GDIPlus_PathStartFigure', + 'GDIPlus_PathTransform', 'GDIPlus_PathWarp', 'GDIPlus_PathWiden', + 'GDIPlus_PathWindingModeOutline', 'GDIPlus_PenCreate', + 'GDIPlus_PenCreate2', 'GDIPlus_PenDispose', 'GDIPlus_PenGetAlignment', + 'GDIPlus_PenGetColor', 'GDIPlus_PenGetCustomEndCap', + 'GDIPlus_PenGetDashCap', 'GDIPlus_PenGetDashStyle', + 'GDIPlus_PenGetEndCap', 'GDIPlus_PenGetMiterLimit', + 'GDIPlus_PenGetWidth', 'GDIPlus_PenSetAlignment', + 'GDIPlus_PenSetColor', 'GDIPlus_PenSetCustomEndCap', + 'GDIPlus_PenSetDashCap', 'GDIPlus_PenSetDashStyle', + 'GDIPlus_PenSetEndCap', 'GDIPlus_PenSetLineCap', + 'GDIPlus_PenSetLineJoin', 'GDIPlus_PenSetMiterLimit', + 'GDIPlus_PenSetStartCap', 'GDIPlus_PenSetWidth', + 'GDIPlus_RectFCreate', 'GDIPlus_RegionClone', + 'GDIPlus_RegionCombinePath', 'GDIPlus_RegionCombineRect', + 'GDIPlus_RegionCombineRegion', 'GDIPlus_RegionCreate', + 'GDIPlus_RegionCreateFromPath', 'GDIPlus_RegionCreateFromRect', + 'GDIPlus_RegionDispose', 'GDIPlus_RegionGetBounds', + 'GDIPlus_RegionGetHRgn', 'GDIPlus_RegionTransform', + 'GDIPlus_RegionTranslate', 'GDIPlus_Shutdown', 'GDIPlus_Startup', + 'GDIPlus_StringFormatCreate', 'GDIPlus_StringFormatDispose', + 'GDIPlus_StringFormatGetMeasurableCharacterRangeCount', + 'GDIPlus_StringFormatSetAlign', 'GDIPlus_StringFormatSetLineAlign', + 'GDIPlus_StringFormatSetMeasurableCharacterRanges', + 'GDIPlus_TextureCreate', 'GDIPlus_TextureCreate2', + 'GDIPlus_TextureCreateIA', 'GetIP', 'GUICtrlAVI_Close', + 'GUICtrlAVI_Create', 'GUICtrlAVI_Destroy', 'GUICtrlAVI_IsPlaying', + 'GUICtrlAVI_Open', 'GUICtrlAVI_OpenEx', 'GUICtrlAVI_Play', + 'GUICtrlAVI_Seek', 'GUICtrlAVI_Show', 'GUICtrlAVI_Stop', + 'GUICtrlButton_Click', 'GUICtrlButton_Create', + 'GUICtrlButton_Destroy', 'GUICtrlButton_Enable', + 'GUICtrlButton_GetCheck', 'GUICtrlButton_GetFocus', + 'GUICtrlButton_GetIdealSize', 'GUICtrlButton_GetImage', + 'GUICtrlButton_GetImageList', 'GUICtrlButton_GetNote', + 'GUICtrlButton_GetNoteLength', 'GUICtrlButton_GetSplitInfo', + 'GUICtrlButton_GetState', 'GUICtrlButton_GetText', + 'GUICtrlButton_GetTextMargin', 'GUICtrlButton_SetCheck', + 'GUICtrlButton_SetDontClick', 'GUICtrlButton_SetFocus', + 'GUICtrlButton_SetImage', 'GUICtrlButton_SetImageList', + 'GUICtrlButton_SetNote', 'GUICtrlButton_SetShield', + 'GUICtrlButton_SetSize', 'GUICtrlButton_SetSplitInfo', + 'GUICtrlButton_SetState', 'GUICtrlButton_SetStyle', + 'GUICtrlButton_SetText', 'GUICtrlButton_SetTextMargin', + 'GUICtrlButton_Show', 'GUICtrlComboBoxEx_AddDir', + 'GUICtrlComboBoxEx_AddString', 'GUICtrlComboBoxEx_BeginUpdate', + 'GUICtrlComboBoxEx_Create', 'GUICtrlComboBoxEx_CreateSolidBitMap', + 'GUICtrlComboBoxEx_DeleteString', 'GUICtrlComboBoxEx_Destroy', + 'GUICtrlComboBoxEx_EndUpdate', 'GUICtrlComboBoxEx_FindStringExact', + 'GUICtrlComboBoxEx_GetComboBoxInfo', + 'GUICtrlComboBoxEx_GetComboControl', 'GUICtrlComboBoxEx_GetCount', + 'GUICtrlComboBoxEx_GetCurSel', + 'GUICtrlComboBoxEx_GetDroppedControlRect', + 'GUICtrlComboBoxEx_GetDroppedControlRectEx', + 'GUICtrlComboBoxEx_GetDroppedState', + 'GUICtrlComboBoxEx_GetDroppedWidth', + 'GUICtrlComboBoxEx_GetEditControl', 'GUICtrlComboBoxEx_GetEditSel', + 'GUICtrlComboBoxEx_GetEditText', + 'GUICtrlComboBoxEx_GetExtendedStyle', + 'GUICtrlComboBoxEx_GetExtendedUI', 'GUICtrlComboBoxEx_GetImageList', + 'GUICtrlComboBoxEx_GetItem', 'GUICtrlComboBoxEx_GetItemEx', + 'GUICtrlComboBoxEx_GetItemHeight', 'GUICtrlComboBoxEx_GetItemImage', + 'GUICtrlComboBoxEx_GetItemIndent', + 'GUICtrlComboBoxEx_GetItemOverlayImage', + 'GUICtrlComboBoxEx_GetItemParam', + 'GUICtrlComboBoxEx_GetItemSelectedImage', + 'GUICtrlComboBoxEx_GetItemText', 'GUICtrlComboBoxEx_GetItemTextLen', + 'GUICtrlComboBoxEx_GetList', 'GUICtrlComboBoxEx_GetListArray', + 'GUICtrlComboBoxEx_GetLocale', 'GUICtrlComboBoxEx_GetLocaleCountry', + 'GUICtrlComboBoxEx_GetLocaleLang', + 'GUICtrlComboBoxEx_GetLocalePrimLang', + 'GUICtrlComboBoxEx_GetLocaleSubLang', + 'GUICtrlComboBoxEx_GetMinVisible', 'GUICtrlComboBoxEx_GetTopIndex', + 'GUICtrlComboBoxEx_GetUnicode', 'GUICtrlComboBoxEx_InitStorage', + 'GUICtrlComboBoxEx_InsertString', 'GUICtrlComboBoxEx_LimitText', + 'GUICtrlComboBoxEx_ReplaceEditSel', 'GUICtrlComboBoxEx_ResetContent', + 'GUICtrlComboBoxEx_SetCurSel', 'GUICtrlComboBoxEx_SetDroppedWidth', + 'GUICtrlComboBoxEx_SetEditSel', 'GUICtrlComboBoxEx_SetEditText', + 'GUICtrlComboBoxEx_SetExtendedStyle', + 'GUICtrlComboBoxEx_SetExtendedUI', 'GUICtrlComboBoxEx_SetImageList', + 'GUICtrlComboBoxEx_SetItem', 'GUICtrlComboBoxEx_SetItemEx', + 'GUICtrlComboBoxEx_SetItemHeight', 'GUICtrlComboBoxEx_SetItemImage', + 'GUICtrlComboBoxEx_SetItemIndent', + 'GUICtrlComboBoxEx_SetItemOverlayImage', + 'GUICtrlComboBoxEx_SetItemParam', + 'GUICtrlComboBoxEx_SetItemSelectedImage', + 'GUICtrlComboBoxEx_SetMinVisible', 'GUICtrlComboBoxEx_SetTopIndex', + 'GUICtrlComboBoxEx_SetUnicode', 'GUICtrlComboBoxEx_ShowDropDown', + 'GUICtrlComboBox_AddDir', 'GUICtrlComboBox_AddString', + 'GUICtrlComboBox_AutoComplete', 'GUICtrlComboBox_BeginUpdate', + 'GUICtrlComboBox_Create', 'GUICtrlComboBox_DeleteString', + 'GUICtrlComboBox_Destroy', 'GUICtrlComboBox_EndUpdate', + 'GUICtrlComboBox_FindString', 'GUICtrlComboBox_FindStringExact', + 'GUICtrlComboBox_GetComboBoxInfo', 'GUICtrlComboBox_GetCount', + 'GUICtrlComboBox_GetCueBanner', 'GUICtrlComboBox_GetCurSel', + 'GUICtrlComboBox_GetDroppedControlRect', + 'GUICtrlComboBox_GetDroppedControlRectEx', + 'GUICtrlComboBox_GetDroppedState', 'GUICtrlComboBox_GetDroppedWidth', + 'GUICtrlComboBox_GetEditSel', 'GUICtrlComboBox_GetEditText', + 'GUICtrlComboBox_GetExtendedUI', + 'GUICtrlComboBox_GetHorizontalExtent', + 'GUICtrlComboBox_GetItemHeight', 'GUICtrlComboBox_GetLBText', + 'GUICtrlComboBox_GetLBTextLen', 'GUICtrlComboBox_GetList', + 'GUICtrlComboBox_GetListArray', 'GUICtrlComboBox_GetLocale', + 'GUICtrlComboBox_GetLocaleCountry', 'GUICtrlComboBox_GetLocaleLang', + 'GUICtrlComboBox_GetLocalePrimLang', + 'GUICtrlComboBox_GetLocaleSubLang', 'GUICtrlComboBox_GetMinVisible', + 'GUICtrlComboBox_GetTopIndex', 'GUICtrlComboBox_InitStorage', + 'GUICtrlComboBox_InsertString', 'GUICtrlComboBox_LimitText', + 'GUICtrlComboBox_ReplaceEditSel', 'GUICtrlComboBox_ResetContent', + 'GUICtrlComboBox_SelectString', 'GUICtrlComboBox_SetCueBanner', + 'GUICtrlComboBox_SetCurSel', 'GUICtrlComboBox_SetDroppedWidth', + 'GUICtrlComboBox_SetEditSel', 'GUICtrlComboBox_SetEditText', + 'GUICtrlComboBox_SetExtendedUI', + 'GUICtrlComboBox_SetHorizontalExtent', + 'GUICtrlComboBox_SetItemHeight', 'GUICtrlComboBox_SetMinVisible', + 'GUICtrlComboBox_SetTopIndex', 'GUICtrlComboBox_ShowDropDown', + 'GUICtrlDTP_Create', 'GUICtrlDTP_Destroy', 'GUICtrlDTP_GetMCColor', + 'GUICtrlDTP_GetMCFont', 'GUICtrlDTP_GetMonthCal', + 'GUICtrlDTP_GetRange', 'GUICtrlDTP_GetRangeEx', + 'GUICtrlDTP_GetSystemTime', 'GUICtrlDTP_GetSystemTimeEx', + 'GUICtrlDTP_SetFormat', 'GUICtrlDTP_SetMCColor', + 'GUICtrlDTP_SetMCFont', 'GUICtrlDTP_SetRange', + 'GUICtrlDTP_SetRangeEx', 'GUICtrlDTP_SetSystemTime', + 'GUICtrlDTP_SetSystemTimeEx', 'GUICtrlEdit_AppendText', + 'GUICtrlEdit_BeginUpdate', 'GUICtrlEdit_CanUndo', + 'GUICtrlEdit_CharFromPos', 'GUICtrlEdit_Create', + 'GUICtrlEdit_Destroy', 'GUICtrlEdit_EmptyUndoBuffer', + 'GUICtrlEdit_EndUpdate', 'GUICtrlEdit_Find', 'GUICtrlEdit_FmtLines', + 'GUICtrlEdit_GetCueBanner', 'GUICtrlEdit_GetFirstVisibleLine', + 'GUICtrlEdit_GetLimitText', 'GUICtrlEdit_GetLine', + 'GUICtrlEdit_GetLineCount', 'GUICtrlEdit_GetMargins', + 'GUICtrlEdit_GetModify', 'GUICtrlEdit_GetPasswordChar', + 'GUICtrlEdit_GetRECT', 'GUICtrlEdit_GetRECTEx', 'GUICtrlEdit_GetSel', + 'GUICtrlEdit_GetText', 'GUICtrlEdit_GetTextLen', + 'GUICtrlEdit_HideBalloonTip', 'GUICtrlEdit_InsertText', + 'GUICtrlEdit_LineFromChar', 'GUICtrlEdit_LineIndex', + 'GUICtrlEdit_LineLength', 'GUICtrlEdit_LineScroll', + 'GUICtrlEdit_PosFromChar', 'GUICtrlEdit_ReplaceSel', + 'GUICtrlEdit_Scroll', 'GUICtrlEdit_SetCueBanner', + 'GUICtrlEdit_SetLimitText', 'GUICtrlEdit_SetMargins', + 'GUICtrlEdit_SetModify', 'GUICtrlEdit_SetPasswordChar', + 'GUICtrlEdit_SetReadOnly', 'GUICtrlEdit_SetRECT', + 'GUICtrlEdit_SetRECTEx', 'GUICtrlEdit_SetRECTNP', + 'GUICtrlEdit_SetRectNPEx', 'GUICtrlEdit_SetSel', + 'GUICtrlEdit_SetTabStops', 'GUICtrlEdit_SetText', + 'GUICtrlEdit_ShowBalloonTip', 'GUICtrlEdit_Undo', + 'GUICtrlHeader_AddItem', 'GUICtrlHeader_ClearFilter', + 'GUICtrlHeader_ClearFilterAll', 'GUICtrlHeader_Create', + 'GUICtrlHeader_CreateDragImage', 'GUICtrlHeader_DeleteItem', + 'GUICtrlHeader_Destroy', 'GUICtrlHeader_EditFilter', + 'GUICtrlHeader_GetBitmapMargin', 'GUICtrlHeader_GetImageList', + 'GUICtrlHeader_GetItem', 'GUICtrlHeader_GetItemAlign', + 'GUICtrlHeader_GetItemBitmap', 'GUICtrlHeader_GetItemCount', + 'GUICtrlHeader_GetItemDisplay', 'GUICtrlHeader_GetItemFlags', + 'GUICtrlHeader_GetItemFormat', 'GUICtrlHeader_GetItemImage', + 'GUICtrlHeader_GetItemOrder', 'GUICtrlHeader_GetItemParam', + 'GUICtrlHeader_GetItemRect', 'GUICtrlHeader_GetItemRectEx', + 'GUICtrlHeader_GetItemText', 'GUICtrlHeader_GetItemWidth', + 'GUICtrlHeader_GetOrderArray', 'GUICtrlHeader_GetUnicodeFormat', + 'GUICtrlHeader_HitTest', 'GUICtrlHeader_InsertItem', + 'GUICtrlHeader_Layout', 'GUICtrlHeader_OrderToIndex', + 'GUICtrlHeader_SetBitmapMargin', + 'GUICtrlHeader_SetFilterChangeTimeout', + 'GUICtrlHeader_SetHotDivider', 'GUICtrlHeader_SetImageList', + 'GUICtrlHeader_SetItem', 'GUICtrlHeader_SetItemAlign', + 'GUICtrlHeader_SetItemBitmap', 'GUICtrlHeader_SetItemDisplay', + 'GUICtrlHeader_SetItemFlags', 'GUICtrlHeader_SetItemFormat', + 'GUICtrlHeader_SetItemImage', 'GUICtrlHeader_SetItemOrder', + 'GUICtrlHeader_SetItemParam', 'GUICtrlHeader_SetItemText', + 'GUICtrlHeader_SetItemWidth', 'GUICtrlHeader_SetOrderArray', + 'GUICtrlHeader_SetUnicodeFormat', 'GUICtrlIpAddress_ClearAddress', + 'GUICtrlIpAddress_Create', 'GUICtrlIpAddress_Destroy', + 'GUICtrlIpAddress_Get', 'GUICtrlIpAddress_GetArray', + 'GUICtrlIpAddress_GetEx', 'GUICtrlIpAddress_IsBlank', + 'GUICtrlIpAddress_Set', 'GUICtrlIpAddress_SetArray', + 'GUICtrlIpAddress_SetEx', 'GUICtrlIpAddress_SetFocus', + 'GUICtrlIpAddress_SetFont', 'GUICtrlIpAddress_SetRange', + 'GUICtrlIpAddress_ShowHide', 'GUICtrlListBox_AddFile', + 'GUICtrlListBox_AddString', 'GUICtrlListBox_BeginUpdate', + 'GUICtrlListBox_ClickItem', 'GUICtrlListBox_Create', + 'GUICtrlListBox_DeleteString', 'GUICtrlListBox_Destroy', + 'GUICtrlListBox_Dir', 'GUICtrlListBox_EndUpdate', + 'GUICtrlListBox_FindInText', 'GUICtrlListBox_FindString', + 'GUICtrlListBox_GetAnchorIndex', 'GUICtrlListBox_GetCaretIndex', + 'GUICtrlListBox_GetCount', 'GUICtrlListBox_GetCurSel', + 'GUICtrlListBox_GetHorizontalExtent', 'GUICtrlListBox_GetItemData', + 'GUICtrlListBox_GetItemHeight', 'GUICtrlListBox_GetItemRect', + 'GUICtrlListBox_GetItemRectEx', 'GUICtrlListBox_GetListBoxInfo', + 'GUICtrlListBox_GetLocale', 'GUICtrlListBox_GetLocaleCountry', + 'GUICtrlListBox_GetLocaleLang', 'GUICtrlListBox_GetLocalePrimLang', + 'GUICtrlListBox_GetLocaleSubLang', 'GUICtrlListBox_GetSel', + 'GUICtrlListBox_GetSelCount', 'GUICtrlListBox_GetSelItems', + 'GUICtrlListBox_GetSelItemsText', 'GUICtrlListBox_GetText', + 'GUICtrlListBox_GetTextLen', 'GUICtrlListBox_GetTopIndex', + 'GUICtrlListBox_InitStorage', 'GUICtrlListBox_InsertString', + 'GUICtrlListBox_ItemFromPoint', 'GUICtrlListBox_ReplaceString', + 'GUICtrlListBox_ResetContent', 'GUICtrlListBox_SelectString', + 'GUICtrlListBox_SelItemRange', 'GUICtrlListBox_SelItemRangeEx', + 'GUICtrlListBox_SetAnchorIndex', 'GUICtrlListBox_SetCaretIndex', + 'GUICtrlListBox_SetColumnWidth', 'GUICtrlListBox_SetCurSel', + 'GUICtrlListBox_SetHorizontalExtent', 'GUICtrlListBox_SetItemData', + 'GUICtrlListBox_SetItemHeight', 'GUICtrlListBox_SetLocale', + 'GUICtrlListBox_SetSel', 'GUICtrlListBox_SetTabStops', + 'GUICtrlListBox_SetTopIndex', 'GUICtrlListBox_Sort', + 'GUICtrlListBox_SwapString', 'GUICtrlListBox_UpdateHScroll', + 'GUICtrlListView_AddArray', 'GUICtrlListView_AddColumn', + 'GUICtrlListView_AddItem', 'GUICtrlListView_AddSubItem', + 'GUICtrlListView_ApproximateViewHeight', + 'GUICtrlListView_ApproximateViewRect', + 'GUICtrlListView_ApproximateViewWidth', 'GUICtrlListView_Arrange', + 'GUICtrlListView_BeginUpdate', 'GUICtrlListView_CancelEditLabel', + 'GUICtrlListView_ClickItem', 'GUICtrlListView_CopyItems', + 'GUICtrlListView_Create', 'GUICtrlListView_CreateDragImage', + 'GUICtrlListView_CreateSolidBitMap', + 'GUICtrlListView_DeleteAllItems', 'GUICtrlListView_DeleteColumn', + 'GUICtrlListView_DeleteItem', 'GUICtrlListView_DeleteItemsSelected', + 'GUICtrlListView_Destroy', 'GUICtrlListView_DrawDragImage', + 'GUICtrlListView_EditLabel', 'GUICtrlListView_EnableGroupView', + 'GUICtrlListView_EndUpdate', 'GUICtrlListView_EnsureVisible', + 'GUICtrlListView_FindInText', 'GUICtrlListView_FindItem', + 'GUICtrlListView_FindNearest', 'GUICtrlListView_FindParam', + 'GUICtrlListView_FindText', 'GUICtrlListView_GetBkColor', + 'GUICtrlListView_GetBkImage', 'GUICtrlListView_GetCallbackMask', + 'GUICtrlListView_GetColumn', 'GUICtrlListView_GetColumnCount', + 'GUICtrlListView_GetColumnOrder', + 'GUICtrlListView_GetColumnOrderArray', + 'GUICtrlListView_GetColumnWidth', 'GUICtrlListView_GetCounterPage', + 'GUICtrlListView_GetEditControl', + 'GUICtrlListView_GetExtendedListViewStyle', + 'GUICtrlListView_GetFocusedGroup', 'GUICtrlListView_GetGroupCount', + 'GUICtrlListView_GetGroupInfo', + 'GUICtrlListView_GetGroupInfoByIndex', + 'GUICtrlListView_GetGroupRect', + 'GUICtrlListView_GetGroupViewEnabled', 'GUICtrlListView_GetHeader', + 'GUICtrlListView_GetHotCursor', 'GUICtrlListView_GetHotItem', + 'GUICtrlListView_GetHoverTime', 'GUICtrlListView_GetImageList', + 'GUICtrlListView_GetISearchString', 'GUICtrlListView_GetItem', + 'GUICtrlListView_GetItemChecked', 'GUICtrlListView_GetItemCount', + 'GUICtrlListView_GetItemCut', 'GUICtrlListView_GetItemDropHilited', + 'GUICtrlListView_GetItemEx', 'GUICtrlListView_GetItemFocused', + 'GUICtrlListView_GetItemGroupID', 'GUICtrlListView_GetItemImage', + 'GUICtrlListView_GetItemIndent', 'GUICtrlListView_GetItemParam', + 'GUICtrlListView_GetItemPosition', + 'GUICtrlListView_GetItemPositionX', + 'GUICtrlListView_GetItemPositionY', 'GUICtrlListView_GetItemRect', + 'GUICtrlListView_GetItemRectEx', 'GUICtrlListView_GetItemSelected', + 'GUICtrlListView_GetItemSpacing', 'GUICtrlListView_GetItemSpacingX', + 'GUICtrlListView_GetItemSpacingY', 'GUICtrlListView_GetItemState', + 'GUICtrlListView_GetItemStateImage', 'GUICtrlListView_GetItemText', + 'GUICtrlListView_GetItemTextArray', + 'GUICtrlListView_GetItemTextString', 'GUICtrlListView_GetNextItem', + 'GUICtrlListView_GetNumberOfWorkAreas', 'GUICtrlListView_GetOrigin', + 'GUICtrlListView_GetOriginX', 'GUICtrlListView_GetOriginY', + 'GUICtrlListView_GetOutlineColor', + 'GUICtrlListView_GetSelectedColumn', + 'GUICtrlListView_GetSelectedCount', + 'GUICtrlListView_GetSelectedIndices', + 'GUICtrlListView_GetSelectionMark', 'GUICtrlListView_GetStringWidth', + 'GUICtrlListView_GetSubItemRect', 'GUICtrlListView_GetTextBkColor', + 'GUICtrlListView_GetTextColor', 'GUICtrlListView_GetToolTips', + 'GUICtrlListView_GetTopIndex', 'GUICtrlListView_GetUnicodeFormat', + 'GUICtrlListView_GetView', 'GUICtrlListView_GetViewDetails', + 'GUICtrlListView_GetViewLarge', 'GUICtrlListView_GetViewList', + 'GUICtrlListView_GetViewRect', 'GUICtrlListView_GetViewSmall', + 'GUICtrlListView_GetViewTile', 'GUICtrlListView_HideColumn', + 'GUICtrlListView_HitTest', 'GUICtrlListView_InsertColumn', + 'GUICtrlListView_InsertGroup', 'GUICtrlListView_InsertItem', + 'GUICtrlListView_JustifyColumn', 'GUICtrlListView_MapIDToIndex', + 'GUICtrlListView_MapIndexToID', 'GUICtrlListView_RedrawItems', + 'GUICtrlListView_RegisterSortCallBack', + 'GUICtrlListView_RemoveAllGroups', 'GUICtrlListView_RemoveGroup', + 'GUICtrlListView_Scroll', 'GUICtrlListView_SetBkColor', + 'GUICtrlListView_SetBkImage', 'GUICtrlListView_SetCallBackMask', + 'GUICtrlListView_SetColumn', 'GUICtrlListView_SetColumnOrder', + 'GUICtrlListView_SetColumnOrderArray', + 'GUICtrlListView_SetColumnWidth', + 'GUICtrlListView_SetExtendedListViewStyle', + 'GUICtrlListView_SetGroupInfo', 'GUICtrlListView_SetHotItem', + 'GUICtrlListView_SetHoverTime', 'GUICtrlListView_SetIconSpacing', + 'GUICtrlListView_SetImageList', 'GUICtrlListView_SetItem', + 'GUICtrlListView_SetItemChecked', 'GUICtrlListView_SetItemCount', + 'GUICtrlListView_SetItemCut', 'GUICtrlListView_SetItemDropHilited', + 'GUICtrlListView_SetItemEx', 'GUICtrlListView_SetItemFocused', + 'GUICtrlListView_SetItemGroupID', 'GUICtrlListView_SetItemImage', + 'GUICtrlListView_SetItemIndent', 'GUICtrlListView_SetItemParam', + 'GUICtrlListView_SetItemPosition', + 'GUICtrlListView_SetItemPosition32', + 'GUICtrlListView_SetItemSelected', 'GUICtrlListView_SetItemState', + 'GUICtrlListView_SetItemStateImage', 'GUICtrlListView_SetItemText', + 'GUICtrlListView_SetOutlineColor', + 'GUICtrlListView_SetSelectedColumn', + 'GUICtrlListView_SetSelectionMark', 'GUICtrlListView_SetTextBkColor', + 'GUICtrlListView_SetTextColor', 'GUICtrlListView_SetToolTips', + 'GUICtrlListView_SetUnicodeFormat', 'GUICtrlListView_SetView', + 'GUICtrlListView_SetWorkAreas', 'GUICtrlListView_SimpleSort', + 'GUICtrlListView_SortItems', 'GUICtrlListView_SubItemHitTest', + 'GUICtrlListView_UnRegisterSortCallBack', 'GUICtrlMenu_AddMenuItem', + 'GUICtrlMenu_AppendMenu', 'GUICtrlMenu_CalculatePopupWindowPosition', + 'GUICtrlMenu_CheckMenuItem', 'GUICtrlMenu_CheckRadioItem', + 'GUICtrlMenu_CreateMenu', 'GUICtrlMenu_CreatePopup', + 'GUICtrlMenu_DeleteMenu', 'GUICtrlMenu_DestroyMenu', + 'GUICtrlMenu_DrawMenuBar', 'GUICtrlMenu_EnableMenuItem', + 'GUICtrlMenu_FindItem', 'GUICtrlMenu_FindParent', + 'GUICtrlMenu_GetItemBmp', 'GUICtrlMenu_GetItemBmpChecked', + 'GUICtrlMenu_GetItemBmpUnchecked', 'GUICtrlMenu_GetItemChecked', + 'GUICtrlMenu_GetItemCount', 'GUICtrlMenu_GetItemData', + 'GUICtrlMenu_GetItemDefault', 'GUICtrlMenu_GetItemDisabled', + 'GUICtrlMenu_GetItemEnabled', 'GUICtrlMenu_GetItemGrayed', + 'GUICtrlMenu_GetItemHighlighted', 'GUICtrlMenu_GetItemID', + 'GUICtrlMenu_GetItemInfo', 'GUICtrlMenu_GetItemRect', + 'GUICtrlMenu_GetItemRectEx', 'GUICtrlMenu_GetItemState', + 'GUICtrlMenu_GetItemStateEx', 'GUICtrlMenu_GetItemSubMenu', + 'GUICtrlMenu_GetItemText', 'GUICtrlMenu_GetItemType', + 'GUICtrlMenu_GetMenu', 'GUICtrlMenu_GetMenuBackground', + 'GUICtrlMenu_GetMenuBarInfo', 'GUICtrlMenu_GetMenuContextHelpID', + 'GUICtrlMenu_GetMenuData', 'GUICtrlMenu_GetMenuDefaultItem', + 'GUICtrlMenu_GetMenuHeight', 'GUICtrlMenu_GetMenuInfo', + 'GUICtrlMenu_GetMenuStyle', 'GUICtrlMenu_GetSystemMenu', + 'GUICtrlMenu_InsertMenuItem', 'GUICtrlMenu_InsertMenuItemEx', + 'GUICtrlMenu_IsMenu', 'GUICtrlMenu_LoadMenu', + 'GUICtrlMenu_MapAccelerator', 'GUICtrlMenu_MenuItemFromPoint', + 'GUICtrlMenu_RemoveMenu', 'GUICtrlMenu_SetItemBitmaps', + 'GUICtrlMenu_SetItemBmp', 'GUICtrlMenu_SetItemBmpChecked', + 'GUICtrlMenu_SetItemBmpUnchecked', 'GUICtrlMenu_SetItemChecked', + 'GUICtrlMenu_SetItemData', 'GUICtrlMenu_SetItemDefault', + 'GUICtrlMenu_SetItemDisabled', 'GUICtrlMenu_SetItemEnabled', + 'GUICtrlMenu_SetItemGrayed', 'GUICtrlMenu_SetItemHighlighted', + 'GUICtrlMenu_SetItemID', 'GUICtrlMenu_SetItemInfo', + 'GUICtrlMenu_SetItemState', 'GUICtrlMenu_SetItemSubMenu', + 'GUICtrlMenu_SetItemText', 'GUICtrlMenu_SetItemType', + 'GUICtrlMenu_SetMenu', 'GUICtrlMenu_SetMenuBackground', + 'GUICtrlMenu_SetMenuContextHelpID', 'GUICtrlMenu_SetMenuData', + 'GUICtrlMenu_SetMenuDefaultItem', 'GUICtrlMenu_SetMenuHeight', + 'GUICtrlMenu_SetMenuInfo', 'GUICtrlMenu_SetMenuStyle', + 'GUICtrlMenu_TrackPopupMenu', 'GUICtrlMonthCal_Create', + 'GUICtrlMonthCal_Destroy', 'GUICtrlMonthCal_GetCalendarBorder', + 'GUICtrlMonthCal_GetCalendarCount', 'GUICtrlMonthCal_GetColor', + 'GUICtrlMonthCal_GetColorArray', 'GUICtrlMonthCal_GetCurSel', + 'GUICtrlMonthCal_GetCurSelStr', 'GUICtrlMonthCal_GetFirstDOW', + 'GUICtrlMonthCal_GetFirstDOWStr', 'GUICtrlMonthCal_GetMaxSelCount', + 'GUICtrlMonthCal_GetMaxTodayWidth', + 'GUICtrlMonthCal_GetMinReqHeight', 'GUICtrlMonthCal_GetMinReqRect', + 'GUICtrlMonthCal_GetMinReqRectArray', + 'GUICtrlMonthCal_GetMinReqWidth', 'GUICtrlMonthCal_GetMonthDelta', + 'GUICtrlMonthCal_GetMonthRange', 'GUICtrlMonthCal_GetMonthRangeMax', + 'GUICtrlMonthCal_GetMonthRangeMaxStr', + 'GUICtrlMonthCal_GetMonthRangeMin', + 'GUICtrlMonthCal_GetMonthRangeMinStr', + 'GUICtrlMonthCal_GetMonthRangeSpan', 'GUICtrlMonthCal_GetRange', + 'GUICtrlMonthCal_GetRangeMax', 'GUICtrlMonthCal_GetRangeMaxStr', + 'GUICtrlMonthCal_GetRangeMin', 'GUICtrlMonthCal_GetRangeMinStr', + 'GUICtrlMonthCal_GetSelRange', 'GUICtrlMonthCal_GetSelRangeMax', + 'GUICtrlMonthCal_GetSelRangeMaxStr', + 'GUICtrlMonthCal_GetSelRangeMin', + 'GUICtrlMonthCal_GetSelRangeMinStr', 'GUICtrlMonthCal_GetToday', + 'GUICtrlMonthCal_GetTodayStr', 'GUICtrlMonthCal_GetUnicodeFormat', + 'GUICtrlMonthCal_HitTest', 'GUICtrlMonthCal_SetCalendarBorder', + 'GUICtrlMonthCal_SetColor', 'GUICtrlMonthCal_SetCurSel', + 'GUICtrlMonthCal_SetDayState', 'GUICtrlMonthCal_SetFirstDOW', + 'GUICtrlMonthCal_SetMaxSelCount', 'GUICtrlMonthCal_SetMonthDelta', + 'GUICtrlMonthCal_SetRange', 'GUICtrlMonthCal_SetSelRange', + 'GUICtrlMonthCal_SetToday', 'GUICtrlMonthCal_SetUnicodeFormat', + 'GUICtrlRebar_AddBand', 'GUICtrlRebar_AddToolBarBand', + 'GUICtrlRebar_BeginDrag', 'GUICtrlRebar_Create', + 'GUICtrlRebar_DeleteBand', 'GUICtrlRebar_Destroy', + 'GUICtrlRebar_DragMove', 'GUICtrlRebar_EndDrag', + 'GUICtrlRebar_GetBandBackColor', 'GUICtrlRebar_GetBandBorders', + 'GUICtrlRebar_GetBandBordersEx', 'GUICtrlRebar_GetBandChildHandle', + 'GUICtrlRebar_GetBandChildSize', 'GUICtrlRebar_GetBandCount', + 'GUICtrlRebar_GetBandForeColor', 'GUICtrlRebar_GetBandHeaderSize', + 'GUICtrlRebar_GetBandID', 'GUICtrlRebar_GetBandIdealSize', + 'GUICtrlRebar_GetBandLength', 'GUICtrlRebar_GetBandLParam', + 'GUICtrlRebar_GetBandMargins', 'GUICtrlRebar_GetBandMarginsEx', + 'GUICtrlRebar_GetBandRect', 'GUICtrlRebar_GetBandRectEx', + 'GUICtrlRebar_GetBandStyle', 'GUICtrlRebar_GetBandStyleBreak', + 'GUICtrlRebar_GetBandStyleChildEdge', + 'GUICtrlRebar_GetBandStyleFixedBMP', + 'GUICtrlRebar_GetBandStyleFixedSize', + 'GUICtrlRebar_GetBandStyleGripperAlways', + 'GUICtrlRebar_GetBandStyleHidden', + 'GUICtrlRebar_GetBandStyleHideTitle', + 'GUICtrlRebar_GetBandStyleNoGripper', + 'GUICtrlRebar_GetBandStyleTopAlign', + 'GUICtrlRebar_GetBandStyleUseChevron', + 'GUICtrlRebar_GetBandStyleVariableHeight', + 'GUICtrlRebar_GetBandText', 'GUICtrlRebar_GetBarHeight', + 'GUICtrlRebar_GetBarInfo', 'GUICtrlRebar_GetBKColor', + 'GUICtrlRebar_GetColorScheme', 'GUICtrlRebar_GetRowCount', + 'GUICtrlRebar_GetRowHeight', 'GUICtrlRebar_GetTextColor', + 'GUICtrlRebar_GetToolTips', 'GUICtrlRebar_GetUnicodeFormat', + 'GUICtrlRebar_HitTest', 'GUICtrlRebar_IDToIndex', + 'GUICtrlRebar_MaximizeBand', 'GUICtrlRebar_MinimizeBand', + 'GUICtrlRebar_MoveBand', 'GUICtrlRebar_SetBandBackColor', + 'GUICtrlRebar_SetBandForeColor', 'GUICtrlRebar_SetBandHeaderSize', + 'GUICtrlRebar_SetBandID', 'GUICtrlRebar_SetBandIdealSize', + 'GUICtrlRebar_SetBandLength', 'GUICtrlRebar_SetBandLParam', + 'GUICtrlRebar_SetBandStyle', 'GUICtrlRebar_SetBandStyleBreak', + 'GUICtrlRebar_SetBandStyleChildEdge', + 'GUICtrlRebar_SetBandStyleFixedBMP', + 'GUICtrlRebar_SetBandStyleFixedSize', + 'GUICtrlRebar_SetBandStyleGripperAlways', + 'GUICtrlRebar_SetBandStyleHidden', + 'GUICtrlRebar_SetBandStyleHideTitle', + 'GUICtrlRebar_SetBandStyleNoGripper', + 'GUICtrlRebar_SetBandStyleTopAlign', + 'GUICtrlRebar_SetBandStyleUseChevron', + 'GUICtrlRebar_SetBandStyleVariableHeight', + 'GUICtrlRebar_SetBandText', 'GUICtrlRebar_SetBarInfo', + 'GUICtrlRebar_SetBKColor', 'GUICtrlRebar_SetColorScheme', + 'GUICtrlRebar_SetTextColor', 'GUICtrlRebar_SetToolTips', + 'GUICtrlRebar_SetUnicodeFormat', 'GUICtrlRebar_ShowBand', + 'GUICtrlRichEdit_AppendText', 'GUICtrlRichEdit_AutoDetectURL', + 'GUICtrlRichEdit_CanPaste', 'GUICtrlRichEdit_CanPasteSpecial', + 'GUICtrlRichEdit_CanRedo', 'GUICtrlRichEdit_CanUndo', + 'GUICtrlRichEdit_ChangeFontSize', 'GUICtrlRichEdit_Copy', + 'GUICtrlRichEdit_Create', 'GUICtrlRichEdit_Cut', + 'GUICtrlRichEdit_Deselect', 'GUICtrlRichEdit_Destroy', + 'GUICtrlRichEdit_EmptyUndoBuffer', 'GUICtrlRichEdit_FindText', + 'GUICtrlRichEdit_FindTextInRange', 'GUICtrlRichEdit_GetBkColor', + 'GUICtrlRichEdit_GetCharAttributes', + 'GUICtrlRichEdit_GetCharBkColor', 'GUICtrlRichEdit_GetCharColor', + 'GUICtrlRichEdit_GetCharPosFromXY', + 'GUICtrlRichEdit_GetCharPosOfNextWord', + 'GUICtrlRichEdit_GetCharPosOfPreviousWord', + 'GUICtrlRichEdit_GetCharWordBreakInfo', + 'GUICtrlRichEdit_GetFirstCharPosOnLine', 'GUICtrlRichEdit_GetFont', + 'GUICtrlRichEdit_GetLineCount', 'GUICtrlRichEdit_GetLineLength', + 'GUICtrlRichEdit_GetLineNumberFromCharPos', + 'GUICtrlRichEdit_GetNextRedo', 'GUICtrlRichEdit_GetNextUndo', + 'GUICtrlRichEdit_GetNumberOfFirstVisibleLine', + 'GUICtrlRichEdit_GetParaAlignment', + 'GUICtrlRichEdit_GetParaAttributes', 'GUICtrlRichEdit_GetParaBorder', + 'GUICtrlRichEdit_GetParaIndents', 'GUICtrlRichEdit_GetParaNumbering', + 'GUICtrlRichEdit_GetParaShading', 'GUICtrlRichEdit_GetParaSpacing', + 'GUICtrlRichEdit_GetParaTabStops', 'GUICtrlRichEdit_GetPasswordChar', + 'GUICtrlRichEdit_GetRECT', 'GUICtrlRichEdit_GetScrollPos', + 'GUICtrlRichEdit_GetSel', 'GUICtrlRichEdit_GetSelAA', + 'GUICtrlRichEdit_GetSelText', 'GUICtrlRichEdit_GetSpaceUnit', + 'GUICtrlRichEdit_GetText', 'GUICtrlRichEdit_GetTextInLine', + 'GUICtrlRichEdit_GetTextInRange', 'GUICtrlRichEdit_GetTextLength', + 'GUICtrlRichEdit_GetVersion', 'GUICtrlRichEdit_GetXYFromCharPos', + 'GUICtrlRichEdit_GetZoom', 'GUICtrlRichEdit_GotoCharPos', + 'GUICtrlRichEdit_HideSelection', 'GUICtrlRichEdit_InsertText', + 'GUICtrlRichEdit_IsModified', 'GUICtrlRichEdit_IsTextSelected', + 'GUICtrlRichEdit_Paste', 'GUICtrlRichEdit_PasteSpecial', + 'GUICtrlRichEdit_PauseRedraw', 'GUICtrlRichEdit_Redo', + 'GUICtrlRichEdit_ReplaceText', 'GUICtrlRichEdit_ResumeRedraw', + 'GUICtrlRichEdit_ScrollLineOrPage', 'GUICtrlRichEdit_ScrollLines', + 'GUICtrlRichEdit_ScrollToCaret', 'GUICtrlRichEdit_SetBkColor', + 'GUICtrlRichEdit_SetCharAttributes', + 'GUICtrlRichEdit_SetCharBkColor', 'GUICtrlRichEdit_SetCharColor', + 'GUICtrlRichEdit_SetEventMask', 'GUICtrlRichEdit_SetFont', + 'GUICtrlRichEdit_SetLimitOnText', 'GUICtrlRichEdit_SetModified', + 'GUICtrlRichEdit_SetParaAlignment', + 'GUICtrlRichEdit_SetParaAttributes', 'GUICtrlRichEdit_SetParaBorder', + 'GUICtrlRichEdit_SetParaIndents', 'GUICtrlRichEdit_SetParaNumbering', + 'GUICtrlRichEdit_SetParaShading', 'GUICtrlRichEdit_SetParaSpacing', + 'GUICtrlRichEdit_SetParaTabStops', 'GUICtrlRichEdit_SetPasswordChar', + 'GUICtrlRichEdit_SetReadOnly', 'GUICtrlRichEdit_SetRECT', + 'GUICtrlRichEdit_SetScrollPos', 'GUICtrlRichEdit_SetSel', + 'GUICtrlRichEdit_SetSpaceUnit', 'GUICtrlRichEdit_SetTabStops', + 'GUICtrlRichEdit_SetText', 'GUICtrlRichEdit_SetUndoLimit', + 'GUICtrlRichEdit_SetZoom', 'GUICtrlRichEdit_StreamFromFile', + 'GUICtrlRichEdit_StreamFromVar', 'GUICtrlRichEdit_StreamToFile', + 'GUICtrlRichEdit_StreamToVar', 'GUICtrlRichEdit_Undo', + 'GUICtrlSlider_ClearSel', 'GUICtrlSlider_ClearTics', + 'GUICtrlSlider_Create', 'GUICtrlSlider_Destroy', + 'GUICtrlSlider_GetBuddy', 'GUICtrlSlider_GetChannelRect', + 'GUICtrlSlider_GetChannelRectEx', 'GUICtrlSlider_GetLineSize', + 'GUICtrlSlider_GetLogicalTics', 'GUICtrlSlider_GetNumTics', + 'GUICtrlSlider_GetPageSize', 'GUICtrlSlider_GetPos', + 'GUICtrlSlider_GetRange', 'GUICtrlSlider_GetRangeMax', + 'GUICtrlSlider_GetRangeMin', 'GUICtrlSlider_GetSel', + 'GUICtrlSlider_GetSelEnd', 'GUICtrlSlider_GetSelStart', + 'GUICtrlSlider_GetThumbLength', 'GUICtrlSlider_GetThumbRect', + 'GUICtrlSlider_GetThumbRectEx', 'GUICtrlSlider_GetTic', + 'GUICtrlSlider_GetTicPos', 'GUICtrlSlider_GetToolTips', + 'GUICtrlSlider_GetUnicodeFormat', 'GUICtrlSlider_SetBuddy', + 'GUICtrlSlider_SetLineSize', 'GUICtrlSlider_SetPageSize', + 'GUICtrlSlider_SetPos', 'GUICtrlSlider_SetRange', + 'GUICtrlSlider_SetRangeMax', 'GUICtrlSlider_SetRangeMin', + 'GUICtrlSlider_SetSel', 'GUICtrlSlider_SetSelEnd', + 'GUICtrlSlider_SetSelStart', 'GUICtrlSlider_SetThumbLength', + 'GUICtrlSlider_SetTic', 'GUICtrlSlider_SetTicFreq', + 'GUICtrlSlider_SetTipSide', 'GUICtrlSlider_SetToolTips', + 'GUICtrlSlider_SetUnicodeFormat', 'GUICtrlStatusBar_Create', + 'GUICtrlStatusBar_Destroy', 'GUICtrlStatusBar_EmbedControl', + 'GUICtrlStatusBar_GetBorders', 'GUICtrlStatusBar_GetBordersHorz', + 'GUICtrlStatusBar_GetBordersRect', 'GUICtrlStatusBar_GetBordersVert', + 'GUICtrlStatusBar_GetCount', 'GUICtrlStatusBar_GetHeight', + 'GUICtrlStatusBar_GetIcon', 'GUICtrlStatusBar_GetParts', + 'GUICtrlStatusBar_GetRect', 'GUICtrlStatusBar_GetRectEx', + 'GUICtrlStatusBar_GetText', 'GUICtrlStatusBar_GetTextFlags', + 'GUICtrlStatusBar_GetTextLength', 'GUICtrlStatusBar_GetTextLengthEx', + 'GUICtrlStatusBar_GetTipText', 'GUICtrlStatusBar_GetUnicodeFormat', + 'GUICtrlStatusBar_GetWidth', 'GUICtrlStatusBar_IsSimple', + 'GUICtrlStatusBar_Resize', 'GUICtrlStatusBar_SetBkColor', + 'GUICtrlStatusBar_SetIcon', 'GUICtrlStatusBar_SetMinHeight', + 'GUICtrlStatusBar_SetParts', 'GUICtrlStatusBar_SetSimple', + 'GUICtrlStatusBar_SetText', 'GUICtrlStatusBar_SetTipText', + 'GUICtrlStatusBar_SetUnicodeFormat', 'GUICtrlStatusBar_ShowHide', + 'GUICtrlTab_ActivateTab', 'GUICtrlTab_ClickTab', 'GUICtrlTab_Create', + 'GUICtrlTab_DeleteAllItems', 'GUICtrlTab_DeleteItem', + 'GUICtrlTab_DeselectAll', 'GUICtrlTab_Destroy', 'GUICtrlTab_FindTab', + 'GUICtrlTab_GetCurFocus', 'GUICtrlTab_GetCurSel', + 'GUICtrlTab_GetDisplayRect', 'GUICtrlTab_GetDisplayRectEx', + 'GUICtrlTab_GetExtendedStyle', 'GUICtrlTab_GetImageList', + 'GUICtrlTab_GetItem', 'GUICtrlTab_GetItemCount', + 'GUICtrlTab_GetItemImage', 'GUICtrlTab_GetItemParam', + 'GUICtrlTab_GetItemRect', 'GUICtrlTab_GetItemRectEx', + 'GUICtrlTab_GetItemState', 'GUICtrlTab_GetItemText', + 'GUICtrlTab_GetRowCount', 'GUICtrlTab_GetToolTips', + 'GUICtrlTab_GetUnicodeFormat', 'GUICtrlTab_HighlightItem', + 'GUICtrlTab_HitTest', 'GUICtrlTab_InsertItem', + 'GUICtrlTab_RemoveImage', 'GUICtrlTab_SetCurFocus', + 'GUICtrlTab_SetCurSel', 'GUICtrlTab_SetExtendedStyle', + 'GUICtrlTab_SetImageList', 'GUICtrlTab_SetItem', + 'GUICtrlTab_SetItemImage', 'GUICtrlTab_SetItemParam', + 'GUICtrlTab_SetItemSize', 'GUICtrlTab_SetItemState', + 'GUICtrlTab_SetItemText', 'GUICtrlTab_SetMinTabWidth', + 'GUICtrlTab_SetPadding', 'GUICtrlTab_SetToolTips', + 'GUICtrlTab_SetUnicodeFormat', 'GUICtrlToolbar_AddBitmap', + 'GUICtrlToolbar_AddButton', 'GUICtrlToolbar_AddButtonSep', + 'GUICtrlToolbar_AddString', 'GUICtrlToolbar_ButtonCount', + 'GUICtrlToolbar_CheckButton', 'GUICtrlToolbar_ClickAccel', + 'GUICtrlToolbar_ClickButton', 'GUICtrlToolbar_ClickIndex', + 'GUICtrlToolbar_CommandToIndex', 'GUICtrlToolbar_Create', + 'GUICtrlToolbar_Customize', 'GUICtrlToolbar_DeleteButton', + 'GUICtrlToolbar_Destroy', 'GUICtrlToolbar_EnableButton', + 'GUICtrlToolbar_FindToolbar', 'GUICtrlToolbar_GetAnchorHighlight', + 'GUICtrlToolbar_GetBitmapFlags', 'GUICtrlToolbar_GetButtonBitmap', + 'GUICtrlToolbar_GetButtonInfo', 'GUICtrlToolbar_GetButtonInfoEx', + 'GUICtrlToolbar_GetButtonParam', 'GUICtrlToolbar_GetButtonRect', + 'GUICtrlToolbar_GetButtonRectEx', 'GUICtrlToolbar_GetButtonSize', + 'GUICtrlToolbar_GetButtonState', 'GUICtrlToolbar_GetButtonStyle', + 'GUICtrlToolbar_GetButtonText', 'GUICtrlToolbar_GetColorScheme', + 'GUICtrlToolbar_GetDisabledImageList', + 'GUICtrlToolbar_GetExtendedStyle', 'GUICtrlToolbar_GetHotImageList', + 'GUICtrlToolbar_GetHotItem', 'GUICtrlToolbar_GetImageList', + 'GUICtrlToolbar_GetInsertMark', 'GUICtrlToolbar_GetInsertMarkColor', + 'GUICtrlToolbar_GetMaxSize', 'GUICtrlToolbar_GetMetrics', + 'GUICtrlToolbar_GetPadding', 'GUICtrlToolbar_GetRows', + 'GUICtrlToolbar_GetString', 'GUICtrlToolbar_GetStyle', + 'GUICtrlToolbar_GetStyleAltDrag', + 'GUICtrlToolbar_GetStyleCustomErase', 'GUICtrlToolbar_GetStyleFlat', + 'GUICtrlToolbar_GetStyleList', 'GUICtrlToolbar_GetStyleRegisterDrop', + 'GUICtrlToolbar_GetStyleToolTips', + 'GUICtrlToolbar_GetStyleTransparent', + 'GUICtrlToolbar_GetStyleWrapable', 'GUICtrlToolbar_GetTextRows', + 'GUICtrlToolbar_GetToolTips', 'GUICtrlToolbar_GetUnicodeFormat', + 'GUICtrlToolbar_HideButton', 'GUICtrlToolbar_HighlightButton', + 'GUICtrlToolbar_HitTest', 'GUICtrlToolbar_IndexToCommand', + 'GUICtrlToolbar_InsertButton', 'GUICtrlToolbar_InsertMarkHitTest', + 'GUICtrlToolbar_IsButtonChecked', 'GUICtrlToolbar_IsButtonEnabled', + 'GUICtrlToolbar_IsButtonHidden', + 'GUICtrlToolbar_IsButtonHighlighted', + 'GUICtrlToolbar_IsButtonIndeterminate', + 'GUICtrlToolbar_IsButtonPressed', 'GUICtrlToolbar_LoadBitmap', + 'GUICtrlToolbar_LoadImages', 'GUICtrlToolbar_MapAccelerator', + 'GUICtrlToolbar_MoveButton', 'GUICtrlToolbar_PressButton', + 'GUICtrlToolbar_SetAnchorHighlight', 'GUICtrlToolbar_SetBitmapSize', + 'GUICtrlToolbar_SetButtonBitMap', 'GUICtrlToolbar_SetButtonInfo', + 'GUICtrlToolbar_SetButtonInfoEx', 'GUICtrlToolbar_SetButtonParam', + 'GUICtrlToolbar_SetButtonSize', 'GUICtrlToolbar_SetButtonState', + 'GUICtrlToolbar_SetButtonStyle', 'GUICtrlToolbar_SetButtonText', + 'GUICtrlToolbar_SetButtonWidth', 'GUICtrlToolbar_SetCmdID', + 'GUICtrlToolbar_SetColorScheme', + 'GUICtrlToolbar_SetDisabledImageList', + 'GUICtrlToolbar_SetDrawTextFlags', 'GUICtrlToolbar_SetExtendedStyle', + 'GUICtrlToolbar_SetHotImageList', 'GUICtrlToolbar_SetHotItem', + 'GUICtrlToolbar_SetImageList', 'GUICtrlToolbar_SetIndent', + 'GUICtrlToolbar_SetIndeterminate', 'GUICtrlToolbar_SetInsertMark', + 'GUICtrlToolbar_SetInsertMarkColor', 'GUICtrlToolbar_SetMaxTextRows', + 'GUICtrlToolbar_SetMetrics', 'GUICtrlToolbar_SetPadding', + 'GUICtrlToolbar_SetParent', 'GUICtrlToolbar_SetRows', + 'GUICtrlToolbar_SetStyle', 'GUICtrlToolbar_SetStyleAltDrag', + 'GUICtrlToolbar_SetStyleCustomErase', 'GUICtrlToolbar_SetStyleFlat', + 'GUICtrlToolbar_SetStyleList', 'GUICtrlToolbar_SetStyleRegisterDrop', + 'GUICtrlToolbar_SetStyleToolTips', + 'GUICtrlToolbar_SetStyleTransparent', + 'GUICtrlToolbar_SetStyleWrapable', 'GUICtrlToolbar_SetToolTips', + 'GUICtrlToolbar_SetUnicodeFormat', 'GUICtrlToolbar_SetWindowTheme', + 'GUICtrlTreeView_Add', 'GUICtrlTreeView_AddChild', + 'GUICtrlTreeView_AddChildFirst', 'GUICtrlTreeView_AddFirst', + 'GUICtrlTreeView_BeginUpdate', 'GUICtrlTreeView_ClickItem', + 'GUICtrlTreeView_Create', 'GUICtrlTreeView_CreateDragImage', + 'GUICtrlTreeView_CreateSolidBitMap', 'GUICtrlTreeView_Delete', + 'GUICtrlTreeView_DeleteAll', 'GUICtrlTreeView_DeleteChildren', + 'GUICtrlTreeView_Destroy', 'GUICtrlTreeView_DisplayRect', + 'GUICtrlTreeView_DisplayRectEx', 'GUICtrlTreeView_EditText', + 'GUICtrlTreeView_EndEdit', 'GUICtrlTreeView_EndUpdate', + 'GUICtrlTreeView_EnsureVisible', 'GUICtrlTreeView_Expand', + 'GUICtrlTreeView_ExpandedOnce', 'GUICtrlTreeView_FindItem', + 'GUICtrlTreeView_FindItemEx', 'GUICtrlTreeView_GetBkColor', + 'GUICtrlTreeView_GetBold', 'GUICtrlTreeView_GetChecked', + 'GUICtrlTreeView_GetChildCount', 'GUICtrlTreeView_GetChildren', + 'GUICtrlTreeView_GetCount', 'GUICtrlTreeView_GetCut', + 'GUICtrlTreeView_GetDropTarget', 'GUICtrlTreeView_GetEditControl', + 'GUICtrlTreeView_GetExpanded', 'GUICtrlTreeView_GetFirstChild', + 'GUICtrlTreeView_GetFirstItem', 'GUICtrlTreeView_GetFirstVisible', + 'GUICtrlTreeView_GetFocused', 'GUICtrlTreeView_GetHeight', + 'GUICtrlTreeView_GetImageIndex', + 'GUICtrlTreeView_GetImageListIconHandle', + 'GUICtrlTreeView_GetIndent', 'GUICtrlTreeView_GetInsertMarkColor', + 'GUICtrlTreeView_GetISearchString', 'GUICtrlTreeView_GetItemByIndex', + 'GUICtrlTreeView_GetItemHandle', 'GUICtrlTreeView_GetItemParam', + 'GUICtrlTreeView_GetLastChild', 'GUICtrlTreeView_GetLineColor', + 'GUICtrlTreeView_GetNext', 'GUICtrlTreeView_GetNextChild', + 'GUICtrlTreeView_GetNextSibling', 'GUICtrlTreeView_GetNextVisible', + 'GUICtrlTreeView_GetNormalImageList', + 'GUICtrlTreeView_GetParentHandle', 'GUICtrlTreeView_GetParentParam', + 'GUICtrlTreeView_GetPrev', 'GUICtrlTreeView_GetPrevChild', + 'GUICtrlTreeView_GetPrevSibling', 'GUICtrlTreeView_GetPrevVisible', + 'GUICtrlTreeView_GetScrollTime', 'GUICtrlTreeView_GetSelected', + 'GUICtrlTreeView_GetSelectedImageIndex', + 'GUICtrlTreeView_GetSelection', 'GUICtrlTreeView_GetSiblingCount', + 'GUICtrlTreeView_GetState', 'GUICtrlTreeView_GetStateImageIndex', + 'GUICtrlTreeView_GetStateImageList', 'GUICtrlTreeView_GetText', + 'GUICtrlTreeView_GetTextColor', 'GUICtrlTreeView_GetToolTips', + 'GUICtrlTreeView_GetTree', 'GUICtrlTreeView_GetUnicodeFormat', + 'GUICtrlTreeView_GetVisible', 'GUICtrlTreeView_GetVisibleCount', + 'GUICtrlTreeView_HitTest', 'GUICtrlTreeView_HitTestEx', + 'GUICtrlTreeView_HitTestItem', 'GUICtrlTreeView_Index', + 'GUICtrlTreeView_InsertItem', 'GUICtrlTreeView_IsFirstItem', + 'GUICtrlTreeView_IsParent', 'GUICtrlTreeView_Level', + 'GUICtrlTreeView_SelectItem', 'GUICtrlTreeView_SelectItemByIndex', + 'GUICtrlTreeView_SetBkColor', 'GUICtrlTreeView_SetBold', + 'GUICtrlTreeView_SetChecked', 'GUICtrlTreeView_SetCheckedByIndex', + 'GUICtrlTreeView_SetChildren', 'GUICtrlTreeView_SetCut', + 'GUICtrlTreeView_SetDropTarget', 'GUICtrlTreeView_SetFocused', + 'GUICtrlTreeView_SetHeight', 'GUICtrlTreeView_SetIcon', + 'GUICtrlTreeView_SetImageIndex', 'GUICtrlTreeView_SetIndent', + 'GUICtrlTreeView_SetInsertMark', + 'GUICtrlTreeView_SetInsertMarkColor', + 'GUICtrlTreeView_SetItemHeight', 'GUICtrlTreeView_SetItemParam', + 'GUICtrlTreeView_SetLineColor', 'GUICtrlTreeView_SetNormalImageList', + 'GUICtrlTreeView_SetScrollTime', 'GUICtrlTreeView_SetSelected', + 'GUICtrlTreeView_SetSelectedImageIndex', 'GUICtrlTreeView_SetState', + 'GUICtrlTreeView_SetStateImageIndex', + 'GUICtrlTreeView_SetStateImageList', 'GUICtrlTreeView_SetText', + 'GUICtrlTreeView_SetTextColor', 'GUICtrlTreeView_SetToolTips', + 'GUICtrlTreeView_SetUnicodeFormat', 'GUICtrlTreeView_Sort', + 'GUIImageList_Add', 'GUIImageList_AddBitmap', 'GUIImageList_AddIcon', + 'GUIImageList_AddMasked', 'GUIImageList_BeginDrag', + 'GUIImageList_Copy', 'GUIImageList_Create', 'GUIImageList_Destroy', + 'GUIImageList_DestroyIcon', 'GUIImageList_DragEnter', + 'GUIImageList_DragLeave', 'GUIImageList_DragMove', + 'GUIImageList_Draw', 'GUIImageList_DrawEx', 'GUIImageList_Duplicate', + 'GUIImageList_EndDrag', 'GUIImageList_GetBkColor', + 'GUIImageList_GetIcon', 'GUIImageList_GetIconHeight', + 'GUIImageList_GetIconSize', 'GUIImageList_GetIconSizeEx', + 'GUIImageList_GetIconWidth', 'GUIImageList_GetImageCount', + 'GUIImageList_GetImageInfoEx', 'GUIImageList_Remove', + 'GUIImageList_ReplaceIcon', 'GUIImageList_SetBkColor', + 'GUIImageList_SetIconSize', 'GUIImageList_SetImageCount', + 'GUIImageList_Swap', 'GUIScrollBars_EnableScrollBar', + 'GUIScrollBars_GetScrollBarInfoEx', 'GUIScrollBars_GetScrollBarRect', + 'GUIScrollBars_GetScrollBarRGState', + 'GUIScrollBars_GetScrollBarXYLineButton', + 'GUIScrollBars_GetScrollBarXYThumbBottom', + 'GUIScrollBars_GetScrollBarXYThumbTop', + 'GUIScrollBars_GetScrollInfo', 'GUIScrollBars_GetScrollInfoEx', + 'GUIScrollBars_GetScrollInfoMax', 'GUIScrollBars_GetScrollInfoMin', + 'GUIScrollBars_GetScrollInfoPage', 'GUIScrollBars_GetScrollInfoPos', + 'GUIScrollBars_GetScrollInfoTrackPos', 'GUIScrollBars_GetScrollPos', + 'GUIScrollBars_GetScrollRange', 'GUIScrollBars_Init', + 'GUIScrollBars_ScrollWindow', 'GUIScrollBars_SetScrollInfo', + 'GUIScrollBars_SetScrollInfoMax', 'GUIScrollBars_SetScrollInfoMin', + 'GUIScrollBars_SetScrollInfoPage', 'GUIScrollBars_SetScrollInfoPos', + 'GUIScrollBars_SetScrollRange', 'GUIScrollBars_ShowScrollBar', + 'GUIToolTip_Activate', 'GUIToolTip_AddTool', 'GUIToolTip_AdjustRect', + 'GUIToolTip_BitsToTTF', 'GUIToolTip_Create', 'GUIToolTip_Deactivate', + 'GUIToolTip_DelTool', 'GUIToolTip_Destroy', 'GUIToolTip_EnumTools', + 'GUIToolTip_GetBubbleHeight', 'GUIToolTip_GetBubbleSize', + 'GUIToolTip_GetBubbleWidth', 'GUIToolTip_GetCurrentTool', + 'GUIToolTip_GetDelayTime', 'GUIToolTip_GetMargin', + 'GUIToolTip_GetMarginEx', 'GUIToolTip_GetMaxTipWidth', + 'GUIToolTip_GetText', 'GUIToolTip_GetTipBkColor', + 'GUIToolTip_GetTipTextColor', 'GUIToolTip_GetTitleBitMap', + 'GUIToolTip_GetTitleText', 'GUIToolTip_GetToolCount', + 'GUIToolTip_GetToolInfo', 'GUIToolTip_HitTest', + 'GUIToolTip_NewToolRect', 'GUIToolTip_Pop', 'GUIToolTip_PopUp', + 'GUIToolTip_SetDelayTime', 'GUIToolTip_SetMargin', + 'GUIToolTip_SetMaxTipWidth', 'GUIToolTip_SetTipBkColor', + 'GUIToolTip_SetTipTextColor', 'GUIToolTip_SetTitle', + 'GUIToolTip_SetToolInfo', 'GUIToolTip_SetWindowTheme', + 'GUIToolTip_ToolExists', 'GUIToolTip_ToolToArray', + 'GUIToolTip_TrackActivate', 'GUIToolTip_TrackPosition', + 'GUIToolTip_Update', 'GUIToolTip_UpdateTipText', 'HexToString', + 'IEAction', 'IEAttach', 'IEBodyReadHTML', 'IEBodyReadText', + 'IEBodyWriteHTML', 'IECreate', 'IECreateEmbedded', 'IEDocGetObj', + 'IEDocInsertHTML', 'IEDocInsertText', 'IEDocReadHTML', + 'IEDocWriteHTML', 'IEErrorNotify', 'IEFormElementCheckBoxSelect', + 'IEFormElementGetCollection', 'IEFormElementGetObjByName', + 'IEFormElementGetValue', 'IEFormElementOptionSelect', + 'IEFormElementRadioSelect', 'IEFormElementSetValue', + 'IEFormGetCollection', 'IEFormGetObjByName', 'IEFormImageClick', + 'IEFormReset', 'IEFormSubmit', 'IEFrameGetCollection', + 'IEFrameGetObjByName', 'IEGetObjById', 'IEGetObjByName', + 'IEHeadInsertEventScript', 'IEImgClick', 'IEImgGetCollection', + 'IEIsFrameSet', 'IELinkClickByIndex', 'IELinkClickByText', + 'IELinkGetCollection', 'IELoadWait', 'IELoadWaitTimeout', 'IENavigate', + 'IEPropertyGet', 'IEPropertySet', 'IEQuit', 'IETableGetCollection', + 'IETableWriteToArray', 'IETagNameAllGetCollection', + 'IETagNameGetCollection', 'IE_Example', 'IE_Introduction', + 'IE_VersionInfo', 'INetExplorerCapable', 'INetGetSource', 'INetMail', + 'INetSmtpMail', 'IsPressed', 'MathCheckDiv', 'Max', 'MemGlobalAlloc', + 'MemGlobalFree', 'MemGlobalLock', 'MemGlobalSize', 'MemGlobalUnlock', + 'MemMoveMemory', 'MemVirtualAlloc', 'MemVirtualAllocEx', + 'MemVirtualFree', 'MemVirtualFreeEx', 'Min', 'MouseTrap', + 'NamedPipes_CallNamedPipe', 'NamedPipes_ConnectNamedPipe', + 'NamedPipes_CreateNamedPipe', 'NamedPipes_CreatePipe', + 'NamedPipes_DisconnectNamedPipe', + 'NamedPipes_GetNamedPipeHandleState', 'NamedPipes_GetNamedPipeInfo', + 'NamedPipes_PeekNamedPipe', 'NamedPipes_SetNamedPipeHandleState', + 'NamedPipes_TransactNamedPipe', 'NamedPipes_WaitNamedPipe', + 'Net_Share_ConnectionEnum', 'Net_Share_FileClose', + 'Net_Share_FileEnum', 'Net_Share_FileGetInfo', 'Net_Share_PermStr', + 'Net_Share_ResourceStr', 'Net_Share_SessionDel', + 'Net_Share_SessionEnum', 'Net_Share_SessionGetInfo', + 'Net_Share_ShareAdd', 'Net_Share_ShareCheck', 'Net_Share_ShareDel', + 'Net_Share_ShareEnum', 'Net_Share_ShareGetInfo', + 'Net_Share_ShareSetInfo', 'Net_Share_StatisticsGetSvr', + 'Net_Share_StatisticsGetWrk', 'Now', 'NowCalc', 'NowCalcDate', + 'NowDate', 'NowTime', 'PathFull', 'PathGetRelative', 'PathMake', + 'PathSplit', 'ProcessGetName', 'ProcessGetPriority', 'Radian', + 'ReplaceStringInFile', 'RunDos', 'ScreenCapture_Capture', + 'ScreenCapture_CaptureWnd', 'ScreenCapture_SaveImage', + 'ScreenCapture_SetBMPFormat', 'ScreenCapture_SetJPGQuality', + 'ScreenCapture_SetTIFColorDepth', 'ScreenCapture_SetTIFCompression', + 'Security__AdjustTokenPrivileges', + 'Security__CreateProcessWithToken', 'Security__DuplicateTokenEx', + 'Security__GetAccountSid', 'Security__GetLengthSid', + 'Security__GetTokenInformation', 'Security__ImpersonateSelf', + 'Security__IsValidSid', 'Security__LookupAccountName', + 'Security__LookupAccountSid', 'Security__LookupPrivilegeValue', + 'Security__OpenProcessToken', 'Security__OpenThreadToken', + 'Security__OpenThreadTokenEx', 'Security__SetPrivilege', + 'Security__SetTokenInformation', 'Security__SidToStringSid', + 'Security__SidTypeStr', 'Security__StringSidToSid', 'SendMessage', + 'SendMessageA', 'SetDate', 'SetTime', 'Singleton', 'SoundClose', + 'SoundLength', 'SoundOpen', 'SoundPause', 'SoundPlay', 'SoundPos', + 'SoundResume', 'SoundSeek', 'SoundStatus', 'SoundStop', + 'SQLite_Changes', 'SQLite_Close', 'SQLite_Display2DResult', + 'SQLite_Encode', 'SQLite_ErrCode', 'SQLite_ErrMsg', 'SQLite_Escape', + 'SQLite_Exec', 'SQLite_FastEncode', 'SQLite_FastEscape', + 'SQLite_FetchData', 'SQLite_FetchNames', 'SQLite_GetTable', + 'SQLite_GetTable2d', 'SQLite_LastInsertRowID', 'SQLite_LibVersion', + 'SQLite_Open', 'SQLite_Query', 'SQLite_QueryFinalize', + 'SQLite_QueryReset', 'SQLite_QuerySingleRow', 'SQLite_SafeMode', + 'SQLite_SetTimeout', 'SQLite_Shutdown', 'SQLite_SQLiteExe', + 'SQLite_Startup', 'SQLite_TotalChanges', 'StringBetween', + 'StringExplode', 'StringInsert', 'StringProper', 'StringRepeat', + 'StringTitleCase', 'StringToHex', 'TCPIpToName', 'TempFile', + 'TicksToTime', 'Timer_Diff', 'Timer_GetIdleTime', 'Timer_GetTimerID', + 'Timer_Init', 'Timer_KillAllTimers', 'Timer_KillTimer', + 'Timer_SetTimer', 'TimeToTicks', 'VersionCompare', 'viClose', + 'viExecCommand', 'viFindGpib', 'viGpibBusReset', 'viGTL', + 'viInteractiveControl', 'viOpen', 'viSetAttribute', 'viSetTimeout', + 'WeekNumberISO', 'WinAPI_AbortPath', 'WinAPI_ActivateKeyboardLayout', + 'WinAPI_AddClipboardFormatListener', 'WinAPI_AddFontMemResourceEx', + 'WinAPI_AddFontResourceEx', 'WinAPI_AddIconOverlay', + 'WinAPI_AddIconTransparency', 'WinAPI_AddMRUString', + 'WinAPI_AdjustBitmap', 'WinAPI_AdjustTokenPrivileges', + 'WinAPI_AdjustWindowRectEx', 'WinAPI_AlphaBlend', 'WinAPI_AngleArc', + 'WinAPI_AnimateWindow', 'WinAPI_Arc', 'WinAPI_ArcTo', + 'WinAPI_ArrayToStruct', 'WinAPI_AssignProcessToJobObject', + 'WinAPI_AssocGetPerceivedType', 'WinAPI_AssocQueryString', + 'WinAPI_AttachConsole', 'WinAPI_AttachThreadInput', + 'WinAPI_BackupRead', 'WinAPI_BackupReadAbort', 'WinAPI_BackupSeek', + 'WinAPI_BackupWrite', 'WinAPI_BackupWriteAbort', 'WinAPI_Beep', + 'WinAPI_BeginBufferedPaint', 'WinAPI_BeginDeferWindowPos', + 'WinAPI_BeginPaint', 'WinAPI_BeginPath', 'WinAPI_BeginUpdateResource', + 'WinAPI_BitBlt', 'WinAPI_BringWindowToTop', + 'WinAPI_BroadcastSystemMessage', 'WinAPI_BrowseForFolderDlg', + 'WinAPI_BufferedPaintClear', 'WinAPI_BufferedPaintInit', + 'WinAPI_BufferedPaintSetAlpha', 'WinAPI_BufferedPaintUnInit', + 'WinAPI_CallNextHookEx', 'WinAPI_CallWindowProc', + 'WinAPI_CallWindowProcW', 'WinAPI_CascadeWindows', + 'WinAPI_ChangeWindowMessageFilterEx', 'WinAPI_CharToOem', + 'WinAPI_ChildWindowFromPointEx', 'WinAPI_ClientToScreen', + 'WinAPI_ClipCursor', 'WinAPI_CloseDesktop', 'WinAPI_CloseEnhMetaFile', + 'WinAPI_CloseFigure', 'WinAPI_CloseHandle', 'WinAPI_CloseThemeData', + 'WinAPI_CloseWindow', 'WinAPI_CloseWindowStation', + 'WinAPI_CLSIDFromProgID', 'WinAPI_CoInitialize', + 'WinAPI_ColorAdjustLuma', 'WinAPI_ColorHLSToRGB', + 'WinAPI_ColorRGBToHLS', 'WinAPI_CombineRgn', + 'WinAPI_CombineTransform', 'WinAPI_CommandLineToArgv', + 'WinAPI_CommDlgExtendedError', 'WinAPI_CommDlgExtendedErrorEx', + 'WinAPI_CompareString', 'WinAPI_CompressBitmapBits', + 'WinAPI_CompressBuffer', 'WinAPI_ComputeCrc32', + 'WinAPI_ConfirmCredentials', 'WinAPI_CopyBitmap', 'WinAPI_CopyCursor', + 'WinAPI_CopyEnhMetaFile', 'WinAPI_CopyFileEx', 'WinAPI_CopyIcon', + 'WinAPI_CopyImage', 'WinAPI_CopyRect', 'WinAPI_CopyStruct', + 'WinAPI_CoTaskMemAlloc', 'WinAPI_CoTaskMemFree', + 'WinAPI_CoTaskMemRealloc', 'WinAPI_CoUninitialize', + 'WinAPI_Create32BitHBITMAP', 'WinAPI_Create32BitHICON', + 'WinAPI_CreateANDBitmap', 'WinAPI_CreateBitmap', + 'WinAPI_CreateBitmapIndirect', 'WinAPI_CreateBrushIndirect', + 'WinAPI_CreateBuffer', 'WinAPI_CreateBufferFromStruct', + 'WinAPI_CreateCaret', 'WinAPI_CreateColorAdjustment', + 'WinAPI_CreateCompatibleBitmap', 'WinAPI_CreateCompatibleBitmapEx', + 'WinAPI_CreateCompatibleDC', 'WinAPI_CreateDesktop', + 'WinAPI_CreateDIB', 'WinAPI_CreateDIBColorTable', + 'WinAPI_CreateDIBitmap', 'WinAPI_CreateDIBSection', + 'WinAPI_CreateDirectory', 'WinAPI_CreateDirectoryEx', + 'WinAPI_CreateEllipticRgn', 'WinAPI_CreateEmptyIcon', + 'WinAPI_CreateEnhMetaFile', 'WinAPI_CreateEvent', 'WinAPI_CreateFile', + 'WinAPI_CreateFileEx', 'WinAPI_CreateFileMapping', + 'WinAPI_CreateFont', 'WinAPI_CreateFontEx', + 'WinAPI_CreateFontIndirect', 'WinAPI_CreateGUID', + 'WinAPI_CreateHardLink', 'WinAPI_CreateIcon', + 'WinAPI_CreateIconFromResourceEx', 'WinAPI_CreateIconIndirect', + 'WinAPI_CreateJobObject', 'WinAPI_CreateMargins', + 'WinAPI_CreateMRUList', 'WinAPI_CreateMutex', 'WinAPI_CreateNullRgn', + 'WinAPI_CreateNumberFormatInfo', 'WinAPI_CreateObjectID', + 'WinAPI_CreatePen', 'WinAPI_CreatePoint', 'WinAPI_CreatePolygonRgn', + 'WinAPI_CreateProcess', 'WinAPI_CreateProcessWithToken', + 'WinAPI_CreateRect', 'WinAPI_CreateRectEx', 'WinAPI_CreateRectRgn', + 'WinAPI_CreateRectRgnIndirect', 'WinAPI_CreateRoundRectRgn', + 'WinAPI_CreateSemaphore', 'WinAPI_CreateSize', + 'WinAPI_CreateSolidBitmap', 'WinAPI_CreateSolidBrush', + 'WinAPI_CreateStreamOnHGlobal', 'WinAPI_CreateString', + 'WinAPI_CreateSymbolicLink', 'WinAPI_CreateTransform', + 'WinAPI_CreateWindowEx', 'WinAPI_CreateWindowStation', + 'WinAPI_DecompressBuffer', 'WinAPI_DecryptFile', + 'WinAPI_DeferWindowPos', 'WinAPI_DefineDosDevice', + 'WinAPI_DefRawInputProc', 'WinAPI_DefSubclassProc', + 'WinAPI_DefWindowProc', 'WinAPI_DefWindowProcW', 'WinAPI_DeleteDC', + 'WinAPI_DeleteEnhMetaFile', 'WinAPI_DeleteFile', + 'WinAPI_DeleteObject', 'WinAPI_DeleteObjectID', + 'WinAPI_DeleteVolumeMountPoint', 'WinAPI_DeregisterShellHookWindow', + 'WinAPI_DestroyCaret', 'WinAPI_DestroyCursor', 'WinAPI_DestroyIcon', + 'WinAPI_DestroyWindow', 'WinAPI_DeviceIoControl', + 'WinAPI_DisplayStruct', 'WinAPI_DllGetVersion', 'WinAPI_DllInstall', + 'WinAPI_DllUninstall', 'WinAPI_DPtoLP', 'WinAPI_DragAcceptFiles', + 'WinAPI_DragFinish', 'WinAPI_DragQueryFileEx', + 'WinAPI_DragQueryPoint', 'WinAPI_DrawAnimatedRects', + 'WinAPI_DrawBitmap', 'WinAPI_DrawEdge', 'WinAPI_DrawFocusRect', + 'WinAPI_DrawFrameControl', 'WinAPI_DrawIcon', 'WinAPI_DrawIconEx', + 'WinAPI_DrawLine', 'WinAPI_DrawShadowText', 'WinAPI_DrawText', + 'WinAPI_DrawThemeBackground', 'WinAPI_DrawThemeEdge', + 'WinAPI_DrawThemeIcon', 'WinAPI_DrawThemeParentBackground', + 'WinAPI_DrawThemeText', 'WinAPI_DrawThemeTextEx', + 'WinAPI_DuplicateEncryptionInfoFile', 'WinAPI_DuplicateHandle', + 'WinAPI_DuplicateTokenEx', 'WinAPI_DwmDefWindowProc', + 'WinAPI_DwmEnableBlurBehindWindow', 'WinAPI_DwmEnableComposition', + 'WinAPI_DwmExtendFrameIntoClientArea', + 'WinAPI_DwmGetColorizationColor', + 'WinAPI_DwmGetColorizationParameters', + 'WinAPI_DwmGetWindowAttribute', 'WinAPI_DwmInvalidateIconicBitmaps', + 'WinAPI_DwmIsCompositionEnabled', + 'WinAPI_DwmQueryThumbnailSourceSize', 'WinAPI_DwmRegisterThumbnail', + 'WinAPI_DwmSetColorizationParameters', + 'WinAPI_DwmSetIconicLivePreviewBitmap', + 'WinAPI_DwmSetIconicThumbnail', 'WinAPI_DwmSetWindowAttribute', + 'WinAPI_DwmUnregisterThumbnail', + 'WinAPI_DwmUpdateThumbnailProperties', 'WinAPI_DWordToFloat', + 'WinAPI_DWordToInt', 'WinAPI_EjectMedia', 'WinAPI_Ellipse', + 'WinAPI_EmptyWorkingSet', 'WinAPI_EnableWindow', 'WinAPI_EncryptFile', + 'WinAPI_EncryptionDisable', 'WinAPI_EndBufferedPaint', + 'WinAPI_EndDeferWindowPos', 'WinAPI_EndPaint', 'WinAPI_EndPath', + 'WinAPI_EndUpdateResource', 'WinAPI_EnumChildProcess', + 'WinAPI_EnumChildWindows', 'WinAPI_EnumDesktops', + 'WinAPI_EnumDesktopWindows', 'WinAPI_EnumDeviceDrivers', + 'WinAPI_EnumDisplayDevices', 'WinAPI_EnumDisplayMonitors', + 'WinAPI_EnumDisplaySettings', 'WinAPI_EnumDllProc', + 'WinAPI_EnumFiles', 'WinAPI_EnumFileStreams', + 'WinAPI_EnumFontFamilies', 'WinAPI_EnumHardLinks', + 'WinAPI_EnumMRUList', 'WinAPI_EnumPageFiles', + 'WinAPI_EnumProcessHandles', 'WinAPI_EnumProcessModules', + 'WinAPI_EnumProcessThreads', 'WinAPI_EnumProcessWindows', + 'WinAPI_EnumRawInputDevices', 'WinAPI_EnumResourceLanguages', + 'WinAPI_EnumResourceNames', 'WinAPI_EnumResourceTypes', + 'WinAPI_EnumSystemGeoID', 'WinAPI_EnumSystemLocales', + 'WinAPI_EnumUILanguages', 'WinAPI_EnumWindows', + 'WinAPI_EnumWindowsPopup', 'WinAPI_EnumWindowStations', + 'WinAPI_EnumWindowsTop', 'WinAPI_EqualMemory', 'WinAPI_EqualRect', + 'WinAPI_EqualRgn', 'WinAPI_ExcludeClipRect', + 'WinAPI_ExpandEnvironmentStrings', 'WinAPI_ExtCreatePen', + 'WinAPI_ExtCreateRegion', 'WinAPI_ExtFloodFill', 'WinAPI_ExtractIcon', + 'WinAPI_ExtractIconEx', 'WinAPI_ExtSelectClipRgn', + 'WinAPI_FatalAppExit', 'WinAPI_FatalExit', + 'WinAPI_FileEncryptionStatus', 'WinAPI_FileExists', + 'WinAPI_FileIconInit', 'WinAPI_FileInUse', 'WinAPI_FillMemory', + 'WinAPI_FillPath', 'WinAPI_FillRect', 'WinAPI_FillRgn', + 'WinAPI_FindClose', 'WinAPI_FindCloseChangeNotification', + 'WinAPI_FindExecutable', 'WinAPI_FindFirstChangeNotification', + 'WinAPI_FindFirstFile', 'WinAPI_FindFirstFileName', + 'WinAPI_FindFirstStream', 'WinAPI_FindNextChangeNotification', + 'WinAPI_FindNextFile', 'WinAPI_FindNextFileName', + 'WinAPI_FindNextStream', 'WinAPI_FindResource', + 'WinAPI_FindResourceEx', 'WinAPI_FindTextDlg', 'WinAPI_FindWindow', + 'WinAPI_FlashWindow', 'WinAPI_FlashWindowEx', 'WinAPI_FlattenPath', + 'WinAPI_FloatToDWord', 'WinAPI_FloatToInt', 'WinAPI_FlushFileBuffers', + 'WinAPI_FlushFRBuffer', 'WinAPI_FlushViewOfFile', + 'WinAPI_FormatDriveDlg', 'WinAPI_FormatMessage', 'WinAPI_FrameRect', + 'WinAPI_FrameRgn', 'WinAPI_FreeLibrary', 'WinAPI_FreeMemory', + 'WinAPI_FreeMRUList', 'WinAPI_FreeResource', 'WinAPI_GdiComment', + 'WinAPI_GetActiveWindow', 'WinAPI_GetAllUsersProfileDirectory', + 'WinAPI_GetAncestor', 'WinAPI_GetApplicationRestartSettings', + 'WinAPI_GetArcDirection', 'WinAPI_GetAsyncKeyState', + 'WinAPI_GetBinaryType', 'WinAPI_GetBitmapBits', + 'WinAPI_GetBitmapDimension', 'WinAPI_GetBitmapDimensionEx', + 'WinAPI_GetBkColor', 'WinAPI_GetBkMode', 'WinAPI_GetBoundsRect', + 'WinAPI_GetBrushOrg', 'WinAPI_GetBufferedPaintBits', + 'WinAPI_GetBufferedPaintDC', 'WinAPI_GetBufferedPaintTargetDC', + 'WinAPI_GetBufferedPaintTargetRect', 'WinAPI_GetBValue', + 'WinAPI_GetCaretBlinkTime', 'WinAPI_GetCaretPos', 'WinAPI_GetCDType', + 'WinAPI_GetClassInfoEx', 'WinAPI_GetClassLongEx', + 'WinAPI_GetClassName', 'WinAPI_GetClientHeight', + 'WinAPI_GetClientRect', 'WinAPI_GetClientWidth', + 'WinAPI_GetClipboardSequenceNumber', 'WinAPI_GetClipBox', + 'WinAPI_GetClipCursor', 'WinAPI_GetClipRgn', + 'WinAPI_GetColorAdjustment', 'WinAPI_GetCompressedFileSize', + 'WinAPI_GetCompression', 'WinAPI_GetConnectedDlg', + 'WinAPI_GetCurrentDirectory', 'WinAPI_GetCurrentHwProfile', + 'WinAPI_GetCurrentObject', 'WinAPI_GetCurrentPosition', + 'WinAPI_GetCurrentProcess', + 'WinAPI_GetCurrentProcessExplicitAppUserModelID', + 'WinAPI_GetCurrentProcessID', 'WinAPI_GetCurrentThemeName', + 'WinAPI_GetCurrentThread', 'WinAPI_GetCurrentThreadId', + 'WinAPI_GetCursor', 'WinAPI_GetCursorInfo', 'WinAPI_GetDateFormat', + 'WinAPI_GetDC', 'WinAPI_GetDCEx', 'WinAPI_GetDefaultPrinter', + 'WinAPI_GetDefaultUserProfileDirectory', 'WinAPI_GetDesktopWindow', + 'WinAPI_GetDeviceCaps', 'WinAPI_GetDeviceDriverBaseName', + 'WinAPI_GetDeviceDriverFileName', 'WinAPI_GetDeviceGammaRamp', + 'WinAPI_GetDIBColorTable', 'WinAPI_GetDIBits', + 'WinAPI_GetDiskFreeSpaceEx', 'WinAPI_GetDlgCtrlID', + 'WinAPI_GetDlgItem', 'WinAPI_GetDllDirectory', + 'WinAPI_GetDriveBusType', 'WinAPI_GetDriveGeometryEx', + 'WinAPI_GetDriveNumber', 'WinAPI_GetDriveType', + 'WinAPI_GetDurationFormat', 'WinAPI_GetEffectiveClientRect', + 'WinAPI_GetEnhMetaFile', 'WinAPI_GetEnhMetaFileBits', + 'WinAPI_GetEnhMetaFileDescription', 'WinAPI_GetEnhMetaFileDimension', + 'WinAPI_GetEnhMetaFileHeader', 'WinAPI_GetErrorMessage', + 'WinAPI_GetErrorMode', 'WinAPI_GetExitCodeProcess', + 'WinAPI_GetExtended', 'WinAPI_GetFileAttributes', 'WinAPI_GetFileID', + 'WinAPI_GetFileInformationByHandle', + 'WinAPI_GetFileInformationByHandleEx', 'WinAPI_GetFilePointerEx', + 'WinAPI_GetFileSizeEx', 'WinAPI_GetFileSizeOnDisk', + 'WinAPI_GetFileTitle', 'WinAPI_GetFileType', + 'WinAPI_GetFileVersionInfo', 'WinAPI_GetFinalPathNameByHandle', + 'WinAPI_GetFinalPathNameByHandleEx', 'WinAPI_GetFocus', + 'WinAPI_GetFontMemoryResourceInfo', 'WinAPI_GetFontName', + 'WinAPI_GetFontResourceInfo', 'WinAPI_GetForegroundWindow', + 'WinAPI_GetFRBuffer', 'WinAPI_GetFullPathName', 'WinAPI_GetGeoInfo', + 'WinAPI_GetGlyphOutline', 'WinAPI_GetGraphicsMode', + 'WinAPI_GetGuiResources', 'WinAPI_GetGUIThreadInfo', + 'WinAPI_GetGValue', 'WinAPI_GetHandleInformation', + 'WinAPI_GetHGlobalFromStream', 'WinAPI_GetIconDimension', + 'WinAPI_GetIconInfo', 'WinAPI_GetIconInfoEx', 'WinAPI_GetIdleTime', + 'WinAPI_GetKeyboardLayout', 'WinAPI_GetKeyboardLayoutList', + 'WinAPI_GetKeyboardState', 'WinAPI_GetKeyboardType', + 'WinAPI_GetKeyNameText', 'WinAPI_GetKeyState', + 'WinAPI_GetLastActivePopup', 'WinAPI_GetLastError', + 'WinAPI_GetLastErrorMessage', 'WinAPI_GetLayeredWindowAttributes', + 'WinAPI_GetLocaleInfo', 'WinAPI_GetLogicalDrives', + 'WinAPI_GetMapMode', 'WinAPI_GetMemorySize', + 'WinAPI_GetMessageExtraInfo', 'WinAPI_GetModuleFileNameEx', + 'WinAPI_GetModuleHandle', 'WinAPI_GetModuleHandleEx', + 'WinAPI_GetModuleInformation', 'WinAPI_GetMonitorInfo', + 'WinAPI_GetMousePos', 'WinAPI_GetMousePosX', 'WinAPI_GetMousePosY', + 'WinAPI_GetMUILanguage', 'WinAPI_GetNumberFormat', 'WinAPI_GetObject', + 'WinAPI_GetObjectID', 'WinAPI_GetObjectInfoByHandle', + 'WinAPI_GetObjectNameByHandle', 'WinAPI_GetObjectType', + 'WinAPI_GetOpenFileName', 'WinAPI_GetOutlineTextMetrics', + 'WinAPI_GetOverlappedResult', 'WinAPI_GetParent', + 'WinAPI_GetParentProcess', 'WinAPI_GetPerformanceInfo', + 'WinAPI_GetPEType', 'WinAPI_GetPhysicallyInstalledSystemMemory', + 'WinAPI_GetPixel', 'WinAPI_GetPolyFillMode', 'WinAPI_GetPosFromRect', + 'WinAPI_GetPriorityClass', 'WinAPI_GetProcAddress', + 'WinAPI_GetProcessAffinityMask', 'WinAPI_GetProcessCommandLine', + 'WinAPI_GetProcessFileName', 'WinAPI_GetProcessHandleCount', + 'WinAPI_GetProcessID', 'WinAPI_GetProcessIoCounters', + 'WinAPI_GetProcessMemoryInfo', 'WinAPI_GetProcessName', + 'WinAPI_GetProcessShutdownParameters', 'WinAPI_GetProcessTimes', + 'WinAPI_GetProcessUser', 'WinAPI_GetProcessWindowStation', + 'WinAPI_GetProcessWorkingDirectory', 'WinAPI_GetProfilesDirectory', + 'WinAPI_GetPwrCapabilities', 'WinAPI_GetRawInputBuffer', + 'WinAPI_GetRawInputBufferLength', 'WinAPI_GetRawInputData', + 'WinAPI_GetRawInputDeviceInfo', 'WinAPI_GetRegionData', + 'WinAPI_GetRegisteredRawInputDevices', + 'WinAPI_GetRegKeyNameByHandle', 'WinAPI_GetRgnBox', 'WinAPI_GetROP2', + 'WinAPI_GetRValue', 'WinAPI_GetSaveFileName', 'WinAPI_GetShellWindow', + 'WinAPI_GetStartupInfo', 'WinAPI_GetStdHandle', + 'WinAPI_GetStockObject', 'WinAPI_GetStretchBltMode', + 'WinAPI_GetString', 'WinAPI_GetSysColor', 'WinAPI_GetSysColorBrush', + 'WinAPI_GetSystemDefaultLangID', 'WinAPI_GetSystemDefaultLCID', + 'WinAPI_GetSystemDefaultUILanguage', 'WinAPI_GetSystemDEPPolicy', + 'WinAPI_GetSystemInfo', 'WinAPI_GetSystemMetrics', + 'WinAPI_GetSystemPowerStatus', 'WinAPI_GetSystemTimes', + 'WinAPI_GetSystemWow64Directory', 'WinAPI_GetTabbedTextExtent', + 'WinAPI_GetTempFileName', 'WinAPI_GetTextAlign', + 'WinAPI_GetTextCharacterExtra', 'WinAPI_GetTextColor', + 'WinAPI_GetTextExtentPoint32', 'WinAPI_GetTextFace', + 'WinAPI_GetTextMetrics', 'WinAPI_GetThemeAppProperties', + 'WinAPI_GetThemeBackgroundContentRect', + 'WinAPI_GetThemeBackgroundExtent', 'WinAPI_GetThemeBackgroundRegion', + 'WinAPI_GetThemeBitmap', 'WinAPI_GetThemeBool', + 'WinAPI_GetThemeColor', 'WinAPI_GetThemeDocumentationProperty', + 'WinAPI_GetThemeEnumValue', 'WinAPI_GetThemeFilename', + 'WinAPI_GetThemeFont', 'WinAPI_GetThemeInt', 'WinAPI_GetThemeMargins', + 'WinAPI_GetThemeMetric', 'WinAPI_GetThemePartSize', + 'WinAPI_GetThemePosition', 'WinAPI_GetThemePropertyOrigin', + 'WinAPI_GetThemeRect', 'WinAPI_GetThemeString', + 'WinAPI_GetThemeSysBool', 'WinAPI_GetThemeSysColor', + 'WinAPI_GetThemeSysColorBrush', 'WinAPI_GetThemeSysFont', + 'WinAPI_GetThemeSysInt', 'WinAPI_GetThemeSysSize', + 'WinAPI_GetThemeSysString', 'WinAPI_GetThemeTextExtent', + 'WinAPI_GetThemeTextMetrics', 'WinAPI_GetThemeTransitionDuration', + 'WinAPI_GetThreadDesktop', 'WinAPI_GetThreadErrorMode', + 'WinAPI_GetThreadLocale', 'WinAPI_GetThreadUILanguage', + 'WinAPI_GetTickCount', 'WinAPI_GetTickCount64', + 'WinAPI_GetTimeFormat', 'WinAPI_GetTopWindow', + 'WinAPI_GetUDFColorMode', 'WinAPI_GetUpdateRect', + 'WinAPI_GetUpdateRgn', 'WinAPI_GetUserDefaultLangID', + 'WinAPI_GetUserDefaultLCID', 'WinAPI_GetUserDefaultUILanguage', + 'WinAPI_GetUserGeoID', 'WinAPI_GetUserObjectInformation', + 'WinAPI_GetVersion', 'WinAPI_GetVersionEx', + 'WinAPI_GetVolumeInformation', 'WinAPI_GetVolumeInformationByHandle', + 'WinAPI_GetVolumeNameForVolumeMountPoint', 'WinAPI_GetWindow', + 'WinAPI_GetWindowDC', 'WinAPI_GetWindowDisplayAffinity', + 'WinAPI_GetWindowExt', 'WinAPI_GetWindowFileName', + 'WinAPI_GetWindowHeight', 'WinAPI_GetWindowInfo', + 'WinAPI_GetWindowLong', 'WinAPI_GetWindowOrg', + 'WinAPI_GetWindowPlacement', 'WinAPI_GetWindowRect', + 'WinAPI_GetWindowRgn', 'WinAPI_GetWindowRgnBox', + 'WinAPI_GetWindowSubclass', 'WinAPI_GetWindowText', + 'WinAPI_GetWindowTheme', 'WinAPI_GetWindowThreadProcessId', + 'WinAPI_GetWindowWidth', 'WinAPI_GetWorkArea', + 'WinAPI_GetWorldTransform', 'WinAPI_GetXYFromPoint', + 'WinAPI_GlobalMemoryStatus', 'WinAPI_GradientFill', + 'WinAPI_GUIDFromString', 'WinAPI_GUIDFromStringEx', 'WinAPI_HashData', + 'WinAPI_HashString', 'WinAPI_HiByte', 'WinAPI_HideCaret', + 'WinAPI_HiDWord', 'WinAPI_HiWord', 'WinAPI_InflateRect', + 'WinAPI_InitMUILanguage', 'WinAPI_InProcess', + 'WinAPI_IntersectClipRect', 'WinAPI_IntersectRect', + 'WinAPI_IntToDWord', 'WinAPI_IntToFloat', 'WinAPI_InvalidateRect', + 'WinAPI_InvalidateRgn', 'WinAPI_InvertANDBitmap', + 'WinAPI_InvertColor', 'WinAPI_InvertRect', 'WinAPI_InvertRgn', + 'WinAPI_IOCTL', 'WinAPI_IsAlphaBitmap', 'WinAPI_IsBadCodePtr', + 'WinAPI_IsBadReadPtr', 'WinAPI_IsBadStringPtr', + 'WinAPI_IsBadWritePtr', 'WinAPI_IsChild', 'WinAPI_IsClassName', + 'WinAPI_IsDoorOpen', 'WinAPI_IsElevated', 'WinAPI_IsHungAppWindow', + 'WinAPI_IsIconic', 'WinAPI_IsInternetConnected', + 'WinAPI_IsLoadKBLayout', 'WinAPI_IsMemory', + 'WinAPI_IsNameInExpression', 'WinAPI_IsNetworkAlive', + 'WinAPI_IsPathShared', 'WinAPI_IsProcessInJob', + 'WinAPI_IsProcessorFeaturePresent', 'WinAPI_IsRectEmpty', + 'WinAPI_IsThemeActive', + 'WinAPI_IsThemeBackgroundPartiallyTransparent', + 'WinAPI_IsThemePartDefined', 'WinAPI_IsValidLocale', + 'WinAPI_IsWindow', 'WinAPI_IsWindowEnabled', 'WinAPI_IsWindowUnicode', + 'WinAPI_IsWindowVisible', 'WinAPI_IsWow64Process', + 'WinAPI_IsWritable', 'WinAPI_IsZoomed', 'WinAPI_Keybd_Event', + 'WinAPI_KillTimer', 'WinAPI_LineDDA', 'WinAPI_LineTo', + 'WinAPI_LoadBitmap', 'WinAPI_LoadCursor', 'WinAPI_LoadCursorFromFile', + 'WinAPI_LoadIcon', 'WinAPI_LoadIconMetric', + 'WinAPI_LoadIconWithScaleDown', 'WinAPI_LoadImage', + 'WinAPI_LoadIndirectString', 'WinAPI_LoadKeyboardLayout', + 'WinAPI_LoadLibrary', 'WinAPI_LoadLibraryEx', 'WinAPI_LoadMedia', + 'WinAPI_LoadResource', 'WinAPI_LoadShell32Icon', 'WinAPI_LoadString', + 'WinAPI_LoadStringEx', 'WinAPI_LoByte', 'WinAPI_LocalFree', + 'WinAPI_LockDevice', 'WinAPI_LockFile', 'WinAPI_LockResource', + 'WinAPI_LockWindowUpdate', 'WinAPI_LockWorkStation', 'WinAPI_LoDWord', + 'WinAPI_LongMid', 'WinAPI_LookupIconIdFromDirectoryEx', + 'WinAPI_LoWord', 'WinAPI_LPtoDP', 'WinAPI_MAKELANGID', + 'WinAPI_MAKELCID', 'WinAPI_MakeLong', 'WinAPI_MakeQWord', + 'WinAPI_MakeWord', 'WinAPI_MapViewOfFile', 'WinAPI_MapVirtualKey', + 'WinAPI_MaskBlt', 'WinAPI_MessageBeep', 'WinAPI_MessageBoxCheck', + 'WinAPI_MessageBoxIndirect', 'WinAPI_MirrorIcon', + 'WinAPI_ModifyWorldTransform', 'WinAPI_MonitorFromPoint', + 'WinAPI_MonitorFromRect', 'WinAPI_MonitorFromWindow', + 'WinAPI_Mouse_Event', 'WinAPI_MoveFileEx', 'WinAPI_MoveMemory', + 'WinAPI_MoveTo', 'WinAPI_MoveToEx', 'WinAPI_MoveWindow', + 'WinAPI_MsgBox', 'WinAPI_MulDiv', 'WinAPI_MultiByteToWideChar', + 'WinAPI_MultiByteToWideCharEx', 'WinAPI_NtStatusToDosError', + 'WinAPI_OemToChar', 'WinAPI_OffsetClipRgn', 'WinAPI_OffsetPoints', + 'WinAPI_OffsetRect', 'WinAPI_OffsetRgn', 'WinAPI_OffsetWindowOrg', + 'WinAPI_OpenDesktop', 'WinAPI_OpenFileById', 'WinAPI_OpenFileDlg', + 'WinAPI_OpenFileMapping', 'WinAPI_OpenIcon', + 'WinAPI_OpenInputDesktop', 'WinAPI_OpenJobObject', 'WinAPI_OpenMutex', + 'WinAPI_OpenProcess', 'WinAPI_OpenProcessToken', + 'WinAPI_OpenSemaphore', 'WinAPI_OpenThemeData', + 'WinAPI_OpenWindowStation', 'WinAPI_PageSetupDlg', + 'WinAPI_PaintDesktop', 'WinAPI_PaintRgn', 'WinAPI_ParseURL', + 'WinAPI_ParseUserName', 'WinAPI_PatBlt', 'WinAPI_PathAddBackslash', + 'WinAPI_PathAddExtension', 'WinAPI_PathAppend', + 'WinAPI_PathBuildRoot', 'WinAPI_PathCanonicalize', + 'WinAPI_PathCommonPrefix', 'WinAPI_PathCompactPath', + 'WinAPI_PathCompactPathEx', 'WinAPI_PathCreateFromUrl', + 'WinAPI_PathFindExtension', 'WinAPI_PathFindFileName', + 'WinAPI_PathFindNextComponent', 'WinAPI_PathFindOnPath', + 'WinAPI_PathGetArgs', 'WinAPI_PathGetCharType', + 'WinAPI_PathGetDriveNumber', 'WinAPI_PathIsContentType', + 'WinAPI_PathIsDirectory', 'WinAPI_PathIsDirectoryEmpty', + 'WinAPI_PathIsExe', 'WinAPI_PathIsFileSpec', + 'WinAPI_PathIsLFNFileSpec', 'WinAPI_PathIsRelative', + 'WinAPI_PathIsRoot', 'WinAPI_PathIsSameRoot', + 'WinAPI_PathIsSystemFolder', 'WinAPI_PathIsUNC', + 'WinAPI_PathIsUNCServer', 'WinAPI_PathIsUNCServerShare', + 'WinAPI_PathMakeSystemFolder', 'WinAPI_PathMatchSpec', + 'WinAPI_PathParseIconLocation', 'WinAPI_PathRelativePathTo', + 'WinAPI_PathRemoveArgs', 'WinAPI_PathRemoveBackslash', + 'WinAPI_PathRemoveExtension', 'WinAPI_PathRemoveFileSpec', + 'WinAPI_PathRenameExtension', 'WinAPI_PathSearchAndQualify', + 'WinAPI_PathSkipRoot', 'WinAPI_PathStripPath', + 'WinAPI_PathStripToRoot', 'WinAPI_PathToRegion', + 'WinAPI_PathUndecorate', 'WinAPI_PathUnExpandEnvStrings', + 'WinAPI_PathUnmakeSystemFolder', 'WinAPI_PathUnquoteSpaces', + 'WinAPI_PathYetAnotherMakeUniqueName', 'WinAPI_PickIconDlg', + 'WinAPI_PlayEnhMetaFile', 'WinAPI_PlaySound', 'WinAPI_PlgBlt', + 'WinAPI_PointFromRect', 'WinAPI_PolyBezier', 'WinAPI_PolyBezierTo', + 'WinAPI_PolyDraw', 'WinAPI_Polygon', 'WinAPI_PostMessage', + 'WinAPI_PrimaryLangId', 'WinAPI_PrintDlg', 'WinAPI_PrintDlgEx', + 'WinAPI_PrintWindow', 'WinAPI_ProgIDFromCLSID', 'WinAPI_PtInRect', + 'WinAPI_PtInRectEx', 'WinAPI_PtInRegion', 'WinAPI_PtVisible', + 'WinAPI_QueryDosDevice', 'WinAPI_QueryInformationJobObject', + 'WinAPI_QueryPerformanceCounter', 'WinAPI_QueryPerformanceFrequency', + 'WinAPI_RadialGradientFill', 'WinAPI_ReadDirectoryChanges', + 'WinAPI_ReadFile', 'WinAPI_ReadProcessMemory', 'WinAPI_Rectangle', + 'WinAPI_RectInRegion', 'WinAPI_RectIsEmpty', 'WinAPI_RectVisible', + 'WinAPI_RedrawWindow', 'WinAPI_RegCloseKey', + 'WinAPI_RegConnectRegistry', 'WinAPI_RegCopyTree', + 'WinAPI_RegCopyTreeEx', 'WinAPI_RegCreateKey', + 'WinAPI_RegDeleteEmptyKey', 'WinAPI_RegDeleteKey', + 'WinAPI_RegDeleteKeyValue', 'WinAPI_RegDeleteTree', + 'WinAPI_RegDeleteTreeEx', 'WinAPI_RegDeleteValue', + 'WinAPI_RegDisableReflectionKey', 'WinAPI_RegDuplicateHKey', + 'WinAPI_RegEnableReflectionKey', 'WinAPI_RegEnumKey', + 'WinAPI_RegEnumValue', 'WinAPI_RegFlushKey', + 'WinAPI_RegisterApplicationRestart', 'WinAPI_RegisterClass', + 'WinAPI_RegisterClassEx', 'WinAPI_RegisterHotKey', + 'WinAPI_RegisterPowerSettingNotification', + 'WinAPI_RegisterRawInputDevices', 'WinAPI_RegisterShellHookWindow', + 'WinAPI_RegisterWindowMessage', 'WinAPI_RegLoadMUIString', + 'WinAPI_RegNotifyChangeKeyValue', 'WinAPI_RegOpenKey', + 'WinAPI_RegQueryInfoKey', 'WinAPI_RegQueryLastWriteTime', + 'WinAPI_RegQueryMultipleValues', 'WinAPI_RegQueryReflectionKey', + 'WinAPI_RegQueryValue', 'WinAPI_RegRestoreKey', 'WinAPI_RegSaveKey', + 'WinAPI_RegSetValue', 'WinAPI_ReleaseCapture', 'WinAPI_ReleaseDC', + 'WinAPI_ReleaseMutex', 'WinAPI_ReleaseSemaphore', + 'WinAPI_ReleaseStream', 'WinAPI_RemoveClipboardFormatListener', + 'WinAPI_RemoveDirectory', 'WinAPI_RemoveFontMemResourceEx', + 'WinAPI_RemoveFontResourceEx', 'WinAPI_RemoveWindowSubclass', + 'WinAPI_ReOpenFile', 'WinAPI_ReplaceFile', 'WinAPI_ReplaceTextDlg', + 'WinAPI_ResetEvent', 'WinAPI_RestartDlg', 'WinAPI_RestoreDC', + 'WinAPI_RGB', 'WinAPI_RotatePoints', 'WinAPI_RoundRect', + 'WinAPI_SaveDC', 'WinAPI_SaveFileDlg', 'WinAPI_SaveHBITMAPToFile', + 'WinAPI_SaveHICONToFile', 'WinAPI_ScaleWindowExt', + 'WinAPI_ScreenToClient', 'WinAPI_SearchPath', 'WinAPI_SelectClipPath', + 'WinAPI_SelectClipRgn', 'WinAPI_SelectObject', + 'WinAPI_SendMessageTimeout', 'WinAPI_SetActiveWindow', + 'WinAPI_SetArcDirection', 'WinAPI_SetBitmapBits', + 'WinAPI_SetBitmapDimensionEx', 'WinAPI_SetBkColor', + 'WinAPI_SetBkMode', 'WinAPI_SetBoundsRect', 'WinAPI_SetBrushOrg', + 'WinAPI_SetCapture', 'WinAPI_SetCaretBlinkTime', 'WinAPI_SetCaretPos', + 'WinAPI_SetClassLongEx', 'WinAPI_SetColorAdjustment', + 'WinAPI_SetCompression', 'WinAPI_SetCurrentDirectory', + 'WinAPI_SetCurrentProcessExplicitAppUserModelID', 'WinAPI_SetCursor', + 'WinAPI_SetDCBrushColor', 'WinAPI_SetDCPenColor', + 'WinAPI_SetDefaultPrinter', 'WinAPI_SetDeviceGammaRamp', + 'WinAPI_SetDIBColorTable', 'WinAPI_SetDIBits', + 'WinAPI_SetDIBitsToDevice', 'WinAPI_SetDllDirectory', + 'WinAPI_SetEndOfFile', 'WinAPI_SetEnhMetaFileBits', + 'WinAPI_SetErrorMode', 'WinAPI_SetEvent', 'WinAPI_SetFileAttributes', + 'WinAPI_SetFileInformationByHandleEx', 'WinAPI_SetFilePointer', + 'WinAPI_SetFilePointerEx', 'WinAPI_SetFileShortName', + 'WinAPI_SetFileValidData', 'WinAPI_SetFocus', 'WinAPI_SetFont', + 'WinAPI_SetForegroundWindow', 'WinAPI_SetFRBuffer', + 'WinAPI_SetGraphicsMode', 'WinAPI_SetHandleInformation', + 'WinAPI_SetInformationJobObject', 'WinAPI_SetKeyboardLayout', + 'WinAPI_SetKeyboardState', 'WinAPI_SetLastError', + 'WinAPI_SetLayeredWindowAttributes', 'WinAPI_SetLocaleInfo', + 'WinAPI_SetMapMode', 'WinAPI_SetMessageExtraInfo', 'WinAPI_SetParent', + 'WinAPI_SetPixel', 'WinAPI_SetPolyFillMode', + 'WinAPI_SetPriorityClass', 'WinAPI_SetProcessAffinityMask', + 'WinAPI_SetProcessShutdownParameters', + 'WinAPI_SetProcessWindowStation', 'WinAPI_SetRectRgn', + 'WinAPI_SetROP2', 'WinAPI_SetSearchPathMode', + 'WinAPI_SetStretchBltMode', 'WinAPI_SetSysColors', + 'WinAPI_SetSystemCursor', 'WinAPI_SetTextAlign', + 'WinAPI_SetTextCharacterExtra', 'WinAPI_SetTextColor', + 'WinAPI_SetTextJustification', 'WinAPI_SetThemeAppProperties', + 'WinAPI_SetThreadDesktop', 'WinAPI_SetThreadErrorMode', + 'WinAPI_SetThreadExecutionState', 'WinAPI_SetThreadLocale', + 'WinAPI_SetThreadUILanguage', 'WinAPI_SetTimer', + 'WinAPI_SetUDFColorMode', 'WinAPI_SetUserGeoID', + 'WinAPI_SetUserObjectInformation', 'WinAPI_SetVolumeMountPoint', + 'WinAPI_SetWindowDisplayAffinity', 'WinAPI_SetWindowExt', + 'WinAPI_SetWindowLong', 'WinAPI_SetWindowOrg', + 'WinAPI_SetWindowPlacement', 'WinAPI_SetWindowPos', + 'WinAPI_SetWindowRgn', 'WinAPI_SetWindowsHookEx', + 'WinAPI_SetWindowSubclass', 'WinAPI_SetWindowText', + 'WinAPI_SetWindowTheme', 'WinAPI_SetWinEventHook', + 'WinAPI_SetWorldTransform', 'WinAPI_SfcIsFileProtected', + 'WinAPI_SfcIsKeyProtected', 'WinAPI_ShellAboutDlg', + 'WinAPI_ShellAddToRecentDocs', 'WinAPI_ShellChangeNotify', + 'WinAPI_ShellChangeNotifyDeregister', + 'WinAPI_ShellChangeNotifyRegister', 'WinAPI_ShellCreateDirectory', + 'WinAPI_ShellEmptyRecycleBin', 'WinAPI_ShellExecute', + 'WinAPI_ShellExecuteEx', 'WinAPI_ShellExtractAssociatedIcon', + 'WinAPI_ShellExtractIcon', 'WinAPI_ShellFileOperation', + 'WinAPI_ShellFlushSFCache', 'WinAPI_ShellGetFileInfo', + 'WinAPI_ShellGetIconOverlayIndex', 'WinAPI_ShellGetImageList', + 'WinAPI_ShellGetKnownFolderIDList', 'WinAPI_ShellGetKnownFolderPath', + 'WinAPI_ShellGetLocalizedName', 'WinAPI_ShellGetPathFromIDList', + 'WinAPI_ShellGetSetFolderCustomSettings', 'WinAPI_ShellGetSettings', + 'WinAPI_ShellGetSpecialFolderLocation', + 'WinAPI_ShellGetSpecialFolderPath', 'WinAPI_ShellGetStockIconInfo', + 'WinAPI_ShellILCreateFromPath', 'WinAPI_ShellNotifyIcon', + 'WinAPI_ShellNotifyIconGetRect', 'WinAPI_ShellObjectProperties', + 'WinAPI_ShellOpenFolderAndSelectItems', 'WinAPI_ShellOpenWithDlg', + 'WinAPI_ShellQueryRecycleBin', + 'WinAPI_ShellQueryUserNotificationState', + 'WinAPI_ShellRemoveLocalizedName', 'WinAPI_ShellRestricted', + 'WinAPI_ShellSetKnownFolderPath', 'WinAPI_ShellSetLocalizedName', + 'WinAPI_ShellSetSettings', 'WinAPI_ShellStartNetConnectionDlg', + 'WinAPI_ShellUpdateImage', 'WinAPI_ShellUserAuthenticationDlg', + 'WinAPI_ShellUserAuthenticationDlgEx', 'WinAPI_ShortToWord', + 'WinAPI_ShowCaret', 'WinAPI_ShowCursor', 'WinAPI_ShowError', + 'WinAPI_ShowLastError', 'WinAPI_ShowMsg', 'WinAPI_ShowOwnedPopups', + 'WinAPI_ShowWindow', 'WinAPI_ShutdownBlockReasonCreate', + 'WinAPI_ShutdownBlockReasonDestroy', + 'WinAPI_ShutdownBlockReasonQuery', 'WinAPI_SizeOfResource', + 'WinAPI_StretchBlt', 'WinAPI_StretchDIBits', + 'WinAPI_StrFormatByteSize', 'WinAPI_StrFormatByteSizeEx', + 'WinAPI_StrFormatKBSize', 'WinAPI_StrFromTimeInterval', + 'WinAPI_StringFromGUID', 'WinAPI_StringLenA', 'WinAPI_StringLenW', + 'WinAPI_StrLen', 'WinAPI_StrokeAndFillPath', 'WinAPI_StrokePath', + 'WinAPI_StructToArray', 'WinAPI_SubLangId', 'WinAPI_SubtractRect', + 'WinAPI_SwapDWord', 'WinAPI_SwapQWord', 'WinAPI_SwapWord', + 'WinAPI_SwitchColor', 'WinAPI_SwitchDesktop', + 'WinAPI_SwitchToThisWindow', 'WinAPI_SystemParametersInfo', + 'WinAPI_TabbedTextOut', 'WinAPI_TerminateJobObject', + 'WinAPI_TerminateProcess', 'WinAPI_TextOut', 'WinAPI_TileWindows', + 'WinAPI_TrackMouseEvent', 'WinAPI_TransparentBlt', + 'WinAPI_TwipsPerPixelX', 'WinAPI_TwipsPerPixelY', + 'WinAPI_UnhookWindowsHookEx', 'WinAPI_UnhookWinEvent', + 'WinAPI_UnionRect', 'WinAPI_UnionStruct', 'WinAPI_UniqueHardwareID', + 'WinAPI_UnloadKeyboardLayout', 'WinAPI_UnlockFile', + 'WinAPI_UnmapViewOfFile', 'WinAPI_UnregisterApplicationRestart', + 'WinAPI_UnregisterClass', 'WinAPI_UnregisterHotKey', + 'WinAPI_UnregisterPowerSettingNotification', + 'WinAPI_UpdateLayeredWindow', 'WinAPI_UpdateLayeredWindowEx', + 'WinAPI_UpdateLayeredWindowIndirect', 'WinAPI_UpdateResource', + 'WinAPI_UpdateWindow', 'WinAPI_UrlApplyScheme', + 'WinAPI_UrlCanonicalize', 'WinAPI_UrlCombine', 'WinAPI_UrlCompare', + 'WinAPI_UrlCreateFromPath', 'WinAPI_UrlFixup', 'WinAPI_UrlGetPart', + 'WinAPI_UrlHash', 'WinAPI_UrlIs', 'WinAPI_UserHandleGrantAccess', + 'WinAPI_ValidateRect', 'WinAPI_ValidateRgn', 'WinAPI_VerQueryRoot', + 'WinAPI_VerQueryValue', 'WinAPI_VerQueryValueEx', + 'WinAPI_WaitForInputIdle', 'WinAPI_WaitForMultipleObjects', + 'WinAPI_WaitForSingleObject', 'WinAPI_WideCharToMultiByte', + 'WinAPI_WidenPath', 'WinAPI_WindowFromDC', 'WinAPI_WindowFromPoint', + 'WinAPI_WordToShort', 'WinAPI_Wow64EnableWow64FsRedirection', + 'WinAPI_WriteConsole', 'WinAPI_WriteFile', + 'WinAPI_WriteProcessMemory', 'WinAPI_ZeroMemory', + 'WinNet_AddConnection', 'WinNet_AddConnection2', + 'WinNet_AddConnection3', 'WinNet_CancelConnection', + 'WinNet_CancelConnection2', 'WinNet_CloseEnum', + 'WinNet_ConnectionDialog', 'WinNet_ConnectionDialog1', + 'WinNet_DisconnectDialog', 'WinNet_DisconnectDialog1', + 'WinNet_EnumResource', 'WinNet_GetConnection', + 'WinNet_GetConnectionPerformance', 'WinNet_GetLastError', + 'WinNet_GetNetworkInformation', 'WinNet_GetProviderName', + 'WinNet_GetResourceInformation', 'WinNet_GetResourceParent', + 'WinNet_GetUniversalName', 'WinNet_GetUser', 'WinNet_OpenEnum', + 'WinNet_RestoreConnection', 'WinNet_UseConnection', 'Word_Create', + 'Word_DocAdd', 'Word_DocAttach', 'Word_DocClose', 'Word_DocExport', + 'Word_DocFind', 'Word_DocFindReplace', 'Word_DocGet', + 'Word_DocLinkAdd', 'Word_DocLinkGet', 'Word_DocOpen', + 'Word_DocPictureAdd', 'Word_DocPrint', 'Word_DocRangeSet', + 'Word_DocSave', 'Word_DocSaveAs', 'Word_DocTableRead', + 'Word_DocTableWrite', 'Word_Quit' + ), + 5 => array( + 'ce', 'comments-end', 'comments-start', 'cs' + ), + 6 => array( + 'Au3Stripper_Ignore_Funcs', 'Au3Stripper_Ignore_Variables', + 'Au3Stripper_Off', 'Au3Stripper_On', 'Au3Stripper_Parameters', + 'AutoIt3Wrapper_Add_Constants', 'AutoIt3Wrapper_Au3Check_Parameters', + 'AutoIt3Wrapper_Au3Check_Stop_OnWarning', 'AutoIt3Wrapper_Aut2Exe', + 'AutoIt3Wrapper_AutoIt3', 'AutoIt3Wrapper_AutoIt3Dir', + 'AutoIt3Wrapper_Change2CUI', 'AutoIt3Wrapper_Compile_Both', + 'AutoIt3Wrapper_Compression', 'AutoIt3Wrapper_EndIf', + 'AutoIt3Wrapper_Icon', 'AutoIt3Wrapper_If_Compile', + 'AutoIt3Wrapper_If_Run', 'AutoIt3Wrapper_Jump_To_First_Error', + 'AutoIt3Wrapper_OutFile', 'AutoIt3Wrapper_OutFile_Type', + 'AutoIt3Wrapper_OutFile_X64', 'AutoIt3Wrapper_PlugIn_Funcs', + 'AutoIt3Wrapper_Res_Comment', 'Autoit3Wrapper_Res_Compatibility', + 'AutoIt3Wrapper_Res_Description', 'AutoIt3Wrapper_Res_Field', + 'AutoIt3Wrapper_Res_File_Add', 'AutoIt3Wrapper_Res_FileVersion', + 'AutoIt3Wrapper_Res_FileVersion_AutoIncrement', + 'AutoIt3Wrapper_Res_Icon_Add', 'AutoIt3Wrapper_Res_Language', + 'AutoIt3Wrapper_Res_LegalCopyright', + 'AutoIt3Wrapper_Res_ProductVersion', + 'AutoIt3Wrapper_Res_requestedExecutionLevel', + 'AutoIt3Wrapper_Res_SaveSource', 'AutoIt3Wrapper_Run_After', + 'AutoIt3Wrapper_Run_Au3Check', 'AutoIt3Wrapper_Run_Au3Stripper', + 'AutoIt3Wrapper_Run_Before', 'AutoIt3Wrapper_Run_Debug_Mode', + 'AutoIt3Wrapper_Run_SciTE_Minimized', + 'AutoIt3Wrapper_Run_SciTE_OutputPane_Minimized', + 'AutoIt3Wrapper_Run_Tidy', 'AutoIt3Wrapper_ShowProgress', + 'AutoIt3Wrapper_Testing', 'AutoIt3Wrapper_Tidy_Stop_OnError', + 'AutoIt3Wrapper_UPX_Parameters', 'AutoIt3Wrapper_UseUPX', + 'AutoIt3Wrapper_UseX64', 'AutoIt3Wrapper_Version', + 'AutoIt3Wrapper_Versioning', 'AutoIt3Wrapper_Versioning_Parameters', + 'Tidy_Off', 'Tidy_On', 'Tidy_Parameters', 'EndRegion', 'Region' + ), + 7 => array( + 'APPSKEY', 'BACKSPACE', 'BROWSER_BACK', 'BROWSER_FAVORITES', + 'BROWSER_FORWARD', 'BROWSER_HOME', 'BROWSER_REFRESH', 'BROWSER_SEARCH', + 'BROWSER_STOP', 'BS', 'CAPSLOCK', 'DEL', 'DELETE', 'DOWN', 'END', 'ENTER', + 'ESC', 'ESCAPE', 'F1', 'F10', 'F11', 'F12', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', + 'F8', 'F9', 'HOME', 'INS', 'INSERT', 'LAUNCH_APP1', 'LAUNCH_APP2', + 'LAUNCH_MAIL', 'LAUNCH_MEDIA', 'LEFT', 'MEDIA_NEXT', 'MEDIA_PLAY_PAUSE', + 'MEDIA_PREV', 'MEDIA_STOP', 'NUMLOCK', 'NUMPAD0', 'NUMPAD1', 'NUMPAD2', + 'NUMPAD3', 'NUMPAD4', 'NUMPAD5', 'NUMPAD6', 'NUMPAD7', 'NUMPAD8', + 'NUMPAD9', 'NUMPADADD', 'NUMPADDIV', 'NUMPADDOT', 'NUMPADENTER', + 'NUMPADMULT', 'NUMPADSUB', 'PAUSE', 'PGDN', 'PGUP', 'PRINTSCREEN', + 'RIGHT', 'SCROLLLOCK', 'SLEEP', 'SPACE', 'TAB', 'UP', 'VOLUME_DOWN', + 'VOLUME_MUTE', 'VOLUME_UP' + ), + 8 => array( + 'include', 'include-once', 'NoTrayIcon', 'OnAutoItStartRegister', + 'RequireAdmin' + ), + 9 => array( + 'pragma' + ), + 10 => array( + 'forcedef', 'forceref', 'ignorefunc' + ), + ), + 'SYMBOLS' => array( + 0 => array('(', ')', '[', ']', + '+', '-', '*', '/', '&', '^', ':', '?', + '=', '==', '+=', '-=', '*=', '/=', '&=', + '<', '<=', '>', '>=', + ',', '.' + ), + 1 => array('_' // Undersore for continuation of strings. + ), + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #0000FF;', // Keywords + 2 => 'color: #808000;', // Macros + 3 => 'color: #000090;', // Native Functions + 4 => 'color: #0080FF;', // UDF Functions + 5 => 'color: #808000;', // Comments + 6 => 'color: #DC143C;', // Directives + 7 => 'color: #5A5A5A;', // Keylist + 8 => 'color: #808000;', // PreProcessor + 9 => 'color: #DC143C;', // Pragma + 10 => 'color: #DC143C;' // Au3Check + ), + 'COMMENTS' => array( + 0 => 'color: #FF0000; font-style: italic', + 1 => 'color: #008000; font-style: italic;', + 2 => 'color: #008000; font-style: italic;', + 'MULTI' => 'color: #008000; font-style: italic;', + ), + 'ESCAPE_CHAR' => array( + 0 => '' + ), + 'BRACKETS' => array( + 0 => 'color: #FF8000;' + ), + 'STRINGS' => array( + 0 => 'color: #FF0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #0000FF;' + ), + 'METHODS' => array( + 1 => 'color: #FF0000;' + ), + 'SYMBOLS' => array( + 0 => 'color: #FF8000;', + 1 => 'color: #000000;' + ), + 'REGEXPS' => array( + 0 => 'color: #5A5A5A;', // Variables + 1 => 'color: #5A5A5A;' // Keylist + ), + 'SCRIPT' => array() + ), + 'URLS' => array( + 1 => 'https://www.autoitscript.com/autoit3/docs/keywords.htm', // Keywords + 2 => 'https://www.autoitscript.com/autoit3/docs/macros.htm#{FNAME}', // Macros + 3 => 'https://www.autoitscript.com/autoit3/docs/functions/{FNAME}.htm', // Native Functions + 4 => 'https://www.autoitscript.com/autoit3/docs/libfunctions/_{FNAME}.htm', // UDF Functions + 5 => 'https://www.autoitscript.com/autoit3/docs/keywords/comments-start.htm', // Comments + 6 => 'https://www.autoitscript.com/autoit3/scite/docs/AutoIt3Wrapper.html', // Directives + 7 => 'https://www.autoitscript.com/autoit3/docs/appendix/SendKeys.htm#KeysList', // Keylist + 8 => 'https://www.autoitscript.com/autoit3/docs/keywords/{FNAME}.htm', // PreProcessor + 9 => 'https://www.autoitscript.com/autoit3/docs/keywords/{FNAME}.htm', // Pragma + 10 => 'https://www.autoitscript.com/autoit3/docs/intro/au3check.htm' // Au3Check + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B | + GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI | + GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO, + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + 0 => '\$[a-zA-Z0-9_]*', // Variables + 1 => '\\{[a-zA-Z0-9_]+\\}' // Keylist + ), + 'STRICT_MODE_APPLIES' => GESHI_MAYBE, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array( + 0 => true, + 1 => true, + 2 => true, + 3 => true + ), + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 4 => array( + 'DISALLOWED_BEFORE' => '(? array( + 'DISALLOWED_BEFORE' => '(? array( + 'DISALLOWED_BEFORE' => '(? '(? array( + 'DISALLOWED_BEFORE' => '(? '(? array( + 'DISALLOWED_BEFORE' => '(? '(? array( + 'DISALLOWED_BEFORE' => '(? '(? 'AviSynth', + 'COMMENT_SINGLE' => array(1 => '#'), + 'COMMENT_MULTI' => array('/*' => '*/', '[*' => '*]'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + // Reserved words. + 1 => array( + 'try', 'cache', 'function', 'global', 'return' + ), + // Constants / special variables. + 2 => array( + 'true', 'yes', 'false', 'no', '__END__' + ), + // Internal Filters. + 3 => array( + 'AviSource', 'AviFileSource', 'AddBorders', 'AlignedSplice', 'AssumeFPS', 'AssumeScaledFPS', + 'AssumeFrameBased', 'AssumeFieldBased', 'AssumeBFF', 'AssumeTFF', 'Amplify', 'AmplifydB', + 'AssumeSampleRate', 'AudioDub', 'AudioDubEx', 'Animate', 'ApplyRange', + 'BicubicResize', 'BilinearResize', 'BlackmanResize', 'Blur', 'Bob', 'BlankClip', 'Blackness', + 'ColorYUV', 'ConvertBackToYUY2', 'ConvertToRGB', 'ConvertToRGB24', 'ConvertToRGB32', + 'ConvertToYUY2', 'ConvertToY8', 'ConvertToYV411', 'ConvertToYV12', 'ConvertToYV16', 'ConvertToYV24', + 'ColorKeyMask', 'Crop', 'CropBottom', 'ChangeFPS', 'ConvertFPS', 'ComplementParity', 'ConvertAudioTo8bit', + 'ConvertAudioTo16bit', 'ConvertAudioTo24bit', 'ConvertAudioTo32bit', 'ConvertAudioToFloat', 'ConvertToMono', + 'ConditionalFilter', 'ConditionalReader', 'ColorBars', 'Compare', + 'DirectShowSource', 'DeleteFrame', 'Dissolve', 'DuplicateFrame', 'DoubleWeave', 'DelayAudio', + 'EnsureVBRMP3Sync', + 'FixLuminance', 'FlipHorizontal', 'FlipVertical', 'FixBrokenChromaUpsampling', 'FadeIn0', 'FadeIn', + 'FadeIn2', 'FadeOut0', 'FadeOut', 'FadeOut2', 'FadeIO0', 'FadeIO', 'FadeIO2', 'FreezeFrame', 'FrameEvaluate', + 'GreyScale', 'GaussResize', 'GeneralConvolution', 'GetChannel', 'GetLeftChannel', 'GetRightChannel', + 'HorizontalReduceBy2', 'Histogram', + 'ImageReader', 'ImageSource', 'ImageWriter', 'Invert', 'Interleave', 'Info', + 'KillAudio', 'KillVideo', + 'Levels', 'Limiter', 'Layer', 'Letterbox', 'LanczosResize', 'Lanczos4Resize', 'Loop', + 'MergeARGB', 'MergeRGB', 'MergeChroma', 'MergeLuma', 'Merge', 'Mask', 'MaskHS', 'MergeChannels', 'MixAudio', + 'MonoToStereo', 'MessageClip', + 'Normalize', + 'OpenDMLSource', 'Overlay', + 'PointResize', 'PeculiarBlend', 'Pulldown', + 'RGBAdjust', 'ResetMask', 'Reverse', 'ResampleAudio', 'ReduceBy2', + 'SegmentedAviSource', 'SegmentedDirectShowSource', 'SoundOut', 'ShowAlpha', 'ShowRed', 'ShowGreen', + 'ShowBlue', 'SwapUV', 'Subtract', 'SincResize', 'Spline16Resize', 'Spline36Resize', 'Spline64Resize', + 'SelectEven', 'SelectOdd', 'SelectEvery', 'SelectRangeEvery', 'Sharpen', 'SpatialSoften', 'SeparateFields', + 'ShowFiveVersions', 'ShowFrameNumber', 'ShowSMPTE', 'ShowTime', 'StackHorizontal', 'StackVertical', 'Subtitle', + 'SwapFields', 'SuperEQ', 'SSRC', 'ScriptClip', + 'Tweak', 'TurnLeft', 'TurnRight', 'Turn180', 'TemporalSoften', 'TimeStretch', 'TCPServer', 'TCPSource', 'Trim', + 'Tone', + 'UToY', 'UToY8', 'UnalignedSplice', + 'VToY', 'VToY8', 'VerticalReduceBy2', 'Version', + 'WavSource', 'Weave', 'WriteFile', 'WriteFileIf', 'WriteFileStart', 'WriteFileEnd', + 'YToUV' + ), + // Internal functions. + 4 => array( + 'Abs', 'Apply', 'Assert', 'AverageLuma', 'AverageChromaU', 'AverageChromaV', + 'Ceil', 'Cos', 'Chr', 'ChromaUDifference', 'ChromaVDifference', + 'Defined', 'Default', + 'Exp', 'Exist', 'Eval', + 'Floor', 'Frac', 'Float', 'Findstr', 'GetMTMode', + 'HexValue', + 'Int', 'IsBool', 'IsClip', 'IsFloat', 'IsInt', 'IsString', 'Import', + 'LoadPlugin', 'Log', 'LCase', 'LeftStr', 'LumaDifference', 'LoadVirtualDubPlugin', 'LoadVFAPIPlugin', + 'LoadCPlugin', 'Load_Stdcall_Plugin', + 'Max', 'MulDiv', 'MidStr', + 'NOP', + 'OPT_AllowFloatAudio', 'OPT_UseWaveExtensible', + 'Pi', 'Pow', + 'Round', 'Rand', 'RevStr', 'RightStr', 'RGBDifference', 'RGBDifferenceFromPrevious', 'RGBDifferenceToNext', + 'Sin', 'Sqrt', 'Sign', 'Spline', 'StrLen', 'String', 'Select', 'SetMemoryMax', 'SetWorkingDir', 'SetMTMode', + 'SetPlanarLegacyAlignment', + 'Time', + 'UCase', 'UDifferenceFromPrevious', 'UDifferenceToNext', 'UPlaneMax', 'UPlaneMin', 'UPlaneMedian', + 'UPlaneMinMaxDifference', + 'Value', 'VersionNumber', 'VersionString', 'VDifferenceFromPrevious', 'VDifferenceToNext', 'VPlaneMax', + 'VPlaneMin', 'VPlaneMedian', 'VPlaneMinMaxDifference', + 'YDifferenceFromPrevious', 'YDifferenceToNext', 'YPlaneMax', 'YPlaneMin', 'YPlaneMedian', + 'YPlaneMinMaxDifference' + ) + ), + 'SYMBOLS' => array( + '+', '++', '-', '--', '/', '*', '%', + '=', '==', '<', '<=', '>', '>=', '<>', '!=', + '!', '?', ':', + '|', '||', '&&', + '\\', + '(', ')', '{', '}', + '.', ',' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => true, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color:#9966CC; font-weight:bold;', + 2 => 'color:#0000FF; font-weight:bold;', + 3 => 'color:#CC3300; font-weight:bold;', + 4 => 'color:#660000; font-weight:bold;' + ), + 'COMMENTS' => array( + 1 => 'color:#008000; font-style:italic;', + 'MULTI' => 'color:#000080; font-style:italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color:#000099;' + ), + 'BRACKETS' => array( + 0 => 'color:#006600; font-weight:bold;' + ), + 'STRINGS' => array( + 0 => 'color:#996600;' + ), + 'NUMBERS' => array( + 0 => 'color:#006666;' + ), + 'METHODS' => array( + 1 => 'color:#9900CC;' + ), + 'SYMBOLS' => array( + 0 => 'color:#006600; font-weight:bold;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => 'http://avisynth.org/mediawiki/{FNAME}', + 4 => '' + ), + 'REGEXPS' => array( + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'STRICT_MODE_APPLIES' => GESHI_MAYBE, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4 +); diff --git a/includes/geshi/awk.php b/includes/geshi/awk.php new file mode 100644 index 0000000..d1bc141 --- /dev/null +++ b/includes/geshi/awk.php @@ -0,0 +1,156 @@ + 'awk', + 'COMMENT_SINGLE' => array( + 1 => '#' + ), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array ( + 1 => array( + 'for', 'in', 'if', 'else', 'while', 'do', 'continue', 'break' + ), + 2 => array( + 'BEGIN', 'END' + ), + 3 => array( + 'ARGC', 'ARGV', 'CONVFMT', 'ENVIRON', + 'FILENAME', 'FNR', 'FS', 'NF', 'NR', 'OFMT', + 'OFS','ORS','RLENGTH','RS','RSTART','SUBSEP' + ), + 4 => array( + 'gsub','index','length','match','split', + 'sprintf','sub','substr','tolower','toupper', + 'atan2','cos','exp','int','log','rand', + 'sin','sqrt','srand' + ), + 5 => array( + 'print','printf','getline','close','fflush','system' + ), + 6 => array( + 'function', 'return' + ) + ), + 'SYMBOLS' => array ( + 0 => array( + '(',')','[',']','{','}' + ), + 1 => array( + '!','||','&&' + ), + 2 => array( + '<','>','<=','>=','==','!=' + ), + 3 => array( + '+','-','*','/','%','^','++','--' + ), + 4 => array( + '~','!~' + ), + 5 => array( + '?',':' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000000; font-weight: bold;', + 2 => 'color: #C20CB9; font-weight: bold;', + 3 => 'color: #4107D5; font-weight: bold;', + 4 => 'color: #07D589; font-weight: bold;', + 5 => 'color: #0BD507; font-weight: bold;', + 6 => 'color: #078CD5; font-weight: bold;' + ), + 'COMMENTS' => array( + 1 => 'color:#808080;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'SYMBOLS' => array( + 0 => 'color:black;', + 1 => 'color:black;', + 2 => 'color:black;', + 3 => 'color:black;', + 4 => 'color:#C4C364;', + 5 => 'color:black;font-weight:bold;'), + 'SCRIPT' => array(), + 'REGEXPS' => array( + 0 => 'color:#000088;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #000000;' + ), + 'BRACKETS' => array( + 0 => 'color: #7a0874; font-weight: bold;' + ), + 'METHODS' => array() + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array (), + 'REGEXPS' => array( + 0 => "\\$[a-zA-Z0-9_]+" + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array (), + 'HIGHLIGHT_STRICT_BLOCK' => array() +); diff --git a/includes/geshi/bascomavr.php b/includes/geshi/bascomavr.php new file mode 100644 index 0000000..d913135 --- /dev/null +++ b/includes/geshi/bascomavr.php @@ -0,0 +1,183 @@ + 'BASCOM AVR', + 'COMMENT_SINGLE' => array(1 => "'"), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + // Navy Blue Bold Keywords + '1WRESET' , '1WREAD' , '1WWRITE' , '1WSEARCHFIRST' , '1WSEARCHNEXT' ,'1WVERIFY' , '1WIRECOUNT', + 'CONFIG' , 'ACI' , 'ADC' , 'BCCARD' , 'CLOCK' , 'COM1' , + 'COM2' , 'PS2EMU' , 'ATEMU' , 'I2CSLAVE' , + 'INPUT', 'OUTPUT', 'GRAPHLCD' , 'KEYBOARD' , 'TIMER0' , 'TIMER1' , + 'LCDBUS' , 'LCDMODE' , '1WIRE' , 'LCD' , 'SERIALOUT' , + 'SERIALIN' , 'SPI' , 'LCDPIN' , 'SDA' , 'SCL' , + 'WATCHDOG' , 'PORT' , 'COUNTER0', 'COUNTER1' , 'TCPIP' , 'TWISLAVE' , + 'X10' , 'XRAM' , 'USB', + 'BCD' , 'GRAY2BIN' , 'BIN2GRAY' , 'BIN' , 'MAKEBCD' , 'MAKEDEC' , 'MAKEINT' , 'FORMAT' , 'FUSING' , 'BINVAL' , + 'CRC8' , 'CRC16' , 'CRC16UNI' , 'CRC32' , 'HIGH' , 'HIGHW' , 'LOW', + 'DATE' , 'TIME' , 'DATE$' , 'TIME$' , 'DAYOFWEEK' , 'DAYOFYEAR' , 'SECOFDAY' , 'SECELAPSED' , 'SYSDAY' , 'SYSSEC' , 'SYSSECELAPSED', + 'WAIT' , 'WAITMS' , 'WAITUS' , 'DELAY', + 'BSAVE' , 'BLOAD' , 'GET' , 'VER' , 'DISKFREE' , 'DIR' , 'DriveReset' , 'DriveInit' , 'LINE' , 'INITFILESYSTEM' , + 'EOF' , 'WRITE' , 'FLUSH' , 'FREEFILE' , 'FILEATTR' , 'FILEDATE' , 'FILETIME' , 'FILEDATETIME' , 'FILELEN' , 'SEEK' , + 'KILL' , 'DriveGetIdentity' , 'DriveWriteSector' , 'DriveReadSector' , 'LOC' , 'LOF' , 'PUT' , 'OPEN' , 'CLOSE', + 'GLCDCMD' , 'GLCDDATA' , 'SETFONT' , 'PSET' , 'SHOWPIC' , 'SHOWPICE' , 'CIRCLE' , 'BOX', + 'I2CINIT' , 'I2CRECEIVE' , 'I2CSEND' , 'I2CSTART','I2CSTOP','I2CRBYTE','I2CWBYTE', + 'ALIAS' , 'BITWAIT' , 'TOGGLE' , 'RESET' , 'SET' , 'SHIFTIN' , 'SHIFTOUT' , 'DEBOUNCE' , 'PULSEIN' , 'PULSEOUT', + 'IDLE' , 'POWERDOWN' , 'POWERSAVE' , 'ON', 'INTERRUPT' , 'ENABLE' , 'DISABLE' , 'START' , 'VERSION' , 'CLOCKDIVISION' , 'CRYSTAL' , 'STOP', + 'ADR' , 'ADR2' , 'WRITEEEPROM' , 'CPEEK' , 'CPEEKH' , 'PEEK' , 'POKE' , 'OUT' , 'READEEPROM' , 'DATA' , 'INP' , 'READ' , 'RESTORE' , 'LOOKDOWN' , 'LOOKUP' , 'LOOKUPSTR' , 'LOAD' , 'LOADADR' , 'LOADLABEL' , 'LOADWORDADR' , 'MEMCOPY', + 'RC5SEND' , 'RC6SEND' , 'GETRC5' , 'SONYSEND', + 'BAUD' , 'BAUD1', 'BUFSPACE' , 'CLEAR', 'ECHO' , 'WAITKEY' , 'ISCHARWAITING' , 'INKEY' , 'INPUTBIN' , 'INPUTHEX' , 'PRINT', 'PRINT1','PRINT0', 'PRINTBIN' , 'SERIN' , 'SEROUT' , 'SPC' , 'MAKEMODBUS', + 'SPIIN' , 'SPIINIT' , 'SPIMOVE' , 'SPIOUT', 'SINGLE', + 'ASC' , 'UCASE' , 'LCASE' , 'TRIM' , 'SPLIT' , 'LTRIM' , 'INSTR' , 'SPACE' , 'RTRIM' , 'LEFT' , 'LEN' , 'MID' , 'RIGHT' , 'VAL' , 'STR' , 'CHR' , 'CHECKSUM' , 'HEX' , 'HEXVAL', + 'BASE64DEC' , 'BASE64ENC' , 'IP2STR' , 'UDPREAD' , 'UDPWRITE' , 'UDPWRITESTR' , 'TCPWRITE' , 'TCPWRITESTR' , 'TCPREAD' , 'GETDSTIP' , 'GETDSTPORT' , 'SOCKETSTAT' , 'SOCKETCONNECT' , 'SOCKETLISTEN' , 'GETSOCKET' , 'CLOSESOCKET' , + 'SETTCP' , 'GETTCPREGS' , 'SETTCPREGS' , 'SETIPPROTOCOL' , 'TCPCHECKSUM', + 'HOME' , 'CURSOR' , 'UPPERLINE' , 'THIRDLINE' , 'INITLCD' , 'LOWERLINE' , 'LCDAT' , 'FOURTHLINE' , 'DISPLAY' , 'LCDCONTRAST' , 'LOCATE' , 'SHIFTCURSOR' , 'DEFLCDCHAR' , 'SHIFTLCD' , 'CLS', + 'ACOS' , 'ASIN' , 'ATN' , 'ATN2' , 'EXP' , 'RAD2DEG' , 'FRAC' , 'TAN' , 'TANH' , 'COS' , 'COSH' , 'LOG' , 'LOG10' , 'ROUND' , 'ABS' , 'INT' , 'MAX' , 'MIN' , 'SQR' , 'SGN' , 'POWER' , 'SIN' , 'SINH' , 'FIX' , 'INCR' , 'DECR' , 'DEG2RAD', + 'DBG' , 'DEBUG', 'DTMFOUT' , 'ENCODER' , 'GETADC' , 'GETKBD' , 'GETATKBD' , 'GETRC' , 'VALUE' , 'POPALL' , 'PS2MOUSEXY' , 'PUSHALL' , + 'RETURN' , 'RND' , 'ROTATE' , 'SENDSCAN' , 'SENDSCANKBD' , 'SHIFT' , 'SOUND' , 'STCHECK' , 'SWAP' , 'VARPTR' , 'X10DETECT' , 'X10SEND' , 'READMAGCARD' , 'REM' , 'BITS' , 'BYVAL' , 'CALL' , 'READHITAG', + 'Buffered', 'Size', 'Dummy', 'Parity', 'None', 'Stopbits', 'Databits', 'Clockpol', 'Synchrone', 'Prescaler', 'Reference', 'int0', 'int1', 'Interrupts', + 'Auto', 'avcc', 'ack', 'nack', 'Pin', 'Db4', 'Db3', 'Db2', 'Db1', 'Db7', 'Db6', 'Db5', 'Db0', 'e', 'rs', 'twi', + ), + 2 => array( + // Red Lowercase Keywords + '$ASM' , '$BAUD' , '$BAUD1' , '$BGF' , '$BOOT' , '$CRYSTAL' , '$DATA' , '$DBG' , '$DEFAULT' , '$EEPLEAVE' , '$EEPROM' , + '$EEPROMHEX' , '$EXTERNAL' , '$HWSTACK' , '$INC' , '$INCLUDE' , '$INITMICRO' , '$LCD' , '$LCDRS' , '$LCDPUTCTRL' , + '$LCDPUTDATA' , '$LCDVFO' , '$LIB' , '$LOADER' , '$LOADERSIZE' , '$MAP' , '$NOCOMPILE' , '$NOINIT' , '$NORAMCLEAR' , + '$PROG' , '$PROGRAMMER' , '$REGFILE' , '$RESOURCE' , '$ROMSTART', '$SERIALINPUT', '$SERIALINPUT1' , '$SERIALINPUT2LCD' , + '$SERIALOUTPUT' , '$SERIALOUTPUT1' , '$SIM' , '$SWSTACK' , '$TIMEOUT' , '$TINY' , '$WAITSTATE' , '$XRAMSIZE' , '$XRAMSTART', '$XA', + '#IF' , '#ELSE' , '#ENDIF', '$framesize' + ), + 3 => array( + // Blue Lowercase Keywords + 'IF', 'THEN', 'ELSE', 'END', 'WHILE', 'WEND', 'DO', 'LOOP', 'SELECT', 'CASE', 'FOR', 'NEXT', + 'GOSUB' , 'GOTO' , 'LOCAL' , 'SUB' , 'DEFBIT', 'DEFBYTE', 'DEFINT', 'DEFWORD', 'DEFLNG', 'DEFSNG', 'DEFDBL', + 'CONST', 'DECLARE', 'FUNCTION', 'DIM', 'EXIT', 'LONG', 'INTEGER', 'BYTE', 'AS', 'STRING', 'WORD' + ), + 4 => array( + //light blue + 'PINA.0', 'PINA.1', 'PINA.2', 'PINA.3', 'PINA.4', 'PINA.5', 'PINA.6', 'PINA.7', + 'PINB.0', 'PINB.1', 'PINB.2', 'PINB.3', 'PINB.4', 'PINB.5', 'PINB.6', 'PINB.7', + 'PINC.0', 'PINC.1', 'PINC.2', 'PINC.3', 'PINC.4', 'PINC.5', 'PINC.6', 'PINC.7', + 'PIND.0', 'PIND.1', 'PIND.2', 'PIND.3', 'PIND.4', 'PIND.5', 'PIND.6', 'PIND.7', + 'PINE.0', 'PINE.1', 'PINE.2', 'PINE.3', 'PINE.4', 'PINE.5', 'PINE.6', 'PINE.7', + 'PINF.0', 'PINF.1', 'PINF.2', 'PINF.3', 'PINF.4', 'PINF.5', 'PINF.6', 'PINF.7', + + 'PORTA.0', 'PORTA.1', 'PORTA.2', 'PORTA.3', 'PORTA.4', 'PORTA.5', 'PORTA.6', 'PORTA.7', + 'PORTB.0', 'PORTB.1', 'PORTB.2', 'PORTB.3', 'PORTB.4', 'PORTB.5', 'PORTB.6', 'PORTB.7', + 'PORTC.0', 'PORTC.1', 'PORTC.2', 'PORTC.3', 'PORTC.4', 'PORTC.5', 'PORTC.6', 'PORTC.7', + 'PORTD.0', 'PORTD.1', 'PORTD.2', 'PORTD.3', 'PORTD.4', 'PORTD.5', 'PORTD.6', 'PORTD.7', + 'PORTE.0', 'PORTE.1', 'PORTE.2', 'PORTE.3', 'PORTE.4', 'PORTE.5', 'PORTE.6', 'PORTE.7', + 'PORTF.0', 'PORTF.1', 'PORTF.2', 'PORTF.3', 'PORTF.4', 'PORTF.5', 'PORTF.6', 'PORTF.7', + + 'DDRA.0', 'DDRA.1', 'DDRA.2', 'DDRA.3', 'DDRA.4', 'DDRA.5', 'DDRA.6', 'DDRA.7', + 'DDRB.0', 'DDRB.1', 'DDRB.2', 'DDRB.3', 'DDRB.4', 'DDRB.5', 'DDRB.6', 'DDRB.7', + 'DDRC.0', 'DDRC.1', 'DDRC.2', 'DDRC.3', 'DDRC.4', 'DDRC.5', 'DDRC.6', 'DDRC.7', + 'DDRD.0', 'DDRD.1', 'DDRD.2', 'DDRD.3', 'DDRD.4', 'DDRD.5', 'DDRD.6', 'DDRD.7', + 'DDRE.0', 'DDRE.1', 'DDRE.2', 'DDRE.3', 'DDRE.4', 'DDRE.5', 'DDRE.6', 'DDRE.7', + 'DDRF.0', 'DDRF.1', 'DDRF.2', 'DDRF.3', 'DDRF.4', 'DDRF.5', 'DDRF.6', 'DDRF.7', + + 'DDRA','DDRB','DDRC','DDRD','DDRE','DDRF', + 'PORTA','PORTB','PORTC','PORTD','PORTE','PORTF', + 'PINA','PINB','PINC','PIND','PINE','PINF', + ) + ), + 'SYMBOLS' => array( + '=', '<', '>', '>=', '<=', '+', '-', '*', '/', '%', '(', ')', '{', '}', '[', ']', ';', ':', '$', '&H' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000080; font-weight: bold;', + 2 => 'color: #FF0000;', + 3 => 'color: #0000FF;', + 4 => 'color: #0080FF;', + ), + 'COMMENTS' => array( + 1 => 'color: #657CC4; font-style: italic;' + ), + 'BRACKETS' => array( + 0 => 'color: #000080;' + ), + 'STRINGS' => array( + 0 => 'color: #008000;' + ), + 'NUMBERS' => array( + 0 => 'color: #000080; font-weight: bold;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #0000FF;' + ), + 'ESCAPE_CHAR' => array( + ), + 'SCRIPT' => array( + ), + 'REGEXPS' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4 +); diff --git a/includes/geshi/bash.php b/includes/geshi/bash.php new file mode 100644 index 0000000..e81b75a --- /dev/null +++ b/includes/geshi/bash.php @@ -0,0 +1,472 @@ + 'Bash', + // Bash DOES have single line comments with # markers. But bash also has + // the $# variable, so comments need special handling (see sf.net + // 1564839) + 'COMMENT_SINGLE' => array('#'), + 'COMMENT_MULTI' => array(), + 'COMMENT_REGEXP' => array( + //Variables + 1 => "/\\$\\{[^\\n\\}]*?\\}/i", + //BASH-style Heredoc + 2 => '/<<-?\s*?(\'?)([a-zA-Z0-9]+)\1\\n.*\\n\\2(?![a-zA-Z0-9])/siU', + //Escaped String Starters + 3 => "/\\\\['\"]/siU", + // Single-Line Shell usage: Hide the prompt at the beginning + /* 4 => "/\A(?!#!)\s*(?>[\w:@\\/\\-\\._~]*[$#]\s?)?(?=[^\n]+\n?\Z)|^(?!#!)(\w+@)?[\w\\-\\.]+(:~?)[\w\\/\\-\\._]*?[$#]\s?/ms" */ + 4 => "/\A(?!#!)(?:(?>[\w:@\\/\\-\\._~]*)[$#]\s?)(?=(?>[^\n]+)\n?\Z)|^(?!#!)(?:\w+@)?(?>[\w\\-\\.]+)(?>:~?[\w\\/\\-\\._]*?)?[$#]\s?/sm" + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'HARDQUOTE' => array("'", "'"), + 'HARDESCAPE' => array("\'"), + 'ESCAPE_CHAR' => '', + 'ESCAPE_REGEXP' => array( + //Simple Single Char Escapes + 1 => "#\\\\[nfrtv\\$\\\"\n]#i", + // $var + 2 => "#\\$[a-z_][a-z0-9_]*#i", + // ${...} + 3 => "/\\$\\{[^\\n\\}]*?\\}/i", + // $(...) + 4 => "/\\$\\([^\\n\\)]*?\\)/i", + // `...` + 5 => "/`[^`]*`/" + ), + 'KEYWORDS' => array( + 1 => array( + 'case', 'do', 'done', 'elif', 'else', 'esac', 'fi', 'for', 'function', + 'if', 'in', 'select', 'set', 'then', 'until', 'while', 'time' + ), + 2 => array( + 'aclocal', 'aconnect', 'apachectl', 'apache2ctl', 'aplay', 'apm', + 'apmsleep', 'apropos', 'apt-cache', 'apt-cdrom', 'apt-config', + 'apt-file', 'apt-ftparchive', 'apt-get', 'apt-key', 'apt-listbugs', + 'apt-listchanges', 'apt-mark', 'apt-mirror', 'apt-sortpkgs', + 'apt-src', 'apticron', 'aptitude', 'aptsh', 'apxs', 'apxs2', 'ar', + 'arch', 'arecord', 'as', 'as86', 'ash', 'autoconf', 'autoheader', + 'automake', 'awk', + + 'apachectl start', 'apachectl stop', 'apachectl restart', + 'apachectl graceful', 'apachectl graceful-stop', + 'apachectl configtest', 'apachectl status', 'apachectl fullstatus', + 'apachectl help', 'apache2ctl start', 'apache2ctl stop', + 'apache2ctl restart', 'apache2ctl graceful', + 'apache2ctl graceful-stop', 'apache2ctl configtest', + 'apache2ctl status', 'apache2ctl fullstatus', 'apache2ctl help', + + 'apt-cache add', 'apt-cache depends', 'apt-cache dotty', + 'apt-cache dump', 'apt-cache dumpavail', 'apt-cache gencaches', + 'apt-cache pkgnames', 'apt-cache policy', 'apt-cache rdepends', + 'apt-cache search', 'apt-cache show', 'apt-cache showauto', + 'apt-cache showpkg', 'apt-cache showsrc', 'apt-cache stats', + 'apt-cache unmet', 'apt-cache xvcg', 'apt-cdrom add', + 'apt-cdrom ident', 'apt-config dump', 'apt-config shell', + 'apt-file find', 'apt-file list', 'apt-file purge', + 'apt-file search', 'apt-file shot', 'apt-file update', + 'apt-get autoclean', 'apt-get autoremove', 'apt-get build-dep', + 'apt-get check', 'apt-get clean', 'apt-get dist-upgrade', + 'apt-get dselect-upgrade', 'apt-get install', 'apt-get markauto', + 'apt-get purge', 'apt-get remove', 'apt-get source', + 'apt-get unmarkauto', 'apt-get update', 'apt-get upgrade', + 'apt-key add', 'apt-key adv', 'apt-key del', 'apt-key export', + 'apt-key exportall', 'apt-key finger', 'apt-key list', + 'apt-key net-update', 'apt-key update', 'apt-listbugs apt', + 'apt-listbugs list', 'apt-listbugs rss', 'apt-src build', + 'apt-src clean', 'apt-src import', 'apt-src install', + 'apt-src list', 'apt-src location', 'apt-src name', + 'apt-src remove', 'apt-src update', 'apt-src upgrade', + 'apt-src version', + + 'aptitude autoclean', 'aptitude build-dep', 'aptitude changelog', + 'aptitude clean', 'aptitude download', 'aptitude forbid-version', + 'aptitude forget-new', 'aptitude full-upgrade', 'aptitude hold', + 'aptitude install', 'aptitude markauto', 'aptitude purge', + 'aptitude reinstall', 'aptitude remove', 'aptitude safe-upgrade', + 'aptitude search', 'aptitude show', 'aptitude unhold', + 'aptitude unmarkauto', 'aptitude update', 'aptitude versions', + 'aptitude why', 'aptitude why-not', + + 'basename', 'bash', 'batctl', 'bc', 'bison', 'bunzip2', 'bzcat', + 'bzcmp', 'bzdiff', 'bzegrep', 'bzfgrep', 'bzgrep', + 'bzip2', 'bzip2recover', 'bzless', 'bzmore', + + 'c++', 'cal', 'cat', 'chattr', 'cc', 'cdda2wav', 'cdparanoia', + 'cdrdao', 'cd-read', 'cdrecord', 'chfn', 'chgrp', 'chmod', + 'chown', 'chroot', 'chsh', 'chvt', 'clear', 'cmp', 'comm', 'co', + 'col', 'cp', 'cpio', 'cpp', 'csh', 'cut', 'cvs', 'cvs-pserver', + + 'cvs add', 'cvs admin', 'cvs annotate', 'cvs checkout', + 'cvs commit', 'cvs diff', 'cvs edit', 'cvs editors', 'cvs export', + 'cvs history', 'cvs import', 'cvs init', 'cvs log', 'cvs login', + 'cvs logout', 'cvs ls', 'cvs pserver', 'cvs rannotate', + 'cvs rdiff', 'cvs release', 'cvs remove', 'cvs rlog', 'cvs rls', + 'cvs rtag', 'cvs server', 'cvs status', 'cvs tag', 'cvs unedit', + 'cvs update', 'cvs version', 'cvs watch', 'cvs watchers', + + 'dash', 'date', 'dc', 'dch', 'dcop', 'dd', 'ddate', 'ddd', + 'deallocvt', 'debconf', 'defoma', 'depmod', 'df', 'dh', + 'dialog', 'diff', 'diff3', 'dig', 'dir', 'dircolors', 'directomatic', + 'dirname', 'dmesg', 'dnsdomainname', 'domainname', 'dpkg', + 'dselect', 'du', 'dumpkeys', + + 'ed', 'egrep', 'env', 'expr', + + 'false', 'fbset', 'fdisk', 'ffmpeg', 'fgconsole','fgrep', 'file', + 'find', 'flex', 'flex++', 'fmt', 'free', 'ftp', 'funzip', 'fuser', + + 'g++', 'gawk', 'gc','gcc', 'gdb', 'gdisk', 'getent', 'getkeycodes', + 'getopt', 'gettext', 'gettextize', 'gimp', 'gimp-remote', + 'gimptool', 'gmake', 'gocr', 'grep', 'groups', 'gs', 'gunzip', + 'gzexe', 'gzip', + + 'git', 'git add', 'git add--interactive', 'git am', 'git annotate', + 'git apply', 'git archive', 'git bisect', 'git bisect--helper', + 'git blame', 'git branch', 'git bundle', 'git cat-file', + 'git check-attr', 'git checkout', 'git checkout-index', + 'git check-ref-format', 'git cherry', 'git cherry-pick', + 'git clean', 'git clone', 'git commit', 'git commit-tree', + 'git config', 'git count-objects', 'git daemon', 'git describe', + 'git diff', 'git diff-files', 'git diff-index', 'git difftool', + 'git difftool--helper', 'git diff-tree', 'git fast-export', + 'git fast-import', 'git fetch', 'git fetch-pack', + 'git filter-branch', 'git fmt-merge-msg', 'git for-each-ref', + 'git format-patch', 'git fsck', 'git fsck-objects', 'git gc', 'git gui', + 'git get-tar-commit-id', 'git grep', 'git hash-object', 'git help', + 'git http-backend', 'git http-fetch', 'git http-push', + 'git imap-send', 'git index-pack', 'git init', 'git init-db', + 'git instaweb', 'git log', 'git lost-found', 'git ls-files', + 'git ls-remote', 'git ls-tree', 'git mailinfo', 'git mailsplit', + 'git merge', 'git merge-base', 'git merge-file', 'git merge-index', + 'git merge-octopus', 'git merge-one-file', 'git merge-ours', + 'git merge-recursive', 'git merge-resolve', 'git merge-subtree', + 'git mergetool', 'git merge-tree', 'git mktag', 'git mktree', + 'git mv', 'git name-rev', 'git notes', 'git pack-objects', + 'git pack-redundant', 'git pack-refs', 'git patch-id', + 'git peek-remote', 'git prune', 'git prune-packed', 'git pull', + 'git push', 'git quiltimport', 'git read-tree', 'git rebase', + 'git rebase--interactive', 'git receive-pack', 'git reflog', + 'git relink', 'git remote', 'git remote-ftp', 'git remote-ftps', + 'git remote-http', 'git remote-https', 'git remote-testgit', + 'git repack', 'git replace', 'git repo-config', 'git request-pull', + 'git rerere', 'git reset', 'git revert', 'git rev-list', + 'git rev-parse', 'git rm', 'git send-pack', 'git shell', + 'git shortlog', 'git show', 'git show-branch', 'git show-index', + 'git show-ref', 'git stage', 'git stash', 'git status', + 'git stripspace', 'git submodule', 'git symbolic-ref', 'git tag', + 'git tar-tree', 'git unpack-file', 'git unpack-objects', + 'git update-index', 'git update-ref', 'git update-server-info', + 'git upload-archive', 'git upload-pack', 'git var', + 'git verify-pack', 'git verify-tag', 'git web--browse', + 'git whatchanged', 'git write-tree', + + 'gitaction', 'git-add', 'git-add--interactive', 'git-am', + 'git-annotate', 'git-apply', 'git-archive', 'git-bisect', + 'git-bisect--helper', 'git-blame', 'git-branch', 'git-bundle', + 'git-cat-file', 'git-check-attr', 'git-checkout', + 'git-checkout-index', 'git-check-ref-format', 'git-cherry', + 'git-cherry-pick', 'git-clean', 'git-clone', 'git-commit', + 'git-commit-tree', 'git-config', 'git-count-objects', 'git-daemon', + 'git-describe', 'git-diff', 'git-diff-files', 'git-diff-index', + 'git-difftool', 'git-difftool--helper', 'git-diff-tree', + 'gitdpkgname', 'git-fast-export', 'git-fast-import', 'git-fetch', + 'git-fetch-pack', 'git-fetch--tool', 'git-filter-branch', 'gitfm', + 'git-fmt-merge-msg', 'git-for-each-ref', 'git-format-patch', + 'git-fsck', 'git-fsck-objects', 'git-gc', 'git-get-tar-commit-id', + 'git-grep', 'git-hash-object', 'git-help', 'git-http-fetch', + 'git-http-push', 'git-imap-send', 'git-index-pack', 'git-init', + 'git-init-db', 'git-instaweb', 'gitkeys', 'git-log', + 'git-lost-found', 'git-ls-files', 'git-ls-remote', 'git-ls-tree', + 'git-mailinfo', 'git-mailsplit', 'git-merge', 'git-merge-base', + 'git-merge-file', 'git-merge-index', 'git-merge-octopus', + 'git-merge-one-file', 'git-merge-ours', 'git-merge-recursive', + 'git-merge-resolve', 'git-merge-subtree', 'git-mergetool', + 'git-mergetool--lib', 'git-merge-tree', 'gitmkdirs', 'git-mktag', + 'git-mktree', 'gitmount', 'git-mv', 'git-name-rev', + 'git-pack-objects', 'git-pack-redundant', 'git-pack-refs', + 'git-parse-remote', 'git-patch-id', 'git-peek-remote', 'git-prune', + 'git-prune-packed', 'gitps', 'git-pull', 'git-push', + 'git-quiltimport', 'git-read-tree', 'git-rebase', + 'git-rebase--interactive', 'git-receive-pack', 'git-reflog', + 'gitregrep', 'git-relink', 'git-remote', 'git-repack', + 'git-repo-config', 'git-request-pull', 'git-rerere', 'git-reset', + 'git-revert', 'git-rev-list', 'git-rev-parse', 'gitrfgrep', + 'gitrgrep', 'git-rm', 'git-send-pack', 'git-shell', 'git-shortlog', + 'git-show', 'git-show-branch', 'git-show-index', 'git-show-ref', + 'git-sh-setup', 'git-stage', 'git-stash', 'git-status', + 'git-stripspace', 'git-submodule', 'git-svn', 'git-symbolic-ref', + 'git-tag', 'git-tar-tree', 'gitunpack', 'git-unpack-file', + 'git-unpack-objects', 'git-update-index', 'git-update-ref', + 'git-update-server-info', 'git-upload-archive', 'git-upload-pack', + 'git-var', 'git-verify-pack', 'git-verify-tag', 'gitview', + 'git-web--browse', 'git-whatchanged', 'gitwhich', 'gitwipe', + 'git-write-tree', 'gitxgrep', + + 'head', 'hexdump', 'hostname', 'htop', + + 'id', 'ifconfig', 'ifdown', 'ifup', 'igawk', 'install', + + 'ip', 'ip addr', 'ip addrlabel', 'ip link', 'ip maddr', 'ip mroute', + 'ip neigh', 'ip route', 'ip rule', 'ip tunnel', 'ip xfrm', + + 'jar', 'java', 'javac', 'join', + + 'kbd_mode','kbdrate', 'kdialog', 'kfile', 'kill', 'killall', + + 'lame', 'last', 'lastb', 'ld', 'ld86', 'ldd', 'less', 'lex', 'link', + 'ln', 'loadkeys', 'loadunimap', 'locate', 'lockfile', 'login', + 'logname', 'lp', 'lpr', 'ls', 'lsattr', 'lsmod', 'lsmod.old', + 'lspci', 'ltrace', 'lynx', + + 'm4', 'make', 'man', 'mapscrn', 'mesg', 'mkdir', 'mkfifo', + 'mknod', 'mktemp', 'more', 'mount', 'mplayer', 'msgfmt', 'mv', + + 'namei', 'nano', 'nasm', 'nawk', 'netstat', 'nice', + 'nisdomainname', 'nl', 'nm', 'nm86', 'nmap', 'nohup', 'nop', + + 'od', 'openvt', + + 'passwd', 'patch', 'pbzip2', 'pcregrep', 'pcretest', 'perl', + 'perror', 'pgawk', 'pidof', 'pigz', 'ping', 'pr', 'procmail', + 'prune', 'ps', 'pstree', 'ps2ascii', 'ps2epsi', 'ps2frag', + 'ps2pdf', 'ps2ps', 'psbook', 'psmerge', 'psnup', 'psresize', + 'psselect', 'pstops', + + 'rbash', 'rcs', 'rcs2log', 'read', 'readlink', 'red', 'resizecons', + 'rev', 'rm', 'rmdir', 'rsh', 'run-parts', + + 'sash', 'scp', 'screen', 'sed', 'seq', 'sendmail', 'setfont', + 'setkeycodes', 'setleds', 'setmetamode', 'setserial', 'setterm', + 'sh', 'showkey', 'shred', 'size', 'size86', 'skill', 'sleep', + 'slogin', 'snice', 'sort', 'sox', 'split', 'ssed', 'ssh', 'ssh-add', + 'ssh-agent', 'ssh-keygen', 'ssh-keyscan', 'sshfs', 'stat', 'strace', + 'strings', 'strip', 'stty', 'su', 'sudo', 'suidperl', 'sum', 'svn', + 'svnadmin', 'svndumpfilter', 'svnlook', 'svnmerge', 'svnmucc', + 'svnserve', 'svnshell', 'svnsync', 'svnversion', 'svnwrap', 'sync', + + 'svn add', 'svn ann', 'svn annotate', 'svn blame', 'svn cat', + 'svn changelist', 'svn checkout', 'svn ci', 'svn cl', 'svn cleanup', + 'svn co', 'svn commit', 'svn copy', 'svn cp', 'svn del', + 'svn delete', 'svn di', 'svn diff', 'svn export', 'svn help', + 'svn import', 'svn info', 'svn list', 'svn lock', 'svn log', + 'svn ls', 'svn merge', 'svn mergeinfo', 'svn mkdir', 'svn move', + 'svn mv', 'svn patch', 'svn pd', 'svn pdel', 'svn pe', 'svn pedit', + 'svn pg', 'svn pget', 'svn pl', 'svn plist', 'svn praise', + 'svn propdel', 'svn propedit', 'svn propget', 'svn proplist', + 'svn propset', 'svn ps', 'svn pset', 'svn relocate', 'svn remove', + 'svn rename', 'svn resolve', 'svn resolved', 'svn revert', 'svn rm', + 'svn st', 'svn stat', 'svn status', 'svn sw', 'svn switch', + 'svn unlock', 'svn up', 'svn update', 'svn upgrade', + + 'svnadmin crashtest', 'svnadmin create', 'svnadmin deltify', + 'svnadmin dump', 'svnadmin help', 'svnadmin hotcopy', + 'svnadmin list-dblogs', 'svnadmin list-unused-dblogs', + 'svnadmin load', 'svnadmin lslocks', 'svnadmin lstxns', + 'svnadmin pack', 'svnadmin recover', 'svnadmin rmlocks', + 'svnadmin rmtxns', 'svnadmin setlog', 'svnadmin setrevprop', + 'svnadmin setuuid', 'svnadmin upgrade', 'svnadmin verify', + + 'svndumpfilter exclude', 'svndumpfilter help', + 'svndumpfilter include', + + 'svnlook author', 'svnlook cat', 'svnlook changed', 'svnlook date', + 'svnlook diff', 'svnlook dirs-changed', 'svnlook filesize', + 'svnlook help', 'svnlook history', 'svnlook info', 'svnlook lock', + 'svnlook log', 'svnlook pg', 'svnlook pget', 'svnlook pl', + 'svnlook plist', 'svnlook propget', 'svnlook proplist', + 'svnlook tree', 'svnlook uuid', 'svnlook youngest', + + 'svnrdump dump', 'svnrdump help', 'svnrdump load', + + 'svnsync copy-revprops', 'svnsync help', 'svnsync info', + 'svnsync init', 'svnsync initialize', 'svnsync sync', + 'svnsync synchronize', + + 'tac', 'tail', 'tar', 'tee', 'tempfile', 'touch', 'tr', 'tree', + 'true', + + 'umount', 'uname', 'unicode_start', 'unicode_stop', 'uniq', + 'unlink', 'unzip', 'updatedb', 'updmap', 'uptime', 'users', + 'utmpdump', 'uuidgen', + + 'valgrind', 'vdir', 'vi', 'vim', 'vmstat', + + 'w', 'wall', 'watch', 'wc', 'wget', 'whatis', 'whereis', + 'which', 'whiptail', 'who', 'whoami', 'whois', 'wine', 'wineboot', + 'winebuild', 'winecfg', 'wineconsole', 'winedbg', 'winedump', + 'winefile', 'wodim', 'write', + + 'xargs', 'xhost', 'xmodmap', 'xset', + + 'yacc', 'yes', 'ypdomainname', 'yum', + + 'yum check-update', 'yum clean', 'yum deplist', 'yum erase', + 'yum groupinfo', 'yum groupinstall', 'yum grouplist', + 'yum groupremove', 'yum groupupdate', 'yum info', 'yum install', + 'yum list', 'yum localinstall', 'yum localupdate', 'yum makecache', + 'yum provides', 'yum remove', 'yum resolvedep', 'yum search', + 'yum shell', 'yum update', 'yum upgrade', 'yum whatprovides', + + 'zcat', 'zcmp', 'zdiff', 'zdump', 'zegrep', 'zfgrep', 'zforce', + 'zgrep', 'zip', 'zipgrep', 'zipinfo', 'zless', 'zmore', 'znew', + 'zsh', 'zsoelim' + ), + 3 => array( + 'alias', 'bg', 'bind', 'break', 'builtin', 'cd', 'command', + 'compgen', 'complete', 'continue', 'declare', 'dirs', 'disown', + 'echo', 'enable', 'eval', 'exec', 'exit', 'export', 'fc', + 'fg', 'getopts', 'hash', 'help', 'history', 'jobs', 'let', + 'local', 'logout', 'popd', 'printf', 'pushd', 'pwd', 'readonly', + 'return', 'shift', 'shopt', 'source', 'suspend', 'test', 'times', + 'trap', 'type', 'typeset', 'ulimit', 'umask', 'unalias', 'unset', + 'wait' + ) + ), + 'SYMBOLS' => array( + '(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>', ';;', '`' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000000; font-weight: bold;', + 2 => 'color: #c20cb9; font-weight: bold;', + 3 => 'color: #7a0874; font-weight: bold;' + ), + 'COMMENTS' => array( + 0 => 'color: #666666; font-style: italic;', + 1 => 'color: #800000;', + 2 => 'color: #cc0000; font-style: italic;', + 3 => 'color: #000000; font-weight: bold;', + 4 => 'color: #666666;' + ), + 'ESCAPE_CHAR' => array( + 1 => 'color: #000099; font-weight: bold;', + 2 => 'color: #007800;', + 3 => 'color: #007800;', + 4 => 'color: #007800;', + 5 => 'color: #780078;', + 'HARD' => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #7a0874; font-weight: bold;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;', + 'HARD' => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #000000;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #000000; font-weight: bold;' + ), + 'REGEXPS' => array( + 0 => 'color: #007800;', + 1 => 'color: #007800;', + 2 => 'color: #007800;', + 4 => 'color: #007800;', + 5 => 'color: #660033;' + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + //Variables (will be handled by comment_regexps) + 0 => "\\$\\{[a-zA-Z_][a-zA-Z0-9_]*?\\}", + //Variables without braces + 1 => "\\$[a-zA-Z_][a-zA-Z0-9_]*", + //Variable assignment + 2 => "(? "\\$[*#\$\\-\\?!\d]", + //Parameters of commands + 5 => "(?<=\s)--?[0-9a-zA-Z\-]+(?=[\s=]|<(?:SEMI|PIPE)>|$)" + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4, + 'PARSER_CONTROL' => array( + 'COMMENTS' => array( + 'DISALLOWED_BEFORE' => '$' + ), + 'KEYWORDS' => array( + 'DISALLOWED_BEFORE' => "(? "(?![\.\-a-zA-Z0-9_%=\\/:])", + 2 => array( + 'SPACE_AS_WHITESPACE' => false + ) + ) + ) +); diff --git a/includes/geshi/basic4gl.php b/includes/geshi/basic4gl.php new file mode 100644 index 0000000..b0574ce --- /dev/null +++ b/includes/geshi/basic4gl.php @@ -0,0 +1,339 @@ + 'Basic4GL', + 'COMMENT_SINGLE' => array(1 => "'"), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + + // Navy Blue Bold Keywords + + 'true','rnd_max','m_pi','m_e','false','VK_ZOOM','VK_UP','VK_TAB','VK_SUBTRACT','VK_SPACE','VK_SNAPSHOT', + 'VK_SHIFT','VK_SEPARATOR','VK_SELECT','VK_SCROLL','VK_RWIN','VK_RSHIFT','VK_RMENU','VK_RIGHT','VK_RETURN', + 'VK_RCONTROL','VK_RBUTTON','VK_PROCESSKEY','VK_PRIOR','VK_PRINT','VK_PLAY','VK_PAUSE','VK_NUMPAD9','VK_NUMPAD8', + 'VK_NUMPAD7','VK_NUMPAD6','VK_NUMPAD5','VK_NUMPAD4','VK_NUMPAD3','VK_NUMPAD2','VK_NUMPAD1','VK_NUMPAD0', + 'VK_NUMLOCK','VK_NONCONVERT','VK_NEXT','VK_MULTIPLY','VK_MODECHANGE','VK_MENU','VK_MBUTTON','VK_LWIN', + 'VK_LSHIFT','VK_LMENU','VK_LEFT','VK_LCONTROL','VK_LBUTTON','VK_KANJI','VK_KANA','VK_JUNJA','VK_INSERT', + 'VK_HOME','VK_HELP','VK_HANJA','VK_HANGUL','VK_HANGEUL','VK_FINAL','VK_F9','VK_F8','VK_F7','VK_F6','VK_F5', + 'VK_F4','VK_F3','VK_F24','VK_F23','VK_F22','VK_F21','VK_F20','VK_F2','VK_F19','VK_F18','VK_F17','VK_F16', + 'VK_F15','VK_F14','VK_F13','VK_F12','VK_F11','VK_F10','VK_F1','VK_EXSEL','VK_EXECUTE','VK_ESCAPE','VK_EREOF', + 'VK_END','VK_DOWN','VK_DIVIDE','VK_DELETE','VK_DECIMAL','VK_CRSEL','VK_CONVERT','VK_CONTROL','VK_CLEAR', + 'VK_CAPITAL','VK_CANCEL','VK_BACK','VK_ATTN','VK_APPS','VK_ADD','VK_ACCEPT','TEXT_SIMPLE','TEXT_OVERLAID', + 'TEXT_BUFFERED','SPR_TILEMAP','SPR_SPRITE','SPR_INVALID','MOUSE_RBUTTON','MOUSE_MBUTTON','MOUSE_LBUTTON', + 'GL_ZOOM_Y','GL_ZOOM_X','GL_ZERO','GL_XOR','GL_WIN_swap_hint','GL_WIN_draw_range_elements','GL_VIEWPORT_BIT', + 'GL_VIEWPORT','GL_VERTEX_ARRAY_TYPE_EXT','GL_VERTEX_ARRAY_TYPE','GL_VERTEX_ARRAY_STRIDE_EXT','GL_VERTEX_ARRAY_STRIDE', + 'GL_VERTEX_ARRAY_SIZE_EXT','GL_VERTEX_ARRAY_SIZE','GL_VERTEX_ARRAY_POINTER_EXT','GL_VERTEX_ARRAY_POINTER', + 'GL_VERTEX_ARRAY_EXT','GL_VERTEX_ARRAY_COUNT_EXT','GL_VERTEX_ARRAY','GL_VERSION_1_1','GL_VERSION','GL_VENDOR', + 'GL_V3F','GL_V2F','GL_UNSIGNED_SHORT','GL_UNSIGNED_INT','GL_UNSIGNED_BYTE','GL_UNPACK_SWAP_BYTES','GL_UNPACK_SKIP_ROWS', + 'GL_UNPACK_SKIP_PIXELS','GL_UNPACK_ROW_LENGTH','GL_UNPACK_LSB_FIRST','GL_UNPACK_ALIGNMENT','GL_TRUE','GL_TRIANGLE_STRIP', + 'GL_TRIANGLE_FAN','GL_TRIANGLES','GL_TRANSFORM_BIT','GL_TEXTURE_WRAP_T','GL_TEXTURE_WRAP_S','GL_TEXTURE_WIDTH', + 'GL_TEXTURE_STACK_DEPTH','GL_TEXTURE_RESIDENT','GL_TEXTURE_RED_SIZE','GL_TEXTURE_PRIORITY','GL_TEXTURE_MIN_FILTER', + 'GL_TEXTURE_MATRIX','GL_TEXTURE_MAG_FILTER','GL_TEXTURE_LUMINANCE_SIZE','GL_TEXTURE_INTERNAL_FORMAT','GL_TEXTURE_INTENSITY_SIZE', + 'GL_TEXTURE_HEIGHT','GL_TEXTURE_GREEN_SIZE','GL_TEXTURE_GEN_T','GL_TEXTURE_GEN_S','GL_TEXTURE_GEN_R','GL_TEXTURE_GEN_Q', + 'GL_TEXTURE_GEN_MODE','GL_TEXTURE_ENV_MODE','GL_TEXTURE_ENV_COLOR','GL_TEXTURE_ENV','GL_TEXTURE_COORD_ARRAY_TYPE_EXT', + 'GL_TEXTURE_COORD_ARRAY_TYPE','GL_TEXTURE_COORD_ARRAY_STRIDE_EXT','GL_TEXTURE_COORD_ARRAY_STRIDE','GL_TEXTURE_COORD_ARRAY_SIZE_EXT', + 'GL_TEXTURE_COORD_ARRAY_SIZE','GL_TEXTURE_COORD_ARRAY_POINTER_EXT','GL_TEXTURE_COORD_ARRAY_POINTER','GL_TEXTURE_COORD_ARRAY_EXT', + 'GL_TEXTURE_COORD_ARRAY_COUNT_EXT','GL_TEXTURE_COORD_ARRAY','GL_TEXTURE_COMPONENTS','GL_TEXTURE_BORDER_COLOR','GL_TEXTURE_BORDER', + 'GL_TEXTURE_BLUE_SIZE','GL_TEXTURE_BIT','GL_TEXTURE_BINDING_2D','GL_TEXTURE_BINDING_1D','GL_TEXTURE_ALPHA_SIZE', + 'GL_TEXTURE_2D','GL_TEXTURE_1D','GL_TEXTURE9_ARB','GL_TEXTURE9','GL_TEXTURE8_ARB','GL_TEXTURE8','GL_TEXTURE7_ARB', + 'GL_TEXTURE7','GL_TEXTURE6_ARB','GL_TEXTURE6','GL_TEXTURE5_ARB','GL_TEXTURE5','GL_TEXTURE4_ARB','GL_TEXTURE4', + 'GL_TEXTURE3_ARB','GL_TEXTURE31_ARB','GL_TEXTURE31','GL_TEXTURE30_ARB','GL_TEXTURE30','GL_TEXTURE3','GL_TEXTURE2_ARB', + 'GL_TEXTURE29_ARB','GL_TEXTURE29','GL_TEXTURE28_ARB','GL_TEXTURE28','GL_TEXTURE27_ARB','GL_TEXTURE27','GL_TEXTURE26_ARB', + 'GL_TEXTURE26','GL_TEXTURE25_ARB','GL_TEXTURE25','GL_TEXTURE24_ARB','GL_TEXTURE24','GL_TEXTURE23_ARB','GL_TEXTURE23', + 'GL_TEXTURE22_ARB','GL_TEXTURE22','GL_TEXTURE21_ARB','GL_TEXTURE21','GL_TEXTURE20_ARB','GL_TEXTURE20','GL_TEXTURE2', + 'GL_TEXTURE1_ARB','GL_TEXTURE19_ARB','GL_TEXTURE19','GL_TEXTURE18_ARB','GL_TEXTURE18','GL_TEXTURE17_ARB', + 'GL_TEXTURE17','GL_TEXTURE16_ARB','GL_TEXTURE16','GL_TEXTURE15_ARB','GL_TEXTURE15','GL_TEXTURE14_ARB','GL_TEXTURE14', + 'GL_TEXTURE13_ARB','GL_TEXTURE13','GL_TEXTURE12_ARB','GL_TEXTURE12','GL_TEXTURE11_ARB','GL_TEXTURE11','GL_TEXTURE10_ARB', + 'GL_TEXTURE10','GL_TEXTURE1','GL_TEXTURE0_ARB','GL_TEXTURE0','GL_TEXTURE','GL_T4F_V4F','GL_T4F_C4F_N3F_V4F','GL_T2F_V3F', + 'GL_T2F_N3F_V3F','GL_T2F_C4UB_V3F','GL_T2F_C4F_N3F_V3F','GL_T2F_C3F_V3F','GL_T','GL_SUBPIXEL_BITS','GL_STEREO', + 'GL_STENCIL_WRITEMASK','GL_STENCIL_VALUE_MASK','GL_STENCIL_TEST','GL_STENCIL_REF','GL_STENCIL_PASS_DEPTH_PASS', + 'GL_STENCIL_PASS_DEPTH_FAIL','GL_STENCIL_INDEX','GL_STENCIL_FUNC','GL_STENCIL_FAIL','GL_STENCIL_CLEAR_VALUE', + 'GL_STENCIL_BUFFER_BIT','GL_STENCIL_BITS','GL_STENCIL','GL_STACK_UNDERFLOW','GL_STACK_OVERFLOW','GL_SRC_COLOR', + 'GL_SRC_ALPHA_SATURATE','GL_SRC_ALPHA','GL_SPOT_EXPONENT','GL_SPOT_DIRECTION','GL_SPOT_CUTOFF','GL_SPHERE_MAP', + 'GL_SPECULAR','GL_SOURCE2_RGB_EXT','GL_SOURCE2_RGB','GL_SOURCE2_ALPHA_EXT','GL_SOURCE2_ALPHA','GL_SOURCE1_RGB_EXT', + 'GL_SOURCE1_RGB','GL_SOURCE1_ALPHA_EXT','GL_SOURCE1_ALPHA','GL_SOURCE0_RGB_EXT','GL_SOURCE0_RGB','GL_SOURCE0_ALPHA_EXT', + 'GL_SOURCE0_ALPHA','GL_SMOOTH','GL_SHORT','GL_SHININESS','GL_SHADE_MODEL','GL_SET','GL_SELECTION_BUFFER_SIZE', + 'GL_SELECTION_BUFFER_POINTER','GL_SELECT','GL_SCISSOR_TEST','GL_SCISSOR_BOX','GL_SCISSOR_BIT','GL_S','GL_RIGHT', + 'GL_RGB_SCALE_EXT','GL_RGB_SCALE','GL_RGBA_MODE','GL_RGBA8','GL_RGBA4','GL_RGBA2','GL_RGBA16','GL_RGBA12','GL_RGBA', + 'GL_RGB8','GL_RGB5_A1','GL_RGB5','GL_RGB4','GL_RGB16','GL_RGB12','GL_RGB10_A2','GL_RGB10','GL_RGB','GL_RETURN', + 'GL_REPLACE','GL_REPEAT','GL_RENDER_MODE','GL_RENDERER','GL_RENDER','GL_RED_SCALE','GL_RED_BITS','GL_RED_BIAS', + 'GL_RED','GL_READ_BUFFER','GL_R3_G3_B2','GL_R','GL_QUAD_STRIP','GL_QUADS','GL_QUADRATIC_ATTENUATION','GL_Q', + 'GL_PROXY_TEXTURE_2D','GL_PROXY_TEXTURE_1D','GL_PROJECTION_STACK_DEPTH','GL_PROJECTION_MATRIX','GL_PROJECTION', + 'GL_PRIMARY_COLOR_EXT','GL_PRIMARY_COLOR','GL_PREVIOUS_EXT','GL_PREVIOUS','GL_POSITION','GL_POLYGON_TOKEN', + 'GL_POLYGON_STIPPLE_BIT','GL_POLYGON_STIPPLE','GL_POLYGON_SMOOTH_HINT','GL_POLYGON_SMOOTH','GL_POLYGON_OFFSET_UNITS', + 'GL_POLYGON_OFFSET_POINT','GL_POLYGON_OFFSET_LINE','GL_POLYGON_OFFSET_FILL','GL_POLYGON_OFFSET_FACTOR','GL_POLYGON_MODE', + 'GL_POLYGON_BIT','GL_POLYGON','GL_POINT_TOKEN','GL_POINT_SMOOTH_HINT','GL_POINT_SMOOTH','GL_POINT_SIZE_RANGE', + 'GL_POINT_SIZE_GRANULARITY','GL_POINT_SIZE','GL_POINT_BIT','GL_POINTS','GL_POINT','GL_PIXEL_MODE_BIT', + 'GL_PIXEL_MAP_S_TO_S_SIZE','GL_PIXEL_MAP_S_TO_S','GL_PIXEL_MAP_R_TO_R_SIZE','GL_PIXEL_MAP_R_TO_R','GL_PIXEL_MAP_I_TO_R_SIZE', + 'GL_PIXEL_MAP_I_TO_R','GL_PIXEL_MAP_I_TO_I_SIZE','GL_PIXEL_MAP_I_TO_I','GL_PIXEL_MAP_I_TO_G_SIZE','GL_PIXEL_MAP_I_TO_G', + 'GL_PIXEL_MAP_I_TO_B_SIZE','GL_PIXEL_MAP_I_TO_B','GL_PIXEL_MAP_I_TO_A_SIZE','GL_PIXEL_MAP_I_TO_A','GL_PIXEL_MAP_G_TO_G_SIZE', + 'GL_PIXEL_MAP_G_TO_G','GL_PIXEL_MAP_B_TO_B_SIZE','GL_PIXEL_MAP_B_TO_B','GL_PIXEL_MAP_A_TO_A_SIZE','GL_PIXEL_MAP_A_TO_A', + 'GL_PHONG_WIN','GL_PHONG_HINT_WIN','GL_PERSPECTIVE_CORRECTION_HINT','GL_PASS_THROUGH_TOKEN','GL_PACK_SWAP_BYTES', + 'GL_PACK_SKIP_ROWS','GL_PACK_SKIP_PIXELS','GL_PACK_ROW_LENGTH','GL_PACK_LSB_FIRST','GL_PACK_ALIGNMENT','GL_OUT_OF_MEMORY', + 'GL_OR_REVERSE','GL_OR_INVERTED','GL_ORDER','GL_OR','GL_OPERAND2_RGB_EXT','GL_OPERAND2_RGB','GL_OPERAND2_ALPHA_EXT', + 'GL_OPERAND2_ALPHA','GL_OPERAND1_RGB_EXT','GL_OPERAND1_RGB','GL_OPERAND1_ALPHA_EXT','GL_OPERAND1_ALPHA','GL_OPERAND0_RGB_EXT', + 'GL_OPERAND0_RGB','GL_OPERAND0_ALPHA_EXT','GL_OPERAND0_ALPHA','GL_ONE_MINUS_SRC_COLOR','GL_ONE_MINUS_SRC_ALPHA', + 'GL_ONE_MINUS_DST_COLOR','GL_ONE_MINUS_DST_ALPHA','GL_ONE','GL_OBJECT_PLANE','GL_OBJECT_LINEAR','GL_NO_ERROR', + 'GL_NOTEQUAL','GL_NORMAL_ARRAY_TYPE_EXT','GL_NORMAL_ARRAY_TYPE','GL_NORMAL_ARRAY_STRIDE_EXT','GL_NORMAL_ARRAY_STRIDE', + 'GL_NORMAL_ARRAY_POINTER_EXT','GL_NORMAL_ARRAY_POINTER','GL_NORMAL_ARRAY_EXT','GL_NORMAL_ARRAY_COUNT_EXT', + 'GL_NORMAL_ARRAY','GL_NORMALIZE','GL_NOR','GL_NOOP','GL_NONE','GL_NICEST','GL_NEVER','GL_NEAREST_MIPMAP_NEAREST','GL_NEAREST_MIPMAP_LINEAR', + 'GL_NEAREST','GL_NAND','GL_NAME_STACK_DEPTH','GL_N3F_V3F','GL_MULT','GL_MODULATE','GL_MODELVIEW_STACK_DEPTH','GL_MODELVIEW_MATRIX', + 'GL_MODELVIEW','GL_MAX_VIEWPORT_DIMS','GL_MAX_TEXTURE_UNITS_ARB','GL_MAX_TEXTURE_UNITS','GL_MAX_TEXTURE_STACK_DEPTH', + 'GL_MAX_TEXTURE_SIZE','GL_MAX_PROJECTION_STACK_DEPTH','GL_MAX_PIXEL_MAP_TABLE','GL_MAX_NAME_STACK_DEPTH','GL_MAX_MODELVIEW_STACK_DEPTH', + 'GL_MAX_LIST_NESTING','GL_MAX_LIGHTS','GL_MAX_EVAL_ORDER','GL_MAX_ELEMENTS_VERTICES_WIN','GL_MAX_ELEMENTS_INDICES_WIN', + 'GL_MAX_CLIP_PLANES','GL_MAX_CLIENT_ATTRIB_STACK_DEPTH','GL_MAX_ATTRIB_STACK_DEPTH','GL_MATRIX_MODE','GL_MAP_STENCIL', + 'GL_MAP_COLOR','GL_MAP2_VERTEX_4','GL_MAP2_VERTEX_3','GL_MAP2_TEXTURE_COORD_4','GL_MAP2_TEXTURE_COORD_3','GL_MAP2_TEXTURE_COORD_2', + 'GL_MAP2_TEXTURE_COORD_1','GL_MAP2_NORMAL','GL_MAP2_INDEX','GL_MAP2_GRID_SEGMENTS','GL_MAP2_GRID_DOMAIN','GL_MAP2_COLOR_4', + 'GL_MAP1_VERTEX_4','GL_MAP1_VERTEX_3','GL_MAP1_TEXTURE_COORD_4','GL_MAP1_TEXTURE_COORD_3','GL_MAP1_TEXTURE_COORD_2', + 'GL_MAP1_TEXTURE_COORD_1','GL_MAP1_NORMAL','GL_MAP1_INDEX','GL_MAP1_GRID_SEGMENTS','GL_MAP1_GRID_DOMAIN', + 'GL_MAP1_COLOR_4','GL_LUMINANCE_ALPHA','GL_LUMINANCE8_ALPHA8','GL_LUMINANCE8','GL_LUMINANCE6_ALPHA2','GL_LUMINANCE4_ALPHA4', + 'GL_LUMINANCE4','GL_LUMINANCE16_ALPHA16','GL_LUMINANCE16','GL_LUMINANCE12_ALPHA4','GL_LUMINANCE12_ALPHA12','GL_LUMINANCE12', + 'GL_LUMINANCE','GL_LOGIC_OP_MODE','GL_LOGIC_OP','GL_LOAD','GL_LIST_MODE','GL_LIST_INDEX','GL_LIST_BIT', + 'GL_LIST_BASE','GL_LINE_WIDTH_RANGE','GL_LINE_WIDTH_GRANULARITY','GL_LINE_WIDTH','GL_LINE_TOKEN','GL_LINE_STRIP','GL_LINE_STIPPLE_REPEAT', + 'GL_LINE_STIPPLE_PATTERN','GL_LINE_STIPPLE','GL_LINE_SMOOTH_HINT','GL_LINE_SMOOTH','GL_LINE_RESET_TOKEN','GL_LINE_LOOP', + 'GL_LINE_BIT','GL_LINES','GL_LINEAR_MIPMAP_NEAREST','GL_LINEAR_MIPMAP_LINEAR','GL_LINEAR_ATTENUATION','GL_LINEAR', + 'GL_LINE','GL_LIGHT_MODEL_TWO_SIDE','GL_LIGHT_MODEL_LOCAL_VIEWER','GL_LIGHT_MODEL_AMBIENT','GL_LIGHTING_BIT', + 'GL_LIGHTING','GL_LIGHT7','GL_LIGHT6','GL_LIGHT5','GL_LIGHT4','GL_LIGHT3','GL_LIGHT2','GL_LIGHT1','GL_LIGHT0', + 'GL_LESS','GL_LEQUAL','GL_LEFT','GL_KEEP','GL_INVERT','GL_INVALID_VALUE','GL_INVALID_OPERATION','GL_INVALID_ENUM','GL_INTERPOLATE_EXT', + 'GL_INTERPOLATE','GL_INTENSITY8','GL_INTENSITY4','GL_INTENSITY16','GL_INTENSITY12','GL_INTENSITY','GL_INT', + 'GL_INDEX_WRITEMASK','GL_INDEX_SHIFT','GL_INDEX_OFFSET','GL_INDEX_MODE','GL_INDEX_LOGIC_OP','GL_INDEX_CLEAR_VALUE','GL_INDEX_BITS', + 'GL_INDEX_ARRAY_TYPE_EXT','GL_INDEX_ARRAY_TYPE','GL_INDEX_ARRAY_STRIDE_EXT','GL_INDEX_ARRAY_STRIDE','GL_INDEX_ARRAY_POINTER_EXT', + 'GL_INDEX_ARRAY_POINTER','GL_INDEX_ARRAY_EXT','GL_INDEX_ARRAY_COUNT_EXT','GL_INDEX_ARRAY','GL_INCR','GL_HINT_BIT', + 'GL_GREEN_SCALE','GL_GREEN_BITS','GL_GREEN_BIAS','GL_GREEN','GL_GREATER','GL_GEQUAL','GL_FRONT_RIGHT','GL_FRONT_LEFT', + 'GL_FRONT_FACE','GL_FRONT_AND_BACK','GL_FRONT','GL_FOG_START','GL_FOG_SPECULAR_TEXTURE_WIN','GL_FOG_MODE','GL_FOG_INDEX', + 'GL_FOG_HINT','GL_FOG_END','GL_FOG_DENSITY','GL_FOG_COLOR','GL_FOG_BIT','GL_FOG','GL_FLOAT','GL_FLAT','GL_FILL', + 'GL_FEEDBACK_BUFFER_TYPE','GL_FEEDBACK_BUFFER_SIZE','GL_FEEDBACK_BUFFER_POINTER','GL_FEEDBACK','GL_FASTEST','GL_FALSE', + 'GL_EYE_PLANE','GL_EYE_LINEAR','GL_EXT_vertex_array','GL_EXT_paletted_texture','GL_EXT_bgra','GL_EXTENSIONS','GL_EXP2', + 'GL_EXP','GL_EVAL_BIT','GL_EQUIV','GL_EQUAL','GL_ENABLE_BIT','GL_EMISSION','GL_EDGE_FLAG_ARRAY_STRIDE_EXT','GL_EDGE_FLAG_ARRAY_STRIDE', + 'GL_EDGE_FLAG_ARRAY_POINTER_EXT','GL_EDGE_FLAG_ARRAY_POINTER','GL_EDGE_FLAG_ARRAY_EXT','GL_EDGE_FLAG_ARRAY_COUNT_EXT','GL_EDGE_FLAG_ARRAY', + 'GL_EDGE_FLAG','GL_DST_COLOR','GL_DST_ALPHA','GL_DRAW_PIXEL_TOKEN','GL_DRAW_BUFFER','GL_DOUBLE_EXT','GL_DOUBLEBUFFER', + 'GL_DOUBLE','GL_DONT_CARE','GL_DOMAIN','GL_DITHER','GL_DIFFUSE','GL_DEPTH_WRITEMASK','GL_DEPTH_TEST','GL_DEPTH_SCALE', + 'GL_DEPTH_RANGE','GL_DEPTH_FUNC','GL_DEPTH_COMPONENT','GL_DEPTH_CLEAR_VALUE','GL_DEPTH_BUFFER_BIT','GL_DEPTH_BITS', + 'GL_DEPTH_BIAS','GL_DEPTH','GL_DECR','GL_DECAL','GL_CW','GL_CURRENT_TEXTURE_COORDS','GL_CURRENT_RASTER_TEXTURE_COORDS','GL_CURRENT_RASTER_POSITION_VALID', + 'GL_CURRENT_RASTER_POSITION','GL_CURRENT_RASTER_INDEX','GL_CURRENT_RASTER_DISTANCE','GL_CURRENT_RASTER_COLOR','GL_CURRENT_NORMAL', + 'GL_CURRENT_INDEX','GL_CURRENT_COLOR','GL_CURRENT_BIT','GL_CULL_FACE_MODE','GL_CULL_FACE','GL_COPY_PIXEL_TOKEN', + 'GL_COPY_INVERTED','GL_COPY','GL_CONSTANT_EXT','GL_CONSTANT_ATTENUATION','GL_CONSTANT','GL_COMPILE_AND_EXECUTE','GL_COMPILE','GL_COMBINE_RGB_EXT', + 'GL_COMBINE_RGB','GL_COMBINE_EXT','GL_COMBINE_ALPHA_EXT','GL_COMBINE_ALPHA','GL_COMBINE','GL_COLOR_WRITEMASK', + 'GL_COLOR_TABLE_WIDTH_EXT','GL_COLOR_TABLE_RED_SIZE_EXT','GL_COLOR_TABLE_LUMINANCE_SIZE_EXT','GL_COLOR_TABLE_INTENSITY_SIZE_EXT', + 'GL_COLOR_TABLE_GREEN_SIZE_EXT','GL_COLOR_TABLE_FORMAT_EXT','GL_COLOR_TABLE_BLUE_SIZE_EXT','GL_COLOR_TABLE_ALPHA_SIZE_EXT', + 'GL_COLOR_MATERIAL_PARAMETER','GL_COLOR_MATERIAL_FACE','GL_COLOR_MATERIAL','GL_COLOR_LOGIC_OP','GL_COLOR_INDEXES', + 'GL_COLOR_INDEX8_EXT','GL_COLOR_INDEX4_EXT','GL_COLOR_INDEX2_EXT','GL_COLOR_INDEX1_EXT','GL_COLOR_INDEX16_EXT', + 'GL_COLOR_INDEX12_EXT','GL_COLOR_INDEX','GL_COLOR_CLEAR_VALUE','GL_COLOR_BUFFER_BIT','GL_COLOR_ARRAY_TYPE_EXT', + 'GL_COLOR_ARRAY_TYPE','GL_COLOR_ARRAY_STRIDE_EXT','GL_COLOR_ARRAY_STRIDE','GL_COLOR_ARRAY_SIZE_EXT','GL_COLOR_ARRAY_SIZE', + 'GL_COLOR_ARRAY_POINTER_EXT','GL_COLOR_ARRAY_POINTER','GL_COLOR_ARRAY_EXT','GL_COLOR_ARRAY_COUNT_EXT','GL_COLOR_ARRAY', + 'GL_COLOR','GL_COEFF','GL_CLIP_PLANE5','GL_CLIP_PLANE4','GL_CLIP_PLANE3','GL_CLIP_PLANE2','GL_CLIP_PLANE1','GL_CLIP_PLANE0', + 'GL_CLIENT_VERTEX_ARRAY_BIT','GL_CLIENT_PIXEL_STORE_BIT','GL_CLIENT_ATTRIB_STACK_DEPTH','GL_CLIENT_ALL_ATTRIB_BITS', + 'GL_CLIENT_ACTIVE_TEXTURE_ARB','GL_CLIENT_ACTIVE_TEXTURE','GL_CLEAR','GL_CLAMP','GL_CCW','GL_C4UB_V3F','GL_C4UB_V2F', + 'GL_C4F_N3F_V3F','GL_C3F_V3F','GL_BYTE','GL_BLUE_SCALE','GL_BLUE_BITS','GL_BLUE_BIAS','GL_BLUE','GL_BLEND_SRC','GL_BLEND_DST', + 'GL_BLEND','GL_BITMAP_TOKEN','GL_BITMAP','GL_BGR_EXT','GL_BGRA_EXT','GL_BACK_RIGHT','GL_BACK_LEFT','GL_BACK', + 'GL_AUX_BUFFERS','GL_AUX3','GL_AUX2','GL_AUX1','GL_AUX0','GL_AUTO_NORMAL','GL_ATTRIB_STACK_DEPTH','GL_AND_REVERSE', + 'GL_AND_INVERTED','GL_AND','GL_AMBIENT_AND_DIFFUSE','GL_AMBIENT','GL_ALWAYS','GL_ALPHA_TEST_REF','GL_ALPHA_TEST_FUNC', + 'GL_ALPHA_TEST','GL_ALPHA_SCALE','GL_ALPHA_BITS','GL_ALPHA_BIAS','GL_ALPHA8','GL_ALPHA4','GL_ALPHA16','GL_ALPHA12', + 'GL_ALPHA','GL_ALL_ATTRIB_BITS','GL_ADD_SIGNED_EXT','GL_ADD_SIGNED','GL_ADD','GL_ACTIVE_TEXTURE_ARB','GL_ACTIVE_TEXTURE', + 'GL_ACCUM_RED_BITS','GL_ACCUM_GREEN_BITS','GL_ACCUM_CLEAR_VALUE','GL_ACCUM_BUFFER_BIT','GL_ACCUM_BLUE_BITS','GL_ACCUM_ALPHA_BITS', + 'GL_ACCUM','GL_4_BYTES','GL_4D_COLOR_TEXTURE','GL_3_BYTES','GL_3D_COLOR_TEXTURE','GL_3D_COLOR','GL_3D','GL_2_BYTES', + 'GL_2D','GLU_V_STEP','GLU_VERTEX','GLU_VERSION_1_2','GLU_VERSION_1_1','GLU_VERSION','GLU_U_STEP','GLU_UNKNOWN','GLU_TRUE', + 'GLU_TESS_WINDING_RULE','GLU_TESS_WINDING_POSITIVE','GLU_TESS_WINDING_ODD','GLU_TESS_WINDING_NONZERO','GLU_TESS_WINDING_NEGATIVE', + 'GLU_TESS_WINDING_ABS_GEQ_TWO','GLU_TESS_VERTEX_DATA','GLU_TESS_VERTEX','GLU_TESS_TOLERANCE','GLU_TESS_NEED_COMBINE_CALLBACK','GLU_TESS_MISSING_END_POLYGON', + 'GLU_TESS_MISSING_END_CONTOUR','GLU_TESS_MISSING_BEGIN_POLYGON','GLU_TESS_MISSING_BEGIN_CONTOUR','GLU_TESS_ERROR_DATA', + 'GLU_TESS_ERROR8','GLU_TESS_ERROR7','GLU_TESS_ERROR6','GLU_TESS_ERROR5','GLU_TESS_ERROR4','GLU_TESS_ERROR3','GLU_TESS_ERROR2', + 'GLU_TESS_ERROR1','GLU_TESS_ERROR','GLU_TESS_END_DATA','GLU_TESS_END','GLU_TESS_EDGE_FLAG_DATA','GLU_TESS_EDGE_FLAG', + 'GLU_TESS_COORD_TOO_LARGE','GLU_TESS_COMBINE_DATA','GLU_TESS_COMBINE','GLU_TESS_BOUNDARY_ONLY','GLU_TESS_BEGIN_DATA', + 'GLU_TESS_BEGIN','GLU_SMOOTH','GLU_SILHOUETTE','GLU_SAMPLING_TOLERANCE','GLU_SAMPLING_METHOD','GLU_POINT','GLU_PATH_LENGTH', + 'GLU_PARAMETRIC_TOLERANCE','GLU_PARAMETRIC_ERROR','GLU_OUT_OF_MEMORY','GLU_OUTSIDE','GLU_OUTLINE_POLYGON','GLU_OUTLINE_PATCH', + 'GLU_NURBS_ERROR9','GLU_NURBS_ERROR8','GLU_NURBS_ERROR7','GLU_NURBS_ERROR6','GLU_NURBS_ERROR5','GLU_NURBS_ERROR4', + 'GLU_NURBS_ERROR37','GLU_NURBS_ERROR36','GLU_NURBS_ERROR35','GLU_NURBS_ERROR34','GLU_NURBS_ERROR33','GLU_NURBS_ERROR32', + 'GLU_NURBS_ERROR31','GLU_NURBS_ERROR30','GLU_NURBS_ERROR3','GLU_NURBS_ERROR29','GLU_NURBS_ERROR28','GLU_NURBS_ERROR27','GLU_NURBS_ERROR26', + 'GLU_NURBS_ERROR25','GLU_NURBS_ERROR24','GLU_NURBS_ERROR23','GLU_NURBS_ERROR22','GLU_NURBS_ERROR21','GLU_NURBS_ERROR20', + 'GLU_NURBS_ERROR2','GLU_NURBS_ERROR19','GLU_NURBS_ERROR18','GLU_NURBS_ERROR17','GLU_NURBS_ERROR16','GLU_NURBS_ERROR15','GLU_NURBS_ERROR14', + 'GLU_NURBS_ERROR13','GLU_NURBS_ERROR12','GLU_NURBS_ERROR11','GLU_NURBS_ERROR10','GLU_NURBS_ERROR1','GLU_NONE', + 'GLU_MAP1_TRIM_3','GLU_MAP1_TRIM_2','GLU_LINE','GLU_INVALID_VALUE','GLU_INVALID_ENUM','GLU_INTERIOR','GLU_INSIDE','GLU_INCOMPATIBLE_GL_VERSION', + 'GLU_FLAT','GLU_FILL','GLU_FALSE','GLU_EXTERIOR','GLU_EXTENSIONS','GLU_ERROR','GLU_END','GLU_EDGE_FLAG','GLU_DOMAIN_DISTANCE', + 'GLU_DISPLAY_MODE','GLU_CW','GLU_CULLING','GLU_CCW','GLU_BEGIN','GLU_AUTO_LOAD_MATRIX','CHANNEL_UNORDERED','CHANNEL_ORDERED', + 'CHANNEL_MAX' + ), + 2 => array( + + // Red Lowercase Keywords + + 'WriteWord','WriteString','WriteReal','WriteLine','WriteInt','WriteFloat','WriteDouble','WriteChar','WriteByte', + 'windowwidth','windowheight','waittimer','Vec4','Vec3','Vec2','val','UpdateJoystick','ucase$','Transpose','tickcount', + 'textscroll','textrows','textmode','textcols','tanh','tand','tan','synctimercatchup','synctimer','swapbuffers', + 'str$','stopsoundvoice','stopsounds','stopmusic','sqrt','sqr','sprzorder','spryvel','sprytiles','sprysize','spryrepeat', + 'spryflip','sprycentre','spry','sprxvel','sprxtiles','sprxsize','sprxrepeat','sprxflip','sprxcentre','sprx', + 'sprvisible','sprvel','sprtype','sprtop','sprspin','sprsolid','sprsetzorder','sprsetyvel','sprsetysize','sprsetyrepeat', + 'sprsetyflip','sprsetycentre','sprsety','sprsetxvel','sprsetxsize','sprsetxrepeat','sprsetxflip','sprsetxcentre', + 'sprsetx','sprsetvisible','sprsetvel','sprsettiles','sprsettextures','sprsettexture','sprsetspin','sprsetsolid', + 'sprsetsize','sprsetscale','sprsetpos','sprsetparallax','sprsetframe','sprsetcolor','sprsetanimspeed','sprsetanimloop', + 'sprsetangle','sprsetalpha','sprscale','sprright','sprpos','sprparallax','sprleft','spriteareawidth','spriteareaheight', + 'sprframe','sprcolor','sprcameraz','sprcameray','sprcamerax','sprcamerasetz','sprcamerasety','sprcamerasetx', + 'sprcamerasetpos','sprcamerasetfov','sprcamerasetangle','sprcamerapos','sprcamerafov','sprcameraangle', + 'sprbottom','spranimspeed','spranimloop','spranimdone','sprangle','spralpha','spraddtextures','spraddtexture', + 'sounderror','sleep','sind','sin','showcursor','sgn','settextscroll','setmusicvolume','SendMessage','Seek', + 'scankeydown','RTInvert','rnd','right$','resizetext','resizespritearea','RejectConnection','ReceiveMessage','ReadWord', + 'ReadText','ReadReal','ReadLine','ReadInt','ReadFloat','ReadDouble','ReadChar','ReadByte','randomize','printr', + 'print','pow','playsound','playmusic','performancecounter','Orthonormalize','OpenFileWrite','OpenFileRead','Normalize', + 'newtilemap','newsprite','NewServer','NewConnection','musicplaying','mouse_yd','mouse_y','mouse_xd','mouse_x', + 'mouse_wheel','mouse_button','mid$','MessageSmoothed','MessageReliable','MessagePending','MessageChannel','maxtextureunits', + 'MatrixZero','MatrixTranslate','MatrixScale','MatrixRotateZ','MatrixRotateY','MatrixRotateX','MatrixRotate','MatrixIdentity', + 'MatrixCrossProduct','MatrixBasis','log','locate','loadtexture','loadsound','loadmipmaptexture','loadmipmapimagestrip', + 'loadimagestrip','loadimage','Length','len','left$','lcase$','keydown','Joy_Y','Joy_X','Joy_Up','Joy_Right','Joy_Left', + 'Joy_Keys','Joy_Down','Joy_Button','Joy_3','Joy_2','Joy_1','Joy_0','int','inscankey','input$','inkey$','inittimer', + 'imagewidth','imagestripframes','imageheight','imageformat','imagedatatype','hidecursor','glViewport','glVertex4sv', + 'glVertex4s','glVertex4iv','glVertex4i','glVertex4fv','glVertex4f','glVertex4dv','glVertex4d','glVertex3sv','glVertex3s', + 'glVertex3iv','glVertex3i','glVertex3fv','glVertex3f','glVertex3dv','glVertex3d','glVertex2sv','glVertex2s','glVertex2iv', + 'glVertex2i','glVertex2fv','glVertex2f','glVertex2dv','glVertex2d','gluPerspective','gluOrtho2D','gluLookAt', + 'glubuild2dmipmaps','glTranslatef','glTranslated','gltexsubimage2d','glTexParameteriv','glTexParameteri', + 'glTexParameterfv','glTexParameterf','glteximage2d','glTexGeniv','glTexGeni','glTexGenfv','glTexGenf','glTexGendv', + 'glTexGend','glTexEnviv','glTexEnvi','glTexEnvfv','glTexEnvf','glTexCoord4sv','glTexCoord4s','glTexCoord4iv','glTexCoord4i', + 'glTexCoord4fv','glTexCoord4f','glTexCoord4dv','glTexCoord4d','glTexCoord3sv','glTexCoord3s','glTexCoord3iv','glTexCoord3i', + 'glTexCoord3fv','glTexCoord3f','glTexCoord3dv','glTexCoord3d','glTexCoord2sv','glTexCoord2s','glTexCoord2iv','glTexCoord2i', + 'glTexCoord2fv','glTexCoord2f','glTexCoord2dv','glTexCoord2d','glTexCoord1sv','glTexCoord1s','glTexCoord1iv','glTexCoord1i','glTexCoord1fv', + 'glTexCoord1f','glTexCoord1dv','glTexCoord1d','glStencilOp','glStencilMask','glStencilFunc','glShadeModel','glSelectBuffer', + 'glScissor','glScalef','glScaled','glRotatef','glRotated','glRenderMode','glRectsv','glRects','glRectiv','glRecti', + 'glRectfv','glRectf','glRectdv','glRectd','glReadBuffer','glRasterPos4sv','glRasterPos4s','glRasterPos4iv', + 'glRasterPos4i','glRasterPos4fv','glRasterPos4f','glRasterPos4dv','glRasterPos4d','glRasterPos3sv','glRasterPos3s', + 'glRasterPos3iv','glRasterPos3i','glRasterPos3fv','glRasterPos3f','glRasterPos3dv','glRasterPos3d','glRasterPos2sv', + 'glRasterPos2s','glRasterPos2iv','glRasterPos2i','glRasterPos2fv','glRasterPos2f','glRasterPos2dv','glRasterPos2d', + 'glPushName','glPushMatrix','glPushClientAttrib','glPushAttrib','glPrioritizeTextures','glPopName','glPopMatrix', + 'glPopClientAttrib','glPopAttrib','glpolygonstipple','glPolygonOffset','glPolygonMode','glPointSize','glPixelZoom', + 'glPixelTransferi','glPixelTransferf','glPixelStorei','glPixelStoref','glPassThrough','glOrtho','glNormal3sv','glNormal3s', + 'glNormal3iv','glNormal3i','glNormal3fv','glNormal3f','glNormal3dv','glNormal3d','glNormal3bv','glNormal3b','glNewList', + 'glMultMatrixf','glMultMatrixd','glmultitexcoord2f','glmultitexcoord2d','glMatrixMode','glMaterialiv','glMateriali', + 'glMaterialfv','glMaterialf','glMapGrid2f','glMapGrid2d','glMapGrid1f','glMapGrid1d','glLogicOp','glLoadName','glLoadMatrixf', + 'glLoadMatrixd','glLoadIdentity','glListBase','glLineWidth','glLineStipple','glLightModeliv','glLightModeli','glLightModelfv', + 'glLightModelf','glLightiv','glLighti','glLightfv','glLightf','glIsTexture','glIsList','glIsEnabled','glInitNames', + 'glIndexubv','glIndexub','glIndexsv','glIndexs','glIndexMask','glIndexiv','glIndexi','glIndexfv','glIndexf','glIndexdv', + 'glIndexd','glHint','glGetTexParameteriv','glGetTexParameterfv','glGetTexLevelParameteriv','glGetTexLevelParameterfv', + 'glGetTexGeniv','glGetTexGenfv','glGetTexGendv','glGetTexEnviv','glGetTexEnvfv','glgetstring','glgetpolygonstipple','glGetPixelMapuiv', + 'glGetMaterialiv','glGetMaterialfv','glGetLightiv','glGetLightfv','glGetIntegerv','glGetFloatv', + 'glGetError','glGetDoublev','glGetClipPlane','glGetBooleanv','glgentextures','glgentexture', + 'glgenlists','glFrustum','glFrontFace','glFogiv','glFogi','glFogfv','glFogf','glFlush','glFinish','glFeedbackBuffer', + 'glEvalPoint2','glEvalPoint1','glEvalMesh2','glEvalMesh1','glEvalCoord2fv','glEvalCoord2f','glEvalCoord2dv','glEvalCoord2d', + 'glEvalCoord1fv','glEvalCoord1f','glEvalCoord1dv','glEvalCoord1d','glEndList','glEnd','glEnableClientState','glEnable', + 'glEdgeFlagv','glEdgeFlag','glDrawBuffer','glDrawArrays','glDisableClientState','glDisable','glDepthRange','glDepthMask', + 'glDepthFunc','gldeletetextures','gldeletetexture','gldeletelists','glCullFace','glCopyTexSubImage2D','glCopyTexSubImage1D', + 'glCopyTexImage2D','glCopyTexImage1D','glColorMaterial','glColorMask','glColor4usv','glColor4us','glColor4uiv','glColor4ui', + 'glColor4ubv','glColor4ub','glColor4sv','glColor4s','glColor4iv','glColor4i','glColor4fv','glColor4f','glColor4dv', + 'glColor4d','glColor4bv','glColor4b','glColor3usv','glColor3us','glColor3uiv','glColor3ui','glColor3ubv','glColor3ub', + 'glColor3sv','glColor3s','glColor3iv','glColor3i','glColor3fv','glColor3f','glColor3dv','glColor3d','glColor3bv', + 'glColor3b','glClipPlane','glClearStencil','glClearIndex','glClearDepth','glClearColor','glClearAccum','glClear', + 'glcalllists','glCallList','glBlendFunc','glBindTexture','glBegin','glArrayElement','glAreTexturesResident', + 'glAlphaFunc','glactivetexture','glAccum','font','FindNextFile','FindFirstFile','FindClose','FileError', + 'extensionsupported','exp','execute','EndOfFile','drawtext','divbyzero','Determinant','deletesprite','deletesound', + 'DeleteServer','deleteimage','DeleteConnection','defaultfont','CrossProduct','cosd','cos','copysprite','ConnectionPending', + 'ConnectionHandShaking','ConnectionConnected','ConnectionAddress','compilererrorline','compilererrorcol','compilererror', + 'compilefile','compile','color','cls','CloseFile','clearregion','clearline','clearkeys','chr$','charat$','bindsprite', + 'beep','atnd','atn2d','atn2','atn','atand','asc','argcount','arg','animatesprites','AcceptConnection','abs' + ), + 3 => array( + + // Blue Lowercase Keywords + + 'xor','while','wend','until','type','traditional_print','traditional','to','then','struc','string','step','single', + 'run','return','reset','read','or','null','not','next','lor','loop','language','land','integer','input','if', + 'goto','gosub','for','endstruc','endif','end','elseif','else','double','do','dim','data','const','basic4gl','as', + 'and','alloc' + ) + + ), + 'SYMBOLS' => array( + '=', '<', '>', '>=', '<=', '+', '-', '*', '/', '%', '(', ')', '{', '}', '[', ']', '&', ';', ':', '$' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000080; font-weight: bold;', + 2 => 'color: #FF0000;', + 3 => 'color: #0000FF;' + ), + 'COMMENTS' => array( + 1 => 'color: #657CC4; font-style: italic;' + ), + 'BRACKETS' => array( + 0 => 'color: #000080;' + ), + 'STRINGS' => array( + 0 => 'color: #008000;' + ), + 'NUMBERS' => array( + 0 => 'color: #000080; font-weight: bold;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #0000FF;' + ), + 'ESCAPE_CHAR' => array( + ), + 'SCRIPT' => array( + ), + 'REGEXPS' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4 +); diff --git a/includes/geshi/batch.php b/includes/geshi/batch.php new file mode 100644 index 0000000..f9a56c9 --- /dev/null +++ b/includes/geshi/batch.php @@ -0,0 +1,228 @@ + 'Windows Batch file', + 'COMMENT_SINGLE' => array(), + 'COMMENT_MULTI' => array(), + 'COMMENT_REGEXP' => array( + 100 => '/(?:^|[&|])\\s*(?:rem|::)[^\\n]*/msi', + 101 => '/[\\/-]\\S*/si', + 102 => '/^\s*:[^:]\\S*/msi', + 103 => '/(?:([%!])[^"\'~ ][^"\' ]*\\1|%%?(?:~[dpnxsatz]*)?[^"\'])/si' + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'ESCAPE_REGEXP' => array( + 100 => '/(?:([%!])\\S+\\1|%%(?:~[dpnxsatz]*)?[^"\'])/si' + ), + 'KEYWORDS' => array( + 1 => array( + 'echo', + 'set', + 'for', + 'if', + 'exit', + 'else', + 'do', + 'not', + 'defined', + 'exist' + ), + 2 => array( + "ASSOC", + "ATTRIB", + "BREAK", + "BCDEDIT", + "CACLS", + "CD", + "CHCP", + "CHDIR", + "CHKDSK", + "CHKNTFS", + "CLS", + "CMD", + "COLOR", + "COMP", + "COMPACT", + "CONVERT", + "COPY", + "DATE", + "DEL", + "DIR", + "DISKCOMP", + "DISKCOPY", + "DISKPART", + "DOSKEY", + "DRIVERQUERY", + "ECHO", + "ENDLOCAL", + "ERASE", + "EXIT", + "FC", + "FIND", + "FINDSTR", + "FOR", + "FORMAT", + "FSUTIL", + "FTYPE", + "GPRESULT", + "GRAFTABL", + "HELP", + "ICACLS", + "IF", + "LABEL", + "MD", + "MKDIR", + "MKLINK", + "MODE", + "MORE", + "MOVE", + "OPENFILES", + "PATH", + "PAUSE", + "POPD", + "PRINT", + "PROMPT", + "PUSHD", + "RD", + "RECOVER", + "REN", + "RENAME", + "REPLACE", + "RMDIR", + "ROBOCOPY", + "SET", + "SETLOCAL", + "SC", + "SCHTASKS", + "SHIFT", + "SHUTDOWN", + "SORT", + "START", + "SUBST", + "SYSTEMINFO", + "TASKLIST", + "TASKKILL", + "TIME", + "TITLE", + "TREE", + "TYPE", + "VER", + "VERIFY", + "VOL", + "XCOPY", + "WMIC", + "CSCRIPT" + ), + 3 => array( + "enabledelayedexpansion", + "enableextensions" + ) + ), + 'SYMBOLS' => array( + '(', + ')', + '+', + '-', + '~', + '^', + '@', + '&', + '*', + '|', + '/', + '<', + '>' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #800080; font-weight: bold;', + 2 => 'color: #0080FF; font-weight: bold;', + 3 => 'color: #0000FF; font-weight: bold;' + ), + 'COMMENTS' => array( + 101 => 'color: #44aa44; font-weight: bold;', + 100 => 'color: #888888;', + 102 => 'color: #990000; font-weight: bold;', + 103 => 'color: #000099; font-weight: bold;', + 'MULTI' => 'color: #808080; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 100 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #66cc66; font-weight: bold;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;', + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;' + ), + 'METHODS' => array( + 0 => 'color: #006600;' + ), + 'SYMBOLS' => array( + 0 => 'color: #44aa44; font-weight: bold;' + ), + 'REGEXPS' => array( + 0 => 'color: #990000; font-weight: bold', + 1 => 'color: #800080; font-weight: bold;' + ), + 'SCRIPT' => array() + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array(), + 'REGEXPS' => array( + 0 => array( + GESHI_SEARCH => "((?:goto|call)\\s*)(\\S+)", + GESHI_REPLACE => "\\2", + GESHI_BEFORE => "\\1", + GESHI_MODIFIERS => "si", + GESHI_AFTER => "" + ), + 1 => "goto|call" + ), + 'STRICT_MODE_APPLIES' => GESHI_MAYBE, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array() +); diff --git a/includes/geshi/bf.php b/includes/geshi/bf.php new file mode 100644 index 0000000..023c059 --- /dev/null +++ b/includes/geshi/bf.php @@ -0,0 +1,113 @@ + 'Brainfuck', + 'COMMENT_SINGLE' => array(), + 'COMMENT_MULTI' => array(), + 'COMMENT_REGEXP' => array(1 => '/[^\n+\-<>\[\]\.\,Y]+/s'), + 'CASE_KEYWORDS' => GESHI_CAPS_UPPER, + 'QUOTEMARKS' => array(), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + ), + 'SYMBOLS' => array( + 0 => array('+', '-'), + 1 => array('[', ']'), + 2 => array('<', '>'), + 3 => array('.', ','), + 4 => array('Y') //Brainfork Extension ;-) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;' + ), + 'BRACKETS' => array( + 0 => 'color: #660000;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;' + ), + 'NUMBERS' => array( + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #006600;', + 1 => 'color: #660000;', + 2 => 'color: #000066;', + 3 => 'color: #666600;', + 4 => 'color: #660066;' + ), + 'ESCAPE_CHAR' => array( + ), + 'SCRIPT' => array( + ), + 'REGEXPS' => array( + ) + ), + 'URLS' => array( + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4, + 'PARSER_CONTROL' => array( + 'ENABLE_FLAGS' => array( + 'STRINGS' => GESHI_NEVER, + 'NUMBERS' => GESHI_NEVER, + 'BRACKETS' => GESHI_NEVER + ), + 'KEYWORDS' => array( + 'DISALLOW_BEFORE' => '', + 'DISALLOW_AFTER' => '' + ) + ) +); diff --git a/includes/geshi/biblatex.php b/includes/geshi/biblatex.php new file mode 100644 index 0000000..665ae20 --- /dev/null +++ b/includes/geshi/biblatex.php @@ -0,0 +1,200 @@ + 'BibTeX', + 'OOLANG' => false, + 'COMMENT_SINGLE' => array( + 1 => '%%' + ), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array(), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 0 => array( + '@comment','@preamble','@string' + ), + // Standard entry types + 1 => array( + '@article','@book','@booklet','@conference','@inbook', + '@incollection','@inproceedings','@manual','@mastersthesis', + '@misc','@phdthesis','@proceedings','@techreport','@unpublished' + ), + // Custom entry types + 2 => array( + '@collection','@patent','@webpage' + ), + // Standard entry field names + 3 => array( + 'address','annote','author','booktitle','chapter','crossref', + 'edition','editor','howpublished','institution','journal','key', + 'month','note','number','organization','pages','publisher','school', + 'series','title','type','volume','year', + ), + // Custom entry field names + 4 => array( + 'abstract','affiliation','chaptername','cited-by','cites', + 'contents','copyright','date-added','date-modified','doi','eprint', + 'isbn','issn','keywords','language','lccn','lib-congress', + 'location','price','rating','read','size','source','url', + ) + ), + 'URLS' => array( + 0 => '', + 1 => '', + 2 => '', + 3 => '', + 4 => '' + ), + 'SYMBOLS' => array( + '{', '}', '#', '=', ',' + ), + 'CASE_SENSITIVE' => array( + 1 => false, + 2 => false, + 3 => false, + 4 => false, + GESHI_COMMENTS => false, + ), + // Define the colors for the groups listed above + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #C02020;', // Standard entry types + 2 => 'color: #C02020;', // Custom entry types + 3 => 'color: #C08020;', // Standard entry field names + 4 => 'color: #C08020;' // Custom entry field names + ), + 'COMMENTS' => array( + 1 => 'color: #2C922C; font-style: italic;' + ), + 'STRINGS' => array( + 0 => 'color: #2020C0;' + ), + 'SYMBOLS' => array( + 0 => 'color: #E02020;' + ), + 'REGEXPS' => array( + 1 => 'color: #2020C0;', // {...} + 2 => 'color: #C08020;', // BibDesk fields + 3 => 'color: #800000;', // LaTeX commands + 4 => 'color: #C08020;', // Custom entry field (biblatex) + 5 => 'color: #C02020;', // Custom entry types (biblatex) + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000000; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #E02020;' + ), + 'NUMBERS' => array( + ), + 'METHODS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'REGEXPS' => array( + // {parameters} + 1 => array( + GESHI_SEARCH => "(?<=\\{)(?:\\{(?R)\\}|[^\\{\\}])*(?=\\})", + GESHI_REPLACE => '\0', + GESHI_MODIFIERS => 's', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + 2 => array( + GESHI_SEARCH => "\bBdsk-(File|Url)-\d+", + GESHI_REPLACE => '\0', + GESHI_MODIFIERS => 'Us', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + 3 => array( + GESHI_SEARCH => "\\\\[A-Za-z0-9]*+", + GESHI_REPLACE => '\0', + GESHI_MODIFIERS => 'Us', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + 4 => array( + GESHI_SEARCH => "([A-z]+)\s+=", + GESHI_REPLACE => '\0', + GESHI_MODIFIERS => 'Us', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + 5 => array( + GESHI_SEARCH => "@([A-z])+", + GESHI_REPLACE => '\0', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'OBJECT_SPLITTERS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'PARSER_CONTROL' => array( + 'ENABLE_FLAGS' => array( + 'NUMBERS' => GESHI_NEVER + ), + 'KEYWORDS' => array( + 3 => array( + 'DISALLOWED_AFTER' => '(?=\s*=)' + ), + 4 => array( + 'DISALLOWED_AFTER' => '(?=\s*=)' + ), + ) + ) + ); diff --git a/includes/geshi/bibtex.php b/includes/geshi/bibtex.php new file mode 100644 index 0000000..5afecbf --- /dev/null +++ b/includes/geshi/bibtex.php @@ -0,0 +1,181 @@ + 'BibTeX', + 'OOLANG' => false, + 'COMMENT_SINGLE' => array( + 1 => '%%' + ), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array(), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 0 => array( + '@comment','@preamble','@string' + ), + // Standard entry types + 1 => array( + '@article','@book','@booklet','@conference','@inbook', + '@incollection','@inproceedings','@manual','@mastersthesis', + '@misc','@phdthesis','@proceedings','@techreport','@unpublished' + ), + // Custom entry types + 2 => array( + '@collection','@patent','@webpage' + ), + // Standard entry field names + 3 => array( + 'address','annote','author','booktitle','chapter','crossref', + 'edition','editor','howpublished','institution','journal','key', + 'month','note','number','organization','pages','publisher','school', + 'series','title','type','volume','year' + ), + // Custom entry field names + 4 => array( + 'abstract','affiliation','chaptername','cited-by','cites', + 'contents','copyright','date-added','date-modified','doi','eprint', + 'isbn','issn','keywords','language','lccn','lib-congress', + 'location','price','rating','read','size','source','url' + ) + ), + 'URLS' => array( + 0 => '', + 1 => '', + 2 => '', + 3 => '', + 4 => '' + ), + 'SYMBOLS' => array( + '{', '}', '#', '=', ',' + ), + 'CASE_SENSITIVE' => array( + 1 => false, + 2 => false, + 3 => false, + 4 => false, + GESHI_COMMENTS => false, + ), + // Define the colors for the groups listed above + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #C02020;', // Standard entry types + 2 => 'color: #C02020;', // Custom entry types + 3 => 'color: #C08020;', // Standard entry field names + 4 => 'color: #C08020;' // Custom entry field names + ), + 'COMMENTS' => array( + 1 => 'color: #2C922C; font-style: italic;' + ), + 'STRINGS' => array( + 0 => 'color: #2020C0;' + ), + 'SYMBOLS' => array( + 0 => 'color: #E02020;' + ), + 'REGEXPS' => array( + 1 => 'color: #2020C0;', // {...} + 2 => 'color: #C08020;', // BibDesk fields + 3 => 'color: #800000;' // LaTeX commands + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000000; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #E02020;' + ), + 'NUMBERS' => array( + ), + 'METHODS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'REGEXPS' => array( + // {parameters} + 1 => array( + GESHI_SEARCH => "(?<=\\{)(?:\\{(?R)\\}|[^\\{\\}])*(?=\\})", + GESHI_REPLACE => '\0', + GESHI_MODIFIERS => 's', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + 2 => array( + GESHI_SEARCH => "\bBdsk-(File|Url)-\d+", + GESHI_REPLACE => '\0', + GESHI_MODIFIERS => 'Us', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + 3 => array( + GESHI_SEARCH => "\\\\[A-Za-z0-9]*+", + GESHI_REPLACE => '\0', + GESHI_MODIFIERS => 'Us', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'OBJECT_SPLITTERS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'PARSER_CONTROL' => array( + 'ENABLE_FLAGS' => array( + 'NUMBERS' => GESHI_NEVER + ), + 'KEYWORDS' => array( + 3 => array( + 'DISALLOWED_AFTER' => '(?=\s*=)' + ), + 4 => array( + 'DISALLOWED_AFTER' => '(?=\s*=)' + ), + ) + ) +); diff --git a/includes/geshi/blitzbasic.php b/includes/geshi/blitzbasic.php new file mode 100644 index 0000000..8ea6063 --- /dev/null +++ b/includes/geshi/blitzbasic.php @@ -0,0 +1,183 @@ + 'BlitzBasic', + 'COMMENT_SINGLE' => array(1 => ';'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + 'If','EndIf','ElseIf','Else','While','Wend','Return','Next','Include','End Type','End Select','End If','End Function','End','Select', + 'Type','Forever','For','Or','And','AppTitle','Case','Goto','Gosub','Step','Stop','Int','Last','False','Then','To','True','Until','Float', + 'String','Before','Not' + ), + 2 => array( + // All Functions - 2D BB and 3D BB + 'Xor','WriteString','WriteShort','WritePixelFast','WritePixel','WriteLine','WriteInt','WriteFloat','WriteFile','WriteBytes', + 'WriteByte','Write','WaitTimer','WaitMouse','WaitKey','WaitJoy','VWait','Viewport', + 'Upper','UpdateGamma','UnlockBuffer','UDPTimeouts','UDPStreamPort','UDPStreamIP','UDPMsgPort','UDPMsgIP', + 'Trim','TotalVidMem','TileImage','TileBlock','TFormImage','TFormFilter','Text', + 'TCPTimeouts','TCPStreamPort','TCPStreamIP','Tan','SystemProperty','StringWidth','StringHeight','Str','StopNetGame', + 'StopChannel','StartNetGame','Sqr','SoundVolume','SoundPitch','SoundPan','Sin','Shr', + 'ShowPointer','Shl','Sgn','SetGfxDriver','SetGamma','SetFont','SetEnv','SetBuffer','SendUDPMsg','SendNetMsg', + 'SeekFile','SeedRnd','ScanLine','ScaleImage','SaveImage','SaveBuffer','Sar','RuntimeError','RSet', + 'RotateImage','RndSeed','Rnd','Right','ResumeChannel','Restore','ResizeImage','ResizeBank','Replace', + 'Repeat','RecvUDPMsg','RecvNetMsg','RectsOverlap','Rect','ReadString','ReadShort','ReadPixelFast','ReadPixel','ReadLine', + 'ReadInt','ReadFloat','ReadFile','ReadDir','ReadBytes','ReadByte','ReadAvail','Read','Rand','Print', + 'PokeShort','PokeInt','PokeFloat','PokeByte','Plot','PlaySound','PlayMusic','PlayCDTrack','Pi','PeekShort', + 'PeekInt','PeekFloat','PeekByte','PauseChannel','Oval','Origin','OpenTCPStream','OpenMovie','OpenFile', + 'Null','NextFile','New','NetPlayerName','NetPlayerLocal','NetMsgType','NetMsgTo','NetMsgFrom', + 'NetMsgData','MovieWidth','MoviePlaying','MovieHeight','MoveMouse','MouseZSpeed','MouseZ','MouseYSpeed','MouseY','MouseXSpeed', + 'MouseX','MouseHit','MouseDown','Mod','Millisecs','MidHandle','Mid','MaskImage','LSet','Lower', + 'LoopSound','Log10','Log','LockBuffer','Locate','Local','LoadSound','LoadImage','LoadFont','LoadBuffer', + 'LoadAnimImage','Line','Len','Left','KeyHit','KeyDown','JoyZDir','JoyZ','JoyYDir', + 'JoyYaw','JoyY','JoyXDir','JoyX','JoyVDir','JoyV','JoyUDir','JoyU','JoyType','JoyRoll', + 'JoyPitch','JoyHit','JoyHat','JoyDown','JoinNetGame','Instr','Insert','Input', + 'ImageYHandle','ImageXHandle','ImageWidth','ImagesOverlap','ImagesCollide','ImageRectOverlap','ImageRectCollide','ImageHeight','ImageBuffer', + 'HostNetGame','HostIP','HidePointer','Hex','HandleImage','GraphicsWidth','GraphicsHeight','GraphicsDepth','GraphicsBuffer','Graphics', + 'GrabImage','Global','GFXModeWidth','GFXModeHeight','GfxModeExists','GFXModeDepth','GfxDriverName','GetMouse', + 'GetKey','GetJoy','GetEnv','GetColor','GammaRed','GammaGreen','GammaBlue','Function','FrontBuffer','FreeTimer', + 'FreeSound','FreeImage','FreeFont','FreeBank','FontWidth','FontHeight','FlushMouse','FlushKeys', + 'FlushJoy','Floor','Flip','First','FileType','FileSize','FilePos','Field', + 'Exp','Exit','ExecFile','Eof','EndGraphics','Each','DrawMovie','DrawImageRect','DrawImage','DrawBlockRect','DrawBlock', + 'DottedIP','Dim','DeleteNetPlayer','DeleteFile','DeleteDir','Delete','Delay','Default','DebugLog','Data', + 'CurrentTime','CurrentDir','CurrentDate','CreateUDPStream','CreateTimer','CreateTCPServer','CreateNetPlayer','CreateImage','CreateDir','CreateBank', + 'CountHostIPs','CountGFXModes','CountGfxDrivers','Cos','CopyStream','CopyRect','CopyPixelFast','CopyPixel','CopyImage','CopyFile', + 'CopyBank','Const','CommandLine','ColorRed','ColorGreen','ColorBlue','Color','ClsColor','Cls','CloseUDPStream', + 'CloseTCPStream','CloseTCPServer','CloseMovie','CloseFile','CloseDir','Chr','ChannelVolume','ChannelPlaying','ChannelPitch','ChannelPan', + 'ChangeDir','Ceil','CallDLL','Bin','BankSize','BackBuffer','AvailVidMem','AutoMidHandle', + 'ATan2','ATan','ASin','Asc','After','ACos','AcceptTCPStream','Abs', + // 3D Commands + 'Wireframe','Windowed3D','WBuffer','VertexZ','VertexY', + 'VertexX','VertexW','VertexV','VertexU','VertexTexCoords','VertexRed','VertexNZ','VertexNY','VertexNX','VertexNormal', + 'VertexGreen','VertexCoords','VertexColor','VertexBlue','VertexAlpha','VectorYaw','VectorPitch','UpdateWorld','UpdateNormals','TurnEntity', + 'TrisRendered','TriangleVertex','TranslateEntity','TFormVector','TFormPoint','TFormNormal','TFormedZ','TFormedY','TFormedX','TextureWidth', + 'TextureName','TextureHeight','TextureFilter','TextureCoords','TextureBuffer','TextureBlend','TerrainZ','TerrainY','TerrainX','TerrainSize', + 'TerrainShading','TerrainHeight','TerrainDetail','SpriteViewMode','ShowEntity','SetCubeFace','SetAnimTime','SetAnimKey','ScaleTexture','ScaleSprite', + 'ScaleMesh','ScaleEntity','RotateTexture','RotateSprite','RotateMesh','RotateEntity','ResetEntity','RenderWorld','ProjectedZ','ProjectedY', + 'ProjectedX','PositionTexture','PositionMesh','PositionEntity','PointEntity','PickedZ','PickedY','PickedX','PickedTriangle','PickedTime', + 'PickedSurface','PickedNZ','PickedNY','PickedNX','PickedEntity','PaintSurface','PaintMesh','PaintEntity','NameEntity','MoveEntity', + 'ModifyTerrain','MeshWidth','MeshHeight','MeshesIntersect','MeshDepth','MD2AnimTime','MD2AnimLength','MD2Animating','LoadTexture','LoadTerrain', + 'LoadSprite','LoadMesh','LoadMD2','LoaderMatrix','LoadBSP','LoadBrush','LoadAnimTexture','LoadAnimSeq','LoadAnimMesh','Load3DSound', + 'LinePick','LightRange','LightMesh','LightConeAngles','LightColor','HWMultiTex','HideEntity','HandleSprite','Graphics3D','GfxMode3DExists', + 'GfxMode3D','GfxDriverCaps3D','GfxDriver3D','GetSurfaceBrush','GetSurface','GetParent','GetMatElement','GetEntityType','GetEntityBrush','GetChild', + 'GetBrushTexture','FreeTexture','FreeEntity','FreeBrush','FlipMesh','FitMesh','FindSurface','FindChild','ExtractAnimSeq','EntityZ', + 'EntityYaw','EntityY','EntityX','EntityVisible','EntityType','EntityTexture','EntityShininess','EntityRoll','EntityRadius','EntityPitch', + 'EntityPickMode','EntityPick','EntityParent','EntityOrder','EntityName','EntityInView','EntityFX','EntityDistance','EntityColor','EntityCollided', + 'EntityBox','EntityBlend','EntityAutoFade','EntityAlpha','EmitSound','Dither','DeltaYaw','DeltaPitch','CreateTexture','CreateTerrain', + 'CreateSurface','CreateSprite','CreateSphere','CreatePlane','CreatePivot','CreateMirror','CreateMesh','CreateListener','CreateLight','CreateCylinder', + 'CreateCube','CreateCone','CreateCamera','CreateBrush','CountVertices','CountTriangles','CountSurfaces','CountGfxModes3D','CountCollisions','CountChildren', + 'CopyMesh','CopyEntity','CollisionZ','CollisionY','CollisionX','CollisionTriangle','CollisionTime','CollisionSurface','Collisions','CollisionNZ', + 'CollisionNY','CollisionNX','CollisionEntity','ClearWorld','ClearTextureFilters','ClearSurface','ClearCollisions','CaptureWorld','CameraZoom','CameraViewport', + 'CameraRange','CameraProjMode','CameraProject','CameraPick','CameraFogRange','CameraFogMode','CameraFogColor','CameraClsMode','CameraClsColor','BSPLighting', + 'BSPAmbientLight','BrushTexture','BrushShininess','BrushFX','BrushColor','BrushBlend','BrushAlpha','AntiAlias','AnimTime','AnimSeq', + 'AnimLength','Animating','AnimateMD2','Animate','AmbientLight','AlignToVector','AddVertex','AddTriangle','AddMesh','AddAnimSeq', + ) + ), + 'SYMBOLS' => array( + '(',')' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000066; font-weight: bold;', + 2 => 'color: #0000ff;' + ), + 'COMMENTS' => array( + 1 => 'color: #D9D100; font-style: italic;', + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #000066;' + ), + 'STRINGS' => array( + 0 => 'color: #009900;' + ), + 'NUMBERS' => array( + 0 => 'color: #CC0000;' + ), + 'METHODS' => array( + 1 => 'color: #006600;' + ), + 'SYMBOLS' => array( + 0 => 'color: #000066;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + 0 => '', + 1 => '', + ) + ), + 'URLS' => array( + 1 => '', + 2 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + 1 => '\\' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array( + 0 => false, + 1 => false + ) +); diff --git a/includes/geshi/bnf.php b/includes/geshi/bnf.php new file mode 100644 index 0000000..0fe98d1 --- /dev/null +++ b/includes/geshi/bnf.php @@ -0,0 +1,117 @@ + 'bnf', + 'COMMENT_SINGLE' => array(';'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"', "'"), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array(), + 'SYMBOLS' => array( + 0 => array('(', ')'), + 1 => array('<', '>'), + 2 => array('[', ']'), + 3 => array('{', '}'), + 4 => array('=', '*', '/', '|', ':'), + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false + ), + 'STYLES' => array( + 'KEYWORDS' => array(), + 'COMMENTS' => array( + 0 => 'color: #666666; font-style: italic;', // Single Line comments + ), + 'ESCAPE_CHAR' => array( + 0 => '' + ), + 'BRACKETS' => array( + 0 => '' + ), + 'STRINGS' => array( + 0 => 'color: #a00;', + 1 => 'color: #a00;' + ), + 'NUMBERS' => array( + 0 => '' + ), + 'METHODS' => array( + 0 => '' + ), + 'SYMBOLS' => array( + 0 => 'color: #000066; font-weight: bold;', // Round brackets + 1 => 'color: #000066; font-weight: bold;', // Angel Brackets + 2 => 'color: #000066; font-weight: bold;', // Square Brackets + 3 => 'color: #000066; font-weight: bold;', // BRaces + 4 => 'color: #006600; font-weight: bold;', // Other operator symbols + ), + 'REGEXPS' => array( + 0 => 'color: #007;', + ), + 'SCRIPT' => array( + 0 => '' + ) + ), + 'URLS' => array(), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array(), + 'REGEXPS' => array( + //terminal symbols + 0 => array( + GESHI_SEARCH => '(<)([^&]+?)(>)', + GESHI_REPLACE => '\\2', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '\\1', + GESHI_AFTER => '\\3' + ), + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ) +); diff --git a/includes/geshi/boo.php b/includes/geshi/boo.php new file mode 100644 index 0000000..862881a --- /dev/null +++ b/includes/geshi/boo.php @@ -0,0 +1,215 @@ + 'Boo', + 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'''", "'", '"""', '"'), + 'HARDQUOTE' => array('"""', '"""'), + 'HARDESCAPE' => array('\"""'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array(//Namespace + 'namespace', 'import', 'from' + ), + 2 => array(//Jump + 'yield', 'return', 'goto', 'continue', 'break' + ), + 3 => array(//Conditional + 'while', 'unless', 'then', 'in', 'if', 'for', 'else', 'elif' + ), + 4 => array(//Property + 'set', 'get' + ), + 5 => array(//Exception + 'try', 'raise', 'failure', 'except', 'ensure' + ), + 6 => array(//Visibility + 'public', 'private', 'protected', 'internal' + ), + 7 => array(//Define + 'struct', 'ref', 'of', 'interface', 'event', 'enum', 'do', 'destructor', 'def', 'constructor', 'class' + ), + 8 => array(//Cast + 'typeof', 'cast', 'as' + ), + 9 => array(//BiMacro + 'yieldAll', 'using', 'unchecked', 'rawArayIndexing', 'print', 'normalArrayIndexing', 'lock', + 'debug', 'checked', 'assert' + ), + 10 => array(//BiAttr + 'required', 'property', 'meta', 'getter', 'default' + ), + 11 => array(//BiFunc + 'zip', 'shellp', 'shellm', 'shell', 'reversed', 'range', 'prompt', + 'matrix', 'map', 'len', 'join', 'iterator', 'gets', 'enumerate', 'cat', 'array' + ), + 12 => array(//HiFunc + '__switch__', '__initobj__', '__eval__', '__addressof__', 'quack' + ), + 13 => array(//Primitive + 'void', 'ushort', 'ulong', 'uint', 'true', 'timespan', 'string', 'single', + 'short', 'sbyte', 'regex', 'object', 'null', 'long', 'int', 'false', 'duck', + 'double', 'decimal', 'date', 'char', 'callable', 'byte', 'bool' + ), + 14 => array(//Operator + 'not', 'or', 'and', 'is', 'isa', + ), + 15 => array(//Modifier + 'virtual', 'transient', 'static', 'partial', 'override', 'final', 'abstract' + ), + 16 => array(//Access + 'super', 'self' + ), + 17 => array(//Pass + 'pass' + ) + ), + 'SYMBOLS' => array( + '[|', '|]', '${', '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>', '+', '-', ';' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + 5 => true, + 6 => true, + 7 => true, + 8 => true, + 9 => true, + 10 => true, + 11 => true, + 12 => true, + 13 => true, + 14 => true, + 15 => true, + 16 => true, + 17 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color:green;font-weight:bold;', + 2 => 'color:navy;', + 3 => 'color:blue;font-weight:bold;', + 4 => 'color:#8B4513;', + 5 => 'color:teal;font-weight:bold;', + 6 => 'color:blue;font-weight:bold;', + 7 => 'color:blue;font-weight:bold;', + 8 => 'color:blue;font-weight:bold;', + 9 => 'color:maroon;', + 10 => 'color:maroon;', + 11 => 'color:purple;', + 12 => 'color:#4B0082;', + 13 => 'color:purple;font-weight:bold;', + 14 => 'color:#008B8B;font-weight:bold;', + 15 => 'color:brown;', + 16 => 'color:black;font-weight:bold;', + 17 => 'color:gray;' + ), + 'COMMENTS' => array( + 1 => 'color: #999999; font-style: italic;', + 2 => 'color: #999999; font-style: italic;', + 'MULTI' => 'color: #008000; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #0000FF; font-weight: bold;', + 'HARD' => 'color: #0000FF; font-weight: bold;', + ), + 'BRACKETS' => array( + 0 => 'color: #006400;' + ), + 'STRINGS' => array( + 0 => 'color: #008000;', + 'HARD' => 'color: #008000;' + ), + 'NUMBERS' => array( + 0 => 'color: #00008B;' + ), + 'METHODS' => array( + 0 => 'color: 000000;', + 1 => 'color: 000000;' + ), + 'SYMBOLS' => array( + 0 => 'color: #006400;' + ), + 'REGEXPS' => array( + #0 => 'color: #0066ff;' + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => '', + 10 => '', + 11 => '', + 12 => '', + 13 => '', + 14 => '', + 15 => '', + 16 => '', + 17 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 0 => '.', + 1 => '::' + ), + 'REGEXPS' => array( + #0 => '%(@)?\/(?:(?(1)[^\/\\\\\r\n]+|[^\/\\\\\r\n \t]+)|\\\\[\/\\\\\w+()|.*?$^[\]{}\d])+\/%' + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4 +); diff --git a/includes/geshi/c.php b/includes/geshi/c.php new file mode 100644 index 0000000..9dbe610 --- /dev/null +++ b/includes/geshi/c.php @@ -0,0 +1,279 @@ + 'C', + 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'COMMENT_REGEXP' => array( + //Multiline-continued single-line comments + 1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m', + //Multiline-continued preprocessor define + 2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m' + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'ESCAPE_REGEXP' => array( + //Simple Single Char Escapes + 1 => "#\\\\[\\\\abfnrtv\'\"?\n]#i", + //Hexadecimal Char Specs + 2 => "#\\\\x[\da-fA-F]{2}#", + //Hexadecimal Char Specs + 3 => "#\\\\u[\da-fA-F]{4}#", + //Hexadecimal Char Specs + 4 => "#\\\\U[\da-fA-F]{8}#", + //Octal Char Specs + 5 => "#\\\\[0-7]{1,3}#" + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B | + GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI | + GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO, + 'KEYWORDS' => array( + 1 => array( + 'if', 'return', 'while', 'case', 'continue', 'default', + 'do', 'else', 'for', 'switch', 'goto' + ), + 2 => array( + 'null', 'false', 'break', 'true', 'function', 'enum', 'extern', 'inline' + ), + 3 => array( + // assert.h + 'assert', + + //complex.h + 'cabs', 'cacos', 'cacosh', 'carg', 'casin', 'casinh', 'catan', + 'catanh', 'ccos', 'ccosh', 'cexp', 'cimag', 'cis', 'clog', 'conj', + 'cpow', 'cproj', 'creal', 'csin', 'csinh', 'csqrt', 'ctan', 'ctanh', + + //ctype.h + 'digittoint', 'isalnum', 'isalpha', 'isascii', 'isblank', 'iscntrl', + 'isdigit', 'isgraph', 'islower', 'isprint', 'ispunct', 'isspace', + 'isupper', 'isxdigit', 'toascii', 'tolower', 'toupper', + + //inttypes.h + 'imaxabs', 'imaxdiv', 'strtoimax', 'strtoumax', 'wcstoimax', + 'wcstoumax', + + //locale.h + 'localeconv', 'setlocale', + + //math.h + 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'exp', + 'fabs', 'floor', 'frexp', 'ldexp', 'log', 'log10', 'modf', 'pow', + 'sin', 'sinh', 'sqrt', 'tan', 'tanh', + + //setjmp.h + 'longjmp', 'setjmp', + + //signal.h + 'raise', + + //stdarg.h + 'va_arg', 'va_copy', 'va_end', 'va_start', + + //stddef.h + 'offsetof', + + //stdio.h + 'clearerr', 'fclose', 'fdopen', 'feof', 'ferror', 'fflush', 'fgetc', + 'fgetpos', 'fgets', 'fopen', 'fprintf', 'fputc', 'fputchar', + 'fputs', 'fread', 'freopen', 'fscanf', 'fseek', 'fsetpos', 'ftell', + 'fwrite', 'getc', 'getch', 'getchar', 'gets', 'perror', 'printf', + 'putc', 'putchar', 'puts', 'remove', 'rename', 'rewind', 'scanf', + 'setbuf', 'setvbuf', 'snprintf', 'sprintf', 'sscanf', 'tmpfile', + 'tmpnam', 'ungetc', 'vfprintf', 'vfscanf', 'vprintf', 'vscanf', + 'vsprintf', 'vsscanf', + + //stdlib.h + 'abort', 'abs', 'atexit', 'atof', 'atoi', 'atol', 'bsearch', + 'calloc', 'div', 'exit', 'free', 'getenv', 'itoa', 'labs', 'ldiv', + 'ltoa', 'malloc', 'qsort', 'rand', 'realloc', 'srand', 'strtod', + 'strtol', 'strtoul', 'system', + + //string.h + 'memchr', 'memcmp', 'memcpy', 'memmove', 'memset', 'strcat', + 'strchr', 'strcmp', 'strcoll', 'strcpy', 'strcspn', 'strerror', + 'strlen', 'strncat', 'strncmp', 'strncpy', 'strpbrk', 'strrchr', + 'strspn', 'strstr', 'strtok', 'strxfrm', + + //time.h + 'asctime', 'clock', 'ctime', 'difftime', 'gmtime', 'localtime', + 'mktime', 'strftime', 'time', + + //wchar.h + 'btowc', 'fgetwc', 'fgetws', 'fputwc', 'fputws', 'fwide', + 'fwprintf', 'fwscanf', 'getwc', 'getwchar', 'mbrlen', 'mbrtowc', + 'mbsinit', 'mbsrtowcs', 'putwc', 'putwchar', 'swprintf', 'swscanf', + 'ungetwc', 'vfwprintf', 'vswprintf', 'vwprintf', 'wcrtomb', + 'wcscat', 'wcschr', 'wcscmp', 'wcscoll', 'wcscpy', 'wcscspn', + 'wcsftime', 'wcslen', 'wcsncat', 'wcsncmp', 'wcsncpy', 'wcspbrk', + 'wcsrchr', 'wcsrtombs', 'wcsspn', 'wcsstr', 'wcstod', 'wcstok', + 'wcstol', 'wcstoul', 'wcsxfrm', 'wctob', 'wmemchr', 'wmemcmp', + 'wmemcpy', 'wmemmove', 'wmemset', 'wprintf', 'wscanf', + + //wctype.h + 'iswalnum', 'iswalpha', 'iswcntrl', 'iswctype', 'iswdigit', + 'iswgraph', 'iswlower', 'iswprint', 'iswpunct', 'iswspace', + 'iswupper', 'iswxdigit', 'towctrans', 'towlower', 'towupper', + 'wctrans', 'wctype' + ), + 4 => array( + 'auto', 'char', 'const', 'double', 'float', 'int', 'long', + 'register', 'short', 'signed', 'sizeof', 'static', 'struct', + 'typedef', 'union', 'unsigned', 'void', 'volatile', 'wchar_t', + + 'int8', 'int16', 'int32', 'int64', + 'uint8', 'uint16', 'uint32', 'uint64', + + 'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t', + 'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t', + + 'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t', + 'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t', + + 'int8_t', 'int16_t', 'int32_t', 'int64_t', + 'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t', + + 'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t', + 'size_t', 'off_t' + ), + ), + 'SYMBOLS' => array( + '(', ')', '{', '}', '[', ']', + '+', '-', '*', '/', '%', + '=', '<', '>', + '!', '^', '&', '|', + '?', ':', + ';', ',' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #b1b100;', + 2 => 'color: #000000; font-weight: bold;', + 3 => 'color: #000066;', + 4 => 'color: #993333;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 2 => 'color: #339933;', + 'MULTI' => 'color: #808080; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;', + 1 => 'color: #000099; font-weight: bold;', + 2 => 'color: #660099; font-weight: bold;', + 3 => 'color: #660099; font-weight: bold;', + 4 => 'color: #660099; font-weight: bold;', + 5 => 'color: #006699; font-weight: bold;', + 'HARD' => '', + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #0000dd;', + GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;', + GESHI_NUMBER_OCT_PREFIX => 'color: #208080;', + GESHI_NUMBER_HEX_PREFIX => 'color: #208080;', + GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;', + GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;', + GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;', + GESHI_NUMBER_FLT_NONSCI => 'color:#800080;' + ), + 'METHODS' => array( + 1 => 'color: #202020;', + 2 => 'color: #202020;' + ), + 'SYMBOLS' => array( + 0 => 'color: #339933;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAMEL}.html', + 4 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.', + 2 => '::' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4 +); diff --git a/includes/geshi/c_loadrunner.php b/includes/geshi/c_loadrunner.php new file mode 100644 index 0000000..12c60df --- /dev/null +++ b/includes/geshi/c_loadrunner.php @@ -0,0 +1,321 @@ + 'C (LoadRunner)', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + // Escape characters within strings (like \\) are not highlighted differently in LoadRunner, so + // I am using GeSHi escape characters (or regular expressions) to highlight LoadRunner {parameters}. + // LoadRunner {parameters} must begin with a letter and contain only alphanumeric characters and '_' + 'ESCAPE_REGEXP' => array( + 0 => "#\{[a-zA-Z]{1}[a-zA-Z_]{0,}\}#", + ), + + // Keywords + 'KEYWORDS' => array( + // Keywords from http://en.wikipedia.org/wiki/C_syntax + 1 => array( + 'auto', 'break', 'case', 'char', 'const', 'continue', 'default', + 'do', 'double', 'else', 'enum', 'extern', 'float', 'for', 'goto', + 'if', 'inline', 'int', 'long', 'register', 'restrict', 'return', + 'short', 'signed', 'sizeof', 'static', 'struct', 'switch', + 'typedef', 'union', 'unsigned', 'void', 'volatile', 'while', + '_Bool', '_Complex', '_Imaginary' + ), + // C preprocessor directives from http://en.wikipedia.org/wiki/C_preprocessor + 2 => array( + '#define', '#if', '#ifdef', '#ifndef', '#include', '#else', '#elif', '#endif', '#pragma', '#undef' + ), + // Functions from lrun.h + 3 => array( + 'lr_start_transaction', 'lr_start_sub_transaction', 'lr_start_transaction_instance', 'lr_end_transaction', + 'lr_end_sub_transaction', 'lr_end_transaction_instance', 'lr_stop_transaction', 'lr_stop_transaction_instance', + 'lr_resume_transaction', 'lr_resume_transaction_instance', 'lr_wasted_time', 'lr_set_transaction', 'lr_user_data_point', + 'lr_user_data_point_instance', 'lr_user_data_point_ex', 'lr_user_data_point_instance_ex', 'lr_get_transaction_duration', + 'lr_get_trans_instance_duration', 'lr_get_transaction_think_time', 'lr_get_trans_instance_think_time', + 'lr_get_transaction_wasted_time', 'lr_get_trans_instance_wasted_time', 'lr_get_transaction_status', + 'lr_get_trans_instance_status', 'lr_set_transaction_status', 'lr_set_transaction_status_by_name', + 'lr_set_transaction_instance_status', 'lr_start_timer', 'lr_end_timer', 'lr_rendezvous', 'lr_rendezvous_ex', + 'lr_get_vuser_ip', 'lr_whoami', 'lr_get_host_name', 'lr_get_master_host_name', 'lr_get_attrib_long', + 'lr_get_attrib_string', 'lr_get_attrib_double', 'lr_paramarr_idx', 'lr_paramarr_random', 'lr_paramarr_len', + 'lr_param_unique', 'lr_param_sprintf', 'lr_load_dll', 'lr_continue_on_error', 'lr_decrypt', 'lr_abort', 'lr_exit', + 'lr_peek_events', 'lr_think_time', 'lr_debug_message', 'lr_log_message', 'lr_message', 'lr_error_message', + 'lr_output_message', 'lr_vuser_status_message', 'lr_fail_trans_with_error', 'lr_next_row', 'lr_advance_param', + 'lr_eval_string', 'lr_eval_string_ext', 'lr_eval_string_ext_free', 'lr_param_increment', 'lr_save_var', + 'lr_save_string', 'lr_save_int', 'lr_save_datetime', 'lr_save_searched_string', 'lr_set_debug_message', + 'lr_get_debug_message', 'lr_enable_ip_spoofing', 'lr_disable_ip_spoofing', 'lr_convert_string_encoding' + ), + // Constants from lrun.h + 4 => array( + 'DP_FLAGS_NO_LOG', 'DP_FLAGS_STANDARD_LOG', 'DP_FLAGS_EXTENDED_LOG', 'merc_timer_handle_t', 'LR_EXIT_VUSER', + 'LR_EXIT_ACTION_AND_CONTINUE', 'LR_EXIT_ITERATION_AND_CONTINUE', 'LR_EXIT_VUSER_AFTER_ITERATION', + 'LR_EXIT_VUSER_AFTER_ACTION', 'LR_EXIT_MAIN_ITERATION_AND_CONTINUE', 'LR_MSG_CLASS_DISABLE_LOG', + 'LR_MSG_CLASS_STANDARD_LOG', 'LR_MSG_CLASS_RETURNED_DATA', 'LR_MSG_CLASS_PARAMETERS', 'LR_MSG_CLASS_ADVANCED_TRACE', + 'LR_MSG_CLASS_EXTENDED_LOG', 'LR_MSG_CLASS_SENT_DATA', 'LR_MSG_CLASS_JIT_LOG_ON_ERROR', 'LR_SWITCH_OFF', 'LR_SWITCH_ON', + 'LR_SWITCH_DEFAULT', 'ONE_DAY', 'ONE_HOUR', 'ONE_MIN', 'DATE_NOW', 'TIME_NOW', 'LR_MSG_CLASS_BRIEF_LOG', + 'LR_MSG_CLASS_RESULT_DATA', 'LR_MSG_CLASS_FULL_TRACE', 'LR_MSG_CLASS_AUTO_LOG', 'LR_MSG_OFF', 'LR_MSG_ON', + 'LR_MSG_DEFAULT' + ), + // Functions from web_api.h + 5 => array( + 'web_reg_add_cookie', 'web_report_data_point', 'web_text_link', 'web_element', 'web_image_link', 'web_static_image', + 'web_image_submit', 'web_button', 'web_edit_field', 'web_radio_group', 'web_check_box', 'web_list', 'web_text_area', + 'web_map_area', 'web_eval_java_script', 'web_reg_dialog', 'web_reg_cross_step_download', 'web_browser', + 'web_set_rts_key', 'web_save_param_length', 'web_save_timestamp_param', 'web_load_cache', 'web_dump_cache', + 'web_add_cookie_ex' + ), + // Constants from web_api.h + 6 => array( + 'DESCRIPTION', 'ACTION', 'VERIFICATION', 'LR_NOT_FOUND', 'HTTP_INFO_TOTAL_REQUEST_STAT', + 'HTTP_INFO_TOTAL_RESPONSE_STAT', 'LRW_OPT_STOP_VUSER_ON_ERROR', 'LRW_OPT_DISPLAY_IMAGE_BODY' + ), + // Functions from as_web.h + 7 => array( + 'web_add_filter', 'web_add_auto_filter', 'web_add_auto_header', 'web_add_header', 'web_add_cookie', + 'web_cleanup_auto_headers', 'web_cleanup_cookies', 'web_concurrent_end', 'web_concurrent_start', 'web_create_html_param', + 'web_create_html_param_ex', 'web_custom_request', 'web_disable_keep_alive', 'web_enable_keep_alive', 'web_find', + 'web_get_int_property', 'web_image', 'web_image_check', 'web_link', 'web_global_verification', 'web_reg_find', + 'web_reg_save_param', 'web_convert_param', 'web_remove_auto_filter', 'web_remove_auto_header', 'web_revert_auto_header', + 'web_remove_cookie', 'web_save_header', 'web_set_certificate', 'web_set_certificate_ex', 'web_set_connections_limit', + 'web_set_max_html_param_len', 'web_set_max_retries', 'web_set_proxy', 'web_set_proxy_bypass', 'web_set_secure_proxy', + 'web_set_sockets_option', 'web_set_option', 'web_set_timeout', 'web_set_user', 'web_sjis_to_euc_param', + 'web_submit_data', 'web_submit_form', 'web_url', 'web_set_proxy_bypass_local', 'web_cache_cleanup', + 'web_create_html_query', 'web_create_radio_button_param', 'web_switch_net_layer' + ), + // Constants from as_web.h + 8 => array( + 'ENDFORM', 'LAST', 'ENDITEM', 'EXTRARES', 'ITEMDATA', 'STARTHIDDENS', 'ENDHIDDENS', 'CONNECT', 'RECEIVE', 'RESOLVE', + 'STEP', 'REQUEST', 'RESPONSE', 'STARTQUERY', 'ENDQUERY', 'INPROPS', 'OUTPROPS', 'ENDPROPS', 'RAW_BODY_START', + 'RAW_BODY_END', 'HTTP_INFO_RETURN_CODE', 'HTTP_INFO_DOWNLOAD_SIZE', 'HTTP_INFO_DOWNLOAD_TIME', + 'LRW_NET_SOCKET_OPT_LOAD_VERIFY_FILE', 'LRW_NET_SOCKET_OPT_DEFAULT_VERIFY_PATH', 'LRW_NET_SOCKET_OPT_SSL_VERSION', + 'LRW_NET_SOCKET_OPT_SSL_CIPHER_LIST', 'LRW_NET_SOCKET_OPT_SO_REUSE_ADDRESS', 'LRW_NET_SOCKET_OPT_USER_IP_ADDRESS', + 'LRW_NET_SOCKET_OPT_IP_ADDRESS_BY_INDEX', 'LRW_NET_SOCKET_OPT_HELP', 'LRW_NET_SOCKET_OPT_PRINT_USER_IP_ADDRESS_LIST', + 'LRW_OPT_HTML_CHAR_REF_BACKWARD_COMPATIBILITY', 'LRW_OPT_VALUE_YES', 'LRW_OPT_VALUE_NO' + ), + // Functions from as_sapgui.h + 9 => array( + 'sapgui_open_connection', 'sapgui_open_connection_ex', 'sapgui_logon', 'sapgui_create_session', + 'sapgui_create_new_session', 'sapgui_call_method', 'sapgui_call_method_ex', 'sapgui_set_property', + 'sapgui_get_property', 'sapgui_set_collection_property', 'sapgui_active_object_from_parent_method', + 'sapgui_active_object_from_parent_property', 'sapgui_call_method_of_active_object', + 'sapgui_call_method_of_active_object_ex', 'sapgui_set_property_of_active_object', 'sapgui_get_property_of_active_object', + 'sapgui_select_active_connection', 'sapgui_select_active_session', 'sapgui_select_active_window ', + 'sapgui_status_bar_get_text', 'sapgui_status_bar_get_param', 'sapgui_status_bar_get_type', 'sapgui_get_status_bar_text', + 'sapgui_get_active_window_title', 'sapgui_is_object_available', 'sapgui_is_tab_selected', 'sapgui_is_object_changeable', + 'sapgui_set_ok_code', 'sapgui_send_vkey', 'sapgui_resize_window', 'sapgui_window_resize', 'sapgui_window_maximize', + 'sapgui_window_close', 'sapgui_window_restore', 'sapgui_window_scroll_to_row', 'sapgui_press_button', + 'sapgui_select_radio_button', 'sapgui_set_password', 'sapgui_set_text', 'sapgui_select_menu', 'sapgui_select_tab', + 'sapgui_set_checkbox', 'sapgui_set_focus', 'sapgui_select_combobox_entry', 'sapgui_get_ok_code', + 'sapgui_is_radio_button_selected', 'sapgui_get_text', 'sapgui_is_checkbox_selected', 'sapgui_table_set_focus', + 'sapgui_table_press_button', 'sapgui_table_select_radio_button', 'sapgui_table_set_password', 'sapgui_table_set_text', + 'sapgui_table_set_checkbox', 'sapgui_table_select_combobox_entry', 'sapgui_table_set_row_selected', + 'sapgui_table_set_column_selected', 'sapgui_table_set_column_width', 'sapgui_table_reorder', 'sapgui_table_fill_data', + 'sapgui_table_get_text', 'sapgui_table_is_radio_button_selected', 'sapgui_table_is_checkbox_selected', + 'sapgui_table_is_row_selected', 'sapgui_table_is_column_selected', 'sapgui_table_get_column_width', + 'sapgui_grid_clear_selection', 'sapgui_grid_select_all', 'sapgui_grid_selection_changed', + 'sapgui_grid_press_column_header', 'sapgui_grid_select_cell', 'sapgui_grid_select_rows', 'sapgui_grid_select_column', + 'sapgui_grid_deselect_column', 'sapgui_grid_select_columns', 'sapgui_grid_select_cells', 'sapgui_grid_select_cell_row', + 'sapgui_grid_select_cell_column', 'sapgui_grid_set_column_order', 'sapgui_grid_set_column_width', + 'sapgui_grid_scroll_to_row', 'sapgui_grid_double_click', 'sapgui_grid_click', 'sapgui_grid_press_button', + 'sapgui_grid_press_total_row', 'sapgui_grid_set_cell_data', 'sapgui_grid_set_checkbox', + 'sapgui_grid_double_click_current_cell', 'sapgui_grid_click_current_cell', 'sapgui_grid_press_button_current_cell', + 'sapgui_grid_press_total_row_current_cell', 'sapgui_grid_press_F1', 'sapgui_grid_press_F4', 'sapgui_grid_press_ENTER', + 'sapgui_grid_press_toolbar_button', 'sapgui_grid_press_toolbar_context_button', 'sapgui_grid_open_context_menu', + 'sapgui_grid_select_context_menu', 'sapgui_grid_select_toolbar_menu', 'sapgui_grid_fill_data', + 'sapgui_grid_get_current_cell_row', 'sapgui_grid_get_current_cell_column', 'sapgui_grid_get_rows_count', + 'sapgui_grid_get_columns_count', 'sapgui_grid_get_cell_data', 'sapgui_grid_is_checkbox_selected', + 'sapgui_tree_scroll_to_node', 'sapgui_tree_set_hierarchy_header_width', 'sapgui_tree_set_selected_node', + 'sapgui_tree_double_click_node', 'sapgui_tree_press_key', 'sapgui_tree_press_button', 'sapgui_tree_set_checkbox', + 'sapgui_tree_double_click_item', 'sapgui_tree_click_link', 'sapgui_tree_open_default_context_menu', + 'sapgui_tree_open_node_context_menu', 'sapgui_tree_open_header_context_menu', 'sapgui_tree_open_item_context_menu', + 'sapgui_tree_select_context_menu', 'sapgui_tree_select_item', 'sapgui_tree_select_node', 'sapgui_tree_unselect_node', + 'sapgui_tree_unselect_all', 'sapgui_tree_select_column', 'sapgui_tree_unselect_column', 'sapgui_tree_set_column_order', + 'sapgui_tree_collapse_node', 'sapgui_tree_expand_node', 'sapgui_tree_scroll_to_item', 'sapgui_tree_set_column_width', + 'sapgui_tree_press_header', 'sapgui_tree_is_checkbox_selected', 'sapgui_tree_get_node_text', 'sapgui_tree_get_item_text', + 'sapgui_calendar_scroll_to_date', 'sapgui_calendar_focus_date', 'sapgui_calendar_select_interval', + 'sapgui_apogrid_select_all', 'sapgui_apogrid_clear_selection', 'sapgui_apogrid_select_cell', + 'sapgui_apogrid_deselect_cell', 'sapgui_apogrid_select_row', 'sapgui_apogrid_deselect_row', + 'sapgui_apogrid_select_column', 'sapgui_apogrid_deselect_column', 'sapgui_apogrid_scroll_to_row', + 'sapgui_apogrid_scroll_to_column', 'sapgui_apogrid_double_click', 'sapgui_apogrid_set_cell_data', + 'sapgui_apogrid_get_cell_data', 'sapgui_apogrid_is_cell_changeable', 'sapgui_apogrid_get_cell_format', + 'sapgui_apogrid_get_cell_tooltip', 'sapgui_apogrid_press_ENTER', 'sapgui_apogrid_open_cell_context_menu', + 'sapgui_apogrid_select_context_menu_item', 'sapgui_text_edit_scroll_to_line', 'sapgui_text_edit_set_selection_indexes', + 'sapgui_text_edit_set_unprotected_text_part', 'sapgui_text_edit_get_first_visible_line', + 'sapgui_text_edit_get_selection_index_start', 'sapgui_text_edit_get_selection_index_end', + 'sapgui_text_edit_get_number_of_unprotected_text_parts', 'sapgui_text_edit_double_click', + 'sapgui_text_edit_single_file_dropped', 'sapgui_text_edit_multiple_files_dropped', 'sapgui_text_edit_press_F1', + 'sapgui_text_edit_press_F4', 'sapgui_text_edit_open_context_menu', 'sapgui_text_edit_select_context_menu', + 'sapgui_text_edit_modified_status_changed', 'sapgui_htmlviewer_send_event', 'sapgui_htmlviewer_dom_get_property', + 'sapgui_toolbar_press_button', 'sapgui_toolbar_press_context_button', 'sapgui_toolbar_select_menu_item', + 'sapgui_toolbar_select_menu_item_by_text', 'sapgui_toolbar_select_context_menu_item', + 'sapgui_toolbar_select_context_menu_item_by_text' + ), + // Constants from as_sapgui.h + 10 => array( + 'BEGIN_OPTIONAL', 'END_OPTIONAL', 'al-keys', 'ENTER', 'HELP', 'F2', 'BACK', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', + 'F10', 'F11', 'ESC', 'SHIFT_F1', 'SHIFT_F2', 'SHIFT_F3', 'SHIFT_F4', 'SHIFT_F5', 'SHIFT_F6', 'SHIFT_F7', 'SHIFT_F8', + 'SHIFT_F9', 'SHIFT_F10', 'SHIFT_F11', 'SHIFT_F12', 'CTRL_F1', 'CTRL_F2', 'CTRL_F3', 'CTRL_F4', 'CTRL_F5', 'CTRL_F6', + 'CTRL_F7', 'CTRL_F8', 'CTRL_F9', 'CTRL_F10', 'CTRL_F11', 'CTRL_F12', 'CTRL_SHIFT_F1', 'CTRL_SHIFT_F2', 'CTRL_SHIFT_F3', + 'CTRL_SHIFT_F4', 'CTRL_SHIFT_F5', 'CTRL_SHIFT_F6', 'CTRL_SHIFT_F7', 'CTRL_SHIFT_F8', 'CTRL_SHIFT_F9', 'CTRL_SHIFT_F10', + 'CTRL_SHIFT_F11', 'CTRL_SHIFT_F12', 'CANCEL', 'CTRL_F', 'CTRL_PAGE_UP', 'PAGE_UP', 'PAGE_DOWN', 'CTRL_PAGE_DOWN', + 'CTRL_G', 'CTRL_P' + ), + ), + + // Symbols and Case Sensitivity + // Symbols from: http://en.wikipedia.org/wiki/C_syntax + 'SYMBOLS' => array( + '(', ')', '{', '}', '[', ']', + '+', '-', '*', '/', '%', + '=', '<', '>', '!', '^', '&', '|', '?', ':', ';', ',' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, // Standard C reserved keywords + 2 => true, // C preprocessor directives + 3 => true, // Functions from lrun.h + 4 => true, // Constants from lrun.h + 5 => true, // Functions from web_api.h + 6 => true, // Constants from web_api.h + 7 => true, // Functions from as_web.h + 8 => true, // Constants from as_web.h + 9 => true, // Functions from as_sapgui.h + 10 => true, // Constants from as_sapgui.h + ), + + // Styles + 'STYLES' => array( + 'KEYWORDS' => array( + // Functions are brown, constants and reserved words are blue + 1 => 'color: #0000ff;', // Standard C reserved keywords + 2 => 'color: #0000ff;', // C preprocessor directives + 3 => 'color: #8a0000;', // Functions from lrun.h + 4 => 'color: #0000ff;', // Constants from lrun.h + 5 => 'color: #8a0000;', // Functions from web_api.h + 6 => 'color: #0000ff;', // Constants from web_api.h + 7 => 'color: #8a0000;', // Functions from as_web.h + 8 => 'color: #0000ff;', // Constants from as_web.h + 9 => 'color: #8a0000;', // Functions from as_sapgui.h + 10 => 'color: #0000ff;', // Constants from as_sapgui.h + ), + 'COMMENTS' => array( + // Comments are grey + 1 => 'color: #9b9b9b;', + 'MULTI' => 'color: #9b9b9b;' + ), + 'ESCAPE_CHAR' => array( + // GeSHi cannot define a separate style for ESCAPE_REGEXP. The style for ESCAPE_CHAR also applies to ESCAPE_REGEXP. + // This is used for LoadRunner {parameters} + // {parameters} are pink + 0 => 'color: #c000c0;' + ), + 'BRACKETS' => array( + 0 => 'color: #000000;' + ), + 'STRINGS' => array( + // Strings are green + 0 => 'color: #008080;' + ), + 'NUMBERS' => array( + // Numbers are green + 0 => 'color: #008080;', + GESHI_NUMBER_BIN_PREFIX_0B => 'color: #008080;', + GESHI_NUMBER_OCT_PREFIX => 'color: #008080;', + GESHI_NUMBER_HEX_PREFIX => 'color: #008080;', + GESHI_NUMBER_FLT_SCI_SHORT => 'color:#008080;', + GESHI_NUMBER_FLT_SCI_ZERO => 'color:#008080;', + GESHI_NUMBER_FLT_NONSCI_F => 'color:#008080;', + GESHI_NUMBER_FLT_NONSCI => 'color:#008080;' + ), + 'METHODS' => array( + 1 => 'color: #000000;' + ), + 'SYMBOLS' => array( + 0 => 'color: #000000;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + + // URLs for Functions + 'URLS' => array( + 1 => '', // Standard C reserved keywords + 2 => '', // C preprocessor directives + 3 => '', // Functions from lrun.h + 4 => '', // Constants from lrun.h + 5 => '', // Functions from web_api.h + 6 => '', // Constants from web_api.h + 7 => '', // Functions from as_web.h + 8 => '', // Constants from as_web.h + 9 => '', // Functions from as_sapgui.h + 10 => '', // Constants from as_sapgui.h + ), + + // Object Orientation + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + + // Regular Expressions + // Note that REGEXPS are not applied within strings. + 'REGEXPS' => array( + ), + + // Contextual Highlighting and Strict Mode + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + + // Tabs + // Note that if you are using
         tags for your code, then the browser chooses how many spaces your tabs will translate to.
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/c_mac.php b/includes/geshi/c_mac.php
        new file mode 100644
        index 0000000..94131a5
        --- /dev/null
        +++ b/includes/geshi/c_mac.php
        @@ -0,0 +1,225 @@
        + 'C (Mac)',
        +    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        //Multiline-continued single-line comments
        +        1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m',
        +        //Multiline-continued preprocessor define
        +        2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m'
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        //Simple Single Char Escapes
        +        1 => "#\\\\[\\\\abfnrtv\'\"?\n]#i",
        +        //Hexadecimal Char Specs
        +        2 => "#\\\\x[\da-fA-F]{2}#",
        +        //Hexadecimal Char Specs
        +        3 => "#\\\\u[\da-fA-F]{4}#",
        +        //Hexadecimal Char Specs
        +        4 => "#\\\\U[\da-fA-F]{8}#",
        +        //Octal Char Specs
        +        5 => "#\\\\[0-7]{1,3}#"
        +        ),
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |
        +        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
        +        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'if', 'return', 'while', 'case', 'continue', 'default',
        +            'do', 'else', 'for', 'switch', 'goto'
        +            ),
        +        2 => array(
        +            'NULL', 'false', 'break', 'true', 'enum', 'errno', 'EDOM',
        +            'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',
        +            'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',
        +            'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',
        +            'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',
        +            'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',
        +            'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',
        +            'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',
        +            'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',
        +            'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam',
        +            'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',
        +            'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC',
        +            // Mac-specific constants:
        +            'kCFAllocatorDefault'
        +            ),
        +        3 => array(
        +            'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
        +            'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',
        +            'ispunct', 'isspace', 'isupper', 'isxdigit', 'tolower', 'toupper',
        +            'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',
        +            'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',
        +            'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp',
        +            'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',
        +            'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',
        +            'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',
        +            'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',
        +            'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',
        +            'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',
        +            'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',
        +            'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',
        +            'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',
        +            'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',
        +            'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',
        +            'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',
        +            'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
        +            ),
        +        4 => array(
        +            'auto', 'char', 'const', 'double',  'float', 'int', 'long',
        +            'register', 'short', 'signed', 'static', 'struct',
        +            'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf',
        +            'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',
        +            'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm', 'wchar_t',
        +
        +            'int8', 'int16', 'int32', 'int64',
        +            'uint8', 'uint16', 'uint32', 'uint64',
        +
        +            'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t',
        +            'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',
        +
        +            'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t',
        +            'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t',
        +
        +            'int8_t', 'int16_t', 'int32_t', 'int64_t',
        +            'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t',
        +
        +            'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t',
        +
        +            // Mac-specific types:
        +            'CFArrayRef', 'CFDictionaryRef', 'CFMutableDictionaryRef', 'CFBundleRef', 'CFSetRef', 'CFStringRef',
        +            'CFURLRef', 'CFLocaleRef', 'CFDateFormatterRef', 'CFNumberFormatterRef', 'CFPropertyListRef',
        +            'CFTreeRef', 'CFWriteStreamRef', 'CFCharacterSetRef', 'CFMutableStringRef', 'CFNotificationRef',
        +            'CFReadStreamRef', 'CFNull', 'CFAllocatorRef', 'CFBagRef', 'CFBinaryHeapRef',
        +            'CFBitVectorRef', 'CFBooleanRef', 'CFDataRef', 'CFDateRef', 'CFMachPortRef', 'CFMessagePortRef',
        +            'CFMutableArrayRef', 'CFMutableBagRef', 'CFMutableBitVectorRef', 'CFMutableCharacterSetRef',
        +            'CFMutableDataRef', 'CFMutableSetRef', 'CFNumberRef', 'CFPlugInRef', 'CFPlugInInstanceRef',
        +            'CFRunLoopRef', 'CFRunLoopObserverRef', 'CFRunLoopSourceRef', 'CFRunLoopTimerRef', 'CFSocketRef',
        +            'CFTimeZoneRef', 'CFTypeRef', 'CFUserNotificationRef', 'CFUUIDRef', 'CFXMLNodeRef', 'CFXMLParserRef',
        +            'CFXMLTreeRef'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000ff;',
        +            2 => 'color: #0000ff;',
        +            3 => 'color: #0000dd;',
        +            4 => 'color: #0000ff;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #ff0000;',
        +            2 => 'color: #339900;',
        +            'MULTI' => 'color: #ff0000; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            1 => 'color: #000099; font-weight: bold;',
        +            2 => 'color: #660099; font-weight: bold;',
        +            3 => 'color: #660099; font-weight: bold;',
        +            4 => 'color: #660099; font-weight: bold;',
        +            5 => 'color: #006699; font-weight: bold;',
        +            'HARD' => '',
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #666666;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #0000dd;',
        +            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',
        +            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
        +            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #00eeff;',
        +            2 => 'color: #00eeff;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAMEL}.html',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.',
        +        2 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/c_winapi.php b/includes/geshi/c_winapi.php
        new file mode 100644
        index 0000000..69cad2a
        --- /dev/null
        +++ b/includes/geshi/c_winapi.php
        @@ -0,0 +1,870 @@
        + 'C (WinAPI)',
        +    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        //Multiline-continued single-line comments
        +        1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m',
        +        //Multiline-continued preprocessor define
        +        2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m'
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        //Simple Single Char Escapes
        +        1 => "#\\\\[\\\\abfnrtv\'\"?\n]#i",
        +        //Hexadecimal Char Specs
        +        2 => "#\\\\x[\da-fA-F]{2}#",
        +        //Hexadecimal Char Specs
        +        3 => "#\\\\u[\da-fA-F]{4}#",
        +        //Hexadecimal Char Specs
        +        4 => "#\\\\U[\da-fA-F]{8}#",
        +        //Octal Char Specs
        +        5 => "#\\\\[0-7]{1,3}#"
        +        ),
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |
        +        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
        +        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'if', 'return', 'while', 'case', 'continue', 'default',
        +            'do', 'else', 'for', 'switch', 'goto'
        +            ),
        +        2 => array(
        +            'null', 'false', 'break', 'true', 'function', 'enum', 'extern', 'inline'
        +            ),
        +        3 => array(
        +            // assert.h
        +            'assert',
        +
        +            //complex.h
        +            'cabs', 'cacos', 'cacosh', 'carg', 'casin', 'casinh', 'catan',
        +            'catanh', 'ccos', 'ccosh', 'cexp', 'cimag', 'cis', 'clog', 'conj',
        +            'cpow', 'cproj', 'creal', 'csin', 'csinh', 'csqrt', 'ctan', 'ctanh',
        +
        +            //ctype.h
        +            'digittoint', 'isalnum', 'isalpha', 'isascii', 'isblank', 'iscntrl',
        +            'isdigit', 'isgraph', 'islower', 'isprint', 'ispunct', 'isspace',
        +            'isupper', 'isxdigit', 'toascii', 'tolower', 'toupper',
        +
        +            //inttypes.h
        +            'imaxabs', 'imaxdiv', 'strtoimax', 'strtoumax', 'wcstoimax',
        +            'wcstoumax',
        +
        +            //locale.h
        +            'localeconv', 'setlocale',
        +
        +            //math.h
        +            'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'exp',
        +            'fabs', 'floor', 'frexp', 'ldexp', 'log', 'log10', 'modf', 'pow',
        +            'sin', 'sinh', 'sqrt', 'tan', 'tanh',
        +
        +            //setjmp.h
        +            'longjmp', 'setjmp',
        +
        +            //signal.h
        +            'raise',
        +
        +            //stdarg.h
        +            'va_arg', 'va_copy', 'va_end', 'va_start',
        +
        +            //stddef.h
        +            'offsetof',
        +
        +            //stdio.h
        +            'clearerr', 'fclose', 'fdopen', 'feof', 'ferror', 'fflush', 'fgetc',
        +            'fgetpos', 'fgets', 'fopen', 'fprintf', 'fputc', 'fputchar',
        +            'fputs', 'fread', 'freopen', 'fscanf', 'fseek', 'fsetpos', 'ftell',
        +            'fwrite', 'getc', 'getch', 'getchar', 'gets', 'perror', 'printf',
        +            'putc', 'putchar', 'puts', 'remove', 'rename', 'rewind', 'scanf',
        +            'setbuf', 'setvbuf', 'snprintf', 'sprintf', 'sscanf', 'tmpfile',
        +            'tmpnam', 'ungetc', 'vfprintf', 'vfscanf', 'vprintf', 'vscanf',
        +            'vsprintf', 'vsscanf',
        +
        +            //stdlib.h
        +            'abort', 'abs', 'atexit', 'atof', 'atoi', 'atol', 'bsearch',
        +            'calloc', 'div', 'exit', 'free', 'getenv', 'itoa', 'labs', 'ldiv',
        +            'ltoa', 'malloc', 'qsort', 'rand', 'realloc', 'srand', 'strtod',
        +            'strtol', 'strtoul', 'system',
        +
        +            //string.h
        +            'memchr', 'memcmp', 'memcpy', 'memmove', 'memset', 'strcat',
        +            'strchr', 'strcmp', 'strcoll', 'strcpy', 'strcspn', 'strerror',
        +            'strlen', 'strncat', 'strncmp', 'strncpy', 'strpbrk', 'strrchr',
        +            'strspn', 'strstr', 'strtok', 'strxfrm',
        +
        +            //time.h
        +            'asctime', 'clock', 'ctime', 'difftime', 'gmtime', 'localtime',
        +            'mktime', 'strftime', 'time',
        +
        +            //wchar.h
        +            'btowc', 'fgetwc', 'fgetws', 'fputwc', 'fputws', 'fwide',
        +            'fwprintf', 'fwscanf', 'getwc', 'getwchar', 'mbrlen', 'mbrtowc',
        +            'mbsinit', 'mbsrtowcs', 'putwc', 'putwchar', 'swprintf', 'swscanf',
        +            'ungetwc', 'vfwprintf', 'vswprintf', 'vwprintf', 'wcrtomb',
        +            'wcscat', 'wcschr', 'wcscmp', 'wcscoll', 'wcscpy', 'wcscspn',
        +            'wcsftime', 'wcslen', 'wcsncat', 'wcsncmp', 'wcsncpy', 'wcspbrk',
        +            'wcsrchr', 'wcsrtombs', 'wcsspn', 'wcsstr', 'wcstod', 'wcstok',
        +            'wcstol', 'wcstoul', 'wcsxfrm', 'wctob', 'wmemchr', 'wmemcmp',
        +            'wmemcpy', 'wmemmove', 'wmemset', 'wprintf', 'wscanf',
        +
        +            //wctype.h
        +            'iswalnum', 'iswalpha', 'iswcntrl', 'iswctype', 'iswdigit',
        +            'iswgraph', 'iswlower', 'iswprint', 'iswpunct', 'iswspace',
        +            'iswupper', 'iswxdigit', 'towctrans', 'towlower', 'towupper',
        +            'wctrans', 'wctype'
        +            ),
        +        4 => array(
        +            'auto', 'char', 'const', 'double',  'float', 'int', 'long',
        +            'register', 'short', 'signed', 'sizeof', 'static', 'struct',
        +            'typedef', 'union', 'unsigned', 'void', 'volatile', 'wchar_t',
        +
        +            'int8', 'int16', 'int32', 'int64',
        +            'uint8', 'uint16', 'uint32', 'uint64',
        +
        +            'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t',
        +            'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',
        +
        +            'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t',
        +            'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t',
        +
        +            'int8_t', 'int16_t', 'int32_t', 'int64_t',
        +            'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t',
        +
        +            'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t',
        +            'size_t', 'off_t'
        +            ),
        +        // Public API
        +        5 => array(
        +            'AssignProcessToJobObject', 'CommandLineToArgvW', 'ConvertThreadToFiber',
        +            'CreateFiber', 'CreateJobObjectA', 'CreateJobObjectW', 'CreateProcessA',
        +            'CreateProcessAsUserA', 'CreateProcessAsUserW', 'CreateProcessW',
        +            'CreateRemoteThread', 'CreateThread', 'DeleteFiber', 'ExitProcess',
        +            'ExitThread', 'FreeEnvironmentStringsA', 'FreeEnvironmentStringsW',
        +            'GetCommandLineA', 'GetCommandLineW', 'GetCurrentProcess',
        +            'GetCurrentProcessId', 'GetCurrentThread', 'GetCurrentThreadId',
        +            'GetEnvironmentStringsA', 'GetEnvironmentStringsW',
        +            'GetEnvironmentVariableA', 'GetEnvironmentVariableW', 'GetExitCodeProcess',
        +            'GetExitCodeThread', 'GetGuiResources', 'GetPriorityClass',
        +            'GetProcessAffinityMask', 'GetProcessPriorityBoost',
        +            'GetProcessShutdownParameters', 'GetProcessTimes', 'GetProcessVersion',
        +            'GetProcessWorkingSetSize', 'GetStartupInfoA', 'GetStartupInfoW',
        +            'GetThreadPriority', 'GetThreadPriorityBoost', 'GetThreadTimes',
        +            'OpenJobObjectA', 'OpenJobObjectW', 'OpenProcess',
        +            'QueryInformationJobObject', 'ResumeThread', 'SetEnvironmentVariableA',
        +            'SetEnvironmentVariableW', 'SetInformationJobObject', 'SetPriorityClass',
        +            'SetProcessAffinityMask', 'SetProcessPriorityBoost',
        +            'SetProcessShutdownParameters', 'SetProcessWorkingSetSize',
        +            'SetThreadAffinityMask', 'SetThreadIdealProcessor', 'SetThreadPriority',
        +            'SetThreadPriorityBoost', 'Sleep', 'SleepEx', 'SuspendThread',
        +            'SwitchToFiber', 'SwitchToThread', 'TerminateJobObject', 'TerminateProcess',
        +            'TerminateThread', 'WaitForInputIdle', 'WinExec',
        +
        +            '_hread', '_hwrite', '_lclose', '_lcreat', '_llseek', '_lopen', '_lread',
        +            '_lwrite', 'AreFileApisANSI', 'CancelIo', 'CopyFileA', 'CopyFileW',
        +            'CreateDirectoryA', 'CreateDirectoryExA', 'CreateDirectoryExW',
        +            'CreateDirectoryW', 'CreateFileA', 'CreateFileW', 'DeleteFileA',
        +            'DeleteFileW', 'FindClose', 'FindCloseChangeNotification',
        +            'FindFirstChangeNotificationA', 'FindFirstChangeNotificationW',
        +            'FindFirstFileA', 'FindFirstFileW', 'FindNextFileA', 'FindNextFileW',
        +            'FlushFileBuffers', 'GetCurrentDirectoryA', 'GetCurrentDirectoryW',
        +            'GetDiskFreeSpaceA', 'GetDiskFreeSpaceExA', 'GetDiskFreeSpaceExW',
        +            'GetDiskFreeSpaceW', 'GetDriveTypeA', 'GetDriveTypeW', 'GetFileAttributesA',
        +            'GetFileAttributesExA', 'GetFileAttributesExW', 'GetFileAttributesW',
        +            'GetFileInformationByHandle', 'GetFileSize', 'GetFileType',
        +            'GetFullPathNameA', 'GetFullPathNameW', 'GetLogicalDrives',
        +            'GetLogicalDriveStringsA', 'GetLogicalDriveStringsW', 'GetLongPathNameA',
        +            'GetLongPathNameW', 'GetShortPathNameA', 'GetShortPathNameW',
        +            'GetTempFileNameA', 'GetTempFileNameW', 'GetTempPathA', 'GetTempPathW',
        +            'LockFile', 'MoveFileA', 'MoveFileW', 'MulDiv', 'OpenFile',
        +            'QueryDosDeviceA', 'QueryDosDeviceW', 'ReadFile', 'ReadFileEx',
        +            'RemoveDirectoryA', 'RemoveDirectoryW', 'SearchPathA', 'SearchPathW',
        +            'SetCurrentDirectoryA', 'SetCurrentDirectoryW', 'SetEndOfFile',
        +            'SetFileApisToANSI', 'SetFileApisToOEM', 'SetFileAttributesA',
        +            'SetFileAttributesW', 'SetFilePointer', 'SetHandleCount',
        +            'SetVolumeLabelA', 'SetVolumeLabelW', 'UnlockFile', 'WriteFile',
        +            'WriteFileEx',
        +
        +            'DeviceIoControl',
        +
        +            'GetModuleFileNameA', 'GetModuleFileNameW', 'GetProcAddress',
        +            'LoadLibraryA', 'LoadLibraryExA', 'LoadLibraryExW', 'LoadLibraryW',
        +            'LoadModule',
        +
        +            'GetPrivateProfileIntA', 'GetPrivateProfileIntW',
        +            'GetPrivateProfileSectionA', 'GetPrivateProfileSectionNamesA',
        +            'GetPrivateProfileSectionNamesW', 'GetPrivateProfileSectionW',
        +            'GetPrivateProfileStringA', 'GetPrivateProfileStringW',
        +            'GetPrivateProfileStructA', 'GetPrivateProfileStructW',
        +            'GetProfileIntA', 'GetProfileIntW', 'GetProfileSectionA',
        +            'GetProfileSectionW', 'GetProfileStringA', 'GetProfileStringW',
        +            'RegCloseKey', 'RegConnectRegistryA', 'RegConnectRegistryW',
        +            'RegCreateKeyA', 'RegCreateKeyExA', 'RegCreateKeyExW',
        +            'RegCreateKeyW', 'RegDeleteKeyA', 'RegDeleteKeyW', 'RegDeleteValueA',
        +            'RegDeleteValueW', 'RegEnumKeyA', 'RegEnumKeyExA', 'RegEnumKeyExW',
        +            'RegEnumKeyW', 'RegEnumValueA', 'RegEnumValueW', 'RegFlushKey',
        +            'RegGetKeySecurity', 'RegLoadKeyA', 'RegLoadKeyW',
        +            'RegNotifyChangeKeyValue', 'RegOpenKeyA', 'RegOpenKeyExA', 'RegOpenKeyExW',
        +            'RegOpenKeyW', 'RegOverridePredefKey', 'RegQueryInfoKeyA',
        +            'RegQueryInfoKeyW', 'RegQueryMultipleValuesA', 'RegQueryMultipleValuesW',
        +            'RegQueryValueA', 'RegQueryValueExA', 'RegQueryValueExW', 'RegQueryValueW',
        +            'RegReplaceKeyA', 'RegReplaceKeyW', 'RegRestoreKeyA', 'RegRestoreKeyW',
        +            'RegSaveKeyA', 'RegSaveKeyW', 'RegSetKeySecurity', 'RegSetValueA',
        +            'RegSetValueExA', 'RegSetValueExW', 'RegSetValueW', 'RegUnLoadKeyA',
        +            'RegUnLoadKeyW', 'WritePrivateProfileSectionA', 'WritePrivateProfileSectionW',
        +            'WritePrivateProfileStringA', 'WritePrivateProfileStringW',
        +            'WritePrivateProfileStructA', 'WritePrivateProfileStructW',
        +            'WriteProfileSectionA', 'WriteProfileSectionW', 'WriteProfileStringA',
        +            'WriteProfileStringW',
        +
        +            'AccessCheck', 'AccessCheckAndAuditAlarmA', 'AccessCheckAndAuditAlarmW',
        +            'AccessCheckByType', 'AccessCheckByTypeAndAuditAlarmA',
        +            'AccessCheckByTypeAndAuditAlarmW', 'AccessCheckByTypeResultList',
        +            'AccessCheckByTypeResultListAndAuditAlarmA', 'AccessCheckByTypeResultListAndAuditAlarmW',
        +            'AddAccessAllowedAce', 'AddAccessAllowedAceEx', 'AddAccessAllowedObjectAce',
        +            'AddAccessDeniedAce', 'AddAccessDeniedAceEx', 'AddAccessDeniedObjectAce',
        +            'AddAce', 'AddAuditAccessAce', 'AddAuditAccessAceEx', 'AddAuditAccessObjectAce',
        +            'AdjustTokenGroups', 'AdjustTokenPrivileges', 'AllocateAndInitializeSid',
        +            'AllocateLocallyUniqueId', 'AreAllAccessesGranted', 'AreAnyAccessesGranted',
        +            'BuildExplicitAccessWithNameA', 'BuildExplicitAccessWithNameW',
        +            'BuildImpersonateExplicitAccessWithNameA', 'BuildImpersonateExplicitAccessWithNameW',
        +            'BuildImpersonateTrusteeA', 'BuildImpersonateTrusteeW', 'BuildSecurityDescriptorA',
        +            'BuildSecurityDescriptorW', 'BuildTrusteeWithNameA', 'BuildTrusteeWithNameW',
        +            'BuildTrusteeWithSidA', 'BuildTrusteeWithSidW',
        +            'ConvertToAutoInheritPrivateObjectSecurity', 'CopySid', 'CreatePrivateObjectSecurity',
        +            'CreatePrivateObjectSecurityEx', 'CreateRestrictedToken', 'DeleteAce',
        +            'DestroyPrivateObjectSecurity', 'DuplicateToken', 'DuplicateTokenEx',
        +            'EqualPrefixSid', 'EqualSid', 'FindFirstFreeAce', 'FreeSid', 'GetAce',
        +            'GetAclInformation', 'GetAuditedPermissionsFromAclA', 'GetAuditedPermissionsFromAclW',
        +            'GetEffectiveRightsFromAclA', 'GetEffectiveRightsFromAclW',
        +            'GetExplicitEntriesFromAclA', 'GetExplicitEntriesFromAclW', 'GetFileSecurityA',
        +            'GetFileSecurityW', 'GetKernelObjectSecurity', 'GetLengthSid', 'GetMultipleTrusteeA',
        +            'GetMultipleTrusteeOperationA', 'GetMultipleTrusteeOperationW', 'GetMultipleTrusteeW',
        +            'GetNamedSecurityInfoA', 'GetNamedSecurityInfoW', 'GetPrivateObjectSecurity',
        +            'GetSecurityDescriptorControl', 'GetSecurityDescriptorDacl',
        +            'GetSecurityDescriptorGroup', 'GetSecurityDescriptorLength',
        +            'GetSecurityDescriptorOwner', 'GetSecurityDescriptorSacl', 'GetSecurityInfo',
        +            'GetSidIdentifierAuthority', 'GetSidLengthRequired', 'GetSidSubAuthority',
        +            'GetSidSubAuthorityCount', 'GetTokenInformation', 'GetTrusteeFormA',
        +            'GetTrusteeFormW', 'GetTrusteeNameA', 'GetTrusteeNameW', 'GetTrusteeTypeA',
        +            'GetTrusteeTypeW', 'GetUserObjectSecurity', 'ImpersonateLoggedOnUser',
        +            'ImpersonateNamedPipeClient', 'ImpersonateSelf', 'InitializeAcl',
        +            'InitializeSecurityDescriptor', 'InitializeSid', 'IsTokenRestricted', 'IsValidAcl',
        +            'IsValidSecurityDescriptor', 'IsValidSid', 'LogonUserA', 'LogonUserW',
        +            'LookupAccountNameA', 'LookupAccountNameW', 'LookupAccountSidA', 'LookupAccountSidW',
        +            'LookupPrivilegeDisplayNameA', 'LookupPrivilegeDisplayNameW', 'LookupPrivilegeNameA',
        +            'LookupPrivilegeNameW', 'LookupPrivilegeValueA', 'LookupPrivilegeValueW',
        +            'LookupSecurityDescriptorPartsA', 'LookupSecurityDescriptorPartsW', 'MakeAbsoluteSD',
        +            'MakeSelfRelativeSD', 'MapGenericMask', 'ObjectCloseAuditAlarmA',
        +            'ObjectCloseAuditAlarmW', 'ObjectDeleteAuditAlarmA', 'ObjectDeleteAuditAlarmW',
        +            'ObjectOpenAuditAlarmA', 'ObjectOpenAuditAlarmW', 'ObjectPrivilegeAuditAlarmA',
        +            'ObjectPrivilegeAuditAlarmW', 'OpenProcessToken', 'OpenThreadToken', 'PrivilegeCheck',
        +            'PrivilegedServiceAuditAlarmA', 'PrivilegedServiceAuditAlarmW', 'RevertToSelf',
        +            'SetAclInformation', 'SetEntriesInAclA', 'SetEntriesInAclW', 'SetFileSecurityA',
        +            'SetFileSecurityW', 'SetKernelObjectSecurity', 'SetNamedSecurityInfoA',
        +            'SetNamedSecurityInfoW', 'SetPrivateObjectSecurity', 'SetPrivateObjectSecurityEx',
        +            'SetSecurityDescriptorControl', 'SetSecurityDescriptorDacl',
        +            'SetSecurityDescriptorGroup', 'SetSecurityDescriptorOwner',
        +            'SetSecurityDescriptorSacl', 'SetSecurityInfo', 'SetThreadToken',
        +            'SetTokenInformation', 'SetUserObjectSecurity', 'ChangeServiceConfig2A',
        +            'ChangeServiceConfig2W', 'ChangeServiceConfigA', 'ChangeServiceConfigW',
        +            'CloseServiceHandle', 'ControlService', 'CreateServiceA', 'CreateServiceW',
        +            'DeleteService', 'EnumDependentServicesA', 'EnumDependentServicesW',
        +            'EnumServicesStatusA', 'EnumServicesStatusW', 'GetServiceDisplayNameA',
        +            'GetServiceDisplayNameW', 'GetServiceKeyNameA', 'GetServiceKeyNameW',
        +            'LockServiceDatabase', 'NotifyBootConfigStatus', 'OpenSCManagerA', 'OpenSCManagerW',
        +            'OpenServiceA', 'OpenServiceW', 'QueryServiceConfig2A', 'QueryServiceConfig2W',
        +            'QueryServiceConfigA', 'QueryServiceConfigW', 'QueryServiceLockStatusA',
        +            'QueryServiceLockStatusW', 'QueryServiceObjectSecurity', 'QueryServiceStatus',
        +            'RegisterServiceCtrlHandlerA', 'RegisterServiceCtrlHandlerW',
        +            'SetServiceObjectSecurity', 'SetServiceStatus', 'StartServiceA',
        +            'StartServiceCtrlDispatcherA', 'StartServiceCtrlDispatcherW', 'StartServiceW',
        +            'UnlockServiceDatabase',
        +
        +            'MultinetGetConnectionPerformanceA', 'MultinetGetConnectionPerformanceW',
        +            'NetAlertRaise', 'NetAlertRaiseEx', 'NetApiBufferAllocate', 'NetApiBufferFree',
        +            'NetApiBufferReallocate', 'NetApiBufferSize', 'NetConnectionEnum', 'NetFileClose',
        +            'NetFileGetInfo', 'NetGetAnyDCName', 'NetGetDCName', 'NetGetDisplayInformationIndex',
        +            'NetGroupAdd', 'NetGroupAddUser', 'NetGroupDel', 'NetGroupDelUser', 'NetGroupEnum',
        +            'NetGroupGetInfo', 'NetGroupGetUsers', 'NetGroupSetInfo', 'NetGroupSetUsers',
        +            'NetLocalGroupAdd', 'NetLocalGroupAddMember', 'NetLocalGroupAddMembers',
        +            'NetLocalGroupDel', 'NetLocalGroupDelMember', 'NetLocalGroupDelMembers',
        +            'NetLocalGroupEnum', 'NetLocalGroupGetInfo', 'NetLocalGroupGetMembers',
        +            'NetLocalGroupSetInfo', 'NetLocalGroupSetMembers', 'NetMessageBufferSend',
        +            'NetMessageNameAdd', 'NetMessageNameDel', 'NetMessageNameEnum',
        +            'NetMessageNameGetInfo', 'NetQueryDisplayInformation', 'NetRemoteComputerSupports',
        +            'NetRemoteTOd', 'NetReplExportDirAdd', 'NetReplExportDirDel', 'NetReplExportDirEnum',
        +            'NetReplExportDirGetInfo', 'NetReplExportDirLock', 'NetReplExportDirSetInfo',
        +            'NetReplExportDirUnlock', 'NetReplGetInfo', 'NetReplImportDirAdd',
        +            'NetReplImportDirDel', 'NetReplImportDirEnum', 'NetReplImportDirGetInfo',
        +            'NetReplImportDirLock', 'NetReplImportDirUnlock', 'NetReplSetInfo',
        +            'NetScheduleJobAdd', 'NetScheduleJobDel', 'NetScheduleJobEnum',
        +            'NetScheduleJobGetInfo', 'NetServerComputerNameAdd', 'NetServerComputerNameDel',
        +            'NetServerDiskEnum', 'NetServerEnum', 'NetServerEnumEx', 'NetServerGetInfo',
        +            'NetServerSetInfo', 'NetServerTransportAdd', 'NetServerTransportAddEx',
        +            'NetServerTransportDel', 'NetServerTransportEnum', 'NetSessionDel', 'NetSessionEnum',
        +            'NetSessionGetInfo', 'NetShareAdd', 'NetShareCheck', 'NetShareDel', 'NetShareEnum',
        +            'NetShareGetInfo', 'NetShareSetInfo', 'NetStatisticsGet', 'NetUseAdd', 'NetUseDel',
        +            'NetUseEnum', 'NetUseGetInfo', 'NetUserAdd', 'NetUserChangePassword', 'NetUserDel',
        +            'NetUserEnum', 'NetUserGetGroups', 'NetUserGetInfo', 'NetUserGetLocalGroups',
        +            'NetUserModalsGet', 'NetUserModalsSet', 'NetUserSetGroups', 'NetUserSetInfo',
        +            'NetWkstaGetInfo', 'NetWkstaSetInfo', 'NetWkstaTransportAdd', 'NetWkstaTransportDel',
        +            'NetWkstaTransportEnum', 'NetWkstaUserEnum', 'NetWkstaUserGetInfo',
        +            'NetWkstaUserSetInfo', 'WNetAddConnection2A', 'WNetAddConnection2W',
        +            'WNetAddConnection3A', 'WNetAddConnection3W', 'WNetAddConnectionA',
        +            'WNetAddConnectionW', 'WNetCancelConnection2A', 'WNetCancelConnection2W',
        +            'WNetCancelConnectionA', 'WNetCancelConnectionW', 'WNetCloseEnum',
        +            'WNetConnectionDialog', 'WNetConnectionDialog1A', 'WNetConnectionDialog1W',
        +            'WNetDisconnectDialog', 'WNetDisconnectDialog1A', 'WNetDisconnectDialog1W',
        +            'WNetEnumResourceA', 'WNetEnumResourceW', 'WNetGetConnectionA', 'WNetGetConnectionW',
        +            'WNetGetLastErrorA', 'WNetGetLastErrorW', 'WNetGetNetworkInformationA',
        +            'WNetGetNetworkInformationW', 'WNetGetProviderNameA', 'WNetGetProviderNameW',
        +            'WNetGetResourceInformationA', 'WNetGetResourceInformationW',
        +            'WNetGetResourceParentA', 'WNetGetResourceParentW', 'WNetGetUniversalNameA',
        +            'WNetGetUniversalNameW', 'WNetGetUserA', 'WNetGetUserW', 'WNetOpenEnumA',
        +            'WNetOpenEnumW', 'WNetUseConnectionA', 'WnetUseConnectionW',
        +
        +            'accept', 'bind', 'closesocket', 'connect', 'gethostbyaddr', 'gethostbyname',
        +            'gethostname', 'getpeername', 'getprotobyname', 'getprotobynumber', 'getservbyname',
        +            'getservbyport', 'getsockname', 'getsockopt', 'htonl', 'htons', 'inet_addr',
        +            'inet_ntoa', 'ioctlsocket', 'listen', 'ntohl', 'ntohs', 'recv', 'recvfrom', 'select',
        +            'send', 'sendto', 'setsockopt', 'shutdown', 'socket', 'WSAAccept',
        +            'WSAAddressToStringA', 'WSAAddressToStringW', 'WSAAsyncGetHostByAddr',
        +            'WSAAsyncGetHostByName', 'WSAAsyncGetProtoByName', 'WSAAsyncGetProtoByNumber',
        +            'WSAAsyncGetServByName', 'WSAAsyncGetServByPort', 'WSAAsyncSelect',
        +            'WSACancelAsyncRequest', 'WSACancelBlockingCall', 'WSACleanup', 'WSACloseEvent',
        +            'WSAConnect', 'WSACreateEvent', 'WSADuplicateSocketA', 'WSADuplicateSocketW',
        +            'WSAEnumNameSpaceProvidersA', 'WSAEnumNameSpaceProvidersW', 'WSAEnumNetworkEvents',
        +            'WSAEnumProtocolsA', 'WSAEnumProtocolsW', 'WSAEventSelect', 'WSAGetLastError',
        +            'WSAGetOverlappedResult', 'WSAGetQOSByName', 'WSAGetServiceClassInfoA',
        +            'WSAGetServiceClassInfoW', 'WSAGetServiceClassNameByClassIdA',
        +            'WSAGetServiceClassNameByClassIdW', 'WSAHtonl', 'WSAHtons', 'WSAInstallServiceClassA',
        +            'WSAInstallServiceClassW', 'WSAIoctl', 'WSAIsBlocking', 'WSAJoinLeaf',
        +            'WSALookupServiceBeginA', 'WSALookupServiceBeginW', 'WSALookupServiceEnd',
        +            'WSALookupServiceNextA', 'WSALookupServiceNextW', 'WSANtohl', 'WSANtohs',
        +            'WSAProviderConfigChange', 'WSARecv', 'WSARecvDisconnect', 'WSARecvFrom',
        +            'WSARemoveServiceClass', 'WSAResetEvent', 'WSASend', 'WSASendDisconnect', 'WSASendTo',
        +            'WSASetBlockingHook', 'WSASetEvent', 'WSASetLastError', 'WSASetServiceA',
        +            'WSASetServiceW', 'WSASocketA', 'WSASocketW', 'WSAStartup', 'WSAStringToAddressA',
        +            'WSAStringToAddressW', 'WSAUnhookBlockingHook', 'WSAWaitForMultipleEvents',
        +            'WSCDeinstallProvider', 'WSCEnableNSProvider', 'WSCEnumProtocols',
        +            'WSCGetProviderPath', 'WSCInstallNameSpace', 'WSCInstallProvider',
        +            'WSCUnInstallNameSpace',
        +
        +            'ContinueDebugEvent', 'DebugActiveProcess', 'DebugBreak', 'FatalExit',
        +            'FlushInstructionCache', 'GetThreadContext', 'GetThreadSelectorEntry',
        +            'IsDebuggerPresent', 'OutputDebugStringA', 'OutputDebugStringW', 'ReadProcessMemory',
        +            'SetDebugErrorLevel', 'SetThreadContext', 'WaitForDebugEvent', 'WriteProcessMemory',
        +
        +            'CloseHandle', 'DuplicateHandle', 'GetHandleInformation', 'SetHandleInformation',
        +
        +            'AdjustWindowRect', 'AdjustWindowRectEx', 'AllowSetForegroundWindow',
        +            'AnimateWindow', 'AnyPopup', 'ArrangeIconicWindows', 'BeginDeferWindowPos',
        +            'BringWindowToTop', 'CascadeWindows', 'ChildWindowFromPoint',
        +            'ChildWindowFromPointEx', 'CloseWindow', 'CreateWindowExA', 'CreateWindowExW',
        +            'DeferWindowPos', 'DestroyWindow', 'EndDeferWindowPos', 'EnumChildWindows',
        +            'EnumThreadWindows', 'EnumWindows', 'FindWindowA', 'FindWindowExA', 'FindWindowExW',
        +            'FindWindowW', 'GetAltTabInfoA', 'GetAltTabInfoW', 'GetAncestor', 'GetClientRect',
        +            'GetDesktopWindow', 'GetForegroundWindow', 'GetGUIThreadInfo', 'GetLastActivePopup',
        +            'GetLayout', 'GetParent', 'GetProcessDefaultLayout', 'GetTitleBarInf', 'GetTopWindow',
        +            'GetWindow', 'GetWindowInfo', 'GetWindowModuleFileNameA', 'GetWindowModuleFileNameW',
        +            'GetWindowPlacement', 'GetWindowRect', 'GetWindowTextA', 'GetWindowTextLengthA',
        +            'GetWindowTextLengthW', 'GetWindowTextW', 'GetWindowThreadProcessId', 'IsChild',
        +            'IsIconic', 'IsWindow', 'IsWindowUnicode', 'IsWindowVisible', 'IsZoomed',
        +            'LockSetForegroundWindow', 'MoveWindow', 'OpenIcon', 'RealChildWindowFromPoint',
        +            'RealGetWindowClassA', 'RealGetWindowClassW', 'SetForegroundWindow',
        +            'SetLayeredWindowAttributes', 'SetLayout', 'SetParent', 'SetProcessDefaultLayout',
        +            'SetWindowPlacement', 'SetWindowPos', 'SetWindowTextA', 'SetWindowTextW',
        +            'ShowOwnedPopups', 'ShowWindow', 'ShowWindowAsync', 'TileWindows',
        +            'UpdateLayeredWindow', 'WindowFromPoint',
        +
        +            'CreateDialogIndirectParamA', 'CreateDialogIndirectParamW', 'CreateDialogParamA',
        +            'CreateDialogParamW', 'DefDlgProcA', 'DefDlgProcW', 'DialogBoxIndirectParamA',
        +            'DialogBoxIndirectParamW', 'DialogBoxParamA', 'DialogBoxParamW', 'EndDialog',
        +            'GetDialogBaseUnits', 'GetDlgCtrlID', 'GetDlgItem', 'GetDlgItemInt',
        +            'GetDlgItemTextA', 'GetDlgItemTextW', 'GetNextDlgGroupItem', 'GetNextDlgTabItem',
        +            'IsDialogMessageA', 'IsDialogMessageW', 'MapDialogRect', 'MessageBoxA',
        +            'MessageBoxExA', 'MessageBoxExW', 'MessageBoxIndirectA', 'MessageBoxIndirectW',
        +            'MessageBoxW', 'SendDlgItemMessageA', 'SendDlgItemMessageW', 'SetDlgItemInt',
        +            'SetDlgItemTextA', 'SetDlgItemTextW',
        +
        +            'GetWriteWatch', 'GlobalMemoryStatus', 'GlobalMemoryStatusEx', 'IsBadCodePtr',
        +            'IsBadReadPtr', 'IsBadStringPtrA', 'IsBadStringPtrW', 'IsBadWritePtr',
        +            'ResetWriteWatch', 'AllocateUserPhysicalPages', 'FreeUserPhysicalPages',
        +            'MapUserPhysicalPages', 'MapUserPhysicalPagesScatter', 'GlobalAlloc', 'GlobalFlags',
        +            'GlobalFree', 'GlobalHandle', 'GlobalLock', 'GlobalReAlloc', 'GlobalSize',
        +            'GlobalUnlock', 'LocalAlloc', 'LocalFlags', 'LocalFree', 'LocalHandle', 'LocalLock',
        +            'LocalReAlloc', 'LocalSize', 'LocalUnlock', 'GetProcessHeap', 'GetProcessHeaps',
        +            'HeapAlloc', 'HeapCompact', 'HeapCreate', 'HeapDestroy', 'HeapFree', 'HeapLock',
        +            'HeapReAlloc', 'HeapSize', 'HeapUnlock', 'HeapValidate', 'HeapWalk', 'VirtualAlloc',
        +            'VirtualAllocEx', 'VirtualFree', 'VirtualFreeEx', 'VirtualLock', 'VirtualProtect',
        +            'VirtualProtectEx', 'VirtualQuery', 'VirtualQueryEx', 'VirtualUnlock',
        +            'GetFreeSpace', 'GlobalCompact', 'GlobalFix', 'GlobalUnfix', 'GlobalUnWire',
        +            'GlobalWire', 'IsBadHugeReadPtr', 'IsBadHugeWritePtr', 'LocalCompact', 'LocalShrink',
        +
        +            'GetClassInfoA', 'GetClassInfoW', 'GetClassInfoExA', 'GetClassInfoExW',
        +            'GetClassLongA', 'GetClassLongW', 'GetClassLongPtrA', 'GetClassLongPtrW',
        +            'RegisterClassA', 'RegisterClassW', 'RegisterClassExA', 'RegisterClassExW',
        +            'SetClassLongA', 'SetClassLongW', 'SetClassLongPtrA', 'SetClassLongPtrW',
        +            'SetWindowLongA', 'SetWindowLongW', 'SetWindowLongPtrA', 'SetWindowLongPtrW',
        +            'UnregisterClassA', 'UnregisterClassW', 'GetClassWord', 'GetWindowWord',
        +            'SetClassWord', 'SetWindowWord'
        +            ),
        +        // Native API
        +        6 => array(
        +            'CsrAllocateCaptureBuffer', 'CsrAllocateCapturePointer', 'CsrAllocateMessagePointer',
        +            'CsrCaptureMessageBuffer', 'CsrCaptureMessageString', 'CsrCaptureTimeout',
        +            'CsrClientCallServer', 'CsrClientConnectToServer', 'CsrFreeCaptureBuffer',
        +            'CsrIdentifyAlertableThread', 'CsrNewThread', 'CsrProbeForRead', 'CsrProbeForWrite',
        +            'CsrSetPriorityClass',
        +
        +            'LdrAccessResource', 'LdrDisableThreadCalloutsForDll', 'LdrEnumResources',
        +            'LdrFindEntryForAddress', 'LdrFindResource_U', 'LdrFindResourceDirectory_U',
        +            'LdrGetDllHandle', 'LdrGetProcedureAddress', 'LdrInitializeThunk', 'LdrLoadDll',
        +            'LdrProcessRelocationBlock', 'LdrQueryImageFileExecutionOptions',
        +            'LdrQueryProcessModuleInformation', 'LdrShutdownProcess', 'LdrShutdownThread',
        +            'LdrUnloadDll', 'LdrVerifyImageMatchesChecksum',
        +
        +            'NtAcceptConnectPort', 'ZwAcceptConnectPort', 'NtCompleteConnectPort',
        +            'ZwCompleteConnectPort', 'NtConnectPort', 'ZwConnectPort', 'NtCreatePort',
        +            'ZwCreatePort', 'NtImpersonateClientOfPort', 'ZwImpersonateClientOfPort',
        +            'NtListenPort', 'ZwListenPort', 'NtQueryInformationPort', 'ZwQueryInformationPort',
        +            'NtReadRequestData', 'ZwReadRequestData', 'NtReplyPort', 'ZwReplyPort',
        +            'NtReplyWaitReceivePort', 'ZwReplyWaitReceivePort', 'NtReplyWaitReplyPort',
        +            'ZwReplyWaitReplyPort', 'NtRequestPort', 'ZwRequestPort', 'NtRequestWaitReplyPort',
        +            'ZwRequestWaitReplyPort', 'NtSecureConnectPort', 'ZwSecureConnectPort',
        +            'NtWriteRequestData', 'ZwWriteRequestData',
        +
        +            'NtAccessCheck', 'ZwAccessCheck', 'NtAccessCheckAndAuditAlarm',
        +            'ZwAccessCheckAndAuditAlarm', 'NtAccessCheckByType', 'ZwAccessCheckByType',
        +            'NtAccessCheckByTypeAndAuditAlarm', 'ZwAccessCheckByTypeAndAuditAlarm',
        +            'NtAccessCheckByTypeResultList', 'ZwAccessCheckByTypeResultList',
        +            'NtAdjustGroupsToken', 'ZwAdjustGroupsToken', 'NtAdjustPrivilegesToken',
        +            'ZwAdjustPrivilegesToken', 'NtCloseObjectAuditAlarm', 'ZwCloseObjectAuditAlarm',
        +            'NtCreateToken', 'ZwCreateToken', 'NtDeleteObjectAuditAlarm',
        +            'ZwDeleteObjectAuditAlarm', 'NtDuplicateToken', 'ZwDuplicateToken',
        +            'NtFilterToken', 'ZwFilterToken', 'NtImpersonateThread', 'ZwImpersonateThread',
        +            'NtOpenObjectAuditAlarm', 'ZwOpenObjectAuditAlarm', 'NtOpenProcessToken',
        +            'ZwOpenProcessToken', 'NtOpenThreadToken', 'ZwOpenThreadToken', 'NtPrivilegeCheck',
        +            'ZwPrivilegeCheck', 'NtPrivilegedServiceAuditAlarm', 'ZwPrivilegedServiceAuditAlarm',
        +            'NtPrivilegeObjectAuditAlarm', 'ZwPrivilegeObjectAuditAlarm',
        +            'NtQueryInformationToken', 'ZwQueryInformationToken', 'NtQuerySecurityObject',
        +            'ZwQuerySecurityObject', 'NtSetInformationToken', 'ZwSetInformationToken',
        +            'NtSetSecurityObject', 'ZwSetSecurityObject',
        +
        +            'NtAddAtom', 'ZwAddAtom', 'NtDeleteAtom', 'ZwDeleteAtom', 'NtFindAtom', 'ZwFindAtom',
        +            'NtQueryInformationAtom', 'ZwQueryInformationAtom',
        +
        +            'NtAlertResumeThread', 'ZwAlertResumeThread', 'NtAlertThread', 'ZwAlertThread',
        +            'NtCreateProcess', 'ZwCreateProcess', 'NtCreateThread', 'ZwCreateThread',
        +            'NtCurrentTeb', 'NtDelayExecution', 'ZwDelayExecution', 'NtGetContextThread',
        +            'ZwGetContextThread', 'NtOpenProcess', 'ZwOpenProcess', 'NtOpenThread',
        +            'ZwOpenThread', 'NtQueryInformationProcess', 'ZwQueryInformationProcess',
        +            'NtQueryInformationThread', 'ZwQueryInformationThread', 'NtQueueApcThread',
        +            'ZwQueueApcThread', 'NtResumeThread', 'ZwResumeThread', 'NtSetContextThread',
        +            'ZwSetContextThread', 'NtSetHighWaitLowThread', 'ZwSetHighWaitLowThread',
        +            'NtSetInformationProcess', 'ZwSetInformationProcess', 'NtSetInformationThread',
        +            'ZwSetInformationThread', 'NtSetLowWaitHighThread', 'ZwSetLowWaitHighThread',
        +            'NtSuspendThread', 'ZwSuspendThread', 'NtTerminateProcess', 'ZwTerminateProcess',
        +            'NtTerminateThread', 'ZwTerminateThread', 'NtTestAlert', 'ZwTestAlert',
        +            'NtYieldExecution', 'ZwYieldExecution',
        +
        +            'NtAllocateVirtualMemory', 'ZwAllocateVirtualMemory', 'NtAllocateVirtualMemory64',
        +            'ZwAllocateVirtualMemory64', 'NtAreMappedFilesTheSame', 'ZwAreMappedFilesTheSame',
        +            'NtCreateSection', 'ZwCreateSection', 'NtExtendSection', 'ZwExtendSection',
        +            'NtFlushVirtualMemory', 'ZwFlushVirtualMemory', 'NtFreeVirtualMemory',
        +            'ZwFreeVirtualMemory', 'NtFreeVirtualMemory64', 'ZwFreeVirtualMemory64',
        +            'NtLockVirtualMemory', 'ZwLockVirtualMemory', 'NtMapViewOfSection',
        +            'ZwMapViewOfSection', 'NtMapViewOfVlmSection', 'ZwMapViewOfVlmSection',
        +            'NtOpenSection', 'ZwOpenSection', 'NtProtectVirtualMemory', 'ZwProtectVirtualMemory',
        +            'NtProtectVirtualMemory64', 'ZwProtectVirtualMemory64', 'NtQueryVirtualMemory',
        +            'ZwQueryVirtualMemory', 'NtQueryVirtualMemory64', 'ZwQueryVirtualMemory64',
        +            'NtReadVirtualMemory', 'ZwReadVirtualMemory', 'NtReadVirtualMemory64',
        +            'ZwReadVirtualMemory64', 'NtUnlockVirtualMemory', 'ZwUnlockVirtualMemory',
        +            'NtUnmapViewOfSection', 'ZwUnmapViewOfSection', 'NtUnmapViewOfVlmSection',
        +            'ZwUnmapViewOfVlmSection', 'NtWriteVirtualMemory', 'ZwWriteVirtualMemory',
        +            'NtWriteVirtualMemory64', 'ZwWriteVirtualMemory64',
        +
        +            'NtAssignProcessToJobObject', 'ZwAssignProcessToJobObject', 'NtCreateJobObject',
        +            'ZwCreateJobObject', 'NtOpenJobObject', 'ZwOpenJobObject',
        +            'NtQueryInformationJobObject', 'ZwQueryInformationJobObject',
        +            'NtSetInformationJobObject', 'ZwSetInformationJobObject', 'NtTerminateJobObject',
        +            'ZwTerminateJobObject',
        +
        +            'NtCancelIoFile', 'ZwCancelIoFile', 'NtCreateFile', 'ZwCreateFile',
        +            'NtCreateIoCompletion', 'ZwCreateIoCompletion', 'NtDeleteFile', 'ZwDeleteFile',
        +            'NtDeviceIoControlFile', 'ZwDeviceIoControlFile', 'NtFlushBuffersFile',
        +            'ZwFlushBuffersFile', 'NtFsControlFile', 'ZwFsControlFile', 'NtLockFile', 'ZwLockFile',
        +            'NtNotifyChangeDirectoryFile', 'ZwNotifyChangeDirectoryFile', 'NtOpenFile',
        +            'ZwOpenFile', 'NtOpenIoCompletion', 'ZwOpenIoCompletion', 'NtQueryAttributesFile',
        +            'ZwQueryAttributesFile', 'NtQueryDirectoryFile', 'ZwQueryDirectoryFile',
        +            'NtQueryEaFile', 'ZwQueryEaFile', 'NtQueryIoCompletion', 'ZwQueryIoCompletion',
        +            'NtQueryQuotaInformationFile', 'ZwQueryQuotaInformationFile',
        +            'NtQueryVolumeInformationFile', 'ZwQueryVolumeInformationFile', 'NtReadFile',
        +            'ZwReadFile', 'NtReadFile64', 'ZwReadFile64', 'NtReadFileScatter', 'ZwReadFileScatter',
        +            'NtRemoveIoCompletion', 'ZwRemoveIoCompletion', 'NtSetEaFile', 'ZwSetEaFile',
        +            'NtSetInformationFile', 'ZwSetInformationFile', 'NtSetIoCompletion',
        +            'ZwSetIoCompletion', 'NtSetQuotaInformationFile', 'ZwSetQuotaInformationFile',
        +            'NtSetVolumeInformationFile', 'ZwSetVolumeInformationFile', 'NtUnlockFile',
        +            'ZwUnlockFile', 'NtWriteFile', 'ZwWriteFile', 'NtWriteFile64','ZwWriteFile64',
        +            'NtWriteFileGather', 'ZwWriteFileGather', 'NtQueryFullAttributesFile',
        +            'ZwQueryFullAttributesFile', 'NtQueryInformationFile', 'ZwQueryInformationFile',
        +
        +            'RtlAbortRXact', 'RtlAbsoluteToSelfRelativeSD', 'RtlAcquirePebLock',
        +            'RtlAcquireResourceExclusive', 'RtlAcquireResourceShared', 'RtlAddAccessAllowedAce',
        +            'RtlAddAccessDeniedAce', 'RtlAddAce', 'RtlAddActionToRXact', 'RtlAddAtomToAtomTable',
        +            'RtlAddAttributeActionToRXact', 'RtlAddAuditAccessAce', 'RtlAddCompoundAce',
        +            'RtlAdjustPrivilege', 'RtlAllocateAndInitializeSid', 'RtlAllocateHandle',
        +            'RtlAllocateHeap', 'RtlAnsiCharToUnicodeChar', 'RtlAnsiStringToUnicodeSize',
        +            'RtlAnsiStringToUnicodeString', 'RtlAppendAsciizToString', 'RtlAppendStringToString',
        +            'RtlAppendUnicodeStringToString', 'RtlAppendUnicodeToString', 'RtlApplyRXact',
        +            'RtlApplyRXactNoFlush', 'RtlAreAllAccessesGranted', 'RtlAreAnyAccessesGranted',
        +            'RtlAreBitsClear', 'RtlAreBitsSet', 'RtlAssert', 'RtlCaptureStackBackTrace',
        +            'RtlCharToInteger', 'RtlCheckRegistryKey', 'RtlClearAllBits', 'RtlClearBits',
        +            'RtlClosePropertySet', 'RtlCompactHeap', 'RtlCompareMemory', 'RtlCompareMemoryUlong',
        +            'RtlCompareString', 'RtlCompareUnicodeString', 'RtlCompareVariants',
        +            'RtlCompressBuffer', 'RtlConsoleMultiByteToUnicodeN', 'RtlConvertExclusiveToShared',
        +            'RtlConvertLongToLargeInteger', 'RtlConvertPropertyToVariant',
        +            'RtlConvertSharedToExclusive', 'RtlConvertSidToUnicodeString',
        +            'RtlConvertUiListToApiList', 'RtlConvertUlongToLargeInteger',
        +            'RtlConvertVariantToProperty', 'RtlCopyLuid', 'RtlCopyLuidAndAttributesArray',
        +            'RtlCopySecurityDescriptor', 'RtlCopySid', 'RtlCopySidAndAttributesArray',
        +            'RtlCopyString', 'RtlCopyUnicodeString', 'RtlCreateAcl', 'RtlCreateAndSetSD',
        +            'RtlCreateAtomTable', 'RtlCreateEnvironment', 'RtlCreateHeap',
        +            'RtlCreateProcessParameters', 'RtlCreatePropertySet', 'RtlCreateQueryDebugBuffer',
        +            'RtlCreateRegistryKey', 'RtlCreateSecurityDescriptor', 'RtlCreateTagHeap',
        +            'RtlCreateUnicodeString', 'RtlCreateUnicodeStringFromAsciiz', 'RtlCreateUserProcess',
        +            'RtlCreateUserSecurityObject', 'RtlCreateUserThread', 'RtlCustomCPToUnicodeN',
        +            'RtlCutoverTimeToSystemTime', 'RtlDecompressBuffer', 'RtlDecompressFragment',
        +            'RtlDelete', 'RtlDeleteAce', 'RtlDeleteAtomFromAtomTable', 'RtlDeleteCriticalSection',
        +            'RtlDeleteElementGenericTable', 'RtlDeleteNoSplay', 'RtlDeleteRegistryValue',
        +            'RtlDeleteResource', 'RtlDeleteSecurityObject', 'RtlDeNormalizeProcessParams',
        +            'RtlDestroyAtomTable', 'RtlDestroyEnvironment', 'RtlDestroyHandleTable',
        +            'RtlDestroyHeap', 'RtlDestroyProcessParameters', 'RtlDestroyQueryDebugBuffer',
        +            'RtlDetermineDosPathNameType_U', 'RtlDoesFileExists_U', 'RtlDosPathNameToNtPathName_U',
        +            'RtlDosSearchPath_U', 'RtlDowncaseUnicodeString', 'RtlDumpResource',
        +            'RtlEmptyAtomTable', 'RtlEnlargedIntegerMultiply', 'RtlEnlargedUnsignedDivide',
        +            'RtlEnlargedUnsignedMultiply', 'RtlEnterCriticalSection', 'RtlEnumerateGenericTable',
        +            'RtlEnumerateGenericTableWithoutSplaying', 'RtlEnumerateProperties',
        +            'RtlEnumProcessHeaps', 'RtlEqualComputerName', 'RtlEqualDomainName', 'RtlEqualLuid',
        +            'RtlEqualPrefixSid', 'RtlEqualSid', 'RtlEqualString', 'RtlEqualUnicodeString',
        +            'RtlEraseUnicodeString', 'RtlExpandEnvironmentStrings_U', 'RtlExtendedIntegerMultiply',
        +            'RtlExtendedLargeIntegerDivide', 'RtlExtendedMagicDivide', 'RtlExtendHeap',
        +            'RtlFillMemory', 'RtlFillMemoryUlong', 'RtlFindClearBits', 'RtlFindClearBitsAndSet',
        +            'RtlFindLongestRunClear', 'RtlFindLongestRunSet', 'RtlFindMessage', 'RtlFindSetBits',
        +            'RtlFindSetBitsAndClear', 'RtlFirstFreeAce', 'RtlFlushPropertySet',
        +            'RtlFormatCurrentUserKeyPath', 'RtlFormatMessage', 'RtlFreeAnsiString',
        +            'RtlFreeHandle', 'RtlFreeHeap', 'RtlFreeOemString', 'RtlFreeSid',
        +            'RtlFreeUnicodeString', 'RtlFreeUserThreadStack', 'RtlGenerate8dot3Name', 'RtlGetAce',
        +            'RtlGetCallersAddress', 'RtlGetCompressionWorkSpaceSize',
        +            'RtlGetControlSecurityDescriptor', 'RtlGetCurrentDirectory_U',
        +            'RtlGetDaclSecurityDescriptor', 'RtlGetElementGenericTable', 'RtlGetFullPathName_U',
        +            'RtlGetGroupSecurityDescriptor', 'RtlGetLongestNtPathLength', 'RtlGetNtGlobalFlags',
        +            'RtlGetNtProductType', 'RtlGetOwnerSecurityDescriptor', 'RtlGetProcessHeaps',
        +            'RtlGetSaclSecurityDescriptor', 'RtlGetUserInfoHeap', 'RtlGuidToPropertySetName',
        +            'RtlIdentifierAuthoritySid', 'RtlImageDirectoryEntryToData', 'RtlImageNtHeader',
        +            'RtlImageRvaToSection', 'RtlImageRvaToVa', 'RtlImpersonateSelf', 'RtlInitAnsiString',
        +            'RtlInitCodePageTable', 'RtlInitializeAtomPackage', 'RtlInitializeBitMap',
        +            'RtlInitializeContext', 'RtlInitializeCriticalSection',
        +            'RtlInitializeCriticalSectionAndSpinCount', 'RtlInitializeGenericTable',
        +            'RtlInitializeHandleTable', 'RtlInitializeResource', 'RtlInitializeRXact',
        +            'RtlInitializeSid', 'RtlInitNlsTables', 'RtlInitString', 'RtlInitUnicodeString',
        +            'RtlInsertElementGenericTable', 'RtlIntegerToChar', 'RtlIntegerToUnicodeString',
        +            'RtlIsDosDeviceName_U', 'RtlIsGenericTableEmpty', 'RtlIsNameLegalDOS8Dot3',
        +            'RtlIsTextUnicode', 'RtlIsValidHandle', 'RtlIsValidIndexHandle', 'RtlLargeIntegerAdd',
        +            'RtlLargeIntegerArithmeticShift', 'RtlLargeIntegerDivide', 'RtlLargeIntegerNegate',
        +            'RtlLargeIntegerShiftLeft', 'RtlLargeIntegerShiftRight', 'RtlLargeIntegerSubtract',
        +            'RtlLargeIntegerToChar', 'RtlLeaveCriticalSection', 'RtlLengthRequiredSid',
        +            'RtlLengthSecurityDescriptor', 'RtlLengthSid', 'RtlLocalTimeToSystemTime',
        +            'RtlLockHeap', 'RtlLookupAtomInAtomTable', 'RtlLookupElementGenericTable',
        +            'RtlMakeSelfRelativeSD', 'RtlMapGenericMask', 'RtlMoveMemory',
        +            'RtlMultiByteToUnicodeN', 'RtlMultiByteToUnicodeSize', 'RtlNewInstanceSecurityObject',
        +            'RtlNewSecurityGrantedAccess', 'RtlNewSecurityObject', 'RtlNormalizeProcessParams',
        +            'RtlNtStatusToDosError', 'RtlNumberGenericTableElements', 'RtlNumberOfClearBits',
        +            'RtlNumberOfSetBits', 'RtlOemStringToUnicodeSize', 'RtlOemStringToUnicodeString',
        +            'RtlOemToUnicodeN', 'RtlOnMappedStreamEvent', 'RtlOpenCurrentUser',
        +            'RtlPcToFileHeader', 'RtlPinAtomInAtomTable', 'RtlpNtCreateKey',
        +            'RtlpNtEnumerateSubKey', 'RtlpNtMakeTemporaryKey', 'RtlpNtOpenKey',
        +            'RtlpNtQueryValueKey', 'RtlpNtSetValueKey', 'RtlPrefixString',
        +            'RtlPrefixUnicodeString', 'RtlPropertySetNameToGuid', 'RtlProtectHeap',
        +            'RtlpUnWaitCriticalSection', 'RtlpWaitForCriticalSection', 'RtlQueryAtomInAtomTable',
        +            'RtlQueryEnvironmentVariable_U', 'RtlQueryInformationAcl',
        +            'RtlQueryProcessBackTraceInformation', 'RtlQueryProcessDebugInformation',
        +            'RtlQueryProcessHeapInformation', 'RtlQueryProcessLockInformation',
        +            'RtlQueryProperties', 'RtlQueryPropertyNames', 'RtlQueryPropertySet',
        +            'RtlQueryRegistryValues', 'RtlQuerySecurityObject', 'RtlQueryTagHeap',
        +            'RtlQueryTimeZoneInformation', 'RtlRaiseException', 'RtlRaiseStatus', 'RtlRandom',
        +            'RtlReAllocateHeap', 'RtlRealPredecessor', 'RtlRealSuccessor', 'RtlReleasePebLock',
        +            'RtlReleaseResource', 'RtlRemoteCall', 'RtlResetRtlTranslations',
        +            'RtlRunDecodeUnicodeString', 'RtlRunEncodeUnicodeString', 'RtlSecondsSince1970ToTime',
        +            'RtlSecondsSince1980ToTime', 'RtlSelfRelativeToAbsoluteSD', 'RtlSetAllBits',
        +            'RtlSetAttributesSecurityDescriptor', 'RtlSetBits', 'RtlSetCriticalSectionSpinCount',
        +            'RtlSetCurrentDirectory_U', 'RtlSetCurrentEnvironment', 'RtlSetDaclSecurityDescriptor',
        +            'RtlSetEnvironmentVariable', 'RtlSetGroupSecurityDescriptor', 'RtlSetInformationAcl',
        +            'RtlSetOwnerSecurityDescriptor', 'RtlSetProperties', 'RtlSetPropertyNames',
        +            'RtlSetPropertySetClassId', 'RtlSetSaclSecurityDescriptor', 'RtlSetSecurityObject',
        +            'RtlSetTimeZoneInformation', 'RtlSetUnicodeCallouts', 'RtlSetUserFlagsHeap',
        +            'RtlSetUserValueHeap', 'RtlSizeHeap', 'RtlSplay', 'RtlStartRXact',
        +            'RtlSubAuthorityCountSid', 'RtlSubAuthoritySid', 'RtlSubtreePredecessor',
        +            'RtlSubtreeSuccessor', 'RtlSystemTimeToLocalTime', 'RtlTimeFieldsToTime',
        +            'RtlTimeToElapsedTimeFields', 'RtlTimeToSecondsSince1970', 'RtlTimeToSecondsSince1980',
        +            'RtlTimeToTimeFields', 'RtlTryEnterCriticalSection', 'RtlUnicodeStringToAnsiSize',
        +            'RtlUnicodeStringToAnsiString', 'RtlUnicodeStringToCountedOemString',
        +            'RtlUnicodeStringToInteger', 'RtlUnicodeStringToOemSize',
        +            'RtlUnicodeStringToOemString', 'RtlUnicodeToCustomCPN', 'RtlUnicodeToMultiByteN',
        +            'RtlUnicodeToMultiByteSize', 'RtlUnicodeToOemN', 'RtlUniform', 'RtlUnlockHeap',
        +            'RtlUnwind', 'RtlUpcaseUnicodeChar', 'RtlUpcaseUnicodeString',
        +            'RtlUpcaseUnicodeStringToAnsiString', 'RtlUpcaseUnicodeStringToCountedOemString',
        +            'RtlUpcaseUnicodeStringToOemString', 'RtlUpcaseUnicodeToCustomCPN',
        +            'RtlUpcaseUnicodeToMultiByteN', 'RtlUpcaseUnicodeToOemN', 'RtlUpperChar',
        +            'RtlUpperString', 'RtlUsageHeap', 'RtlValidAcl', 'RtlValidateHeap',
        +            'RtlValidateProcessHeaps', 'RtlValidSecurityDescriptor', 'RtlValidSid', 'RtlWalkHeap',
        +            'RtlWriteRegistryValue', 'RtlxAnsiStringToUnicodeSize', 'RtlxOemStringToUnicodeSize',
        +            'RtlxUnicodeStringToAnsiSize', 'RtlxUnicodeStringToOemSize', 'RtlZeroHeap',
        +            'RtlZeroMemory',
        +
        +            'NtCancelTimer', 'ZwCancelTimer', 'NtCreateTimer', 'ZwCreateTimer', 'NtGetTickCount',
        +            'ZwGetTickCount', 'NtOpenTimer', 'ZwOpenTimer', 'NtQueryPerformanceCounter',
        +            'ZwQueryPerformanceCounter', 'NtQuerySystemTime', 'ZwQuerySystemTime', 'NtQueryTimer',
        +            'ZwQueryTimer', 'NtQueryTimerResolution', 'ZwQueryTimerResolution', 'NtSetSystemTime',
        +            'ZwSetSystemTime', 'NtSetTimer', 'ZwSetTimer', 'NtSetTimerResolution',
        +            'ZwSetTimerResolution',
        +
        +            'NtClearEvent', 'ZwClearEvent', 'NtCreateEvent', 'ZwCreateEvent', 'NtCreateEventPair',
        +            'ZwCreateEventPair', 'NtCreateMutant', 'ZwCreateMutant', 'NtCreateSemaphore',
        +            'ZwCreateSemaphore', 'NtOpenEvent', 'ZwOpenEvent', 'NtOpenEventPair',
        +            'ZwOpenEventPair', 'NtOpenMutant', 'ZwOpenMutant', 'NtOpenSemaphore',
        +            'ZwOpenSemaphore', 'NtPulseEvent', 'ZwPulseEvent', 'NtQueryEvent', 'ZwQueryEvent',
        +            'NtQueryMutant', 'ZwQueryMutant', 'NtQuerySemaphore', 'ZwQuerySemaphore',
        +            'NtReleaseMutant', 'ZwReleaseMutant', 'NtReleaseProcessMutant',
        +            'ZwReleaseProcessMutant', 'NtReleaseSemaphore', 'ZwReleaseSemaphore',
        +            'NtReleaseThreadMutant', 'ZwReleaseThreadMutant', 'NtResetEvent', 'ZwResetEvent',
        +            'NtSetEvent', 'ZwSetEvent', 'NtSetHighEventPair', 'ZwSetHighEventPair',
        +            'NtSetHighWaitLowEventPair', 'ZwSetHighWaitLowEventPair', 'NtSetLowEventPair',
        +            'ZwSetLowEventPair', 'NtSetLowWaitHighEventPair', 'ZwSetLowWaitHighEventPair',
        +            'NtSignalAndWaitForSingleObject', 'ZwSignalAndWaitForSingleObject',
        +            'NtWaitForMultipleObjects', 'ZwWaitForMultipleObjects', 'NtWaitForSingleObject',
        +            'ZwWaitForSingleObject', 'NtWaitHighEventPair', 'ZwWaitHighEventPair',
        +            'NtWaitLowEventPair', 'ZwWaitLowEventPair',
        +
        +            'NtClose', 'ZwClose', 'NtCreateDirectoryObject', 'ZwCreateDirectoryObject',
        +            'NtCreateSymbolicLinkObject', 'ZwCreateSymbolicLinkObject',
        +            'NtDuplicateObject', 'ZwDuplicateObject', 'NtMakeTemporaryObject',
        +            'ZwMakeTemporaryObject', 'NtOpenDirectoryObject', 'ZwOpenDirectoryObject',
        +            'NtOpenSymbolicLinkObject', 'ZwOpenSymbolicLinkObject', 'NtQueryDirectoryObject',
        +            'ZwQueryDirectoryObject', 'NtQueryObject', 'ZwQueryObject',
        +            'NtQuerySymbolicLinkObject', 'ZwQuerySymbolicLinkObject', 'NtSetInformationObject',
        +            'ZwSetInformationObject',
        +
        +            'NtContinue', 'ZwContinue', 'NtRaiseException', 'ZwRaiseException',
        +            'NtRaiseHardError', 'ZwRaiseHardError', 'NtSetDefaultHardErrorPort',
        +            'ZwSetDefaultHardErrorPort',
        +
        +            'NtCreateChannel', 'ZwCreateChannel', 'NtListenChannel', 'ZwListenChannel',
        +            'NtOpenChannel', 'ZwOpenChannel', 'NtReplyWaitSendChannel', 'ZwReplyWaitSendChannel',
        +            'NtSendWaitReplyChannel', 'ZwSendWaitReplyChannel', 'NtSetContextChannel',
        +            'ZwSetContextChannel',
        +
        +            'NtCreateKey', 'ZwCreateKey', 'NtDeleteKey', 'ZwDeleteKey', 'NtDeleteValueKey',
        +            'ZwDeleteValueKey', 'NtEnumerateKey', 'ZwEnumerateKey', 'NtEnumerateValueKey',
        +            'ZwEnumerateValueKey', 'NtFlushKey', 'ZwFlushKey', 'NtInitializeRegistry',
        +            'ZwInitializeRegistry', 'NtLoadKey', 'ZwLoadKey', 'NtLoadKey2', 'ZwLoadKey2',
        +            'NtNotifyChangeKey', 'ZwNotifyChangeKey', 'NtOpenKey', 'ZwOpenKey', 'NtQueryKey',
        +            'ZwQueryKey', 'NtQueryMultipleValueKey', 'ZwQueryMultipleValueKey',
        +            'NtQueryMultiplValueKey', 'ZwQueryMultiplValueKey', 'NtQueryValueKey',
        +            'ZwQueryValueKey', 'NtReplaceKey', 'ZwReplaceKey', 'NtRestoreKey', 'ZwRestoreKey',
        +            'NtSaveKey', 'ZwSaveKey', 'NtSetInformationKey', 'ZwSetInformationKey',
        +            'NtSetValueKey', 'ZwSetValueKey', 'NtUnloadKey', 'ZwUnloadKey',
        +
        +            'NtCreateMailslotFile', 'ZwCreateMailslotFile', 'NtCreateNamedPipeFile',
        +            'ZwCreateNamedPipeFile', 'NtCreatePagingFile', 'ZwCreatePagingFile',
        +
        +            'NtCreateProfile', 'ZwCreateProfile', 'NtQueryIntervalProfile',
        +            'ZwQueryIntervalProfile', 'NtRegisterThreadTerminatePort',
        +            'ZwRegisterThreadTerminatePort', 'NtSetIntervalProfile', 'ZwSetIntervalProfile',
        +            'NtStartProfile', 'ZwStartProfile', 'NtStopProfile', 'ZwStopProfile',
        +            'NtSystemDebugControl', 'ZwSystemDebugControl',
        +
        +            'NtEnumerateBus', 'ZwEnumerateBus', 'NtFlushInstructionCache',
        +            'ZwFlushInstructionCache', 'NtFlushWriteBuffer', 'ZwFlushWriteBuffer',
        +            'NtSetLdtEntries', 'ZwSetLdtEntries',
        +
        +            'NtGetPlugPlayEvent', 'ZwGetPlugPlayEvent', 'NtPlugPlayControl', 'ZwPlugPlayControl',
        +
        +            'NtInitiatePowerAction', 'ZwInitiatePowerAction', 'NtPowerInformation',
        +            'ZwPowerInformation', 'NtRequestWakeupLatency', 'ZwRequestWakeupLatency',
        +            'NtSetSystemPowerState', 'ZwSetSystemPowerState', 'NtSetThreadExecutionState',
        +            'ZwSetThreadExecutionState',
        +
        +            'NtLoadDriver', 'ZwLoadDriver', 'NtRegisterNewDevice', 'ZwRegisterNewDevice',
        +            'NtUnloadDriver', 'ZwUnloadDriver',
        +
        +            'NtQueryDefaultLocale', 'ZwQueryDefaultLocale', 'NtQueryDefaultUILanguage',
        +            'ZwQueryDefaultUILanguage', 'NtQuerySystemEnvironmentValue',
        +            'ZwQuerySystemEnvironmentValue', 'NtSetDefaultLocale', 'ZwSetDefaultLocale',
        +            'NtSetDefaultUILanguage', 'ZwSetDefaultUILanguage', 'NtSetSystemEnvironmentValue',
        +            'ZwSetSystemEnvironmentValue',
        +
        +            'DbgBreakPoint', 'DbgPrint', 'DbgPrompt', 'DbgSsHandleKmApiMsg', 'DbgSsInitialize',
        +            'DbgUiConnectToDbg', 'DbgUiContinue', 'DbgUiWaitStateChange', 'DbgUserBreakPoint',
        +            'KiRaiseUserExceptionDispatcher', 'KiUserApcDispatcher', 'KiUserCallbackDispatcher',
        +            'KiUserExceptionDispatcher', 'NlsAnsiCodePage', 'NlsMbCodePageTag',
        +            'NlsMbOemCodePageTag', 'NtAllocateLocallyUniqueId', 'ZwAllocateLocallyUniqueId',
        +            'NtAllocateUuids', 'ZwAllocateUuids', 'NtCallbackReturn', 'ZwCallbackReturn',
        +            'NtDisplayString', 'ZwDisplayString', 'NtQueryOleDirectoryFile',
        +            'ZwQueryOleDirectoryFile', 'NtQuerySection', 'ZwQuerySection',
        +            'NtQuerySystemInformation', 'ZwQuerySystemInformation', 'NtSetSystemInformation',
        +            'ZwSetSystemInformation', 'NtShutdownSystem', 'ZwShutdownSystem', 'NtVdmControl',
        +            'ZwVdmControl', 'NtW32Call', 'ZwW32Call', 'PfxFindPrefix', 'PfxInitialize',
        +            'PfxInsertPrefix', 'PfxRemovePrefix', 'PropertyLengthAsVariant', 'RestoreEm87Context',
        +            'SaveEm87Context'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '[', ']',
        +        '+', '-', '*', '/', '%',
        +        '=', '<', '>',
        +        '!', '^', '&', '|',
        +        '?', ':',
        +        ';', ','
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #000066;',
        +            4 => 'color: #993333;',
        +            5 => 'color: #4000dd;',
        +            6 => 'color: #4000dd;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            2 => 'color: #339933;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            1 => 'color: #000099; font-weight: bold;',
        +            2 => 'color: #660099; font-weight: bold;',
        +            3 => 'color: #660099; font-weight: bold;',
        +            4 => 'color: #660099; font-weight: bold;',
        +            5 => 'color: #006699; font-weight: bold;',
        +            'HARD' => '',
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #0000dd;',
        +            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',
        +            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
        +            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #202020;',
        +            2 => 'color: #202020;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAMEL}.html',
        +        4 => '',
        +        5 => 'http://www.google.com/search?q={FNAMEL}+msdn.microsoft.com',
        +        6 => 'http://www.google.com/search?q={FNAMEL}+msdn.microsoft.com'
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.',
        +        2 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/caddcl.php b/includes/geshi/caddcl.php
        new file mode 100644
        index 0000000..8408f29
        --- /dev/null
        +++ b/includes/geshi/caddcl.php
        @@ -0,0 +1,124 @@
        + 'CAD DCL',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'boxed_column','boxed_radio_column','boxed_radio_row','boxed_row',
        +            'column','concatenation','button','dialog','edit_box','image','image_button',
        +            'errtile','list_box','ok_cancel','ok_cancel_help','ok_cancel_help_errtile',
        +            'ok_cancel_help_info','ok_only','paragraph','popup_list','radio_button',
        +            'radio_column','radio_row','row','slider','spacer','spacer_0','spacer_1','text',
        +            'text_part','toggle',
        +            'action','alignment','allow_accept','aspect_ratio','big_increment',
        +            'children_alignment','children_fixed_height',
        +            'children_fixed_width','color',
        +            'edit_limit','edit_width','fixed_height','fixed_width',
        +            'height','initial_focus','is_cancel','is_default',
        +            'is_enabled','is_tab_stop','is-bold','key','label','layout','list',
        +            'max_value','min_value','mnemonic','multiple_select','password_char',
        +            'small_increment','tabs','tab_truncate','value','width',
        +            'false','true','left','right','centered','top','bottom',
        +            'dialog_line','dialog_foreground','dialog_background',
        +            'graphics_background','black','red','yellow','green','cyan',
        +            'blue','magenta','whitegraphics_foreground',
        +            'horizontal','vertical'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/cadlisp.php b/includes/geshi/cadlisp.php
        new file mode 100644
        index 0000000..6a91375
        --- /dev/null
        +++ b/includes/geshi/cadlisp.php
        @@ -0,0 +1,184 @@
        + 'CAD Lisp',
        +    'COMMENT_SINGLE' => array(1 => ";"),
        +    'COMMENT_MULTI' => array(";|" => "|;"),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'abs','acad_colordlg','acad_helpdlg','acad_strlsort','action_tile',
        +            'add_list','alert','alloc','and','angle','angtof','angtos','append','apply',
        +            'arx','arxload','arxunload','ascii','assoc','atan','atof','atoi','atom',
        +            'atoms-family','autoarxload','autoload','Boole','boundp','caddr',
        +            'cadr','car','cdr','chr','client_data_tile','close','command','cond',
        +            'cons','cos','cvunit','defun','defun-q','defun-q-list-ref',
        +            'defun-q-list-set','dictadd','dictnext','dictremove','dictrename',
        +            'dictsearch','dimx_tile','dimy_tile','distance','distof','done_dialog',
        +            'end_image','end_list','entdel','entget','entlast','entmake',
        +            'entmakex','entmod','entnext','entsel','entupd','eq','equal','eval','exit',
        +            'exp','expand','expt','fill_image','findfile','fix','float','foreach','function',
        +            'gc','gcd','get_attr','get_tile','getangle','getcfg','getcname','getcorner',
        +            'getdist','getenv','getfiled','getint','getkword','getorient','getpoint',
        +            'getreal','getstring','getvar','graphscr','grclear','grdraw','grread','grtext',
        +            'grvecs','handent','help','if','initdia','initget','inters','itoa','lambda','last',
        +            'layoutlist','length','list','listp','load','load_dialog','log','logand','logior',
        +            'lsh','mapcar','max','mem','member','menucmd','menugroup','min','minusp','mode_tile',
        +            'namedobjdict','nentsel','nentselp','new_dialog','nil','not','nth','null',
        +            'numberp','open','or','osnap','polar','prin1','princ','print','progn','prompt',
        +            'quit','quote','read','read-char','read-line','redraw','regapp','rem','repeat',
        +            'reverse','rtos','set','set_tile','setcfg','setenv','setfunhelp','setq','setvar',
        +            'setview','sin','slide_image','snvalid','sqrt','ssadd','ssdel','ssget','ssgetfirst',
        +            'sslength','ssmemb','ssname','ssnamex','sssetfirst','start_dialog','start_image',
        +            'start_list','startapp','strcase','strcat','strlen','subst','substr','t','tablet',
        +            'tblnext','tblobjname','tblsearch','term_dialog','terpri','textbox','textpage',
        +            'textscr','trace','trans','type','unload_dialog','untrace','vector_image','ver',
        +            'vports','wcmatch','while','write-char','write-line','xdroom','xdsize','zerop',
        +            'vl-acad-defun','vl-acad-undefun','vl-arx-import','vlax-3D-point',
        +            'vlax-add-cmd','vlax-create-object','vlax-curve-getArea',
        +            'vlax-curve-getClosestPointTo','vlax-curve-getClosestPointToProjection',
        +            'vlax-curve-getDistAtParam','vlax-curve-getDistAtPoint',
        +            'vlax-curve-getEndParam','vlax-curve-getEndPoint',
        +            'vlax-curve-getFirstDeriv','vlax-curve-getParamAtDist',
        +            'vlax-curve-getParamAtPoint','vlax-curve-getPointAtDist',
        +            'vlax-curve-getPointAtParam','vlax-curve-getSecondDeriv',
        +            'vlax-curve-getStartParam','vlax-curve-getStartPoint',
        +            'vlax-curve-isClosed','vlax-curve-isPeriodic','vlax-curve-isPlanar',
        +            'vlax-dump-object','vlax-erased-p','vlax-for','vlax-get-acad-object',
        +            'vlax-get-object','vlax-get-or-create-object','vlax-get-property',
        +            'vlax-import-type-library','vlax-invoke-method','vlax-ldata-delete',
        +            'vlax-ldata-get','vlax-ldata-list','vlax-ldata-put','vlax-ldata-test',
        +            'vlax-make-safearray','vlax-make-variant','vlax-map-collection',
        +            'vlax-method-applicable-p','vlax-object-released-p','vlax-product-key',
        +            'vlax-property-available-p','vlax-put-property','vlax-read-enabled-p',
        +            'vlax-release-object','vlax-remove-cmd','vlax-safearray-fill',
        +            'vlax-safearray-get-dim','vlax-safearray-get-element',
        +            'vlax-safearray-get-l-bound','vlax-safearray-get-u-bound',
        +            'vlax-safearray-put-element','vlax-safearray-type','vlax-tmatrix',
        +            'vlax-typeinfo-available-p','vlax-variant-change-type',
        +            'vlax-variant-type','vlax-variant-value','vlax-write-enabled-p',
        +            'vl-bb-ref','vl-bb-set','vl-catch-all-apply','vl-catch-all-error-message',
        +            'vl-catch-all-error-p','vl-cmdf','vl-consp','vl-directory-files','vl-doc-export',
        +            'vl-doc-import','vl-doc-ref','vl-doc-set','vl-every','vl-exit-with-error',
        +            'vl-exit-with-value','vl-file-copy','vl-file-delete','vl-file-directory-p',
        +            'vl-filename-base','vl-filename-directory','vl-filename-extension',
        +            'vl-filename-mktemp','vl-file-rename','vl-file-size','vl-file-systime',
        +            'vl-get-resource','vlisp-compile','vl-list-exported-functions',
        +            'vl-list-length','vl-list-loaded-vlx','vl-load-all','vl-load-com',
        +            'vl-load-reactors','vl-member-if','vl-member-if-not','vl-position',
        +            'vl-prin1-to-string','vl-princ-to-string','vl-propagate','vlr-acdb-reactor',
        +            'vlr-add','vlr-added-p','vlr-beep-reaction','vlr-command-reactor',
        +            'vlr-current-reaction-name','vlr-data','vlr-data-set',
        +            'vlr-deepclone-reactor','vlr-docmanager-reactor','vlr-dwg-reactor',
        +            'vlr-dxf-reactor','vlr-editor-reactor','vl-registry-delete',
        +            'vl-registry-descendents','vl-registry-read','vl-registry-write',
        +            'vl-remove','vl-remove-if','vl-remove-if-not','vlr-insert-reactor',
        +            'vlr-linker-reactor','vlr-lisp-reactor','vlr-miscellaneous-reactor',
        +            'vlr-mouse-reactor','vlr-notification','vlr-object-reactor',
        +            'vlr-owner-add','vlr-owner-remove','vlr-owners','vlr-pers','vlr-pers-list',
        +            'vlr-pers-p','vlr-pers-release','vlr-reaction-names','vlr-reactions',
        +            'vlr-reaction-set','vlr-reactors','vlr-remove','vlr-remove-all',
        +            'vlr-set-notification','vlr-sysvar-reactor','vlr-toolbar-reactor',
        +            'vlr-trace-reaction','vlr-type','vlr-types','vlr-undo-reactor',
        +            'vlr-wblock-reactor','vlr-window-reactor','vlr-xref-reactor',
        +            'vl-some','vl-sort','vl-sort-i','vl-string-elt','vl-string-left-trim',
        +            'vl-string-mismatch','vl-string-position','vl-string-right-trim',
        +            'vl-string-search','vl-string-subst','vl-string-translate','vl-string-trim',
        +            'vl-symbol-name','vl-symbolp','vl-symbol-value','vl-unload-vlx','vl-vbaload',
        +            'vl-vbarun','vl-vlx-loaded-p'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '[', ']', '!', '%', '^', '&', '/','+','-','*','=','<','>'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/ceylon.php b/includes/geshi/ceylon.php
        new file mode 100644
        index 0000000..22e2d2b
        --- /dev/null
        +++ b/includes/geshi/ceylon.php
        @@ -0,0 +1,171 @@
        + 'Ceylon',
        +    'COMMENT_SINGLE' => array(1 => '//', 2 => '#!'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        /*
        +         * 1. regular line comments (see COMMENT_SINGLE)
        +         * 2. shebang line comments (see COMMENT_SINGLE)
        +         * 3. strings (including string templates)
        +         */
        +        3 => '/(?:"|``).*?(?:``|")/'
        +    ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'"),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        /*
        +         * 1. lexer keywords (class, else, etc.)
        +         * 2. language modifiers (shared, formal, etc.)
        +         * 3. language doc modifiers (doc, see, etc.)
        +         */
        +        1 => array(
        +            'assembly', 'module', 'package', 'import',
        +            'alias', 'class', 'interface', 'object', 'given',
        +            'value', 'assign', 'void', 'function',
        +            'new', 'of', 'extends', 'satisfies', 'abstracts',
        +            'in', 'out',
        +            'return', 'break', 'continue', 'throw', 'assert',
        +            'dynamic',
        +            'if', 'else', 'switch', 'case',
        +            'for', 'while', 'try', 'catch', 'finally',
        +            'then', 'let',
        +            'this', 'outer', 'super',
        +            'is', 'exists', 'nonempty'
        +        ),
        +        2 => array(
        +            'shared', 'abstract', 'formal', 'default', 'actual',
        +            'variable', 'late', 'native', 'deprecated',
        +            'final', 'sealed', 'annotation', 'small'
        +        ),
        +        3 => array(
        +            'doc', 'by', 'license', 'see', 'throws', 'tagged'
        +        )
        +    ),
        +    'SYMBOLS' => array(
        +        ',', ';', '...', '{', '}', '[', ']', '`', '?.', '*.',
        +        '?', '->', '=>',
        +        '**', '++', '--', '..', ':', '&&', '||',
        +        '+=', '-=', '*=', '/=', '%=', '|=', '&=', '~=', '||=', '&&=',
        +        '+', '-', '*', '/', '%', '^',
        +        '~', '&', '|', '===', '==', '=', '!=', '!',
        +        '<=>', '<=', '>=',
        +        '<', '>',
        +        '.'
        +    ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'font-weight:bold;color:#4C4C4C;',
        +            2 => 'color:#39C',
        +            3 => 'color:#39C'
        +        ),
        +        'COMMENTS' => array(
        +            1 => 'color:darkgray;',
        +            2 => 'color:darkgray;',
        +            3 => 'color:blue',
        +            'MULTI' => 'color:darkgray;'
        +        ),
        +        'STRINGS' => array(
        +            0 => 'color:blue;'
        +        ),
        +        'REGEXPS' => array(
        +            1 => 'color:#639;',
        +            2 => 'color:#039;',
        +            3 => 'color:#906;'
        +        ),
        +        'ESCAPE_CHAR' => array(),
        +        'BRACKETS' => array(),
        +        'NUMBERS' => array(),
        +        'METHODS' => array(),
        +        'SYMBOLS' => array(),
        +        'SCRIPT' => array()
        +    ),
        +    'REGEXPS' => array(
        +        /*
        +         * 1. qualified lidentifiers
        +         * 2. lidentifiers
        +         * 3. uidentifiers
        +         *
        +         * All of these contain various lookahead and -behind to ensure
        +         * that we don't match various stuff that GeSHi escapes
        +         * (for instance, we see semicolons as ).
        +         */
        +        1 => array(
        +            GESHI_SEARCH => '\\b((\?|\*)?\.[[:space:]]*)([[:lower:]][[:alnum:]]*|\\\\i[[:alnum:]]*)\\b',
        +            GESHI_REPLACE => '\\3',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +        ),
        +        2 => array(
        +            GESHI_SEARCH => '(?&![:alnum:]])([[:lower:]][[:alnum:]]*|\\\\i[[:alnum:]]*)(?![>[:alnum:]])',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +        ),
        +        3 => array(
        +            GESHI_SEARCH => '(?&![:alnum:]])([[:upper:]][[:alnum:]]*|\\\\I[[:alnum:]]*)(?![>[:alnum:]])',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +        )
        +    ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '', 3 => '' // the real URLs are commented out because syntax highlighting breaks them
        +//      2 => 'https://modules.ceylon-lang.org/repo/1/ceylon/language/1.1.0/module-doc/api/index.html#{FNAME}',
        +//      3 => 'https://modules.ceylon-lang.org/repo/1/ceylon/language/1.1.0/module-doc/api/index.html#{FNAME}',
        +    ),
        +    'CASE_SENSITIVE' => array(1 => true, 2 => true, 3 => true),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/cfdg.php b/includes/geshi/cfdg.php
        new file mode 100644
        index 0000000..788e056
        --- /dev/null
        +++ b/includes/geshi/cfdg.php
        @@ -0,0 +1,122 @@
        +
        + * Copyright: (c) 2006 John Horigan http://www.ozonehouse.com/john/
        + * Release Version: 1.0.8.12
        + * Date Started: 2006/03/11
        + *
        + * CFDG language file for GeSHi.
        + *
        + * CHANGES
        + * -------
        + * 2006/03/11 (1.0.0)
        + *  -  First Release
        + *
        + * TODO (updated 2006/03/11)
        + * -------------------------
        + *
        + *************************************************************************************
        + *
        + *     This file is part of GeSHi.
        + *
        + *   GeSHi is free software; you can redistribute it and/or modify
        + *   it under the terms of the GNU General Public License as published by
        + *   the Free Software Foundation; either version 2 of the License, or
        + *   (at your option) any later version.
        + *
        + *   GeSHi is distributed in the hope that it will be useful,
        + *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + *   GNU General Public License for more details.
        + *
        + *   You should have received a copy of the GNU General Public License
        + *   along with GeSHi; if not, write to the Free Software
        + *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        + *
        + ************************************************************************************/
        +
        +$language_data = array (
        +    'LANG_NAME' => 'CFDG',
        +    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'include', 'startshape', 'rule', 'background'
        +            ),
        +        2 => array(
        +            'SQUARE', 'CIRCLE', 'TRIANGLE',
        +            ),
        +        3 => array(
        +            'b','brightness','h','hue','sat','saturation',
        +            'a','alpha','x','y','z','s','size',
        +            'r','rotate','f','flip','skew','xml_set_object'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '[', ']', '{', '}', '*', '|'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #717100;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #006666;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            2 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;',
        +            2 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => '',
        +            2 => '',
        +            3 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/cfm.php b/includes/geshi/cfm.php
        new file mode 100644
        index 0000000..c045466
        --- /dev/null
        +++ b/includes/geshi/cfm.php
        @@ -0,0 +1,297 @@
        + 'ColdFusion',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        /* CFM Tags */
        +        1 => array(
        +            'cfabort', 'cfapplet', 'cfapplication', 'cfargument', 'cfassociate',
        +            'cfbreak', 'cfcache', 'cfcase', 'cfcatch', 'cfchart', 'cfchartdata',
        +            'cfchartseries', 'cfcol', 'cfcollection', 'cfcomponent',
        +            'cfcontent', 'cfcookie', 'cfdefaultcase', 'cfdirectory',
        +            'cfdocument', 'cfdocumentitem', 'cfdocumentsection', 'cfdump',
        +            'cfelse', 'cfelseif', 'cferror', 'cfexecute', 'cfexit', 'cffile',
        +            'cfflush', 'cfform', 'cfformgroup', 'cfformitem', 'cfftp',
        +            'cffunction', 'cfgrid', 'cfgridcolumn', 'cfgridrow', 'cfgridupdate',
        +            'cfheader', 'cfhtmlhead', 'cfhttp', 'cfhttpparam', 'cfif',
        +            'cfimport', 'cfinclude', 'cfindex', 'cfinput', 'cfinsert',
        +            'cfinvoke', 'cfinvokeargument', 'cfldap', 'cflocation', 'cflock',
        +            'cflog', 'cflogin', 'cfloginuser', 'cflogout', 'cfloop', 'cfmail',
        +            'cfmailparam', 'cfmailpart', 'cfmodule', 'cfNTauthenticate',
        +            'cfobject', 'cfobjectcache', 'cfoutput', 'cfparam', 'cfpop',
        +            'cfprocessingdirective', 'cfprocparam',
        +            'cfprocresult', 'cfproperty', 'cfquery', 'cfqueryparam',
        +            'cfregistry', 'cfreport', 'cfreportparam', 'cfrethrow', 'cfreturn',
        +            'cfsavecontent', 'cfschedule', 'cfscript', 'cfsearch', 'cfselect',
        +            'cfset', 'cfsetting', 'cfsilent', 'cfstoredproc',
        +            'cfswitch', 'cftable', 'cftextarea', 'cfthrow', 'cftimer',
        +            'cftrace', 'cftransaction', 'cftree', 'cftreeitem', 'cftry',
        +            'cfupdate', 'cfwddx'
        +            ),
        +        /* HTML Tags */
        +        2 => array(
        +            'a', 'abbr', 'acronym', 'address', 'applet',
        +
        +            'base', 'basefont', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'b',
        +
        +            'caption', 'center', 'cite', 'code', 'colgroup', 'col',
        +
        +            'dd', 'del', 'dfn', 'dir', 'div', 'dl', 'dt',
        +
        +            'em',
        +
        +            'fieldset', 'font', 'form', 'frame', 'frameset',
        +
        +            'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'hr', 'html',
        +
        +            'iframe', 'ilayer', 'img', 'input', 'ins', 'isindex', 'i',
        +
        +            'kbd',
        +
        +            'label', 'legend', 'link', 'li',
        +
        +            'map', 'meta',
        +
        +            'noframes', 'noscript',
        +
        +            'object', 'ol', 'optgroup', 'option',
        +
        +            'param', 'pre', 'p',
        +
        +            'q',
        +
        +            'samp', 'script', 'select', 'small', 'span', 'strike', 'strong', 'style', 'sub', 'sup', 's',
        +
        +            'table', 'tbody', 'td', 'textarea', 'text', 'tfoot', 'thead', 'th', 'title', 'tr', 'tt',
        +
        +            'ul', 'u',
        +
        +            'var',
        +            ),
        +        /* HTML attributes */
        +        3 => array(
        +            'abbr', 'accept-charset', 'accept', 'accesskey', 'action', 'align', 'alink', 'alt', 'archive', 'axis',
        +            'background', 'bgcolor', 'border',
        +            'cellpadding', 'cellspacing', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 'coords',
        +            'data', 'datetime', 'declare', 'defer', 'dir', 'disabled',
        +            'enctype',
        +            'face', 'for', 'frame', 'frameborder',
        +            'headers', 'height', 'href', 'hreflang', 'hspace', 'http-equiv',
        +            'id', 'ismap',
        +            'label', 'lang', 'language', 'link', 'longdesc',
        +            'marginheight', 'marginwidth', 'maxlength', 'media', 'method', 'multiple',
        +            'name', 'nohref', 'noresize', 'noshade', 'nowrap',
        +            'object', 'onblur', 'onchange', 'onclick', 'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onreset', 'onselect', 'onsubmit', 'onunload',
        +            'profile', 'prompt',
        +            'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules',
        +            'scheme', 'scope', 'scrolling', 'selected', 'shape', 'size', 'span', 'src', 'standby', 'start', 'style', 'summary',
        +            'tabindex', 'target', 'text', 'title', 'type',
        +            'usemap',
        +            'valign', 'value', 'valuetype', 'version', 'vlink', 'vspace',
        +            'width'
        +            ),
        +        /* CFM Script delimeters */
        +        4 => array(
        +            'var', 'function', 'while', 'if','else'
        +            ),
        +        /* CFM Functions */
        +        5 => array(
        +            'Abs', 'GetFunctionList', 'LSTimeFormat','ACos','GetGatewayHelper','LTrim','AddSOAPRequestHeader','GetHttpRequestData',
        +            'Max','AddSOAPResponseHeader','GetHttpTimeString','Mid','ArrayAppend','GetLocale','Min','ArrayAvg','GetLocaleDisplayName',
        +            'Minute','ArrayClear','GetMetaData','Month','ArrayDeleteAt','GetMetricData','MonthAsString','ArrayInsertAt','GetPageContext',
        +            'Now','ArrayIsEmpty','GetProfileSections','NumberFormat','ArrayLen','GetProfileString','ParagraphFormat','ArrayMax',
        +            'GetLocalHostIP','ParseDateTime','ArrayMin','GetSOAPRequest','Pi','ArrayNew','GetSOAPRequestHeader','PreserveSingleQuotes',
        +            'ArrayPrepend','GetSOAPResponse','Quarter','ArrayResize','GetSOAPResponseHeader','QueryAddColumn','ArraySet',
        +            'GetTempDirectory','QueryAddRow','ArraySort','QueryNew','ArraySum','GetTempFile','QuerySetCell',
        +            'ArraySwap','GetTickCount','QuotedValueList','ArrayToList','GetTimeZoneInfo','Rand','Asc','GetToken','Randomize',
        +            'ASin','Hash','RandRange','Atn','Hour','REFind','BinaryDecode','HTMLCodeFormat','REFindNoCase','BinaryEncode',
        +            'HTMLEditFormat','ReleaseComObject','BitAnd','IIf','RemoveChars','BitMaskClear','IncrementValue','RepeatString',
        +            'BitMaskRead','InputBaseN','Replace','BitMaskSet','Insert','ReplaceList','BitNot','Int','ReplaceNoCase','BitOr',
        +            'IsArray','REReplace','BitSHLN','IsBinary','REReplaceNoCase','BitSHRN','IsBoolean','Reverse','BitXor','IsCustomFunction',
        +            'Right','Ceiling','IsDate','RJustify','CharsetDecode','IsDebugMode','Round','CharsetEncode','IsDefined','RTrim',
        +            'Chr','IsLeapYear','Second','CJustify','IsLocalHost','SendGatewayMessage','Compare','IsNumeric','SetEncoding',
        +            'CompareNoCase','IsNumericDate','SetLocale','Cos','IsObject','SetProfileString','CreateDate','IsQuery','SetVariable',
        +            'CreateDateTime','IsSimpleValue','Sgn','CreateObject','IsSOAPRequest','Sin','CreateODBCDate','IsStruct','SpanExcluding',
        +            'CreateODBCDateTime','IsUserInRole','SpanIncluding','CreateODBCTime','IsValid','Sqr','CreateTime','IsWDDX','StripCR',
        +            'CreateTimeSpan','IsXML','StructAppend','CreateUUID','IsXmlAttribute','StructClear','DateAdd','IsXmlDoc','StructCopy',
        +            'DateCompare','IsXmlElem','StructCount','DateConvert','IsXmlNode','StructDelete','DateDiff','IsXmlRoot','StructFind',
        +            'DateFormat','JavaCast','StructFindKey','DatePart','JSStringFormat','StructFindValue','Day','LCase','StructGet',
        +            'DayOfWeek','Left','StructInsert','DayOfWeekAsString','Len','StructIsEmpty','DayOfYear','ListAppend','StructKeyArray',
        +            'DaysInMonth','ListChangeDelims','StructKeyExists','DaysInYear','ListContains','StructKeyList','DE','ListContainsNoCase',
        +            'StructNew','DecimalFormat','ListDeleteAt','StructSort','DecrementValue','ListFind','StructUpdate','Decrypt','ListFindNoCase',
        +            'Tan','DecryptBinary','ListFirst','TimeFormat','DeleteClientVariable','ListGetAt','ToBase64','DirectoryExists',
        +            'ListInsertAt','ToBinary','DollarFormat','ListLast','ToScript','Duplicate','ListLen','ToString','Encrypt','ListPrepend',
        +            'Trim','EncryptBinary','ListQualify','UCase','Evaluate','ListRest','URLDecode','Exp','ListSetAt','URLEncodedFormat',
        +            'ExpandPath','ListSort','URLSessionFormat','FileExists','ListToArray','Val','Find','ListValueCount','ValueList',
        +            'FindNoCase','ListValueCountNoCase','Week','FindOneOf','LJustify','Wrap','FirstDayOfMonth','Log','WriteOutput',
        +            'Fix','Log10','XmlChildPos','FormatBaseN','LSCurrencyFormat','XmlElemNew','GetAuthUser','LSDateFormat','XmlFormat',
        +            'GetBaseTagData','LSEuroCurrencyFormat','XmlGetNodeType','GetBaseTagList','LSIsCurrency','XmlNew','GetBaseTemplatePath',
        +            'LSIsDate','XmlParse','GetClientVariablesList','LSIsNumeric','XmlSearch','GetCurrentTemplatePath','LSNumberFormat',
        +            'XmlTransform','GetDirectoryFromPath','LSParseCurrency','XmlValidate','GetEncoding','LSParseDateTime','Year',
        +            'GetException','LSParseEuroCurrency','YesNoFormat','GetFileFromPath','LSParseNumber'
        +            ),
        +        /* CFM Attributes */
        +        6 => array(
        +            'dbtype','connectstring','datasource','username','password','query','delimeter','description','required','hint','default','access','from','to','list','index'
        +            ),
        +        7 => array(
        +            'EQ', 'GT', 'LT', 'GTE', 'LTE', 'IS', 'LIKE', 'NEQ'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '/', '=', '{', '}', '(', ')', '[', ']', '<', '>', '&'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        6 => false,
        +        7 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #990000; font-weight: bold;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #0000FF;',
        +            4 => 'color: #000000; font-weight: bold;',
        +            5 => 'color: #0000FF;',
        +            6 => 'color: #0000FF;',
        +            7 => 'color: #0000FF;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #0000FF;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #FF0000;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #0000FF;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => 'color: #808080; font-style: italic;',
        +            1 => 'color: #00bbdd;',
        +            2 => 'color: #0000FF;',
        +            3 => 'color: #000099;',
        +            4 => 'color: #333333;',
        +            5 => 'color: #333333;'
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => 'http://december.com/html/4/element/{FNAMEL}.html',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => '',
        +        7 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
        +    'SCRIPT_DELIMITERS' => array(
        +        0 => array(
        +            ''
        +            ),
        +        1 => array(
        +            ' '>'
        +            ),
        +        2 => "/(?!<#)(?:(?:##)*)(#)[a-zA-Z0-9_\.\(\)]+(#)/",
        +        3 => array(
        +            '' => ''
        +            ),
        +        4 => array(
        +            '<' => '>'
        +            ),
        +        5 => '/((?!])+?(>)/si'
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => false,
        +        1 => false,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            1 => array(
        +                'DISALLOWED_BEFORE' => '(?<=<|<\/)',
        +                'DISALLOWED_AFTER' => '(?=\s|\/|>)',
        +                ),
        +            2 => array(
        +                'DISALLOWED_BEFORE' => '(?<=<|<\/)',
        +                'DISALLOWED_AFTER' => '(?=\s|\/|>)',
        +                ),
        +            3 => array(
        +                'DISALLOWED_BEFORE' => '(?|^])', // allow ; before keywords
        +                'DISALLOWED_AFTER' => '(?![a-zA-Z0-9_\|%\\-])', // allow & after keywords
        +                ),
        +            7 => array(
        +                'DISALLOWED_BEFORE' => '(?&|^])', // allow ; before keywords
        +                'DISALLOWED_AFTER' => '(?![a-zA-Z0-9_\|%\\-])', // allow & after keywords
        +                )
        +            )
        +        )
        +);
        diff --git a/includes/geshi/chaiscript.php b/includes/geshi/chaiscript.php
        new file mode 100644
        index 0000000..677f2af
        --- /dev/null
        +++ b/includes/geshi/chaiscript.php
        @@ -0,0 +1,138 @@
        + 'ChaiScript',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    //Regular Expressions
        +    'COMMENT_REGEXP' => array(2 => "/(?<=[\\s^])s\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/[gimsu]*(?=[\\s$\\.\\;])|(?<=[\\s^(=])m?\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/[gimsu]*(?=[\\s$\\.\\,\\;\\)])/iU"),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'break', 'else', 'elseif', 'eval', 'for', 'if', 'return', 'while', 'try', 'catch', 'finally',
        +            ),
        +        2 => array(
        +            'def', 'false', 'fun', 'true', 'var', 'attr',
        +            ),
        +        3 => array(
        +            // built in functions
        +            'throw',
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}',
        +        '+', '-', '*', '/', '%',
        +        '!', '@', '&', '|', '^',
        +        '<', '>', '=',
        +        ',', ';', '?', ':'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000066; font-weight: bold;',
        +            2 => 'color: #003366; font-weight: bold;',
        +            3 => 'color: #000066;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #006600; font-style: italic;',
        +            2 => 'color: #009966; font-style: italic;',
        +            'MULTI' => 'color: #006600; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #3366CC;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #CC0000;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #660066;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => '',
        +            2 => '',
        +            3 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
        +    'SCRIPT_DELIMITERS' => array(
        +        0 => array(
        +            ),
        +        1 => array(
        +            )
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => true,
        +        1 => true
        +        )
        +);
        diff --git a/includes/geshi/chapel.php b/includes/geshi/chapel.php
        new file mode 100644
        index 0000000..d0e50e6
        --- /dev/null
        +++ b/includes/geshi/chapel.php
        @@ -0,0 +1,169 @@
        + 'Chapel',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        ),
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |
        +        GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI | GESHI_NUMBER_FLT_NONSCI_F |
        +        GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        // statements
        +        1 => array(
        +            'atomic', 'begin', 'break', 'class', 'cobegin', 'coforall',
        +            'continue', 'do', 'else', 'export', 'extern', 'for', 'forall', 'if',
        +            'iter', 'inline', 'label', 'let', 'local', 'module',
        +            'otherwise', 'proc', 'record', 'return', 'select', 'serial',
        +            'then', 'use', 'var', 'when', 'where', 'while', 'yield'
        +            ),
        +        // literals
        +        2 => array(
        +            'nil', 'true', 'false'
        +            ),
        +        // built-in functions
        +        3 => array(
        +            'by', 'delete', 'dmapped', 'domain', 'enum', 'index', 'min',
        +            'minloc', 'max', 'maxloc', 'new', 'range', 'reduce', 'scan',
        +            'sparse', 'subdomain', 'sync', 'union', 'zip'
        +            ),
        +        // built-in types
        +        4 => array(
        +            'config', 'const', 'in', 'inout', 'opaque', 'on', 'out', 'param',
        +            'ref', 'single', 'type'
        +            ),
        +        // library types
        +        5 => array(
        +            'void', 'bool', 'int', 'uint', 'real', 'imag', 'complex', 'string',
        +            'locale'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '[', ']',
        +        '+', '-', '*', '/', '%',
        +        '=', '<', '>',
        +        '!', '^', '&', '|',
        +        '?', ':',
        +        ';', ','
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #000066;',
        +            4 => 'color: #993333;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            //2 => 'color: #339933;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            1 => 'color: #000099; font-weight: bold;',
        +            2 => 'color: #660099; font-weight: bold;',
        +            3 => 'color: #660099; font-weight: bold;',
        +            4 => 'color: #660099; font-weight: bold;',
        +            5 => 'color: #006699; font-weight: bold;',
        +            'HARD' => '',
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #0000dd;',
        +            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',
        +            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
        +            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #202020;',
        +            2 => 'color: #202020;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.',
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/cil.php b/includes/geshi/cil.php
        new file mode 100644
        index 0000000..c1fe8a9
        --- /dev/null
        +++ b/includes/geshi/cil.php
        @@ -0,0 +1,194 @@
        + 'CIL',
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'COMMENT_SINGLE' => array('//'),
        +    'COMMENT_MULTI' => array(),
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(//Dotted
        +            '.zeroinit', '.vtfixup', '.vtentry', '.vtable', '.ver', '.try', '.subsystem', '.size', '.set', '.removeon',
        +            '.publickeytoken', '.publickey', '.property', '.permissionset', '.permission', '.pdirect', '.param', '.pack',
        +            '.override', '.other', '.namespace', '.mresource', '.module', '.method', '.maxstack', '.manifestres', '.locals',
        +            '.localized', '.locale', '.line', '.language', '.import', '.imagebase', '.hash', '.get', '.fire', '.file', '.field',
        +            '.export', '.event', '.entrypoint', '.emitbyte', '.data', '.custom', '.culture', '.ctor', '.corflags', '.class',
        +            '.cctor', '.assembly', '.addon'
        +            ),
        +        2 => array(//Attributes
        +            'wrapper', 'with', 'winapi', 'virtual', 'vector', 'vararg', 'value', 'userdefined', 'unused', 'unmanagedexp',
        +            'unmanaged', 'unicode', 'to', 'tls', 'thiscall', 'synchronized', 'struct', 'strict', 'storage', 'stdcall',
        +            'static', 'specialname', 'special', 'serializable', 'sequential', 'sealed', 'runtime', 'rtspecialname', 'request',
        +            'reqsecobj', 'reqrefuse', 'reqopt', 'reqmin', 'record', 'public', 'privatescope', 'private', 'preservesig',
        +            'prejitgrant', 'prejitdeny', 'platformapi', 'pinvokeimpl', 'pinned', 'permitonly', 'out', 'optil', 'opt',
        +            'notserialized', 'notremotable', 'not_in_gc_heap', 'noprocess', 'noncaslinkdemand', 'noncasinheritance',
        +            'noncasdemand', 'nometadata', 'nomangle', 'nomachine', 'noinlining', 'noappdomain', 'newslot', 'nested', 'native',
        +            'modreq', 'modopt', 'marshal', 'managed', 'literal', 'linkcheck', 'lcid', 'lasterr', 'internalcall', 'interface',
        +            'instance', 'initonly', 'init', 'inheritcheck', 'in', 'import', 'implicitres', 'implicitcom', 'implements',
        +            'illegal', 'il', 'hidebysig', 'handler', 'fromunmanaged', 'forwardref', 'fixed', 'finally', 'final', 'filter',
        +            'filetime', 'field', 'fault', 'fastcall', 'famorassem', 'family', 'famandassem', 'extern', 'extends', 'explicit',
        +            'error', 'enum', 'endmac', 'deny', 'demand', 'default', 'custom', 'compilercontrolled', 'clsid', 'class', 'cil',
        +            'cf', 'cdecl', 'catch', 'beforefieldinit', 'autochar', 'auto', 'at', 'assert', 'assembly', 'as', 'any', 'ansi',
        +            'alignment', 'algorithm', 'abstract'
        +            ),
        +        3 => array(//Types
        +            'wchar', 'void', 'variant', 'unsigned', 'valuetype', 'typedref', 'tbstr', 'sysstring', 'syschar', 'string',
        +            'streamed_object', 'stream', 'stored_object', 'safearray', 'objectref', 'object', 'nullref', 'method', 'lpwstr',
        +            'lpvoid', 'lptstr', 'lpstruct', 'lpstr', 'iunknown', 'int64', 'int32', 'int16', 'int8', 'int', 'idispatch',
        +            'hresult', 'float64', 'float32', 'float', 'decimal', 'date', 'currency', 'char', 'carray', 'byvalstr',
        +            'bytearray', 'boxed', 'bool', 'blob_object', 'blob', 'array'
        +            ),
        +        4 => array(//Prefix
        +            'volatile', 'unaligned', 'tail', 'readonly', 'no', 'constrained'
        +            ),
        +        5 => array(//Suffix
        +            'un', 'u8', 'u4', 'u2', 'u1', 'u', 's', 'ref', 'r8', 'r4', 'm1', 'i8', 'i4', 'i2', 'i1', 'i'#, '.8', '.7', '.6', '.5', '.4', '.3', '.2', '.1', '.0'
        +            ),
        +        6 => array(//Base
        +            'xor', 'switch', 'sub', 'stloc',
        +            'stind', 'starg',
        +            'shr', 'shl', 'ret', 'rem', 'pop', 'or', 'not', 'nop', 'neg', 'mul',
        +            'localloc', 'leave', 'ldnull', 'ldloca',
        +            'ldloc', 'ldind', 'ldftn', 'ldc', 'ldarga',
        +            'ldarg', 'jmp', 'initblk', 'endfinally', 'endfilter',
        +            'endfault', 'dup', 'div', 'cpblk', 'conv', 'clt', 'ckfinite', 'cgt', 'ceq', 'calli',
        +            'call', 'brzero', 'brtrue', 'brnull', 'brinst',
        +            'brfalse', 'break', 'br', 'bne', 'blt', 'ble', 'bgt', 'bge', 'beq', 'arglist',
        +            'and', 'add'
        +            ),
        +        7 => array(//Object
        +            'unbox.any', 'unbox', 'throw', 'stsfld', 'stobj', 'stfld', 'stelem', 'sizeof', 'rethrow', 'refanyval', 'refanytype', 'newobj',
        +            'newarr', 'mkrefany', 'ldvirtftn', 'ldtoken', 'ldstr', 'ldsflda', 'ldsfld', 'ldobj', 'ldlen', 'ldflda', 'ldfld',
        +            'ldelema', 'ldelem', 'isinst', 'initobj', 'cpobj', 'castclass',
        +            'callvirt', 'callmostderived', 'box'
        +            ),
        +        8 => array(//Other
        +            'prefixref', 'prefix7', 'prefix6', 'prefix5', 'prefix4', 'prefix3', 'prefix2', 'prefix1', 'prefix0'
        +            ),
        +        9 => array(//Literal
        +            'true', 'null', 'false'
        +            ),
        +        10 => array(//Comment-like
        +            '#line', '^THE_END^'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}', '!', '!!'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true,
        +        8 => true,
        +        9 => true,
        +        10 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color:maroon;font-weight:bold;',
        +            2 => 'color:blue;font-weight:bold;',
        +            3 => 'color:purple;font-weight:bold;',
        +            4 => 'color:teal;',
        +            5 => 'color:blue;',
        +            6 => 'color:blue;',
        +            7 => 'color:blue;',
        +            8 => 'color:blue;',
        +            9 => 'color:00008B',
        +            10 => 'color:gray'
        +            ),
        +        'COMMENTS' => array(
        +            0 => 'color:gray;font-style:italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #008000; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #006400;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #008000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #00008B;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #000033;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #006400;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color:blue;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => '',
        +        7 => '',
        +        8 => '',
        +        9 => '',
        +        10 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        0 => '(?<=ldc\\.i4\\.)[0-8]|(?<=(?:ldarg|ldloc|stloc)\\.)[0-3]' # Pickup the opcodes that end with integers
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/clojure.php b/includes/geshi/clojure.php
        new file mode 100644
        index 0000000..0b9ed44
        --- /dev/null
        +++ b/includes/geshi/clojure.php
        @@ -0,0 +1,132 @@
        + 'Clojure',
        +    'COMMENT_SINGLE' => array(1 => ';'),
        +    'COMMENT_MULTI' => array(';|' => '|;'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'defn', 'defn-', 'defmulti', 'defmethod', 'defmacro', 'deftest',
        +            'defstruct', 'def', 'defonce', 'let', 'letfn', 'do', 'cond', 'condp',
        +            'for', 'loop', 'recur', 'when', 'when-not', 'when-let', 'when-first',
        +            'if', 'if-let', 'if-not', 'doto', 'and', 'or','not','aget','aset',
        +            'dosync', 'doseq', 'dotimes', 'dorun', 'doall',
        +            'load', 'import', 'unimport', 'ns', 'in-ns', 'refer', 'print',
        +            'try', 'catch', 'finally', 'throw', 'fn', 'update-in',
        +            'with-open', 'with-local-vars', 'binding',
        +            'gen-class', 'gen-and-load-class', 'gen-and-save-class',
        +            'implement', 'proxy', 'lazy-cons', 'with-meta',
        +            'struct', 'struct-map', 'delay', 'locking', 'sync', 'time', 'apply',
        +            'remove', 'merge', 'interleave', 'interpose', 'distinct',
        +            'cons', 'concat', 'lazy-cat', 'cycle', 'rest', 'frest', 'drop',
        +            'drop-while', 'nthrest', 'take', 'take-while', 'take-nth', 'butlast',
        +            'reverse', 'sort', 'sort-by', 'split-at', 'partition', 'split-with',
        +            'first', 'ffirst', 'rfirst', 'zipmap', 'into', 'set', 'vec',
        +            'to-array-2d', 'not-empty', 'seq?', 'not-every?', 'every?', 'not-any?',
        +            'map', 'mapcat', 'vector?', 'list?', 'hash-map', 'reduce', 'filter',
        +            'vals', 'keys', 'rseq', 'subseq', 'rsubseq', 'count', 'empty?',
        +            'fnseq', 'repeatedly', 'iterate', 'drop-last',
        +            'repeat', 'replicate', 'range',  'into-array',
        +            'line-seq', 'resultset-seq', 're-seq', 're-find', 'tree-seq', 'file-seq',
        +            'iterator-seq', 'enumeration-seq', 'declare',  'xml-seq',
        +            'symbol?', 'string?', 'vector', 'conj', 'str',
        +            'pos?', 'neg?', 'zero?', 'nil?', 'inc', 'dec', 'format',
        +            'alter', 'commute', 'ref-set', 'floor', 'assoc', 'send', 'send-off'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '[', ']', '!', '%', '^', '&', '/','+','-','*','=','<','>',';','|', '.', '..', '->',
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => true,
        +        1 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #555;',
        +            1 => 'color: #555;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +            '::', ':'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/cmake.php b/includes/geshi/cmake.php
        new file mode 100644
        index 0000000..2155216
        --- /dev/null
        +++ b/includes/geshi/cmake.php
        @@ -0,0 +1,179 @@
        + ()
        + *  -  First Release
        + *
        + * TODO (updated )
        + * -------------------------
        + *
        + *************************************************************************************
        + *
        + *     This file is part of GeSHi.
        + *
        + *   GeSHi is free software; you can redistribute it and/or modify
        + *   it under the terms of the GNU General Public License as published by
        + *   the Free Software Foundation; either version 2 of the License, or
        + *   (at your option) any later version.
        + *
        + *   GeSHi is distributed in the hope that it will be useful,
        + *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + *   GNU General Public License for more details.
        + *
        + *   You should have received a copy of the GNU General Public License
        + *   along with GeSHi; if not, write to the Free Software
        + *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        + *
        + ************************************************************************************/
        +
        +$language_data = array (
        +    'LANG_NAME' => 'CMake',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'ESCAPE_REGEXP' => array(
        +        // Quoted variables ${...}
        +        1 => "/\\$(ENV)?\\{[^\\n\\}]*?\\}/i",
        +        // Quoted registry keys [...]
        +        2 => "/\\[HKEY[^\n\\]]*?]/i"
        +        ),
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'add_custom_command', 'add_custom_target', 'add_definitions',
        +            'add_dependencies', 'add_executable', 'add_library',
        +            'add_subdirectory', 'add_test', 'aux_source_directory', 'break',
        +            'build_command', 'cmake_minimum_required', 'cmake_policy',
        +            'configure_file', 'create_test_sourcelist', 'define_property',
        +            'else', 'elseif', 'enable_language', 'enable_testing',
        +            'endforeach', 'endfunction', 'endif', 'endmacro',
        +            'endwhile', 'execute_process', 'export', 'file', 'find_file',
        +            'find_library', 'find_package', 'find_path', 'find_program',
        +            'fltk_wrap_ui', 'foreach', 'function', 'get_cmake_property',
        +            'get_directory_property', 'get_filename_component', 'get_property',
        +            'get_source_file_property', 'get_target_property',
        +            'get_test_property', 'if', 'include', 'include_directories',
        +            'include_external_msproject', 'include_regular_expression',
        +            'install', 'link_directories', 'list', 'load_cache',
        +            'load_command', 'macro', 'mark_as_advanced', 'math', 'message',
        +            'option', 'output_required_files', 'project', 'qt_wrap_cpp',
        +            'qt_wrap_ui', 'remove_definitions', 'return', 'separate_arguments',
        +            'set', 'set_directory_properties', 'set_property',
        +            'set_source_files_properties', 'set_target_properties',
        +            'set_tests_properties', 'site_name', 'source_group', 'string',
        +            'target_link_libraries', 'try_compile', 'try_run', 'unset',
        +            'variable_watch', 'while'
        +            ),
        +        2 => array(
        +            // Deprecated commands
        +            'build_name', 'exec_program', 'export_library_dependencies',
        +            'install_files', 'install_programs', 'install_targets',
        +            'link_libraries', 'make_directory', 'remove', 'subdir_depends',
        +            'subdirs', 'use_mangled_mesa', 'utility_source',
        +            'variable_requires', 'write_file'
        +            ),
        +        3 => array(
        +            // Special command arguments, this list is not comprehesive.
        +            'AND', 'APPEND', 'ASCII', 'BOOL', 'CACHE', 'COMMAND', 'COMMENT',
        +            'COMPARE', 'CONFIGURE', 'DEFINED', 'DEPENDS', 'DIRECTORY',
        +            'EQUAL', 'EXCLUDE_FROM_ALL', 'EXISTS', 'FALSE', 'FATAL_ERROR',
        +            'FILEPATH', 'FIND', 'FORCE', 'GET', 'GLOBAL', 'GREATER',
        +            'IMPLICIT_DEPENDS', 'INSERT', 'INTERNAL', 'IS_ABSOLUTE',
        +            'IS_DIRECTORY', 'IS_NEWER_THAN', 'LENGTH', 'LESS',
        +            'MAIN_DEPENDENCY', 'MATCH', 'MATCHALL', 'MATCHES', 'MODULE', 'NOT',
        +            'NOTFOUND', 'OFF', 'ON', 'OR', 'OUTPUT', 'PARENT_SCOPE', 'PATH',
        +            'POLICY', 'POST_BUILD', 'PRE_BUILD', 'PRE_LINK', 'PROPERTY',
        +            'RANDOM', 'REGEX', 'REMOVE_AT', 'REMOVE_DUPLICATES', 'REMOVE_ITEM',
        +            'REPLACE', 'REVERSE', 'SEND_ERROR', 'SHARED', 'SORT', 'SOURCE',
        +            'STATIC', 'STATUS', 'STREQUAL', 'STRGREATER', 'STRING', 'STRIP',
        +            'STRLESS', 'SUBSTRING', 'TARGET', 'TEST', 'TOLOWER', 'TOUPPER',
        +            'TRUE', 'VERBATIM', 'VERSION', 'VERSION_EQUAL', 'VERSION_GREATOR',
        +            'VERSION_LESS', 'WORKING_DIRECTORY',
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => true
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array('(', ')')
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #1f3f81; font-style: bold;',
        +            2 => 'color: #1f3f81;',
        +            3 => 'color: #077807; font-sytle: italic;'
        +            ),
        +        'BRACKETS' => array(),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            1 => 'color: #b08000;',
        +            2 => 'color: #0000cd;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #912f11;',
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #197d8b;'
        +            ),
        +        'NUMBERS' => array(),
        +        'METHODS' => array(),
        +        'REGEXPS' => array(
        +            0 => 'color: #b08000;',
        +            1 => 'color: #0000cd;'
        +            ),
        +        'SCRIPT' => array()
        +        ),
        +    'URLS' => array(
        +        1 => 'http://www.cmake.org/cmake/help/cmake2.6docs.html#command:{FNAMEL}',
        +        2 => 'http://www.cmake.org/cmake/help/cmake2.6docs.html#command:{FNAMEL}',
        +        3 => '',
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(
        +        // Unquoted variables
        +        0 => "\\$(ENV)?\\{[^\\n}]*?\\}",
        +        // Unquoted registry keys
        +        1 => "\\[HKEY[^\n\\]]*?]"
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            // These keywords cannot come after a open paren
        +            1 => array(
        +                'DISALLOWED_AFTER' =>  '(?= *\()'
        +                ),
        +            2 => array(
        +                'DISALLOWED_AFTER' =>  '(?= *\()'
        +                )
        +            ),
        +        'ENABLE_FLAGS' => array(
        +            'BRACKETS' => GESHI_NEVER,
        +            'METHODS' => GESHI_NEVER,
        +            'NUMBERS' => GESHI_NEVER
        +            )
        +        )
        +);
        diff --git a/includes/geshi/cobol.php b/includes/geshi/cobol.php
        new file mode 100644
        index 0000000..1280a4c
        --- /dev/null
        +++ b/includes/geshi/cobol.php
        @@ -0,0 +1,457 @@
        + 'COBOL',
        +    'COMMENT_SINGLE' => array(
        +        1 => '*>', // COBOL 2002 inline comment
        +        2 => '>>'  // COBOL compiler directive indicator
        +        ),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(
        +        1 => '/^......(\*.*?$)/m', // Fixed-form comment
        +        2 => '/\$SET.*/i'          // MF compiler directive indicator
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"', "'"),
        +    'ESCAPE_CHAR' => '',
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC |
        +        GESHI_NUMBER_FLT_NONSCI |
        +        GESHI_NUMBER_FLT_SCI_SHORT |
        +        GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        // Statements containing spaces. These are separate to other statements
        +        // so that they are highlighted correctly.
        +        1 => array(
        +            'DELETE FILE', 'GO TO', 'NEXT SENTENCE', 'XML GENERATE',
        +            'XML PARSE'
        +            ),
        +
        +        2 => array( // Other Reserved Words
        +            '3-D', 'ABSENT', 'ABSTRACT', 'ACCESS', 'ACQUIRE',
        +            'ACTION', 'ACTIVE-CLASS', 'ACTIVE-X', 'ACTUAL', 'ADDRESS',
        +            'ADDRESS-ARRAY', 'ADDRESS-OFFSET', 'ADJUSTABLE-COLUMNS',
        +            'ADVANCING', 'AFP-5A', 'AFTER', 'ALIGNED', 'ALIGNMENT', 'ALL',
        +            'ALLOW', 'ALLOWING', 'ALPHABET', 'ALPHABETIC',
        +            'ALPHABETIC-LOWER', 'ALPHABETIC-UPPER', 'ALPHANUMERIC',
        +            'ALPHANUMERIC-EDITED', 'ALSO', 'ALTERNATE', 'AND', 'ANY',
        +            'ANYCASE',
        +            'APPLY', 'ARE', 'AREA', 'AREAS', 'ARGUMENT-NUMBER',
        +            'ARGUMENT-VALUE',
        +            'ARITHMETIC', 'AS', 'ASCENDING',
        +            'ASSEMBLY-ATTRIBUTES', 'ASSIGN', 'AT', 'ATTRIBUTE', 'AUTHOR',
        +            'AUTO', 'AUTO-DECIMAL', 'AUTO-HYPHEN-SKIP', 'AUTO-MINIMIZE',
        +            'AUTO-RESIZE', 'AUTO-SKIP', 'AUTO-SPIN', 'AUTOMATIC',
        +            'AUTOTERMINATE', 'AWAY-FROM-ZERO',
        +            'AX-EVENT-LIST', 'B-AND', 'B-EXOR', 'B-LEFT',
        +            'B-NOT', 'B-OR', 'B-RIGHT', 'B-XOR', 'BACKGROUND-COLOR',
        +            'BACKGROUND-COLOUR', 'BACKGROUND-HIGH', 'BACKGROUND-LOW',
        +            'BACKGROUND-STANDARD', 'BACKWARD', 'BAR', 'BASED', 'BASIS', 'BEEP',
        +            'BEFORE', 'BEGINNING', 'BELL', 'BINARY', 'BINARY-CHAR',
        +            'BINARY-DOUBLE', 'BINARY-LONG', 'BINARY-SHORT', 'BIND', 'BIT',
        +            'BITMAP', 'BITMAP-END', 'BITMAP-HANDLE', 'BITMAP-NUMBER',
        +            'BITMAP-RAW-HEIGHT', 'BITMAP-RAW-WIDTH', 'BITMAP-SCALE',
        +            'BITMAP-START', 'BITMAP-TIMER', 'BITMAP-TRAILING', 'BITMAP-WIDTH',
        +            'BLANK', 'BLINK', 'BLINKING', 'BLOB', 'BLOB-FILE', 'BLOB-LOCATOR',
        +            'BLOCK', 'BOLD', 'BOOLEAN', 'BOTTOM', 'BOX', 'BOXED', 'BROWSING',
        +            'BUSY', 'BUTTONS', 'BY', 'C01', 'C02', 'C03', 'C04',
        +            'C05',
        +            'C06', 'C07', 'C08', 'C09', 'C10', 'C11', 'C12', 'CALENDAR-FONT',
        +            'CALLED', 'CANCEL-BUTTON', 'CAPACITY', 'CATCH', 'CBL',
        +            'CBL-CTR', 'CCOL', 'CD', 'CELL', 'CELL-COLOR', 'CELL-DATA',
        +            'CELL-FONT', 'CELL-PROTECTION', 'CELLS', 'CENTER', 'CENTERED',
        +            'CENTERED-HEADINGS', 'CENTURY-DATE', 'CENTURY-DAY', 'CF', 'CH',
        +            'CHAINING', 'CHANGED', 'CHAR-VARYING',
        +            'CHARACTER',
        +            'CHARACTERS', 'CHART', 'CHECK-BOX', 'CHECKING', 'CLASS',
        +            'CLASS-ATTRIBUTES', 'CLASS-CONTROL', 'CLASS-ID', 'CLASS-OBJECT',
        +            'CLASSIFICATION',
        +            'CLEAR-SELECTION', 'CLINE', 'CLINES', 'CLOB', 'CLOB-FILE',
        +            'CLOB-LOCATOR', 'CLOCK-UNITS', 'COBOL', 'CODE', 'CODE-SET',
        +            'COERCION', 'COL', 'COLLATING', 'COLORS', 'COLOUR',
        +            'COLOURS', 'COLS', 'COLUMN', 'COLUMN-COLOR', 'COLUMN-DIVIDERS',
        +            'COLUMN-FONT', 'COLUMN-HEADINGS', 'COLUMN-PROTECTION', 'COLUMNS',
        +            'COM-REG', 'COMBO-BOX', 'COMMA', 'COMMITMENT', 'COMMON',
        +            'COMMUNICATION', 'COMP', 'COMP-0', 'COMP-1', 'COMP-2', 'COMP-3',
        +            'COMP-4', 'COMP-5', 'COMP-6', 'COMP-X', 'COMPRESSION',
        +            'COMPUTATIONAL', 'COMPUTATIONAL-0', 'COMPUTATIONAL-1',
        +            'COMPUTATIONAL-2', 'COMPUTATIONAL-3', 'COMPUTATIONAL-4',
        +            'COMPUTATIONAL-5', 'COMPUTATIONAL-6', 'COMPUTATIONAL-X',
        +            'CONDITION-VALUE', 'CONFIGURATION', 'CONSOLE', 'CONSTANT',
        +            'CONSTRAIN', 'CONSTRAINTS', 'CONTAINS', 'CONTENT',
        +            'CONTROL', 'CONTROL-AREA', 'CONTROLS', 'CONTROLS-UNCROPPED',
        +            'CONVERSION', 'CONVERT', 'CONVERTING', 'COPY-SELECTION',
        +            'CORE-INDEX', 'CORR', 'CORRESPONDING', 'COUNT',
        +            'CREATING', 'CRT', 'CRT-UNDER', 'CSIZE', 'CSP', 'CURRENCY',
        +            'CURSOR', 'CURSOR-COL', 'CURSOR-COLOR',
        +            'CURSOR-FRAME-WIDTH', 'CURSOR-ROW', 'CURSOR-X', 'CURSOR-Y',
        +            'CUSTOM-ATTRIBUTE', 'CUSTOM-PRINT-TEMPLATE', 'CYCLE', 'CYL-INDEX',
        +            'CYL-OVERFLOW', 'DASHED', 'DATA', 'DATA-COLUMNS',
        +            'DATA-POINTER', 'DATA-TYPES', 'DATABASE-KEY', 'DATABASE-KEY-LONG',
        +            'DATE', 'DATE-COMPILED', 'DATE-ENTRY', 'DATE-RECORD',
        +            'DATE-WRITTEN', 'DAY', 'DAY-OF-WEEK', 'DBCLOB', 'DBCLOB-FILE',
        +            'DBCLOB-LOCATOR', 'DBCS', 'DE', 'DEBUG', 'DEBUG-CONTENTS',
        +            'DEBUG-ITEM', 'DEBUG-LINE', 'DEBUG-NAME', 'DEBUG-SUB-1',
        +            'DEBUG-SUB-2', 'DEBUG-SUB-3', 'DEBUGGING', 'DECIMAL',
        +            'DECIMAL-POINT', 'DECLARATIVES', 'DEFAULT',
        +            'DEFAULT-BUTTON', 'DEFAULT-FONT', 'DEFINITION',
        +            'DELEGATE-ID', 'DELIMITED', 'DELIMITER', 'DEPENDING',
        +            'DESCENDING', 'DESTINATION', 'DESTROY', 'DETAIL', 'DICTIONARY',
        +            'DISABLE', 'DISC', 'DISJOINING', 'DISK', 'DISP',
        +            'DISPLAY-1', 'DISPLAY-COLUMNS', 'DISPLAY-FORMAT', 'DISPLAY-ST',
        +            'DIVIDER-COLOR', 'DIVIDERS', 'DIVISION', 'DOT-DASH',
        +            'DOTTED', 'DOWN', 'DRAG-COLOR', 'DRAW', 'DROP', 'DROP-DOWN',
        +            'DROP-LIST', 'DUPLICATES', 'DYNAMIC', 'EBCDIC', 'EC', 'ECHO', 'EGCS',
        +            'EGI', 'EJECT', 'ELEMENTARY', 'ELSE', 'EMI', 'EMPTY-CHECK',
        +            'ENABLE', 'ENABLED', 'END', 'END-ACCEPT', 'END-ADD', 'END-CALL',
        +            'END-CHAIN', 'END-COLOR', 'END-COMPUTE', 'END-DELEGATE',
        +            'END-DELETE', 'END-DISPLAY', 'END-DIVIDE', 'END-EVALUATE',
        +            'END-IF', 'END-INVOKE', 'END-MODIFY', 'END-MOVE', 'END-MULTIPLY',
        +            'END-OF-PAGE', 'END-PERFORM', 'END-READ', 'END-RECEIVE',
        +            'END-RETURN', 'END-REWRITE', 'END-SEARCH', 'END-START',
        +            'END-STRING', 'END-SUBTRACT', 'END-SYNC', 'END-TRY',
        +            'END-UNSTRING', 'END-WAIT', 'END-WRITE', 'END-XML', 'ENDING',
        +            'ENGRAVED', 'ENSURE-VISIBLE', 'ENTRY-CONVENTION',
        +            'ENTRY-FIELD',
        +            'ENTRY-REASON', 'ENUM', 'ENUM-ID', 'ENVIRONMENT',
        +            'ENVIRONMENT-NAME', 'ENVIRONMENT-VALUE', 'EOL', 'EOP',
        +            'EOS', 'EQUAL', 'EQUALS', 'ERASE', 'ERROR', 'ESCAPE',
        +            'ESCAPE-BUTTON', 'ESI', 'EVENT', 'EVENT-LIST',
        +            'EVENT-POINTER', 'EVERY', 'EXCEEDS', 'EXCEPTION',
        +            'EXCEPTION-OBJECT', 'EXCEPTION-VALUE', 'EXCESS-3',
        +            'EXCLUDE-EVENT-LIST', 'EXCLUSIVE',
        +            'EXPAND', 'EXPANDS', 'EXTEND', 'EXTENDED',
        +            'EXTENDED-SEARCH', 'EXTENSION', 'EXTERNAL', 'EXTERNAL-FORM',
        +            'EXTERNALLY-DESCRIBED-KEY', 'FACTORY', 'FALSE', 'FD',
        +            'FH--FCD', 'FH--KEYDEF', 'FILE', 'FILE-CONTROL', 'FILE-ID',
        +            'FILE-LIMIT', 'FILE-LIMITS', 'FILE-NAME', 'FILE-POS', 'FILL-COLOR',
        +            'FILL-COLOR2', 'FILL-PERCENT', 'FILLER', 'FINAL', 'FINALLY',
        +            'FINISH-REASON', 'FIRST', 'FIXED', 'FIXED-FONT', 'FIXED-WIDTH',
        +            'FLAT', 'FLAT-BUTTONS', 'FLOAT-BINARY-7', 'FLOAT-BINARY-16',
        +            'FLOAT-BINARY-34', 'FLOAT-DECIMAL-16', 'FLOAT-DECIMAL-34',
        +            'FLOAT-EXTENDED', 'FLOAT-LONG',
        +            'FLOAT-SHORT', 'FLOATING', 'FONT', 'FOOTING', 'FOR',
        +            'FOREGROUND-COLOR', 'FOREGROUND-COLOUR', 'FOREVER', 'FORMAT',
        +            'FRAME', 'FRAMED', 'FROM', 'FULL', 'FULL-HEIGHT',
        +            'FUNCTION', 'FUNCTION-ID', 'FUNCTION-POINTER', 'GENERATE',
        +            'GET', 'GETTER', 'GIVING', 'GLOBAL', 'GO-BACK', 'GO-FORWARD',
        +            'GO-HOME', 'GO-SEARCH', 'GRAPHICAL', 'GREATER', 'GRID',
        +            'GRIP', 'GROUP', 'GROUP-USAGE', 'GROUP-VALUE', 'HANDLE',
        +            'HAS-CHILDREN', 'HEADING', 'HEADING-COLOR', 'HEADING-DIVIDER-COLOR',
        +            'HEADING-FONT', 'HEAVY', 'HEIGHT', 'HEIGHT-IN-CELLS', 'HELP-ID',
        +            'HIDDEN-DATA', 'HIGH', 'HIGH-COLOR', 'HIGH-VALUE', 'HIGH-VALUES',
        +            'HIGHLIGHT', 'HORIZONTAL', 'HOT-TRACK', 'HSCROLL', 'HSCROLL-POS',
        +            'I-O', 'I-O-CONTROL', 'ICON', 'ID', 'IDENTIFICATION',
        +            'IDENTIFIED', 'IFINITY', 'IGNORE', 'IGNORING', 'IMPLEMENTS', 'IN',
        +            'INDEPENDENT', 'INDEX', 'INDEXED', 'INDEXER', 'INDEXER-ID', 'INDIC',
        +            'INDICATE', 'INDICATOR', 'INDICATORS', 'INDIRECT',
        +            'INHERITING', 'INHERITS',
        +            'INITIAL', 'INITIALIZED', 'INPUT',
        +            'INPUT-OUTPUT', 'INQUIRE', 'INSERT', 'INSERT-ROWS',
        +            'INSERTION-INDEX', 'INSTALLATION', 'INSTANCE',
        +            'INTERFACE', 'INTERFACE-ID', 'INTERMEDIATE',
        +            'INTERNAL', 'INTO', 'INTRINSIC',
        +            'INVALID', 'INVOKED', 'IS', 'ITEM', 'ITEM-BOLD',
        +            'ITEM-ID', 'ITEM-TEXT', 'ITEM-TO-ADD', 'ITEM-TO-DELETE',
        +            'ITEM-TO-EMPTY', 'ITEM-VALUE', 'ITERATOR', 'ITERATOR-ID', 'J',
        +            'JOINED', 'JOINING', 'JUST', 'JUSTIFIED', 'KANJI',
        +            'KEPT', 'KEY', 'KEY-YY', 'KEYBOARD', 'LABEL', 'LABEL-OFFSET',
        +            'LARGE-FONT', 'LAST', 'LAST-ROW', 'LAYOUT-DATA', 'LAYOUT-MANAGER',
        +            'LC_ALL', 'LC_COLLATE', 'LC_CTYPE', 'LC_CURRENCY', 'LC_MESSAGES',
        +            'LC_MONETARY', 'LC_NUMERIC', 'LC_TIME', 'LEADING', 'LEADING-SHIFT',
        +            'LEAVE', 'LEFT', 'LEFT-JUSTIFY', 'LEFT-TEXT', 'LEFTLINE',
        +            'LENGTH-CHECK', 'LESS', 'LIMIT', 'LIMITS', 'LIN', 'LINAGE',
        +            'LINAGE-COUNTER', 'LINE', 'LINE-COUNTER', 'LINES', 'LINES-AT-ROOT',
        +            'LINK', 'LINKAGE', 'LIST', 'LIST-BOX', 'LM-RESIZE', 'LOCAL-STORAGE',
        +            'LOCALE', 'LOCK', 'LOCKING', 'LONG-DATE', 'LONG-VARBINARY',
        +            'LONG-VARCHAR', 'LOW', 'LOW-COLOR', 'LOW-VALUE', 'LOW-VALUES',
        +            'LOWER', 'LOWERED', 'LOWLIGHT', 'MANUAL', 'MASS-UPDATE',
        +            'MASTER-INDEX', 'MAX-HEIGHT', 'MAX-LINES', 'MAX-PROGRESS',
        +            'MAX-SIZE', 'MAX-TEXT', 'MAX-VAL', 'MAX-WIDTH', 'MDI-CHILD',
        +            'MDI-FRAME', 'MEDIUM-FONT', 'MEMORY', 'MENU', 'MESSAGE',
        +            'MESSAGES', 'METACLASS', 'METHOD', 'METHOD-ID', 'MIN-HEIGHT',
        +            'MIN-LINES', 'MIN-SIZE', 'MIN-VAL', 'MIN-WIDTH', 'MODAL', 'MODE',
        +            'MODELESS', 'MODIFIED', 'MODULES', 'MONITOR-POINTER',
        +            'MORE-LABELS', 'MULTILINE',
        +            'MUTEX-POINTER', 'NAME', 'NAMED', 'NATIONAL',
        +            'NATIONAL-EDITED', 'NATIVE', 'NAVIGATE-URL', 'NCHAR',
        +            'NEAREST-AWAY-FROM-ZERO', 'NEAREST-EVEN', 'NEAREST-TOWARD-ZERO',
        +            'NEGATIVE', 'NEGATIVE-INFINITY',
        +            'NESTED', 'NET-EVENT-LIST', 'NEW', 'NEWABLE', 'NEXT ', 'NEXT-ITEM',
        +            'NO', 'NO-AUTO-DEFAULT', 'NO-AUTOSEL', 'NO-BOX', 'NO-CELL-DRAG',
        +            'NO-CLOSE', 'NO-DIVIDERS', 'NO-ECHO', 'NO-F4', 'NO-FOCUS',
        +            'NO-GROUP-TAB', 'NO-KEY-LETTER', 'NO-SEARCH', 'NO-TAB', 'NO-UPDOWN',
        +            'NOMINAL', 'NONE', 'NORMAL', 'NOT', 'NOT-A-NUMBER', 'NOTIFY',
        +            'NOTIFY-CHANGE', 'NOTIFY-DBLCLICK', 'NOTIFY-SELCHANGE',
        +            'NSTD-REELS', 'NULL', 'NULLS', 'NUM-COL-HEADINGS',
        +            'NUM-ROW-HEADINGS', 'NUM-ROWS', 'NUMBER', 'NUMBERS', 'NUMERIC',
        +            'NUMERIC-EDITED', 'NUMERIC-FILL', 'O-FILL', 'OBJECT',
        +            'OBJECT-COMPUTER', 'OBJECT-ID', 'OBJECT-REFERENCE',
        +            'OBJECT-STORAGE', 'OCCURS', 'OF', 'OFF', 'OK-BUTTON', 'OMITTED',
        +            'ONLY', 'OOSTACKPTR', 'OPERATOR', 'OPERATOR-ID',
        +            'OPTIONAL', 'OPTIONS', 'OR', 'ORDER', 'ORGANIZATION', 'OTHER',
        +            'OTHERWISE', 'OUTPUT', 'OVERFLOW', 'OVERLAP-LEFT', 'OVERLAP-TOP',
        +            'OVERLAPPED', 'OVERLINE', 'OVERRIDE', 'PACKED-DECIMAL',
        +            'PADDING', 'PAGE', 'PAGE-COUNTER', 'PAGE-SETUP', 'PAGE-SIZE',
        +            'PAGED', 'PANEL-INDEX', 'PANEL-STYLE', 'PANEL-TEXT', 'PANEL-WIDTHS',
        +            'PARAGRAPH', 'PARAMS', 'PARENT', 'PARSE', 'PARTIAL', 'PASSWORD',
        +            'PERMANENT', 'PF', 'PH', 'PIC', 'PICTURE', 'PIXEL',
        +            'PIXELS', 'PLACEMENT', 'PLUS', 'POINTER', 'POP-UP', 'POSITION',
        +            'POSITION-SHIFT', 'POSITIONING', 'POSITIVE', 'POSITIVE-INFINITY',
        +            'PREFIXED', 'PREFIXING', 'PRESENT',
        +            'PREVIOUS', 'PRINT', 'PRINT-CONTROL', 'PRINT-NO-PROMPT',
        +            'PRINT-PREVIEW', 'PRINT-SWITCH', 'PRINTER', 'PRINTER-1', 'PRINTING',
        +            'PRIOR', 'PRIORITY', 'PRIVATE', 'PROCEDURE', 'PROCEDURE-POINTER',
        +            'PROCEDURES', 'PROCEED', 'PROCESS', 'PROCESSING', 'PROGRAM',
        +            'PROGRAM-ID', 'PROGRAM-POINTER', 'PROGRESS', 'PROHIBITED',
        +            'PROMPT', 'PROPERTIES',
        +            'PROPERTY', 'PROPERTY-ID', 'PROPERTY-VALUE', 'PROTECTED',
        +            'PROTOTYPE', 'PUBLIC', 'PURGE', 'PUSH-BUTTON', 'QUERY-INDEX',
        +            'QUEUE', 'QUOTE', 'QUOTES', 'RADIO-BUTTON', 'RAISED',
        +            'RAISING', 'RD', 'READ-ONLY', 'READING',
        +            'READY', 'RECORD', 'RECORD-DATA', 'RECORD-OVERFLOW',
        +            'RECORD-TO-ADD', 'RECORD-TO-DELETE', 'RECORDING', 'RECORDS',
        +            'RECURSIVE', 'REDEFINE', 'REDEFINES', 'REDEFINITION', 'REEL',
        +            'REFERENCE', 'REFERENCES', 'REFRESH', 'REGION-COLOR', 'RELATION',
        +            'RELATIVE', 'RELOAD', 'REMAINDER', 'REMARKS', 'REMOVAL',
        +            'RENAMES', 'REORG-CRITERIA', 'REPEATED', 'REPLACE', 'REPLACING',
        +            'REPORT', 'REPORTING', 'REPORTS', 'REPOSITORY', 'REQUIRED',
        +            'REPRESENTS-NOT-A-NUMBER',
        +            'REREAD', 'RERUN', 'RESERVE', 'RESET-GRID', 'RESET-LIST',
        +            'RESET-TABS', 'RESIZABLE', 'RESTRICTED', 'RESULT-SET-LOCATOR',
        +            'RETRY', 'RETURN-CODE', 'RETURNING',
        +            'REVERSE-VIDEO', 'REVERSED', 'REWIND', 'RF', 'RH',
        +            'RIGHT', 'RIGHT-ALIGN', 'RIGHT-JUSTIFY', 'RIMMED',
        +            'ROLLING', 'ROUNDED', 'ROUNDING', 'ROW-COLOR', 'ROW-COLOR-PATTERN',
        +            'ROW-DIVIDERS', 'ROW-FONT', 'ROW-HEADINGS', 'ROW-PROTECTION',
        +            'ROWID', 'RUN', 'S01', 'S02', 'S03', 'S04', 'S05', 'SAME',
        +            'SAVE-AS', 'SAVE-AS-NO-PROMPT', 'SCREEN', 'SCROLL', 'SCROLL-BAR',
        +            'SD', 'SEARCH-OPTIONS', 'SEARCH-TEXT', 'SECONDS',
        +            'SECTION', 'SECURE', 'SECURITY', 'SEEK', 'SEGMENT', 'SEGMENT-LIMIT',
        +            'SELECT-ALL', 'SELECTION-INDEX', 'SELECTION-TEXT',
        +            'SELECTIVE', 'SELF', 'SELF-ACT', 'SELFCLASS', 'SEMAPHORE-POINTER',
        +            'SEND', 'SENTENCE', 'SEPARATE', 'SEPARATION', 'SEQUENCE',
        +            'SEQUENTIAL', 'SETTER', 'SHADING', 'SHADOW',
        +            'SHARING', 'SHIFT-IN', 'SHIFT-OUT', 'SHORT-DATE', 'SHOW-LINES',
        +            'SHOW-NONE', 'SHOW-SEL-ALWAYS', 'SIGNED', 'SIGNED-INT',
        +            'SIGNED-LONG', 'SIGNED-SHORT', 'SIZE', 'SKIP1',
        +            'SKIP2', 'SKIP3', 'SMALL-FONT', 'SORT-CONTROL',
        +            'SORT-CORE-SIZE', 'SORT-FILE-SIZE', 'SORT-MERGE', 'SORT-MESSAGE',
        +            'SORT-MODE-SIZE', 'SORT-OPTION', 'SORT-ORDER', 'SORT-RETURN',
        +            'SORT-TAPE', 'SORT-TAPES', 'SOURCE', 'SOURCE-COMPUTER', 'SOURCES',
        +            'SPACE', 'SPACE-FILL', 'SPACES', 'SPECIAL-NAMES', 'SPINNER', 'SQL',
        +            'SQUARE', 'STANDARD', 'STANDARD-1', 'STANDARD-2', 'STANDARD-3',
        +            'STANDARD-BINARY', 'STANDARD-DECIMAL',
        +            'START-X', 'START-Y', 'STARTING', 'STATEMENT', 'STATIC',
        +            'STATIC-LIST',
        +            'STATUS', 'STATUS-BAR', 'STATUS-TEXT', 'STEP',
        +            'STOP-BROWSER', 'STRONG', 'STYLE', 'SUB-QUEUE-1',
        +            'SUB-QUEUE-2', 'SUB-QUEUE-3', 'SUBFILE', 'SUBWINDOW',
        +            'SUFFIXING', 'SUPER', 'SYMBOL', 'SYMBOLIC',
        +            'SYNCHRONIZED', 'SYSIN', 'SYSIPT', 'SYSLST', 'SYSOUT',
        +            'SYSPCH', 'SYSPUNCH', 'SYSTEM', 'SYSTEM-DEFAULT', 'SYSTEM-INFO',
        +            'TAB', 'TAB-CONTROL', 'TAB-TO-ADD', 'TAB-TO-DELETE', 'TABLE',
        +            'TALLY', 'TALLYING', 'TAPE', 'TAPES', 'TEMPORARY', 'TERMINAL',
        +            'TERMINAL-INFO', 'TERMINATION-VALUE', 'TEST', 'TEXT',
        +            'THAN', 'THEN', 'THREAD', 'THREAD-LOCAL', 'THREAD-LOCAL-STORAGE',
        +            'THREAD-POINTER', 'THROUGH', 'THRU', 'THUMB-POSITION',
        +            'TILED-HEADINGS', 'TIME', 'TIME-OF-DAY', 'TIME-OUT', 'TIME-RECORD',
        +            'TIMEOUT', 'TIMES', 'TIMESTAMP', 'TIMESTAMP-OFFSET',
        +            'TIMESTAMP-OFFSET-RECORD', 'TIMESTAMP-RECORD', 'TITLE', 'TITLE-BAR',
        +            'TITLE-POSITION', 'TO', 'TOOL-BAR', 'TOP', 'TOTALED', 'TOTALING',
        +            'TOWARD-GREATER', 'TOWARD-LESSER',
        +            'TRACE', 'TRACK-AREA', 'TRACK-LIMIT', 'TRACK-THUMB', 'TRACKS',
        +            'TRADITIONAL-FONT', 'TRAILING', 'TRAILING-SHIFT', 'TRAILING-SIGN',
        +            'TRANSACTION', 'TRANSPARENT', 'TRANSPARENT-COLOR',
        +            'TREE-VIEW', 'TRUE', 'TRUNCATION', 'TYPE', 'TYPEDEF', 'UCS-4',
        +            'UNDERLINE', 'UNDERLINED', 'UNEQUAL', 'UNFRAMED', 'UNIT', 'UNITS',
        +            'UNIVERSAL', 'UNSIGNED', 'UNSIGNED-INT', 'UNSIGNED-LONG',
        +            'UNSIGNED-SHORT',
        +            'UNSORTED', 'UP', 'UPDATE', 'UNTIL', 'UPON', 'UPPER',
        +            'UPSI-0', 'UPSI-1', 'UPSI-2', 'UPSI-3', 'UPSI-4', 'UPSI-5',
        +            'UPSI-6', 'UPSI-7', 'USAGE', 'USE-ALT', 'USE-RETURN',
        +            'USE-TAB', 'USER', 'USER-COLORS', 'USER-DEFAULT', 'USER-GRAY',
        +            'USER-WHITE', 'USING', 'UTF-16', 'UTF-8', 'VALID',
        +            'VAL-STATUS', 'VALIDATE-STATUS',
        +            'VALUE', 'VALUE-FORMAT', 'VALUES', 'VALUETYPE', 'VALUETYPE-ID',
        +            'VARBINARY', 'VARIABLE', 'VARIANT', 'VARYING', 'VERTICAL',
        +            'VERY-HEAVY', 'VIRTUAL-WIDTH', 'VISIBLE', 'VPADDING', 'VSCROLL',
        +            'VSCROLL-BAR', 'VSCROLL-POS', 'VTOP', 'WEB-BROWSER', 'WHEN',
        +            'WHERE', 'WIDTH', 'WIDTH-IN-CELLS', 'WINDOW',
        +            'WITH', 'WORDS', 'WORKING-STORAGE', 'WRAP', 'WRITE-ONLY',
        +            'WRITE-VERIFY', 'WRITING', ' XML', 'XML ', 'XML-CODE', 'XML-EVENT',
        +            'XML-NTEXT', 'XML-TEXT', 'YIELDING', 'YYYYDDD', 'YYYYMMDD', 'ZERO',
        +            'ZERO-FILL', 'ZEROES', 'ZEROS'
        +            ),
        +        3 => array( // Statement Keywords containing no spaces.
        +            'ACCEPT', 'ADD', 'ALTER', 'ALLOCATE', 'ATTACH', 'CALL', 'CANCEL',
        +            'CHAIN', 'CREATE',
        +            'CLOSE', 'COLOR', 'COMPUTE', 'COMMIT', 'CONTINUE',
        +            'COPY', 'DECLARE', 'DELEGATE', 'DELETE', 'DETACH', 'DISPLAY',
        +            'DIVIDE',
        +            'ENTER', 'ENTRY', 'EVALUATE', 'EXAMINE',
        +            'EXEC', 'EXECUTE', 'EXHIBIT', 'EXIT', 'FREE', 'GOBACK',
        +            'IF',  'INITIALIZE', 'INITIATE', 'INSPECT', 'INVOKE', 'MERGE',
        +            'MODIFY', 'MOVE', 'MULTIPLY', 'NOTE', 'ON', 'OPEN',
        +            'PERFORM', 'RAISE', 'READ', 'RECEIVE', 'RELEASE', 'RETURN',
        +            'RESET', 'RESUME',
        +            'REWRITE', 'ROLLBACK', 'SEARCH', 'SELECT', 'SERVICE', 'SET', 'SORT',
        +            'START', 'STOP', 'STRING', 'SUBTRACT', 'SYNC',
        +            'SUPPRESS', 'TERMINATE',
        +            'TRANSFORM', 'TRY', 'UNLOCKFILE', 'UNLOCK', 'UNSTRING', 'USE',
        +            'VALIDATE', 'WAIT', 'WRITE'
        +            ),
        +        4 => array( // Intrinsic functions
        +            'ABS', 'ACOS', 'ANNUITY', 'ASIN', 'ATAN', 'BOOLEAN-OF-INTEGER',
        +            'BYTE-LENGTH', 'CHAR', 'CHAR-NATIONAL',
        +            'COS', 'COMBINED-DATETIME', 'CONCATENATE', 'CURRENT-DATE',
        +            'DATE-OF-INTEGER', 'DATE-TO-YYYYMMDD', 'DAY-TO-YYYYDDD',
        +            'DAY-OF-INTEGER', 'DISPLAY-OF', 'E', 'EXCEPTION-FILE',
        +            'EXCEPTION-FILE-N', 'EXCEPTION-LOCATION',
        +            'EXCEPTION-LOCATION-N', 'EXCEPTION-STATEMENT', 'EXCEPTION-STATUS',
        +            'EXP', 'EXP10', 'FACTORIAL', 'FORMATTED-CURRENT-DATE',
        +            'FORMATTED-DATE', 'FORMATTED-DATETIME', 'FORMATTED-TIME',
        +            'FRACTION-PART', 'HIGHEST-ALGEBRAIC', 'INTEGER',
        +            'INTEGER-OF-BOOLEAN', 'INTEGER-OF-DATE', 'INTEGER-OF-DAY',
        +            'INTEGER-OF-FORMATTED-DATE', 'INTEGER-PART', 'LENGTH',
        +            'LOCALE-COMPARE',
        +            'LOCALE-DATE', 'LOCALE-TIME', 'LOCALE-TIME-FROM-SECONDS',
        +            'LOCALE-TIME-FROM-SECS', 'LOG',
        +            'LOG10', 'LOWER-CASE', 'LOWEST-ALGEBRAIC',
        +            'MAX', 'MEAN', 'MEDIAN', 'MIDRANGE',
        +            'MIN', 'MOD', 'NATIONAL-OF', 'NUMVAL', 'NUMVAL-C', 'NUMVAL-F',
        +            'ORD', 'ORD-MAX', 'ORD-MIN',
        +            'PI', 'PRESENT-VALUE', 'RANDOM', 'RANGE', 'REM', 'REVERSE',
        +            'SECONDS-FROM-FORMATTED-TIME', 'SIGN', 'SIN', 'SQRT',
        +            'SECONDS-PAST-MIDNIGHT', 'STANDARD-DEVIATION', 'STANDARD-COMPARE',
        +            'STORED-CHAR-LENGTH',
        +            'SUBSTITUTE', 'SUBSTITUE-CASE', 'SUM', 'TAN', 'TEST-DATE-YYYYMMDD',
        +            'TEST-DAY-YYYYDDD', 'TEST-FORMATTED-TIME', 'TEST-NUMVAL',
        +            'TEST-NUMVAL-C', 'TEST-NUMVAL-F',
        +            'TRIM', 'UPPER-CASE', 'VARIANCE', 'YEAR-TO-YYYY', 'WHEN-COMPILED'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        //  Arithmetic and comparison operators must be surrounded by spaces.
        +        ' + ', ' - ', ' * ', ' / ', ' ** ', ' ^ ',
        +        '.', ',',
        +        ' = ', ' < ', ' > ', ' >= ', ' <= ', ' <> ',
        +        '(', ')', '[', ']'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000000; font-weight: bold;',
        +            2 => 'color: #008000; font-weight: bold;',
        +            3 => 'color: #000000; font-weight: bold;',
        +            4 => 'color: #9d7700;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #a0a0a0; font-style: italic;',
        +            2 => 'color: #000080; font-weight: bold;',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #339933;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #993399;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #800080;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000066;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => '(? 'CoffeeScript',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array('###' => '###'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    //Longest quotemarks ALWAYS first
        +    'QUOTEMARKS' => array('"""', "'''", '"', "'"),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +
        +        /*
        +        ** Set 1: control keywords
        +        */
        +        1 => array(
        +            'break', 'by', 'catch', 'continue', 'else', 'finally', 'for', 'in', 'of', 'if',
        +            'return', 'switch', 'then', 'throw', 'try', 'unless', 'when', 'while', 'until'
        +            ),
        +
        +        /*
        +        ** Set 2: logic keywords
        +        */
        +        2 => array(
        +            'and', 'or', 'is', 'isnt', 'not'
        +            ),
        +
        +        /*
        +        ** Set 3: other keywords
        +        */
        +        3 => array(
        +            'instanceof', 'new', 'delete', 'typeof',
        +            'class', 'super', 'this', 'extends'
        +            ),
        +
        +        /*
        +        ** Set 4: constants
        +        */
        +        4 => array(
        +            'true', 'false', 'on', 'off', 'yes', 'no',
        +            'Infinity', 'NaN', 'undefined', 'null'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +            '(', ')', '[', ']', '{', '}', '*', '&', '|', '%', '!', ',', ';', '<', '>', '?', '`',
        +            '+', '-', '*', '/', '->', '=>', '<<', '>>', '@', ':', '^'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #ff7700;font-weight:bold;',
        +            2 => 'color: #008000;',
        +            3 => 'color: #dc143c;',
        +            4 => 'color: #0000cd;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: black;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #483d8b;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #ff4500;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: black;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
        +    'SCRIPT_DELIMITERS' => array(
        +        0 => array(
        +            ''
        +            )
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => true
        +        )
        +);
        diff --git a/includes/geshi/cpp-qt.php b/includes/geshi/cpp-qt.php
        new file mode 100644
        index 0000000..0f7df56
        --- /dev/null
        +++ b/includes/geshi/cpp-qt.php
        @@ -0,0 +1,622 @@
        + 'C++ (Qt)',
        +    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        //Multiline-continued single-line comments
        +        1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m',
        +        //Multiline-continued preprocessor define
        +        2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m',
        +        //C++ 11 string literal extensions
        +        3 => '/(?:L|u8?|U)(?=")/',
        +        //C++ 11 string literal extensions (raw)
        +        4 => '/R"([^()\s\\\\]*)\((?:(?!\)\\1").)*\)\\1"/ms'
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        //Simple Single Char Escapes
        +        1 => "#\\\\[abfnrtv\\\'\"?\n]#i",
        +        //Hexadecimal Char Specs
        +        2 => "#\\\\x[\da-fA-F]{2}#",
        +        //Hexadecimal Char Specs
        +        3 => "#\\\\u[\da-fA-F]{4}#",
        +        //Hexadecimal Char Specs
        +        4 => "#\\\\U[\da-fA-F]{8}#",
        +        //Octal Char Specs
        +        5 => "#\\\\[0-7]{1,3}#"
        +        ),
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |
        +        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
        +        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'case', 'continue', 'default', 'do', 'else', 'for', 'goto', 'if', 'return',
        +            'switch', 'while', 'delete', 'new', 'this'
        +            ),
        +        2 => array(
        +            'NULL', 'false', 'break', 'true', 'enum', 'errno', 'EDOM',
        +            'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',
        +            'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',
        +            'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',
        +            'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',
        +            'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',
        +            'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',
        +            'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',
        +            'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',
        +            'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam',
        +            'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',
        +            'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC',
        +            'virtual', 'public', 'private', 'protected', 'template', 'using', 'namespace',
        +            'try', 'catch', 'inline', 'dynamic_cast', 'const_cast', 'reinterpret_cast',
        +            'static_cast', 'explicit', 'friend', 'typename', 'typeid', 'class' ,
        +            'foreach','connect', 'Q_OBJECT' , 'slots' , 'signals', 'Q_SIGNALS', 'Q_SLOTS',
        +            'Q_FOREACH', 'QCOMPARE', 'QVERIFY', 'qDebug', 'kDebug', 'QBENCHMARK',
        +            'SIGNAL', 'SLOT', 'emit'
        +            ),
        +        3 => array(
        +            'cin', 'cerr', 'clog', 'cout',
        +            'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
        +            'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',
        +            'ispunct', 'isspace', 'isupper', 'isxdigit', 'tolower', 'toupper',
        +            'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',
        +            'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',
        +            'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp',
        +            'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',
        +            'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',
        +            'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',
        +            'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',
        +            'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',
        +            'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',
        +            'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',
        +            'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',
        +            'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',
        +            'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',
        +            'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',
        +            'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',
        +            'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
        +            ),
        +        4 => array(
        +            'auto', 'bool', 'char', 'const', 'double', 'float', 'int', 'long', 'longint',
        +            'register', 'short', 'shortint', 'signed', 'static', 'struct',
        +            'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf',
        +            'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',
        +            'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm', 'wchar_t',
        +
        +            'int8', 'int16', 'int32', 'int64',
        +            'uint8', 'uint16', 'uint32', 'uint64',
        +
        +            'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t',
        +            'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',
        +
        +            'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t',
        +            'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t',
        +
        +            'int8_t', 'int16_t', 'int32_t', 'int64_t',
        +            'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t',
        +
        +            'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t'
        +            ),
        +        5 => array(
        +            'Q_INT8', 'Q_INT16', 'Q_INT32', 'Q_INT64', 'Q_LLONG', 'Q_LONG',
        +            'Q_UINT8', 'Q_UINT16', 'Q_UINT32', 'Q_UINT64', 'Q_ULLONG', 'Q_ULONG',
        +
        +            'QAbstractAnimation', 'QAbstractButton', 'QAbstractEventDispatcher',
        +            'QAbstractExtensionFactory', 'QAbstractExtensionManager',
        +            'QAbstractFormBuilder', 'QAbstractGraphicsShapeItem',
        +            'QAbstractItemDelegate', 'QAbstractItemModel', 'QAbstractItemView',
        +            'QAbstractListModel', 'QAbstractMessageHandler',
        +            'QAbstractNativeEventFilter', 'QAbstractNetworkCache',
        +            'QAbstractOpenGLFunctions', 'QAbstractPlanarVideoBuffer',
        +            'QAbstractPrintDialog', 'QAbstractProxyModel', 'QAbstractScrollArea',
        +            'QAbstractSlider', 'QAbstractSocket', 'QAbstractSpinBox',
        +            'QAbstractState', 'QAbstractTableModel',
        +            'QAbstractTextDocumentLayout', 'QAbstractTransition',
        +            'QAbstractUriResolver', 'QAbstractVideoBuffer',
        +            'QAbstractVideoSurface', 'QAbstractXmlNodeModel',
        +            'QAbstractXmlReceiver', 'QAccelerometer', 'QAccelerometerFilter',
        +            'QAccelerometerReading', 'QAccessible', 'QAccessibleActionInterface',
        +            'QAccessibleEditableTextInterface', 'QAccessibleEvent',
        +            'QAccessibleInterface', 'QAccessibleObject', 'QAccessiblePlugin',
        +            'QAccessibleStateChangeEvent', 'QAccessibleTableCellInterface',
        +            'QAccessibleTableInterface', 'QAccessibleTableModelChangeEvent',
        +            'QAccessibleTextCursorEvent', 'QAccessibleTextInsertEvent',
        +            'QAccessibleTextInterface', 'QAccessibleTextRemoveEvent',
        +            'QAccessibleTextSelectionEvent', 'QAccessibleTextUpdateEvent',
        +            'QAccessibleValueChangeEvent', 'QAccessibleValueInterface',
        +            'QAccessibleWidget', 'QAction', 'QActionEvent', 'QActionGroup',
        +            'QAltimeter', 'QAltimeterFilter', 'QAltimeterReading',
        +            'QAmbientLightFilter','QAmbientLightReading', 'QAmbientLightSensor',
        +            'QAmbientTemperatureFilter', 'QAmbientTemperatureReading',
        +            'QAmbientTemperatureSensor', 'QAndroidActivityResultReceiver',
        +            'QAndroidJniEnvironment', 'QAndroidJniObject', 'QAnimationGroup',
        +            'QApplication', 'QAssociativeIterable', 'QAtomicInt',
        +            'QAtomicInteger', 'QAtomicPointer', 'QAudioBuffer', 'QAudioDecoder',
        +            'QAudioDecoderControl', 'QAudioDeviceInfo', 'QAudioEncoderSettings',
        +            'QAudioEncoderSettingsControl', 'QAudioFormat', 'QAudioInput',
        +            'QAudioInputSelectorControl', 'QAudioOutput',
        +            'QAudioOutputSelectorControl', 'QAudioProbe', 'QAudioRecorder',
        +            'QAuthenticator', 'QAxAggregated', 'QAxBase', 'QAxBindable',
        +            'QAxFactory', 'QAxObject', 'QAxScript', 'QAxScriptEngine',
        +            'QAxScriptManager', 'QAxSelect', 'QAxWidget', 'QBackingStore',
        +            'QBasicTimer', 'QBitArray', 'QBitmap', 'QBluetoothAddress',
        +            'QBluetoothDeviceDiscoveryAgent', 'QBluetoothDeviceInfo',
        +            'QBluetoothHostInfo', 'QBluetoothLocalDevice', 'QBluetoothServer',
        +            'QBluetoothServiceDiscoveryAgent', 'QBluetoothServiceInfo',
        +            'QBluetoothSocket', 'QBluetoothTransferManager',
        +            'QBluetoothTransferReply', 'QBluetoothTransferRequest',
        +            'QBluetoothUuid', 'QBoxLayout', 'QBrush', 'QBuffer', 'QButtonGroup',
        +            'QByteArray', 'QByteArrayList', 'QByteArrayMatcher', 'QCache',
        +            'QCalendarWidget', 'QCamera', 'QCameraCaptureBufferFormatControl',
        +            'QCameraCaptureDestinationControl', 'QCameraControl',
        +            'QCameraExposure', 'QCameraExposureControl', 'QCameraFeedbackControl',
        +            'QCameraFlashControl', 'QCameraFocus', 'QCameraFocusControl',
        +            'QCameraFocusZone', 'QCameraImageCapture',
        +            'QCameraImageCaptureControl', 'QCameraImageProcessing',
        +            'QCameraImageProcessingControl', 'QCameraInfo', 'QCameraInfoControl',
        +            'QCameraLocksControl', 'QCameraViewfinder',
        +            'QCameraViewfinderSettingsControl', 'QCameraZoomControl', 'QChar',
        +            'QCheckBox', 'QChildEvent', 'QClipboard', 'QCloseEvent',
        +            'QCocoaNativeContext', 'QCollator', 'QCollatorSortKey', 'QColor',
        +            'QColorDialog', 'QColormap', 'QColumnView', 'QComboBox',
        +            'QCommandLineOption', 'QCommandLineParser', 'QCommandLinkButton',
        +            'QCommonStyle', 'QCompass', 'QCompassFilter', 'QCompassReading',
        +            'QCompleter', 'QConicalGradient', 'QContextMenuEvent',
        +            'QContiguousCache', 'QCoreApplication', 'QCryptographicHash',
        +            'QCursor', 'QDBusAbstractAdaptor', 'QDBusAbstractInterface',
        +            'QDBusArgument', 'QDBusConnection', 'QDBusConnectionInterface',
        +            'QDBusContext', 'QDBusError', 'QDBusInterface', 'QDBusMessage',
        +            'QDBusObjectPath', 'QDBusPendingCall', 'QDBusPendingCallWatcher',
        +            'QDBusPendingReply', 'QDBusReply', 'QDBusServer',
        +            'QDBusServiceWatcher', 'QDBusSignature', 'QDBusUnixFileDescriptor',
        +            'QDBusVariant', 'QDBusVirtualObject', 'QDataStream',
        +            'QDataWidgetMapper', 'QDate', 'QDateEdit', 'QDateTime',
        +            'QDateTimeEdit', 'QDebug', 'QDebugStateSaver',
        +            'QDesignerActionEditorInterface', 'QDesignerContainerExtension',
        +            'QDesignerCustomWidgetCollectionInterface',
        +            'QDesignerCustomWidgetInterface',
        +            'QDesignerDynamicPropertySheetExtension',
        +            'QDesignerFormEditorInterface', 'QDesignerFormWindowCursorInterface',
        +            'QDesignerFormWindowInterface', 'QDesignerFormWindowManagerInterface',
        +            'QDesignerMemberSheetExtension', 'QDesignerObjectInspectorInterface',
        +            'QDesignerPropertyEditorInterface', 'QDesignerPropertySheetExtension',
        +            'QDesignerTaskMenuExtension', 'QDesignerWidgetBoxInterface',
        +            'QDesktopServices', 'QDesktopWidget', 'QDial', 'QDialog',
        +            'QDialogButtonBox', 'QDir', 'QDirIterator', 'QDirModel',
        +            'QDistanceFilter', 'QDistanceReading', 'QDistanceSensor',
        +            'QDnsDomainNameRecord', 'QDnsHostAddressRecord', 'QDnsLookup',
        +            'QDnsMailExchangeRecord', 'QDnsServiceRecord', 'QDnsTextRecord',
        +            'QDockWidget', 'QDomAttr', 'QDomCDATASection', 'QDomCharacterData',
        +            'QDomComment', 'QDomDocument', 'QDomDocumentFragment',
        +            'QDomDocumentType', 'QDomElement', 'QDomEntity', 'QDomEntityReference',
        +            'QDomImplementation', 'QDomNamedNodeMap', 'QDomNode', 'QDomNodeList',
        +            'QDomNotation', 'QDomProcessingInstruction', 'QDomText',
        +            'QDoubleSpinBox', 'QDoubleValidator', 'QDrag', 'QDragEnterEvent',
        +            'QDragLeaveEvent', 'QDragMoveEvent', 'QDropEvent',
        +            'QDynamicPropertyChangeEvent', 'EnginioClient',
        +            'EnginioClientConnection', 'EnginioIdentity', 'EnginioModel',
        +            'EnginioOAuth2Authentication', 'EnginioReply', 'QEGLNativeContext',
        +            'QEasingCurve', 'QEglFSFunctions', 'QElapsedTimer',
        +            'QEnableSharedFromThis', 'QEnterEvent', 'QErrorMessage', 'QEvent',
        +            'QEventLoop', 'QEventLoopLocker', 'QEventTransition', 'QException',
        +            'QExplicitlySharedDataPointer', 'QExposeEvent', 'QExtensionFactory',
        +            'QExtensionManager', 'QFile', 'QFileDevice', 'QFileDialog',
        +            'QFileIconProvider', 'QFileInfo', 'QFileOpenEvent', 'QFileSelector',
        +            'QFileSystemModel', 'QFileSystemWatcher', 'QFinalState', 'QFlag',
        +            'QFlags', 'QFocusEvent', 'QFocusFrame', 'QFont', 'QFontComboBox',
        +            'QFontDatabase', 'QFontDialog', 'QFontInfo', 'QFontMetrics',
        +            'QFontMetricsF', 'QFormBuilder', 'QFormLayout', 'QFrame', 'QFuture',
        +            'QFutureIterator', 'QFutureSynchronizer', 'QFutureWatcher',
        +            'QGLBuffer', 'QGLColormap', 'QGLContext', 'QGLFormat',
        +            'QGLFramebufferObject', 'QGLFramebufferObjectFormat', 'QGLFunctions',
        +            'QGLPixelBuffer', 'QGLShader', 'QGLShaderProgram', 'QGLWidget',
        +            'QGLXNativeContext', 'QGenericArgument', 'QGenericMatrix',
        +            'QGenericPlugin', 'QGenericPluginFactory', 'QGenericReturnArgument',
        +            'QGeoAddress', 'QGeoAreaMonitorInfo', 'QGeoAreaMonitorSource',
        +            'QGeoCircle', 'QGeoCodeReply', 'QGeoCodingManager',
        +            'QGeoCodingManagerEngine', 'QGeoCoordinate', 'QGeoLocation',
        +            'QGeoManeuver', 'QGeoPositionInfo', 'QGeoPositionInfoSource',
        +            'QGeoPositionInfoSourceFactory', 'QGeoRectangle', 'QGeoRoute',
        +            'QGeoRouteReply', 'QGeoRouteRequest', 'QGeoRouteSegment',
        +            'QGeoRoutingManager', 'QGeoRoutingManagerEngine',
        +            'QGeoSatelliteInfo', 'QGeoSatelliteInfoSource',
        +            'QGeoServiceProvider', 'QGeoServiceProviderFactory', 'QGeoShape',
        +            'QGesture', 'QGestureEvent', 'QGestureRecognizer', 'QGlobalStatic',
        +            'QGlyphRun', 'QGradient', 'QGraphicsAnchor', 'QGraphicsAnchorLayout',
        +            'QGraphicsBlurEffect', 'QGraphicsColorizeEffect',
        +            'QGraphicsDropShadowEffect', 'QGraphicsEffect',
        +            'QGraphicsEllipseItem', 'QGraphicsGridLayout', 'QGraphicsItem',
        +            'QGraphicsItemAnimation', 'QGraphicsItemGroup', 'QGraphicsLayout',
        +            'QGraphicsLayoutItem', 'QGraphicsLineItem', 'QGraphicsLinearLayout',
        +            'QGraphicsObject', 'QGraphicsOpacityEffect', 'QGraphicsPathItem',
        +            'QGraphicsPixmapItem', 'QGraphicsPolygonItem',
        +            'QGraphicsProxyWidget', 'QGraphicsRectItem', 'QGraphicsRotation',
        +            'QGraphicsScale', 'QGraphicsScene', 'QGraphicsSceneContextMenuEvent',
        +            'QGraphicsSceneDragDropEvent', 'QGraphicsSceneEvent',
        +            'QGraphicsSceneHelpEvent', 'QGraphicsSceneHoverEvent',
        +            'QGraphicsSceneMouseEvent', 'QGraphicsSceneMoveEvent',
        +            'QGraphicsSceneResizeEvent', 'QGraphicsSceneWheelEvent',
        +            'QGraphicsSimpleTextItem', 'QGraphicsSvgItem', 'QGraphicsTextItem',
        +            'QGraphicsTransform', 'QGraphicsVideoItem', 'QGraphicsView',
        +            'QGraphicsWebView', 'QGraphicsWidget', 'QGridLayout', 'QGroupBox',
        +            'QGuiApplication', 'QGyroscope', 'QGyroscopeFilter',
        +            'QGyroscopeReading', 'QHBoxLayout', 'QHash', 'QHashIterator',
        +            'QHeaderView', 'QHelpContentItem', 'QHelpContentModel',
        +            'QHelpContentWidget', 'QHelpEngine', 'QHelpEngineCore', 'QHelpEvent',
        +            'QHelpIndexModel', 'QHelpIndexWidget', 'QHelpSearchEngine',
        +            'QHelpSearchQuery', 'QHelpSearchQueryWidget',
        +            'QHelpSearchResultWidget', 'QHideEvent', 'QHistoryState',
        +            'QHolsterFilter', 'QHolsterReading', 'QHolsterSensor',
        +            'QHostAddress', 'QHostInfo', 'QHoverEvent', 'QHttpMultiPart',
        +            'QHttpPart', 'QIODevice', 'QIRProximityFilter', 'QIRProximityReading',
        +            'QIRProximitySensor', 'QIcon', 'QIconDragEvent', 'QIconEngine',
        +            'QIconEnginePlugin', 'QIdentityProxyModel', 'QImage',
        +            'QImageEncoderControl', 'QImageEncoderSettings', 'QImageIOHandler',
        +            'QImageIOPlugin', 'QImageReader', 'QImageWriter', 'QInputDialog',
        +            'QInputEvent', 'QInputMethod', 'QInputMethodEvent',
        +            'QInputMethodQueryEvent', 'QIntValidator', 'QItemDelegate',
        +            'QItemEditorCreator', 'QItemEditorCreatorBase', 'QItemEditorFactory',
        +            'QItemSelection', 'QItemSelectionModel', 'QItemSelectionRange',
        +            'QJSEngine', 'QJSValue', 'QJSValueIterator', 'QJsonArray',
        +            'QJsonDocument', 'QJsonObject', 'QJsonParseError', 'QJsonValue',
        +            'QKeyEvent', 'QKeyEventTransition', 'QKeySequence', 'QKeySequenceEdit',
        +            'QLCDNumber', 'QLabel', 'QLatin1Char', 'QLatin1String', 'QLayout',
        +            'QLayoutItem', 'QLibrary', 'QLibraryInfo', 'QLightFilter',
        +            'QLightReading', 'QLightSensor', 'QLine', 'QLineEdit', 'QLineF',
        +            'QLinearGradient', 'QLinkedList', 'QLinkedListIterator', 'QList',
        +            'QListIterator', 'QListView', 'QListWidget', 'QListWidgetItem',
        +            'QLocalServer', 'QLocalSocket', 'QLocale', 'QLockFile',
        +            'QLoggingCategory', 'QLowEnergyCharacteristic',
        +            'QLowEnergyController', 'QLowEnergyDescriptor', 'QLowEnergyService',
        +            'QMacCocoaViewContainer', 'QMacNativeWidget', 'QMacPasteboardMime',
        +            'QMacToolBar', 'QMacToolBarItem', 'QMagnetometer',
        +            'QMagnetometerFilter', 'QMagnetometerReading', 'QMainWindow', 'QMap',
        +            'QMapIterator', 'QMargins', 'QMarginsF', 'QMaskGenerator', 'QMatrix',
        +            'QMatrix4x4', 'QMdiArea', 'QMdiSubWindow', 'QMediaAudioProbeControl',
        +            'QMediaAvailabilityControl', 'QMediaBindableInterface',
        +            'QMediaContainerControl', 'QMediaContent', 'QMediaControl',
        +            'QMediaGaplessPlaybackControl', 'QMediaNetworkAccessControl',
        +            'QMediaObject', 'QMediaPlayer', 'QMediaPlayerControl',
        +            'QMediaPlaylist', 'QMediaRecorder', 'QMediaRecorderControl',
        +            'QMediaResource', 'QMediaService', 'QMediaServiceCameraInfoInterface',
        +            'QMediaServiceFeaturesInterface', 'QMediaServiceProviderPlugin',
        +            'QMediaServiceSupportedDevicesInterface',
        +            'QMediaServiceSupportedFormatsInterface', 'QMediaStreamsControl',
        +            'QMediaTimeInterval', 'QMediaTimeRange', 'QMediaVideoProbeControl',
        +            'QMenu', 'QMenuBar', 'QMessageAuthenticationCode', 'QMessageBox',
        +            'QMessageLogContext', 'QMessageLogger', 'QMetaClassInfo',
        +            'QMetaDataReaderControl', 'QMetaDataWriterControl', 'QMetaEnum',
        +            'QMetaMethod', 'QMetaObject', 'QMetaProperty', 'QMetaType',
        +            'QMimeData', 'QMimeDatabase', 'QMimeType', 'QModelIndex',
        +            'QMouseEvent', 'QMouseEventTransition', 'QMoveEvent', 'QMovie',
        +            'QMultiHash', 'QMultiMap', 'QMutableHashIterator',
        +            'QMutableLinkedListIterator', 'QMutableListIterator',
        +            'QMutableMapIterator', 'QMutableSetIterator',
        +            'QMutableVectorIterator', 'QMutex', 'QMutexLocker',
        +            'QNativeGestureEvent', 'QNdefFilter', 'QNdefMessage',
        +            'QNdefNfcSmartPosterRecord', 'QNdefNfcTextRecord',
        +            'QNdefNfcUriRecord', 'QNdefRecord', 'QNearFieldManager',
        +            'QNearFieldShareManager', 'QNearFieldShareTarget', 'QNearFieldTarget',
        +            'QNetworkAccessManager', 'QNetworkAddressEntry',
        +            'QNetworkCacheMetaData', 'QNetworkConfiguration',
        +            'QNetworkConfigurationManager', 'QNetworkCookie', 'QNetworkCookieJar',
        +            'QNetworkDiskCache', 'QNetworkInterface', 'QNetworkProxy',
        +            'QNetworkProxyFactory', 'QNetworkProxyQuery', 'QNetworkReply',
        +            'QNetworkRequest', 'QNetworkSession', 'QNmeaPositionInfoSource',
        +            'QObject', 'QObjectCleanupHandler', 'QOffscreenSurface',
        +            'QOpenGLBuffer', 'QOpenGLContext', 'QOpenGLContextGroup',
        +            'QOpenGLDebugLogger', 'QOpenGLDebugMessage',
        +            'QOpenGLFramebufferObject', 'QOpenGLFramebufferObjectFormat',
        +            'QOpenGLFunctions', 'QOpenGLFunctions_1_0', 'QOpenGLFunctions_1_1',
        +            'QOpenGLFunctions_1_2', 'QOpenGLFunctions_1_3', 'QOpenGLFunctions_1_4',
        +            'QOpenGLFunctions_1_5', 'QOpenGLFunctions_2_0', 'QOpenGLFunctions_2_1',
        +            'QOpenGLFunctions_3_0', 'QOpenGLFunctions_3_1',
        +            'QOpenGLFunctions_3_2_Compatibility', 'QOpenGLFunctions_3_2_Core',
        +            'QOpenGLFunctions_3_3_Compatibility', 'QOpenGLFunctions_3_3_Core',
        +            'QOpenGLFunctions_4_0_Compatibility', 'QOpenGLFunctions_4_0_Core',
        +            'QOpenGLFunctions_4_1_Compatibility', 'QOpenGLFunctions_4_1_Core',
        +            'QOpenGLFunctions_4_2_Compatibility', 'QOpenGLFunctions_4_2_Core',
        +            'QOpenGLFunctions_4_3_Compatibility', 'QOpenGLFunctions_4_3_Core',
        +            'QOpenGLFunctions_ES2', 'QOpenGLPaintDevice',
        +            'QOpenGLPixelTransferOptions', 'QOpenGLShader',
        +            'QOpenGLShaderProgram', 'QOpenGLTexture', 'QOpenGLTimeMonitor',
        +            'QOpenGLTimerQuery', 'QOpenGLVersionProfile',
        +            'QOpenGLVertexArrayObject', 'QOpenGLWidget', 'QOpenGLWindow',
        +            'QOrientationFilter', 'QOrientationReading', 'QOrientationSensor',
        +            'QPageLayout', 'QPageSetupDialog', 'QPageSize', 'QPagedPaintDevice',
        +            'QPaintDevice', 'QPaintDeviceWindow', 'QPaintEngine',
        +            'QPaintEngineState', 'QPaintEvent', 'QPainter', 'QPainterPath',
        +            'QPainterPathStroker', 'QPair', 'QPalette', 'QPanGesture',
        +            'QParallelAnimationGroup', 'QPauseAnimation', 'QPdfWriter', 'QPen',
        +            'QPersistentModelIndex', 'QPicture', 'QPictureFormatPlugin',
        +            'QPictureIO', 'QPinchGesture', 'QPixelFormat', 'QPixmap',
        +            'QPixmapCache', 'QPlace', 'QPlaceAttribute', 'QPlaceCategory',
        +            'QPlaceContactDetail', 'QPlaceContent', 'QPlaceContentReply',
        +            'QPlaceContentRequest', 'QPlaceDetailsReply', 'QPlaceEditorial',
        +            'QPlaceIcon', 'QPlaceIdReply', 'QPlaceImage', 'QPlaceManager',
        +            'QPlaceManagerEngine', 'QPlaceMatchReply', 'QPlaceMatchRequest',
        +            'QPlaceProposedSearchResult', 'QPlaceRatings', 'QPlaceReply',
        +            'QPlaceResult', 'QPlaceReview', 'QPlaceSearchReply',
        +            'QPlaceSearchRequest', 'QPlaceSearchResult',
        +            'QPlaceSearchSuggestionReply', 'QPlaceSupplier', 'QPlaceUser',
        +            'QPlainTextDocumentLayout', 'QPlainTextEdit',
        +            'QPlatformSystemTrayIcon', 'QPluginLoader', 'QPoint', 'QPointF',
        +            'QPointer', 'QPolygon', 'QPolygonF', 'QPressureFilter',
        +            'QPressureReading', 'QPressureSensor', 'QPrintDialog', 'QPrintEngine',
        +            'QPrintPreviewDialog', 'QPrintPreviewWidget', 'QPrinter',
        +            'QPrinterInfo', 'QProcess', 'QProcessEnvironment', 'QProgressBar',
        +            'QProgressDialog', 'QPropertyAnimation', 'QProximityFilter',
        +            'QProximityReading', 'QProximitySensor', 'QProxyStyle',
        +            'QPushButton', 'QQmlAbstractProfilerAdapter',
        +            'QQmlAbstractUrlInterceptor', 'QQmlApplicationEngine',
        +            'QQmlComponent', 'QQmlContext', 'QQmlEngine', 'QQmlError',
        +            'QQmlExpression', 'QQmlExtensionPlugin', 'QQmlFileSelector',
        +            'QQmlImageProviderBase', 'QQmlIncubationController', 'QQmlIncubator',
        +            'QQmlListProperty', 'QQmlListReference', 'QQmlNdefRecord',
        +            'QQmlNetworkAccessManagerFactory', 'QQmlParserStatus', 'QQmlProperty',
        +            'QQmlPropertyMap', 'QQmlPropertyValueSource', 'QQmlScriptString',
        +            'QQuaternion', 'QQueue', 'QQuickFramebufferObject', 'QQuickImageProvider',
        +            'QQuickItem', 'QQuickItemGrabResult', 'QQuickPaintedItem',
        +            'QQuickRenderControl', 'QQuickTextDocument', 'QQuickTextureFactory',
        +            'QQuickView', 'QQuickWidget', 'QQuickWindow', 'QTouchEventSequence',
        +            'Qoutputrange', 'QRadialGradient', 'QRadioButton', 'QRadioData',
        +            'QRadioDataControl', 'QRadioTuner', 'QRadioTunerControl',
        +            'QRasterPaintEngine', 'QRasterWindow', 'QRawFont', 'QReadLocker',
        +            'QReadWriteLock', 'QRect', 'QRectF', 'QRegExp', 'QRegExpValidator',
        +            'QRegion', 'QRegularExpression', 'QRegularExpressionMatch',
        +            'QRegularExpressionMatchIterator', 'QRegularExpressionValidator',
        +            'QResizeEvent', 'QResource', 'QRotationFilter', 'QRotationReading',
        +            'QRotationSensor', 'QRubberBand', 'QRunnable', 'QSGAbstractRenderer',
        +            'QSGBasicGeometryNode', 'QSGClipNode', 'QSGDynamicTexture',
        +            'QSGEngine', 'QSGFlatColorMaterial', 'QSGGeometry', 'QSGGeometryNode',
        +            'QSGMaterial', 'QSGMaterialShader', 'QSGMaterialType', 'QSGNode',
        +            'QSGOpacityNode', 'QSGOpaqueTextureMaterial', 'QSGSimpleMaterial',
        +            'QSGSimpleMaterialShader', 'QSGSimpleRectNode',
        +            'QSGSimpleTextureNode', 'QSGTexture', 'QSGTextureMaterial',
        +            'QSGTextureProvider', 'QSGTransformNode', 'QSGVertexColorMaterial',
        +            'QSaveFile', 'QScopedArrayPointer', 'QScopedPointer',
        +            'QScopedValueRollback', 'QScreen', 'QScriptClass',
        +            'QScriptClassPropertyIterator', 'QScriptContext',
        +            'QScriptContextInfo', 'QScriptEngine', 'QScriptEngineAgent',
        +            'QScriptEngineDebugger', 'QScriptExtensionPlugin', 'QScriptProgram',
        +            'QScriptString', 'QScriptSyntaxCheckResult', 'QScriptValue',
        +            'QScriptValueIterator', 'QScriptable', 'QScrollArea', 'QScrollBar',
        +            'QScrollEvent', 'QScrollPrepareEvent', 'QScroller',
        +            'QScrollerProperties', 'QSemaphore', 'QSensor', 'QSensorBackend',
        +            'QSensorBackendFactory', 'QSensorChangesInterface', 'QSensorFilter',
        +            'QSensorGesture', 'QSensorGestureManager',
        +            'QSensorGesturePluginInterface', 'QSensorGestureRecognizer',
        +            'QSensorManager', 'QSensorPluginInterface', 'QSensorReading',
        +            'QSequentialAnimationGroup', 'QSequentialIterable', 'QSerialPort',
        +            'QSerialPortInfo', 'QSessionManager', 'QSet', 'QSetIterator',
        +            'QSettings', 'QSharedData', 'QSharedDataPointer', 'QSharedMemory',
        +            'QSharedPointer', 'QShortcut', 'QShortcutEvent', 'QShowEvent',
        +            'QSignalBlocker', 'QSignalMapper', 'QSignalSpy', 'QSignalTransition',
        +            'QSimpleXmlNodeModel', 'QSize', 'QSizeF', 'QSizeGrip', 'QSizePolicy',
        +            'QSlider', 'QSocketNotifier', 'QSortFilterProxyModel', 'QSound',
        +            'QSoundEffect', 'QSourceLocation', 'QSpacerItem', 'QSpinBox',
        +            'QSplashScreen', 'QSplitter', 'QSplitterHandle', 'QSqlDatabase',
        +            'QSqlDriver', 'QSqlDriverCreator', 'QSqlDriverCreatorBase',
        +            'QSqlDriverPlugin', 'QSqlError', 'QSqlField', 'QSqlIndex',
        +            'QSqlQuery', 'QSqlQueryModel', 'QSqlRecord', 'QSqlRelation',
        +            'QSqlRelationalDelegate', 'QSqlRelationalTableModel', 'QSqlResult',
        +            'QSqlTableModel', 'QSslCertificate', 'QSslCertificateExtension',
        +            'QSslCipher', 'QSslConfiguration', 'QSslError', 'QSslKey',
        +            'QSslSocket', 'QStack', 'QStackedLayout', 'QStackedWidget',
        +            'QStandardItem', 'QStandardItemEditorCreator', 'QStandardItemModel',
        +            'QStandardPaths', 'QState', 'QStateMachine', 'QStaticPlugin',
        +            'QStaticText', 'QStatusBar', 'QStatusTipEvent', 'QStorageInfo',
        +            'QString', 'QStringList', 'QStringListModel', 'QStringMatcher',
        +            'QStringRef', 'QStyle', 'QStyleFactory', 'QStyleHintReturn',
        +            'QStyleHintReturnMask', 'QStyleHintReturnVariant', 'QStyleHints',
        +            'QStyleOption', 'QStyleOptionButton', 'QStyleOptionComboBox',
        +            'QStyleOptionComplex', 'QStyleOptionDockWidget',
        +            'QStyleOptionFocusRect', 'QStyleOptionFrame',
        +            'QStyleOptionGraphicsItem', 'QStyleOptionGroupBox',
        +            'QStyleOptionHeader', 'QStyleOptionMenuItem',
        +            'QStyleOptionProgressBar', 'QStyleOptionRubberBand',
        +            'QStyleOptionSizeGrip', 'QStyleOptionSlider',
        +            'QStyleOptionSpinBox', 'QStyleOptionTab',
        +            'QStyleOptionTabBarBase', 'QStyleOptionTabWidgetFrame',
        +            'QStyleOptionTitleBar', 'QStyleOptionToolBar',
        +            'QStyleOptionToolBox', 'QStyleOptionToolButton',
        +            'QStyleOptionViewItem', 'QStylePainter', 'QStylePlugin',
        +            'QStyledItemDelegate', 'QSupportedWritingSystems', 'QSurface',
        +            'QSurfaceFormat', 'QSvgGenerator', 'QSvgRenderer', 'QSvgWidget',
        +            'QSwipeGesture', 'QSyntaxHighlighter', 'QSysInfo', 'QSystemSemaphore',
        +            'QSystemTrayIcon', 'QTabBar', 'QTabWidget', 'QTableView',
        +            'QTableWidget', 'QTableWidgetItem', 'QTableWidgetSelectionRange',
        +            'QTabletEvent', 'QTapAndHoldGesture', 'QTapFilter', 'QTapGesture',
        +            'QTapReading', 'QTapSensor', 'QTcpServer', 'QTcpSocket',
        +            'QTemporaryDir', 'QTemporaryFile', 'QTestEventList', 'QTextBlock',
        +            'QTextBlockFormat', 'QTextBlockGroup', 'QTextBlockUserData',
        +            'QTextBoundaryFinder', 'QTextBrowser', 'QTextCharFormat',
        +            'QTextCodec', 'QTextCursor', 'QTextDecoder', 'QTextDocument',
        +            'QTextDocumentFragment', 'QTextDocumentWriter', 'QTextEdit',
        +            'QTextEncoder', 'QTextFormat', 'QTextFragment', 'QTextFrame',
        +            'QTextFrameFormat', 'QTextImageFormat', 'QTextInlineObject',
        +            'QTextItem', 'QTextLayout', 'QTextLength', 'QTextLine', 'QTextList',
        +            'QTextListFormat', 'QTextObject', 'QTextObjectInterface',
        +            'QTextOption', 'QTextStream', 'QTextTable', 'QTextTableCell',
        +            'QTextTableCellFormat', 'QTextTableFormat', 'QThread', 'QThreadPool',
        +            'QThreadStorage', 'QTileRules', 'QTiltFilter', 'QTiltReading',
        +            'QTiltSensor', 'QTime', 'QTimeEdit', 'QTimeLine', 'QTimeZone',
        +            'QTimer', 'QTimerEvent', 'QToolBar', 'QToolBox', 'QToolButton',
        +            'QToolTip', 'QTouchDevice', 'QTouchEvent', 'QTransform',
        +            'QTranslator', 'QTreeView', 'QTreeWidget', 'QTreeWidgetItem',
        +            'QTreeWidgetItemIterator', 'QUdpSocket', 'QUiLoader', 'QUndoCommand',
        +            'QUndoGroup', 'QUndoStack', 'QUndoView', 'QUnhandledException',
        +            'QUrl', 'QUrlQuery', 'QUuid', 'QVBoxLayout', 'QValidator',
        +            'QVarLengthArray', 'QVariant', 'QVariantAnimation', 'QVector',
        +            'QVector2D', 'QVector3D', 'QVector4D', 'QVectorIterator',
        +            'QVideoDeviceSelectorControl', 'QVideoEncoderSettings',
        +            'QVideoEncoderSettingsControl', 'QVideoFrame', 'QVideoProbe',
        +            'QVideoRendererControl', 'QVideoSurfaceFormat', 'QVideoWidget',
        +            'QVideoWidgetControl', 'QVideoWindowControl', 'QWGLNativeContext',
        +            'QWaitCondition', 'QWeakPointer', 'QWebChannel',
        +            'QWebChannelAbstractTransport', 'QWebDatabase', 'QWebElement',
        +            'QWebElementCollection', 'QWebEngineHistory', 'QWebEngineHistoryItem',
        +            'QWebEnginePage', 'QWebEngineSettings', 'QWebEngineView', 'QWebFrame',
        +            'QWebHistory', 'QWebHistoryInterface', 'QWebHistoryItem',
        +            'QWebHitTestResult', 'QWebInspector', 'QWebPage', 'QWebPluginFactory',
        +            'QWebSecurityOrigin', 'QWebSettings', 'QWebSocket',
        +            'QWebSocketCorsAuthenticator', 'QWebSocketServer', 'QWebView',
        +            'QWhatsThis', 'QWhatsThisClickedEvent', 'QWheelEvent', 'QWidget',
        +            'QWidgetAction', 'QWidgetItem', 'QWinEventNotifier', 'QWinJumpList',
        +            'QWinJumpListCategory', 'QWinJumpListItem', 'QWinMime',
        +            'QWinTaskbarButton', 'QWinTaskbarProgress', 'QWinThumbnailToolBar',
        +            'QWinThumbnailToolButton', 'QWindow', 'QWindowStateChangeEvent',
        +            'QWizard', 'QWizardPage', 'QWriteLocker', 'QX11Info',
        +            'QXcbWindowFunctions', 'QXmlAttributes', 'QXmlContentHandler',
        +            'QXmlDTDHandler', 'QXmlDeclHandler', 'QXmlDefaultHandler',
        +            'QXmlEntityResolver','QXmlErrorHandler', 'QXmlFormatter',
        +            'QXmlInputSource', 'QXmlItem', 'QXmlLexicalHandler', 'QXmlLocator',
        +            'QXmlName', 'QXmlNamePool', 'QXmlNamespaceSupport',
        +            'QXmlNodeModelIndex', 'QXmlParseException', 'QXmlQuery',
        +            'QXmlReader', 'QXmlResultItems', 'QXmlSchema', 'QXmlSchemaValidator',
        +            'QXmlSerializer', 'QXmlSimpleReader', 'QXmlStreamAttribute',
        +            'QXmlStreamAttributes', 'QXmlStreamEntityDeclaration',
        +            'QXmlStreamEntityResolver', 'QXmlStreamNamespaceDeclaration',
        +            'QXmlStreamNotationDeclaration', 'QXmlStreamReader',
        +            'QXmlStreamWriter'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':', ',', ';', '|', '<', '>'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000000; font-weight:bold;',
        +            2 => 'color: #0057AE;',
        +            3 => 'color: #2B74C7;',
        +            4 => 'color: #0057AE;',
        +            5 => 'color: #22aadd;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #888888;',
        +            2 => 'color: #006E28;',
        +            3 => 'color: #BF0303;',
        +            4 => 'color: #BF0303;',
        +            'MULTI' => 'color: #888888; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            1 => 'color: #000099; font-weight: bold;',
        +            2 => 'color: #660099; font-weight: bold;',
        +            3 => 'color: #660099; font-weight: bold;',
        +            4 => 'color: #660099; font-weight: bold;',
        +            5 => 'color: #006699; font-weight: bold;',
        +            'HARD' => '',
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #006E28;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #BF0303;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #B08000;',
        +            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',
        +            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
        +            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #2B74C7;',
        +            2 => 'color: #2B74C7;',
        +            3 => 'color: #2B74C7;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #006E28;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => 'http://qt-project.org/doc/latest/{FNAMEL}.html'
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.',
        +        2 => '::',
        +        3 => '->',
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => "(?|^])",
        +            'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_<\|%\\-])"
        +        ),
        +        'OOLANG' => array(
        +            'MATCH_AFTER' => '~?[a-zA-Z][a-zA-Z0-9_]*',
        +        )
        +    )
        +);
        diff --git a/includes/geshi/cpp-winapi.php b/includes/geshi/cpp-winapi.php
        new file mode 100644
        index 0000000..f642616
        --- /dev/null
        +++ b/includes/geshi/cpp-winapi.php
        @@ -0,0 +1,836 @@
        + 'C++ (WinAPI)',
        +    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        //Multiline-continued single-line comments
        +        1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m',
        +        //Multiline-continued preprocessor define
        +        2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m',
        +        //C++ 11 string literal extensions
        +        3 => '/(?:L|u8?|U)(?=")/',
        +        //C++ 11 string literal extensions (raw)
        +        4 => '/R"([^()\s\\\\]*)\((?:(?!\)\\1").)*\)\\1"/ms'
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        //Simple Single Char Escapes
        +        1 => "#\\\\[abfnrtv\\\'\"?\n]#i",
        +        //Hexadecimal Char Specs
        +        2 => "#\\\\x[\da-fA-F]{2}#",
        +        //Hexadecimal Char Specs
        +        3 => "#\\\\u[\da-fA-F]{4}#",
        +        //Hexadecimal Char Specs
        +        4 => "#\\\\U[\da-fA-F]{8}#",
        +        //Octal Char Specs
        +        5 => "#\\\\[0-7]{1,3}#"
        +        ),
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |
        +        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
        +        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'break', 'case', 'continue', 'default', 'do', 'else', 'for', 'goto', 'if', 'return',
        +            'switch', 'throw', 'while'
        +            ),
        +        2 => array(
        +            'NULL', 'false', 'true', 'enum', 'errno', 'EDOM',
        +            'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',
        +            'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',
        +            'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',
        +            'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',
        +            'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',
        +            'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',
        +            'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',
        +            'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',
        +            'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam',
        +            'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',
        +            'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC',
        +            'virtual', 'public', 'private', 'protected', 'template', 'using', 'namespace',
        +            'try', 'catch', 'inline', 'dynamic_cast', 'const_cast', 'reinterpret_cast',
        +            'static_cast', 'explicit', 'friend', 'typename', 'typeid', 'class'
        +            ),
        +        3 => array(
        +            'cin', 'cerr', 'clog', 'cout', 'delete', 'new', 'this',
        +            'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
        +            'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',
        +            'ispunct', 'isspace', 'isupper', 'isxdigit', 'tolower', 'toupper',
        +            'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',
        +            'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',
        +            'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp',
        +            'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',
        +            'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',
        +            'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',
        +            'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',
        +            'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',
        +            'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',
        +            'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',
        +            'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',
        +            'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',
        +            'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',
        +            'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',
        +            'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',
        +            'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
        +            ),
        +        4 => array(
        +            'auto', 'bool', 'char', 'const', 'double', 'float', 'int', 'long', 'longint',
        +            'register', 'short', 'shortint', 'signed', 'static', 'struct',
        +            'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf',
        +            'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',
        +            'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm', 'wchar_t',
        +
        +            'int8', 'int16', 'int32', 'int64',
        +            'uint8', 'uint16', 'uint32', 'uint64',
        +
        +            'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t',
        +            'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',
        +
        +            'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t',
        +            'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t',
        +
        +            'int8_t', 'int16_t', 'int32_t', 'int64_t',
        +            'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t',
        +
        +            'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t'
        +            ),
        +        // Public API
        +        5 => array(
        +            'AssignProcessToJobObject', 'CommandLineToArgvW', 'ConvertThreadToFiber',
        +            'CreateFiber', 'CreateJobObjectA', 'CreateJobObjectW', 'CreateProcessA',
        +            'CreateProcessAsUserA', 'CreateProcessAsUserW', 'CreateProcessW',
        +            'CreateRemoteThread', 'CreateThread', 'DeleteFiber', 'ExitProcess',
        +            'ExitThread', 'FreeEnvironmentStringsA', 'FreeEnvironmentStringsW',
        +            'GetCommandLineA', 'GetCommandLineW', 'GetCurrentProcess',
        +            'GetCurrentProcessId', 'GetCurrentThread', 'GetCurrentThreadId',
        +            'GetEnvironmentStringsA', 'GetEnvironmentStringsW',
        +            'GetEnvironmentVariableA', 'GetEnvironmentVariableW', 'GetExitCodeProcess',
        +            'GetExitCodeThread', 'GetGuiResources', 'GetPriorityClass',
        +            'GetProcessAffinityMask', 'GetProcessPriorityBoost',
        +            'GetProcessShutdownParameters', 'GetProcessTimes', 'GetProcessVersion',
        +            'GetProcessWorkingSetSize', 'GetStartupInfoA', 'GetStartupInfoW',
        +            'GetThreadPriority', 'GetThreadPriorityBoost', 'GetThreadTimes',
        +            'OpenJobObjectA', 'OpenJobObjectW', 'OpenProcess',
        +            'QueryInformationJobObject', 'ResumeThread', 'SetEnvironmentVariableA',
        +            'SetEnvironmentVariableW', 'SetInformationJobObject', 'SetPriorityClass',
        +            'SetProcessAffinityMask', 'SetProcessPriorityBoost',
        +            'SetProcessShutdownParameters', 'SetProcessWorkingSetSize',
        +            'SetThreadAffinityMask', 'SetThreadIdealProcessor', 'SetThreadPriority',
        +            'SetThreadPriorityBoost', 'Sleep', 'SleepEx', 'SuspendThread',
        +            'SwitchToFiber', 'SwitchToThread', 'TerminateJobObject', 'TerminateProcess',
        +            'TerminateThread', 'WaitForInputIdle', 'WinExec',
        +
        +            '_hread', '_hwrite', '_lclose', '_lcreat', '_llseek', '_lopen', '_lread',
        +            '_lwrite', 'AreFileApisANSI', 'CancelIo', 'CopyFileA', 'CopyFileW',
        +            'CreateDirectoryA', 'CreateDirectoryExA', 'CreateDirectoryExW',
        +            'CreateDirectoryW', 'CreateFileA', 'CreateFileW', 'DeleteFileA',
        +            'DeleteFileW', 'FindClose', 'FindCloseChangeNotification',
        +            'FindFirstChangeNotificationA', 'FindFirstChangeNotificationW',
        +            'FindFirstFileA', 'FindFirstFileW', 'FindNextFileA', 'FindNextFileW',
        +            'FlushFileBuffers', 'GetCurrentDirectoryA', 'GetCurrentDirectoryW',
        +            'GetDiskFreeSpaceA', 'GetDiskFreeSpaceExA', 'GetDiskFreeSpaceExW',
        +            'GetDiskFreeSpaceW', 'GetDriveTypeA', 'GetDriveTypeW', 'GetFileAttributesA',
        +            'GetFileAttributesExA', 'GetFileAttributesExW', 'GetFileAttributesW',
        +            'GetFileInformationByHandle', 'GetFileSize', 'GetFileType',
        +            'GetFullPathNameA', 'GetFullPathNameW', 'GetLogicalDrives',
        +            'GetLogicalDriveStringsA', 'GetLogicalDriveStringsW', 'GetLongPathNameA',
        +            'GetLongPathNameW', 'GetShortPathNameA', 'GetShortPathNameW',
        +            'GetTempFileNameA', 'GetTempFileNameW', 'GetTempPathA', 'GetTempPathW',
        +            'LockFile', 'MoveFileA', 'MoveFileW', 'MulDiv', 'OpenFile',
        +            'QueryDosDeviceA', 'QueryDosDeviceW', 'ReadFile', 'ReadFileEx',
        +            'RemoveDirectoryA', 'RemoveDirectoryW', 'SearchPathA', 'SearchPathW',
        +            'SetCurrentDirectoryA', 'SetCurrentDirectoryW', 'SetEndOfFile',
        +            'SetFileApisToANSI', 'SetFileApisToOEM', 'SetFileAttributesA',
        +            'SetFileAttributesW', 'SetFilePointer', 'SetHandleCount',
        +            'SetVolumeLabelA', 'SetVolumeLabelW', 'UnlockFile', 'WriteFile',
        +            'WriteFileEx',
        +
        +            'DeviceIoControl',
        +
        +            'GetModuleFileNameA', 'GetModuleFileNameW', 'GetProcAddress',
        +            'LoadLibraryA', 'LoadLibraryExA', 'LoadLibraryExW', 'LoadLibraryW',
        +            'LoadModule',
        +
        +            'GetPrivateProfileIntA', 'GetPrivateProfileIntW',
        +            'GetPrivateProfileSectionA', 'GetPrivateProfileSectionNamesA',
        +            'GetPrivateProfileSectionNamesW', 'GetPrivateProfileSectionW',
        +            'GetPrivateProfileStringA', 'GetPrivateProfileStringW',
        +            'GetPrivateProfileStructA', 'GetPrivateProfileStructW',
        +            'GetProfileIntA', 'GetProfileIntW', 'GetProfileSectionA',
        +            'GetProfileSectionW', 'GetProfileStringA', 'GetProfileStringW',
        +            'RegCloseKey', 'RegConnectRegistryA', 'RegConnectRegistryW',
        +            'RegCreateKeyA', 'RegCreateKeyExA', 'RegCreateKeyExW',
        +            'RegCreateKeyW', 'RegDeleteKeyA', 'RegDeleteKeyW', 'RegDeleteValueA',
        +            'RegDeleteValueW', 'RegEnumKeyA', 'RegEnumKeyExA', 'RegEnumKeyExW',
        +            'RegEnumKeyW', 'RegEnumValueA', 'RegEnumValueW', 'RegFlushKey',
        +            'RegGetKeySecurity', 'RegLoadKeyA', 'RegLoadKeyW',
        +            'RegNotifyChangeKeyValue', 'RegOpenKeyA', 'RegOpenKeyExA', 'RegOpenKeyExW',
        +            'RegOpenKeyW', 'RegOverridePredefKey', 'RegQueryInfoKeyA',
        +            'RegQueryInfoKeyW', 'RegQueryMultipleValuesA', 'RegQueryMultipleValuesW',
        +            'RegQueryValueA', 'RegQueryValueExA', 'RegQueryValueExW', 'RegQueryValueW',
        +            'RegReplaceKeyA', 'RegReplaceKeyW', 'RegRestoreKeyA', 'RegRestoreKeyW',
        +            'RegSaveKeyA', 'RegSaveKeyW', 'RegSetKeySecurity', 'RegSetValueA',
        +            'RegSetValueExA', 'RegSetValueExW', 'RegSetValueW', 'RegUnLoadKeyA',
        +            'RegUnLoadKeyW', 'WritePrivateProfileSectionA', 'WritePrivateProfileSectionW',
        +            'WritePrivateProfileStringA', 'WritePrivateProfileStringW',
        +            'WritePrivateProfileStructA', 'WritePrivateProfileStructW',
        +            'WriteProfileSectionA', 'WriteProfileSectionW', 'WriteProfileStringA',
        +            'WriteProfileStringW',
        +
        +            'AccessCheck', 'AccessCheckAndAuditAlarmA', 'AccessCheckAndAuditAlarmW',
        +            'AccessCheckByType', 'AccessCheckByTypeAndAuditAlarmA',
        +            'AccessCheckByTypeAndAuditAlarmW', 'AccessCheckByTypeResultList',
        +            'AccessCheckByTypeResultListAndAuditAlarmA', 'AccessCheckByTypeResultListAndAuditAlarmW',
        +            'AddAccessAllowedAce', 'AddAccessAllowedAceEx', 'AddAccessAllowedObjectAce',
        +            'AddAccessDeniedAce', 'AddAccessDeniedAceEx', 'AddAccessDeniedObjectAce',
        +            'AddAce', 'AddAuditAccessAce', 'AddAuditAccessAceEx', 'AddAuditAccessObjectAce',
        +            'AdjustTokenGroups', 'AdjustTokenPrivileges', 'AllocateAndInitializeSid',
        +            'AllocateLocallyUniqueId', 'AreAllAccessesGranted', 'AreAnyAccessesGranted',
        +            'BuildExplicitAccessWithNameA', 'BuildExplicitAccessWithNameW',
        +            'BuildImpersonateExplicitAccessWithNameA', 'BuildImpersonateExplicitAccessWithNameW',
        +            'BuildImpersonateTrusteeA', 'BuildImpersonateTrusteeW', 'BuildSecurityDescriptorA',
        +            'BuildSecurityDescriptorW', 'BuildTrusteeWithNameA', 'BuildTrusteeWithNameW',
        +            'BuildTrusteeWithSidA', 'BuildTrusteeWithSidW',
        +            'ConvertToAutoInheritPrivateObjectSecurity', 'CopySid', 'CreatePrivateObjectSecurity',
        +            'CreatePrivateObjectSecurityEx', 'CreateRestrictedToken', 'DeleteAce',
        +            'DestroyPrivateObjectSecurity', 'DuplicateToken', 'DuplicateTokenEx',
        +            'EqualPrefixSid', 'EqualSid', 'FindFirstFreeAce', 'FreeSid', 'GetAce',
        +            'GetAclInformation', 'GetAuditedPermissionsFromAclA', 'GetAuditedPermissionsFromAclW',
        +            'GetEffectiveRightsFromAclA', 'GetEffectiveRightsFromAclW',
        +            'GetExplicitEntriesFromAclA', 'GetExplicitEntriesFromAclW', 'GetFileSecurityA',
        +            'GetFileSecurityW', 'GetKernelObjectSecurity', 'GetLengthSid', 'GetMultipleTrusteeA',
        +            'GetMultipleTrusteeOperationA', 'GetMultipleTrusteeOperationW', 'GetMultipleTrusteeW',
        +            'GetNamedSecurityInfoA', 'GetNamedSecurityInfoW', 'GetPrivateObjectSecurity',
        +            'GetSecurityDescriptorControl', 'GetSecurityDescriptorDacl',
        +            'GetSecurityDescriptorGroup', 'GetSecurityDescriptorLength',
        +            'GetSecurityDescriptorOwner', 'GetSecurityDescriptorSacl', 'GetSecurityInfo',
        +            'GetSidIdentifierAuthority', 'GetSidLengthRequired', 'GetSidSubAuthority',
        +            'GetSidSubAuthorityCount', 'GetTokenInformation', 'GetTrusteeFormA',
        +            'GetTrusteeFormW', 'GetTrusteeNameA', 'GetTrusteeNameW', 'GetTrusteeTypeA',
        +            'GetTrusteeTypeW', 'GetUserObjectSecurity', 'ImpersonateLoggedOnUser',
        +            'ImpersonateNamedPipeClient', 'ImpersonateSelf', 'InitializeAcl',
        +            'InitializeSecurityDescriptor', 'InitializeSid', 'IsTokenRestricted', 'IsValidAcl',
        +            'IsValidSecurityDescriptor', 'IsValidSid', 'LogonUserA', 'LogonUserW',
        +            'LookupAccountNameA', 'LookupAccountNameW', 'LookupAccountSidA', 'LookupAccountSidW',
        +            'LookupPrivilegeDisplayNameA', 'LookupPrivilegeDisplayNameW', 'LookupPrivilegeNameA',
        +            'LookupPrivilegeNameW', 'LookupPrivilegeValueA', 'LookupPrivilegeValueW',
        +            'LookupSecurityDescriptorPartsA', 'LookupSecurityDescriptorPartsW', 'MakeAbsoluteSD',
        +            'MakeSelfRelativeSD', 'MapGenericMask', 'ObjectCloseAuditAlarmA',
        +            'ObjectCloseAuditAlarmW', 'ObjectDeleteAuditAlarmA', 'ObjectDeleteAuditAlarmW',
        +            'ObjectOpenAuditAlarmA', 'ObjectOpenAuditAlarmW', 'ObjectPrivilegeAuditAlarmA',
        +            'ObjectPrivilegeAuditAlarmW', 'OpenProcessToken', 'OpenThreadToken', 'PrivilegeCheck',
        +            'PrivilegedServiceAuditAlarmA', 'PrivilegedServiceAuditAlarmW', 'RevertToSelf',
        +            'SetAclInformation', 'SetEntriesInAclA', 'SetEntriesInAclW', 'SetFileSecurityA',
        +            'SetFileSecurityW', 'SetKernelObjectSecurity', 'SetNamedSecurityInfoA',
        +            'SetNamedSecurityInfoW', 'SetPrivateObjectSecurity', 'SetPrivateObjectSecurityEx',
        +            'SetSecurityDescriptorControl', 'SetSecurityDescriptorDacl',
        +            'SetSecurityDescriptorGroup', 'SetSecurityDescriptorOwner',
        +            'SetSecurityDescriptorSacl', 'SetSecurityInfo', 'SetThreadToken',
        +            'SetTokenInformation', 'SetUserObjectSecurity', 'ChangeServiceConfig2A',
        +            'ChangeServiceConfig2W', 'ChangeServiceConfigA', 'ChangeServiceConfigW',
        +            'CloseServiceHandle', 'ControlService', 'CreateServiceA', 'CreateServiceW',
        +            'DeleteService', 'EnumDependentServicesA', 'EnumDependentServicesW',
        +            'EnumServicesStatusA', 'EnumServicesStatusW', 'GetServiceDisplayNameA',
        +            'GetServiceDisplayNameW', 'GetServiceKeyNameA', 'GetServiceKeyNameW',
        +            'LockServiceDatabase', 'NotifyBootConfigStatus', 'OpenSCManagerA', 'OpenSCManagerW',
        +            'OpenServiceA', 'OpenServiceW', 'QueryServiceConfig2A', 'QueryServiceConfig2W',
        +            'QueryServiceConfigA', 'QueryServiceConfigW', 'QueryServiceLockStatusA',
        +            'QueryServiceLockStatusW', 'QueryServiceObjectSecurity', 'QueryServiceStatus',
        +            'RegisterServiceCtrlHandlerA', 'RegisterServiceCtrlHandlerW',
        +            'SetServiceObjectSecurity', 'SetServiceStatus', 'StartServiceA',
        +            'StartServiceCtrlDispatcherA', 'StartServiceCtrlDispatcherW', 'StartServiceW',
        +            'UnlockServiceDatabase',
        +
        +            'MultinetGetConnectionPerformanceA', 'MultinetGetConnectionPerformanceW',
        +            'NetAlertRaise', 'NetAlertRaiseEx', 'NetApiBufferAllocate', 'NetApiBufferFree',
        +            'NetApiBufferReallocate', 'NetApiBufferSize', 'NetConnectionEnum', 'NetFileClose',
        +            'NetFileGetInfo', 'NetGetAnyDCName', 'NetGetDCName', 'NetGetDisplayInformationIndex',
        +            'NetGroupAdd', 'NetGroupAddUser', 'NetGroupDel', 'NetGroupDelUser', 'NetGroupEnum',
        +            'NetGroupGetInfo', 'NetGroupGetUsers', 'NetGroupSetInfo', 'NetGroupSetUsers',
        +            'NetLocalGroupAdd', 'NetLocalGroupAddMember', 'NetLocalGroupAddMembers',
        +            'NetLocalGroupDel', 'NetLocalGroupDelMember', 'NetLocalGroupDelMembers',
        +            'NetLocalGroupEnum', 'NetLocalGroupGetInfo', 'NetLocalGroupGetMembers',
        +            'NetLocalGroupSetInfo', 'NetLocalGroupSetMembers', 'NetMessageBufferSend',
        +            'NetMessageNameAdd', 'NetMessageNameDel', 'NetMessageNameEnum',
        +            'NetMessageNameGetInfo', 'NetQueryDisplayInformation', 'NetRemoteComputerSupports',
        +            'NetRemoteTOd', 'NetReplExportDirAdd', 'NetReplExportDirDel', 'NetReplExportDirEnum',
        +            'NetReplExportDirGetInfo', 'NetReplExportDirLock', 'NetReplExportDirSetInfo',
        +            'NetReplExportDirUnlock', 'NetReplGetInfo', 'NetReplImportDirAdd',
        +            'NetReplImportDirDel', 'NetReplImportDirEnum', 'NetReplImportDirGetInfo',
        +            'NetReplImportDirLock', 'NetReplImportDirUnlock', 'NetReplSetInfo',
        +            'NetScheduleJobAdd', 'NetScheduleJobDel', 'NetScheduleJobEnum',
        +            'NetScheduleJobGetInfo', 'NetServerComputerNameAdd', 'NetServerComputerNameDel',
        +            'NetServerDiskEnum', 'NetServerEnum', 'NetServerEnumEx', 'NetServerGetInfo',
        +            'NetServerSetInfo', 'NetServerTransportAdd', 'NetServerTransportAddEx',
        +            'NetServerTransportDel', 'NetServerTransportEnum', 'NetSessionDel', 'NetSessionEnum',
        +            'NetSessionGetInfo', 'NetShareAdd', 'NetShareCheck', 'NetShareDel', 'NetShareEnum',
        +            'NetShareGetInfo', 'NetShareSetInfo', 'NetStatisticsGet', 'NetUseAdd', 'NetUseDel',
        +            'NetUseEnum', 'NetUseGetInfo', 'NetUserAdd', 'NetUserChangePassword', 'NetUserDel',
        +            'NetUserEnum', 'NetUserGetGroups', 'NetUserGetInfo', 'NetUserGetLocalGroups',
        +            'NetUserModalsGet', 'NetUserModalsSet', 'NetUserSetGroups', 'NetUserSetInfo',
        +            'NetWkstaGetInfo', 'NetWkstaSetInfo', 'NetWkstaTransportAdd', 'NetWkstaTransportDel',
        +            'NetWkstaTransportEnum', 'NetWkstaUserEnum', 'NetWkstaUserGetInfo',
        +            'NetWkstaUserSetInfo', 'WNetAddConnection2A', 'WNetAddConnection2W',
        +            'WNetAddConnection3A', 'WNetAddConnection3W', 'WNetAddConnectionA',
        +            'WNetAddConnectionW', 'WNetCancelConnection2A', 'WNetCancelConnection2W',
        +            'WNetCancelConnectionA', 'WNetCancelConnectionW', 'WNetCloseEnum',
        +            'WNetConnectionDialog', 'WNetConnectionDialog1A', 'WNetConnectionDialog1W',
        +            'WNetDisconnectDialog', 'WNetDisconnectDialog1A', 'WNetDisconnectDialog1W',
        +            'WNetEnumResourceA', 'WNetEnumResourceW', 'WNetGetConnectionA', 'WNetGetConnectionW',
        +            'WNetGetLastErrorA', 'WNetGetLastErrorW', 'WNetGetNetworkInformationA',
        +            'WNetGetNetworkInformationW', 'WNetGetProviderNameA', 'WNetGetProviderNameW',
        +            'WNetGetResourceInformationA', 'WNetGetResourceInformationW',
        +            'WNetGetResourceParentA', 'WNetGetResourceParentW', 'WNetGetUniversalNameA',
        +            'WNetGetUniversalNameW', 'WNetGetUserA', 'WNetGetUserW', 'WNetOpenEnumA',
        +            'WNetOpenEnumW', 'WNetUseConnectionA', 'WnetUseConnectionW',
        +
        +            'accept', 'bind', 'closesocket', 'connect', 'gethostbyaddr', 'gethostbyname',
        +            'gethostname', 'getpeername', 'getprotobyname', 'getprotobynumber', 'getservbyname',
        +            'getservbyport', 'getsockname', 'getsockopt', 'htonl', 'htons', 'inet_addr',
        +            'inet_ntoa', 'ioctlsocket', 'listen', 'ntohl', 'ntohs', 'recv', 'recvfrom', 'select',
        +            'send', 'sendto', 'setsockopt', 'shutdown', 'socket', 'WSAAccept',
        +            'WSAAddressToStringA', 'WSAAddressToStringW', 'WSAAsyncGetHostByAddr',
        +            'WSAAsyncGetHostByName', 'WSAAsyncGetProtoByName', 'WSAAsyncGetProtoByNumber',
        +            'WSAAsyncGetServByName', 'WSAAsyncGetServByPort', 'WSAAsyncSelect',
        +            'WSACancelAsyncRequest', 'WSACancelBlockingCall', 'WSACleanup', 'WSACloseEvent',
        +            'WSAConnect', 'WSACreateEvent', 'WSADuplicateSocketA', 'WSADuplicateSocketW',
        +            'WSAEnumNameSpaceProvidersA', 'WSAEnumNameSpaceProvidersW', 'WSAEnumNetworkEvents',
        +            'WSAEnumProtocolsA', 'WSAEnumProtocolsW', 'WSAEventSelect', 'WSAGetLastError',
        +            'WSAGetOverlappedResult', 'WSAGetQOSByName', 'WSAGetServiceClassInfoA',
        +            'WSAGetServiceClassInfoW', 'WSAGetServiceClassNameByClassIdA',
        +            'WSAGetServiceClassNameByClassIdW', 'WSAHtonl', 'WSAHtons', 'WSAInstallServiceClassA',
        +            'WSAInstallServiceClassW', 'WSAIoctl', 'WSAIsBlocking', 'WSAJoinLeaf',
        +            'WSALookupServiceBeginA', 'WSALookupServiceBeginW', 'WSALookupServiceEnd',
        +            'WSALookupServiceNextA', 'WSALookupServiceNextW', 'WSANtohl', 'WSANtohs',
        +            'WSAProviderConfigChange', 'WSARecv', 'WSARecvDisconnect', 'WSARecvFrom',
        +            'WSARemoveServiceClass', 'WSAResetEvent', 'WSASend', 'WSASendDisconnect', 'WSASendTo',
        +            'WSASetBlockingHook', 'WSASetEvent', 'WSASetLastError', 'WSASetServiceA',
        +            'WSASetServiceW', 'WSASocketA', 'WSASocketW', 'WSAStartup', 'WSAStringToAddressA',
        +            'WSAStringToAddressW', 'WSAUnhookBlockingHook', 'WSAWaitForMultipleEvents',
        +            'WSCDeinstallProvider', 'WSCEnableNSProvider', 'WSCEnumProtocols',
        +            'WSCGetProviderPath', 'WSCInstallNameSpace', 'WSCInstallProvider',
        +            'WSCUnInstallNameSpace',
        +
        +            'ContinueDebugEvent', 'DebugActiveProcess', 'DebugBreak', 'FatalExit',
        +            'FlushInstructionCache', 'GetThreadContext', 'GetThreadSelectorEntry',
        +            'IsDebuggerPresent', 'OutputDebugStringA', 'OutputDebugStringW', 'ReadProcessMemory',
        +            'SetDebugErrorLevel', 'SetThreadContext', 'WaitForDebugEvent', 'WriteProcessMemory',
        +
        +            'CloseHandle', 'DuplicateHandle', 'GetHandleInformation', 'SetHandleInformation',
        +
        +            'AdjustWindowRect', 'AdjustWindowRectEx', 'AllowSetForegroundWindow',
        +            'AnimateWindow', 'AnyPopup', 'ArrangeIconicWindows', 'BeginDeferWindowPos',
        +            'BringWindowToTop', 'CascadeWindows', 'ChildWindowFromPoint',
        +            'ChildWindowFromPointEx', 'CloseWindow', 'CreateWindowExA', 'CreateWindowExW',
        +            'DeferWindowPos', 'DestroyWindow', 'EndDeferWindowPos', 'EnumChildWindows',
        +            'EnumThreadWindows', 'EnumWindows', 'FindWindowA', 'FindWindowExA', 'FindWindowExW',
        +            'FindWindowW', 'GetAltTabInfoA', 'GetAltTabInfoW', 'GetAncestor', 'GetClientRect',
        +            'GetDesktopWindow', 'GetForegroundWindow', 'GetGUIThreadInfo', 'GetLastActivePopup',
        +            'GetLayout', 'GetParent', 'GetProcessDefaultLayout', 'GetTitleBarInf', 'GetTopWindow',
        +            'GetWindow', 'GetWindowInfo', 'GetWindowModuleFileNameA', 'GetWindowModuleFileNameW',
        +            'GetWindowPlacement', 'GetWindowRect', 'GetWindowTextA', 'GetWindowTextLengthA',
        +            'GetWindowTextLengthW', 'GetWindowTextW', 'GetWindowThreadProcessId', 'IsChild',
        +            'IsIconic', 'IsWindow', 'IsWindowUnicode', 'IsWindowVisible', 'IsZoomed',
        +            'LockSetForegroundWindow', 'MoveWindow', 'OpenIcon', 'RealChildWindowFromPoint',
        +            'RealGetWindowClassA', 'RealGetWindowClassW', 'SetForegroundWindow',
        +            'SetLayeredWindowAttributes', 'SetLayout', 'SetParent', 'SetProcessDefaultLayout',
        +            'SetWindowPlacement', 'SetWindowPos', 'SetWindowTextA', 'SetWindowTextW',
        +            'ShowOwnedPopups', 'ShowWindow', 'ShowWindowAsync', 'TileWindows',
        +            'UpdateLayeredWindow', 'WindowFromPoint',
        +
        +            'CreateDialogIndirectParamA', 'CreateDialogIndirectParamW', 'CreateDialogParamA',
        +            'CreateDialogParamW', 'DefDlgProcA', 'DefDlgProcW', 'DialogBoxIndirectParamA',
        +            'DialogBoxIndirectParamW', 'DialogBoxParamA', 'DialogBoxParamW', 'EndDialog',
        +            'GetDialogBaseUnits', 'GetDlgCtrlID', 'GetDlgItem', 'GetDlgItemInt',
        +            'GetDlgItemTextA', 'GetDlgItemTextW', 'GetNextDlgGroupItem', 'GetNextDlgTabItem',
        +            'IsDialogMessageA', 'IsDialogMessageW', 'MapDialogRect', 'MessageBoxA',
        +            'MessageBoxExA', 'MessageBoxExW', 'MessageBoxIndirectA', 'MessageBoxIndirectW',
        +            'MessageBoxW', 'SendDlgItemMessageA', 'SendDlgItemMessageW', 'SetDlgItemInt',
        +            'SetDlgItemTextA', 'SetDlgItemTextW',
        +
        +            'GetWriteWatch', 'GlobalMemoryStatus', 'GlobalMemoryStatusEx', 'IsBadCodePtr',
        +            'IsBadReadPtr', 'IsBadStringPtrA', 'IsBadStringPtrW', 'IsBadWritePtr',
        +            'ResetWriteWatch', 'AllocateUserPhysicalPages', 'FreeUserPhysicalPages',
        +            'MapUserPhysicalPages', 'MapUserPhysicalPagesScatter', 'GlobalAlloc', 'GlobalFlags',
        +            'GlobalFree', 'GlobalHandle', 'GlobalLock', 'GlobalReAlloc', 'GlobalSize',
        +            'GlobalUnlock', 'LocalAlloc', 'LocalFlags', 'LocalFree', 'LocalHandle', 'LocalLock',
        +            'LocalReAlloc', 'LocalSize', 'LocalUnlock', 'GetProcessHeap', 'GetProcessHeaps',
        +            'HeapAlloc', 'HeapCompact', 'HeapCreate', 'HeapDestroy', 'HeapFree', 'HeapLock',
        +            'HeapReAlloc', 'HeapSize', 'HeapUnlock', 'HeapValidate', 'HeapWalk', 'VirtualAlloc',
        +            'VirtualAllocEx', 'VirtualFree', 'VirtualFreeEx', 'VirtualLock', 'VirtualProtect',
        +            'VirtualProtectEx', 'VirtualQuery', 'VirtualQueryEx', 'VirtualUnlock',
        +            'GetFreeSpace', 'GlobalCompact', 'GlobalFix', 'GlobalUnfix', 'GlobalUnWire',
        +            'GlobalWire', 'IsBadHugeReadPtr', 'IsBadHugeWritePtr', 'LocalCompact', 'LocalShrink',
        +
        +            'GetClassInfoA', 'GetClassInfoW', 'GetClassInfoExA', 'GetClassInfoExW',
        +            'GetClassLongA', 'GetClassLongW', 'GetClassLongPtrA', 'GetClassLongPtrW',
        +            'RegisterClassA', 'RegisterClassW', 'RegisterClassExA', 'RegisterClassExW',
        +            'SetClassLongA', 'SetClassLongW', 'SetClassLongPtrA', 'SetClassLongPtrW',
        +            'SetWindowLongA', 'SetWindowLongW', 'SetWindowLongPtrA', 'SetWindowLongPtrW',
        +            'UnregisterClassA', 'UnregisterClassW', 'GetClassWord', 'GetWindowWord',
        +            'SetClassWord', 'SetWindowWord'
        +            ),
        +        // Native API
        +        6 => array(
        +            'CsrAllocateCaptureBuffer', 'CsrAllocateCapturePointer', 'CsrAllocateMessagePointer',
        +            'CsrCaptureMessageBuffer', 'CsrCaptureMessageString', 'CsrCaptureTimeout',
        +            'CsrClientCallServer', 'CsrClientConnectToServer', 'CsrFreeCaptureBuffer',
        +            'CsrIdentifyAlertableThread', 'CsrNewThread', 'CsrProbeForRead', 'CsrProbeForWrite',
        +            'CsrSetPriorityClass',
        +
        +            'LdrAccessResource', 'LdrDisableThreadCalloutsForDll', 'LdrEnumResources',
        +            'LdrFindEntryForAddress', 'LdrFindResource_U', 'LdrFindResourceDirectory_U',
        +            'LdrGetDllHandle', 'LdrGetProcedureAddress', 'LdrInitializeThunk', 'LdrLoadDll',
        +            'LdrProcessRelocationBlock', 'LdrQueryImageFileExecutionOptions',
        +            'LdrQueryProcessModuleInformation', 'LdrShutdownProcess', 'LdrShutdownThread',
        +            'LdrUnloadDll', 'LdrVerifyImageMatchesChecksum',
        +
        +            'NtAcceptConnectPort', 'ZwAcceptConnectPort', 'NtCompleteConnectPort',
        +            'ZwCompleteConnectPort', 'NtConnectPort', 'ZwConnectPort', 'NtCreatePort',
        +            'ZwCreatePort', 'NtImpersonateClientOfPort', 'ZwImpersonateClientOfPort',
        +            'NtListenPort', 'ZwListenPort', 'NtQueryInformationPort', 'ZwQueryInformationPort',
        +            'NtReadRequestData', 'ZwReadRequestData', 'NtReplyPort', 'ZwReplyPort',
        +            'NtReplyWaitReceivePort', 'ZwReplyWaitReceivePort', 'NtReplyWaitReplyPort',
        +            'ZwReplyWaitReplyPort', 'NtRequestPort', 'ZwRequestPort', 'NtRequestWaitReplyPort',
        +            'ZwRequestWaitReplyPort', 'NtSecureConnectPort', 'ZwSecureConnectPort',
        +            'NtWriteRequestData', 'ZwWriteRequestData',
        +
        +            'NtAccessCheck', 'ZwAccessCheck', 'NtAccessCheckAndAuditAlarm',
        +            'ZwAccessCheckAndAuditAlarm', 'NtAccessCheckByType', 'ZwAccessCheckByType',
        +            'NtAccessCheckByTypeAndAuditAlarm', 'ZwAccessCheckByTypeAndAuditAlarm',
        +            'NtAccessCheckByTypeResultList', 'ZwAccessCheckByTypeResultList',
        +            'NtAdjustGroupsToken', 'ZwAdjustGroupsToken', 'NtAdjustPrivilegesToken',
        +            'ZwAdjustPrivilegesToken', 'NtCloseObjectAuditAlarm', 'ZwCloseObjectAuditAlarm',
        +            'NtCreateToken', 'ZwCreateToken', 'NtDeleteObjectAuditAlarm',
        +            'ZwDeleteObjectAuditAlarm', 'NtDuplicateToken', 'ZwDuplicateToken',
        +            'NtFilterToken', 'ZwFilterToken', 'NtImpersonateThread', 'ZwImpersonateThread',
        +            'NtOpenObjectAuditAlarm', 'ZwOpenObjectAuditAlarm', 'NtOpenProcessToken',
        +            'ZwOpenProcessToken', 'NtOpenThreadToken', 'ZwOpenThreadToken', 'NtPrivilegeCheck',
        +            'ZwPrivilegeCheck', 'NtPrivilegedServiceAuditAlarm', 'ZwPrivilegedServiceAuditAlarm',
        +            'NtPrivilegeObjectAuditAlarm', 'ZwPrivilegeObjectAuditAlarm',
        +            'NtQueryInformationToken', 'ZwQueryInformationToken', 'NtQuerySecurityObject',
        +            'ZwQuerySecurityObject', 'NtSetInformationToken', 'ZwSetInformationToken',
        +            'NtSetSecurityObject', 'ZwSetSecurityObject',
        +
        +            'NtAddAtom', 'ZwAddAtom', 'NtDeleteAtom', 'ZwDeleteAtom', 'NtFindAtom', 'ZwFindAtom',
        +            'NtQueryInformationAtom', 'ZwQueryInformationAtom',
        +
        +            'NtAlertResumeThread', 'ZwAlertResumeThread', 'NtAlertThread', 'ZwAlertThread',
        +            'NtCreateProcess', 'ZwCreateProcess', 'NtCreateThread', 'ZwCreateThread',
        +            'NtCurrentTeb', 'NtDelayExecution', 'ZwDelayExecution', 'NtGetContextThread',
        +            'ZwGetContextThread', 'NtOpenProcess', 'ZwOpenProcess', 'NtOpenThread',
        +            'ZwOpenThread', 'NtQueryInformationProcess', 'ZwQueryInformationProcess',
        +            'NtQueryInformationThread', 'ZwQueryInformationThread', 'NtQueueApcThread',
        +            'ZwQueueApcThread', 'NtResumeThread', 'ZwResumeThread', 'NtSetContextThread',
        +            'ZwSetContextThread', 'NtSetHighWaitLowThread', 'ZwSetHighWaitLowThread',
        +            'NtSetInformationProcess', 'ZwSetInformationProcess', 'NtSetInformationThread',
        +            'ZwSetInformationThread', 'NtSetLowWaitHighThread', 'ZwSetLowWaitHighThread',
        +            'NtSuspendThread', 'ZwSuspendThread', 'NtTerminateProcess', 'ZwTerminateProcess',
        +            'NtTerminateThread', 'ZwTerminateThread', 'NtTestAlert', 'ZwTestAlert',
        +            'NtYieldExecution', 'ZwYieldExecution',
        +
        +            'NtAllocateVirtualMemory', 'ZwAllocateVirtualMemory', 'NtAllocateVirtualMemory64',
        +            'ZwAllocateVirtualMemory64', 'NtAreMappedFilesTheSame', 'ZwAreMappedFilesTheSame',
        +            'NtCreateSection', 'ZwCreateSection', 'NtExtendSection', 'ZwExtendSection',
        +            'NtFlushVirtualMemory', 'ZwFlushVirtualMemory', 'NtFreeVirtualMemory',
        +            'ZwFreeVirtualMemory', 'NtFreeVirtualMemory64', 'ZwFreeVirtualMemory64',
        +            'NtLockVirtualMemory', 'ZwLockVirtualMemory', 'NtMapViewOfSection',
        +            'ZwMapViewOfSection', 'NtMapViewOfVlmSection', 'ZwMapViewOfVlmSection',
        +            'NtOpenSection', 'ZwOpenSection', 'NtProtectVirtualMemory', 'ZwProtectVirtualMemory',
        +            'NtProtectVirtualMemory64', 'ZwProtectVirtualMemory64', 'NtQueryVirtualMemory',
        +            'ZwQueryVirtualMemory', 'NtQueryVirtualMemory64', 'ZwQueryVirtualMemory64',
        +            'NtReadVirtualMemory', 'ZwReadVirtualMemory', 'NtReadVirtualMemory64',
        +            'ZwReadVirtualMemory64', 'NtUnlockVirtualMemory', 'ZwUnlockVirtualMemory',
        +            'NtUnmapViewOfSection', 'ZwUnmapViewOfSection', 'NtUnmapViewOfVlmSection',
        +            'ZwUnmapViewOfVlmSection', 'NtWriteVirtualMemory', 'ZwWriteVirtualMemory',
        +            'NtWriteVirtualMemory64', 'ZwWriteVirtualMemory64',
        +
        +            'NtAssignProcessToJobObject', 'ZwAssignProcessToJobObject', 'NtCreateJobObject',
        +            'ZwCreateJobObject', 'NtOpenJobObject', 'ZwOpenJobObject',
        +            'NtQueryInformationJobObject', 'ZwQueryInformationJobObject',
        +            'NtSetInformationJobObject', 'ZwSetInformationJobObject', 'NtTerminateJobObject',
        +            'ZwTerminateJobObject',
        +
        +            'NtCancelIoFile', 'ZwCancelIoFile', 'NtCreateFile', 'ZwCreateFile',
        +            'NtCreateIoCompletion', 'ZwCreateIoCompletion', 'NtDeleteFile', 'ZwDeleteFile',
        +            'NtDeviceIoControlFile', 'ZwDeviceIoControlFile', 'NtFlushBuffersFile',
        +            'ZwFlushBuffersFile', 'NtFsControlFile', 'ZwFsControlFile', 'NtLockFile', 'ZwLockFile',
        +            'NtNotifyChangeDirectoryFile', 'ZwNotifyChangeDirectoryFile', 'NtOpenFile',
        +            'ZwOpenFile', 'NtOpenIoCompletion', 'ZwOpenIoCompletion', 'NtQueryAttributesFile',
        +            'ZwQueryAttributesFile', 'NtQueryDirectoryFile', 'ZwQueryDirectoryFile',
        +            'NtQueryEaFile', 'ZwQueryEaFile', 'NtQueryIoCompletion', 'ZwQueryIoCompletion',
        +            'NtQueryQuotaInformationFile', 'ZwQueryQuotaInformationFile',
        +            'NtQueryVolumeInformationFile', 'ZwQueryVolumeInformationFile', 'NtReadFile',
        +            'ZwReadFile', 'NtReadFile64', 'ZwReadFile64', 'NtReadFileScatter', 'ZwReadFileScatter',
        +            'NtRemoveIoCompletion', 'ZwRemoveIoCompletion', 'NtSetEaFile', 'ZwSetEaFile',
        +            'NtSetInformationFile', 'ZwSetInformationFile', 'NtSetIoCompletion',
        +            'ZwSetIoCompletion', 'NtSetQuotaInformationFile', 'ZwSetQuotaInformationFile',
        +            'NtSetVolumeInformationFile', 'ZwSetVolumeInformationFile', 'NtUnlockFile',
        +            'ZwUnlockFile', 'NtWriteFile', 'ZwWriteFile', 'NtWriteFile64','ZwWriteFile64',
        +            'NtWriteFileGather', 'ZwWriteFileGather', 'NtQueryFullAttributesFile',
        +            'ZwQueryFullAttributesFile', 'NtQueryInformationFile', 'ZwQueryInformationFile',
        +
        +            'RtlAbortRXact', 'RtlAbsoluteToSelfRelativeSD', 'RtlAcquirePebLock',
        +            'RtlAcquireResourceExclusive', 'RtlAcquireResourceShared', 'RtlAddAccessAllowedAce',
        +            'RtlAddAccessDeniedAce', 'RtlAddAce', 'RtlAddActionToRXact', 'RtlAddAtomToAtomTable',
        +            'RtlAddAttributeActionToRXact', 'RtlAddAuditAccessAce', 'RtlAddCompoundAce',
        +            'RtlAdjustPrivilege', 'RtlAllocateAndInitializeSid', 'RtlAllocateHandle',
        +            'RtlAllocateHeap', 'RtlAnsiCharToUnicodeChar', 'RtlAnsiStringToUnicodeSize',
        +            'RtlAnsiStringToUnicodeString', 'RtlAppendAsciizToString', 'RtlAppendStringToString',
        +            'RtlAppendUnicodeStringToString', 'RtlAppendUnicodeToString', 'RtlApplyRXact',
        +            'RtlApplyRXactNoFlush', 'RtlAreAllAccessesGranted', 'RtlAreAnyAccessesGranted',
        +            'RtlAreBitsClear', 'RtlAreBitsSet', 'RtlAssert', 'RtlCaptureStackBackTrace',
        +            'RtlCharToInteger', 'RtlCheckRegistryKey', 'RtlClearAllBits', 'RtlClearBits',
        +            'RtlClosePropertySet', 'RtlCompactHeap', 'RtlCompareMemory', 'RtlCompareMemoryUlong',
        +            'RtlCompareString', 'RtlCompareUnicodeString', 'RtlCompareVariants',
        +            'RtlCompressBuffer', 'RtlConsoleMultiByteToUnicodeN', 'RtlConvertExclusiveToShared',
        +            'RtlConvertLongToLargeInteger', 'RtlConvertPropertyToVariant',
        +            'RtlConvertSharedToExclusive', 'RtlConvertSidToUnicodeString',
        +            'RtlConvertUiListToApiList', 'RtlConvertUlongToLargeInteger',
        +            'RtlConvertVariantToProperty', 'RtlCopyLuid', 'RtlCopyLuidAndAttributesArray',
        +            'RtlCopySecurityDescriptor', 'RtlCopySid', 'RtlCopySidAndAttributesArray',
        +            'RtlCopyString', 'RtlCopyUnicodeString', 'RtlCreateAcl', 'RtlCreateAndSetSD',
        +            'RtlCreateAtomTable', 'RtlCreateEnvironment', 'RtlCreateHeap',
        +            'RtlCreateProcessParameters', 'RtlCreatePropertySet', 'RtlCreateQueryDebugBuffer',
        +            'RtlCreateRegistryKey', 'RtlCreateSecurityDescriptor', 'RtlCreateTagHeap',
        +            'RtlCreateUnicodeString', 'RtlCreateUnicodeStringFromAsciiz', 'RtlCreateUserProcess',
        +            'RtlCreateUserSecurityObject', 'RtlCreateUserThread', 'RtlCustomCPToUnicodeN',
        +            'RtlCutoverTimeToSystemTime', 'RtlDecompressBuffer', 'RtlDecompressFragment',
        +            'RtlDelete', 'RtlDeleteAce', 'RtlDeleteAtomFromAtomTable', 'RtlDeleteCriticalSection',
        +            'RtlDeleteElementGenericTable', 'RtlDeleteNoSplay', 'RtlDeleteRegistryValue',
        +            'RtlDeleteResource', 'RtlDeleteSecurityObject', 'RtlDeNormalizeProcessParams',
        +            'RtlDestroyAtomTable', 'RtlDestroyEnvironment', 'RtlDestroyHandleTable',
        +            'RtlDestroyHeap', 'RtlDestroyProcessParameters', 'RtlDestroyQueryDebugBuffer',
        +            'RtlDetermineDosPathNameType_U', 'RtlDoesFileExists_U', 'RtlDosPathNameToNtPathName_U',
        +            'RtlDosSearchPath_U', 'RtlDowncaseUnicodeString', 'RtlDumpResource',
        +            'RtlEmptyAtomTable', 'RtlEnlargedIntegerMultiply', 'RtlEnlargedUnsignedDivide',
        +            'RtlEnlargedUnsignedMultiply', 'RtlEnterCriticalSection', 'RtlEnumerateGenericTable',
        +            'RtlEnumerateGenericTableWithoutSplaying', 'RtlEnumerateProperties',
        +            'RtlEnumProcessHeaps', 'RtlEqualComputerName', 'RtlEqualDomainName', 'RtlEqualLuid',
        +            'RtlEqualPrefixSid', 'RtlEqualSid', 'RtlEqualString', 'RtlEqualUnicodeString',
        +            'RtlEraseUnicodeString', 'RtlExpandEnvironmentStrings_U', 'RtlExtendedIntegerMultiply',
        +            'RtlExtendedLargeIntegerDivide', 'RtlExtendedMagicDivide', 'RtlExtendHeap',
        +            'RtlFillMemory', 'RtlFillMemoryUlong', 'RtlFindClearBits', 'RtlFindClearBitsAndSet',
        +            'RtlFindLongestRunClear', 'RtlFindLongestRunSet', 'RtlFindMessage', 'RtlFindSetBits',
        +            'RtlFindSetBitsAndClear', 'RtlFirstFreeAce', 'RtlFlushPropertySet',
        +            'RtlFormatCurrentUserKeyPath', 'RtlFormatMessage', 'RtlFreeAnsiString',
        +            'RtlFreeHandle', 'RtlFreeHeap', 'RtlFreeOemString', 'RtlFreeSid',
        +            'RtlFreeUnicodeString', 'RtlFreeUserThreadStack', 'RtlGenerate8dot3Name', 'RtlGetAce',
        +            'RtlGetCallersAddress', 'RtlGetCompressionWorkSpaceSize',
        +            'RtlGetControlSecurityDescriptor', 'RtlGetCurrentDirectory_U',
        +            'RtlGetDaclSecurityDescriptor', 'RtlGetElementGenericTable', 'RtlGetFullPathName_U',
        +            'RtlGetGroupSecurityDescriptor', 'RtlGetLongestNtPathLength', 'RtlGetNtGlobalFlags',
        +            'RtlGetNtProductType', 'RtlGetOwnerSecurityDescriptor', 'RtlGetProcessHeaps',
        +            'RtlGetSaclSecurityDescriptor', 'RtlGetUserInfoHeap', 'RtlGuidToPropertySetName',
        +            'RtlIdentifierAuthoritySid', 'RtlImageDirectoryEntryToData', 'RtlImageNtHeader',
        +            'RtlImageRvaToSection', 'RtlImageRvaToVa', 'RtlImpersonateSelf', 'RtlInitAnsiString',
        +            'RtlInitCodePageTable', 'RtlInitializeAtomPackage', 'RtlInitializeBitMap',
        +            'RtlInitializeContext', 'RtlInitializeCriticalSection',
        +            'RtlInitializeCriticalSectionAndSpinCount', 'RtlInitializeGenericTable',
        +            'RtlInitializeHandleTable', 'RtlInitializeResource', 'RtlInitializeRXact',
        +            'RtlInitializeSid', 'RtlInitNlsTables', 'RtlInitString', 'RtlInitUnicodeString',
        +            'RtlInsertElementGenericTable', 'RtlIntegerToChar', 'RtlIntegerToUnicodeString',
        +            'RtlIsDosDeviceName_U', 'RtlIsGenericTableEmpty', 'RtlIsNameLegalDOS8Dot3',
        +            'RtlIsTextUnicode', 'RtlIsValidHandle', 'RtlIsValidIndexHandle', 'RtlLargeIntegerAdd',
        +            'RtlLargeIntegerArithmeticShift', 'RtlLargeIntegerDivide', 'RtlLargeIntegerNegate',
        +            'RtlLargeIntegerShiftLeft', 'RtlLargeIntegerShiftRight', 'RtlLargeIntegerSubtract',
        +            'RtlLargeIntegerToChar', 'RtlLeaveCriticalSection', 'RtlLengthRequiredSid',
        +            'RtlLengthSecurityDescriptor', 'RtlLengthSid', 'RtlLocalTimeToSystemTime',
        +            'RtlLockHeap', 'RtlLookupAtomInAtomTable', 'RtlLookupElementGenericTable',
        +            'RtlMakeSelfRelativeSD', 'RtlMapGenericMask', 'RtlMoveMemory',
        +            'RtlMultiByteToUnicodeN', 'RtlMultiByteToUnicodeSize', 'RtlNewInstanceSecurityObject',
        +            'RtlNewSecurityGrantedAccess', 'RtlNewSecurityObject', 'RtlNormalizeProcessParams',
        +            'RtlNtStatusToDosError', 'RtlNumberGenericTableElements', 'RtlNumberOfClearBits',
        +            'RtlNumberOfSetBits', 'RtlOemStringToUnicodeSize', 'RtlOemStringToUnicodeString',
        +            'RtlOemToUnicodeN', 'RtlOnMappedStreamEvent', 'RtlOpenCurrentUser',
        +            'RtlPcToFileHeader', 'RtlPinAtomInAtomTable', 'RtlpNtCreateKey',
        +            'RtlpNtEnumerateSubKey', 'RtlpNtMakeTemporaryKey', 'RtlpNtOpenKey',
        +            'RtlpNtQueryValueKey', 'RtlpNtSetValueKey', 'RtlPrefixString',
        +            'RtlPrefixUnicodeString', 'RtlPropertySetNameToGuid', 'RtlProtectHeap',
        +            'RtlpUnWaitCriticalSection', 'RtlpWaitForCriticalSection', 'RtlQueryAtomInAtomTable',
        +            'RtlQueryEnvironmentVariable_U', 'RtlQueryInformationAcl',
        +            'RtlQueryProcessBackTraceInformation', 'RtlQueryProcessDebugInformation',
        +            'RtlQueryProcessHeapInformation', 'RtlQueryProcessLockInformation',
        +            'RtlQueryProperties', 'RtlQueryPropertyNames', 'RtlQueryPropertySet',
        +            'RtlQueryRegistryValues', 'RtlQuerySecurityObject', 'RtlQueryTagHeap',
        +            'RtlQueryTimeZoneInformation', 'RtlRaiseException', 'RtlRaiseStatus', 'RtlRandom',
        +            'RtlReAllocateHeap', 'RtlRealPredecessor', 'RtlRealSuccessor', 'RtlReleasePebLock',
        +            'RtlReleaseResource', 'RtlRemoteCall', 'RtlResetRtlTranslations',
        +            'RtlRunDecodeUnicodeString', 'RtlRunEncodeUnicodeString', 'RtlSecondsSince1970ToTime',
        +            'RtlSecondsSince1980ToTime', 'RtlSelfRelativeToAbsoluteSD', 'RtlSetAllBits',
        +            'RtlSetAttributesSecurityDescriptor', 'RtlSetBits', 'RtlSetCriticalSectionSpinCount',
        +            'RtlSetCurrentDirectory_U', 'RtlSetCurrentEnvironment', 'RtlSetDaclSecurityDescriptor',
        +            'RtlSetEnvironmentVariable', 'RtlSetGroupSecurityDescriptor', 'RtlSetInformationAcl',
        +            'RtlSetOwnerSecurityDescriptor', 'RtlSetProperties', 'RtlSetPropertyNames',
        +            'RtlSetPropertySetClassId', 'RtlSetSaclSecurityDescriptor', 'RtlSetSecurityObject',
        +            'RtlSetTimeZoneInformation', 'RtlSetUnicodeCallouts', 'RtlSetUserFlagsHeap',
        +            'RtlSetUserValueHeap', 'RtlSizeHeap', 'RtlSplay', 'RtlStartRXact',
        +            'RtlSubAuthorityCountSid', 'RtlSubAuthoritySid', 'RtlSubtreePredecessor',
        +            'RtlSubtreeSuccessor', 'RtlSystemTimeToLocalTime', 'RtlTimeFieldsToTime',
        +            'RtlTimeToElapsedTimeFields', 'RtlTimeToSecondsSince1970', 'RtlTimeToSecondsSince1980',
        +            'RtlTimeToTimeFields', 'RtlTryEnterCriticalSection', 'RtlUnicodeStringToAnsiSize',
        +            'RtlUnicodeStringToAnsiString', 'RtlUnicodeStringToCountedOemString',
        +            'RtlUnicodeStringToInteger', 'RtlUnicodeStringToOemSize',
        +            'RtlUnicodeStringToOemString', 'RtlUnicodeToCustomCPN', 'RtlUnicodeToMultiByteN',
        +            'RtlUnicodeToMultiByteSize', 'RtlUnicodeToOemN', 'RtlUniform', 'RtlUnlockHeap',
        +            'RtlUnwind', 'RtlUpcaseUnicodeChar', 'RtlUpcaseUnicodeString',
        +            'RtlUpcaseUnicodeStringToAnsiString', 'RtlUpcaseUnicodeStringToCountedOemString',
        +            'RtlUpcaseUnicodeStringToOemString', 'RtlUpcaseUnicodeToCustomCPN',
        +            'RtlUpcaseUnicodeToMultiByteN', 'RtlUpcaseUnicodeToOemN', 'RtlUpperChar',
        +            'RtlUpperString', 'RtlUsageHeap', 'RtlValidAcl', 'RtlValidateHeap',
        +            'RtlValidateProcessHeaps', 'RtlValidSecurityDescriptor', 'RtlValidSid', 'RtlWalkHeap',
        +            'RtlWriteRegistryValue', 'RtlxAnsiStringToUnicodeSize', 'RtlxOemStringToUnicodeSize',
        +            'RtlxUnicodeStringToAnsiSize', 'RtlxUnicodeStringToOemSize', 'RtlZeroHeap',
        +            'RtlZeroMemory',
        +
        +            'NtCancelTimer', 'ZwCancelTimer', 'NtCreateTimer', 'ZwCreateTimer', 'NtGetTickCount',
        +            'ZwGetTickCount', 'NtOpenTimer', 'ZwOpenTimer', 'NtQueryPerformanceCounter',
        +            'ZwQueryPerformanceCounter', 'NtQuerySystemTime', 'ZwQuerySystemTime', 'NtQueryTimer',
        +            'ZwQueryTimer', 'NtQueryTimerResolution', 'ZwQueryTimerResolution', 'NtSetSystemTime',
        +            'ZwSetSystemTime', 'NtSetTimer', 'ZwSetTimer', 'NtSetTimerResolution',
        +            'ZwSetTimerResolution',
        +
        +            'NtClearEvent', 'ZwClearEvent', 'NtCreateEvent', 'ZwCreateEvent', 'NtCreateEventPair',
        +            'ZwCreateEventPair', 'NtCreateMutant', 'ZwCreateMutant', 'NtCreateSemaphore',
        +            'ZwCreateSemaphore', 'NtOpenEvent', 'ZwOpenEvent', 'NtOpenEventPair',
        +            'ZwOpenEventPair', 'NtOpenMutant', 'ZwOpenMutant', 'NtOpenSemaphore',
        +            'ZwOpenSemaphore', 'NtPulseEvent', 'ZwPulseEvent', 'NtQueryEvent', 'ZwQueryEvent',
        +            'NtQueryMutant', 'ZwQueryMutant', 'NtQuerySemaphore', 'ZwQuerySemaphore',
        +            'NtReleaseMutant', 'ZwReleaseMutant', 'NtReleaseProcessMutant',
        +            'ZwReleaseProcessMutant', 'NtReleaseSemaphore', 'ZwReleaseSemaphore',
        +            'NtReleaseThreadMutant', 'ZwReleaseThreadMutant', 'NtResetEvent', 'ZwResetEvent',
        +            'NtSetEvent', 'ZwSetEvent', 'NtSetHighEventPair', 'ZwSetHighEventPair',
        +            'NtSetHighWaitLowEventPair', 'ZwSetHighWaitLowEventPair', 'NtSetLowEventPair',
        +            'ZwSetLowEventPair', 'NtSetLowWaitHighEventPair', 'ZwSetLowWaitHighEventPair',
        +            'NtSignalAndWaitForSingleObject', 'ZwSignalAndWaitForSingleObject',
        +            'NtWaitForMultipleObjects', 'ZwWaitForMultipleObjects', 'NtWaitForSingleObject',
        +            'ZwWaitForSingleObject', 'NtWaitHighEventPair', 'ZwWaitHighEventPair',
        +            'NtWaitLowEventPair', 'ZwWaitLowEventPair',
        +
        +            'NtClose', 'ZwClose', 'NtCreateDirectoryObject', 'ZwCreateDirectoryObject',
        +            'NtCreateSymbolicLinkObject', 'ZwCreateSymbolicLinkObject',
        +            'NtDuplicateObject', 'ZwDuplicateObject', 'NtMakeTemporaryObject',
        +            'ZwMakeTemporaryObject', 'NtOpenDirectoryObject', 'ZwOpenDirectoryObject',
        +            'NtOpenSymbolicLinkObject', 'ZwOpenSymbolicLinkObject', 'NtQueryDirectoryObject',
        +            'ZwQueryDirectoryObject', 'NtQueryObject', 'ZwQueryObject',
        +            'NtQuerySymbolicLinkObject', 'ZwQuerySymbolicLinkObject', 'NtSetInformationObject',
        +            'ZwSetInformationObject',
        +
        +            'NtContinue', 'ZwContinue', 'NtRaiseException', 'ZwRaiseException',
        +            'NtRaiseHardError', 'ZwRaiseHardError', 'NtSetDefaultHardErrorPort',
        +            'ZwSetDefaultHardErrorPort',
        +
        +            'NtCreateChannel', 'ZwCreateChannel', 'NtListenChannel', 'ZwListenChannel',
        +            'NtOpenChannel', 'ZwOpenChannel', 'NtReplyWaitSendChannel', 'ZwReplyWaitSendChannel',
        +            'NtSendWaitReplyChannel', 'ZwSendWaitReplyChannel', 'NtSetContextChannel',
        +            'ZwSetContextChannel',
        +
        +            'NtCreateKey', 'ZwCreateKey', 'NtDeleteKey', 'ZwDeleteKey', 'NtDeleteValueKey',
        +            'ZwDeleteValueKey', 'NtEnumerateKey', 'ZwEnumerateKey', 'NtEnumerateValueKey',
        +            'ZwEnumerateValueKey', 'NtFlushKey', 'ZwFlushKey', 'NtInitializeRegistry',
        +            'ZwInitializeRegistry', 'NtLoadKey', 'ZwLoadKey', 'NtLoadKey2', 'ZwLoadKey2',
        +            'NtNotifyChangeKey', 'ZwNotifyChangeKey', 'NtOpenKey', 'ZwOpenKey', 'NtQueryKey',
        +            'ZwQueryKey', 'NtQueryMultipleValueKey', 'ZwQueryMultipleValueKey',
        +            'NtQueryMultiplValueKey', 'ZwQueryMultiplValueKey', 'NtQueryValueKey',
        +            'ZwQueryValueKey', 'NtReplaceKey', 'ZwReplaceKey', 'NtRestoreKey', 'ZwRestoreKey',
        +            'NtSaveKey', 'ZwSaveKey', 'NtSetInformationKey', 'ZwSetInformationKey',
        +            'NtSetValueKey', 'ZwSetValueKey', 'NtUnloadKey', 'ZwUnloadKey',
        +
        +            'NtCreateMailslotFile', 'ZwCreateMailslotFile', 'NtCreateNamedPipeFile',
        +            'ZwCreateNamedPipeFile', 'NtCreatePagingFile', 'ZwCreatePagingFile',
        +
        +            'NtCreateProfile', 'ZwCreateProfile', 'NtQueryIntervalProfile',
        +            'ZwQueryIntervalProfile', 'NtRegisterThreadTerminatePort',
        +            'ZwRegisterThreadTerminatePort', 'NtSetIntervalProfile', 'ZwSetIntervalProfile',
        +            'NtStartProfile', 'ZwStartProfile', 'NtStopProfile', 'ZwStopProfile',
        +            'NtSystemDebugControl', 'ZwSystemDebugControl',
        +
        +            'NtEnumerateBus', 'ZwEnumerateBus', 'NtFlushInstructionCache',
        +            'ZwFlushInstructionCache', 'NtFlushWriteBuffer', 'ZwFlushWriteBuffer',
        +            'NtSetLdtEntries', 'ZwSetLdtEntries',
        +
        +            'NtGetPlugPlayEvent', 'ZwGetPlugPlayEvent', 'NtPlugPlayControl', 'ZwPlugPlayControl',
        +
        +            'NtInitiatePowerAction', 'ZwInitiatePowerAction', 'NtPowerInformation',
        +            'ZwPowerInformation', 'NtRequestWakeupLatency', 'ZwRequestWakeupLatency',
        +            'NtSetSystemPowerState', 'ZwSetSystemPowerState', 'NtSetThreadExecutionState',
        +            'ZwSetThreadExecutionState',
        +
        +            'NtLoadDriver', 'ZwLoadDriver', 'NtRegisterNewDevice', 'ZwRegisterNewDevice',
        +            'NtUnloadDriver', 'ZwUnloadDriver',
        +
        +            'NtQueryDefaultLocale', 'ZwQueryDefaultLocale', 'NtQueryDefaultUILanguage',
        +            'ZwQueryDefaultUILanguage', 'NtQuerySystemEnvironmentValue',
        +            'ZwQuerySystemEnvironmentValue', 'NtSetDefaultLocale', 'ZwSetDefaultLocale',
        +            'NtSetDefaultUILanguage', 'ZwSetDefaultUILanguage', 'NtSetSystemEnvironmentValue',
        +            'ZwSetSystemEnvironmentValue',
        +
        +            'DbgBreakPoint', 'DbgPrint', 'DbgPrompt', 'DbgSsHandleKmApiMsg', 'DbgSsInitialize',
        +            'DbgUiConnectToDbg', 'DbgUiContinue', 'DbgUiWaitStateChange', 'DbgUserBreakPoint',
        +            'KiRaiseUserExceptionDispatcher', 'KiUserApcDispatcher', 'KiUserCallbackDispatcher',
        +            'KiUserExceptionDispatcher', 'NlsAnsiCodePage', 'NlsMbCodePageTag',
        +            'NlsMbOemCodePageTag', 'NtAllocateLocallyUniqueId', 'ZwAllocateLocallyUniqueId',
        +            'NtAllocateUuids', 'ZwAllocateUuids', 'NtCallbackReturn', 'ZwCallbackReturn',
        +            'NtDisplayString', 'ZwDisplayString', 'NtQueryOleDirectoryFile',
        +            'ZwQueryOleDirectoryFile', 'NtQuerySection', 'ZwQuerySection',
        +            'NtQuerySystemInformation', 'ZwQuerySystemInformation', 'NtSetSystemInformation',
        +            'ZwSetSystemInformation', 'NtShutdownSystem', 'ZwShutdownSystem', 'NtVdmControl',
        +            'ZwVdmControl', 'NtW32Call', 'ZwW32Call', 'PfxFindPrefix', 'PfxInitialize',
        +            'PfxInsertPrefix', 'PfxRemovePrefix', 'PropertyLengthAsVariant', 'RestoreEm87Context',
        +            'SaveEm87Context'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array('(', ')', '{', '}', '[', ']'),
        +        1 => array('<', '>','='),
        +        2 => array('+', '-', '*', '/', '%'),
        +        3 => array('!', '^', '&', '|'),
        +        4 => array('?', ':', ';')
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000ff;',
        +            2 => 'color: #0000ff;',
        +            3 => 'color: #0000dd;',
        +            4 => 'color: #0000ff;',
        +            5 => 'color: #4000dd;',
        +            6 => 'color: #4000dd;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666;',
        +            2 => 'color: #339900;',
        +            3 => 'color: #FF0000;',
        +            4 => 'color: #FF0000;',
        +            'MULTI' => 'color: #ff0000; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            1 => 'color: #000099; font-weight: bold;',
        +            2 => 'color: #660099; font-weight: bold;',
        +            3 => 'color: #660099; font-weight: bold;',
        +            4 => 'color: #660099; font-weight: bold;',
        +            5 => 'color: #006699; font-weight: bold;',
        +            'HARD' => '',
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #008000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #FF0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #0000dd;',
        +            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',
        +            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
        +            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #007788;',
        +            2 => 'color: #007788;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #008000;',
        +            1 => 'color: #000080;',
        +            2 => 'color: #000040;',
        +            3 => 'color: #000040;',
        +            4 => 'color: #008080;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => 'http://www.google.com/search?q={FNAMEL}+msdn.microsoft.com',
        +        6 => 'http://www.google.com/search?q={FNAMEL}+msdn.microsoft.com'
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.',
        +        2 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => "(? "(?![a-zA-Z0-9_\|%\\-])"
        +        )
        +    )
        +);
        diff --git a/includes/geshi/cpp.php b/includes/geshi/cpp.php
        new file mode 100644
        index 0000000..89b69e9
        --- /dev/null
        +++ b/includes/geshi/cpp.php
        @@ -0,0 +1,250 @@
        + 'C++',
        +    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        //Multiline-continued single-line comments
        +        1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m',
        +        //Multiline-continued preprocessor define
        +        2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m',
        +        //C++ 11 string literal extensions
        +        3 => '/(?:L|u8?|U)(?=")/',
        +        //C++ 11 string literal extensions (raw)
        +        4 => '/R"([^()\s\\\\]*)\((?:(?!\)\\1").)*\)\\1"/ms'
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        //Simple Single Char Escapes
        +        1 => "#\\\\[abfnrtv\\\'\"?\n]#",
        +        //Hexadecimal Char Specs
        +        2 => "#\\\\x[\da-fA-F]{2}#",
        +        //Hexadecimal Char Specs
        +        3 => "#\\\\u[\da-fA-F]{4}#",
        +        //Hexadecimal Char Specs
        +        4 => "#\\\\U[\da-fA-F]{8}#",
        +        //Octal Char Specs
        +        5 => "#\\\\[0-7]{1,3}#"
        +        ),
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |
        +        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
        +        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'break', 'case', 'continue', 'default', 'do', 'else', 'for', 'goto', 'if', 'return',
        +            'switch', 'throw', 'while'
        +            ),
        +        2 => array(
        +            'NULL', 'false', 'true', 'enum', 'errno', 'EDOM',
        +            'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',
        +            'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',
        +            'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',
        +            'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',
        +            'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',
        +            'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',
        +            'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',
        +            'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',
        +            'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam',
        +            'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',
        +            'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC',
        +            'virtual', 'public', 'private', 'protected', 'template', 'using', 'namespace',
        +            'try', 'catch', 'inline', 'dynamic_cast', 'const_cast', 'reinterpret_cast',
        +            'static_cast', 'explicit', 'friend', 'typename', 'typeid', 'class', 'nullptr',
        +            'decltype', 'override', 'final', 'noexcept', 'alignas', 'alignof', 'noreturn',
        +            'constexpr', 'and', 'and_eq', 'asm', 'bitand', 'bitor', 'thread_local',
        +            'static_assert', 'compl', 'or', 'or_eq', 'xor', 'xor_eq', 'not', 'not_eq'
        +            ),
        +        3 => array(
        +            'cin', 'cerr', 'clog', 'cout', 'delete', 'new', 'this', 'export',
        +            'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
        +            'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',
        +            'ispunct', 'isspace', 'isupper', 'isxdigit', 'tolower', 'toupper',
        +            'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',
        +            'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',
        +            'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp',
        +            'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',
        +            'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',
        +            'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',
        +            'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',
        +            'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',
        +            'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',
        +            'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',
        +            'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',
        +            'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',
        +            'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',
        +            'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',
        +            'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',
        +            'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
        +            ),
        +        4 => array(
        +            'auto', 'bool', 'char', 'char16_t', 'char32_t', 'const', 'double', 'float',
        +            'int', 'long', 'longint','register', 'short', 'shortint', 'signed',
        +            'static', 'struct', 'typedef', 'union', 'unsigned', 'void', 'volatile',
        +            'extern', 'jmp_buf','signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t',
        +            'FILE', 'fpos_t', 'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm', 'wchar_t',
        +            'mutable',
        +
        +            'int8', 'int16', 'int32', 'int64',
        +            'uint8', 'uint16', 'uint32', 'uint64',
        +
        +            'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t',
        +            'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',
        +
        +            'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t',
        +            'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t',
        +
        +            'int8_t', 'int16_t', 'int32_t', 'int64_t',
        +            'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t',
        +
        +            'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array('(', ')', '{', '}', '[', ']'),
        +        1 => array('<', '>','='),
        +        2 => array('+', '-', '*', '/', '%'),
        +        3 => array('!', '^', '&', '|'),
        +        4 => array('?', ':', ';')
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000ff;',
        +            2 => 'color: #0000ff;',
        +            3 => 'color: #0000dd;',
        +            4 => 'color: #0000ff;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666;',
        +            2 => 'color: #339900;',
        +            3 => 'color: #FF0000;',
        +            4 => 'color: #FF0000;',
        +            'MULTI' => 'color: #ff0000; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            1 => 'color: #000099; font-weight: bold;',
        +            2 => 'color: #660099; font-weight: bold;',
        +            3 => 'color: #660099; font-weight: bold;',
        +            4 => 'color: #660099; font-weight: bold;',
        +            5 => 'color: #006699; font-weight: bold;',
        +            'HARD' => '',
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #008000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #FF0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #0000dd;',
        +            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',
        +            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
        +            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #007788;',
        +            2 => 'color: #007788;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #008000;',
        +            1 => 'color: #000080;',
        +            2 => 'color: #000040;',
        +            3 => 'color: #000040;',
        +            4 => 'color: #008080;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.',
        +        2 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => "(? "(?![a-zA-Z0-9_\|%\\-])"
        +        )
        +    )
        +);
        diff --git a/includes/geshi/csharp.php b/includes/geshi/csharp.php
        new file mode 100644
        index 0000000..91c05a7
        --- /dev/null
        +++ b/includes/geshi/csharp.php
        @@ -0,0 +1,257 @@
        + 'C#',
        +    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        //Using and Namespace directives (basic support)
        +        //Please note that the alias syntax for using is not supported
        +        3 => '/(?:(?<=using[\\n\\s])|(?<=namespace[\\n\\s]))[\\n\\s]*([a-zA-Z0-9_]+\\.)*[a-zA-Z0-9_]+[\n\s]*(?=[;=])/i'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'HARDQUOTE' => array('@"', '"'),
        +    'HARDESCAPE' => array('"'),
        +    'HARDCHAR' => '"',
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'abstract', 'add', 'as', 'async', 'await', 'base',
        +            'break', 'by', 'case', 'catch', 'const', 'continue',
        +            'default', 'do', 'else', 'event', 'explicit', 'extern', 'false',
        +            'finally', 'fixed', 'for', 'foreach', 'from', 'get', 'goto', 'group', 'if',
        +            'implicit', 'in', 'into', 'internal', 'join', 'lock', 'namespace', 'null',
        +            'operator', 'out', 'override', 'params', 'partial', 'private',
        +            'protected', 'public', 'readonly', 'remove', 'ref', 'return', 'sealed',
        +            'select', 'set', 'stackalloc', 'static', 'switch', 'this', 'throw', 'true',
        +            'try', 'unsafe', 'using', 'var', 'value', 'virtual', 'volatile', 'where',
        +            'while', 'yield'
        +            ),
        +        2 => array(
        +            '#elif', '#endif', '#endregion', '#else', '#error', '#define', '#if',
        +            '#line', '#pragma', '#region', '#undef', '#warning'
        +            ),
        +        3 => array(
        +            'checked', 'is', 'new', 'nameof', 'sizeof', 'typeof', 'unchecked'
        +            ),
        +        4 => array(
        +            'bool', 'byte', 'char', 'class', 'decimal', 'delegate', 'double',
        +            'dynamic', 'enum', 'float', 'int', 'interface', 'long', 'object', 'sbyte',
        +            'short', 'string', 'struct', 'uint', 'ulong', 'ushort', 'void'
        +            ),
        +        5 => array(
        +            'Microsoft.Win32',
        +            'System',
        +            'System.CodeDOM',
        +            'System.CodeDOM.Compiler',
        +            'System.Collections',
        +            'System.Collections.Bases',
        +            'System.ComponentModel',
        +            'System.ComponentModel.Design',
        +            'System.ComponentModel.Design.CodeModel',
        +            'System.Configuration',
        +            'System.Configuration.Assemblies',
        +            'System.Configuration.Core',
        +            'System.Configuration.Install',
        +            'System.Configuration.Interceptors',
        +            'System.Configuration.Schema',
        +            'System.Configuration.Web',
        +            'System.Core',
        +            'System.Data',
        +            'System.Data.ADO',
        +            'System.Data.Design',
        +            'System.Data.Internal',
        +            'System.Data.SQL',
        +            'System.Data.SQLTypes',
        +            'System.Data.XML',
        +            'System.Data.XML.DOM',
        +            'System.Data.XML.XPath',
        +            'System.Data.XML.XSLT',
        +            'System.Diagnostics',
        +            'System.Diagnostics.SymbolStore',
        +            'System.DirectoryServices',
        +            'System.Drawing',
        +            'System.Drawing.Design',
        +            'System.Drawing.Drawing2D',
        +            'System.Drawing.Imaging',
        +            'System.Drawing.Printing',
        +            'System.Drawing.Text',
        +            'System.Globalization',
        +            'System.IO',
        +            'System.IO.IsolatedStorage',
        +            'System.Messaging',
        +            'System.Net',
        +            'System.Net.Sockets',
        +            'System.NewXml',
        +            'System.NewXml.XPath',
        +            'System.NewXml.Xsl',
        +            'System.Reflection',
        +            'System.Reflection.Emit',
        +            'System.Resources',
        +            'System.Runtime.InteropServices',
        +            'System.Runtime.InteropServices.Expando',
        +            'System.Runtime.Remoting',
        +            'System.Runtime.Serialization',
        +            'System.Runtime.Serialization.Formatters',
        +            'System.Runtime.Serialization.Formatters.Binary',
        +            'System.Security',
        +            'System.Security.Cryptography',
        +            'System.Security.Cryptography.X509Certificates',
        +            'System.Security.Permissions',
        +            'System.Security.Policy',
        +            'System.Security.Principal',
        +            'System.ServiceProcess',
        +            'System.Text',
        +            'System.Text.RegularExpressions',
        +            'System.Threading',
        +            'System.Timers',
        +            'System.Web',
        +            'System.Web.Caching',
        +            'System.Web.Configuration',
        +            'System.Web.Security',
        +            'System.Web.Services',
        +            'System.Web.Services.Description',
        +            'System.Web.Services.Discovery',
        +            'System.Web.Services.Protocols',
        +            'System.Web.UI',
        +            'System.Web.UI.Design',
        +            'System.Web.UI.Design.WebControls',
        +            'System.Web.UI.Design.WebControls.ListControls',
        +            'System.Web.UI.HtmlControls',
        +            'System.Web.UI.WebControls',
        +            'System.WinForms',
        +            'System.WinForms.ComponentModel',
        +            'System.WinForms.Design',
        +            'System.Xml',
        +            'System.Xml.Serialization',
        +            'System.Xml.Serialization.Code',
        +            'System.Xml.Serialization.Schema'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', ':', ';',
        +        '(', ')', '{', '}', '[', ']', '|', '.'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0600FF; font-weight: bold;',
        +            2 => 'color: #FF8000; font-weight: bold;',
        +            3 => 'color: #008000;',
        +            4 => 'color: #6666cc; font-weight: bold;',
        +            5 => 'color: #000000;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008080; font-style: italic;',
        +            2 => 'color: #008080;',
        +            3 => 'color: #008080;',
        +            'MULTI' => 'color: #008080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #008080; font-weight: bold;',
        +            'HARD' => 'color: #008080; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #008000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #666666;',
        +            'HARD' => 'color: #666666;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #FF0000;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #0000FF;',
        +            2 => 'color: #0000FF;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #008000;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => 'http://www.google.com/search?q={FNAMEL}+msdn.microsoft.com',
        +        4 => '',
        +        5 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.',
        +        2 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => "(?|^])",
        +            'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_%\\-])"
        +        )
        +    )
        +);
        diff --git a/includes/geshi/css.php b/includes/geshi/css.php
        new file mode 100644
        index 0000000..dbde058
        --- /dev/null
        +++ b/includes/geshi/css.php
        @@ -0,0 +1,944 @@
        + 'CSS',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        2 => "/(?<=\\()\\s*(?:(?:[a-z0-9]+?:\\/\\/)?[a-z0-9_\\-\\.\\/:]+?)?[a-z]+?\\.[a-z]+?(\\?[^\)]+?)?\\s*?(?=\\))/i"
        +    ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"', "'"),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        //Simple Single Char Escapes
        +        //1 => "#\\\\[nfrtv\$\"\n\\\\]#i",
        +        //Hexadecimal Char Specs
        +        2 => "#\\\\[\da-fA-F]{1,6}\s?#i",
        +        //Unicode Char Specs
        +        //3 => "#\\\\u[\da-fA-F]{1,8}#i",
        +    ),
        +    'KEYWORDS' => array(
        +        // properties
        +        1 => array(
        +            'align-content',
        +            'align-items',
        +            'align-self',
        +            'all',
        +            'animation',
        +            'animation-delay',
        +            'animation-direction',
        +            'animation-duration',
        +            'animation-fill-mode',
        +            'animation-iteration-count',
        +            'animation-name',
        +            'animation-play-state',
        +            'animation-timing-function',
        +            'backface-visibility',
        +            'background',
        +            'background-attachment',
        +            'background-blend-mode',
        +            'background-clip',
        +            'background-color',
        +            'background-image',
        +            'background-origin',
        +            'background-position',
        +            'background-repeat',
        +            'background-size',
        +            'border',
        +            'border-bottom',
        +            'border-bottom-color',
        +            'border-bottom-left-radius',
        +            'border-bottom-right-radius',
        +            'border-bottom-style',
        +            'border-bottom-width',
        +            'border-collapse',
        +            'border-color',
        +            'border-image',
        +            'border-image-outset',
        +            'border-image-repeat',
        +            'border-image-slice',
        +            'border-image-source',
        +            'border-image-width',
        +            'border-left',
        +            'border-left-color',
        +            'border-left-style',
        +            'border-left-width',
        +            'border-radius',
        +            'border-right',
        +            'border-right-color',
        +            'border-right-style',
        +            'border-right-width',
        +            'border-spacing',
        +            'border-style',
        +            'border-top',
        +            'border-top-color',
        +            'border-top-left-radius',
        +            'border-top-right-radius',
        +            'border-top-style',
        +            'border-top-width',
        +            'border-width',
        +            'bottom',
        +            'box-decoration-break',
        +            'box-shadow',
        +            'box-sizing',
        +            'break-after',
        +            'break-before',
        +            'break-inside',
        +            'caption-side',
        +            'clear',
        +            'clip',
        +            'clip-path',
        +            'color',
        +            'columns',
        +            'column-count',
        +            'column-fill',
        +            'column-gap',
        +            'column-rule',
        +            'column-rule-color',
        +            'column-rule-style',
        +            'column-rule-width',
        +            'column-span',
        +            'column-width',
        +            'content',
        +            'counter-increment',
        +            'counter-reset',
        +            'cursor',
        +            'direction',
        +            'display',
        +            'empty-cells',
        +            'fill',
        +            'fill-rule',
        +            'fill-opacity',
        +            'filter',
        +            'flex',
        +            'flex-basis',
        +            'flex-direction',
        +            'flex-flow',
        +            'flex-grow',
        +            'flex-shrink',
        +            'flex-wrap',
        +            'float',
        +            'font',
        +            'font-family',
        +            'font-feature-settings',
        +            'font-kerning',
        +            'font-language-override',
        +            'font-size',
        +            'font-size-adjust',
        +            'font-stretch',
        +            'font-style',
        +            'font-synthesis',
        +            'font-variant',
        +            'font-variant-alternates',
        +            'font-variant-caps',
        +            'font-variant-east-asian',
        +            'font-variant-ligatures',
        +            'font-variant-numeric',
        +            'font-variant-position',
        +            'font-weight',
        +            'grid',
        +            'grid-area',
        +            'grid-auto-columns',
        +            'grid-auto-flow',
        +            'grid-auto-position',
        +            'grid-auto-rows',
        +            'grid-column',
        +            'grid-column-start',
        +            'grid-column-end',
        +            'grid-row',
        +            'grid-row-start',
        +            'grid-row-end',
        +            'grid-template',
        +            'grid-template-areas',
        +            'grid-template-rows',
        +            'grid-template-columns',
        +            'height',
        +            'hyphens',
        +            'icon',
        +            'image-rendering',
        +            'image-resolution',
        +            'image-orientation',
        +            'ime-mode',
        +            'justify-content',
        +            'left',
        +            'letter-spacing',
        +            'line-break',
        +            'line-height',
        +            'list-style',
        +            'list-style-image',
        +            'list-style-position',
        +            'list-style-type',
        +            'margin',
        +            'margin-bottom',
        +            'margin-left',
        +            'margin-right',
        +            'margin-top',
        +            'marks',
        +            'mask',
        +            'mask-type',
        +            'max-height',
        +            'max-width',
        +            'min-height',
        +            'min-width',
        +            'mix-blend-mode',
        +            'nav-down',
        +            'nav-index',
        +            'nav-left',
        +            'nav-right',
        +            'nav-up',
        +            'object-fit',
        +            'object-position',
        +            'opacity',
        +            'order',
        +            'orphans',
        +            'outline',
        +            'outline-color',
        +            'outline-offset',
        +            'outline-style',
        +            'outline-width',
        +            'overflow',
        +            'overflow-wrap',
        +            'overflow-x',
        +            'overflow-y',
        +            'overflow-clip-box',
        +            'padding',
        +            'padding-bottom',
        +            'padding-left',
        +            'padding-right',
        +            'padding-top',
        +            'page-break-after',
        +            'page-break-before',
        +            'page-break-inside',
        +            'perspective',
        +            'perspective-origin',
        +            'pointer-events',
        +            'position',
        +            'quotes',
        +            'resize',
        +            'right',
        +            'shape-image-threshold',
        +            'shape-margin',
        +            'shape-outside',
        +            'stroke',
        +            'stroke-width',
        +            'stroke-linecap',
        +            'stroke-linejoin',
        +            'stroke-miterlimit',
        +            'stroke-dasharray',
        +            'stroke-dashoffset',
        +            'table-layout',
        +            'tab-size',
        +            'text-align',
        +            'text-align-last',
        +            'text-combine-horizontal',
        +            'text-decoration',
        +            'text-decoration-color',
        +            'text-decoration-line',
        +            'text-decoration-style',
        +            'text-indent',
        +            'text-orientation',
        +            'text-overflow',
        +            'text-rendering',
        +            'text-shadow',
        +            'text-transform',
        +            'text-underline-position',
        +            'top',
        +            'touch-action',
        +            'transform',
        +            'transform-origin',
        +            'transform-style',
        +            'transition',
        +            'transition-delay',
        +            'transition-duration',
        +            'transition-property',
        +            'transition-timing-function',
        +            'unicode-bidi',
        +            'unicode-range',
        +            'vertical-align',
        +            'visibility',
        +            'white-space',
        +            'widows',
        +            'width',
        +            'will-change',
        +            'word-break',
        +            'word-spacing',
        +            'word-wrap',
        +            'writing-mode',
        +            'z-index'
        +        ),
        +        // value
        +        2 => array(
        +            'absolute',
        +            'activeborder',
        +            'activecaption',
        +            'after-white-space',
        +            'ahead',
        +            'alternate',
        +            'always',
        +            'appworkspace',
        +            'armenian',
        +            'auto',
        +            'avoid',
        +            'background',
        +            'backwards',
        +            'baseline',
        +            'below',
        +            'bevel',
        +            'bidi-override',
        +            'blink',
        +            'block',
        +            'block clear',
        +            'block width',
        +            'block-axis',
        +            'bold',
        +            'bolder',
        +            'border',
        +            'border-box',
        +            'both',
        +            'bottom',
        +            'break-word',
        +            'butt',
        +            'button',
        +            'button-bevel',
        +            'buttonface',
        +            'buttonhighlight',
        +            'buttonshadow',
        +            'buttontext',
        +            'capitalize',
        +            'caption',
        +            'captiontext',
        +            'caret',
        +            'center',
        +            'checkbox',
        +            'circle',
        +            'cjk-ideographic',
        +            'clip',
        +            'close-quote',
        +            'collapse',
        +            'compact',
        +            'condensed',
        +            'content',
        +            'content-box',
        +            'continuous',
        +            'crop',
        +            'cross',
        +            'crosshair',
        +            'currentColor',
        +            'cursive',
        +            'dashed',
        +            'decimal',
        +            'decimal-leading-zero',
        +            'default',
        +            'disc',
        +            'discard',
        +            'dot-dash',
        +            'dot-dot-dash',
        +            'dotted',
        +            'double',
        +            'down',
        +            'e-resize',
        +            'element',
        +            'ellipsis',
        +            'embed',
        +            'end',
        +            'evenodd',
        +            'expanded',
        +            'extra-condensed',
        +            'extra-expanded',
        +            'fantasy',
        +            'fast',
        +            'fixed',
        +            'forwards',
        +            'georgian',
        +            'graytext',
        +            'groove',
        +            'hand',
        +            'hebrew',
        +            'help',
        +            'hidden',
        +            'hide',
        +            'higher',
        +            'highlight',
        +            'highlighttext',
        +            'hiragana',
        +            'hiragana-iroha',
        +            'horizontal',
        +            'icon',
        +            'ignore',
        +            'inactiveborder',
        +            'inactivecaption',
        +            'inactivecaptiontext',
        +            'infinite',
        +            'infobackground',
        +            'infotext',
        +            'inherit',
        +            'initial',
        +            'inline',
        +            'inline-axis',
        +            'inline-block',
        +            'inline-table',
        +            'inset',
        +            'inside',
        +            'intrinsic',
        +            'invert',
        +            'italic',
        +            'justify',
        +            'katakana',
        +            'katakana-iroha',
        +            'landscape',
        +            'large',
        +            'larger',
        +            'left',
        +            'level',
        +            'lighter',
        +            'line-through',
        +            'list-item',
        +            'listbox',
        +            'listitem',
        +            'logical',
        +            'loud',
        +            'lower',
        +            'lower-alpha',
        +            'lower-greek',
        +            'lower-latin',
        +            'lower-roman',
        +            'lowercase',
        +            'ltr',
        +            'marker',
        +            'match',
        +            'medium',
        +            'menu',
        +            'menulist',
        +            'menulist-button',
        +            'menulist-text',
        +            'menulist-textfield',
        +            'menutext',
        +            'message-box',
        +            'middle',
        +            'min-intrinsic',
        +            'miter',
        +            'mix',
        +            'monospace',
        +            'move',
        +            'multiple',
        +            'n-resize',
        +            'narrower',
        +            'ne-resize',
        +            'no-close',
        +            'no-close-quote',
        +            'no-open-quote',
        +            'no-repeat',
        +            'none',
        +            'nonzero',
        +            'normal',
        +            'nowrap',
        +            'nw-resize',
        +            'oblique',
        +            'once',
        +            'open-quote',
        +            'outset',
        +            'outside',
        +            'overline',
        +            'padding',
        +            'pointer',
        +            'portrait',
        +            'pre',
        +            'pre-line',
        +            'pre-wrap',
        +            'push-button',
        +            'radio',
        +            'read-only',
        +            'read-write',
        +            'read-write-plaintext-only',
        +            'relative',
        +            'repeat',
        +            'repeat-x',
        +            'repeat-y',
        +            'reverse',
        +            'ridge',
        +            'right',
        +            'round',
        +            'rtl',
        +            'run-in',
        +            's-resize',
        +            'sans-serif',
        +            'scroll',
        +            'scrollbar',
        +            'scrollbarbutton-down',
        +            'scrollbarbutton-left',
        +            'scrollbarbutton-right',
        +            'scrollbarbutton-up',
        +            'scrollbargripper-horizontal',
        +            'scrollbargripper-vertical',
        +            'scrollbarthumb-horizontal',
        +            'scrollbarthumb-vertical',
        +            'scrollbartrack-horizontal',
        +            'scrollbartrack-vertical',
        +            'se-resize',
        +            'searchfield',
        +            'searchfield-close',
        +            'searchfield-results',
        +            'semi-condensed',
        +            'semi-expanded',
        +            'separate',
        +            'serif',
        +            'show',
        +            'single',
        +            'skip-white-space',
        +            'slide',
        +            'slider-horizontal',
        +            'slider-vertical',
        +            'sliderthumb-horizontal',
        +            'sliderthumb-vertical',
        +            'slow',
        +            'small',
        +            'small-caps',
        +            'small-caption',
        +            'smaller',
        +            'solid',
        +            'space',
        +            'square',
        +            'square-button',
        +            'start',
        +            'static',
        +            'status-bar',
        +            'stretch',
        +            'sub',
        +            'super',
        +            'sw-resize',
        +            'table',
        +            'table-caption',
        +            'table-cell',
        +            'table-column',
        +            'table-column-group',
        +            'table-footer-group',
        +            'table-header-group',
        +            'table-row',
        +            'table-row-group',
        +            'text',
        +            'text-bottom',
        +            'text-top',
        +            'textfield',
        +            'thick',
        +            'thin',
        +            'threeddarkshadow',
        +            'threedface',
        +            'threedhighlight',
        +            'threedlightshadow',
        +            'threedshadow',
        +            'top',
        +            'ultra-condensed',
        +            'ultra-expanded',
        +            'underline',
        +            'unfurl',
        +            'up',
        +            'upper-alpha',
        +            'upper-latin',
        +            'upper-roman',
        +            'uppercase',
        +            'vertical',
        +            'visible',
        +            'visual',
        +            'w-resize',
        +            'wait',
        +            'wave',
        +            'wider',
        +            'window',
        +            'windowframe',
        +            'windowtext',
        +            'x-large',
        +            'x-small',
        +            'xx-large',
        +            'xx-small'
        +        ),
        +        // function xxx()
        +        3 => array(
        +            'attr',
        +            'calc',
        +            'contrast',
        +            'cross-fade',
        +            'cubic-bezier',
        +            'cycle',
        +            'device-cmyk',
        +            'drop-shadow',
        +            'ellipse',
        +            'hsl',
        +            'hsla',
        +            'hwb',
        +            'image',
        +            'matrix',
        +            'matrix3d',
        +            'minmax',
        +            'grayscale',
        +            'perspective',
        +            'polygon',
        +            'radial-gradient',
        +            'translate',
        +            'translatex',
        +            'translatey',
        +            'translatez',
        +            'translate3d',
        +            'skew',
        +            'skewx',
        +            'skewy',
        +            'saturate',
        +            'sepia',
        +            'scale',
        +            'scalex',
        +            'scaley',
        +            'scalez',
        +            'scale3d',
        +            'steps',
        +            'rect',
        +            'repeating-linear-gradient',
        +            'repeating-radial-gradient',
        +            'rgb',
        +            'rgba',
        +            'rotate',
        +            'rotatex',
        +            'rotatey',
        +            'rotatez',
        +            'rotate3d',
        +            'url',
        +            'var'
        +        ),
        +        // colors
        +        4 => array(
        +            'aliceblue',
        +            'antiquewhite',
        +            'aqua',
        +            'aquamarine',
        +            'azure',
        +            'beige',
        +            'bisque',
        +            'black',
        +            'blanchedalmond',
        +            'blue',
        +            'blueviolet',
        +            'brown',
        +            'burlywood',
        +            'cadetblue',
        +            'chartreuse',
        +            'chocolate',
        +            'coral',
        +            'cornflowerblue',
        +            'cornsilk',
        +            'crimson',
        +            'cyan',
        +            'darkblue',
        +            'darkcyan',
        +            'darkgoldenrod',
        +            'darkgray',
        +            'darkgreen',
        +            'darkgrey',
        +            'darkkhaki',
        +            'darkmagenta',
        +            'darkolivegreen',
        +            'darkorange',
        +            'darkorchid',
        +            'darkred',
        +            'darksalmon',
        +            'darkseagreen',
        +            'darkslateblue',
        +            'darkslategray',
        +            'darkslategrey',
        +            'darkturquoise',
        +            'darkviolet',
        +            'deeppink',
        +            'deepskyblue',
        +            'dimgray',
        +            'dimgrey',
        +            'dodgerblue',
        +            'firebrick',
        +            'floralwhite',
        +            'forestgreen',
        +            'fuchsia',
        +            'gainsboro',
        +            'ghostwhite',
        +            'gold',
        +            'goldenrod',
        +            'gray',
        +            'green',
        +            'greenyellow',
        +            'grey',
        +            'honeydew',
        +            'hotpink',
        +            'indianred',
        +            'indigo',
        +            'ivory',
        +            'khaki',
        +            'lavender',
        +            'lavenderblush',
        +            'lawngreen',
        +            'lemonchiffon',
        +            'lightblue',
        +            'lightcoral',
        +            'lightcyan',
        +            'lightgoldenrodyellow',
        +            'lightgray',
        +            'lightgreen',
        +            'lightgrey',
        +            'lightpink',
        +            'lightsalmon',
        +            'lightseagreen',
        +            'lightskyblue',
        +            'lightslategray',
        +            'lightslategrey',
        +            'lightsteelblue',
        +            'lightyellow',
        +            'lime',
        +            'limegreen',
        +            'linen',
        +            'magenta',
        +            'maroon',
        +            'mediumaquamarine',
        +            'mediumblue',
        +            'mediumorchid',
        +            'mediumpurple',
        +            'mediumseagreen',
        +            'mediumslateblue',
        +            'mediumspringgreen',
        +            'mediumturquoise',
        +            'mediumvioletred',
        +            'midnightblue',
        +            'mintcream',
        +            'mistyrose',
        +            'moccasin',
        +            'navajowhite',
        +            'navy',
        +            'oldlace',
        +            'olive',
        +            'olivedrab',
        +            'orange',
        +            'orangered',
        +            'orchid',
        +            'palegoldenrod',
        +            'palegreen',
        +            'paleturquoise',
        +            'palevioletred',
        +            'papayawhip',
        +            'peachpuff',
        +            'peru',
        +            'pink',
        +            'plum',
        +            'powderblue',
        +            'purple',
        +            'rebeccapurple',
        +            'red',
        +            'rosybrown',
        +            'royalblue',
        +            'saddlebrown',
        +            'salmon',
        +            'sandybrown',
        +            'seagreen',
        +            'seashell',
        +            'sienna',
        +            'silver',
        +            'skyblue',
        +            'slateblue',
        +            'slategray',
        +            'slategrey',
        +            'snow',
        +            'springgreen',
        +            'steelblue',
        +            'tan',
        +            'teal',
        +            'thistle',
        +            'transparent',
        +            'tomato',
        +            'turquoise',
        +            'violet',
        +            'wheat',
        +            'white',
        +            'whitesmoke',
        +            'yellow',
        +            'yellowgreen'
        +        ),
        +        // pseudo class
        +        5 => array(
        +            'active',
        +            'after',
        +            'before',
        +            'checked',
        +            'choices',
        +            'dir',
        +            'disabled',
        +            'empty',
        +            'enabled',
        +            'first',
        +            'first-child',
        +            'first-letter',
        +            'first-line',
        +            'first-of-type',
        +            'focus',
        +            'fullscreen',
        +            'hover',
        +            'indeterminate',
        +            'in-range',
        +            'invalid',
        +            'lang',
        +            'last-child',
        +            'last-of-type',
        +            'link',
        +            'not',
        +            'nth-child',
        +            'nth-last-child',
        +            'nth-last-of-type',
        +            'nth-of-type',
        +            'only-child',
        +            'only-of-type',
        +            'optional',
        +            'out-of-range',
        +            'repeat-index',
        +            'repeat-item',
        +            'required',
        +            'root',
        +            'scope',
        +            'selection',
        +            'target',
        +            'valid',
        +            'value',
        +            'visited'
        +        )
        +    ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', ':', ';',
        +        '>', '+', '*', ',', '^', '='
        +    ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true
        +    ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000000; font-weight: bold;',
        +            2 => 'color: #993333;',
        +            3 => 'color: #9932cc;',
        +            4 => 'color: #dc143c;',
        +            5 => 'color: #F5758F;',
        +        ),
        +        'COMMENTS' => array(
        +            2 => 'color: #ff0000; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +        ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            //1 => 'color: #000099; font-weight: bold;',
        +            2 => 'color: #000099; font-weight: bold;'
        +            //3 => 'color: #000099; font-weight: bold;'
        +        ),
        +        'BRACKETS' => array(
        +            0 => 'color: #00AA00;'
        +        ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +        ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +        ),
        +        'METHODS' => array(),
        +        'SYMBOLS' => array(
        +            0 => 'color: #00AA00;'
        +        ),
        +        'SCRIPT' => array(),
        +        'REGEXPS' => array(
        +            0 => 'color: #cc00cc;',
        +            1 => 'color: #6666ff;',
        +            2 => 'color: #3F84D9; font-weight: bold;',
        +            3 => 'color: #933;',
        +            4 => 'color: #444;'
        +        )
        +    ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => ''
        +    ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(
        +        //DOM Node ID
        +        0 => '\#[a-zA-Z0-9\-_]+(?:\\\\:[a-zA-Z0-9\-_]+)*',
        +        //CSS classname
        +        1 => '\.(?!\d)[a-zA-Z0-9\-_]+(?:\\\\:[a-zA-Z0-9\-_]+)*\b(?=[\{\.#\s,:].|<\|)',
        +        //CSS rules
        +        2 => '\@(?!\d)[a-zA-Z0-9\-_]+(?:\\\\:[a-zA-Z0-9\-_]+)*\b(?=[\{\.#\s,:].|<\|)',
        +        //Measurements
        +        3 => '[+\-]?(\d+|(\d*\.\d+))(em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx|%)',
        +        //var
        +        4 => '(--[a-zA-Z0-9\-]*)'
        +    ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'DISALLOWED_AFTER' => '(?![\-a-zA-Z0-9_\|%\\-&\.])',
        +            'DISALLOWED_BEFORE' => '(? array(
        +                'DISALLOWED_AFTER' => '(?![\-a-zA-Z0-9_\|%\\-&\.])(?=\s*:)'
        +            )
        +        )
        +    )
        +);
        diff --git a/includes/geshi/cuesheet.php b/includes/geshi/cuesheet.php
        new file mode 100644
        index 0000000..675264d
        --- /dev/null
        +++ b/includes/geshi/cuesheet.php
        @@ -0,0 +1,136 @@
        + 'Cuesheet',
        +    'COMMENT_SINGLE' => array(1 => ';'),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(
        +        //Single-Line Comments using REM command
        +        1 => "/(?<=\bREM\b).*?$/im",
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'CATALOG','CDTEXTFILE','FILE','FLAGS','INDEX','ISRC','PERFORMER',
        +            'POSTGAP','PREGAP','REM','SONGWRITER','TITLE','TRACK'
        +            ),
        +        2 => array(
        +            'AIFF', 'BINARY', 'MOTOROLA', 'MP3', 'WAVE'
        +            ),
        +        3 => array(
        +            '4CH', 'DCP', 'PRE', 'SCMS'
        +            ),
        +        4 => array(
        +            'AUDIO', 'CDG', 'MODE1/2048', 'MODE1/2336', 'MODE2/2336',
        +            'MODE2/2352', 'CDI/2336', 'CDI/2352'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        ':'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000000; font-weight: bold;',
        +            2 => 'color: #000066; font-weight: bold;',
        +            3 => 'color: #000066; font-weight: bold;',
        +            4 => 'color: #000066; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080;',
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #006600;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000066;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            1 => 'color: #000099;',
        +            2 => 'color: #009900;',
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => 'http://digitalx.org/cuesheetsyntax.php#{FNAMEL}',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        2 => '\b[A-Za-z0-9]{5}\d{7}\b',
        +        1 => '(?<=[\s:]|^)\d+(?=[\s:]|$)',
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 2,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => '(? '(?![\w\.])',
        +            )
        +        )
        +);
        diff --git a/includes/geshi/d.php b/includes/geshi/d.php
        new file mode 100644
        index 0000000..eb68ea5
        --- /dev/null
        +++ b/includes/geshi/d.php
        @@ -0,0 +1,250 @@
        + 'D',
        +    'COMMENT_SINGLE' => array(2 => '///', 1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/', '/+' => '+/'),
        +    'COMMENT_REGEXP' => array(
        +        // doxygen comments
        +        3 => '#/\*\*(?![\*\/]).*\*/#sU',
        +        // raw strings
        +        4 => '#r"[^"]*"#s',
        +        // Script Style interpreter comment
        +        5 => "/\A#!(?=\\/).*?$/m"
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"', "'"),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        //Simple Single Char Escapes
        +        1 => "#\\\\[abfnrtv\\'\"?\n\\\\]#i",
        +        //Hexadecimal Char Specs
        +        2 => "#\\\\x[\da-fA-F]{2}#",
        +        //Hexadecimal Char Specs
        +        3 => "#\\\\u[\da-fA-F]{4}#",
        +        //Hexadecimal Char Specs
        +        4 => "#\\\\U[\da-fA-F]{8}#",
        +        //Octal Char Specs
        +        5 => "#\\\\[0-7]{1,3}#",
        +        //Named entity escapes
        +        /*6 => "#\\\\&(?:quot|amp|lt|gt|OElig|oelig|Scaron|scaron|Yuml|circ|tilde|".
        +            "ensp|emsp|thinsp|zwnj|zwj|lrm|rlm|ndash|mdash|lsquo|rsquo|sbquo|".
        +            "ldquo|rdquo|bdquo|dagger|Dagger|permil|lsaquo|rsaquo|euro|nbsp|".
        +            "iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|".
        +            "shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|".
        +            "sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|".
        +            "Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|".
        +            "Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|".
        +            "times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig|agrave|".
        +            "aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|".
        +            "euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|".
        +            "otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|".
        +            "yuml|fnof|Alpha|Beta|Gamma|Delta|Epsilon|Zeta|Eta|Theta|Iota|".
        +            "Kappa|Lambda|Mu|Nu|Xi|Omicron|Pi|Rho|Sigma|Tau|Upsilon|Phi|Chi|".
        +            "Psi|Omega|alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|".
        +            "kappa|lambda|mu|nu|xi|omicron|pi|rho|sigmaf|sigma|tau|upsilon|".
        +            "phi|chi|psi|omega|thetasym|upsih|piv|bull|hellip|prime|Prime|".
        +            "oline|frasl|weierp|image|real|trade|alefsym|larr|uarr|rarr|darr|".
        +            "harr|crarr|lArr|uArr|rArr|dArr|hArr|forall|part|exist|empty|".
        +            "nabla|isin|notin|ni|prod|sum|minus|lowast|radic|prop|infin|ang|".
        +            "and|or|cap|cup|int|there4|sim|cong|asymp|ne|equiv|le|ge|sub|sup|".
        +            "nsub|sube|supe|oplus|otimes|perp|sdot|lceil|rceil|lfloor|rfloor|".
        +            "lang|rang|loz|spades|clubs|hearts|diams);#",*/
        +        // optimized:
        +        6 => "#\\\\&(?:A(?:Elig|acute|circ|grave|lpha|ring|tilde|uml)|Beta|".
        +            "C(?:cedil|hi)|D(?:agger|elta)|E(?:TH|acute|circ|grave|psilon|ta|uml)|".
        +            "Gamma|I(?:acute|circ|grave|ota|uml)|Kappa|Lambda|Mu|N(?:tilde|u)|".
        +            "O(?:Elig|acute|circ|grave|m(?:ega|icron)|slash|tilde|uml)|".
        +            "P(?:hi|i|rime|si)|Rho|S(?:caron|igma)|T(?:HORN|au|heta)|".
        +            "U(?:acute|circ|grave|psilon|uml)|Xi|Y(?:acute|uml)|Zeta|".
        +            "a(?:acute|c(?:irc|ute)|elig|grave|l(?:efsym|pha)|mp|n[dg]|ring|".
        +            "symp|tilde|uml)|b(?:dquo|eta|rvbar|ull)|c(?:ap|cedil|e(?:dil|nt)|".
        +            "hi|irc|lubs|o(?:ng|py)|rarr|u(?:p|rren))|d(?:Arr|a(?:gger|rr)|".
        +            "e(?:g|lta)|i(?:ams|vide))|e(?:acute|circ|grave|m(?:pty|sp)|nsp|".
        +            "psilon|quiv|t[ah]|u(?:ml|ro)|xist)|f(?:nof|orall|ra(?:c(?:1[24]|34)|sl))|".
        +            "g(?:amma|e|t)|h(?:Arr|arr|e(?:arts|llip))|i(?:acute|circ|excl|grave|mage|".
        +            "n(?:fin|t)|ota|quest|sin|uml)|kappa|l(?:Arr|a(?:mbda|ng|quo|rr)|ceil|".
        +            "dquo|e|floor|o(?:wast|z)|rm|s(?:aquo|quo)|t)|m(?:acr|dash|".
        +            "i(?:cro|ddot|nus)|u)|n(?:abla|bsp|dash|e|i|ot(?:in)?|sub|tilde|u)|".
        +            "o(?:acute|circ|elig|grave|line|m(?:ega|icron)|plus|r(?:d[fm])?|".
        +            "slash|ti(?:lde|mes)|uml)|p(?:ar[at]|er(?:mil|p)|hi|iv?|lusmn|ound|".
        +            "r(?:ime|o[dp])|si)|quot|r(?:Arr|a(?:dic|ng|quo|rr)|ceil|dquo|e(?:al|g)|".
        +            "floor|ho|lm|s(?:aquo|quo))|s(?:bquo|caron|dot|ect|hy|i(?:gmaf?|m)|".
        +            "pades|u(?:be?|m|p[123e]?)|zlig)|t(?:au|h(?:e(?:re4|ta(?:sym)?)|insp|".
        +            "orn)|i(?:lde|mes)|rade)|u(?:Arr|a(?:cute|rr)|circ|grave|ml|".
        +            "psi(?:h|lon)|uml)|weierp|xi|y(?:acute|en|uml)|z(?:eta|w(?:j|nj)));#",
        +        ),
        +    'HARDQUOTE' => array('`', '`'),
        +    'HARDESCAPE' => array(),
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |
        +        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
        +        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        1 => array(
        +                'break', 'case', 'continue', 'do', 'else',
        +                'for', 'foreach', 'goto', 'if', 'return',
        +                'switch', 'while', 'foreach_reverse'
        +            ),
        +        2 => array(
        +                'alias', 'asm', 'assert', 'body', 'cast',
        +                'catch', 'default', 'delegate', 'delete',
        +                'extern', 'false', 'finally', 'function',
        +                'import', 'in', 'inout',
        +                'invariant', 'is', 'lazy', 'mixin', 'module', 'new',
        +                'null', 'out', 'pragma', 'ref', 'super', 'this',
        +                'throw', 'true', 'try', 'typeid',
        +                'typeof', 'union', 'with', 'scope'
        +            ),
        +        3 => array(
        +                'ClassInfo', 'Error', 'Exception',
        +                'Interface', 'Object', 'IMonitor',
        +                'OffsetTypeInfo', 'Throwable',
        +                'TypeInfo_Class', 'TypeInfo', '__traits',
        +                '__EOF__', '__FILE__', '__LINE__',
        +            ),
        +        4 => array(
        +                'abstract', 'align', 'auto', 'bit', 'bool',
        +                'byte', 'cdouble', 'cfloat', 'char',
        +                'class', 'const', 'creal', 'dchar', 'dstring', 'debug',
        +                'deprecated', 'double', 'enum', 'export',
        +                'final', 'float', 'idouble', 'ifloat', 'immutable', 'int',
        +                'interface', 'ireal', 'long', 'nothrow', 'override',
        +                'package', 'private', 'protected', 'ptrdiff_t',
        +                'public', 'real', 'short', 'shared', 'size_t',
        +                'static', 'string', 'struct', 'synchronized',
        +                'template', 'ubyte', 'ucent', 'uint',
        +                'ulong', 'unittest', 'ushort', 'version',
        +                'void', 'volatile', 'wchar', 'wstring',
        +                '__gshared', '@disable', '@property', 'pure', 'safe'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}', '?', '!', ';', ':', ',', '...', '..',
        +        '+', '-', '*', '/', '%', '&', '|', '^', '<', '>', '=', '~',
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #aaaadd; font-weight: bold;',
        +            4 => 'color: #993333;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            2 => 'color: #009933; font-style: italic;',
        +            3 => 'color: #009933; font-style: italic;',
        +            4 => 'color: #ff0000;',
        +            5 => 'color: #0040ff;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            1 => 'color: #000099; font-weight: bold;',
        +            2 => 'color: #660099; font-weight: bold;',
        +            3 => 'color: #660099; font-weight: bold;',
        +            4 => 'color: #660099; font-weight: bold;',
        +            5 => 'color: #006699; font-weight: bold;',
        +            6 => 'color: #666699; font-weight: bold; font-style: italic;',
        +            'HARD' => '',
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;',
        +            'HARD' => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #0000dd;',
        +            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',
        +            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
        +            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;',
        +            2 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.',
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/dart.php b/includes/geshi/dart.php
        new file mode 100644
        index 0000000..932e13e
        --- /dev/null
        +++ b/includes/geshi/dart.php
        @@ -0,0 +1,159 @@
        + 'Dart',
        +
        +    'COMMENT_SINGLE' => array('//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(),
        +
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        //Simple Single Char Escapes
        +        1 => "#\\\\[\\\\nrfbtv\'\"?\n]#i",
        +        //Hexadecimal Char Specs
        +        2 => "#\\\\x[\da-fA-F]{2}#",
        +        //Hexadecimal Char Specs
        +        3 => "#\\\\u[\da-fA-F]{4}#",
        +        4 => "#\\\\u\\{[\da-fA-F]*\\}#"
        +        ),
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE |
        +        GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
        +        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
        +
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'abstract', 'as', 'assert', 'break', 'case', 'catch', 'class',
        +            'const', 'continue', 'default', 'do', 'dynamic', 'else', 'export',
        +            'extends', 'external', 'factory', 'false', 'final', 'finally',
        +            'for', 'get', 'if', 'implements', 'import', 'in', 'is', 'library',
        +            'new', 'null', 'operator', 'part', 'return', 'set', 'static',
        +            'super', 'switch', 'this', 'throw', 'true', 'try', 'typedef', 'var',
        +            'while', 'with'
        +            ),
        +        2 => array(
        +            'double', 'bool', 'int', 'num', 'void'
        +            ),
        +        ),
        +
        +    'SYMBOLS' => array(
        +        0 => array('(', ')', '{', '}', '[', ']'),
        +        1 => array('+', '-', '*', '/', '%', '~'),
        +        2 => array('&', '|', '^'),
        +        3 => array('=', '!', '<', '>'),
        +        4 => array('?', ':'),
        +        5 => array('..'),
        +        6 => array(';', ',')
        +        ),
        +
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        ),
        +
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'font-weight: bold;',
        +            2 => 'color: #445588; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            0 => 'color: #999988; font-style: italic;',
        +            'MULTI' => 'color: #999988; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            1 => 'color: #000099; font-weight: bold;',
        +            2 => 'color: #660099; font-weight: bold;',
        +            3 => 'color: #660099; font-weight: bold;',
        +            4 => 'color: #660099; font-weight: bold;',
        +            5 => 'color: #006699; font-weight: bold;',
        +            'HARD' => ''
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #d14;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #009999;',
        +            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
        +            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
        +            ),
        +        'BRACKETS' => array(''),
        +        'METHODS' => array(
        +            1 => 'color: #006633;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'font-weight: bold;',
        +            1 => 'font-weight: bold;',
        +            2 => 'font-weight: bold;',
        +            3 => 'font-weight: bold;',
        +            4 => 'font-weight: bold;',
        +            5 => 'font-weight: bold;',
        +            6 => 'font-weight: bold;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/dcl.php b/includes/geshi/dcl.php
        new file mode 100644
        index 0000000..90de873
        --- /dev/null
        +++ b/includes/geshi/dcl.php
        @@ -0,0 +1,190 @@
        + 'DCL',
        +    'COMMENT_SINGLE' => array('$!', '!'),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(
        +        2 => '/(?<=\$)\s*sql\s+.*?(?:quit|exit);?\s*?$/sim' // do not highlight inline sql
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'HARDESCAPE' => array(),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        1 => "/''[a-zA-Z\\-_]+'/"
        +        ),
        +    'KEYWORDS' => array(
        +        1 => array( // commands
        +            'ACCOUNTING', 'ALLOCATE', 'ANALYZE', 'APPEND', 'ASSIGN', 'ATTACH', 'BACKUP',
        +            'CALL', 'CANCEL', 'CHECKSUM', 'CLOSE', 'CONNECT', 'CONTINUE', 'CONVERT',
        +            'COPY', 'CREATE', 'DEALLOCATE', 'DEASSIGN', 'DEBUG', 'DECK',
        +            'DECRYPT', 'DEFINE', 'DELETE', 'DEPOSIT', 'DIFFERENCES', 'DIRECTORY',
        +            'DISABLE',  'AUTOSTART', 'DISCONNECT', 'DISMOUNT', 'DUMP', 'EDIT', 'ENABLE',
        +            'ENCRYPT', 'ENDSUBROUTINE', 'EOD', 'EOJ', 'EXAMINE', 'EXCHANGE',
        +            'EXIT', 'FONT', 'GOSUB', 'GOTO', 'HELP', 'IF', 'THEN', 'ELSE', 'ENDIF', 'INITIALIZE', 'INQUIRE',
        +            'INSTALL', 'JAVA', 'JOB', 'LIBRARY', 'LICENSE', 'LINK', 'LOGIN', 'LOGOUT',
        +            'MACRO', 'MAIL', 'MERGE', 'MESSAGE', 'MONITOR', 'MOUNT', 'NCS', 'ON', 'OPEN',
        +            'PASSWORD', 'PATCH', 'PHONE', 'PIPE', 'PPPD', 'PRINT', 'PRODUCT', 'PURGE',
        +            'READ', 'RECALL', 'RENAME', 'REPLY', 'REQUEST', 'RETURN', 'RMU', 'RUN', 'RUNOFF',
        +            'SEARCH', 'SET', 'SET AUDIT', 'SET BOOTBLOCK', 'SET BROADCAST',
        +            'SET CACHE', 'SET CARD_READER', 'SET CLUSTER', 'SET COMMAND', 'SET CONTROL',
        +            'SET CPU', 'SET DAY', 'SET DEFAULT', 'SET DEVICE', 'SET DIRECTORY',
        +            'SET DISPLAY', 'SET ENTRY', 'SET FILE', 'SET HOST', 'SET IMAGE', 'SET KEY',
        +            'SET LOGINS', 'SET MAGTAPE', 'SET MESSAGE', 'SET NETWORK', 'SET ON', 'SET OUTPUT_RATE',
        +            'SET PASSWORD', 'SET PREFERRED_PATH', 'SET PREFIX', 'SET PRINTER', 'SET PROCESS',
        +            'SET PROMPT', 'SET PROTECTION', 'SET QUEUE', 'SET RESTART_VALUE',
        +            'SET RIGHTS_LIST', 'SET RMS_DEFAULT', 'SET ROOT', 'SET SECURITY',
        +            'SET SERVER ACME_SERVER', 'SET SERVER REGISTRY_SERVER', 'SET SERVER SECURITY_SERVER',
        +            'SET SHADOW', 'SET SYMBOL', 'SET TERMINAL', 'SET TIME', 'SET VERIFY',
        +            'SET VOLUME', 'SET WORKING_SET', 'SHOW', 'SHOW AUDIT',
        +            'SHOW BROADCAST', 'SHOW CLUSTER', 'SHOW CPU', 'SHOW DEFAULT', 'SHOW DEVICES',
        +            'SHOW DISPLAY', 'SHOW ENTRY', 'SHOW ERROR', 'SHOW FASTPATH', 'SHOW IMAGE',
        +            'SHOW INTRUSION', 'SHOW KEY', 'SHOW LICENSE', 'SHOW LOGICAL', 'SHOW MEMORY',
        +            'SHOW NETWORK', 'SHOW PRINTER', 'SHOW PROCESS', 'SHOW PROTECTION', 'SHOW QUEUE',
        +            'SHOW QUOTA', 'SHOW RMS_DEFAULT', 'SHOW ROOT', 'SHOW SECURITY',
        +            'SHOW SERVER ACME_SERVER', 'SHOW SERVER REGISTRY_SERVER', 'SHOW SHADOW',
        +            'SHOW STATUS', 'SHOW SYMBOL', 'SHOW SYSTEM', 'SHOW TERMINAL', 'SHOW TIME',
        +            'SHOW TRANSLATION', 'SHOW USERS', 'SHOW WORKING_SET', 'SHOW ZONE', 'SORT',
        +            'SPAWN', 'START', 'STOP', 'SUBMIT', 'SUBROUTINE', 'SYNCHRONIZE', 'TYPE',
        +            'UNLOCK', 'VIEW', 'WAIT', 'WRITE', 'XAUTH'
        +            ),
        +        2 => array( // lexical functions
        +            'F$CONTEXT', 'F$CSID', 'F$CUNITS', 'F$CVSI', 'F$CVTIME', 'F$CVUI',
        +            'F$DELTA_TIME', 'F$DEVICE', 'F$DIRECTORY', 'F$EDIT', 'F$ELEMENT',
        +            'F$ENVIRONMENT', 'F$EXTRACT', 'F$FAO', 'F$FID_TO_NAME', 'F$FILE_ATTRIBUTES',
        +            'F$GETDVI', 'F$GETENV', 'F$GETJPI', 'F$GETQUI', 'F$GETSYI', 'F$IDENTIFIER',
        +            'F$INTEGER', 'F$LENGTH', 'F$LICENSE', 'F$LOCATE', 'F$MATCH_WILD', 'F$MESSAGE',
        +            'F$MODE', 'F$MULTIPATH', 'F$PARSE', 'F$PID', 'F$PRIVILEGE', 'F$PROCESS',
        +            'F$SEARCH', 'F$SETPRV', 'F$STRING', 'F$TIME', 'F$TRNLNM', 'F$TYPE', 'F$UNIQUE',
        +            'F$USER', 'F$VERIFY'
        +            ),
        +        3 => array( // special variables etc
        +            'sql$database', 'P1', 'P2', 'P3', 'P4', 'P5', 'P6', 'P7', 'P8', 'P9',
        +            '$status', '$severity', 'sys$login', 'sys$system',
        +            'sys$input', 'sys$output', 'sys$pipe'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '@', '&', '|', '<', '>', '-',
        +        '.eqs.', '.eq.', '.lt.', '.lts.', '.gt.', '.gts.', '.ne.', '.nes.',
        +        '.le.', '.ge.', '.ges.', '.les.',
        +        '.EQS.', '.EQ.', '.LT.', '.LTS.', '.GT.', '.GTS.', '.NE.', '.NES.',
        +        '.LE.', '.GE.', '.GES.', '.LES.',
        +        '.and.', '.or.', '.not.',
        +        '.AND.', '.OR.', '.NOT.',
        +        '==', ':==', '=', ':='
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000099; font-weight: bold;',
        +            2 => 'color: #0066FF;',
        +            3 => 'color: #993300;'
        +            ),
        +        'COMMENTS' => array(
        +            0 => 'color: #666666; font-style: italic;',
        +            1 => 'color: #666666; font-style: italic;',
        +            2 => 'color: #9999FF; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #006666;',
        +            1 => 'color: #0099FF;',
        +            2 => 'color: red;',
        +            3 => 'color: #007800;',
        +            4 => 'color: #007800;',
        +            5 => 'color: #780078;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #7a0874; font-weight: bold;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000000; font-weight: bold;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #0099FF;',                     // variables
        +            1 => 'color: #0000FF;',                     // qualifiers
        +            2 => 'color: #FF6600; font-weight: bold;'   // labels
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        // variables
        +        0 => "'[a-zA-Z_\\-$]+'",
        +        // qualifiers and parameters
        +        1 => "(?:\/[a-zA-Z_\/]+)[\s=]",
        +        // labels
        +        2 => '(?<=\$)\s*[a-zA-Z\-_]+:'
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'COMMENTS' => array(
        +        ),
        +        'KEYWORDS' => array(
        +        )
        +    )
        +);
        diff --git a/includes/geshi/dcpu16.php b/includes/geshi/dcpu16.php
        new file mode 100644
        index 0000000..4dec5a8
        --- /dev/null
        +++ b/includes/geshi/dcpu16.php
        @@ -0,0 +1,129 @@
        + 'DCPU-16 Assembly',
        +    'COMMENT_SINGLE' => array(1 => ';'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'NUMBERS' => GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_HEX_PREFIX,
        +    'KEYWORDS' => array(
        +        /*CPU*/
        +        1 => array(
        +            'set','add','sub','mul','div','mod','shl','shr','and','bor','xor',
        +            'ife','ifn','ifg','ifb',
        +            'jsr'
        +            ),
        +        /*registers*/
        +        2 => array(
        +            'a','b','c','x','y','z','i','j',
        +            'pc','sp','o',
        +            'pop','peek','push' //Special cases with DCPU-16
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '[', ']', '+', '-', ','
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000088; font-weight:bold;',
        +            2 => 'color: #0000ff;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #adadad; font-style: italic;',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000088;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #7f007f;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #880000;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #008000;'
        +            ),
        +        'REGEXPS' => array(
        +            2 => 'color: #993333;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => 'http://0x10c.com/doc/dcpu-16.txt',
        +        2 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        //Hex numbers
        +        //0 => '0[0-9a-fA-F]{1,32}[hH]',
        +        //Binary numbers
        +        //1 => '\%[01]{1,64}|[01]{1,64}[bB]?(?![^<]*>)',
        +        //Labels
        +        2 => '^:[_a-zA-Z][_a-zA-Z0-9]?(?=\s|$)'
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => "(? "(?![a-zA-Z0-9_\|%\\-])"
        +            )
        +        )
        +);
        diff --git a/includes/geshi/dcs.php b/includes/geshi/dcs.php
        new file mode 100644
        index 0000000..99fa628
        --- /dev/null
        +++ b/includes/geshi/dcs.php
        @@ -0,0 +1,180 @@
        + 'DCS',
        +    'COMMENT_SINGLE' => array(
        +        1 => ';'
        +        ),
        +    'COMMENT_MULTI' => array(
        +        ),
        +    'COMMENT_REGEXP' => array(
        +        // Highlight embedded C code in a separate color:
        +        2 => '/\bINSERT_C_CODE\b.*?\bEND_C_CODE\b/ims'
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
        +    'QUOTEMARKS' => array(
        +        '"'
        +        ),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => '',
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'abs', 'ascii_value', 'bit_value', 'blank_date', 'calc_unit_values', 'cm',
        +            'complete_months', 'complete_years', 'correct', 'create_input_file', 'cy',
        +            'date_convert', 'day', 'del_output_separator',
        +            'delete_existing_output_files', 'div', 'ex', 'exact_years', 'exp',
        +            'extract_date', 'failed_validation', 'file_number', 'first_record',
        +            'fract', 'fund_fac_a', 'fund_fac_b', 'fund_fac_c', 'fund_fac_d',
        +            'fund_fac_e', 'fund_fac_f', 'fund_fac_g', 'fund_fac_h', 'fund_fac_i',
        +            'fund_fac_j', 'fund_fac_k', 'fund_fac_l', 'fund_fac_m', 'fund_fac_n',
        +            'fund_fac_o', 'fund_fac_p', 'fund_fac_q', 'fund_fac_r', 'fund_fac_s',
        +            'fund_fac_t', 'fund_fac_u', 'fund_fac_v', 'fund_fac_w', 'fund_fac_x',
        +            'fund_fac_y', 'fund_fac_z', 'group', 'group_record',
        +            'input_file_date_time', 'input_file_extension', 'input_file_location',
        +            'input_file_name', 'int', 'invalid', 'last_record', 'leap_year', 'len',
        +            'ln', 'log', 'main_format_name', 'max', 'max_num_subrecords', 'message',
        +            'min', 'mod', 'month', 'months_add', 'months_sub', 'nearest_months',
        +            'nearest_years', 'next_record', 'nm', 'no_of_current_records',
        +            'no_of_records', 'numval', 'ny', 'output', 'output_array_as_constants',
        +            'output_file_path', 'output_record', 'pmdf_output', 'previous', 'rand',
        +            're_start', 'read_generic_table', 'read_generic_table_text',
        +            'read_input_footer', 'read_input_footer_text', 'read_input_header',
        +            'read_input_header_text', 'record_count', 'record_suppressed', 'round',
        +            'round_down', 'round_near', 'round_up', 'run_dcs_program', 'run_parameter',
        +            'run_parameter_text', 'set_main_record', 'set_num_subrecords',
        +            'sort_array', 'sort_current_records', 'sort_input', 'strval', 'substr',
        +            'summarise', 'summarise_record', 'summarise_units',
        +            'summarise_units_record', 'suppress_record', 'table_correct',
        +            'table_validate', 'terminate', 'time', 'today', 'trim', 'ubound', 'year',
        +            'years_add', 'years_sub'
        +            ),
        +        2 => array(
        +            'and', 'as', 'begin', 'boolean', 'byref', 'byval', 'call', 'case', 'date',
        +            'default', 'do', 'else', 'elseif', 'end_c_code', 'endfor', 'endfunction',
        +            'endif', 'endproc', 'endswitch', 'endwhile', 'eq',
        +            'explicit_declarations', 'false', 'for', 'from', 'function', 'ge', 'gt',
        +            'if', 'insert_c_code', 'integer', 'le', 'loop', 'lt', 'ne', 'not',
        +            'number', 'or', 'private', 'proc', 'public', 'quitloop', 'return',
        +            'short', 'step', 'switch', 'text', 'then', 'to', 'true', 'while'
        +            ),
        +        3 => array(
        +            // These keywords are not highlighted by the DCS IDE but we may as well
        +            // keep track of them anyway:
        +            'mp_file', 'odbc_file'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']',
        +        '=', '<', '>',
        +        '+', '-', '*', '/', '^',
        +        ':', ','
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: red;',
        +            2 => 'color: blue;',
        +            3 => 'color: black;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: black; background-color: silver;',
        +            // Colors for highlighting embedded C code:
        +            2 => 'color: maroon; background-color: pink;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: black;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: green;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: green;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: black;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/delphi.php b/includes/geshi/delphi.php
        new file mode 100644
        index 0000000..a0cd36e
        --- /dev/null
        +++ b/includes/geshi/delphi.php
        @@ -0,0 +1,299 @@
        + 'Delphi',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('(*' => '*)', '{' => '}'),
        +    //Compiler directives
        +    'COMMENT_REGEXP' => array(2 => '/\\{\\$.*?}|\\(\\*\\$.*?\\*\\)/U'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'"),
        +    'ESCAPE_CHAR' => '',
        +
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'Abstract', 'And', 'Array', 'As', 'Asm', 'At', 'Begin', 'Case',
        +            'Class', 'Const', 'Constructor', 'Contains', 'Default', 'delayed', 'Destructor',
        +            'DispInterface', 'Div', 'Do', 'DownTo', 'Else', 'End', 'Except',
        +            'Export', 'Exports', 'External', 'File', 'Finalization', 'Finally', 'For',
        +            'Function', 'Generic', 'Goto', 'If', 'Implementation', 'In', 'Inherited',
        +            'Initialization', 'Inline', 'Interface', 'Is', 'Label', 'Library', 'Message',
        +            'Mod', 'Nil', 'Not', 'Object', 'Of', 'On', 'Or', 'Overload', 'Override',
        +            'Package', 'Packed', 'Private', 'Procedure', 'Program', 'Property',
        +            'Protected', 'Public', 'Published', 'Read', 'Raise', 'Record', 'Register',
        +            'Repeat', 'Requires', 'Resourcestring', 'Set', 'Shl', 'Shr', 'Specialize', 'Stored',
        +            'Then', 'ThreadVar', 'To', 'Try', 'Type', 'Unit', 'Until', 'Uses', 'Var',
        +            'Virtual', 'While', 'With', 'Write', 'Xor', 'assembler', 'far',
        +            'near', 'pascal', 'cdecl', 'safecall', 'stdcall', 'varargs'
        +            ),
        +        2 => array(
        +            'false', 'self', 'true',
        +            ),
        +        3 => array(
        +            'Abs', 'AcquireExceptionObject', 'Addr', 'AnsiToUtf8', 'Append', 'ArcTan',
        +            'Assert', 'AssignFile', 'Assigned', 'BeginThread', 'BlockRead',
        +            'BlockWrite', 'Break', 'ChDir', 'Chr', 'Close', 'CloseFile',
        +            'CompToCurrency', 'CompToDouble', 'Concat', 'Continue', 'Copy', 'Cos',
        +            'Dec', 'Delete', 'Dispose', 'DoubleToComp', 'EndThread', 'EnumModules',
        +            'EnumResourceModules', 'Eof', 'Eoln', 'Erase', 'ExceptAddr',
        +            'ExceptObject', 'Exclude', 'Exit', 'Exp', 'FilePos', 'FileSize',
        +            'FillChar', 'Finalize', 'FindClassHInstance', 'FindHInstance',
        +            'FindResourceHInstance', 'Flush', 'Frac', 'FreeMem', 'Get8087CW',
        +            'GetDir', 'GetLastError', 'GetMem', 'GetMemoryManager',
        +            'GetModuleFileName', 'GetVariantManager', 'Halt', 'Hi', 'High',
        +            'IOResult', 'Inc', 'Include', 'Initialize', 'Insert', 'Int',
        +            'IsMemoryManagerSet', 'IsVariantManagerSet', 'Length', 'Ln', 'Lo', 'Low',
        +            'MkDir', 'Move', 'New', 'Odd', 'OleStrToStrVar', 'OleStrToString', 'Ord',
        +            'PUCS4Chars', 'ParamCount', 'ParamStr', 'Pi', 'Pos', 'Pred', 'Ptr',
        +            'Random', 'Randomize', 'Read', 'ReadLn', 'ReallocMem',
        +            'ReleaseExceptionObject', 'Rename', 'Reset', 'Rewrite', 'RmDir', 'Round',
        +            'RunError', 'Seek', 'SeekEof', 'SeekEoln', 'Set8087CW', 'SetLength',
        +            'SetLineBreakStyle', 'SetMemoryManager', 'SetString', 'SetTextBuf',
        +            'SetVariantManager', 'Sin', 'SizeOf', 'Slice', 'Sqr', 'Sqrt', 'Str',
        +            'StringOfChar', 'StringToOleStr', 'StringToWideChar', 'Succ', 'Swap',
        +            'Trunc', 'Truncate', 'TypeInfo', 'UCS4StringToWideString', 'UTF8Decode',
        +            'UTF8Encode', 'UnicodeToUtf8', 'UniqueString', 'UpCase', 'Utf8ToAnsi',
        +            'Utf8ToUnicode', 'Val', 'VarArrayRedim', 'VarClear',
        +            'WideCharLenToStrVar', 'WideCharLenToString', 'WideCharToStrVar',
        +            'WideCharToString', 'WideStringToUCS4String', 'Write', 'WriteLn',
        +
        +            'Abort', 'AddExitProc', 'AddTerminateProc', 'AdjustLineBreaks', 'AllocMem',
        +            'AnsiCompareFileName', 'AnsiCompareStr', 'AnsiCompareText',
        +            'AnsiDequotedStr', 'AnsiExtractQuotedStr', 'AnsiLastChar',
        +            'AnsiLowerCase', 'AnsiLowerCaseFileName', 'AnsiPos', 'AnsiQuotedStr',
        +            'AnsiSameStr', 'AnsiSameText', 'AnsiStrComp', 'AnsiStrIComp',
        +            'AnsiStrLComp', 'AnsiStrLIComp', 'AnsiStrLastChar', 'AnsiStrLower',
        +            'AnsiStrPos', 'AnsiStrRScan', 'AnsiStrScan', 'AnsiStrUpper',
        +            'AnsiUpperCase', 'AnsiUpperCaseFileName', 'AppendStr', 'AssignStr',
        +            'Beep', 'BoolToStr', 'ByteToCharIndex', 'ByteToCharLen', 'ByteType',
        +            'CallTerminateProcs', 'ChangeFileExt', 'CharLength', 'CharToByteIndex',
        +            'CharToByteLen', 'CompareMem', 'CompareStr', 'CompareText', 'CreateDir',
        +            'CreateGUID', 'CurrToStr', 'CurrToStrF', 'CurrentYear', 'Date',
        +            'DateTimeToFileDate', 'DateTimeToStr', 'DateTimeToString',
        +            'DateTimeToSystemTime', 'DateTimeToTimeStamp', 'DateToStr', 'DayOfWeek',
        +            'DecodeDate', 'DecodeDateFully', 'DecodeTime', 'DeleteFile',
        +            'DirectoryExists', 'DiskFree', 'DiskSize', 'DisposeStr', 'EncodeDate',
        +            'EncodeTime', 'ExceptionErrorMessage', 'ExcludeTrailingBackslash',
        +            'ExcludeTrailingPathDelimiter', 'ExpandFileName', 'ExpandFileNameCase',
        +            'ExpandUNCFileName', 'ExtractFileDir', 'ExtractFileDrive',
        +            'ExtractFileExt', 'ExtractFileName', 'ExtractFilePath',
        +            'ExtractRelativePath', 'ExtractShortPathName', 'FileAge', 'FileClose',
        +            'FileCreate', 'FileDateToDateTime', 'FileExists', 'FileGetAttr',
        +            'FileGetDate', 'FileIsReadOnly', 'FileOpen', 'FileRead', 'FileSearch',
        +            'FileSeek', 'FileSetAttr', 'FileSetDate', 'FileSetReadOnly', 'FileWrite',
        +            'FinalizePackage', 'FindClose', 'FindCmdLineSwitch', 'FindFirst',
        +            'FindNext', 'FloatToCurr', 'FloatToDateTime', 'FloatToDecimal',
        +            'FloatToStr', 'FloatToStrF', 'FloatToText', 'FloatToTextFmt',
        +            'FmtLoadStr', 'FmtStr', 'ForceDirectories', 'Format', 'FormatBuf',
        +            'FormatCurr', 'FormatDateTime', 'FormatFloat', 'FreeAndNil',
        +            'GUIDToString', 'GetCurrentDir', 'GetEnvironmentVariable',
        +            'GetFileVersion', 'GetFormatSettings', 'GetLocaleFormatSettings',
        +            'GetModuleName', 'GetPackageDescription', 'GetPackageInfo', 'GetTime',
        +            'IncAMonth', 'IncMonth', 'IncludeTrailingBackslash',
        +            'IncludeTrailingPathDelimiter', 'InitializePackage', 'IntToHex',
        +            'IntToStr', 'InterlockedDecrement', 'InterlockedExchange',
        +            'InterlockedExchangeAdd', 'InterlockedIncrement', 'IsDelimiter',
        +            'IsEqualGUID', 'IsLeapYear', 'IsPathDelimiter', 'IsValidIdent',
        +            'Languages', 'LastDelimiter', 'LoadPackage', 'LoadStr', 'LowerCase',
        +            'MSecsToTimeStamp', 'NewStr', 'NextCharIndex', 'Now', 'OutOfMemoryError',
        +            'QuotedStr', 'RaiseLastOSError', 'RaiseLastWin32Error', 'RemoveDir',
        +            'RenameFile', 'ReplaceDate', 'ReplaceTime', 'SafeLoadLibrary',
        +            'SameFileName', 'SameText', 'SetCurrentDir', 'ShowException', 'Sleep',
        +            'StrAlloc', 'StrBufSize', 'StrByteType', 'StrCat', 'StrCharLength',
        +            'StrComp', 'StrCopy', 'StrDispose', 'StrECopy', 'StrEnd', 'StrFmt',
        +            'StrIComp', 'StrLCat', 'StrLComp', 'StrLCopy', 'StrLFmt', 'StrLIComp',
        +            'StrLen', 'StrLower', 'StrMove', 'StrNew', 'StrNextChar', 'StrPCopy',
        +            'StrPLCopy', 'StrPas', 'StrPos', 'StrRScan', 'StrScan', 'StrToBool',
        +            'StrToBoolDef', 'StrToCurr', 'StrToCurrDef', 'StrToDate', 'StrToDateDef',
        +            'StrToDateTime', 'StrToDateTimeDef', 'StrToFloat', 'StrToFloatDef',
        +            'StrToInt', 'StrToInt64', 'StrToInt64Def', 'StrToIntDef', 'StrToTime',
        +            'StrToTimeDef', 'StrUpper', 'StringReplace', 'StringToGUID', 'Supports',
        +            'SysErrorMessage', 'SystemTimeToDateTime', 'TextToFloat', 'Time',
        +            'TimeStampToDateTime', 'TimeStampToMSecs', 'TimeToStr', 'Trim',
        +            'TrimLeft', 'TrimRight', 'TryEncodeDate', 'TryEncodeTime',
        +            'TryFloatToCurr', 'TryFloatToDateTime', 'TryStrToBool', 'TryStrToCurr',
        +            'TryStrToDate', 'TryStrToDateTime', 'TryStrToFloat', 'TryStrToInt',
        +            'TryStrToInt64', 'TryStrToTime', 'UnloadPackage', 'UpperCase',
        +            'WideCompareStr', 'WideCompareText', 'WideFmtStr', 'WideFormat',
        +            'WideFormatBuf', 'WideLowerCase', 'WideSameStr', 'WideSameText',
        +            'WideUpperCase', 'Win32Check', 'WrapText',
        +
        +            'ActivateClassGroup', 'AllocateHwnd', 'BinToHex', 'CheckSynchronize',
        +            'CollectionsEqual', 'CountGenerations', 'DeallocateHwnd', 'EqualRect',
        +            'ExtractStrings', 'FindClass', 'FindGlobalComponent', 'GetClass',
        +            'GroupDescendantsWith', 'HexToBin', 'IdentToInt',
        +            'InitInheritedComponent', 'IntToIdent', 'InvalidPoint',
        +            'IsUniqueGlobalComponentName', 'LineStart', 'ObjectBinaryToText',
        +            'ObjectResourceToText', 'ObjectTextToBinary', 'ObjectTextToResource',
        +            'PointsEqual', 'ReadComponentRes', 'ReadComponentResEx',
        +            'ReadComponentResFile', 'Rect', 'RegisterClass', 'RegisterClassAlias',
        +            'RegisterClasses', 'RegisterComponents', 'RegisterIntegerConsts',
        +            'RegisterNoIcon', 'RegisterNonActiveX', 'SmallPoint', 'StartClassGroup',
        +            'TestStreamFormat', 'UnregisterClass', 'UnregisterClasses',
        +            'UnregisterIntegerConsts', 'UnregisterModuleClasses',
        +            'WriteComponentResFile',
        +
        +            'ArcCos', 'ArcCosh', 'ArcCot', 'ArcCotH', 'ArcCsc', 'ArcCscH', 'ArcSec',
        +            'ArcSecH', 'ArcSin', 'ArcSinh', 'ArcTan2', 'ArcTanh', 'Ceil',
        +            'CompareValue', 'Cosecant', 'Cosh', 'Cot', 'CotH', 'Cotan', 'Csc', 'CscH',
        +            'CycleToDeg', 'CycleToGrad', 'CycleToRad', 'DegToCycle', 'DegToGrad',
        +            'DegToRad', 'DivMod', 'DoubleDecliningBalance', 'EnsureRange', 'Floor',
        +            'Frexp', 'FutureValue', 'GetExceptionMask', 'GetPrecisionMode',
        +            'GetRoundMode', 'GradToCycle', 'GradToDeg', 'GradToRad', 'Hypot',
        +            'InRange', 'IntPower', 'InterestPayment', 'InterestRate',
        +            'InternalRateOfReturn', 'IsInfinite', 'IsNan', 'IsZero', 'Ldexp', 'LnXP1',
        +            'Log10', 'Log2', 'LogN', 'Max', 'MaxIntValue', 'MaxValue', 'Mean',
        +            'MeanAndStdDev', 'Min', 'MinIntValue', 'MinValue', 'MomentSkewKurtosis',
        +            'NetPresentValue', 'Norm', 'NumberOfPeriods', 'Payment', 'PeriodPayment',
        +            'Poly', 'PopnStdDev', 'PopnVariance', 'Power', 'PresentValue',
        +            'RadToCycle', 'RadToDeg', 'RadToGrad', 'RandG', 'RandomRange', 'RoundTo',
        +            'SLNDepreciation', 'SYDDepreciation', 'SameValue', 'Sec', 'SecH',
        +            'Secant', 'SetExceptionMask', 'SetPrecisionMode', 'SetRoundMode', 'Sign',
        +            'SimpleRoundTo', 'SinCos', 'Sinh', 'StdDev', 'Sum', 'SumInt',
        +            'SumOfSquares', 'SumsAndSquares', 'Tan', 'Tanh', 'TotalVariance',
        +            'Variance'
        +            ),
        +        4 => array(
        +            'AnsiChar', 'AnsiString', 'Bool', 'Boolean', 'Byte', 'ByteBool', 'Cardinal', 'Char',
        +            'Comp', 'Currency', 'DWORD', 'Double', 'Extended', 'Int64', 'Integer', 'IUnknown',
        +            'LongBool', 'LongInt', 'LongWord', 'PAnsiChar', 'PAnsiString', 'PBool', 'PBoolean', 'PByte',
        +            'PByteArray', 'PCardinal', 'PChar', 'PComp', 'PCurrency', 'PDWORD', 'PDate', 'PDateTime',
        +            'PDouble', 'PExtended', 'PInt64', 'PInteger', 'PLongInt', 'PLongWord', 'Pointer', 'PPointer',
        +            'PShortInt', 'PShortString', 'PSingle', 'PSmallInt', 'PString', 'PHandle', 'PVariant', 'PWord',
        +            'PWordArray', 'PWordBool', 'PWideChar', 'PWideString', 'Real', 'Real48', 'ShortInt', 'ShortString',
        +            'Single', 'SmallInt', 'String', 'TClass', 'TDate', 'TDateTime', 'TextFile', 'THandle',
        +            'TObject', 'TTime', 'Variant', 'WideChar', 'WideString', 'Word', 'WordBool'
        +            ),
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array('(', ')', '[', ']'),
        +        1 => array('.', ',', ':', ';'),
        +        2 => array('@', '^'),
        +        3 => array('=', '+', '-', '*', '/')
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000000; font-weight: bold;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #000066;',
        +            4 => 'color: #000066; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            2 => 'color: #008000; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #ff0000; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000066;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #0000cc;',
        +            1 => 'color: #ff0000;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000066;',
        +            1 => 'color: #000066;',
        +            2 => 'color: #000066;',
        +            3 => 'color: #000066;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        //Hex numbers
        +        0 => '(? '\#(?:\$[0-9a-fA-F]{1,4}|\d{1,5})'
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 2,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            3 => array(
        +                'DISALLOWED_AFTER' => '(?=\s*[(;])'
        +                )
        +            )
        +        )
        +);
        diff --git a/includes/geshi/diff.php b/includes/geshi/diff.php
        new file mode 100644
        index 0000000..e4bfc6f
        --- /dev/null
        +++ b/includes/geshi/diff.php
        @@ -0,0 +1,194 @@
        + 'Diff',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => ' ',
        +    'KEYWORDS' => array(
        +            1 => array(
        +                '\ No newline at end of file'
        +            ),
        +//            2 => array(
        +//                '***************' /* This only seems to works in some cases? */
        +//            ),
        +        ),
        +    'SYMBOLS' => array(
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        1 => false,
        +//        2 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #aaaaaa; font-style: italic;',
        +//            2 => 'color: #dd6611;',
        +            ),
        +        'COMMENTS' => array(
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => ''
        +            ),
        +        'BRACKETS' => array(
        +            0 => ''
        +            ),
        +        'STRINGS' => array(
        +            0 => ''
        +            ),
        +        'NUMBERS' => array(
        +            0 => ''
        +            ),
        +        'METHODS' => array(
        +            0 => ''
        +            ),
        +        'SYMBOLS' => array(
        +            0 => ''
        +            ),
        +        'SCRIPT' => array(
        +            0 => ''
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #440088;',
        +            1 => 'color: #991111;',
        +            2 => 'color: #00b000;',
        +            3 => 'color: #888822;',
        +            4 => 'color: #888822;',
        +            5 => 'color: #0011dd;',
        +            6 => 'color: #440088;',
        +            7 => 'color: #991111;',
        +            8 => 'color: #00b000;',
        +            9 => 'color: #888822;',
        +            ),
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +//        2 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(
        +        0 => "[0-9,]+[acd][0-9,]+",
        +        //Removed lines
        +        1 => array(
        +            GESHI_SEARCH => '(^|(?<=\A\s))\\<.*$',
        +            GESHI_REPLACE => '\\0',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        //Inserted lines
        +        2 => array(
        +            GESHI_SEARCH => '(^|(?<=\A\s))\\>.*$',
        +            GESHI_REPLACE => '\\0',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        //Location line
        +        3 => array(
        +            GESHI_SEARCH => '(^|(?<=\A\s))-{3}\\s.*$',
        +            GESHI_REPLACE => '\\0',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        //Inserted line
        +        4 => array(
        +            GESHI_SEARCH => '(^|(?<=\A\s))(\\+){3}\\s.*$',
        +            GESHI_REPLACE => '\\0',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        //Modified line
        +        5 => array(
        +            GESHI_SEARCH => '(^|(?<=\A\s))\\!.*$',
        +            GESHI_REPLACE => '\\0',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        //File specification
        +        6 => array(
        +            GESHI_SEARCH => '(^|(?<=\A\s))[\\@]{2}.*$',
        +            GESHI_REPLACE => '\\0',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        //Removed line
        +        7 => array(
        +            GESHI_SEARCH => '(^|(?<=\A\s))\\-.*$',
        +            GESHI_REPLACE => '\\0',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        //Inserted line
        +        8 => array(
        +            GESHI_SEARCH => '(^|(?<=\A\s))\\+.*$',
        +            GESHI_REPLACE => '\\0',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        //File specification
        +        9 => array(
        +            GESHI_SEARCH => '(^|(?<=\A\s))(\\*){3}\\s.*$',
        +            GESHI_REPLACE => '\\0',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/div.php b/includes/geshi/div.php
        new file mode 100644
        index 0000000..8b230da
        --- /dev/null
        +++ b/includes/geshi/div.php
        @@ -0,0 +1,124 @@
        + 'DIV',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'while','until','to','switch','step','return','repeat','loop','if','from','frame','for','end','elseif',
        +            'else','default','debug','continue','clone','case','break','begin'
        +            ),
        +        2 => array(
        +            'xor','whoami','type','sizeof','pointer','or','offset','not','neg','mod','id','dup','and','_ne','_lt',
        +            '_le','_gt','_ge','_eq'
        +            ),
        +        3 => array(
        +            'setup_program','program','process','private','local','import','global','function','const',
        +            'compiler_options'
        +            ),
        +        4 => array(
        +            'word','struct','string','int','byte'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '(',')','[',']','=','+','-','*','/','!','%','^','&',':',';',',','<','>'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0040b1;',
        +            2 => 'color: #000000;',
        +            3 => 'color: #000066; font-weight: bold;',
        +            4 => 'color: #993333;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => ''
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #44aa44;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #202020;',
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #44aa44;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/dos.php b/includes/geshi/dos.php
        new file mode 100644
        index 0000000..080f300
        --- /dev/null
        +++ b/includes/geshi/dos.php
        @@ -0,0 +1,225 @@
        + 'DOS',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(),
        +    //DOS comment lines
        +    'COMMENT_REGEXP' => array(
        +        1 => "/^\s*@?REM\b.*$/mi",
        +        2 => "/^\s*::.*$/m",
        +        3 => "/\^./"
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        /* Flow control keywords */
        +        1 => array(
        +            'if', 'else', 'goto', 'shift',
        +            'for', 'in', 'do',
        +            'call', 'exit'
        +            ),
        +        /* IF statement keywords */
        +        2 => array(
        +            'not', 'exist', 'errorlevel',
        +            'defined',
        +            'equ', 'neq', 'lss', 'leq', 'gtr', 'geq'
        +            ),
        +        /* Internal commands */
        +        3 => array(
        +            'cd', 'md', 'rd', 'chdir', 'mkdir', 'rmdir', 'dir',
        +            'del', 'copy', 'move', 'ren', 'rename',
        +            'echo',
        +            'setlocal', 'endlocal', 'set',
        +            'pause',
        +            'pushd', 'popd', 'title', 'verify'
        +            ),
        +        /* Special files */
        +        4 => array(
        +            'prn', 'nul', 'lpt3', 'lpt2', 'lpt1', 'con',
        +            'com4', 'com3', 'com2', 'com1', 'aux'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '@', '%', '!', '|', '<', '>', '&'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #00b100; font-weight: bold;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #b1b100; font-weight: bold;',
        +            4 => 'color: #0000ff; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            2 => 'color: #b100b1; font-style: italic;',
        +            3 => 'color: #33cc33;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #ff0000; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #33cc33;',
        +            1 => 'color: #33cc33;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #b100b1; font-weight: bold;',
        +            1 => 'color: #448844;',
        +            2 => 'color: #448888;',
        +            3 => 'color: #448888;'
        +            )
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'URLS' => array(
        +        1 => 'http://www.ss64.com/nt/{FNAMEL}.html',
        +        2 => 'http://www.ss64.com/nt/{FNAMEL}.html',
        +        3 => 'http://www.ss64.com/nt/{FNAMEL}.html',
        +        4 => 'http://www.ss64.com/nt/{FNAMEL}.html'
        +        ),
        +    'REGEXPS' => array(
        +        /* Label */
        +        0 => array(
        +/*            GESHI_SEARCH => '((?si:[@\s]+GOTO\s+|\s+:)[\s]*)((? '((?si:[@\s]+GOTO\s+|\s+:)[\s]*)((? '\\2',
        +            GESHI_MODIFIERS => 'si',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +        ),
        +        /* Variable assignement */
        +        1 => array(
        +/*            GESHI_SEARCH => '(SET[\s]+(?si:\/A[\s]+|\/P[\s]+|))([^=\s\n]+)([\s]*=)',*/
        +            GESHI_SEARCH => '(SET\s+(?si:\\/A\s+|\\/P\s+)?)([^=\n]+)(\s*=)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'si',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3'
        +            ),
        +        /* Arguments or variable evaluation */
        +        2 => array(
        +/*            GESHI_SEARCH => '(%)([\d*]|[^%\s]*(?=%))((? '(!(?:!(?=[a-z0-9]))?)([\d*]|(?:~[adfnpstxz]*(?:$\w+:)?)?[a-z0-9](?!\w)|[^!>\n]*(?=!))((?)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'si',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3'
        +            ),
        +        /* Arguments or variable evaluation */
        +        3 => array(
        +/*            GESHI_SEARCH => '(%)([\d*]|[^%\s]*(?=%))((? '(%(?:%(?=[a-z0-9]))?)([\d*]|(?:~[adfnpstxz]*(?:$\w+:)?)?[a-z0-9](?!\w)|[^%\n]*(?=%))((? '\\2',
        +            GESHI_MODIFIERS => 'si',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3'
        +            )
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'ENABLE_FLAGS' => array(
        +            'BRACKETS' => GESHI_NEVER,
        +            'NUMBERS' => GESHI_NEVER
        +            ),
        +        'KEYWORDS' => array(
        +            1 => array(
        +                'DISALLOWED_BEFORE' => '(? array(
        +                'DISALLOWED_BEFORE' => '(? array(
        +                'DISALLOWED_BEFORE' => '(? array(
        +                'DISALLOWED_BEFORE' => '(? 'dot',
        +    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'URL', 'arrowhead', 'arrowsize', 'arrowtail', 'bb', 'bgcolor', 'bottomlabel',
        +            'center', 'clusterrank', 'color', 'comment', 'constraint', 'decorate',
        +            'dir', 'distortion', 'fillcolor', 'fixedsize', 'fontcolor',
        +            'fontname', 'fontsize', 'group', 'headclip', 'headlabel', 'headport',
        +            'height', 'id', 'label', 'labelangle', 'labeldistance', 'labelfontcolor',
        +            'labelfontname', 'labelfontsize', 'layer', 'layers', 'margin', 'mclimit',
        +            'minlen', 'nodesep', 'nslimit', 'ordering', 'orientation', 'page',
        +            'pagedir', 'peripheries', 'port_label_distance', 'quantum', 'rank', 'rankdir',
        +            'ranksep', 'ratio', 'regular', 'rotate', 'samehead', 'sametail', 'searchsize',
        +            'shape', 'shapefile', 'showboxes', 'sides', 'size', 'skew', 'style',
        +            'tailclip', 'taillabel', 'tailport', 'toplabel', 'weight', 'width'
        +            ),
        +        2 => array(
        +            'node', 'graph', 'digraph', 'strict', 'edge', 'subgraph'
        +            ),
        +        3 => array(
        +            'Mcircle', 'Mdiamond', 'Mrecord', 'Msquare', 'auto', 'back', 'bold',
        +            'both', 'box', 'circle', 'compress', 'dashed', 'diamond', 'dot',
        +            'dotted', 'doublecircle', 'doubleoctagon', 'egg', 'ellipse', 'epsf',
        +            'false', 'fill', 'filled', 'forward', 'global', 'hexagon', 'house',
        +            'inv', 'invdot', 'invhouse', 'invis', 'invodot', 'invtrapezium',
        +            'invtriangle', 'local', 'max', 'min', 'none', 'normal', 'octagon',
        +            'odot', 'out', 'parallelogram', 'plaintext', 'polygon', 'record',
        +            'same', 'solid', 'trapezium', 'triangle', 'tripleoctagon', 'true'
        +            ),
        +        4 => array(
        +            'aliceblue', 'antiquewhite', 'aquamarine', 'azure', 'beige', 'bisque', 'black',
        +            'blanchedalmond', 'blue', 'blueviolet', 'brown', 'burlywood', 'cadetblue',
        +            'chartreuse', 'chocolate', 'coral', 'cornflowerblue', 'cornsilk', 'crimson',
        +            'cyan', 'darkgoldenrod', 'darkgreen', 'darkkhaki', 'darkolivegreen',
        +            'darkorange', 'darkorchid', 'darksalmon', 'darkseagreen', 'darkslateblue',
        +            'darkslategray', 'darkturquoise', 'darkviolet', 'deeppink', 'deepskyblue',
        +            'dimgray', 'dodgerblue', 'firebrick', 'forestgreen', 'gainsboro', 'ghostwhite',
        +            'gold', 'goldenrod', 'gray', 'green', 'greenyellow', 'honeydew', 'hotpink',
        +            'indianred', 'indigo', 'ivory', 'khaki', 'lavender', 'lavenderblush',
        +            'lawngreen', 'lemonchiffon', 'lightblue', 'lightcyan', 'lightgoldenrod',
        +            'lightgoldenrodyellow', 'lightgray', 'lightpink', 'lightsalmon',
        +            'lightseagreen', 'lightskyblue', 'lightslateblue', 'lightslategray',
        +            'lightyellow', 'limegreen', 'linen', 'magenta', 'maroon', 'mediumaquamarine',
        +            'mediumblue', 'mediumorchid', 'mediumpurple', 'mediumseagreen',
        +            'mediumslateblue', 'mediumspringgreen', 'mediumturquoise', 'mediumvioletred',
        +            'midnightblue', 'mintcream', 'mistyrose', 'moccasin', 'navajowhite', 'navy',
        +            'navyblue', 'oldlace', 'olivedrab', 'oralwhite', 'orange', 'orangered',
        +            'orchid', 'palegoldenrod', 'palegreen', 'paleturquoise', 'palevioletred',
        +            'papayawhip', 'peachpuff', 'peru', 'pink', 'plum', 'powderblue', 'purple',
        +            'red', 'rosybrown', 'royalblue', 'saddlebrown', 'salmon', 'salmon2', 'sandybrown',
        +            'seagreen', 'seashell', 'sienna', 'skyblue', 'slateblue', 'slategray', 'snow',
        +            'springgreen', 'steelblue', 'tan', 'thistle', 'tomato', 'turquoise', 'violet',
        +            'violetred', 'wheat', 'white', 'whitesmoke', 'yellow', 'yellowgreen'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '[', ']', '{', '}', '-', '+', '*', '/', '<', '>', '!', '~', '%', '&', '|', '='
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000066;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #993333;',
        +            4 => 'color: #b1b100;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            2 => 'color: #339933;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #af624d; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => true,
        +        1 => true,
        +        2 => true,
        +        3 => true
        +        )
        +);
        diff --git a/includes/geshi/e.php b/includes/geshi/e.php
        new file mode 100644
        index 0000000..4d4c539
        --- /dev/null
        +++ b/includes/geshi/e.php
        @@ -0,0 +1,206 @@
        + 'E',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array('/**' => '*/'), // Note: This is method doc, not a general comment syntax.
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +
        +    // FIXME: The escaping inside ` is actually doubling of any interior `, $, or @ -- backslash is NOT special
        +    'QUOTEMARKS' => array('\'', '"', '`'),
        +    'ESCAPE_CHAR' => '\\',
        +
        +    'KEYWORDS' => array(
        +        // builtin control structures
        +        1 => array(
        +            'accum', 'break', 'try', 'continue', 'if', 'while', 'for', 'switch'
        +            ),
        +
        +        // control structures subsidiary keywords
        +        2 => array(
        +            'catch', 'else', 'finally', 'in', 'exit'
        +            ),
        +
        +        // named operators
        +        3 => array(
        +            'fn', 'via'
        +            ),
        +
        +        // variable/function/object definers
        +        4 => array(
        +            'def', 'bind', 'var'
        +            ),
        +
        +        // object definition subsidiary keywords
        +        5 => array(
        +            'extends', 'as', 'implements', 'guards', 'match', 'to', 'method'
        +            ),
        +
        +        // builtin nouns in safeEnv
        +        6 => array(
        +            'null', 'false', 'true', 'throw', '__loop', '__makeList',
        +            '__makeMap', '__makeProtocolDesc', '__makeMessageDesc',
        +            '__makeParamDesc', 'any', 'void', 'boolean', '__makeOrderedSpace',
        +            'ValueGuard', '__MatchContext', 'require', '__makeVerbFacet', 'NaN',
        +            'Infinity', '__identityFunc', '__makeInt', '__makeFinalSlot',
        +            '__makeVarSlot', '__makeGuardedSlot', '__makeGuard', '__makeTwine',
        +            '__makeSourceSpan', '__auditedBy', 'Guard', 'near', 'pbc',
        +            'PassByCopy', 'DeepPassByCopy', 'Data', 'Persistent', 'DeepFrozen',
        +            'int', 'float64', 'char', 'String', 'Twine', 'TextWriter', 'List',
        +            'Map', 'nullOk', 'Tuple', '__Portrayal', 'notNull', 'vow', 'rcvr',
        +            'SturdyRef', 'simple__quasiParser', 'twine__quasiParser',
        +            'rx__quasiParser', 'e__quasiParser', 'epatt__quasiParser',
        +            'sml__quasiParser', 'term__quasiParser', 'traceln', '__equalizer',
        +            '__comparer', 'Ref', 'E', 'promiseAllFulfilled', 'EIO', 'help',
        +            'safeScope', '__eval', 'resource__uriGetter', 'type__uriGetter',
        +            'import__uriGetter', 'elib__uriGetter', 'elang__uriGetter',
        +            'opaque__uriGetter'
        +            ),
        +
        +        // builtin nouns in privilegedEnv
        +        7 => array(
        +            'file__uriGetter', 'fileURL__uriGetter', 'jar__uriGetter',
        +            'http__uriGetter', 'ftp__uriGetter', 'gopher__uriGetter',
        +            'news__uriGetter', 'cap__uriGetter', 'makeCommand', 'stdout',
        +            'stderr', 'stdin', 'print', 'println', 'interp', 'entropy', 'timer',
        +            'introducer', 'identityMgr', 'makeSturdyRef', 'timeMachine',
        +            'unsafe__uriGetter', 'currentVat', 'rune', 'awt__uriGetter',
        +            'swing__uriGetter', 'JPanel__quasiParser', 'swt__uriGetter',
        +            'currentDisplay', 'swtGrid__quasiParser', 'swtGrid`',
        +            'privilegedScope'
        +            ),
        +
        +        // reserved keywords
        +        8 => array(
        +            'abstract', 'an', 'assert', 'attribute', 'be', 'begin', 'behalf',
        +            'belief', 'believe', 'believes', 'case', 'class', 'const',
        +            'constructor', 'declare', 'default', 'define', 'defmacro',
        +            'delicate', 'deprecated', 'dispatch', 'do', 'encapsulate',
        +            'encapsulated', 'encapsulates', 'end', 'ensure', 'enum', 'eventual',
        +            'eventually', 'export', 'facet', 'forall', 'function', 'given',
        +            'hidden', 'hides', 'inline', 'is', 'know', 'knows', 'lambda', 'let',
        +            'methods', 'module', 'namespace', 'native', 'obeys', 'octet',
        +            'oneway', 'operator', 'package', 'private', 'protected', 'public',
        +            'raises', 'reliance', 'reliant', 'relies', 'rely', 'reveal', 'sake',
        +            'signed', 'static', 'struct', 'suchthat', 'supports', 'suspect',
        +            'suspects', 'synchronized', 'this', 'transient', 'truncatable',
        +            'typedef', 'unsigned', 'unum', 'uses', 'using', 'utf8', 'utf16',
        +            'virtual', 'volatile', 'wstring'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        1 => array(
        +            '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '%', '=', '<', '>', '!', '^', '&', '|', '?', ':', ';', ','
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true,
        +        8 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #b1b100;',
        +            3 => 'color: #b1b100;',
        +            4 => 'color: #b1b100;',
        +            5 => 'color: #b1b100;',
        +            6 => 'color: #b1b100;',
        +            7 => 'color: #b1b100;',
        +            8 => 'color: #b1b100;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;',
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #004000;'
        +            ),
        +        'SYMBOLS' => array(
        +            1 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(),
        +        'SCRIPT' => array()
        +        ),
        +    'URLS' => array(
        +        1 => 'http://wiki.erights.org/wiki/{FNAME}',
        +        2 => 'http://wiki.erights.org/wiki/{FNAME}',
        +        3 => 'http://wiki.erights.org/wiki/{FNAME}',
        +        4 => 'http://wiki.erights.org/wiki/{FNAME}',
        +        5 => 'http://wiki.erights.org/wiki/{FNAME}',
        +        6 => 'http://wiki.erights.org/wiki/{FNAME}',
        +        7 => 'http://wiki.erights.org/wiki/{FNAME}',
        +        8 => 'http://wiki.erights.org/wiki/{FNAME}'
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.',
        +        2 => '<-',
        +        3 => '::'
        +        ),
        +    'REGEXPS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/ecmascript.php b/includes/geshi/ecmascript.php
        new file mode 100644
        index 0000000..7a1da92
        --- /dev/null
        +++ b/includes/geshi/ecmascript.php
        @@ -0,0 +1,208 @@
        + 'ECMAScript',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    // Regular Expression Literals
        +    'COMMENT_REGEXP' => array(2 => "/(?<=[\\s^])s\\/(?:\\\\.|(?!\n)[^\\*\\/\\\\])+\\/(?:\\\\.|(?!\n)[^\\*\\/\\\\])+\\/[gimsu]*(?=[\\s$\\.\\;])|(?<=[\\s^(=])m?\\/(?:\\\\.|(?!\n)[^\\*\\/\\\\])+\\/[gimsu]*(?=[\\s$\\.\\,\\;\\)])/iU"),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        //Simple Single Char Escapes
        +        1 => "#\\\\[\\\\abfnrtv\'\"?\n]#i",
        +        //Hexadecimal Char Specs
        +        2 => "#\\\\x[\da-fA-F]{2}#",
        +        //Hexadecimal Char Specs
        +        3 => "#\\\\u[\da-fA-F]{4}#",
        +        //Hexadecimal Char Specs
        +        4 => "#\\\\U[\da-fA-F]{8}#",
        +        //Octal Char Specs
        +        5 => "#\\\\[0-7]{1,3}#"
        +        ),
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |
        +        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
        +        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        1 => array( // Reserved literals
        +            'false', 'true',
        +            'null'
        +            ),
        +        2 => array( // Main keywords
        +            'break', 'case', 'catch', 'continue', 'default', 'delete', 'do', 'else',
        +            'finally', 'for', 'function', 'if', 'in', 'instanceof', 'new', 'return',
        +            'switch', 'this', 'throw', 'try', 'typeof', 'var', 'void', 'while',
        +            'with'
        +            ),
        +        3 => array( // Extra keywords or keywords reserved for future use
        +            'abstract', 'as', 'boolean', 'byte', 'char', 'class', 'const', 'debugger',
        +            'double', 'enum', 'export', 'extends', 'final', 'float', 'goto', 'implements',
        +            'import', 'int', 'interface', 'is', 'long', 'native', 'namespace', 'package',
        +            'private', 'protected', 'public', 'short', 'static', 'super', 'synchronized', 'throws',
        +            'transient', 'use', 'volatile'
        +            ),
        +        4 => array( // Operators
        +            'get', 'set'
        +            ),
        +        5 => array( // Built-in object classes
        +            'Array', 'Boolean', 'Date', 'EvalError', 'Error', 'Function', 'Math', 'Number',
        +            'Object', 'RangeError', 'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError'
        +            ),
        +        6 => array( // Global properties
        +            'Infinity', 'NaN', 'undefined'
        +            ),
        +        7 => array( // Global methods
        +            'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent',
        +            'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt',
        +            // The escape and unescape functions do not work properly for non-ASCII characters and have been deprecated.
        +            // In JavaScript 1.5 and later, use encodeURI, decodeURI, encodeURIComponent, and decodeURIComponent.
        +            'escape', 'unescape'
        +            ),
        +        8 => array( // Function's arguments
        +            'arguments'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}',
        +        '+', '-', '*', '/', '%',
        +        '!', '.', '&', '|', '^',
        +        '<', '>', '=', '~',
        +        ',', ';', '?', ':'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true,
        +        8 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #009999;',
        +            2 => 'color: #1500C8;',
        +            3 => 'color: #1500C8;',
        +            4 => 'color: #1500C8;',
        +            5 => 'color: #1500C8;',
        +            6 => 'color: #1500C8;',
        +            7 => 'color: #1500C8;',
        +            8 => 'color: #1500C8;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            2 => 'color: #CC0000;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #3366CC;',
        +            1 => 'color: #3366CC;',
        +            2 => 'color: #3366CC;',
        +            3 => 'color: #3366CC;',
        +            4 => 'color: #3366CC;',
        +            5 => 'color: #3366CC;',
        +            'HARD' => '',
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #008800;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #9900FF;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #FF00FF;',
        +            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #FF00FF;',
        +            GESHI_NUMBER_OCT_PREFIX => 'color: #FF00FF;',
        +            GESHI_NUMBER_HEX_PREFIX => 'color: #FF00FF;',
        +            GESHI_NUMBER_FLT_SCI_SHORT => 'color: #FF00FF;',
        +            GESHI_NUMBER_FLT_SCI_ZERO => 'color: #FF00FF;',
        +            GESHI_NUMBER_FLT_NONSCI_F => 'color: #FF00FF;',
        +            GESHI_NUMBER_FLT_NONSCI => 'color: #FF00FF;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #660066;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => '',
        +            2 => '',
        +            3 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => '',
        +        7 => '',
        +        8 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/eiffel.php b/includes/geshi/eiffel.php
        new file mode 100644
        index 0000000..5142e79
        --- /dev/null
        +++ b/includes/geshi/eiffel.php
        @@ -0,0 +1,393 @@
        + 'Eiffel',
        +    'COMMENT_SINGLE' => array(1 => '--'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '%',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'separate',
        +            'invariant',
        +            'inherit',
        +            'indexing',
        +            'feature',
        +            'expanded',
        +            'deferred',
        +            'class'
        +            ),
        +        2 => array(
        +            'xor',
        +            'when',
        +            'variant',
        +            'until',
        +            'unique',
        +            'undefine',
        +            'then',
        +            'strip',
        +            'select',
        +            'retry',
        +            'rescue',
        +            'require',
        +            'rename',
        +            'reference',
        +            'redefine',
        +            'prefix',
        +            'or',
        +            'once',
        +            'old',
        +            'obsolete',
        +            'not',
        +            'loop',
        +            'local',
        +            'like',
        +            'is',
        +            'inspect',
        +            'infix',
        +            'include',
        +            'implies',
        +            'if',
        +            'frozen',
        +            'from',
        +            'external',
        +            'export',
        +            'ensure',
        +            'end',
        +            'elseif',
        +            'else',
        +            'do',
        +            'creation',
        +            'create',
        +            'check',
        +            'as',
        +            'and',
        +            'alias',
        +            'agent'
        +            ),
        +        3 => array(
        +            'Void',
        +            'True',
        +            'Result',
        +            'Precursor',
        +            'False',
        +            'Current'
        +            ),
        +        4 => array(
        +            'UNIX_SIGNALS',
        +            'UNIX_FILE_INFO',
        +            'UNBOUNDED',
        +            'TWO_WAY_TREE_CURSOR',
        +            'TWO_WAY_TREE',
        +            'TWO_WAY_SORTED_SET',
        +            'TWO_WAY_LIST',
        +            'TWO_WAY_CURSOR_TREE',
        +            'TWO_WAY_CIRCULAR',
        +            'TWO_WAY_CHAIN_ITERATOR',
        +            'TUPLE',
        +            'TREE',
        +            'TRAVERSABLE',
        +            'TO_SPECIAL',
        +            'THREAD_CONTROL',
        +            'THREAD_ATTRIBUTES',
        +            'THREAD',
        +            'TABLE',
        +            'SUBSET',
        +            'STRING_HANDLER',
        +            'STRING',
        +            'STREAM',
        +            'STORABLE',
        +            'STD_FILES',
        +            'STACK',
        +            'SPECIAL',
        +            'SORTED_TWO_WAY_LIST',
        +            'SORTED_STRUCT',
        +            'SORTED_LIST',
        +            'SINGLE_MATH',
        +            'SET',
        +            'SEQUENCE',
        +            'SEQ_STRING',
        +            'SEMAPHORE',
        +            'ROUTINE',
        +            'RESIZABLE',
        +            'RECURSIVE_TREE_CURSOR',
        +            'RECURSIVE_CURSOR_TREE',
        +            'REAL_REF',
        +            'REAL',
        +            'RAW_FILE',
        +            'RANDOM',
        +            'QUEUE',
        +            'PROXY',
        +            'PROFILING_SETTING',
        +            'PROCEDURE',
        +            'PRIORITY_QUEUE',
        +            'PRIMES',
        +            'PRECOMP',
        +            'POINTER_REF',
        +            'POINTER',
        +            'PLATFORM',
        +            'PLAIN_TEXT_FILE',
        +            'PATH_NAME',
        +            'PART_SORTED_TWO_WAY_LIST',
        +            'PART_SORTED_SET',
        +            'PART_SORTED_LIST',
        +            'PART_COMPARABLE',
        +            'OPERATING_ENVIRONMENT',
        +            'ONCE_CONTROL',
        +            'OBJECT_OWNER',
        +            'OBJECT_CONTROL',
        +            'NUMERIC',
        +            'NONE',
        +            'MUTEX',
        +            'MULTI_ARRAY_LIST',
        +            'MULTAR_LIST_CURSOR',
        +            'MEMORY',
        +            'MEM_INFO',
        +            'MEM_CONST',
        +            'MATH_CONST',
        +            'LIST',
        +            'LINKED_TREE_CURSOR',
        +            'LINKED_TREE',
        +            'LINKED_STACK',
        +            'LINKED_SET',
        +            'LINKED_QUEUE',
        +            'LINKED_PRIORITY_QUEUE',
        +            'LINKED_LIST_CURSOR',
        +            'LINKED_LIST',
        +            'LINKED_CURSOR_TREE',
        +            'LINKED_CIRCULAR',
        +            'LINKABLE',
        +            'LINEAR_ITERATOR',
        +            'LINEAR',
        +            'ITERATOR',
        +            'IO_MEDIUM',
        +            'INTERNAL',
        +            'INTEGER_REF',
        +            'INTEGER_INTERVAL',
        +            'INTEGER',
        +            'INFINITE',
        +            'INDEXABLE',
        +            'IDENTIFIED_CONTROLLER',
        +            'IDENTIFIED',
        +            'HIERARCHICAL',
        +            'HEAP_PRIORITY_QUEUE',
        +            'HASHABLE',
        +            'HASH_TABLE_CURSOR',
        +            'HASH_TABLE',
        +            'GENERAL',
        +            'GC_INFO',
        +            'FUNCTION',
        +            'FORMAT_INTEGER',
        +            'FORMAT_DOUBLE',
        +            'FIXED_TREE',
        +            'FIXED_LIST',
        +            'FIXED',
        +            'FINITE',
        +            'FILE_NAME',
        +            'FILE',
        +            'FIBONACCI',
        +            'EXECUTION_ENVIRONMENT',
        +            'EXCEPTIONS',
        +            'EXCEP_CONST',
        +            'DYNAMIC_TREE',
        +            'DYNAMIC_LIST',
        +            'DYNAMIC_CIRCULAR',
        +            'DYNAMIC_CHAIN',
        +            'DOUBLE_REF',
        +            'DOUBLE_MATH',
        +            'DOUBLE',
        +            'DISPENSER',
        +            'DIRECTORY_NAME',
        +            'DIRECTORY',
        +            'DECLARATOR',
        +            'DEBUG_OUTPUT',
        +            'CURSOR_TREE_ITERATOR',
        +            'CURSOR_TREE',
        +            'CURSOR_STRUCTURE',
        +            'CURSOR',
        +            'COUNTABLE_SEQUENCE',
        +            'COUNTABLE',
        +            'CONTAINER',
        +            'CONSOLE',
        +            'CONDITION_VARIABLE',
        +            'COMPARABLE_STRUCT',
        +            'COMPARABLE_SET',
        +            'COMPARABLE',
        +            'COMPACT_TREE_CURSOR',
        +            'COMPACT_CURSOR_TREE',
        +            'COLLECTION',
        +            'CIRCULAR_CURSOR',
        +            'CIRCULAR',
        +            'CHARACTER_REF',
        +            'CHARACTER',
        +            'CHAIN',
        +            'CELL',
        +            'BOX',
        +            'BOUNDED_STACK',
        +            'BOUNDED_QUEUE',
        +            'BOUNDED',
        +            'BOOLEAN_REF',
        +            'BOOLEAN',
        +            'BOOL_STRING',
        +            'BIT_REF',
        +            'BINARY_TREE',
        +            'BINARY_SEARCH_TREE_SET',
        +            'BINARY_SEARCH_TREE',
        +            'BILINEAR',
        +            'BI_LINKABLE',
        +            'BASIC_ROUTINES',
        +            'BAG',
        +            'ASCII',
        +            'ARRAYED_TREE',
        +            'ARRAYED_STACK',
        +            'ARRAYED_QUEUE',
        +            'ARRAYED_LIST_CURSOR',
        +            'ARRAYED_LIST',
        +            'ARRAYED_CIRCULAR',
        +            'ARRAY2',
        +            'ARRAY',
        +            'ARGUMENTS',
        +            'ANY',
        +            'ACTIVE'
        +            ),
        +        5 => array(
        +            'yes',
        +            'visible',
        +            'trace',
        +            'system',
        +            'root',
        +            'profile',
        +            'override_cluster',
        +            'object',
        +            'no',
        +            'multithreaded',
        +            'msil_generation_type',
        +            'line_generation',
        +            'library',
        +            'inlining_size',
        +            'inlining',
        +            'include_path',
        +            'il_verifiable',
        +            'exclude',
        +            'exception_trace',
        +            'dynamic_runtime',
        +            'dotnet_naming_convention',
        +            'disabled_debug',
        +            'default',
        +            'debug',
        +            'dead_code_removal',
        +            'console_application',
        +            'cluster',
        +            'cls_compliant',
        +            'check_vape',
        +            'assertion',
        +            'array_optimization',
        +            'all',
        +            'address_expression'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', '|', ':',
        +        '(', ')', '{', '}', '[', ']', '#'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => true,
        +        5 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0600FF; font-weight: bold;',
        +            2 => 'color: #0600FF; font-weight: bold;',
        +            3 => 'color: #800080;',
        +            4 => 'color: #800000',
        +            5 => 'color: #603000;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008000; font-style: italic;',
        +            'MULTI' => ''
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #005070; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #FF0000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #0080A0;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #FF0000;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #000060;',
        +            2 => 'color: #000050;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #600000;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => 'http://www.google.com/search?q=site%3Ahttp%3A%2F%2Fdocs.eiffel.com%2Feiffelstudio%2Flibraries+{FNAMEL}&btnI=I%27m+Feeling+Lucky',
        +        5 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/email.php b/includes/geshi/email.php
        new file mode 100644
        index 0000000..4ddc6ab
        --- /dev/null
        +++ b/includes/geshi/email.php
        @@ -0,0 +1,220 @@
        + 'eMail (mbox)',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'HTTP', 'SMTP', 'ASMTP', 'ESMTP'
        +            ),
        +        2 => array(
        +            'Authentication-Results','Comment','Content-Description','Content-Type',
        +            'Content-Disposition','Content-Transfer-Encoding','Delivered-To',
        +            'Dkim-Signature','Domainkey-Signature','In-Reply-To','Message-Id',
        +            'MIME-Version','OpenPGP','Received','Received-SPF','References',
        +            'Reply-To', 'Resend-From','Resend-To','Return-Path','User-Agent'
        +            ),
        +        3 => array(
        +            'Date','From','Sender','Subject','To','CC'
        +            ),
        +        4 => array(
        +            'by', 'for', 'from', 'id', 'with'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        ':', ';', '<', '>', '[', ']'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => false,
        +        3 => false,
        +        4 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000FF; font-weight: bold;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #800000; font-weight: bold;',
        +            4 => 'font-weight: bold;',
        +            ),
        +        'COMMENTS' => array(
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => 'color: #000040;',
        +            ),
        +        'REGEXPS' => array(
        +            1 => 'color: #000000; font-weight: bold;',
        +            2 => 'color: #0000FF;',
        +            3 => 'color: #008000;',
        +            4 => 'color: #0000FF; font-weight: bold;',
        +            5 => 'font-weight: bold;',
        +            6 => 'color: #400080;'
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        // Non-Standard-Header
        +        1 => array(
        +            GESHI_SEARCH => "(?<=\A\x20|\n)x-[a-z0-9\-]*(?=\s*:|\s*<)",
        +            GESHI_REPLACE => "\\0",
        +            GESHI_MODIFIERS => "smi",
        +            GESHI_BEFORE => "",
        +            GESHI_AFTER => ""
        +            ),
        +        //Email-Adresses or Mail-IDs
        +        2 => array(
        +            GESHI_SEARCH => "\b(?\"?)[\w\.\-]+\k@(?!-)[\w\-]+(? "\\0",
        +            GESHI_MODIFIERS => "mi",
        +            GESHI_BEFORE => "",
        +            GESHI_AFTER => ""
        +            ),
        +        //Date values in RFC format
        +        3 => array(
        +            GESHI_SEARCH => "\b(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s+\d\d?\s+" .
        +                "(?:Jan|Feb|Mar|apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+" .
        +                "\d{4}\s+\d\d?:\d\d:\d\d\s+[+\-]\d{4}(?:\s+\(\w+\))?",
        +            GESHI_REPLACE => "\\0",
        +            GESHI_MODIFIERS => "mi",
        +            GESHI_BEFORE => "",
        +            GESHI_AFTER => ""
        +            ),
        +        //IP addresses
        +        4 => array(
        +            GESHI_SEARCH => "(?<=\s)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(?=\s)|".
        +                "(?<=\[)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(?=\])|".
        +                "(?<==)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(?=<)|".
        +
        +                "(?<=\s)(?:[a-f\d]{1,4}\:)+(?:[a-f\d]{0,4})?(?:\:[a-f\d]{1,4})+(?=\s)|".
        +                "(?<=\[)(?:[a-f\d]{1,4}\:)+(?:[a-f\d]{0,4})?(?:\:[a-f\d]{1,4})+(?=\])|".
        +                "(?<==)(?:[a-f\d]{1,4}\:)+(?:[a-f\d]{0,4})?(?:\:[a-f\d]{1,4})+(?=<)|".
        +
        +                "(?<=\s)\:(?:\:[a-f\d]{1,4})+(?=\s)|".
        +                "(?<=\[)\:(?:\:[a-f\d]{1,4})+(?=\])|".
        +                "(?<==)\:(?:\:[a-f\d]{1,4})+(?=<)|".
        +
        +                "(?<=\s)(?:[a-f\d]{1,4}\:)+\:(?=\s)|".
        +                "(?<=\[)(?:[a-f\d]{1,4}\:)+\:(?=\])|".
        +                "(?<==)(?:[a-f\d]{1,4}\:)+\:(?=<)",
        +            GESHI_REPLACE => "\\0",
        +            GESHI_MODIFIERS => "i",
        +            GESHI_BEFORE => "",
        +            GESHI_AFTER => ""
        +            ),
        +        //Field-Assignments
        +        5 => array(
        +            GESHI_SEARCH => "(?<=\s)[A-Z0-9\-\.]+(?==(?:$|\s$|[^\s=]))",
        +            GESHI_REPLACE => "\\0",
        +            GESHI_MODIFIERS => "mi",
        +            GESHI_BEFORE => "",
        +            GESHI_AFTER => ""
        +            ),
        +        //MIME type
        +        6 => array(
        +            GESHI_SEARCH => "(?<=\s)(?:audio|application|image|multipart|text|".
        +                "video|x-[a-z0-9\-]+)\/[a-z0-9][a-z0-9\-]*(?=\s|<|$)",
        +            GESHI_REPLACE => "\\0",
        +            GESHI_MODIFIERS => "m",
        +            GESHI_BEFORE => "",
        +            GESHI_AFTER => ""
        +            )
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
        +    'SCRIPT_DELIMITERS' => array(
        +        0 => "/(?P^)[A-Za-z][a-zA-Z0-9\-]*\s*:\s*(?:.|(?=\n\s)\n)*(?P$)/m"
        +    ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => true,
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            2 => array(
        +                'DISALLOWED_BEFORE' => '(?<=\A\x20|\n)',
        +                'DISALLOWED_AFTER' => '(?=\s*:)',
        +            ),
        +            3 => array(
        +                'DISALLOWED_BEFORE' => '(?<=\A\x20|\n)',
        +                'DISALLOWED_AFTER' => '(?=\s*:)',
        +            ),
        +            4 => array(
        +                'DISALLOWED_BEFORE' => '(?<=\s)',
        +                'DISALLOWED_AFTER' => '(?=\s|\b)',
        +            )
        +        ),
        +        'ENABLE_FLAGS' => array(
        +            'BRACKETS' => GESHI_NEVER,
        +            'COMMENTS' => GESHI_NEVER,
        +            'NUMBERS' => GESHI_NEVER
        +        )
        +    )
        +);
        diff --git a/includes/geshi/epc.php b/includes/geshi/epc.php
        new file mode 100644
        index 0000000..2db41fe
        --- /dev/null
        +++ b/includes/geshi/epc.php
        @@ -0,0 +1,152 @@
        + 'EPC',
        +    'COMMENT_SINGLE' => array('//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        //[Sections]
        +        //1 => "/^\\[.*\\]/"
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array(
        +        0 => '"',
        +        1 => '$'
        +        ),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'if', 'then', 'else', 'endif',
        +            'and', 'or', 'xor', 'hysteresis'
        +            ),
        +        2 => array(
        +            'read', 'write', 'event',
        +            'gettime', 'settime', 'getdate', 'setdate', 'gettimedate', 'settimedate',
        +            'hour', 'minute', 'second', 'changehour', 'changeminute', 'changesecond',
        +            'date', 'month', 'day', 'dayofweek', 'sun', 'azimuth', 'elevation',
        +            'sunrisehour', 'sunriseminute', 'sunsethour', 'sunsetminute',
        +            'wtime', 'htime', 'mtime', 'stime',
        +            'cwtime', 'chtime', 'cmtime', 'cstime',
        +            'delay', 'after', 'cycle',
        +            'readflash', 'writeflash',
        +            'abs', 'acos', 'asin', 'atan', 'cos', 'ceil', 'average', 'exp', 'floor',
        +            'log', 'max', 'min', 'mod', 'pow', 'sqrt', 'sin', 'tan', 'change', 'convert',
        +            'eval', 'systemstart', 'random', 'comobject', 'sleep', 'scene', 'storescene', 'callscene',
        +            'find', 'stringcast', 'stringset', 'stringformat', 'split', 'size',
        +            'readrs232'. 'sendrs232', 'address', 'readknx',
        +            'readudp', 'sendudp', 'connecttcp', 'closetcp', 'readtcp', 'sendtcp',
        +            'resolve', 'sendmail',
        +            'button', 'webbutton', 'chart', 'webchart', 'webdisplay', 'getslider', 'pshifter', 'mpshifter',
        +            'getpslider', 'mbutton', 'mbbutton', 'mchart', 'mpchart', 'mpbutton', 'pdisplay', 'pchart',
        +            'pbutton', 'setslider', 'setpslider', 'slider', 'pslider', 'page', 'line', 'header',
        +            'footer', 'none', 'plink', 'link', 'frame', 'dframe'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array(
        +            '%', 'b01',
        +            ),
        +        1 => array(
        +            '+', '-', '==', '>=', '=<',
        +            ),
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #e63ec3;',
        +            2 => 'color: #e63ec3;'
        +            ),
        +        'COMMENTS' => array(
        +            0 => 'color: #0000ff;'
        +            //1 => 'color: #ffa500;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            1 => 'color: #000099;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #8a0808;',
        +            1 => 'color: #6e6e6e;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #0b610b;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #0b610b;',
        +            1 => 'color: #e63ec3;'
        +            ),
        +        'REGEXPS' => array(
        +            1 => 'color: #0b610b;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        // Numbers, e.g. 255u08
        +        1 => "[0-9]*[subf][0136][12468]"
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'COMMENTS' => array(
        +            'DISALLOWED_BEFORE' => '$'
        +        ),
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => "(?  "(?![\.\-a-zA-Z0-9_%=\\/])"
        +        )
        +    )
        +);
        diff --git a/includes/geshi/erlang.php b/includes/geshi/erlang.php
        new file mode 100644
        index 0000000..9939d1a
        --- /dev/null
        +++ b/includes/geshi/erlang.php
        @@ -0,0 +1,439 @@
        +'
        + *
        + *************************************************************************************
        + *
        + *     This file is part of GeSHi.
        + *
        + *   GeSHi is free software; you can redistribute it and/or modify
        + *   it under the terms of the GNU General Public License as published by
        + *   the Free Software Foundation; either version 2 of the License, or
        + *   (at your option) any later version.
        + *
        + *   GeSHi is distributed in the hope that it will be useful,
        + *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + *   GNU General Public License for more details.
        + *
        + *   You should have received a copy of the GNU General Public License
        + *   along with GeSHi; if not, write to the Free Software
        + *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        + *
        + ************************************************************************************/
        +
        +$language_data = array(
        +    'LANG_NAME' => 'Erlang',
        +    'COMMENT_SINGLE' => array(1 => '%'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'HARDQUOTE' => array("'", "'"),
        +    'HARDESCAPE' => array("'", "\\"),
        +    'HARDCHAR' => "\\",
        +    'ESCAPE_CHAR' => '\\',
        +    'NUMBERS' => GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        //Control flow keywrods
        +        1 => array(
        +            'after', 'andalso', 'begin', 'case', 'catch', 'end', 'fun', 'if',
        +            'of', 'orelse', 'receive', 'try', 'when', 'query'
        +            ),
        +        //Binary operators
        +        2 => array(
        +            'and', 'band', 'bnot', 'bor', 'bsl', 'bsr', 'bxor', 'div', 'not',
        +            'or', 'rem', 'xor'
        +            ),
        +        3 => array(
        +            'abs', 'alive', 'apply', 'atom_to_list', 'binary_to_list',
        +            'binary_to_term', 'concat_binary', 'date', 'disconnect_node',
        +            'element', 'erase', 'exit', 'float', 'float_to_list', 'get',
        +            'get_keys', 'group_leader', 'halt', 'hd', 'integer_to_list',
        +            'is_alive', 'length', 'link', 'list_to_atom', 'list_to_binary',
        +            'list_to_float', 'list_to_integer', 'list_to_pid', 'list_to_tuple',
        +            'load_module', 'make_ref', 'monitor_node', 'node', 'nodes', 'now',
        +            'open_port', 'pid_to_list', 'process_flag', 'process_info',
        +            'process', 'put', 'register', 'registered', 'round', 'self',
        +            'setelement', 'size', 'spawn', 'spawn_link', 'split_binary',
        +            'statistics', 'term_to_binary', 'throw', 'time', 'tl', 'trunc',
        +            'tuple_to_list', 'unlink', 'unregister', 'whereis'
        +            ),
        +        // Built-In Functions
        +        4 => array(
        +            'atom', 'binary', 'constant', 'function', 'integer', 'is_atom',
        +            'is_binary', 'is_constant', 'is_function', 'is_integer', 'is_list',
        +            'is_number', 'is_pid', 'is_reference', 'is_record', 'list',
        +            'number', 'pid', 'ports', 'port_close', 'port_info', 'reference'
        +            ),
        +        // Erlang/OTP internal modules (scary one)
        +        5 => array(
        +            'alarm_handler', 'any', 'app', 'application', 'appmon', 'appup',
        +            'array', 'asn1ct', 'asn1rt', 'auth', 'base64', 'beam_lib', 'c',
        +            'calendar', 'code', 'common_test_app', 'compile', 'config',
        +            'corba', 'corba_object', 'cosEventApp', 'CosEventChannelAdmin',
        +            'CosEventChannelAdmin_ConsumerAdmin',
        +            'CosEventChannelAdmin_EventChannel',
        +            'CosEventChannelAdmin_ProxyPullConsumer',
        +            'CosEventChannelAdmin_ProxyPullSupplier',
        +            'CosEventChannelAdmin_ProxyPushConsumer',
        +            'CosEventChannelAdmin_ProxyPushSupplier',
        +            'CosEventChannelAdmin_SupplierAdmin', 'CosEventDomainAdmin',
        +            'CosEventDomainAdmin_EventDomain',
        +            'CosEventDomainAdmin_EventDomainFactory',
        +            'cosEventDomainApp', 'CosFileTransfer_Directory',
        +            'CosFileTransfer_File', 'CosFileTransfer_FileIterator',
        +            'CosFileTransfer_FileTransferSession',
        +            'CosFileTransfer_VirtualFileSystem',
        +            'cosFileTransferApp', 'CosNaming', 'CosNaming_BindingIterator',
        +            'CosNaming_NamingContext', 'CosNaming_NamingContextExt',
        +            'CosNotification', 'CosNotification_AdminPropertiesAdmin',
        +            'CosNotification_QoSAdmin', 'cosNotificationApp',
        +            'CosNotifyChannelAdmin_ConsumerAdmin',
        +            'CosNotifyChannelAdmin_EventChannel',
        +            'CosNotifyChannelAdmin_EventChannelFactory',
        +            'CosNotifyChannelAdmin_ProxyConsumer',
        +            'CosNotifyChannelAdmin_ProxyPullConsumer',
        +            'CosNotifyChannelAdmin_ProxyPullSupplier',
        +            'CosNotifyChannelAdmin_ProxyPushConsumer',
        +            'CosNotifyChannelAdmin_ProxyPushSupplier',
        +            'CosNotifyChannelAdmin_ProxySupplier',
        +            'CosNotifyChannelAdmin_SequenceProxyPullConsumer',
        +            'CosNotifyChannelAdmin_SequenceProxyPullSupplier',
        +            'CosNotifyChannelAdmin_SequenceProxyPushConsumer',
        +            'CosNotifyChannelAdmin_SequenceProxyPushSupplier',
        +            'CosNotifyChannelAdmin_StructuredProxyPullConsumer',
        +            'CosNotifyChannelAdmin_StructuredProxyPullSupplier',
        +            'CosNotifyChannelAdmin_StructuredProxyPushConsumer',
        +            'CosNotifyChannelAdmin_StructuredProxyPushSupplier',
        +            'CosNotifyChannelAdmin_SupplierAdmin',
        +            'CosNotifyComm_NotifyPublish', 'CosNotifyComm_NotifySubscribe',
        +            'CosNotifyFilter_Filter', 'CosNotifyFilter_FilterAdmin',
        +            'CosNotifyFilter_FilterFactory', 'CosNotifyFilter_MappingFilter',
        +            'cosProperty', 'CosPropertyService_PropertiesIterator',
        +            'CosPropertyService_PropertyNamesIterator',
        +            'CosPropertyService_PropertySet',
        +            'CosPropertyService_PropertySetDef',
        +            'CosPropertyService_PropertySetDefFactory',
        +            'CosPropertyService_PropertySetFactory', 'cosTime',
        +            'CosTime_TimeService', 'CosTime_TIO', 'CosTime_UTO',
        +            'CosTimerEvent_TimerEventHandler',
        +            'CosTimerEvent_TimerEventService', 'cosTransactions',
        +            'CosTransactions_Control', 'CosTransactions_Coordinator',
        +            'CosTransactions_RecoveryCoordinator', 'CosTransactions_Resource',
        +            'CosTransactions_SubtransactionAwareResource',
        +            'CosTransactions_Terminator', 'CosTransactions_TransactionFactory',
        +            'cover', 'cprof', 'cpu_sup', 'crashdump', 'crypto', 'crypto_app',
        +            'ct', 'ct_cover', 'ct_ftp', 'ct_master', 'ct_rpc', 'ct_snmp',
        +            'ct_ssh', 'ct_telnet', 'dbg', 'debugger', 'dets', 'dialyzer',
        +            'dict', 'digraph', 'digraph_utils', 'disk_log', 'disksup',
        +            'docb_gen', 'docb_transform', 'docb_xml_check', 'docbuilder_app',
        +            'driver_entry', 'edoc', 'edoc_doclet', 'edoc_extract',
        +            'edoc_layout', 'edoc_lib', 'edoc_run', 'egd', 'ei', 'ei_connect',
        +            'epmd', 'epp', 'epp_dodger', 'eprof', 'erl', 'erl_boot_server',
        +            'erl_call', 'erl_comment_scan', 'erl_connect', 'erl_ddll',
        +            'erl_driver', 'erl_error', 'erl_eterm', 'erl_eval',
        +            'erl_expand_records', 'erl_format', 'erl_global', 'erl_id_trans',
        +            'erl_internal', 'erl_lint', 'erl_malloc', 'erl_marshal',
        +            'erl_parse', 'erl_pp', 'erl_prettypr', 'erl_prim_loader',
        +            'erl_prim_loader_stub', 'erl_recomment', 'erl_scan',
        +            'erl_set_memory_block', 'erl_syntax', 'erl_syntax_lib', 'erl_tar',
        +            'erl_tidy', 'erlang', 'erlang_mode', 'erlang_stub', 'erlc',
        +            'erlsrv', 'error_handler', 'error_logger', 'erts_alloc',
        +            'erts_alloc_config', 'escript', 'et', 'et_collector',
        +            'et_selector', 'et_viewer', 'etop', 'ets', 'eunit', 'file',
        +            'file_sorter', 'filelib', 'filename', 'fixed', 'fprof', 'ftp',
        +            'gb_sets', 'gb_trees', 'gen_event', 'gen_fsm', 'gen_sctp',
        +            'gen_server', 'gen_tcp', 'gen_udp', 'gl', 'global', 'global_group',
        +            'glu', 'gs', 'heart', 'http', 'httpd', 'httpd_conf',
        +            'httpd_socket', 'httpd_util', 'i', 'ic', 'ic_c_protocol',
        +            'ic_clib', 'igor', 'inet', 'inets', 'init', 'init_stub',
        +            'instrument', 'int', 'interceptors', 'inviso', 'inviso_as_lib',
        +            'inviso_lfm', 'inviso_lfm_tpfreader', 'inviso_rt',
        +            'inviso_rt_meta', 'io', 'io_lib', 'kernel_app', 'lib', 'lists',
        +            'lname', 'lname_component', 'log_mf_h', 'make', 'math', 'megaco',
        +            'megaco_codec_meas', 'megaco_codec_transform',
        +            'megaco_edist_compress', 'megaco_encoder', 'megaco_flex_scanner',
        +            'megaco_tcp', 'megaco_transport', 'megaco_udp', 'megaco_user',
        +            'memsup', 'mnesia', 'mnesia_frag_hash', 'mnesia_registry',
        +            'mod_alias', 'mod_auth', 'mod_esi', 'mod_security',
        +            'Module_Interface', 'ms_transform', 'net_adm', 'net_kernel',
        +            'new_ssl', 'nteventlog', 'observer_app', 'odbc', 'orber',
        +            'orber_acl', 'orber_diagnostics', 'orber_ifr', 'orber_tc',
        +            'orddict', 'ordsets', 'os', 'os_mon', 'os_mon_mib', 'os_sup',
        +            'otp_mib', 'overload', 'packages', 'percept', 'percept_profile',
        +            'pg', 'pg2', 'pman', 'pool', 'prettypr', 'proc_lib', 'proplists',
        +            'public_key', 'qlc', 'queue', 'random', 'rb', 're', 'regexp',
        +            'registry', 'rel', 'release_handler', 'reltool', 'relup', 'rpc',
        +            'run_erl', 'run_test', 'runtime_tools_app', 'sasl_app', 'script',
        +            'seq_trace', 'sets', 'shell', 'shell_default', 'slave', 'snmp',
        +            'snmp_app', 'snmp_community_mib', 'snmp_framework_mib',
        +            'snmp_generic', 'snmp_index', 'snmp_notification_mib', 'snmp_pdus',
        +            'snmp_standard_mib', 'snmp_target_mib', 'snmp_user_based_sm_mib',
        +            'snmp_view_based_acm_mib', 'snmpa', 'snmpa_conf', 'snmpa_error',
        +            'snmpa_error_io', 'snmpa_error_logger', 'snmpa_error_report',
        +            'snmpa_local_db', 'snmpa_mpd', 'snmpa_network_interface',
        +            'snmpa_network_interface_filter',
        +            'snmpa_notification_delivery_info_receiver',
        +            'snmpa_notification_filter', 'snmpa_supervisor', 'snmpc', 'snmpm',
        +            'snmpm_conf', 'snmpm_mpd', 'snmpm_network_interface', 'snmpm_user',
        +            'sofs', 'ssh', 'ssh_channel', 'ssh_connection', 'ssh_sftp',
        +            'ssh_sftpd', 'ssl', 'ssl_app', 'ssl_pkix', 'start', 'start_erl',
        +            'start_webtool', 'stdlib_app', 'string', 'supervisor',
        +            'supervisor_bridge', 'sys', 'systools', 'tags', 'test_server',
        +            'test_server_app', 'test_server_ctrl', 'tftp', 'timer', 'toolbar',
        +            'ttb', 'tv', 'unicode', 'unix_telnet', 'user', 'webtool', 'werl',
        +            'win32reg', 'wrap_log_reader', 'wx', 'wx_misc', 'wx_object',
        +            'wxAcceleratorEntry', 'wxAcceleratorTable', 'wxArtProvider',
        +            'wxAuiDockArt', 'wxAuiManager', 'wxAuiNotebook', 'wxAuiPaneInfo',
        +            'wxAuiTabArt', 'wxBitmap', 'wxBitmapButton', 'wxBitmapDataObject',
        +            'wxBoxSizer', 'wxBrush', 'wxBufferedDC', 'wxBufferedPaintDC',
        +            'wxButton', 'wxCalendarCtrl', 'wxCalendarDateAttr',
        +            'wxCalendarEvent', 'wxCaret', 'wxCheckBox', 'wxCheckListBox',
        +            'wxChildFocusEvent', 'wxChoice', 'wxClientDC', 'wxClipboard',
        +            'wxCloseEvent', 'wxColourData', 'wxColourDialog',
        +            'wxColourPickerCtrl', 'wxColourPickerEvent', 'wxComboBox',
        +            'wxCommandEvent', 'wxContextMenuEvent', 'wxControl',
        +            'wxControlWithItems', 'wxCursor', 'wxDataObject', 'wxDateEvent',
        +            'wxDatePickerCtrl', 'wxDC', 'wxDialog', 'wxDirDialog',
        +            'wxDirPickerCtrl', 'wxDisplayChangedEvent', 'wxEraseEvent',
        +            'wxEvent', 'wxEvtHandler', 'wxFileDataObject', 'wxFileDialog',
        +            'wxFileDirPickerEvent', 'wxFilePickerCtrl', 'wxFindReplaceData',
        +            'wxFindReplaceDialog', 'wxFlexGridSizer', 'wxFocusEvent', 'wxFont',
        +            'wxFontData', 'wxFontDialog', 'wxFontPickerCtrl',
        +            'wxFontPickerEvent', 'wxFrame', 'wxGauge', 'wxGBSizerItem',
        +            'wxGenericDirCtrl', 'wxGLCanvas', 'wxGraphicsBrush',
        +            'wxGraphicsContext', 'wxGraphicsFont', 'wxGraphicsMatrix',
        +            'wxGraphicsObject', 'wxGraphicsPath', 'wxGraphicsPen',
        +            'wxGraphicsRenderer', 'wxGrid', 'wxGridBagSizer', 'wxGridCellAttr',
        +            'wxGridCellEditor', 'wxGridCellRenderer', 'wxGridEvent',
        +            'wxGridSizer', 'wxHelpEvent', 'wxHtmlEasyPrinting', 'wxIcon',
        +            'wxIconBundle', 'wxIconizeEvent', 'wxIdleEvent', 'wxImage',
        +            'wxImageList', 'wxJoystickEvent', 'wxKeyEvent',
        +            'wxLayoutAlgorithm', 'wxListBox', 'wxListCtrl', 'wxListEvent',
        +            'wxListItem', 'wxListView', 'wxMask', 'wxMaximizeEvent',
        +            'wxMDIChildFrame', 'wxMDIClientWindow', 'wxMDIParentFrame',
        +            'wxMemoryDC', 'wxMenu', 'wxMenuBar', 'wxMenuEvent', 'wxMenuItem',
        +            'wxMessageDialog', 'wxMiniFrame', 'wxMirrorDC',
        +            'wxMouseCaptureChangedEvent', 'wxMouseEvent', 'wxMoveEvent',
        +            'wxMultiChoiceDialog', 'wxNavigationKeyEvent', 'wxNcPaintEvent',
        +            'wxNotebook', 'wxNotebookEvent', 'wxNotifyEvent',
        +            'wxPageSetupDialog', 'wxPageSetupDialogData', 'wxPaintDC',
        +            'wxPaintEvent', 'wxPalette', 'wxPaletteChangedEvent', 'wxPanel',
        +            'wxPasswordEntryDialog', 'wxPen', 'wxPickerBase', 'wxPostScriptDC',
        +            'wxPreviewCanvas', 'wxPreviewControlBar', 'wxPreviewFrame',
        +            'wxPrintData', 'wxPrintDialog', 'wxPrintDialogData', 'wxPrinter',
        +            'wxPrintout', 'wxPrintPreview', 'wxProgressDialog',
        +            'wxQueryNewPaletteEvent', 'wxRadioBox', 'wxRadioButton',
        +            'wxRegion', 'wxSashEvent', 'wxSashLayoutWindow', 'wxSashWindow',
        +            'wxScreenDC', 'wxScrollBar', 'wxScrolledWindow', 'wxScrollEvent',
        +            'wxScrollWinEvent', 'wxSetCursorEvent', 'wxShowEvent',
        +            'wxSingleChoiceDialog', 'wxSizeEvent', 'wxSizer', 'wxSizerFlags',
        +            'wxSizerItem', 'wxSlider', 'wxSpinButton', 'wxSpinCtrl',
        +            'wxSpinEvent', 'wxSplashScreen', 'wxSplitterEvent',
        +            'wxSplitterWindow', 'wxStaticBitmap', 'wxStaticBox',
        +            'wxStaticBoxSizer', 'wxStaticLine', 'wxStaticText', 'wxStatusBar',
        +            'wxStdDialogButtonSizer', 'wxStyledTextCtrl', 'wxStyledTextEvent',
        +            'wxSysColourChangedEvent', 'wxTextAttr', 'wxTextCtrl',
        +            'wxTextDataObject', 'wxTextEntryDialog', 'wxToggleButton',
        +            'wxToolBar', 'wxToolTip', 'wxTopLevelWindow', 'wxTreeCtrl',
        +            'wxTreeEvent', 'wxUpdateUIEvent', 'wxWindow', 'wxWindowCreateEvent',
        +            'wxWindowDC', 'wxWindowDestroyEvent', 'wxXmlResource', 'xmerl',
        +            'xmerl_eventp', 'xmerl_scan', 'xmerl_xpath', 'xmerl_xs',
        +            'xmerl_xsd', 'xref', 'yecc', 'zip', 'zlib', 'zlib_stub'
        +            ),
        +        // Binary modifiers
        +        6 => array(
        +            'big', 'binary', 'float', 'integer', 'little', 'signed', 'unit', 'unsigned'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array('(', ')', '[', ']', '{', '}'),
        +        1 => array('->', ',', ';', '.'),
        +        2 => array('<<', '>>'),
        +        3 => array('=', '||', '-', '+', '*', '/', '++', '--', '!', '<', '>', '>=',
        +                    '=<', '==', '/=', '=:=', '=/=')
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #186895;',
        +            2 => 'color: #014ea4;',
        +            3 => 'color: #fa6fff;',
        +            4 => 'color: #fa6fff;',
        +            5 => 'color: #ff4e18;',
        +            6 => 'color: #9d4f37;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            'HARD' => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #109ab8;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff7800;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #ff9600;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;',
        +            2 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #004866;',
        +            1 => 'color: #6bb810;',
        +            2 => 'color: #ee3800;',
        +            3 => 'color: #014ea4;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #6941fd;',
        +            1 => 'color: #d400ed;',
        +            2 => 'color: #5400b3;',
        +            3 => 'color: #ff3c00;',
        +            4 => 'color: #6941fd;',
        +            5 => 'color: #45b3e6;',
        +            6 => 'color: #ff9600;',
        +            7 => 'color: #d400ed;',
        +            8 => 'color: #ff9600;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => 'http://erlang.org/doc/man/{FNAME}.html',
        +        6 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '->',
        +        2 => ':'
        +        ),
        +    'REGEXPS' => array(
        +        //�Macro definitions
        +        0 => array(
        +            GESHI_SEARCH => '(-define\s*\()([a-zA-Z0-9_]+)(\(|,)',
        +            GESHI_REPLACE => '\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\1',
        +            GESHI_AFTER => '\3'
        +            ),
        +        // Record definitions
        +        1 => array(
        +            GESHI_SEARCH => '(-record\s*\()([a-zA-Z0-9_]+)(,)',
        +            GESHI_REPLACE => '\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\1',
        +            GESHI_AFTER => '\3'
        +            ),
        +        // Precompiler directives
        +        2 => array(
        +            GESHI_SEARCH => '(-)([a-z][a-zA-Z0-9_]*)(\()',
        +            GESHI_REPLACE => '\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\1',
        +            GESHI_AFTER => '\3'
        +            ),
        +        // Functions
        +        3 => array(
        +            GESHI_SEARCH => '([a-z]\w*|\'\w*\')(\s*\()',
        +            GESHI_REPLACE => '\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => '\2'
        +            ),
        +        // Macros
        +        4 => array(
        +            GESHI_SEARCH => '(\?)([a-zA-Z0-9_]+)',
        +            GESHI_REPLACE => '\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\1',
        +            GESHI_AFTER => ''
        +            ),
        +        // Variables - With hack to avoid interfering wish GeSHi internals
        +        5 => array(
        +            GESHI_SEARCH => '([([{,<+*-\/=\s!]|<)(?!(?:PIPE|SEMI|DOT|NUM|REG3XP\d*)\W)([A-Z_]\w*)(?!\w)',
        +            GESHI_REPLACE => '\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\1',
        +            GESHI_AFTER => ''
        +            ),
        +        // ASCII�codes
        +        6 => '(\$[a-zA-Z0-9_])',
        +        // Records
        +        7 => array(
        +            GESHI_SEARCH => '(#)([a-z][a-zA-Z0-9_]*)(\.|\{)',
        +            GESHI_REPLACE => '\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\1',
        +            GESHI_AFTER => '\3'
        +            ),
        +        // Numbers with a different radix
        +        8 => '(?<=>)(#[a-zA-Z0-9]*)'
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            3 => array(
        +                'DISALLOWED_BEFORE' => '(? ''//'(?=\s*\()'
        +                ),
        +            5 => array(
        +                'DISALLOWED_BEFORE' => '(?<=\'|)',
        +                'DISALLOWED_AFTER' => '(?=(\'|):)'
        +                ),
        +            6 => array(
        +                'DISALLOWED_BEFORE' => '(?<=\/|-)',
        +                'DISALLOWED_AFTER' => ''
        +                )
        +            )
        +        )
        +);
        diff --git a/includes/geshi/euphoria.php b/includes/geshi/euphoria.php
        new file mode 100644
        index 0000000..1989755
        --- /dev/null
        +++ b/includes/geshi/euphoria.php
        @@ -0,0 +1,138 @@
        + (1.0.8.9)
        + *  -  First Release
        + *
        + * TODO (updated )
        + * -------------------------
        + * seperate the funtions from the procedures, and have a slight color change for each.
        + *
        + *************************************************************************************
        + *
        + *     This file is part of GeSHi.
        + *
        + *   GeSHi is free software; you can redistribute it and/or modify
        + *   it under the terms of the GNU General Public License as published by
        + *   the Free Software Foundation; either version 2 of the License, or
        + *   (at your option) any later version.
        + *
        + *   GeSHi is distributed in the hope that it will be useful,
        + *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + *   GNU General Public License for more details.
        + *
        + *   You should have received a copy of the GNU General Public License
        + *   along with GeSHi; if not, write to the Free Software
        + *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        + *
        + ************************************************************************************/
        +
        +$language_data = array (
        +    'LANG_NAME' => 'Euphoria',
        +    'COMMENT_SINGLE' => array(1 => '--'),
        +    'COMMENT_MULTI' => array(), //Euphoria doesn't support multi-line comments
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array( // keywords
        +            'and', 'by', 'constant', 'do', 'else', 'elsif', 'end', 'exit',
        +            'for', 'function', 'global', 'if', 'include', 'not', 'or',
        +            'procedure', 'return', 'then', 'to', 'type', 'while', 'with',
        +            'without', 'xor'
        +            ),
        +        2 => array( // built-ins
        +            'abort', 'and_bits', 'append', 'arctan', 'atom', 'c_func', 'call',
        +            'c_proc', 'call_func', 'call_proc', 'clear_screen', 'close', 'compare',
        +            'command_line', 'cos', 'date', 'equal', 'find', 'find_from', 'floor',
        +            'getc', 'getenv', 'gets', 'get_key', 'get_pixel', 'integer', 'length',
        +            'log', 'machine_func', 'machine_proc', 'match', 'match_from',
        +            'mem_copy', 'mem_set', 'not_bits', 'object', 'open', 'or_bits', 'peek',
        +            'peek4s', 'peek4u', 'pixel', 'platform', 'poke', 'poke4', 'position',
        +            'power', 'prepend', 'print', 'printf', 'profile', 'puts', 'rand',
        +            'remainder', 'repeat', 'routine_id', 'sequence', 'sin', 'sprintf',
        +            'sqrt', 'system', 'system_exec', 'tan', 'task_clock_stop',
        +            'task_clock_start', 'task_create', 'task_list', 'task_schedule',
        +            'task_self', 'task_status', 'task_suspend', 'task_yield', 'time',
        +            'trace', 'xor_bits'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array(
        +            '(', ')', '{', '}', '[', ']'
        +            ),
        +        1 => array(
        +            '+', '-', '*', '/', '=', '&', '^'
        +            ),
        +        2 => array(
        +            '&', '?', ','
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000ff; font-weight: bold;', // keywords
        +            2 => 'color: #cc33ff; font-weight: bold;', // builtins
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #ff0000; font-style: italic;',
        +            'MULTI' => '' // doesn't exist
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #009900; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #999900; font-weight: bold;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #00cc00;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc33cc; font-style: italic'
        +            ),
        +        'METHODS' => array( // Doesn't exist in Euphoria.  Everything is a function =)
        +            0 => ''
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #999900;', // brackets
        +            1 => 'color: #333333;', // operators
        +            2 => 'color: #333333; font-style: bold' // print+concat
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array( // Never included in scripts.
        +            )
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/ezt.php b/includes/geshi/ezt.php
        new file mode 100644
        index 0000000..196a56b
        --- /dev/null
        +++ b/includes/geshi/ezt.php
        @@ -0,0 +1,134 @@
        + 'EZT',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
        +    'COMMENT_REGEXP' => array(
        +        // First character of the line is an asterisk. Rest of the line is spaces/null
        +        0 => '/\*(\s|\D)?(\n)/',
        +        // Asterisk followed by any character & then a non numeric character.
        +        // This is to prevent expressions such as 25 * 4 from being marked as a comment
        +        // Note: 25*4 - 100 will mark *4 - 100 as a comment. Pls. space out expressions
        +        // In any case, 25*4 will result in an Easytrieve error
        +        1 => '/\*.([^0-9\n])+.*(\n)/'
        +        ),
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'CONTROL','DEFINE','DISPLAY','DO','ELSE','END-DO','END-IF',
        +            'END-PROC','FILE','GET','GOTO','HEADING','IF','JOB','LINE',
        +            'PARM','PERFORM','POINT','PRINT','PROC','PUT','READ','RECORD',
        +            'REPORT','RETRIEVE','SEARCH','SELECT','SEQUENCE','SORT','STOP',
        +            'TITLE','WRITE'
        +            ),
        +        // Procedure Keywords (Names of specific procedures)
        +        2 => array (
        +            'AFTER-BREAK','AFTER-LINE','BEFORE-BREAK','BEFORE-LINE',
        +            'ENDPAGE','REPORT-INPUT','TERMINATION',
        +            ),
        +        // Macro names, Parameters
        +        3 => array (
        +            'COMPILE','CONCAT','DESC','GETDATE','MASK','PUNCH',
        +            'VALUE','SYNTAX','NEWPAGE','SKIP','COL','TALLY',
        +            'WITH'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(',')','=','&',',','*','>','<','%'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false
        +        //4 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #FF0000;',
        +            2 => 'color: #21A502;',
        +            3 => 'color: #FF00FF;'
        +            ),
        +        'COMMENTS' => array(
        +            0 => 'color: #0000FF; font-style: italic;',
        +            1 => 'color: #0000FF; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => ''
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #FF7400;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #66CC66;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #736205;'
        +            ),
        +        'METHODS' => array(
        +            1 => '',
        +            2 => ''
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #FF7400;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #E01B6A;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(
        +        // We are trying to highlight Macro names here which preceded by %
        +        0 => '(%)([a-zA-Z0-9])+(\s|\n)'
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/f1.php b/includes/geshi/f1.php
        new file mode 100644
        index 0000000..75a7cd5
        --- /dev/null
        +++ b/includes/geshi/f1.php
        @@ -0,0 +1,149 @@
        + 'Formula One',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('{' => '}'),
        +    'COMMENT_REGEXP' => array(
        +        //Nested Comments
        +        2 =>  "/(\{(?:\{.*\}|[^\{])*\})/m"
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'",'"'),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        //Simple Single Char Escapes
        +        1 => "#\\\\[\\\\nrt\'\"?\n]#i",
        +        //Hexadecimal Char Specs (Utf16 codes, Unicode versions only)
        +        2 => "#\\\\u[\da-fA-F]{4}#",
        +        ),
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE |
        +        GESHI_NUMBER_BIN_PREFIX_0B |
        +        GESHI_NUMBER_OCT_PREFIX_0O |
        +        GESHI_NUMBER_HEX_PREFIX |
        +        GESHI_NUMBER_FLT_NONSCI |
        +        GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'pred','proc','subr','else','elsif','iff','if','then','false','true',
        +            'case','of','use','local','mod','end','list','file','all','one','max','min','rel',
        +            'external','Nil','_stdcall','_cdecl','_addressof','_pred','_file','_line'
        +            ),
        +        2 => array(
        +            'Ascii','Bin','I','L','P','R','S','U'
        +            ),
        +        3 => array(
        +            'Append','in','Dupl','Len','Print','_AllDifferent','_AllAscending',
        +            '_AllDescending','_Ascending','_Descending'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array('(', ')', '[', ']'),
        +        1 => array('<', '>','='),
        +        2 => array('+', '-', '*', '/'),
        +        3 => array('&', '|'),
        +        4 => array(':', ';')
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000ff;',
        +            2 => 'color: #000080;',
        +            3 => 'color: #000080;',
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008000; font-style: italic;',
        +            2 => 'color: #008000; font-style: italic;',
        +            'MULTI' => 'color: #008000; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            1 => 'color: #000099; font-weight: bold;',
        +            2 => 'color: #009999; font-weight: bold;',
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #800000;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #202020;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000000;',
        +            1 => 'color: #000000;',
        +            2 => 'color: #000000;',
        +            3 => 'color: #000000;',
        +            4 => 'color: #000000;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => 'http://www.f1compiler.com/f1helponline/f1_runtime_library.html#{FNAME}'
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/falcon.php b/includes/geshi/falcon.php
        new file mode 100644
        index 0000000..aeb4133
        --- /dev/null
        +++ b/includes/geshi/falcon.php
        @@ -0,0 +1,217 @@
        + (1.0.8.10)
        + *  -  First Release
        + *
        + *************************************************************************************
        + *
        + *     This file is part of GeSHi.
        + *
        + *   GeSHi is free software; you can redistribute it and/or modify
        + *   it under the terms of the GNU General Public License as published by
        + *   the Free Software Foundation; either version 2 of the License, or
        + *   (at your option) any later version.
        + *
        + *   GeSHi is distributed in the hope that it will be useful,
        + *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + *   GNU General Public License for more details.
        + *
        + *   You should have received a copy of the GNU General Public License
        + *   along with GeSHi; if not, write to the Free Software
        + *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        + * ************************************************************************************/
        +
        +$language_data = array (
        +    'LANG_NAME' => 'Falcon',
        +    'COMMENT_SINGLE' => array( 1 => '//' ),
        +    'COMMENT_MULTI' => array( '/*' => '*/' ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array( "'", '"' ),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'break','case','catch','class','const','continue','def','default',
        +            'dropping','elif','else','end','enum','for','forfirst','forlast',
        +            'formiddle','from','function','global','if','init','innerfunc',
        +            'launch','loop','object','raise','return','select','state','static',
        +            'switch','try','while'
        +        ),
        +        2 => array(
        +            'false','nil','true',
        +        ),
        +        3 => array(
        +            'and','as','eq','fself','in','not','notin','or','provides','self','to'
        +        ),
        +        4 => array(
        +            'directive','export','import','load','macro'
        +        ),
        +        5 => array(
        +            'ArrayType','BooleanType','ClassMethodType','ClassType','DictionaryType',
        +            'FunctionType','MemBufType','MethodType','NilType','NumericType','ObjectType',
        +            'RangeType','StringType','LBindType'
        +        ),
        +        6 => array(
        +            "CurrentTime","IOStream","InputStream","MemBufFromPtr","OutputStream",
        +            "PageDict","ParseRFC2822","abs","acos","all",
        +            "allp","any","anyp","argd","argv",
        +            "arrayAdd","arrayBuffer","arrayCompact","arrayDel","arrayDelAll",
        +            "arrayFill","arrayFind","arrayHead","arrayIns","arrayMerge",
        +            "arrayNM","arrayRemove","arrayResize","arrayScan","arraySort",
        +            "arrayTail","asin","assert","atan","atan2",
        +            "attributes","baseClass","beginCritical","bless","brigade",
        +            "broadcast","cascade","ceil","choice","chr",
        +            "className","clone","combinations","compare","consume",
        +            "cos","deg2rad","deoob","derivedFrom","describe",
        +            "deserialize","dictBack","dictBest","dictClear","dictFill",
        +            "dictFind","dictFront","dictGet","dictKeys","dictMerge",
        +            "dictRemove","dictSet","dictValues","dirChange","dirCurrent",
        +            "dirMake","dirMakeLink","dirReadLink","dirRemove","dolist",
        +            "endCritical","epoch","eval","exit","exp",
        +            "factorial","fileChgroup","fileChmod","fileChown","fileCopy",
        +            "fileExt","fileMove","fileName","fileNameMerge","filePath",
        +            "fileRemove","fileType","fileUnit","filter","fint",
        +            "firstOf","floop","floor","fract","getAssert",
        +            "getEnviron","getProperty","getSlot","getSystemEncoding","getenv",
        +            "iff","include","input","inspect","int",
        +            "isBound","isCallable","isoob","lbind","len",
        +            "let","lit","log","map","max",
        +            "metaclass","min","numeric","oob","ord",
        +            "paramCount","paramIsRef","paramSet","parameter","passvp",
        +            "permutations","pow","print","printl","properties",
        +            "rad2deg","random","randomChoice","randomDice","randomGrab",
        +            "randomPick","randomSeed","randomWalk","readURI","reduce",
        +            "retract","round","seconds","serialize","set",
        +            "setProperty","setenv","sin","sleep","stdErr",
        +            "stdErrRaw","stdIn","stdInRaw","stdOut","stdOutRaw",
        +            "strBack","strBackFind","strBackTrim","strBuffer","strCmpIgnoreCase",
        +            "strEndsWith","strEscape","strEsq","strFill","strFind",
        +            "strFromMemBuf","strFront","strFrontTrim","strLower","strMerge",
        +            "strReplace","strReplicate","strSplit","strSplitTrimmed","strStartsWith",
        +            "strToMemBuf","strTrim","strUnescape","strUnesq","strUpper",
        +            "strWildcardMatch","subscribe","systemErrorDescription","tan","times",
        +            "toString","transcodeFrom","transcodeTo","typeOf","unsetenv",
        +            "unsubscribe","valof","vmFalconPath","vmIsMain","vmModuleName",
        +            "vmModuleVersionInfo","vmSearchPath","vmSystemType","vmVersionInfo","vmVersionName",
        +            "writeURI","xmap","yield","yieldOut"
        +        ),
        +        7 => array(
        +            "AccessError","Array","BOM","Base64","Class",
        +            "ClassMethod","CloneError","CmdlineParser","CodeError","Continuation",
        +            "Dictionary","Directory","Error","FileStat","Format",
        +            "Function","GarbagePointer","GenericError","Integer","InterruptedError",
        +            "IoError","Iterator","LateBinding","List","MathError",
        +            "MemoryBuffer","MessageError","Method","Numeric","Object",
        +            "ParamError","ParseError","Path","Range","Semaphore",
        +            "Sequence","Set","Stream","String","StringStream",
        +            "SyntaxError","Table","TableError","TimeStamp","TimeZone",
        +            "Tokenizer","TypeError","URI","VMSlot"
        +        ),
        +        8 => array(
        +            "args","scriptName","scriptPath"
        +        ),
        +        9 => array(
        +            "GC"
        +        ),
        +    ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => 'http://falconpl.org/project_docs/core/functions.html#typeOf',
        +        6 => 'http://falconpl.org/project_docs/core/functions.html#{FNAME}',
        +        7 => 'http://falconpl.org/project_docs/core/class_{FNAME}.html',
        +        8 => 'http://falconpl.org/project_docs/core/globals.html#{FNAME}',
        +        9 => 'http://falconpl.org/project_docs/core/object_{FNAME}.html)'
        +    ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true,
        +        8 => true,
        +        9 => true
        +    ),
        +    'SYMBOLS' => array(
        +        '(',')','$','%','&','/','{','[',']','=','}','?','+','-','#','*','@',
        +        '<','>','|',',',':',';','\\','^'
        +    ),
        +    'REGEXPS' => array(
        +        0 => array(
        +            GESHI_SEARCH => '(\[)([a-zA-Z_]|\c{C})(?:[a-zA-Z0-9_]|\p{C})*(\])',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3',
        +
        +        ),
        +    ),
        +    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
        +    'SCRIPT_DELIMITERS' => array(
        +        0 => array( ' '?>' )
        +    ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => true
        +    ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000080;font-weight:bold;',
        +            2 => 'color: #800000;font-weight:bold;',
        +            3 => 'color: #800000;font-weight:bold;',
        +            4 => 'color: #000080;font-weight:bold;',
        +            5 => 'color: #000000;font-weight:bold;',
        +            6 => 'font-weight:bold;',
        +            7 => 'font-weight:bold;',
        +            8 => 'font-weight:bold;'
        +        ),
        +        'COMMENTS' => array(
        +            1 => 'color: #29B900;',
        +            'MULTI' => 'color: #008080'
        +        ),
        +        'STRINGS' => array(
        +            0 => 'color: #800000'
        +        ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000'
        +        ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #800000'
        +        ),
        +        'NUMBERS' => array(
        +            0 => 'color: #000000'
        +        ),
        +        'METHODS' => array(
        +            0 => 'color: #000000'
        +        ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #8B0513'
        +        ),
        +        'SCRIPT' => array(
        +            0 => ''
        +        ),
        +        'REGEXPS' => array(
        +            0 => 'color: #FF00FF'
        +        )
        +    ),
        +
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        '.'
        +    )
        +);
        diff --git a/includes/geshi/fo.php b/includes/geshi/fo.php
        new file mode 100644
        index 0000000..661f5bb
        --- /dev/null
        +++ b/includes/geshi/fo.php
        @@ -0,0 +1,326 @@
        + 'FO (abas-ERP)',
        +    'COMMENT_SINGLE' => array(1 => '..'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        //Control Flow
        +        1 => array(
        +            /* see http://www.abas.de/sub_de/kunden/help/hd/html/9.html */
        +
        +            /* fo keywords, part 1: control flow */
        +            '.weiter', '.continue'
        +
        +            /* this language works with goto's only*/
        +            ),
        +
        +        //FO Keywords
        +        2 => array(
        +            /* fo keywords, part 2 */
        +            '.fo', '.formel', '.formula',
        +            '.zuweisen', '.assign',
        +            '.fehler', '.error',
        +            '.ende', '.end'
        +            ),
        +
        +        //Java Keywords
        +        3 => array(
        +            /* Java keywords, part 3: primitive data types */
        +            '.art', '.type',
        +            'integer', 'real', 'bool', 'text', 'datum', 'woche', 'termin', 'zeit',
        +            'mehr', 'MEHR'
        +            ),
        +
        +        //Reserved words in fo literals
        +        4 => array(
        +            /* other reserved words in fo literals */
        +            /* should be styled to look similar to numbers and Strings */
        +            'false', 'null', 'true',
        +            'OBJEKT',
        +            'VORGANG', 'PROCESS',
        +            'OFFEN', 'OPEN',
        +            'ABORT',
        +            'AN', 'ADDEDTO',
        +            'AUF', 'NEW',
        +            'BILDSCHIRM', 'TERMINAL',
        +            'PC',
        +            'MASKE', 'SCREEN',
        +            'ZEILE', 'LINE'
        +            ),
        +
        +        // interpreter settings
        +        5 => array (
        +            '..!INTERPRETER', 'DEBUG'
        +            ),
        +
        +        // database commands
        +        6 => array (
        +            '.hole', '.hol', '.select',
        +            '.lade', '.load',
        +            '.aktion', '.action',
        +            '.belegen', '.occupy',
        +            '.bringe', '.rewrite',
        +            '.dazu', '.add',
        +            '.löschen', '.delete',
        +            '.mache', '.make',
        +            '.merke', '.reserve',
        +            '.setze', '.set',
        +            'SPERREN', 'LOCK',
        +            'TEIL', 'PART',
        +            'KEINESPERRE',
        +            'AMASKE', 'ASCREEN',
        +            'BETRIEB', 'WORK-ORDER',
        +            'NUMERISCH', 'NUMERICAL',
        +            'VORSCHLAG', 'SUGGESTION',
        +            'OBLIGO', 'OUTSTANDING',
        +            'LISTE', 'LIST',
        +            'DRUCK', 'PRINT',
        +            'ÃœBERNAHME', 'TAGEOVER',
        +            'ABLAGE', 'FILINGSYSTEM',
        +            'BDE', 'PDC',
        +            'BINDUNG', 'ALLOCATION',
        +            'BUCHUNG', 'ENTRY',
        +            'COLLI', 'SERIAL',
        +            'DATEI', 'FILE',
        +            'VERKAUF', 'SALES',
        +            'EINKAUF', 'PURCHASING',
        +            'EXEMPLAR', 'EXAMPLE',
        +            'FERTIGUNG', 'PRODUCTION',
        +            'FIFO',
        +            'GRUPPE', 'GROUP',
        +            'JAHR', 'YEAR',
        +            'JOURNAL',
        +            'KOPF', 'HEADER',
        +            'KOSTEN',
        +            'LIFO',
        +            'LMENGE', 'SQUANTITY',
        +            'LOHNFERTIGUNG', 'SUBCONTRACTING',
        +            'LPLATZ', 'LOCATION',
        +            'MBELEGUNG', 'MACHLOADING',
        +            'MONAT', 'MONTH', 'MZ',
        +            'NACHRICHT', 'MESSAGE',
        +            'PLAN', 'TARGET',
        +            'REGIONEN', 'REGIONS',
        +            'SERVICEANFRAGE', 'SERVICEREQUEST',
        +            'VERWENDUNG', 'APPLICATION',
        +            'WEITER', 'CONTINUE',
        +            'ABBRUCH', 'CANCEL',
        +            'ABLAGEKENNZEICHEN', 'FILLINGCODE',
        +            'ALLEIN', 'SINGLEUSER',
        +            'AUFZAEHLTYP', 'ENUMERATION-TYPE',
        +            'AUSGABE', 'OUTPUT',
        +            'DEZPUNKT', 'DECPOINT'
        +            ),
        +
        +        // output settings
        +        7 => array (
        +            '.absatz', '.para',
        +            '.blocksatz', '.justified',
        +            '.flattersatz', '.unjustified',
        +            '.format',
        +            '.box',
        +            '.drucken', '.print',
        +            '.gedruckt', '.printed',
        +            '.länge', '.length',
        +            '.links', '.left',
        +            '.rechts', '.right',
        +            '.oben', '.up',
        +            '.unten', '.down',
        +            '.seite', '.page',
        +            '.tabellensatz', '.tablerecord',
        +            '.trenner', '.separator',
        +            'ARCHIV'
        +            ),
        +
        +        // text commands
        +        8 => array (
        +            '.text',
        +            '.atext',
        +            '.println',
        +            '.uebersetzen', '.translate'
        +            ),
        +
        +        // I/O commands
        +        9 => array (
        +            '.aus', '.ausgabe', '.output',
        +            '.ein', '.eingabe', '.input',
        +            '.datei', '.file',
        +            '.lesen', '.read',
        +            '.sortiere', '.sort',
        +            '-ÖFFNEN', '-OPEN',
        +            '-TEST',
        +            '-LESEN', '-READ',
        +            'VON', 'FROM'
        +            ),
        +
        +        //system
        +        10 => array (
        +            '.browser',
        +            '.kommando', '.command',
        +            '.system', '.dde',
        +            '.editiere', '.edit',
        +            '.hilfe', '.help',
        +            '.kopieren', '.copy',
        +            '.pc.clip',
        +            '.pc.copy',
        +            '.pc.dll',
        +            '.pc.exec',
        +            '.pc.open',
        +            'DIAGNOSE', 'ERRORREPORT',
        +            'DOPPELPUNKT', 'COLON',
        +            'ERSETZUNG', 'REPLACEMENT',
        +            'WARTEN', 'PARALLEL'
        +            ),
        +
        +        //fibu/accounting specific commands
        +        11 => array (
        +            '.budget',
        +            '.chart',
        +            'VKZ',
        +            'KONTO', 'ACCOUNT',
        +            'AUSZUG', 'STATEMENT',
        +            'WAEHRUNG', 'CURRENCY',
        +            'WAEHRUNGSKURS', 'EXCHANGERATE',
        +            'AUSWAEHR', 'FORCURR',
        +            'BUCHUNGSKREIS', 'SET OF BOOKS'
        +            ),
        +
        +        // efop - extended flexible surface
        +        12 => array (
        +            '.cursor',
        +            '.farbe', '.colour',
        +            '.fenster', '.window',
        +            '.hinweis', '.note',
        +            '.menue', '.menu',
        +            '.schutz', '.protection',
        +            '.zeigen', '.view',
        +            '.zeile', '.line',
        +            'VORDERGRUND', 'FOREGROUND',
        +            'HINTERGRUND', 'BACKGROUND',
        +            'SOFORT', 'IMMEDIATELY',
        +            'AKTUALISIEREN', 'UPDATE',
        +            'FENSTERSCHLIESSEN', 'CLOSEWINDOWS'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array('(', ')', '[', ']', '{', '}', '*', '&', '%', ';', '<', '>'),
        +        1 => array('?', '!')
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        /* all fo keywords are case sensitive, don't have to but I like this type of coding */
        +        1 => true, 2 => true, 3 => true, 4 => true,
        +        5 => true, 6 => true, 7 => true, 8 => true, 9 => true,
        +        10 => true, 11 => true, 12 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000000; font-weight: bold;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #006600; font-weight: bold;',
        +            4 => 'color: #006600; font-weight: bold;',
        +            5 => 'color: #003399; font-weight: bold;',
        +            6 => 'color: #003399; font-weight: bold;',
        +            7 => 'color: #003399; font-weight: bold;',
        +            8 => 'color: #003399; font-weight: bold;',
        +            9 => 'color: #003399; font-weight: bold;',
        +            10 => 'color: #003399; font-weight: bold;',
        +            11 => 'color: #003399; font-weight: bold;',
        +            12 => 'color: #003399; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            //2 => 'color: #006699;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006633;',
        +            2 => 'color: #006633;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;',
        +            1 => 'color: #000000; font-weight: bold;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => '',
        +        7 => '',
        +        8 => '',
        +        9 => '',
        +        10 => '',
        +        11 => '',
        +        12 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/fortran.php b/includes/geshi/fortran.php
        new file mode 100644
        index 0000000..c3bd402
        --- /dev/null
        +++ b/includes/geshi/fortran.php
        @@ -0,0 +1,158 @@
        +'Fortran',
        +    'COMMENT_SINGLE'=> array(1 =>'!',2=>'Cf2py'),
        +    'COMMENT_MULTI'=> array(),
        +    //Fortran Comments
        +    'COMMENT_REGEXP' => array(1 => '/^C.*?$/mi'),
        +    'CASE_KEYWORDS'=> GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS'=> array("'",'"'),
        +    'ESCAPE_CHAR'=>'\\',
        +    'KEYWORDS'=> array(
        +        1 => array(
        +            'allocate','block','call','case','contains','continue','cycle','deallocate',
        +            'default','do','else','elseif','elsewhere','end','enddo','endif','endwhere',
        +            'entry','exit','function','go','goto','if','interface','module','nullify','only',
        +            'operator','procedure','program','recursive','return','select','stop',
        +            'subroutine','then','to','where','while',
        +            'access','action','advance','blank','blocksize','carriagecontrol',
        +            'delim','direct','eor','err','exist','file','flen','fmt','form','formatted',
        +            'iostat','name','named','nextrec','nml','number','opened','pad','position',
        +            'readwrite','recl','sequential','status','unformatted','unit'
        +            ),
        +        2 => array(
        +            '.AND.','.EQ.','.EQV.','.GE.','.GT.','.LE.','.LT.','.NE.','.NEQV.','.NOT.',
        +            '.OR.','.TRUE.','.FALSE.'
        +            ),
        +        3 => array(
        +            'allocatable','character','common','complex','data','dimension','double',
        +            'equivalence','external','implicit','in','inout','integer','intent','intrinsic',
        +            'kind','logical','namelist','none','optional','out','parameter','pointer',
        +            'private','public','real','result','save','sequence','target','type','use'
        +            ),
        +        4 => array(
        +            'abs','achar','acos','adjustl','adjustr','aimag','aint','all','allocated',
        +            'anint','any','asin','atan','atan2','bit_size','break','btest','carg',
        +            'ceiling','char','cmplx','conjg','cos','cosh','cpu_time','count','cshift',
        +            'date_and_time','dble','digits','dim','dot_product','dprod dvchk',
        +            'eoshift','epsilon','error','exp','exponent','floor','flush','fraction',
        +            'getcl','huge','iachar','iand','ibclr','ibits','ibset','ichar','ieor','index',
        +            'int','intrup','invalop','ior','iostat_msg','ishft','ishftc','lbound',
        +            'len','len_trim','lge','lgt','lle','llt','log','log10','matmul','max','maxexponent',
        +            'maxloc','maxval','merge','min','minexponent','minloc','minval','mod','modulo',
        +            'mvbits','nbreak','ndperr','ndpexc','nearest','nint','not','offset','ovefl',
        +            'pack','precfill','precision','present','product','prompt','radix',
        +            'random_number','random_seed','range','repeat','reshape','rrspacing',
        +            'scale','scan','segment','selected_int_kind','selected_real_kind',
        +            'set_exponent','shape','sign','sin','sinh','size','spacing','spread','sqrt',
        +            'sum system','system_clock','tan','tanh','timer','tiny','transfer','transpose',
        +            'trim','ubound','undfl','unpack','val','verify'
        +            ),
        +        ),
        +    'SYMBOLS'=> array(
        +        '(',')','{','}','[',']','=','+','-','*','/','!','%','^','&',':'
        +        ),
        +    'CASE_SENSITIVE'=> array(
        +        GESHI_COMMENTS => true,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        ),
        +    'STYLES'=> array(
        +        'KEYWORDS'=> array(
        +            1 =>'color: #b1b100;',
        +            2 =>'color: #000000; font-weight: bold;',
        +            3 =>'color: #000066;',
        +            4 =>'color: #993333;'
        +            ),
        +        'COMMENTS'=> array(
        +            1 =>'color: #666666; font-style: italic;',
        +            2 =>'color: #339933;',
        +            'MULTI'=>'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR'=> array(
        +            0 =>'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS'=> array(
        +            0 =>'color: #009900;'
        +            ),
        +        'STRINGS'=> array(
        +            0 =>'color: #ff0000;'
        +            ),
        +        'NUMBERS'=> array(
        +            0 =>'color: #cc66cc;'
        +            ),
        +        'METHODS'=> array(
        +            1 =>'color: #202020;',
        +            2 =>'color: #202020;'
        +            ),
        +        'SYMBOLS'=> array(
        +            0 =>'color: #339933;'
        +            ),
        +        'REGEXPS'=> array(
        +            ),
        +        'SCRIPT'=> array(
        +            )
        +        ),
        +    'URLS'=> array(
        +        1 =>'',
        +        2 =>'',
        +        3 =>'',
        +        4 =>''
        +        ),
        +    'OOLANG'=> true,
        +    'OBJECT_SPLITTERS'=> array(
        +        1 =>'.',
        +        2 =>'::'
        +        ),
        +    'REGEXPS'=> array(
        +        ),
        +    'STRICT_MODE_APPLIES'=> GESHI_NEVER,
        +    'SCRIPT_DELIMITERS'=> array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK'=> array(
        +        )
        +);
        diff --git a/includes/geshi/freebasic.php b/includes/geshi/freebasic.php
        new file mode 100644
        index 0000000..842a805
        --- /dev/null
        +++ b/includes/geshi/freebasic.php
        @@ -0,0 +1,139 @@
        + 'FreeBasic',
        +    'COMMENT_SINGLE' => array(1 => "'", 2 => '#'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            "append", "as", "asc", "asin", "asm", "atan2", "atn", "beep", "bin", "binary", "bit",
        +            "bitreset", "bitset", "bload", "bsave", "byref", "byte", "byval", "call",
        +            "callocate", "case", "cbyte", "cdbl", "cdecl", "chain", "chdir", "chr", "cint",
        +            "circle", "clear", "clng", "clngint", "close", "cls", "color", "command",
        +            "common", "cons", "const", "continue", "cos", "cshort", "csign", "csng",
        +            "csrlin", "cubyte", "cuint", "culngint", "cunsg", "curdir", "cushort", "custom",
        +            "cvd", "cvi", "cvl", "cvlongint", "cvs", "cvshort", "data", "date",
        +            "deallocate", "declare", "defbyte", "defdbl", "defined", "defint", "deflng",
        +            "deflngint", "defshort", "defsng", "defstr", "defubyte", "defuint",
        +            "defulngint", "defushort", "dim", "dir", "do", "double", "draw", "dylibload",
        +            "dylibsymbol", "else", "elseif", "end", "enum", "environ", 'environ$', "eof",
        +            "eqv", "erase", "err", "error", "exec", "exepath", "exit", "exp", "export",
        +            "extern", "field", "fix", "flip", "for", "fre", "freefile", "function", "get",
        +            "getjoystick", "getkey", "getmouse", "gosub", "goto", "hex", "hibyte", "hiword",
        +            "if", "iif", "imagecreate", "imagedestroy", "imp", "inkey", "inp", "input",
        +            "instr", "int", "integer", "is", "kill", "lbound", "lcase", "left", "len",
        +            "let", "lib", "line", "lobyte", "loc", "local", "locate", "lock", "lof", "log",
        +            "long", "longint", "loop", "loword", "lset", "ltrim", "mid", "mkd", "mkdir",
        +            "mki", "mkl", "mklongint", "mks", "mkshort", "mod", "multikey", "mutexcreate",
        +            "mutexdestroy", "mutexlock", "mutexunlock", "name", "next", "not", "oct", "on",
        +            "once", "open", "option", "or", "out", "output", "overload", "paint", "palette",
        +            "pascal", "pcopy", "peek", "peeki", "peeks", "pipe", "pmap", "point", "pointer",
        +            "poke", "pokei", "pokes", "pos", "preserve", "preset", "print", "private",
        +            "procptr", "pset", "ptr", "public", "put", "random", "randomize", "read",
        +            "reallocate", "redim", "rem", "reset", "restore", "resume",
        +            "return", "rgb", "rgba", "right", "rmdir", "rnd", "rset", "rtrim", "run",
        +            "sadd", "screen", "screencopy", "screeninfo", "screenlock", "screenptr",
        +            "screenres", "screenset", "screensync", "screenunlock", "seek", "statement",
        +            "selectcase", "setdate", "setenviron", "setmouse",
        +            "settime", "sgn", "shared", "shell", "shl", "short", "shr", "sin", "single",
        +            "sizeof", "sleep", "space", "spc", "sqr", "static", "stdcall", "step", "stop",
        +            "str", "string", "strptr", "sub", "swap", "system", "tab", "tan",
        +            "then", "threadcreate", "threadwait", "time", "timer", "to", "trans",
        +            "trim", "type", "ubound", "ubyte", "ucase", "uinteger", "ulongint", "union",
        +            "unlock", "unsigned", "until", "ushort", "using", "va_arg", "va_first",
        +            "va_next", "val", "val64", "valint", "varptr", "view", "viewprint", "wait",
        +            "wend", "while", "width", "window", "windowtitle", "with", "write", "xor",
        +            "zstring", "explicit", "escape", "true", "false"
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080;',
        +            2 => 'color: #339933;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/freeswitch.php b/includes/geshi/freeswitch.php
        new file mode 100644
        index 0000000..efecedd
        --- /dev/null
        +++ b/includes/geshi/freeswitch.php
        @@ -0,0 +1,166 @@
        + 'FreeSWITCH',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(1 => "/^Comment:.*?$/m"),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +//        1 => array(
        +//            'Disallow', 'Request-rate', 'Robot-version',
        +//            'Sitemap', 'User-agent', 'Visit-time'
        +//            )
        +        ),
        +    'SYMBOLS' => array(
        +//        ':'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false
        +        ),
        +
        +//order is important. regexes will overwrite most things....
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +//            1 => 'color: #FF0000; font-weight: bold;',//red
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +//            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +//            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +//            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +//            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: firebrick; font-weight: bold;',
        +            1 => 'color: cornflowerblue; font-weight: bold;',
        +            2 => 'color: goldenrod; font-weight: bold;',
        +            3 => 'color: green; font-weight: bold;',
        +            4 => 'color: dimgrey; font-style: italic;',
        +            5 => 'color: green; font-weight: bold;',
        +            6 => 'color: firebrick; font-weight: bold;',
        +            7 => 'color: indigo; font-weight: italic;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +//        1 => 'http://www.robotstxt.org/wc/norobots.html'
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        0 => array(
        +            GESHI_SEARCH => '(^.*ERROR.*)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => 'im',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        1 => array(
        +            GESHI_SEARCH => '(^.*NOTICE.*)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => 'im',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        2 => array(
        +            GESHI_SEARCH => '(^.*DEBUG.*)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        3 => array(
        +            GESHI_SEARCH => '(^.*INFO.*|.*info\(.*|^Channel.*|^Caller.*|^variable.*)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        4 => array(
        +            GESHI_SEARCH => '(^Dialplan.*)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => 'im',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        5 => array(
        +            GESHI_SEARCH => '(Regex\ \(PASS\))',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        6 => array(
        +            GESHI_SEARCH => '(Regex\ \(FAIL\))',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        7 => array(
        +            GESHI_SEARCH => '(\d{7,15})',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            )
        +        ),
        +
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/fsharp.php b/includes/geshi/fsharp.php
        new file mode 100644
        index 0000000..33aa122
        --- /dev/null
        +++ b/includes/geshi/fsharp.php
        @@ -0,0 +1,211 @@
        + 'F#',
        +    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(3 => '/\(\*(?!\)).*?\*\)/s'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'HARDQUOTE' => array('@"', '"'),
        +    'HARDESCAPE' => array('"'),
        +    'HARDCHAR' => '"',
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        /* main F# keywords */
        +        /* section 3.4 */
        +        1 => array(
        +            'abstract', 'and', 'as', 'assert', 'base', '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', 'not', 'null', 'of', 'open', 'or',
        +            'override', 'private', 'public', 'rec', 'return', 'sig', 'static', 'struct', 'then', 'to',
        +            'true', 'try', 'type', 'upcast', 'use', 'val', 'void', 'when', 'while', 'with', 'yield',
        +            'asr', 'land', 'lor', 'lsl', 'lsr', 'lxor', 'mod',
        +            /* identifiers are reserved for future use by F# */
        +            'atomic', 'break', 'checked', 'component', 'const', 'constraint', 'constructor',
        +            'continue', 'eager', 'fixed', 'fori', 'functor', 'global', 'include', 'method', 'mixin',
        +            'object', 'parallel', 'params', 'process', 'protected', 'pure', 'sealed', 'tailcall',
        +            'trait', 'virtual', 'volatile',
        +            /* take monads into account */
        +            'let!', 'yield!'
        +            ),
        +        /* define names of main libraries in F# Core, so we can link to it
        +         * http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/namespaces.html
        +         */
        +        2 => array(
        +            'Array', 'Array2D', 'Array3D', 'Array4D', 'ComparisonIdentity', 'HashIdentity', 'List',
        +            'Map', 'Seq', 'SequenceExpressionHelpers', 'Set', 'CommonExtensions', 'Event',
        +            'ExtraTopLevelOperators', 'LanguagePrimitives', 'NumericLiterals', 'Operators',
        +            'OptimizedClosures', 'Option', 'String', 'NativePtr', 'Printf'
        +            ),
        +        /* 17.2 & 17.3 */
        +        3 => array(
        +            'abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'exp',
        +            'floor', 'log', 'log10', 'pown', 'round', 'sign', 'sin', 'sinh', 'sqrt',
        +            'tan', 'tanh',
        +            'ignore',
        +            'fst', 'snd',
        +            'stdin', 'stdout', 'stderr',
        +            'KeyValue',
        +            'max', 'min'
        +            ),
        +        /* Pervasives Types & Overloaded Conversion Functions */
        +        4 => array(
        +            'bool', 'byref', 'byte', 'char', 'decimal', 'double', 'exn', 'float', 'float32',
        +            'FuncConvert', 'ilsigptr', 'int', 'int16', 'int32', 'int64', 'int8',
        +            'nativeint', 'nativeptr', 'obj', 'option', 'ref', 'sbyte', 'single', 'string', 'uint16',
        +            'uint32', 'uint64', 'uint8', 'unativeint', 'unit',
        +            'enum',
        +            'async', 'seq', 'dict'
        +            ),
        +        /* 17.2 Exceptions */
        +        5 => array (
        +            'failwith', 'invalidArg', 'raise', 'rethrow'
        +            ),
        +        /* 3.3 Conditional compilation & 13.3 Compiler Directives + light / light off */
        +        6 => array(
        +            '(*IF-FSHARP', 'ENDIF-FSHARP*)', '(*F#', 'F#*)', '(*IF-OCAML', 'ENDIF-OCAML*)',
        +            '#light',
        +            '#if', '#else', '#endif', '#indent', '#nowarn', '#r', '#reference',
        +            '#I', '#Include', '#load', '#time', '#help', '#q', '#quit',
        +            ),
        +        /* 3.11 Pre-processor Declarations / Identifier Replacements */
        +        7 => array(
        +            '__SOURCE_DIRECTORY__', '__SOURCE_FILE__', '__LINE__'
        +            ),
        +        /* 17.2 Object Transformation Operators */
        +        8 => array(
        +            'box', 'hash', 'sizeof', 'typeof', 'typedefof', 'unbox'
        +            )
        +        ),
        +    /* 17.2 basic operators + the yield and yield! arrows */
        +    'SYMBOLS' => array(
        +        1 => array('+', '-', '/', '*', '**', '%', '~-'),
        +        2 => array('<', '<=', '>', '<=', '=', '<>'),
        +        3 => array('<<<', '>>>', '^^^', '&&&', '|||', '~~~'),
        +        4 => array('|>', '>>', '<|', '<<'),
        +        5 => array('!', '->', '->>'),
        +        6 => array('[',']','(',')','{','}', '[|', '|]', '(|', '|)'),
        +        7 => array(':=', ';', ';;')
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true, /* keywords */
        +        2 => true, /* modules */
        +        3 => true, /* pervasives functions */
        +        4 => true, /* types and overloaded conversion operators */
        +        5 => true, /* exceptions */
        +        6 => true, /* conditional compilation & compiler Directives */
        +        7 => true, /* pre-processor declarations / identifier replacements */
        +        8 => true  /* object transformation operators */
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #06c; font-weight: bold;', /* nice blue */
        +            2 => 'color: #06c; font-weight: bold;', /* nice blue */
        +            3 => 'color: #06c; font-weight: bold;', /* nice blue */
        +            4 => 'color: #06c; font-weight: bold;', /* nice blue */
        +            5 => 'color: #06c; font-weight: bold;', /* nice blue */
        +            6 => 'color: #06c; font-weight: bold;', /* nice blue */
        +            7 => 'color: #06c; font-weight: bold;', /* nice blue */
        +            8 => 'color: #06c; font-weight: bold;' /* nice blue */
        +            ),
        +        'COMMENTS' => array(
        +            'MULTI' => 'color: #5d478b; font-style: italic;', /* light purple */
        +            1 => 'color: #5d478b; font-style: italic;',
        +            2 => 'color: #5d478b; font-style: italic;', /* light purple */
        +            3 => 'color: #5d478b; font-style: italic;' /* light purple */
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #6c6;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #3cb371;' /* nice green */
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #c6c;' /* pink */
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #060;' /* dark green */
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #a52a2a;' /* maroon */
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        /* some of keywords are Pervasives functions (land, lxor, asr, ...) */
        +        1 => '',
        +        2 => 'http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/namespaces.html',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => '',
        +        7 => '',
        +        8 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => "(?|^])",
        +            'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_<\|%\\-])"
        +        )
        +    )
        +);
        diff --git a/includes/geshi/gambas.php b/includes/geshi/gambas.php
        new file mode 100644
        index 0000000..4bb582e
        --- /dev/null
        +++ b/includes/geshi/gambas.php
        @@ -0,0 +1,212 @@
        + 'GAMBAS',
        +    'COMMENT_SINGLE' => array(1 => "'"),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX |
        +        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        //keywords
        +        1 => array(
        +            'APPEND', 'AS', 'BREAK', 'BYREF', 'CASE', 'CATCH', 'CLASS', 'CLOSE', 'CONST', 'CONTINUE', 'COPY',
        +            'CREATE', 'DEBUG', 'DEC', 'DEFAULT', 'DIM', 'DO', 'EACH', 'ELSE', 'END', 'ENDIF', 'ERROR', 'EVENT', 'EXEC',
        +            'EXPORT', 'EXTERN', 'FALSE', 'FINALLY', 'FLUSH', 'FOR', 'FUNCTION', 'GOTO', 'IF', 'IN', 'INC', 'INHERITS',
        +            'INPUT', 'FROM', 'IS', 'KILL', 'LAST', 'LIBRARY', 'LIKE', 'LINE INPUT', 'LINK', 'LOCK', 'LOOP', 'ME',
        +            'MKDIR', 'MOVE', 'NEW', 'NEXT', 'NULL', 'OPEN', 'OPTIONAL', 'OUTPUT', 'PIPE', 'PRINT', 'PRIVATE',
        +            'PROCEDURE', 'PROPERTY', 'PUBLIC', 'QUIT', 'RAISE', 'RANDOMIZE', 'READ', 'REPEAT', 'RETURN', 'RMDIR',
        +            'SEEK', 'SELECT', 'SHELL', 'SLEEP', 'STATIC', 'STEP', 'STOP', 'SUB', 'SUPER', 'SWAP', 'THEN', 'TO',
        +            'TRUE', 'TRY', 'UNLOCK', 'UNTIL', 'WAIT', 'WATCH', 'WEND', 'WHILE', 'WITH', 'WRITE'
        +            ),
        +        //functions
        +        2 => array(
        +            'Abs', 'Access', 'Acos', 'Acosh', 'Alloc', 'Ang', 'Asc', 'ASin', 'ASinh', 'Asl', 'Asr', 'Assign', 'Atan',
        +            'ATan2', 'ATanh',
        +            'BChg', 'BClr', 'Bin', 'BSet', 'BTst',
        +            'CBool', 'Cbr', 'CByte', 'CDate', 'CFloat', 'Choose', 'Chr', 'CInt', 'CLong', 'Comp', 'Conv', 'Cos',
        +            'Cosh', 'CShort', 'CSng', 'CStr',
        +            'DateAdd', 'DateDiff', 'Day', 'DConv', 'Deg', 'DFree', 'Dir',
        +            'Eof', 'Eval', 'Exist', 'Exp', 'Exp10', 'Exp2', 'Expm',
        +            'Fix', 'Format', 'Frac', 'Free',
        +            'Hex', 'Hour', 'Hyp',
        +            'Iif', 'InStr', 'Int', 'IsAscii', 'IsBlank', 'IsBoolean', 'IsByte', 'IsDate', 'IsDigit', 'IsDir',
        +            'IsFloat', 'IsHexa', 'IsInteger', 'IsLCase', 'IsLetter', 'IsLong', 'IsNull', 'IsNumber', 'IsObject',
        +            'IsPunct', 'IsShort', 'IsSingle', 'IsSpace', 'IsString', 'IsUCase', 'IsVariant',
        +            'LCase', 'Left', 'Len', 'Lof', 'Log', 'Log10', 'Log2', 'Logp', 'Lsl', 'Lsr', 'LTrim',
        +            'Mag', 'Max', 'Mid', 'Min', 'Minute', 'Month', 'Now', 'Quote',
        +            'Rad', 'RDir', 'Realloc', 'Replace', 'Right', 'RInStr', 'Rnd', 'Rol', 'Ror', 'Round', 'RTrim',
        +            'Scan', 'SConv', 'Second', 'Seek', 'Sgn', 'Shl', 'Shr', 'Sin', 'Sinh', 'Space', 'Split', 'Sqr',
        +            'Stat', 'Str', 'StrPtr', 'Subst',
        +            'Tan', 'Tanh', 'Temp$', 'Time', 'Timer', 'Tr', 'Trim', 'TypeOf',
        +            'UCase', 'Unquote', 'Val', 'VarPtr', 'Week', 'WeekDay', 'Year'
        +            ),
        +        //string functions
        +        3 => array(
        +            'Bin$', 'Chr$', 'Conv$', 'DConv$', 'Format$', 'Hex$', 'LCase$', 'Left$', 'LTrim$', 'Mid$', 'Quote$',
        +            'Replace$', 'Right$', 'SConv$', 'Space$', 'Str$', 'String$', 'Subst$', 'Tr$', 'Trim$', 'UCase$',
        +            'Unquote$'
        +            ),
        +        //datatypes
        +        4 => array(
        +            'Boolean', 'Byte', 'Short', 'Integer', 'Long', 'Single', 'Float', 'Date', 'String', 'Variant', 'Object',
        +            'Pointer', 'File'
        +            ),
        +        //operators
        +        5 => array(
        +            'AND', 'DIV', 'MOD', 'NOT', 'OR', 'XOR'
        +            ),
        +        //objects/classes
        +        6 => array(
        +            'Application', 'Array', 'Byte[]', 'Collection', 'Component', 'Enum', 'Observer', 'Param', 'Process',
        +            'Stream', 'System', 'User', 'Chart', 'Compress', 'Crypt', 'Blob', 'Connection', 'DB', 'Database',
        +            'DatabaseUser', 'Field', 'Index', 'Result', 'ResultField', 'Table', 'DataBrowser', 'DataCombo',
        +            'DataControl', 'DataSource', 'DataView', 'Desktop', 'DesktopFile', 'Balloon', 'ColorButton',
        +            'ColorChooser', 'DateChooser', 'DirChooser', 'DirView', 'Expander', 'FileChooser', 'FileView',
        +            'FontChooser', 'InputBox', 'ListContainer', 'SidePanel', 'Stock', 'TableView', 'ToolPanel', 'ValueBox',
        +            'Wizard', 'Dialog', 'ToolBar', 'WorkSpace', 'DnsClient', 'SerialPort', 'ServerSocket', 'Socket',
        +            'UdpSocket', 'FtpClient', 'HttpClient', 'SmtpClient', 'Regexp', 'Action', 'Button', 'CheckBox',
        +            'ColumnView', 'ComboBox', 'Draw', 'Container', 'Control', 'Cursor', 'DrawingArea', 'Embedder',
        +            'Font', 'Form', 'Frame', 'GridView', 'HBox', 'HPanel', 'HSplit', 'IconView', 'Image', 'Key', 'Label',
        +            'Line', 'ListBox', 'ListView', 'Menu', 'Message', 'Mouse', 'MovieBox', 'Panel', 'Picture', 'PictureBox',
        +            'ProgressBar', 'RadioButton', 'ScrollBar', 'ScrollView', 'Separator', 'Slider', 'SpinBox', 'TabStrip',
        +            'TextArea', 'TextBox', 'TextLabel', 'ToggleButton', 'TrayIcon', 'TreeView', 'VBox', 'VPanel', 'VSplit',
        +            'Watcher', 'Window', 'Dial', 'Editor', 'LCDNumber', 'Printer', 'TextEdit', 'WebBrowser', 'GLarea',
        +            'Report', 'ReportCloner', 'ReportContainer', 'ReportControl', 'ReportDrawing', 'ReportField', 'ReportHBox',
        +            'ReportImage', 'ReportLabel', 'ReportSection', 'ReportSpecialField', 'ReportTextLabel', 'ReportVBox',
        +            'CDRom', 'Channel', 'Music', 'Sound', 'Settings', 'VideoDevice', 'Vb', 'CGI', 'HTML', 'Request', 'Response',
        +            'Session', 'XmlDocument', 'XmlNode', 'XmlReader', 'XmlReaderNodeType', 'XmlWriter', 'RpcArray', 'RpcClient',
        +            'RpcFunction', 'RpcServer', 'RpcStruct', 'RpcType', 'XmlRpc', 'Xslt'
        +            ),
        +        //constants
        +        7 => array(
        +            'Pi'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '&', '&=', '&/', '*', '*=', '+', '+=', '-', '-=', '//', '/', '/=', '=', '==', '\\', '\\=',
        +        '^', '^=', '[', ']', '{', '}', '<', '>', '<>', '<=', '>='
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        6 => false,
        +        7 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0600FF; font-weight: bold;',          // Keywords
        +            2 => 'color: #8B1433;',                             // Functions
        +            3 => 'color: #8B1433;',                             // String Functions
        +            4 => 'color: #0600FF;',                             // Data Types
        +            5 => 'color: #1E90FF;',                             // Operators
        +            6 => 'color: #0600FF;',                             // Objects/Components
        +            7 => 'color: #0600FF;'                              // Constants
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #1A5B1A; font-style: italic;',
        +            'MULTI' => 'color: #1A5B1A; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #008080;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #612188;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #7E4B05;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #FF0000;',
        +            GESHI_NUMBER_INT_BASIC => 'color: #FF0000;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #0000FF;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #6132B2;'
        +            ),
        +        'REGEXPS' => array(
        +            //3 => 'color: #8B1433;'  //fakes '$' colour matched by REGEXP
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => 'http://gambasdoc.org/help/lang/{FNAMEL}',
        +        2 => 'http://gambasdoc.org/help/lang/{FNAMEL}',
        +        3 => 'http://www.google.com/search?hl=en&q={FNAMEL}+site:http://gambasdoc.org/help/lang/&btnI=I%27m%20Feeling%20Lucky',
        +        4 => 'http://gambasdoc.org/help/lang/type/{FNAMEL}',
        +        5 => 'http://gambasdoc.org/help/lang/{FNAMEL}',
        +        6 => 'http://www.google.com/search?hl=en&q={FNAMEL}+site:http://gambasdoc.org/&btnI=I%27m%20Feeling%20Lucky',
        +        7 => 'http://gambasdoc.org/help/lang/{FNAMEL}'
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 =>'.'
        +        ),
        +    'REGEXPS' => array(
        +        //3 => "\\$(?!\\w)"   //matches '$' at the end of Keyword
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            2 => array(
        +                'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_\|%\\-&;\$])"
        +                )
        +            )
        +        )
        +);
        diff --git a/includes/geshi/gdb.php b/includes/geshi/gdb.php
        new file mode 100644
        index 0000000..16cc9fb
        --- /dev/null
        +++ b/includes/geshi/gdb.php
        @@ -0,0 +1,194 @@
        + 'GDB',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        0 => array(
        +            'Application',
        +            'signal',
        +            ),
        +        1 => array(
        +            'Segmentation fault',
        +            '[KCrash Handler]',
        +            ),
        +        ),
        +    'NUMBERS' => false,
        +    'SYMBOLS' => array(
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        0 => true,
        +        1 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            0 => 'font-weight:bold;',
        +            1 => 'font-weight:bold; color: #ff0000;'
        +            ),
        +        'COMMENTS' => array(
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => ''
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'font-weight:bold;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #933;'
        +            ),
        +        'NUMBERS' => array(
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #000066; font-weight:bold;',
        +            1 => 'color: #006600;',
        +            2 => 'color: #B07E00;',
        +            3 => 'color: #0057AE; text-style:italic;',
        +            4 => 'color: #0057AE; text-style:italic;',
        +            5 => 'color: #442886;',
        +            6 => 'color: #442886; font-weight:bold;',
        +            7 => 'color: #FF0000; font-weight:bold;',
        +            8 => 'color: #006E26;',
        +            9 => 'color: #555;',
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        0 => '',
        +        1 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        //[Current Thread...], [KCrash Handler] etc.
        +        0 => array(
        +            GESHI_SEARCH => '^\[.+\]',
        +            GESHI_REPLACE => '\\0',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        //stack number
        +        1 => array(
        +            GESHI_SEARCH => '^#\d+',
        +            GESHI_REPLACE => '\\0',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        //Thread X (Thread...)
        +        2 => array(
        +            GESHI_SEARCH => '^Thread \d.+$',
        +            GESHI_REPLACE => '\\0',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        //Files with linenumbers
        +        3 => array(
        +            GESHI_SEARCH => '(at\s+)(.+)(:\d+\s*)$',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3'
        +            ),
        +        //Libs without linenumbers
        +        4 => array(
        +            GESHI_SEARCH => '(from\s+)(.+)(\s*)$',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3'
        +            ),
        +        //Line numbers
        +        5 => array(
        +            GESHI_SEARCH => '(:)(\d+)(\s*)$',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3'
        +            ),
        +        //Location
        +        6 => array(
        +            GESHI_SEARCH => '(\s+)(in\s+)?([^ 0-9][^ ]*)([ \n]+\()',
        +            GESHI_REPLACE => '\\3',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1\\2',
        +            GESHI_AFTER => '\\4'
        +            ),
        +        // interesting parts: abort, qFatal, assertions, null ptrs, ...
        +        7 => array(
        +            GESHI_SEARCH => '\b((?:\*__GI_)?(?:__assert_fail|abort)|qFatal|0x0)\b([^\.]|$)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => '\\2'
        +            ),
        +        // Namespace / Classes
        +        8 => array(
        +            GESHI_SEARCH => '\b(\w+)(::)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => 'U',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => '\\2'
        +            ),
        +        // make ptr adresses and  uninteresting
        +        9 => '\b(?:0x[a-f0-9]{2,}|value\s+optimized\s+out)\b'
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'ENABLE_FLAGS' => array(
        +            'NUMBERS' => false
        +            )
        +        )
        +);
        diff --git a/includes/geshi/genero.php b/includes/geshi/genero.php
        new file mode 100644
        index 0000000..faac5e8
        --- /dev/null
        +++ b/includes/geshi/genero.php
        @@ -0,0 +1,461 @@
        + 'genero',
        +    'COMMENT_SINGLE' => array(1 => '--', 2 => '#'),
        +    'COMMENT_MULTI' => array('{' => '}'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            "ABSOLUTE",
        +            "ACCEPT",
        +            "ACTION",
        +            "ADD",
        +            "AFTER",
        +            "ALL",
        +            "ALTER",
        +            "AND",
        +            "ANY",
        +            "APPEND",
        +            "APPLICATION",
        +            "AS",
        +            "AT",
        +            "ATTRIBUTE",
        +            "ATTRIBUTES",
        +            "AUDIT",
        +            "AVG",
        +            "BEFORE",
        +            "BEGIN",
        +            "BETWEEN",
        +            "BORDER",
        +            "BOTTOM",
        +            "BREAKPOINT",
        +            "BUFFER",
        +            "BUFFERED",
        +            "BY",
        +            "CALL",
        +            "CANCEL",
        +            "CASE",
        +            "CENTURY",
        +            "CHANGE",
        +            "CHECK",
        +            "CLEAR",
        +            "CLIPPED",
        +            "CLOSE",
        +            "CLUSTER",
        +            "COLUMN",
        +            "COLUMNS",
        +            "COMMAND",
        +            "COMMENT",
        +            "COMMIT",
        +            "COMMITTED",
        +            "CONCURRENT ",
        +            "CONNECT",
        +            "CONNECTION",
        +            "CONSTANT",
        +            "CONSTRAINED",
        +            "CONSTRAINT",
        +            "CONSTRUCT",
        +            "CONTINUE",
        +            "CONTROL",
        +            "COUNT",
        +            "CREATE",
        +            "CROSS",
        +            "CURRENT",
        +            "DATABASE",
        +            "DBA",
        +            "DEC",
        +            "DECLARE",
        +            "DEFAULT",
        +            "DEFAULTS",
        +            "DEFER",
        +            "DEFINE",
        +            "DELETE",
        +            "DELIMITER",
        +            "DESCRIBE",
        +            "DESTINATION",
        +            "DIM",
        +            "DIALOG",
        +            "DIMENSION",
        +            "DIRTY",
        +            "DISCONNECT",
        +            "DISPLAY",
        +            "DISTINCT",
        +            "DORMANT",
        +            "DOWN",
        +            "DROP",
        +            "DYNAMIC",
        +            "ELSE",
        +            "END",
        +            "ERROR",
        +            "ESCAPE",
        +            "EVERY",
        +            "EXCLUSIVE",
        +            "EXECUTE",
        +            "EXISTS",
        +            "EXIT",
        +            "EXPLAIN",
        +            "EXTEND",
        +            "EXTENT",
        +            "EXTERNAL",
        +            "FETCH",
        +            "FGL_DRAWBOX",
        +            "FIELD",
        +            "FIELD_TOUCHED",
        +            "FILE",
        +            "FILL",
        +            "FINISH",
        +            "FIRST",
        +            "FLOAT",
        +            "FLUSH",
        +            "FOR",
        +            "FOREACH",
        +            "FORM",
        +            "FORMAT",
        +            "FOUND",
        +            "FRACTION",
        +            "FREE",
        +            "FROM",
        +            "FULL",
        +            "FUNCTION",
        +            "GET_FLDBUF",
        +            "GLOBALS",
        +            "GO",
        +            "GOTO",
        +            "GRANT",
        +            "GROUP",
        +            "HAVING",
        +            "HEADER",
        +            "HELP",
        +            "HIDE",
        +            "HOLD",
        +            "HOUR",
        +            "IDLE",
        +            "IF",
        +            "IMAGE",
        +            "IMMEDIATE",
        +            "IN",
        +            "INDEX",
        +            "INFIELD",
        +            "INITIALIZE",
        +            "INNER",
        +            "INPUT",
        +            "INSERT",
        +            "INTERRUPT",
        +            "INTERVAL",
        +            "INTO",
        +            "INVISIBLE",
        +            "IS",
        +            "ISOLATION",
        +            "JOIN",
        +            "KEEP",
        +            "KEY",
        +            "LABEL",
        +            "LAST",
        +            "LEFT",
        +            "LENGTH",
        +            "LET",
        +            "LIKE",
        +            "LINE",
        +            "LINENO",
        +            "LINES",
        +            "LOAD",
        +            "LOCATE",
        +            "LOCK",
        +            "LOG",
        +            "LSTR",
        +            "MAIN",
        +            "MARGIN",
        +            "MATCHES",
        +            "MAX",
        +            "MAXCOUNT",
        +            "MDY",
        +            "MEMORY",
        +            "MENU",
        +            "MESSAGE",
        +            "MIN",
        +            "MINUTE",
        +            "MOD",
        +            "MODE",
        +            "MODIFY",
        +            "MONEY",
        +            "NAME",
        +            "NEED",
        +            "NEXT",
        +            "NO",
        +            "NORMAL",
        +            "NOT",
        +            "NOTFOUND",
        +            "NULL",
        +            "NUMERIC",
        +            "OF",
        +            "ON",
        +            "OPEN",
        +            "OPTION",
        +            "OPTIONS",
        +            "OR",
        +            "ORDER",
        +            "OTHERWISE",
        +            "OUTER",
        +            "OUTPUT",
        +            "PAGE",
        +            "PAGENO",
        +            "PAUSE",
        +            "PERCENT",
        +            "PICTURE",
        +            "PIPE",
        +            "PRECISION",
        +            "PREPARE",
        +            "PREVIOUS",
        +            "PRINT",
        +            "PRINTER",
        +            "PRINTX",
        +            "PRIOR",
        +            "PRIVILEGES",
        +            "PROCEDURE",
        +            "PROGRAM",
        +            "PROMPT",
        +            "PUBLIC",
        +            "PUT",
        +            "QUIT",
        +            "READ",
        +            "REAL",
        +            "RECORD",
        +            "RECOVER",
        +            "RED ",
        +            "RELATIVE",
        +            "RENAME",
        +            "REOPTIMIZATION",
        +            "REPEATABLE",
        +            "REPORT",
        +            "RESOURCE",
        +            "RETURN",
        +            "RETURNING",
        +            "REVERSE",
        +            "REVOKE",
        +            "RIGHT",
        +            "ROLLBACK",
        +            "ROLLFORWARD",
        +            "ROW",
        +            "ROWS",
        +            "RUN",
        +            "SCHEMA",
        +            "SCREEN",
        +            "SCROLL",
        +            "SECOND",
        +            "SELECT",
        +            "SERIAL",
        +            "SET",
        +            "SFMT",
        +            "SHARE",
        +            "SHIFT",
        +            "SHOW",
        +            "SIGNAL ",
        +            "SIZE",
        +            "SKIP",
        +            "SLEEP",
        +            "SOME",
        +            "SPACE",
        +            "SPACES",
        +            "SQL",
        +            "SQLERRMESSAGE",
        +            "SQLERROR",
        +            "SQLSTATE",
        +            "STABILITY",
        +            "START",
        +            "STATISTICS",
        +            "STEP",
        +            "STOP",
        +            "STYLE",
        +            "SUM",
        +            "SYNONYM",
        +            "TABLE",
        +            "TEMP",
        +            "TERMINATE",
        +            "TEXT",
        +            "THEN",
        +            "THROUGH",
        +            "THRU",
        +            "TO",
        +            "TODAY",
        +            "TOP",
        +            "TRAILER",
        +            "TRANSACTION ",
        +            "UNBUFFERED",
        +            "UNCONSTRAINED",
        +            "UNDERLINE",
        +            "UNION",
        +            "UNIQUE",
        +            "UNITS",
        +            "UNLOAD",
        +            "UNLOCK",
        +            "UP",
        +            "UPDATE",
        +            "USE",
        +            "USER",
        +            "USING",
        +            "VALIDATE",
        +            "VALUE",
        +            "VALUES",
        +            "VARCHAR",
        +            "VIEW",
        +            "WAIT",
        +            "WAITING",
        +            "WARNING",
        +            "WHEN",
        +            "WHENEVER",
        +            "WHERE",
        +            "WHILE",
        +            "WINDOW",
        +            "WITH",
        +            "WITHOUT",
        +            "WORDWRAP",
        +            "WORK",
        +            "WRAP"
        +            ),
        +        2 => array(
        +            '&IFDEF', '&ENDIF'
        +            ),
        +        3 => array(
        +            "ARRAY",
        +            "BYTE",
        +            "CHAR",
        +            "CHARACTER",
        +            "CURSOR",
        +            "DATE",
        +            "DATETIME",
        +            "DECIMAL",
        +            "DOUBLE",
        +            "FALSE",
        +            "INT",
        +            "INTEGER",
        +            "SMALLFLOAT",
        +            "SMALLINT",
        +            "STRING",
        +            "TIME",
        +            "TRUE"
        +            ),
        +        4 => array(
        +            "BLACK",
        +            "BLINK",
        +            "BLUE",
        +            "BOLD",
        +            "ANSI",
        +            "ASC",
        +            "ASCENDING",
        +            "ASCII",
        +            "CYAN",
        +            "DESC",
        +            "DESCENDING",
        +            "GREEN",
        +            "MAGENTA",
        +            "OFF",
        +            "WHITE",
        +            "YELLOW",
        +            "YEAR",
        +            "DAY",
        +            "MONTH",
        +            "WEEKDAY"
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '+', '-', '*', '?', '=', '/', '%', '>', '<', '^', '!', '|', ':',
        +        '(', ')', '[', ']'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0600FF;',
        +            2 => 'color: #0000FF; font-weight: bold;',
        +            3 => 'color: #008000;',
        +            4 => 'color: #FF0000;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008080; font-style: italic;',
        +            2 => 'color: #008080;',
        +            'MULTI' => 'color: #008080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #008080; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #808080;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #FF0000;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #0000FF;',
        +            2 => 'color: #0000FF;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #008000;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/genie.php b/includes/geshi/genie.php
        new file mode 100644
        index 0000000..3849562
        --- /dev/null
        +++ b/includes/geshi/genie.php
        @@ -0,0 +1,155 @@
        + 'Genie',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        //Using and Namespace directives (basic support)
        +        //Please note that the alias syntax for using is not supported
        +        3 => '/(?:(?<=using[\\n\\s])|(?<=namespace[\\n\\s]))[\\n\\s]*([a-zA-Z0-9_]+\\.)*[a-zA-Z0-9_]+[\n\s]*(?=[;=])/i'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'HARDQUOTE' => array('@"', '"'),
        +    'HARDESCAPE' => array('""'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'and', 'as', 'abstract', 'break', 'case', 'cast', 'catch', 'const',
        +            'construct', 'continue', 'default', 'def', 'delete', 'div',
        +            'dynamic', 'do', 'downto', 'else', 'ensures', 'except', 'extern',
        +            'false', 'final', 'finally', 'for', 'foreach', 'get', 'if', 'in',
        +            'init', 'inline', 'internal', 'implements', 'lock', 'not', 'null',
        +            'of', 'or', 'otherwise', 'out', 'override', 'pass', 'raise',
        +            'raises', 'readonly', 'ref', 'requires', 'self', 'set', 'static',
        +            'super', 'switch', 'to', 'true', 'try', 'unless', 'uses', 'var', 'virtual',
        +            'volatile', 'void', 'when', 'while'
        +            ),
        +//        2 => array(
        +//            ),
        +        3 => array(
        +            'is', 'isa', 'new', 'owned', 'sizeof', 'typeof', 'unchecked',
        +            'unowned', 'weak'
        +            ),
        +        4 => array(
        +            'bool', 'byte', 'class', 'char', 'date', 'datetime', 'decimal', 'delegate',
        +            'double', 'enum', 'event', 'exception', 'float', 'int', 'interface',
        +            'long', 'object', 'prop', 'sbyte', 'short', 'single', 'string',
        +            'struct', 'ulong', 'ushort'
        +            ),
        +//        5 => array(
        +//            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', ':', ';',
        +        '(', ')', '{', '}', '[', ']', '|'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +//        2 => false,
        +        3 => false,
        +        4 => false,
        +//        5 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0600FF;',
        +//            2 => 'color: #FF8000; font-weight: bold;',
        +            3 => 'color: #008000;',
        +            4 => 'color: #FF0000;',
        +//            5 => 'color: #000000;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008080; font-style: italic;',
        +//            2 => 'color: #008080;',
        +            3 => 'color: #008080;',
        +            'MULTI' => 'color: #008080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #008080; font-weight: bold;',
        +            'HARD' => 'color: #008080; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #666666;',
        +            'HARD' => 'color: #666666;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #FF0000;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #0000FF;',
        +            2 => 'color: #0000FF;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #008000;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +//        2 => '',
        +        3 => '',
        +        4 => '',
        +//        5 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => "(?|^])",
        +            'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_<\|%\\-])"
        +            )
        +        )
        +);
        diff --git a/includes/geshi/gettext.php b/includes/geshi/gettext.php
        new file mode 100644
        index 0000000..ef4dd96
        --- /dev/null
        +++ b/includes/geshi/gettext.php
        @@ -0,0 +1,95 @@
        + 'GNU Gettext',
        +    'COMMENT_SINGLE' => array('#:', '#.', '#,', '#|', '#'),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array('msgctxt', 'msgid_plural', 'msgid', 'msgstr'),
        +    ),
        +    'SYMBOLS' => array(),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +    ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000000; font-weight: bold;'
        +        ),
        +        'COMMENTS' => array(
        +            0 => 'color: #000099;',
        +            1 => 'color: #000099;',
        +            2 => 'color: #000099;',
        +            3 => 'color: #006666;',
        +            4 => 'color: #666666; font-style: italic;',
        +        ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +        ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +        ),
        +        'REGEXPS' => array(),
        +        'SYMBOLS' => array(),
        +        'NUMBERS' => array(
        +            0 => 'color: #000099;'
        +        ),
        +        'METHODS' => array(),
        +        'SCRIPT' => array(),
        +        'BRACKETS' => array(
        +            0 => 'color: #000099;'
        +        ),
        +    ),
        +    'URLS' => array(
        +        1 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/glsl.php b/includes/geshi/glsl.php
        new file mode 100644
        index 0000000..1eb3918
        --- /dev/null
        +++ b/includes/geshi/glsl.php
        @@ -0,0 +1,203 @@
        + 'glSlang',
        +    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        //Multiline-continued single-line comments
        +        1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m',
        +        //Multiline-continued preprocessor define
        +        2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m'
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'if', 'else', 'for', 'while', 'do', 'break', 'continue', 'asm',
        +            'switch', 'case', 'default', 'return', 'discard',
        +            'namespace', 'using', 'sizeof', 'cast'
        +            ),
        +        2 => array(
        +            'const', 'uniform', 'attribute', 'centroid', 'varying', 'invariant',
        +            'in', 'out', 'inout', 'input', 'output', 'typedef', 'volatile',
        +            'public', 'static', 'extern', 'external', 'packed',
        +            'inline', 'noinline', 'noperspective', 'flat'
        +            ),
        +        3 => array(
        +            'void', 'bool', 'int', 'long', 'short', 'float', 'half', 'fixed',
        +            'unsigned', 'lowp', 'mediump', 'highp', 'precision',
        +            'vec2', 'vec3', 'vec4', 'bvec2', 'bvec3', 'bvec4',
        +            'dvec2', 'dvec3', 'dvec4', 'fvec2', 'fvec3', 'fvec4',
        +            'hvec2', 'hvec3', 'hvec4', 'ivec2', 'ivec3', 'ivec4',
        +            'mat2', 'mat3', 'mat4', 'mat2x2', 'mat3x2', 'mat4x2',
        +            'mat2x3', 'mat3x3', 'mat4x3', 'mat2x4', 'mat3x4', 'mat4x4',
        +            'sampler1D', 'sampler2D', 'sampler3D', 'samplerCube',
        +            'sampler1DShadow', 'sampler2DShadow',
        +            'struct', 'class', 'union', 'enum', 'interface', 'template'
        +            ),
        +        4 => array(
        +            'this', 'false', 'true'
        +            ),
        +        5 => array(
        +            'radians', 'degrees', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan',
        +            'pow', 'exp2', 'log2', 'sqrt', 'inversesqrt', 'abs', 'sign', 'ceil',
        +            'floor', 'fract', 'mod', 'min', 'max', 'clamp', 'mix', 'step',
        +            'smoothstep', 'length', 'distance', 'dot', 'cross', 'normalize',
        +            'ftransform', 'faceforward', 'reflect', 'matrixCompMult', 'equal',
        +            'lessThan', 'lessThanEqual', 'greaterThan', 'greaterThanEqual',
        +            'notEqual', 'any', 'all', 'not', 'texture1D', 'texture1DProj',
        +            'texture1DLod', 'texture1DProjLod', 'texture2D', 'texture2DProj',
        +            'texture2DLod', 'texture2DProjLod', 'texture3D', 'texture3DProj',
        +            'texture3DLod', 'texture3DProjLod', 'textureCube', 'textureCubeLod',
        +            'shadow1D', 'shadow1DProj', 'shadow1DLod', 'shadow1DProjLod',
        +            'shadow2D', 'shadow2DProj', 'shadow2DLod', 'shadow2DProjLod',
        +            'noise1', 'noise2', 'noise3', 'noise4'
        +            ),
        +        6 => array(
        +            'gl_Position', 'gl_PointSize', 'gl_ClipVertex', 'gl_FragColor',
        +            'gl_FragData', 'gl_FragDepth', 'gl_FragCoord', 'gl_FrontFacing',
        +            'gl_Color', 'gl_SecondaryColor', 'gl_Normal', 'gl_Vertex',
        +            'gl_MultiTexCoord0', 'gl_MultiTexCoord1', 'gl_MultiTexCoord2',
        +            'gl_MultiTexCoord3', 'gl_MultiTexCoord4', 'gl_MultiTexCoord5',
        +            'gl_MultiTexCoord6', 'gl_MultiTexCoord7', 'gl_FogCoord',
        +            'gl_MaxLights', 'gl_MaxClipPlanes', 'gl_MaxTextureUnits',
        +            'gl_MaxTextureCoords', 'gl_MaxVertexAttribs', 'gl_MaxVaryingFloats',
        +            'gl_MaxVertexUniformComponents', 'gl_MaxVertexTextureImageUnits',
        +            'gl_MaxCombinedTextureImageUnits', 'gl_MaxTextureImageUnits',
        +            'gl_MaxFragmentUniformComponents', 'gl_MaxDrawBuffers', 'gl_Point',
        +            'gl_ModelViewMatrix', 'gl_ProjectionMatrix', 'gl_FrontMaterial',
        +            'gl_ModelViewProjectionMatrix', 'gl_TextureMatrix', 'gl_ClipPlane',
        +            'gl_NormalMatrix', 'gl_ModelViewMatrixInverse', 'gl_BackMaterial',
        +            'gl_ProjectionMatrixInverse', 'gl_ModelViewProjectionMatrixInverse',
        +            'gl_TextureMatrixInverse', 'gl_ModelViewMatrixTranspose', 'gl_Fog',
        +            'gl_ProjectionMatrixTranspose', 'gl_NormalScale', 'gl_DepthRange',
        +            'gl_odelViewProjectionMatrixTranspose', 'gl_TextureMatrixTranspose',
        +            'gl_ModelViewMatrixInverseTranspose', 'gl_LightSource',
        +            'gl_ProjectionMatrixInverseTranspose', 'gl_LightModel',
        +            'gl_ModelViewProjectionMatrixInverseTranspose', 'gl_TexCoord',
        +            'gl_TextureMatrixInverseTranspose', 'gl_TextureEnvColor',
        +            'gl_FrontLightModelProduct', 'gl_BackLightModelProduct',
        +            'gl_FrontLightProduct', 'gl_BackLightProduct', 'gl_ObjectPlaneS',
        +            'gl_ObjectPlaneT', 'gl_ObjectPlaneR', 'gl_ObjectPlaneQ',
        +            'gl_EyePlaneS', 'gl_EyePlaneT', 'gl_EyePlaneR', 'gl_EyePlaneQ',
        +            'gl_FrontColor', 'gl_BackColor', 'gl_FrontSecondaryColor',
        +            'gl_BackSecondaryColor', 'gl_FogFragCoord', 'gl_PointCoord'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^',
        +        '&', '?', ':', '.', '|', ';', ',', '<', '>'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000000; font-weight: bold;',
        +            2 => 'color: #333399; font-weight: bold;',
        +            3 => 'color: #000066; font-weight: bold;',
        +            4 => 'color: #333399; font-weight: bold;',
        +            5 => 'color: #993333; font-weight: bold;',
        +            6 => 'color: #551111;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            2 => 'color: #009900;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000066;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000066;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'OOLANG' => array(
        +            'MATCH_BEFORE' => '',
        +            'MATCH_AFTER' => '[a-zA-Z_][a-zA-Z0-9_]*',
        +            'MATCH_SPACES' => '[\s]*'
        +        )
        +    )
        +);
        diff --git a/includes/geshi/gml.php b/includes/geshi/gml.php
        new file mode 100644
        index 0000000..e5ea76a
        --- /dev/null
        +++ b/includes/geshi/gml.php
        @@ -0,0 +1,367 @@
        +, Timon Knigge 
        + * Copyright: (c) 2005 José Jorge Enríquez Rodríguez (http://www.zonamakers.com), (c) 2013 Timon Knigge (http://www.bluemoonproductions.nl)
        + * Release Version: 1.0.8.12
        + * Date Started: 2005/06/21
        + *
        + * GML language file for GeSHi.
        + *
        + * GML (Game Maker Language) is a script language that is built-in into Game Maker,
        + * a game creation program, more info about Game Maker can be found at
        + * http://www.gamemaker.nl/
        + * All GML keywords were extracted from the Game Maker HTML Help file using a PHP
        + * script (one section at a time). I love PHP for saving me that bunch of work :P!.
        + * I think all GML functions have been indexed here, but I'm not sure about it, so
        + * please let me know of any issue you may find.
        + *
        + * CHANGES
        + * -------
        + * 2005/11/11
        + *  -  Changed 'CASE_KEYWORDS' fom 'GESHI_CAPS_LOWER' to 'GESHI_CAPS_NO_CHANGE',
        + *     so that MCI_command appears correctly (the only GML function using capitals).
        + *  -  Changed 'CASE_SENSITIVE' options, 'GESHI_COMMENTS' from true to false and all
        + *     of the others from false to true.
        + *  -  Deleted repeated entries.
        + *  -  div and mod are language keywords, moved (from symbols) to the appropiate section (1).
        + *  -  Moved self, other, all, noone and global identifiers to language keywords section 1.
        + *  -  Edited this file lines to a maximum width of 100 characters (as stated in
        + *     the GeSHi docs). Well, not strictly to 100 but around it.
        + *  -  Corrected some minor issues (the vk_f1...vk_f12 keys and similar).
        + *  -  Deleted the KEYWORDS=>5 and KEYWORDS=>6 sections (actually, they were empty).
        + *     I was planning of using those for the GML functions available only in the
        + *     registered version of the program, but not anymore.
        + *
        + * 2005/06/26 (1.0.3)
        + *  -  First Release.
        + *
        + * TODO (updated 2005/11/11)
        + * -------------------------
        + *  -  Test it for a while and make the appropiate corrections.
        + *
        + *************************************************************************************
        + *
        + *     This file is part of GeSHi.
        + *
        + *   GeSHi is free software; you can redistribute it and/or modify
        + *   it under the terms of the GNU General Public License as published by
        + *   the Free Software Foundation; either version 2 of the License, or
        + *   (at your option) any later version.
        + *
        + *   GeSHi is distributed in the hope that it will be useful,
        + *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + *   GNU General Public License for more details.
        + *
        + *   You should have received a copy of the GNU General Public License
        + *   along with GeSHi; if not, write to the Free Software
        + *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        + *
        + ************************************************************************************/
        +
        +$language_data = array(
        +    'LANG_NAME' => 'GML',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"', "'"),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        // Variables
        +        1 => array(
        +            'argument','argument0','argument1','argument10','argument11','argument12','argument13','argument14','argument15','argument2','argument3','argument4','argument5','argument6','argument7',
        +            'argument8','argument9','argument_count','argument_relative','async_load','background_alpha','background_blend','background_color','background_foreground','background_height','background_hspeed',
        +            'background_htiled','background_index','background_showcolor','background_visible','background_vspeed','background_vtiled','background_width','background_x','background_xscale','background_y',
        +            'background_yscale','browser_height','browser_width','caption_health','caption_lives','caption_score','current_day','current_hour','current_minute','current_month','current_second','current_time',
        +            'current_weekday','current_year','cursor_sprite','debug_mode','delta_time','display_aa','error_last','error_occurred','event_action','event_number','event_object','event_type','fps','fps_real',
        +            'game_id','gamemaker_pro','gamemaker_registered','gamemaker_version','health','instance_count','instance_id','keyboard_key','keyboard_lastchar','keyboard_lastkey','keyboard_string','lives',
        +            'mouse_button','mouse_lastbutton','mouse_x','mouse_y','os_browser','os_device','os_type','os_version','program_directory','room','room_caption','room_first','room_height','room_last',
        +            'room_persistent','room_speed','room_width','score','secure_mode','show_health','show_lives','show_score','temp_directory','transition_color','transition_kind','transition_steps','view_angle',
        +            'view_current','view_enabled','view_hborder','view_hport','view_hspeed','view_hview','view_object','view_surface_id','view_vborder','view_visible','view_vspeed','view_wport','view_wview','view_xport',
        +            'view_xview','view_yport','view_yview','webgl_enabled','working_directory','alarm','bbox_bottom','bbox_left','bbox_right','bbox_top','depth','direction','friction','gravity','gravity_direction',
        +            'hspeed','id','image_alpha','image_angle','image_blend','image_index','image_number','image_single','image_speed','image_xscale','image_yscale','mask_index','object_index','path_endaction','path_index',
        +            'path_orientation','path_position','path_positionprevious','path_scale','path_speed','persistent','phy_active','phy_angular_damping','phy_angular_velocity','phy_bullet','phy_col_normal_x',
        +            'phy_col_normal_y','phy_collision_points','phy_collision_x','phy_collision_y','phy_com_x','phy_com_y','phy_dynamic','phy_fixed_rotation','phy_inertia','phy_kinematic','phy_linear_damping',
        +            'phy_linear_velocity_x','phy_linear_velocity_y','phy_mass','phy_position_x','phy_position_xprevious','phy_position_y','phy_position_yprevious','phy_rotation','phy_sleeping','phy_speed','phy_speed_x',
        +            'phy_speed_y','solid','speed','sprite_height','sprite_index','sprite_width','sprite_xoffset','sprite_yoffset','timeline_index','timeline_loop','timeline_position','timeline_running','timeline_speed',
        +            'visible','vspeed','x','xprevious','xstart','y','yprevious','ystart'
        +            ),
        +
        +        // Functions
        +        2 => array(
        +            'YoYo_AchievementsAvailable','YoYo_AddVirtualKey','YoYo_CheckSecurity','YoYo_DeleteVirtualKey','YoYo_DisableAds','YoYo_EnableAds','YoYo_EnableAlphaBlend','YoYo_GetCPUDetails','YoYo_GetConfig',
        +            'YoYo_GetDevice','YoYo_GetDomain','YoYo_GetPictureSprite','YoYo_GetPlatform','YoYo_GetSessionKey','YoYo_GetTiltX','YoYo_GetTiltY','YoYo_GetTiltZ','YoYo_GetTimer','YoYo_HideVirtualKey','YoYo_IsKeypadOpen',
        +            'YoYo_LeaveRating','YoYo_LoginAchievements','YoYo_LogoutAchievements','YoYo_MouseCheckButton','YoYo_MouseCheckButtonPressed','YoYo_MouseCheckButtonReleased','YoYo_MouseX','YoYo_MouseXRaw','YoYo_MouseY',
        +            'YoYo_MouseYRaw','YoYo_OSPauseEvent','YoYo_OpenURL','YoYo_OpenURL_ext','YoYo_OpenURL_full','YoYo_PostAchievement','YoYo_PostScore','YoYo_SelectPicture','YoYo_ShowVirtualKey','abs','achievement_available',
        +            'achievement_event','achievement_get_challenges','achievement_get_info','achievement_get_pic','achievement_increment','achievement_load_friends','achievement_load_leaderboard','achievement_load_progress',
        +            'achievement_login','achievement_login_status','achievement_logout','achievement_post','achievement_post_score','achievement_reset','achievement_send_challenge','achievement_show',
        +            'achievement_show_achievements','achievement_show_challenge_notifications','achievement_show_leaderboards','action_another_room','action_bounce','action_change_object','action_color','action_create_object',
        +            'action_create_object_motion','action_create_object_random','action_current_room','action_draw_arrow','action_draw_background','action_draw_ellipse','action_draw_ellipse_gradient','action_draw_gradient_hor',
        +            'action_draw_gradient_vert','action_draw_health','action_draw_life','action_draw_life_images','action_draw_line','action_draw_rectangle','action_draw_score','action_draw_sprite','action_draw_text',
        +            'action_draw_text_transformed','action_draw_variable','action_effect','action_end_game','action_end_sound','action_execute_script','action_font','action_fullscreen','action_highscore_clear','action_if',
        +            'action_if_aligned','action_if_collision','action_if_dice','action_if_empty','action_if_health','action_if_life','action_if_mouse','action_if_next_room','action_if_number','action_if_object',
        +            'action_if_previous_room','action_if_question','action_if_score','action_if_sound','action_if_variable','action_inherited','action_kill_object','action_kill_position','action_linear_step','action_load_game',
        +            'action_message','action_move','action_move_contact','action_move_point','action_move_random','action_move_start','action_move_to','action_next_room','action_partemit_burst','action_partemit_create',
        +            'action_partemit_destroy','action_partemit_stream','action_partsyst_clear','action_partsyst_create','action_partsyst_destroy','action_parttype_color','action_parttype_create','action_parttype_gravity',
        +            'action_parttype_life','action_parttype_secondary','action_parttype_speed','action_path','action_path_end','action_path_position','action_path_speed','action_potential_step','action_previous_room',
        +            'action_replace_background','action_replace_sound','action_replace_sprite','action_restart_game','action_reverse_xdir','action_reverse_ydir','action_save_game','action_set_alarm','action_set_cursor',
        +            'action_set_friction','action_set_gravity','action_set_health','action_set_hspeed','action_set_life','action_set_motion','action_set_score','action_set_timeline_position','action_set_timeline_speed',
        +            'action_set_vspeed','action_snap','action_snapshot','action_sound','action_sprite_color','action_sprite_set','action_sprite_transform','action_timeline_pause','action_timeline_set','action_timeline_start',
        +            'action_timeline_stop','action_webpage','action_wrap','ads_disable','ads_enable','ads_engagement_active','ads_engagement_available','ads_engagement_launch','ads_event','ads_event_preload',
        +            'ads_get_display_height','ads_get_display_width','ads_interstitial_available','ads_interstitial_display','ads_move','ads_set_reward_callback','ads_setup','analytics_event','analytics_event_ext','ansi_char',
        +            'arccos','arcsin','arctan','arctan2','array_height_2d','array_length_1d','array_length_2d','asset_get_index','asset_get_type','audio_channel_num','audio_emitter_create','audio_emitter_exists',
        +            'audio_emitter_falloff','audio_emitter_free','audio_emitter_gain','audio_emitter_pitch','audio_emitter_position','audio_emitter_velocity','audio_exists','audio_falloff_set_model','audio_get_type',
        +            'audio_is_paused','audio_is_playing','audio_listener_orientation','audio_listener_position','audio_listener_velocity','audio_master_gain','audio_music_gain','audio_music_is_playing','audio_pause_all',
        +            'audio_pause_music','audio_pause_sound','audio_play_music','audio_play_sound','audio_play_sound_at','audio_play_sound_on','audio_resume_all','audio_resume_music','audio_resume_sound','audio_sound_gain',
        +            'audio_sound_length','audio_sound_pitch','audio_stop_all','audio_stop_music','audio_stop_sound','audio_system','background_add','background_assign','background_create_color','background_create_from_surface',
        +            'background_create_gradient','background_delete','background_duplicate','background_exists','background_get_height','background_get_name','background_get_texture','background_get_uvs','background_get_width',
        +            'background_replace','background_save','background_set_alpha_from_background','base64_decode','base64_encode','buffer_base64_decode','buffer_base64_decode_ext','buffer_base64_encode','buffer_copy',
        +            'buffer_create','buffer_delete','buffer_fill','buffer_get_size','buffer_get_surface','buffer_load','buffer_load_ext','buffer_md5','buffer_peek','buffer_poke','buffer_read','buffer_resize','buffer_save',
        +            'buffer_save_ext','buffer_seek','buffer_set_surface','buffer_sha1','buffer_sizeof','buffer_tell','buffer_write','ceil','choose','chr','clamp','clickable_add','clickable_add_ext','clickable_change',
        +            'clickable_change_ext','clickable_delete','clickable_exists','clipboard_get_text','clipboard_has_text','clipboard_set_text','cloud_file_save','cloud_string_save','cloud_synchronise','code_is_compiled',
        +            'collision_circle','collision_ellipse','collision_line','collision_point','collision_rectangle','color_get_blue','color_get_green','color_get_hue','color_get_red','color_get_saturation','color_get_value',
        +            'cos','d3d_draw_block','d3d_draw_cone','d3d_draw_cylinder','d3d_draw_ellipsoid','d3d_draw_floor','d3d_draw_wall','d3d_end','d3d_light_define_ambient','d3d_light_define_direction','d3d_light_define_point',
        +            'd3d_light_enable','d3d_model_block','d3d_model_clear','d3d_model_cone','d3d_model_create','d3d_model_cylinder','d3d_model_destroy','d3d_model_draw','d3d_model_ellipsoid','d3d_model_floor','d3d_model_load',
        +            'd3d_model_primitive_begin','d3d_model_primitive_end','d3d_model_save','d3d_model_vertex','d3d_model_vertex_color','d3d_model_vertex_normal','d3d_model_vertex_normal_color','d3d_model_vertex_normal_texture',
        +            'd3d_model_vertex_normal_texture_color','d3d_model_vertex_texture','d3d_model_vertex_texture_color','d3d_model_wall','d3d_primitive_begin','d3d_primitive_begin_texture','d3d_primitive_end','d3d_set_culling',
        +            'd3d_set_depth','d3d_set_fog','d3d_set_hidden','d3d_set_lighting','d3d_set_perspective','d3d_set_projection','d3d_set_projection_ext','d3d_set_projection_ortho','d3d_set_projection_perspective',
        +            'd3d_set_shading','d3d_set_zwriteenable','d3d_start','d3d_transform_add_rotation_axis','d3d_transform_add_rotation_x','d3d_transform_add_rotation_y','d3d_transform_add_rotation_z','d3d_transform_add_scaling',
        +            'd3d_transform_add_translation','d3d_transform_set_identity','d3d_transform_set_rotation_axis','d3d_transform_set_rotation_x','d3d_transform_set_rotation_y','d3d_transform_set_rotation_z',
        +            'd3d_transform_set_scaling','d3d_transform_set_translation','d3d_transform_stack_clear','d3d_transform_stack_discard','d3d_transform_stack_empty','d3d_transform_stack_pop','d3d_transform_stack_push',
        +            'd3d_transform_stack_top','d3d_transform_vertex','d3d_vertex','d3d_vertex_color','d3d_vertex_normal','d3d_vertex_normal_color','d3d_vertex_normal_texture','d3d_vertex_normal_texture_color','d3d_vertex_texture',
        +            'd3d_vertex_texture_color','date_compare_date','date_compare_datetime','date_compare_time','date_create_datetime','date_current_datetime','date_date_of','date_date_string','date_datetime_string','date_day_span',
        +            'date_days_in_month','date_days_in_year','date_get_day','date_get_day_of_year','date_get_hour','date_get_hour_of_year','date_get_minute','date_get_minute_of_year','date_get_month','date_get_second',
        +            'date_get_second_of_year','date_get_week','date_get_weekday','date_get_year','date_hour_span','date_inc_day','date_inc_hour','date_inc_minute','date_inc_month','date_inc_second','date_inc_week','date_inc_year',
        +            'date_is_today','date_leap_year','date_minute_span','date_month_span','date_second_span','date_time_of','date_time_string','date_valid_datetime','date_week_span','date_year_span','degtorad','device_get_tilt_x',
        +            'device_get_tilt_y','device_get_tilt_z','device_ios_get_image','device_ios_get_imagename','device_is_keypad_open','device_mouse_check_button','device_mouse_check_button_pressed',
        +            'device_mouse_check_button_released','device_mouse_dbclick_enable','device_mouse_raw_x','device_mouse_raw_y','device_mouse_x','device_mouse_y','directory_create','directory_exists','display_get_dpi_x',
        +            'display_get_dpi_y','display_get_gui_height','display_get_gui_width','display_get_height','display_get_orientation','display_get_width','display_mouse_get_x','display_mouse_get_y','display_mouse_set',
        +            'display_reset','display_set_gui_size','distance_to_object','distance_to_point','dot_product','dot_product_3d','dot_product_3d_normalised','dot_product_normalised','draw_arrow','draw_background',
        +            'draw_background_ext','draw_background_general','draw_background_part','draw_background_part_ext','draw_background_stretched','draw_background_stretched_ext','draw_background_tiled','draw_background_tiled_ext',
        +            'draw_button','draw_circle','draw_circle_color','draw_clear','draw_clear_alpha','draw_ellipse','draw_ellipse_color','draw_enable_alphablend','draw_enable_drawevent','draw_get_alpha','draw_get_alpha_test',
        +            'draw_get_alpha_test_ref_value','draw_get_color','draw_getpixel','draw_getpixel_ext','draw_healthbar','draw_highscore','draw_line','draw_line_color','draw_line_width','draw_line_width_color','draw_path',
        +            'draw_point','draw_point_color','draw_primitive_begin','draw_primitive_begin_texture','draw_primitive_end','draw_rectangle','draw_rectangle_color','draw_roundrect','draw_roundrect_color','draw_self',
        +            'draw_set_alpha','draw_set_alpha_test','draw_set_alpha_test_ref_value','draw_set_blend_mode','draw_set_blend_mode_ext','draw_set_circle_precision','draw_set_color','draw_set_color_write_enable',
        +            'draw_set_font','draw_set_halign','draw_set_valign','draw_sprite','draw_sprite_ext','draw_sprite_general','draw_sprite_part','draw_sprite_part_ext','draw_sprite_pos','draw_sprite_stretched',
        +            'draw_sprite_stretched_ext','draw_sprite_tiled','draw_sprite_tiled_ext','draw_surface','draw_surface_ext','draw_surface_general','draw_surface_part','draw_surface_part_ext','draw_surface_stretched',
        +            'draw_surface_stretched_ext','draw_surface_tiled','draw_surface_tiled_ext','draw_text','draw_text_color','draw_text_ext','draw_text_ext_color','draw_text_ext_transformed','draw_text_ext_transformed_color',
        +            'draw_text_transformed','draw_text_transformed_color','draw_texture_flush','draw_triangle','draw_triangle_color','draw_vertex','draw_vertex_color','draw_vertex_texture','draw_vertex_texture_color',
        +            'ds_exists','ds_grid_add','ds_grid_add_disk','ds_grid_add_grid_region','ds_grid_add_region','ds_grid_clear','ds_grid_copy','ds_grid_create','ds_grid_destroy','ds_grid_get','ds_grid_get_disk_max',
        +            'ds_grid_get_disk_mean','ds_grid_get_disk_min','ds_grid_get_disk_sum','ds_grid_get_max','ds_grid_get_mean','ds_grid_get_min','ds_grid_get_sum','ds_grid_height','ds_grid_multiply','ds_grid_multiply_disk',
        +            'ds_grid_multiply_grid_region','ds_grid_multiply_region','ds_grid_read','ds_grid_resize','ds_grid_set','ds_grid_set_disk','ds_grid_set_grid_region','ds_grid_set_region','ds_grid_shuffle','ds_grid_sort',
        +            'ds_grid_value_disk_exists','ds_grid_value_disk_x','ds_grid_value_disk_y','ds_grid_value_exists','ds_grid_value_x','ds_grid_value_y','ds_grid_width','ds_grid_write','ds_list_add','ds_list_clear',
        +            'ds_list_copy','ds_list_create','ds_list_delete','ds_list_destroy','ds_list_empty','ds_list_find_index','ds_list_find_value','ds_list_insert','ds_list_mark_as_list','ds_list_mark_as_map','ds_list_read',
        +            'ds_list_replace','ds_list_shuffle','ds_list_size','ds_list_sort','ds_list_write','ds_map_add','ds_map_add_list','ds_map_add_map','ds_map_clear','ds_map_copy','ds_map_create','ds_map_delete',
        +            'ds_map_destroy','ds_map_empty','ds_map_exists','ds_map_find_first','ds_map_find_last','ds_map_find_next','ds_map_find_previous','ds_map_find_value','ds_map_read','ds_map_replace','ds_map_replace_list',
        +            'ds_map_replace_map','ds_map_size','ds_map_write','ds_priority_add','ds_priority_change_priority','ds_priority_clear','ds_priority_copy','ds_priority_create','ds_priority_delete_max','ds_priority_delete_min',
        +            'ds_priority_delete_value','ds_priority_destroy','ds_priority_empty','ds_priority_find_max','ds_priority_find_min','ds_priority_find_priority','ds_priority_read','ds_priority_size','ds_priority_write',
        +            'ds_queue_clear','ds_queue_copy','ds_queue_create','ds_queue_dequeue','ds_queue_destroy','ds_queue_empty','ds_queue_enqueue','ds_queue_head','ds_queue_read','ds_queue_size','ds_queue_tail','ds_queue_write',
        +            'ds_set_precision','ds_stack_clear','ds_stack_copy','ds_stack_create','ds_stack_destroy','ds_stack_empty','ds_stack_pop','ds_stack_push','ds_stack_read','ds_stack_size','ds_stack_top','ds_stack_write',
        +            'effect_clear','effect_create_above','effect_create_below','environment_get_variable','event_inherited','event_perform','event_perform_object','event_user','exp','external_call','external_define','external_free',
        +            'facebook_accesstoken','facebook_dialog','facebook_graph_request','facebook_init','facebook_launch_offerwall','facebook_login','facebook_logout','facebook_post_message','facebook_send_invite','facebook_status',
        +            'facebook_user_id','file_attributes','file_bin_close','file_bin_open','file_bin_position','file_bin_read_byte','file_bin_rewrite','file_bin_seek','file_bin_size','file_bin_write_byte','file_copy','file_delete',
        +            'file_exists','file_find_close','file_find_first','file_find_next','file_rename','file_text_close','file_text_eof','file_text_eoln','file_text_open_append','file_text_open_from_string','file_text_open_read',
        +            'file_text_open_write','file_text_read_real','file_text_read_string','file_text_readln','file_text_write_real','file_text_write_string','file_text_writeln','filename_change_ext','filename_dir','filename_drive',
        +            'filename_ext','filename_name','filename_path','floor','font_add','font_add_sprite','font_add_sprite_ext','font_delete','font_exists','font_get_bold','font_get_first','font_get_fontname','font_get_italic',
        +            'font_get_last','font_get_name','font_get_size','font_get_texture','font_get_uvs','font_replace','font_replace_sprite','font_replace_sprite_ext','font_set_cache_size','frac','game_end','game_load',
        +            'game_load_buffer','game_restart','game_save','game_save_buffer','gamepad_axis_count','gamepad_axis_value','gamepad_button_check','gamepad_button_check_pressed','gamepad_button_check_released',
        +            'gamepad_button_count','gamepad_button_value','gamepad_get_axis_deadzone','gamepad_get_button_threshold','gamepad_get_description','gamepad_get_device_count','gamepad_is_connected','gamepad_is_supported',
        +            'gamepad_set_axis_deadzone','gamepad_set_button_threshold','gamepad_set_vibration','get_integer','get_integer_async','get_login_async','get_open_filename','get_open_filename_ext','get_save_filename',
        +            'get_save_filename_ext','get_string','get_string_async','get_timer','highscore_add','highscore_clear','highscore_name','highscore_value','http_get','http_get_file','http_post_string','iap_acquire',
        +            'iap_activate','iap_consume','iap_event_queue','iap_files_purchased','iap_is_downloaded','iap_is_purchased','iap_product_details','iap_product_files','iap_product_status','iap_restore_all','iap_status',
        +            'iap_store_status','immersion_play_effect','immersion_stop','ini_close','ini_key_delete','ini_key_exists','ini_open','ini_open_from_string','ini_read_real','ini_read_string','ini_section_delete',
        +            'ini_section_exists','ini_write_real','ini_write_string','instance_activate_all','instance_activate_object','instance_activate_region','instance_change','instance_copy','instance_create',
        +            'instance_deactivate_all','instance_deactivate_object','instance_deactivate_region','instance_destroy','instance_exists','instance_find','instance_furthest','instance_nearest','instance_number',
        +            'instance_place','instance_position','io_clear','irandom','irandom_range','is_array','is_real','is_string','joystick_axes','joystick_buttons','joystick_check_button','joystick_direction','joystick_exists',
        +            'joystick_has_pov','joystick_name','joystick_pov','joystick_rpos','joystick_upos','joystick_vpos','joystick_xpos','joystick_ypos','joystick_zpos','json_decode','json_encode','keyboard_check',
        +            'keyboard_check_direct','keyboard_check_pressed','keyboard_check_released','keyboard_clear','keyboard_get_map','keyboard_get_numlock','keyboard_key_press','keyboard_key_release','keyboard_set_map',
        +            'keyboard_set_numlock','keyboard_unset_map','lengthdir_x','lengthdir_y','lerp','ln','log10','log2','logn','make_color_hsv','make_color_rgb','math_set_epsilon','matrix_build','matrix_get','matrix_multiply',
        +            'matrix_set','max','md5_file','md5_string_unicode','md5_string_utf8','mean','median','merge_color','message_caption','min','motion_add','motion_set','mouse_check_button','mouse_check_button_pressed',
        +            'mouse_check_button_released','mouse_clear','mouse_wheel_down','mouse_wheel_up','move_bounce','move_bounce_all','move_bounce_solid','move_contact','move_contact_all','move_contact_solid','move_outside_all',
        +            'move_outside_solid','move_random','move_snap','move_towards_point','move_wrap','mp_grid_add_cell','mp_grid_add_instances','mp_grid_add_rectangle','mp_grid_clear_all','mp_grid_clear_cell',
        +            'mp_grid_clear_rectangle','mp_grid_create','mp_grid_destroy','mp_grid_draw','mp_grid_path','mp_linear_path','mp_linear_path_object','mp_linear_step','mp_linear_step_object','mp_potential_path',
        +            'mp_potential_path_object','mp_potential_settings','mp_potential_step','mp_potential_step_object','network_connect','network_connect_raw','network_create_server','network_create_socket','network_destroy',
        +            'network_resolve','network_send_broadcast','network_send_packet','network_send_raw','network_send_udp','network_set_timeout','object_exists','object_get_depth','object_get_mask',
        +            'object_get_name','object_get_parent','object_get_persistent','object_get_physics','object_get_solid','object_get_sprite','object_get_visible','object_is_ancestor','object_set_depth','object_set_mask',
        +            'object_set_persistent','object_set_solid','object_set_sprite','object_set_visible','ord','os_get_config','os_get_info','os_get_language','os_is_network_connected','os_is_paused','os_lock_orientation',
        +            'os_powersave_enable','parameter_count','parameter_string','part_emitter_burst','part_emitter_clear','part_emitter_create','part_emitter_destroy','part_emitter_destroy_all','part_emitter_exists',
        +            'part_emitter_region','part_emitter_stream','part_particles_clear','part_particles_count','part_particles_create','part_particles_create_color','part_system_automatic_draw','part_system_automatic_update',
        +            'part_system_clear','part_system_create','part_system_depth','part_system_destroy','part_system_draw_order','part_system_drawit','part_system_exists','part_system_position','part_system_update',
        +            'part_type_alpha','part_type_alpha1','part_type_alpha2','part_type_alpha3','part_type_blend','part_type_clear','part_type_color','part_type_color1','part_type_color2','part_type_color3','part_type_color_hsv',
        +            'part_type_color_mix','part_type_color_rgb','part_type_create','part_type_death','part_type_destroy','part_type_direction','part_type_exists','part_type_gravity','part_type_life','part_type_orientation',
        +            'part_type_scale','part_type_shape','part_type_size','part_type_speed','part_type_sprite','part_type_step','path_add','path_add_point','path_append','path_assign','path_change_point','path_clear_points',
        +            'path_delete','path_delete_point','path_duplicate','path_end','path_exists','path_flip','path_get_closed','path_get_kind','path_get_length','path_get_name','path_get_number','path_get_point_speed',
        +            'path_get_point_x','path_get_point_y','path_get_precision','path_get_speed','path_get_x','path_get_y','path_insert_point','path_mirror','path_rescale','path_reverse','path_rotate','path_set_closed',
        +            'path_set_kind','path_set_precision','path_shift','path_start','physics_apply_force','physics_apply_impulse','physics_apply_local_force','physics_apply_local_impulse','physics_apply_torque',
        +            'physics_draw_debug','physics_fixture_add_point','physics_fixture_bind','physics_fixture_bind_ext','physics_fixture_create','physics_fixture_delete','physics_fixture_set_angular_damping',
        +            'physics_fixture_set_awake','physics_fixture_set_box_shape','physics_fixture_set_circle_shape','physics_fixture_set_collision_group','physics_fixture_set_density','physics_fixture_set_edge_shape',
        +            'physics_fixture_set_friction','physics_fixture_set_kinematic','physics_fixture_set_linear_damping','physics_fixture_set_polygon_shape','physics_fixture_set_restitution','physics_fixture_set_sensor',
        +            'physics_get_density','physics_get_friction','physics_get_restitution','physics_joint_delete','physics_joint_distance_create','physics_joint_enable_motor','physics_joint_gear_create','physics_joint_get_value',
        +            'physics_joint_prismatic_create','physics_joint_pulley_create','physics_joint_revolute_create','physics_joint_set_value','physics_mass_properties','physics_pause_enable','physics_remove_fixture','physics_set_density',
        +            'physics_set_friction','physics_set_restitution','physics_test_overlap','physics_world_create','physics_world_draw_debug','physics_world_gravity','physics_world_update_iterations','physics_world_update_speed',
        +            'place_empty','place_free','place_meeting','place_snapped','playhaven_add_notification_badge','playhaven_hide_notification_badge','playhaven_position_notification_badge','playhaven_update_notification_badge',
        +            'pocketchange_display_reward','pocketchange_display_shop','point_direction','point_distance','point_distance_3d','position_change','position_destroy','position_empty','position_meeting','power','radtodeg','random',
        +            'random_get_seed','random_range','random_set_seed','randomize','real','room_add','room_assign','room_duplicate','room_exists','room_get_name','room_goto','room_goto_next','room_goto_previous','room_instance_add',
        +            'room_instance_clear','room_next','room_previous','room_restart','room_set_background','room_set_background_color','room_set_height','room_set_persistent','room_set_view','room_set_view_enabled','room_set_width',
        +            'room_tile_add','room_tile_add_ext','room_tile_clear','round','screen_save','screen_save_part','script_execute','script_exists','script_get_name','sha1_file','sha1_string_unicode','sha1_string_utf8','shader_enable_corner_id',
        +            'shader_get_sampler_index','shader_get_uniform','shader_is_compiled','shader_reset','shader_set','shader_set_uniform_f','shader_set_uniform_f_array','shader_set_uniform_i','shader_set_uniform_i_array',
        +            'shader_set_uniform_matrix','shader_set_uniform_matrix_array','shaders_are_supported','shop_leave_rating','show_debug_message','show_debug_overlay','show_error','show_message','show_message_async',
        +            'show_question','show_question_async','sign','sin','sound_add','sound_delete','sound_exists','sound_fade','sound_get_name','sound_global_volume','sound_isplaying','sound_loop','sound_play','sound_replace',
        +            'sound_stop','sound_stop_all','sound_volume','sprite_add','sprite_add_from_surface','sprite_assign','sprite_collision_mask','sprite_create_from_surface','sprite_delete','sprite_duplicate','sprite_exists',
        +            'sprite_get_bbox_bottom','sprite_get_bbox_left','sprite_get_bbox_right','sprite_get_bbox_top','sprite_get_height','sprite_get_name','sprite_get_number','sprite_get_texture','sprite_get_tpe','sprite_get_uvs',
        +            'sprite_get_width','sprite_get_xoffset','sprite_get_yoffset','sprite_merge','sprite_replace','sprite_save','sprite_save_strip','sprite_set_alpha_from_sprite','sprite_set_cache_size','sprite_set_cache_size_ext',
        +            'sprite_set_offset','sqr','sqrt','steam_activate_overlay','steam_clear_achievement','steam_create_leaderboard','steam_download_friends_scores','steam_download_scores','steam_download_scores_around_user',
        +            'steam_file_delete','steam_file_exists','steam_file_persisted','steam_file_read','steam_file_share','steam_file_size','steam_file_write','steam_file_write_file','steam_get_achievement','steam_get_persona_name',
        +            'steam_get_quota_free','steam_get_quota_total','steam_get_stat_avg_rate','steam_get_stat_float','steam_get_stat_int','steam_get_user_steam_id','steam_initialised','steam_is_cloud_enabled_for_account',
        +            'steam_is_cloud_enabled_for_app','steam_is_overlay_activated','steam_is_overlay_enabled','steam_is_screenshot_requested','steam_is_user_logged_on','steam_publish_workshop_file','steam_reset_all_stats',
        +            'steam_reset_all_stats_achievements','steam_send_screenshot','steam_set_achievement','steam_set_stat_avg_rate','steam_set_stat_float','steam_set_stat_int','steam_stats_ready','steam_upload_score',
        +            'steam_user_installed_dlc','steam_user_owns_dlc','string','string_byte_at','string_byte_length','string_char_at','string_copy','string_count','string_delete','string_digits','string_format','string_height',
        +            'string_height_ext','string_insert','string_length','string_letters','string_lettersdigits','string_lower','string_pos','string_repeat','string_replace','string_replace_all','string_set_byte_at','string_upper',
        +            'string_width','string_width_ext','surface_copy','surface_copy_part','surface_create','surface_create_ext','surface_exists','surface_free','surface_get_height','surface_get_texture','surface_get_width',
        +            'surface_getpixel','surface_getpixel_ext','surface_reset_target','surface_save','surface_save_part','surface_set_target','surface_set_target_ext','tan','texture_exists','texture_get_height','texture_get_texel_height',
        +            'texture_get_texel_width','texture_get_width','texture_set_blending','texture_set_interpolation','texture_set_interpolation_ext','texture_set_repeat','texture_set_repeat_ext','texture_set_stage','tile_add',
        +            'tile_delete','tile_delete_at','tile_exists','tile_find','tile_get_alpha','tile_get_background','tile_get_blend','tile_get_depth','tile_get_height','tile_get_left','tile_get_top','tile_get_visible','tile_get_width',
        +            'tile_get_x','tile_get_xscale','tile_get_y','tile_get_yscale','tile_layer_delete','tile_layer_delete_at','tile_layer_depth','tile_layer_find','tile_layer_hide','tile_layer_shift','tile_layer_show','tile_set_alpha',
        +            'tile_set_background','tile_set_blend','tile_set_depth','tile_set_position','tile_set_region','tile_set_scale','tile_set_visible','timeline_add','timeline_clear','timeline_delete','timeline_exists','timeline_get_name',
        +            'timeline_moment_clear','url_get_domain','url_open','url_open_ext','url_open_full','vertex_argb','vertex_begin','vertex_colour','vertex_create_buffer','vertex_create_buffer_ext','vertex_delete_buffer','vertex_end',
        +            'vertex_float1','vertex_float2','vertex_float3','vertex_float4','vertex_format_add_colour','vertex_format_add_custom','vertex_format_add_normal','vertex_format_add_position','vertex_format_add_position_3d',
        +            'vertex_format_add_textcoord','vertex_format_begin','vertex_format_end','vertex_freeze','vertex_normal','vertex_position','vertex_position_3d','vertex_submit','vertex_texcoord','vertex_ubyte4','virtual_key_add',
        +            'virtual_key_delete','virtual_key_hide','virtual_key_show','win8_appbar_add_element','win8_appbar_enable','win8_appbar_remove_element','win8_device_touchscreen_available','win8_license_initialize_sandbox',
        +            'win8_license_trial_version','win8_livetile_badge_clear','win8_livetile_badge_notification','win8_livetile_notification_begin','win8_livetile_notification_end','win8_livetile_notification_expiry',
        +            'win8_livetile_notification_image_add','win8_livetile_notification_secondary_begin','win8_livetile_notification_tag','win8_livetile_notification_text_add','win8_livetile_queue_enable','win8_livetile_tile_clear',
        +            'win8_livetile_tile_notification','win8_search_add_suggestions','win8_search_disable','win8_search_enable','win8_secondarytile_badge_notification','win8_secondarytile_delete','win8_secondarytile_pin',
        +            'win8_settingscharm_add_entry','win8_settingscharm_add_html_entry','win8_settingscharm_add_xaml_entry','win8_settingscharm_get_xaml_property','win8_settingscharm_remove_entry','win8_settingscharm_set_xaml_property',
        +            'win8_share_file','win8_share_image','win8_share_screenshot','win8_share_text','win8_share_url','window_center','window_get_caption','window_get_color','window_get_cursor','window_get_fullscreen','window_get_height',
        +            'window_get_width','window_get_x','window_get_y','window_handle','window_has_focus','window_mouse_get_x','window_mouse_get_y','window_mouse_set','window_set_caption','window_set_color','window_set_cursor',
        +            'window_set_fullscreen','window_set_position','window_set_rectangle','window_set_size','window_view_mouse_get_x','window_view_mouse_get_y','window_views_mouse_get_x','window_views_mouse_get_y',
        +            'winphone_license_trial_version','winphone_tile_back_content','winphone_tile_back_content_wide','winphone_tile_back_image','winphone_tile_back_image_wide','winphone_tile_back_title','winphone_tile_background_color',
        +            'winphone_tile_count','winphone_tile_cycle_images','winphone_tile_front_image','winphone_tile_front_image_small','winphone_tile_front_image_wide','winphone_tile_icon_image','winphone_tile_small_background_image',
        +            'winphone_tile_small_icon_image','winphone_tile_title','winphone_tile_wide_content','zip_unzip'
        +            ),
        +
        +        // Constants
        +        3 => array(
        +            'ANSI_CHARSET','ARABIC_CHARSET','BALTIC_CHARSET','CHINESEBIG5_CHARSET','DEFAULT_CHARSET','EASTEUROPE_CHARSET','GB2312_CHARSET','GREEK_CHARSET','HANGEUL_CHARSET','HEBREW_CHARSET','JOHAB_CHARSET',
        +            'MAC_CHARSET','OEM_CHARSET','RUSSIAN_CHARSET','SHIFTJIS_CHARSET','SYMBOL_CHARSET','THAI_CHARSET','TURKISH_CHARSET','VIETNAMESE_CHARSET','achievement_achievement_info','achievement_challenge_completed',
        +            'achievement_challenge_completed_by_remote','achievement_challenge_launched','achievement_challenge_list_received','achievement_challenge_received','achievement_filter_all_players',
        +            'achievement_filter_friends_only','achievement_friends_info','achievement_leaderboard_info','achievement_our_info','achievement_pic_loaded','achievement_player_info','achievement_purchase_info',
        +            'achievement_show_achievement','achievement_show_bank','achievement_show_friend_picker','achievement_show_leaderboard','achievement_show_profile','achievement_show_purchase_prompt','achievement_show_ui',
        +            'achievement_type_achievement_challenge','achievement_type_score_challenge','all','asset_background','asset_font','asset_object','asset_path','asset_room','asset_script','asset_sound','asset_sprite',
        +            'asset_timeline','asset_unknown','audio_falloff_exponent_distance','audio_falloff_exponent_distance_clamped','audio_falloff_inverse_distance','audio_falloff_inverse_distance_clamped',
        +            'audio_falloff_linear_distance','audio_falloff_linear_distance_clamped','audio_falloff_none','audio_new_system','audio_old_system','bm_add','bm_dest_alpha','bm_dest_color','bm_inv_dest_alpha',
        +            'bm_inv_dest_color','bm_inv_src_alpha','bm_inv_src_color','bm_max','bm_normal','bm_one','bm_src_alpha','bm_src_alpha_sat','bm_src_color','bm_subtract','bm_zero','browser_chrome',
        +            'browser_firefox','browser_ie','browser_ie_mobile','browser_not_a_browser','browser_opera','browser_safari','browser_safari_mobile','browser_tizen','browser_unknown','browser_windows_store','buffer_bool',
        +            'buffer_f16','buffer_f32','buffer_f64','buffer_fast','buffer_fixed','buffer_generalerror','buffer_grow','buffer_invalidtype','buffer_outofbounds','buffer_outofspace','buffer_s16','buffer_s32','buffer_s8',
        +            'buffer_seek_end','buffer_seek_relative','buffer_seek_start','buffer_string','buffer_u16','buffer_u32','buffer_u8','buffer_vbuffer','buffer_wrap','button_type','c_aqua','c_black','c_blue','c_dkgray',
        +            'c_fuchsia','c_gray','c_green','c_lime','c_ltgray','c_maroon','c_navy','c_olive','c_orange','c_purple','c_red','c_silver','c_teal','c_white','c_yellow','cr_appstart','cr_arrow','cr_beam','cr_cross',
        +            'cr_default','cr_drag','cr_handpoint','cr_help','cr_hourglass','cr_hsplit','cr_multidrag','cr_no','cr_nodrop','cr_none','cr_size_all','cr_size_nesw','cr_size_ns','cr_size_nwse','cr_size_we','cr_sqlwait',
        +            'cr_uparrow','cr_vsplit','device_emulator','device_ios_ipad','device_ios_ipad_retina','device_ios_iphone','device_ios_iphone5','device_ios_iphone_retina','device_ios_unknown','device_tablet','display_landscape',
        +            'display_landscape_flipped','display_portrait','display_portrait_flipped','dll_cdecl','dll_stdcall','ds_type_grid','ds_type_list','ds_type_map','ds_type_priority','ds_type_queue','ds_type_stack','e','ef_cloud',
        +            'ef_ellipse','ef_explosion','ef_firework','ef_flare','ef_rain','ef_ring','ef_smoke','ef_smokeup','ef_snow','ef_spark','ef_star','ev_alarm','ev_animation_end','ev_boundary','ev_close_button','ev_collision',
        +            'ev_create','ev_destroy','ev_draw','ev_end_of_path','ev_game_end','ev_game_start','ev_global_left_button','ev_global_left_press','ev_global_left_release','ev_global_middle_button','ev_global_middle_press',
        +            'ev_global_middle_release','ev_global_press','ev_global_release','ev_global_right_button','ev_global_right_press','ev_global_right_release','ev_gui','ev_joystick1_button1','ev_joystick1_button2',
        +            'ev_joystick1_button3','ev_joystick1_button4','ev_joystick1_button5','ev_joystick1_button6','ev_joystick1_button7','ev_joystick1_button8','ev_joystick1_down','ev_joystick1_left','ev_joystick1_right',
        +            'ev_joystick1_up','ev_joystick2_button1','ev_joystick2_button2','ev_joystick2_button3','ev_joystick2_button4','ev_joystick2_button5','ev_joystick2_button6','ev_joystick2_button7','ev_joystick2_button8',
        +            'ev_joystick2_down','ev_joystick2_left','ev_joystick2_right','ev_joystick2_up','ev_keyboard','ev_keypress','ev_keyrelease','ev_left_button','ev_left_press','ev_left_release','ev_middle_button',
        +            'ev_middle_press','ev_middle_release','ev_mouse','ev_mouse_enter','ev_mouse_leave','ev_mouse_wheel_down','ev_mouse_wheel_up','ev_no_button','ev_no_more_health','ev_no_more_lives','ev_other','ev_outside',
        +            'ev_right_button','ev_right_press','ev_right_release','ev_room_end','ev_room_start','ev_step','ev_step_begin','ev_step_end','ev_step_normal','ev_trigger','ev_user0','ev_user1','ev_user10','ev_user11',
        +            'ev_user12','ev_user13','ev_user14','ev_user15','ev_user2','ev_user3','ev_user4','ev_user5','ev_user6','ev_user7','ev_user8','ev_user9','fa_archive','fa_bottom','fa_center','fa_directory','fa_hidden',
        +            'fa_left','fa_middle','fa_readonly','fa_right','fa_sysfile','fa_top','fa_volumeid','false','gp_axislh','gp_axislv','gp_axisrh','gp_axisrv','gp_face1','gp_face2','gp_face3','gp_face4','gp_padd',
        +            'gp_padl','gp_padr','gp_padu','gp_select','gp_shoulderl','gp_shoulderlb','gp_shoulderr','gp_shoulderrb','gp_start','gp_stickl','gp_stickr','input_type','lb_disp_none','lb_disp_numeric','lb_disp_time_ms',
        +            'lb_disp_time_sec','lb_sort_ascending','lb_sort_descending','lb_sort_none','leaderboard_type_number','leaderboard_type_time_mins_secs','matrix_projection','matrix_view','matrix_world','mb_any',
        +            'mb_left','mb_middle','mb_none','mb_right','network_socket_bluetooth','network_socket_tcp','network_socket_udp','network_type_connect','network_type_data','network_type_disconnect',
        +            'of_challenge_lose','of_challenge_tie','of_challenge_win','os_android','os_ios','os_linux','os_macosx','os_psp','os_symbian','os_tizen','os_unknown','os_win32','os_win8native','os_windows','os_winphone',
        +            'ov_achievements','ov_community','ov_friends','ov_gamegroup','ov_players','ov_settings','phy_debug_render_aabb','phy_debug_render_collision_pairs','phy_debug_render_coms',
        +            'phy_debug_render_core_shapes','phy_debug_render_joints','phy_debug_render_obb','phy_debug_render_shapes','phy_joint_anchor_1_x','phy_joint_anchor_1_y','phy_joint_anchor_2_x','phy_joint_anchor_2_y',
        +            'phy_joint_angle','phy_joint_angle_limits','phy_joint_damping_ratio','phy_joint_frequency','phy_joint_length_1','phy_joint_length_2','phy_joint_lower_angle_limit','phy_joint_max_motor_force',
        +            'phy_joint_max_motor_torque','phy_joint_motor_force','phy_joint_motor_speed','phy_joint_motor_torque','phy_joint_reaction_force_x','phy_joint_reaction_force_y','phy_joint_reaction_torque','phy_joint_speed',
        +            'phy_joint_translation','phy_joint_upper_angle_limit','pi','pr_linelist','pr_linestrip','pr_pointlist','pr_trianglefan','pr_trianglelist','pr_trianglestrip','ps_change_all','ps_change_motion',
        +            'ps_change_shape','ps_deflect_horizontal','ps_deflect_vertical','ps_distr_gaussian','ps_distr_invgaussian','ps_distr_linear','ps_force_constant','ps_force_linear','ps_force_quadratic','ps_shape_diamond',
        +            'ps_shape_ellipse','ps_shape_line','ps_shape_rectangle','pt_shape_circle','pt_shape_cloud','pt_shape_disk','pt_shape_explosion','pt_shape_flare','pt_shape_line','pt_shape_pixel','pt_shape_ring',
        +            'pt_shape_smoke','pt_shape_snow','pt_shape_spark','pt_shape_sphere','pt_shape_square','pt_shape_star','se_chorus','se_compressor','se_echo','se_equalizer','se_flanger','se_gargle','se_none','se_reverb',
        +            'text_type','true','ty_real','ty_string','vertex_type_colour','vertex_type_float1','vertex_type_float2','vertex_type_float3','vertex_type_float4','vertex_type_ubyte4','vertex_usage_binormal',
        +            'vertex_usage_blendindices','vertex_usage_blendweight','vertex_usage_colour','vertex_usage_depth','vertex_usage_fog','vertex_usage_normal','vertex_usage_position','vertex_usage_psize','vertex_usage_sample',
        +            'vertex_usage_tagnet','vertex_usage_textcoord','vk_add','vk_alt','vk_anykey','vk_backspace','vk_control','vk_decimal','vk_delete','vk_divide','vk_down','vk_end','vk_enter','vk_escape','vk_f1','vk_f10',
        +            'vk_f11','vk_f12','vk_f2','vk_f3','vk_f4','vk_f5','vk_f6','vk_f7','vk_f8','vk_f9','vk_home','vk_insert','vk_lalt','vk_lcontrol','vk_left','vk_lshift','vk_multiply','vk_nokey','vk_numpad0','vk_numpad1',
        +            'vk_numpad2','vk_numpad3','vk_numpad4','vk_numpad5','vk_numpad6','vk_numpad7','vk_numpad8','vk_numpad9','vk_pagedown','vk_pageup','vk_pause','vk_printscreen','vk_ralt','vk_rcontrol','vk_return','vk_right',
        +            'vk_rshift','vk_shift','vk_space','vk_subtract','vk_tab','vk_up'
        +            ),
        +
        +        // Keywords
        +        4 => array(
        +            'if','while','do','until','exit','break','continue','for','switch','case','default',
        +            'else','then','begin','end','repeat','var','globalvar','with','div','mod',
        +            'self','noone','other','global','local','return',
        +            'and','or','xor','not'
        +            )
        +        ),
        +
        +    'SYMBOLS' => array(
        +        // Angled brackets
        +        0 => array('{','}'),
        +        // Other brackets
        +        1 => array('(',')','[',']'),
        +        // Operators (NOTE: Operators and/or/not/xor are included in the keywords section. These are non-alphanumeric operators
        +        2 => array('&&', '||', '^^', '&', '|', '^',
        +            '<', '<=', '==', '!=', '>', '>=', '=',
        +            '<<', '>>',
        +            '+=', '-=', '*=', '/=',
        +            '+', '-', '*', '/',
        +            '!', '~', ',', ';'
        +        )),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #800000;',
        +            2 => 'color: #800000;',
        +            3 => 'color: #800000;',
        +            4 => 'color: #000080; font-weight: bold;'),
        +        'COMMENTS' => array(
        +            1 => 'font-style: italic; color: #008000;',
        +            'MULTI' => 'font-style: italic; color: #008000;'),
        +        'ESCAPE_CHAR' => array(
        +            0 => ''),
        +        'BRACKETS' => array(
        +            0 => 'color: #000080;'),
        +        'STRINGS' => array(
        +            0 => 'color: #0000FF;',
        +            1 => 'color: #0000FF;'),
        +        'NUMBERS' => array(
        +            0 => 'color: #0000FF;'),
        +        'METHODS' => array(
        +            0 => 'color: #800000;'),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000080; font-weight: bold;',
        +            1 => 'color: #000000;',
        +            2 => 'color: #000000;'),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/gnuplot.php b/includes/geshi/gnuplot.php
        new file mode 100644
        index 0000000..27a2a63
        --- /dev/null
        +++ b/includes/geshi/gnuplot.php
        @@ -0,0 +1,294 @@
        + 'Gnuplot',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('`', '"', "'"),
        +    'ESCAPE_CHAR' => '\\',
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC |
        +        GESHI_NUMBER_FLT_NONSCI |
        +        GESHI_NUMBER_FLT_SCI_SHORT |
        +        GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        // copy output of help command, indent properly and use this replace regexp:
        +        // ([a-z0-9_\-]+)(( )+|$)          =>     '\1',\3
        +
        +        // commands as found in `help commands`
        +        1 => array(
        +            'bind', 'call', 'cd', 'clear',
        +            'exit', 'fit', 'help', 'history',
        +            'if', 'load', 'lower', 'pause',
        +            'plot', 'print', 'pwd', 'quit',
        +            'raise', 'replot', 'reread', 'reset',
        +            'save', 'set', 'shell', 'show',
        +            'splot', 'system', 'test', 'unset',
        +            'update'
        +            ),
        +        2 => array(
        +            // set commands as returned by `help set`
        +            'angles', 'arrow', 'autoscale', 'bars',
        +            'bmargin', 'border', 'boxwidth', 'cbdata',
        +            'cbdtics', 'cblabel', 'cbmtics', 'cbrange',
        +            'cbtics', 'clabel', 'clip', 'cntrparam',
        +            'colorbox', 'contour', 'datafile', 'date_specifiers',
        +            'decimalsign', 'dgrid3d', 'dummy', 'encoding',
        +            'fontpath', 'format', 'grid',
        +            'hidden3d', 'historysize', 'isosamples', 'key',
        +            'label', 'lmargin', 'loadpath', 'locale',
        +            'log', 'logscale', 'macros', 'mapping',
        +            'margin', 'missing', 'mouse', 'multiplot',
        +            'mx2tics', 'mxtics', 'my2tics', 'mytics',
        +            'mztics', 'object', 'offsets', 'origin',
        +            'output', 'palette', 'parametric', 'pm3d',
        +            'pointsize', 'polar', 'rmargin',
        +            'rrange', 'samples', 'size', 'style',
        +            'surface', 'table', 'term', 'terminal',
        +            'termoption', 'tics', 'ticscale', 'ticslevel',
        +            'time_specifiers', 'timefmt', 'timestamp', 'title',
        +            'trange', 'urange', 'view',
        +            'vrange', 'x2data', 'x2dtics', 'x2label',
        +            'x2mtics', 'x2range', 'x2tics', 'x2zeroaxis',
        +            'xdata', 'xdtics', 'xlabel', 'xmtics',
        +            'xrange', 'xtics', 'xyplane', 'xzeroaxis',
        +            'y2data', 'y2dtics', 'y2label', 'y2mtics',
        +            'y2range', 'y2tics', 'y2zeroaxis', 'ydata',
        +            'ydtics', 'ylabel', 'ymtics', 'yrange',
        +            'ytics', 'yzeroaxis', 'zdata', 'zdtics',
        +            'zero', 'zeroaxis', 'zlabel', 'zmtics',
        +            'zrange', 'ztics', 'zzeroaxis',
        +            // same but with leading no
        +            'noangles', 'noarrow', 'noautoscale', 'nobars',
        +            'nobmargin', 'noborder', 'noboxwidth', 'nocbdata',
        +            'nocbdtics', 'nocblabel', 'nocbmtics', 'nocbrange',
        +            'nocbtics', 'noclabel', 'noclip', 'nocntrparam',
        +            'nocolorbox', 'nocontour', 'nodatafile', 'nodate_specifiers',
        +            'nodecimalsign', 'nodgrid3d', 'nodummy', 'noencoding',
        +            'nofit', 'nofontpath', 'noformat', 'nogrid',
        +            'nohidden3d', 'nohistorysize', 'noisosamples', 'nokey',
        +            'nolabel', 'nolmargin', 'noloadpath', 'nolocale',
        +            'nolog', 'nologscale', 'nomacros', 'nomapping',
        +            'nomargin', 'nomissing', 'nomouse', 'nomultiplot',
        +            'nomx2tics', 'nomxtics', 'nomy2tics', 'nomytics',
        +            'nomztics', 'noobject', 'nooffsets', 'noorigin',
        +            'nooutput', 'nopalette', 'noparametric', 'nopm3d',
        +            'nopointsize', 'nopolar', 'noprint', 'normargin',
        +            'norrange', 'nosamples', 'nosize', 'nostyle',
        +            'nosurface', 'notable', 'noterm', 'noterminal',
        +            'notermoption', 'notics', 'noticscale', 'noticslevel',
        +            'notime_specifiers', 'notimefmt', 'notimestamp', 'notitle',
        +            'notmargin', 'notrange', 'nourange', 'noview',
        +            'novrange', 'nox2data', 'nox2dtics', 'nox2label',
        +            'nox2mtics', 'nox2range', 'nox2tics', 'nox2zeroaxis',
        +            'noxdata', 'noxdtics', 'noxlabel', 'noxmtics',
        +            'noxrange', 'noxtics', 'noxyplane', 'noxzeroaxis',
        +            'noy2data', 'noy2dtics', 'noy2label', 'noy2mtics',
        +            'noy2range', 'noy2tics', 'noy2zeroaxis', 'noydata',
        +            'noydtics', 'noylabel', 'noymtics', 'noyrange',
        +            'noytics', 'noyzeroaxis', 'nozdata', 'nozdtics',
        +            'nozero', 'nozeroaxis', 'nozlabel', 'nozmtics',
        +            'nozrange', 'noztics', 'nozzeroaxis',
        +            ),
        +        3 => array(
        +            // predefined variables
        +            'pi', 'NaN', 'GNUTERM',
        +            'GPVAL_X_MIN', 'GPVAL_X_MAX', 'GPVAL_Y_MIN', 'GPVAL_Y_MAX',
        +            'GPVAL_TERM', 'GPVAL_TERMOPTIONS', 'GPVAL_OUTPUT',
        +            'GPVAL_VERSION', 'GPVAL_PATcHLEVEL', 'GPVAL_COMPILE_OPTIONS',
        +            'MOUSE_KEY', 'MOUSE_X', 'MOUSE_X2', 'MOUSE_Y', 'MOUSE_Y2',
        +            'MOUSE_BUTTON', 'MOUSE_SHIFT', 'MOUSE_ALT', 'MOUSE_CTRL'
        +            ),
        +        4 => array(
        +            // predefined functions `help functions`
        +            'abs', 'acos', 'acosh', 'arg',
        +            'asin', 'asinh', 'atan', 'atan2',
        +            'atanh', 'besj0', 'besj1', 'besy0',
        +            'besy1', 'ceil', 'column', 'cos',
        +            'cosh', 'defined', 'erf', 'erfc',
        +            'exists', 'exp', 'floor', 'gamma',
        +            'gprintf', 'ibeta', 'igamma', 'imag',
        +            'int', 'inverf', 'invnorm', 'lambertw',
        +            'lgamma', 'log10', 'norm',
        +            'rand', 'random', 'real', 'sgn',
        +            'sin', 'sinh', 'sprintf', 'sqrt',
        +            'stringcolumn', 'strlen', 'strstrt', 'substr',
        +            'tan', 'tanh', 'timecolumn',
        +            'tm_hour', 'tm_mday', 'tm_min', 'tm_mon',
        +            'tm_sec', 'tm_wday', 'tm_yday', 'tm_year',
        +            'valid', 'word', 'words',
        +            ),
        +        5 => array(
        +            // mixed arguments
        +            // there is no sane way to get these ones easily...
        +            'autofreq', 'x', 'y', 'z',
        +            'lt', 'linetype', 'lw', 'linewidth', 'ls', 'linestyle',
        +            'out', 'rotate by', 'screen',
        +            'enhanced', 'via',
        +            // `help set key`
        +            'on', 'off', 'default', 'inside', 'outside', 'tmargin',
        +            'at', 'left', 'right', 'center', 'top', 'bottom', 'vertical', 'horizontal', 'Left', 'Right',
        +            'noreverse', 'reverse', 'noinvert', 'invert', 'samplen', 'spacing', 'width', 'height',
        +            'noautotitle', 'autotitle', 'noenhanced', 'nobox', 'box',
        +
        +            // help set terminal postscript
        +            'landscape', 'portrait', 'eps', 'defaultplex', 'simplex', 'duplex',
        +            'fontfile', 'add', 'delete', 'nofontfiles', 'level1', 'leveldefault',
        +            'color', 'colour', 'monochrome', 'solid', 'dashed', 'dashlength', 'dl',
        +            'rounded', 'butt', 'palfuncparam', 'blacktext', 'colortext', 'colourtext',
        +            'font',
        +
        +            // help set terminal png
        +            'notransparent', 'transparent', 'nointerlace', 'interlace',
        +            'notruecolor', 'truecolor', 'tiny', 'small', 'medium', 'large', 'giant',
        +            'nocrop', 'crop',
        +
        +            // `help plot`
        +            'acsplines', 'bezier', 'binary', 'csplines',
        +            'every',
        +            'example', 'frequency', 'index', 'matrix',
        +            'ranges', 'sbezier', 'smooth',
        +            'special-filenames', 'thru',
        +            'unique', 'using', 'with',
        +
        +            // `help plotting styles`
        +            'boxerrorbars', 'boxes', 'boxxyerrorbars', 'candlesticks',
        +            'dots', 'errorbars', 'errorlines', 'filledcurves',
        +            'financebars', 'fsteps', 'histeps', 'histograms',
        +            'image', 'impulses', 'labels', 'lines',
        +            'linespoints', 'points', 'rgbimage', 'steps',
        +            'vectors', 'xerrorbars', 'xerrorlines', 'xyerrorbars',
        +            'xyerrorlines', 'yerrorbars', 'yerrorlines',
        +
        +
        +            // terminals `help terminals`
        +            'aed512', 'aed767', 'aifm', 'bitgraph',
        +            'cgm', 'corel', 'dumb', 'dxf',
        +            'eepic', 'emf', 'emtex', 'epslatex',
        +            'epson-180dpi', 'epson-60dpi', 'epson-lx800', 'fig',
        +            'gif', 'gpic', 'hp2623a', 'hp2648',
        +            'hp500c', 'hpdj', 'hpgl', 'hpljii',
        +            'hppj', 'imagen', 'jpeg', 'kc-tek40xx',
        +            'km-tek40xx', 'latex', 'mf', 'mif',
        +            'mp', 'nec-cp6', 'okidata', 'pbm',
        +            'pcl5', 'png', 'pop', 'postscript',
        +            'pslatex', 'pstex', 'pstricks', 'push',
        +            'qms', 'regis', 'selanar', 'starc',
        +            'svg', 'tandy-60dpi', 'tek40xx', 'tek410x',
        +            'texdraw', 'tgif', 'tkcanvas', 'tpic',
        +            'vttek', 'x11', 'xlib',
        +            )
        +        ),
        +    'REGEXPS' => array(
        +        //Variable assignment
        +        0 => "(?\w])([a-zA-Z_][a-zA-Z0-9_]*)\s*=",
        +        //Numbers with unit
        +        1 => "(?<=^|\s)([0-9]*\.?[0-9]+\s*cm)"
        +        ),
        +    'SYMBOLS' => array(
        +        '-', '+', '~', '!', '$',
        +        '*', '/', '%', '=', '<', '>', '&',
        +        '^', '|', '.', 'eq', 'ne', '?:', ':', '`', ','
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #990000;',
        +            3 => 'color: #550000;',
        +            4 => 'color: #7a0874;',
        +            5 => 'color: #448888;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #adadad; font-style: italic;',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight:bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000099; font-weight:bold;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;',
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000; font-weight: bold;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #007800;',
        +            1 => 'color: #cc66cc;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => 'http://www.google.com/search?q=%22set+{FNAME}%22+site%3Ahttp%3A%2F%2Fwww.gnuplot.info%2Fdocs%2F&btnI=lucky',
        +        3 => '',
        +        4 => '',
        +        5 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            4 => array(
        +                'DISALLOWED_AFTER' =>  "(?![\.\-a-zA-Z0-9_%])"
        +            )
        +        )
        +    ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/go.php b/includes/geshi/go.php
        new file mode 100644
        index 0000000..7f1b825
        --- /dev/null
        +++ b/includes/geshi/go.php
        @@ -0,0 +1,373 @@
        + 'Go',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        # Raw strings (escapes and linebreaks ignored)
        +        2 => "#`[^`]*`#"
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"', "'"),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        1 => "#\\\\[abfnrtv\\\\\'\"]#",
        +        2 => "#\\\\[0-7]{3}#",
        +        3 => "#\\\\x[0-9a-fA-F]{2}#",
        +        4 => "#\\\\u[0-9a-fA-F]{4}#",
        +        5 => "#\\\\U[0-9a-fA-F]{8}#"
        +        ),
        +    'NUMBERS' => array(
        +        # integer literals (possibly imaginary)
        +        0 => '\b([1-9][0-9]*i?|0[0-7]*|0[xX][0-9a-f]+|0[0-9]*i)\b',
        +        # real floating point literals
        +        1 => '\b((?:\d+\.\d*(?:[Ee][+-]?\d+\b)?|\.\d+(?:[Ee][+-]?\d+)?|\d+[Ee][+-]?\d+)?)\b',
        +        # imaginary floating point literals
        +        2 => '\b((?:\d+\.\d*(?:[Ee][+-]?\d+)?|\.\d+(?:[Ee][+-]?\d+)?|\d+[Ee][+-]?\d+)?i)\b'
        +        ),
        +    'KEYWORDS' => array(
        +        # statements
        +        1 => array(
        +            'break', 'case', 'const', 'continue', 'default', 'defer', 'else',
        +            'fallthrough', 'for', 'go', 'goto', 'if', 'import', 'package',
        +            'range', 'return', 'select', 'switch', 'type', 'var'
        +            ),
        +        # literals
        +        2 => array(
        +            'nil', 'true', 'false'
        +            ),
        +        # built-in functions
        +        3 => array(
        +            'close', 'closed', 'len', 'cap', 'new', 'make', 'copy', 'cmplx',
        +            'real', 'imag', 'panic', 'recover', 'print', 'println'
        +            ),
        +        # built-in types
        +        4 => array(
        +            'chan', 'func', 'interface', 'map', 'struct', 'bool', 'uint8',
        +            'uint16', 'uint32', 'uint64', 'int8', 'int16', 'int32', 'int64',
        +            'float32', 'float64', 'complex64', 'complex128', 'byte', 'uint',
        +            'int', 'float', 'complex', 'uintptr', 'string'
        +            ),
        +        # library types
        +        5 => array(
        +            'aes.Cipher', 'aes.KeySizeError', 'ascii85.CorruptInputError', 'asn1.BitString',
        +            'asn1.RawValue', 'asn1.StructuralError', 'asn1.SyntaxError', 'ast.ChanDir',
        +            'ast.Comment', 'ast.CommentGroup', 'ast.Decl', 'ast.Expr', 'ast.Field',
        +            'ast.FieldList', 'ast.File', 'ast.Filter', 'ast.MergeMode', 'ast.Node',
        +            'ast.ObjKind', 'ast.Object', 'ast.Package', 'ast.Scope', 'ast.Stmt',
        +            'ast.Visitor', 'av.Color', 'av.Image', 'av.Window', 'base64.CorruptInputError',
        +            'base64.Encoding', 'big.Int', 'big.Word', 'bignum.Integer', 'bignum.Rational',
        +            'binary.ByteOrder', 'block.Cipher', 'block.EAXTagError', 'blowfish.Cipher',
        +            'blowfish.KeySizeError', 'bufio.BufSizeError', 'bufio.Error', 'bufio.ReadWriter',
        +            'bufio.Reader', 'bufio.Writer', 'bytes.Buffer', 'datafmt.Environment',
        +            'datafmt.Format', 'datafmt.Formatter', 'datafmt.FormatterMap', 'datafmt.State',
        +            'doc.Filter', 'doc.FuncDoc', 'doc.PackageDoc', 'doc.TypeDoc', 'doc.ValueDoc',
        +            'draw.Color', 'draw.Context', 'draw.Image', 'draw.Mouse', 'draw.Op',
        +            'draw.Point', 'draw.Rectangle', 'dwarf.AddrType', 'dwarf.ArrayType',
        +            'dwarf.Attr', 'dwarf.BasicType', 'dwarf.BoolType', 'dwarf.CharType',
        +            'dwarf.CommonType', 'dwarf.ComplexType', 'dwarf.Data', 'dwarf.DecodeError',
        +            'dwarf.DotDotDotType', 'dwarf.Entry', 'dwarf.EnumType', 'dwarf.EnumValue',
        +            'dwarf.Field', 'dwarf.FloatType', 'dwarf.FuncType', 'dwarf.IntType',
        +            'dwarf.Offset', 'dwarf.PtrType', 'dwarf.QualType', 'dwarf.Reader',
        +            'dwarf.StructField', 'dwarf.StructType', 'dwarf.Tag', 'dwarf.Type',
        +            'dwarf.TypedefType', 'dwarf.UcharType', 'dwarf.UintType', 'dwarf.VoidType',
        +            'elf.Class', 'elf.Data', 'elf.Dyn32', 'elf.Dyn64', 'elf.DynFlag', 'elf.DynTag',
        +            'elf.File', 'elf.FileHeader', 'elf.FormatError', 'elf.Header32', 'elf.Header64',
        +            'elf.Machine', 'elf.NType', 'elf.OSABI', 'elf.Prog', 'elf.Prog32', 'elf.Prog64',
        +            'elf.ProgFlag', 'elf.ProgHeader', 'elf.ProgType', 'elf.R_386', 'elf.R_ALPHA',
        +            'elf.R_ARM', 'elf.R_PPC', 'elf.R_SPARC', 'elf.R_X86_64', 'elf.Rel32',
        +            'elf.Rel64', 'elf.Rela32', 'elf.Rela64', 'elf.Section', 'elf.Section32',
        +            'elf.Section64', 'elf.SectionFlag', 'elf.SectionHeader', 'elf.SectionIndex',
        +            'elf.SectionType', 'elf.Sym32', 'elf.Sym64', 'elf.SymBind', 'elf.SymType',
        +            'elf.SymVis', 'elf.Symbol', 'elf.Type', 'elf.Version', 'eval.ArrayType',
        +            'eval.ArrayValue', 'eval.BoolValue', 'eval.BoundedType', 'eval.ChanType',
        +            'eval.Code', 'eval.Constant', 'eval.Def', 'eval.DivByZeroError',
        +            'eval.FloatValue', 'eval.Frame', 'eval.Func', 'eval.FuncDecl', 'eval.FuncType',
        +            'eval.FuncValue', 'eval.IMethod', 'eval.IdealFloatValue', 'eval.IdealIntValue',
        +            'eval.IndexError', 'eval.IntValue', 'eval.Interface', 'eval.InterfaceType',
        +            'eval.InterfaceValue', 'eval.KeyError', 'eval.Map', 'eval.MapType',
        +            'eval.MapValue', 'eval.Method', 'eval.MultiType', 'eval.NamedType',
        +            'eval.NegativeCapacityError', 'eval.NegativeLengthError', 'eval.NilPointerError',
        +            'eval.PtrType', 'eval.PtrValue', 'eval.RedefinitionError', 'eval.Scope',
        +            'eval.Slice', 'eval.SliceError', 'eval.SliceType', 'eval.SliceValue',
        +            'eval.StringValue', 'eval.StructField', 'eval.StructType', 'eval.StructValue',
        +            'eval.Thread', 'eval.Type', 'eval.UintValue', 'eval.Value', 'eval.Variable',
        +            'eval.World', 'exec.Cmd', 'expvar.Int', 'expvar.IntFunc', 'expvar.KeyValue',
        +            'expvar.Map', 'expvar.String', 'expvar.StringFunc', 'expvar.Var', 'flag.Flag',
        +            'flag.Value', 'flate.CorruptInputError', 'flate.InternalError',
        +            'flate.ReadError', 'flate.Reader', 'flate.WriteError', 'flate.WrongValueError',
        +            'fmt.Formatter', 'fmt.GoStringer', 'fmt.State', 'fmt.Stringer',
        +            'git85.CorruptInputError', 'gob.Decoder', 'gob.Encoder', 'gosym.DecodingError',
        +            'gosym.Func', 'gosym.LineTable', 'gosym.Obj', 'gosym.Sym', 'gosym.Table',
        +            'gosym.UnknownFileError', 'gosym.UnknownLineError', 'gzip.Deflater',
        +            'gzip.Header', 'gzip.Inflater', 'hash.Hash', 'hash.Hash32', 'hash.Hash64',
        +            'heap.Interface', 'hex.InvalidHexCharError', 'hex.OddLengthInputError',
        +            'http.ClientConn', 'http.Conn', 'http.Handler', 'http.HandlerFunc',
        +            'http.ProtocolError', 'http.Request', 'http.Response', 'http.ServeMux',
        +            'http.ServerConn', 'http.URL', 'http.URLError', 'http.URLEscapeError',
        +            'image.Alpha', 'image.AlphaColor', 'image.Color', 'image.ColorImage',
        +            'image.ColorModel', 'image.ColorModelFunc', 'image.Image', 'image.NRGBA',
        +            'image.NRGBA64', 'image.NRGBA64Color', 'image.NRGBAColor', 'image.Paletted',
        +            'image.RGBA', 'image.RGBA64', 'image.RGBA64Color', 'image.RGBAColor',
        +            'io.Closer', 'io.Error', 'io.PipeReader', 'io.PipeWriter', 'io.ReadByter',
        +            'io.ReadCloser', 'io.ReadSeeker', 'io.ReadWriteCloser', 'io.ReadWriteSeeker',
        +            'io.ReadWriter', 'io.Reader', 'io.ReaderAt', 'io.ReaderFrom', 'io.SectionReader',
        +            'io.Seeker', 'io.WriteCloser', 'io.WriteSeeker', 'io.Writer', 'io.WriterAt',
        +            'io.WriterTo', 'iterable.Func', 'iterable.Group', 'iterable.Grouper',
        +            'iterable.Injector', 'iterable.Iterable', 'jpeg.FormatError', 'jpeg.Reader',
        +            'jpeg.UnsupportedError', 'json.Decoder', 'json.Encoder',
        +            'json.InvalidUnmarshalError', 'json.Marshaler', 'json.MarshalerError',
        +            'json.SyntaxError', 'json.UnmarshalTypeError', 'json.Unmarshaler',
        +            'json.UnsupportedTypeError', 'list.Element', 'list.List', 'log.Logger',
        +            'macho.Cpu', 'macho.File', 'macho.FileHeader', 'macho.FormatError', 'macho.Load',
        +            'macho.LoadCmd', 'macho.Regs386', 'macho.RegsAMD64', 'macho.Section',
        +            'macho.Section32', 'macho.Section64', 'macho.SectionHeader', 'macho.Segment',
        +            'macho.Segment32', 'macho.Segment64', 'macho.SegmentHeader', 'macho.Thread',
        +            'macho.Type', 'net.Addr', 'net.AddrError', 'net.Conn', 'net.DNSConfigError',
        +            'net.DNSError', 'net.Error', 'net.InvalidAddrError', 'net.InvalidConnError',
        +            'net.Listener', 'net.OpError', 'net.PacketConn', 'net.TCPAddr', 'net.TCPConn',
        +            'net.TCPListener', 'net.UDPAddr', 'net.UDPConn', 'net.UnixAddr', 'net.UnixConn',
        +            'net.UnixListener', 'net.UnknownNetworkError', 'net.UnknownSocketError',
        +            'netchan.Dir', 'netchan.Exporter', 'netchan.Importer', 'nntp.Article',
        +            'nntp.Conn', 'nntp.Error', 'nntp.Group', 'nntp.ProtocolError', 'ogle.Arch',
        +            'ogle.ArchAlignedMultiple', 'ogle.ArchLSB', 'ogle.Breakpoint', 'ogle.Event',
        +            'ogle.EventAction', 'ogle.EventHandler', 'ogle.EventHook', 'ogle.FormatError',
        +            'ogle.Frame', 'ogle.Goroutine', 'ogle.GoroutineCreate', 'ogle.GoroutineExit',
        +            'ogle.NoCurrentGoroutine', 'ogle.NotOnStack', 'ogle.Process',
        +            'ogle.ProcessNotStopped', 'ogle.ReadOnlyError', 'ogle.RemoteMismatchError',
        +            'ogle.UnknownArchitecture', 'ogle.UnknownGoroutine', 'ogle.UsageError',
        +            'os.Errno', 'os.Error', 'os.ErrorString', 'os.File', 'os.FileInfo',
        +            'os.LinkError', 'os.PathError', 'os.SyscallError', 'os.Waitmsg', 'patch.Diff',
        +            'patch.File', 'patch.GitBinaryLiteral', 'patch.Op', 'patch.Set',
        +            'patch.SyntaxError', 'patch.TextChunk', 'patch.Verb', 'path.Visitor',
        +            'pdp1.HaltError', 'pdp1.LoopError', 'pdp1.Trapper', 'pdp1.UnknownInstrError',
        +            'pdp1.Word', 'pem.Block', 'png.FormatError', 'png.IDATDecodingError',
        +            'png.UnsupportedError', 'printer.Config', 'printer.HTMLTag', 'printer.Styler',
        +            'proc.Breakpoint', 'proc.Cause', 'proc.Process', 'proc.ProcessExited',
        +            'proc.Regs', 'proc.Signal', 'proc.Stopped', 'proc.Thread', 'proc.ThreadCreate',
        +            'proc.ThreadExit', 'proc.Word', 'quick.CheckEqualError', 'quick.CheckError',
        +            'quick.Config', 'quick.Generator', 'quick.SetupError', 'rand.Rand',
        +            'rand.Source', 'rand.Zipf', 'rc4.Cipher', 'rc4.KeySizeError',
        +            'reflect.ArrayOrSliceType', 'reflect.ArrayOrSliceValue', 'reflect.ArrayType',
        +            'reflect.ArrayValue', 'reflect.BoolType', 'reflect.BoolValue', 'reflect.ChanDir',
        +            'reflect.ChanType', 'reflect.ChanValue', 'reflect.Complex128Type',
        +            'reflect.Complex128Value', 'reflect.Complex64Type', 'reflect.Complex64Value',
        +            'reflect.ComplexType', 'reflect.ComplexValue', 'reflect.Float32Type',
        +            'reflect.Float32Value', 'reflect.Float64Type', 'reflect.Float64Value',
        +            'reflect.FloatType', 'reflect.FloatValue', 'reflect.FuncType',
        +            'reflect.FuncValue', 'reflect.Int16Type', 'reflect.Int16Value',
        +            'reflect.Int32Type', 'reflect.Int32Value', 'reflect.Int64Type',
        +            'reflect.Int64Value', 'reflect.Int8Type', 'reflect.Int8Value', 'reflect.IntType',
        +            'reflect.IntValue', 'reflect.InterfaceType', 'reflect.InterfaceValue',
        +            'reflect.MapType', 'reflect.MapValue', 'reflect.Method', 'reflect.PtrType',
        +            'reflect.PtrValue', 'reflect.SliceHeader', 'reflect.SliceType',
        +            'reflect.SliceValue', 'reflect.StringHeader', 'reflect.StringType',
        +            'reflect.StringValue', 'reflect.StructField', 'reflect.StructType',
        +            'reflect.StructValue', 'reflect.Type', 'reflect.Uint16Type',
        +            'reflect.Uint16Value', 'reflect.Uint32Type', 'reflect.Uint32Value',
        +            'reflect.Uint64Type', 'reflect.Uint64Value', 'reflect.Uint8Type',
        +            'reflect.Uint8Value', 'reflect.UintType', 'reflect.UintValue',
        +            'reflect.UintptrType', 'reflect.UintptrValue', 'reflect.UnsafePointerType',
        +            'reflect.UnsafePointerValue', 'reflect.Value', 'regexp.Error', 'regexp.Regexp',
        +            'ring.Ring', 'rpc.Call', 'rpc.Client', 'rpc.ClientCodec', 'rpc.InvalidRequest',
        +            'rpc.Request', 'rpc.Response', 'rpc.ServerCodec', 'rsa.DecryptionError',
        +            'rsa.MessageTooLongError', 'rsa.PKCS1v15Hash', 'rsa.PrivateKey', 'rsa.PublicKey',
        +            'rsa.VerificationError', 'runtime.ArrayType', 'runtime.BoolType',
        +            'runtime.ChanDir', 'runtime.ChanType', 'runtime.Complex128Type',
        +            'runtime.Complex64Type', 'runtime.ComplexType', 'runtime.Error',
        +            'runtime.Float32Type', 'runtime.Float64Type', 'runtime.FloatType',
        +            'runtime.Func', 'runtime.FuncType', 'runtime.Int16Type', 'runtime.Int32Type',
        +            'runtime.Int64Type', 'runtime.Int8Type', 'runtime.IntType',
        +            'runtime.InterfaceType', 'runtime.Itable', 'runtime.MapType',
        +            'runtime.MemProfileRecord', 'runtime.MemStatsType', 'runtime.PtrType',
        +            'runtime.SliceType', 'runtime.StringType', 'runtime.StructType', 'runtime.Type',
        +            'runtime.TypeAssertionError', 'runtime.Uint16Type', 'runtime.Uint32Type',
        +            'runtime.Uint64Type', 'runtime.Uint8Type', 'runtime.UintType',
        +            'runtime.UintptrType', 'runtime.UnsafePointerType', 'scanner.Error',
        +            'scanner.ErrorHandler', 'scanner.ErrorVector', 'scanner.Position',
        +            'scanner.Scanner', 'script.Close', 'script.Closed', 'script.Event',
        +            'script.ReceivedUnexpected', 'script.Recv', 'script.RecvMatch', 'script.Send',
        +            'script.SetupError', 'signal.Signal', 'signal.UnixSignal', 'sort.Interface',
        +            'srpc.Client', 'srpc.Errno', 'srpc.Handler', 'srpc.RPC', 'strconv.NumError',
        +            'strings.Reader', 'sync.Mutex', 'sync.RWMutex',
        +            'syscall.ByHandleFileInformation', 'syscall.Cmsghdr', 'syscall.Dirent',
        +            'syscall.EpollEvent', 'syscall.Fbootstraptransfer_t', 'syscall.FdSet',
        +            'syscall.Filetime', 'syscall.Flock_t', 'syscall.Fstore_t', 'syscall.Iovec',
        +            'syscall.Kevent_t', 'syscall.Linger', 'syscall.Log2phys_t', 'syscall.Msghdr',
        +            'syscall.Overlapped', 'syscall.PtraceRegs', 'syscall.Radvisory_t',
        +            'syscall.RawSockaddr', 'syscall.RawSockaddrAny', 'syscall.RawSockaddrInet4',
        +            'syscall.RawSockaddrInet6', 'syscall.RawSockaddrUnix', 'syscall.Rlimit',
        +            'syscall.Rusage', 'syscall.Sockaddr', 'syscall.SockaddrInet4',
        +            'syscall.SockaddrInet6', 'syscall.SockaddrUnix', 'syscall.Stat_t',
        +            'syscall.Statfs_t', 'syscall.Sysinfo_t', 'syscall.Time_t', 'syscall.Timespec',
        +            'syscall.Timeval', 'syscall.Timex', 'syscall.Tms', 'syscall.Ustat_t',
        +            'syscall.Utimbuf', 'syscall.Utsname', 'syscall.WaitStatus',
        +            'syscall.Win32finddata', 'syslog.Priority', 'syslog.Writer', 'tabwriter.Writer',
        +            'tar.Header', 'tar.Reader', 'tar.Writer', 'template.Error',
        +            'template.FormatterMap', 'template.Template', 'testing.Benchmark',
        +            'testing.Regexp', 'testing.Test', 'time.ParseError', 'time.Ticker', 'time.Time',
        +            'tls.CASet', 'tls.Certificate', 'tls.Config', 'tls.Conn', 'tls.ConnectionState',
        +            'tls.Listener', 'token.Position', 'token.Token', 'unicode.CaseRange',
        +            'unicode.Range', 'unsafe.ArbitraryType', 'vector.LessInterface',
        +            'websocket.Conn', 'websocket.Draft75Handler', 'websocket.Handler',
        +            'websocket.ProtocolError', 'websocket.WebSocketAddr', 'x509.Certificate',
        +            'x509.ConstraintViolationError', 'x509.KeyUsage', 'x509.Name',
        +            'x509.PublicKeyAlgorithm', 'x509.SignatureAlgorithm',
        +            'x509.UnhandledCriticalExtension', 'x509.UnsupportedAlgorithmError', 'xml.Attr',
        +            'xml.EndElement', 'xml.Name', 'xml.Parser', 'xml.ProcInst', 'xml.StartElement',
        +            'xml.SyntaxError', 'xml.Token', 'xml.UnmarshalError', 'xtea.Cipher',
        +            'xtea.KeySizeError'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        # delimiters
        +        1 => array(
        +            '(', ')', '{', '}', '[', ']', ',', ':', ';'
        +            ),
        +        # assignments
        +        2 => array(
        +            '<<=', '!=', '%=', '&=', '&^=', '*=', '+=', '-=', '/=', ':=', '>>=',
        +            '^=', '|=', '=', '++', '--'
        +            ),
        +        # operators
        +        3 => array(
        +            '<=', '<', '==', '>', '>=', '&&', '!', '||', '&', '&^', '|', '^',
        +            '>>', '<<', '*', '%', '+', '-', '.', '/', '<-'),
        +        # vararg
        +        4 => array(
        +            '...'
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            # statements
        +            1 => 'color: #b1b100; font-weight: bold;',
        +            # literals
        +            2 => 'color: #000000; font-weight: bold;',
        +            # built-in functions
        +            3 => 'color: #000066;',
        +            # built-in types
        +            4 => 'color: #993333;',
        +            # library types
        +            5 => 'color: #003399;'
        +            ),
        +        'COMMENTS' => array(
        +            # single-line comments
        +            1 => 'color: #666666; font-style: italic;',
        +            # raw strings
        +            2 => 'color: #0000ff;',
        +            # multi-line comments
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            # simple escape
        +            1 => 'color: #000099; font-weight: bold;',
        +            # octal escape
        +            2 => 'color: #000099;',
        +            # hex escape
        +            3 => 'color: #000099;',
        +            # unicode escape
        +            4 => 'color: #000099;',
        +            # long unicode escape
        +            5 => 'color: #000099;'
        +            ),
        +        'BRACKETS' => array(
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;',
        +            0 => 'color: #cc66cc;' // FIXME: Duplicate array key
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #004000;'
        +            ),
        +        'SYMBOLS' => array(
        +            # delimiters
        +            1 => 'color: #339933;',
        +            # assignments
        +            2 => 'color: #339933;',
        +            # operators
        +            3 => 'color: #339933;',
        +            # vararg (highlighted as a keyword)
        +            4 => 'color: #000000; font-weight: bold;'
        +            ),
        +        'REGEXPS' => array(
        +            # If CSS classes are enabled, these would be highlighted as numbers (nu0)
        +            # integer literals (possibly imaginary)
        +            //0 => 'color: #cc66cc;',
        +            # real floating point literals
        +            //1 => 'color: #cc66cc;',
        +            # imaginary floating point literals
        +            //2 => 'color: #cc66cc;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => 'http://golang.org/search?q={FNAME}'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(1 => '.'),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(),
        +    'PARSER_CONTROL' => array(
        +        'ENABLE_FLAGS' => array(
        +            'BRACKETS' => GESHI_NEVER, # handled by symbols
        +            )
        +        )
        +);
        diff --git a/includes/geshi/groovy.php b/includes/geshi/groovy.php
        new file mode 100644
        index 0000000..37fc817
        --- /dev/null
        +++ b/includes/geshi/groovy.php
        @@ -0,0 +1,1009 @@
        + 'Groovy',
        +    'COMMENT_SINGLE' => array(1 => '//', 3 => '#'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        //Import and Package directives (Basic Support only)
        +        2 => '/(?:(?<=import[\\n\\s])|(?<=package[\\n\\s]))[\\n\\s]*([a-zA-Z0-9_]+\\.)*([a-zA-Z0-9_]+|\*)(?=[\n\s;])/i',
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'''", '"""', "'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'case', 'do', 'else', 'for', 'foreach', 'if', 'in', 'switch',
        +            'while',
        +            ),
        +        2 => array(
        +            'abstract', 'as', 'assert', 'break', 'catch', 'class', 'const',
        +            'continue', 'def', 'default', 'enum', 'extends',
        +            'false', 'final', 'finally', 'goto', 'implements', 'import',
        +            'instanceof', 'interface', 'native', 'new', 'null',
        +            'package', 'private', 'property', 'protected',
        +            'public', 'return', 'static', 'strictfp', 'super',
        +            'synchronized', 'this', 'throw', 'throws',
        +            'transient', 'true', 'try', 'volatile'
        +            ),
        +        3 => array(
        +            'AbstractAction', 'AbstractBorder', 'AbstractButton',
        +            'AbstractCellEditor', 'AbstractCollection',
        +            'AbstractColorChooserPanel', 'AbstractDocument',
        +            'AbstractDocument.AttributeContext',
        +            'AbstractDocument.Content',
        +            'AbstractDocument.ElementEdit',
        +            'AbstractLayoutCache',
        +            'AbstractLayoutCache.NodeDimensions', 'AbstractList',
        +            'AbstractListModel', 'AbstractMap',
        +            'AbstractMethodError', 'AbstractSequentialList',
        +            'AbstractSet', 'AbstractTableModel',
        +            'AbstractUndoableEdit', 'AbstractWriter',
        +            'AccessControlContext', 'AccessControlException',
        +            'AccessController', 'AccessException', 'Accessible',
        +            'AccessibleAction', 'AccessibleBundle',
        +            'AccessibleComponent', 'AccessibleContext',
        +            'AccessibleHyperlink', 'AccessibleHypertext',
        +            'AccessibleIcon', 'AccessibleObject',
        +            'AccessibleRelation', 'AccessibleRelationSet',
        +            'AccessibleResourceBundle', 'AccessibleRole',
        +            'AccessibleSelection', 'AccessibleState',
        +            'AccessibleStateSet', 'AccessibleTable',
        +            'AccessibleTableModelChange', 'AccessibleText',
        +            'AccessibleValue', 'Acl', 'AclEntry',
        +            'AclNotFoundException', 'Action', 'ActionEvent',
        +            'ActionListener', 'ActionMap', 'ActionMapUIResource',
        +            'Activatable', 'ActivateFailedException',
        +            'ActivationDesc', 'ActivationException',
        +            'ActivationGroup', 'ActivationGroupDesc',
        +            'ActivationGroupDesc.CommandEnvironment',
        +            'ActivationGroupID', 'ActivationID',
        +            'ActivationInstantiator', 'ActivationMonitor',
        +            'ActivationSystem', 'Activator', 'ActiveEvent',
        +            'Adjustable', 'AdjustmentEvent',
        +            'AdjustmentListener', 'Adler32', 'AffineTransform',
        +            'AffineTransformOp', 'AlgorithmParameterGenerator',
        +            'AlgorithmParameterGeneratorSpi',
        +            'AlgorithmParameters', 'AlgorithmParameterSpec',
        +            'AlgorithmParametersSpi', 'AllPermission',
        +            'AlphaComposite', 'AlreadyBound',
        +            'AlreadyBoundException', 'AlreadyBoundHelper',
        +            'AlreadyBoundHolder', 'AncestorEvent',
        +            'AncestorListener', 'Annotation', 'Any', 'AnyHolder',
        +            'AnySeqHelper', 'AnySeqHolder', 'Applet',
        +            'AppletContext', 'AppletInitializer', 'AppletStub',
        +            'ApplicationException', 'Arc2D', 'Arc2D.Double',
        +            'Arc2D.Float', 'Area', 'AreaAveragingScaleFilter',
        +            'ARG_IN', 'ARG_INOUT', 'ARG_OUT',
        +            'ArithmeticException', 'Array',
        +            'ArrayIndexOutOfBoundsException', 'ArrayList',
        +            'Arrays', 'ArrayStoreException', 'AsyncBoxView',
        +            'Attribute', 'AttributedCharacterIterator',
        +            'AttributedCharacterIterator.Attribute',
        +            'AttributedString', 'AttributeInUseException',
        +            'AttributeList', 'AttributeModificationException',
        +            'Attributes', 'Attributes.Name', 'AttributeSet',
        +            'AttributeSet.CharacterAttribute',
        +            'AttributeSet.ColorAttribute',
        +            'AttributeSet.FontAttribute',
        +            'AttributeSet.ParagraphAttribute', 'AudioClip',
        +            'AudioFileFormat', 'AudioFileFormat.Type',
        +            'AudioFileReader', 'AudioFileWriter', 'AudioFormat',
        +            'AudioFormat.Encoding', 'AudioInputStream',
        +            'AudioPermission', 'AudioSystem',
        +            'AuthenticationException',
        +            'AuthenticationNotSupportedException',
        +            'Authenticator', 'Autoscroll', 'AWTError',
        +            'AWTEvent', 'AWTEventListener',
        +            'AWTEventMulticaster', 'AWTException',
        +            'AWTPermission', 'BadKind', 'BadLocationException',
        +            'BAD_CONTEXT', 'BAD_INV_ORDER', 'BAD_OPERATION',
        +            'BAD_PARAM', 'BAD_POLICY', 'BAD_POLICY_TYPE',
        +            'BAD_POLICY_VALUE', 'BAD_TYPECODE', 'BandCombineOp',
        +            'BandedSampleModel', 'BasicArrowButton',
        +            'BasicAttribute', 'BasicAttributes', 'BasicBorders',
        +            'BasicBorders.ButtonBorder',
        +            'BasicBorders.FieldBorder',
        +            'BasicBorders.MarginBorder',
        +            'BasicBorders.MenuBarBorder',
        +            'BasicBorders.RadioButtonBorder',
        +            'BasicBorders.SplitPaneBorder',
        +            'BasicBorders.ToggleButtonBorder',
        +            'BasicButtonListener', 'BasicButtonUI',
        +            'BasicCheckBoxMenuItemUI', 'BasicCheckBoxUI',
        +            'BasicColorChooserUI', 'BasicComboBoxEditor',
        +            'BasicComboBoxEditor.UIResource',
        +            'BasicComboBoxRenderer',
        +            'BasicComboBoxRenderer.UIResource',
        +            'BasicComboBoxUI', 'BasicComboPopup',
        +            'BasicDesktopIconUI', 'BasicDesktopPaneUI',
        +            'BasicDirectoryModel', 'BasicEditorPaneUI',
        +            'BasicFileChooserUI', 'BasicGraphicsUtils',
        +            'BasicHTML', 'BasicIconFactory',
        +            'BasicInternalFrameTitlePane',
        +            'BasicInternalFrameUI', 'BasicLabelUI',
        +            'BasicListUI', 'BasicLookAndFeel', 'BasicMenuBarUI',
        +            'BasicMenuItemUI', 'BasicMenuUI',
        +            'BasicOptionPaneUI',
        +            'BasicOptionPaneUI.ButtonAreaLayout', 'BasicPanelUI',
        +            'BasicPasswordFieldUI', 'BasicPermission',
        +            'BasicPopupMenuSeparatorUI', 'BasicPopupMenuUI',
        +            'BasicProgressBarUI', 'BasicRadioButtonMenuItemUI',
        +            'BasicRadioButtonUI', 'BasicRootPaneUI',
        +            'BasicScrollBarUI', 'BasicScrollPaneUI',
        +            'BasicSeparatorUI', 'BasicSliderUI',
        +            'BasicSplitPaneDivider', 'BasicSplitPaneUI',
        +            'BasicStroke', 'BasicTabbedPaneUI',
        +            'BasicTableHeaderUI', 'BasicTableUI',
        +            'BasicTextAreaUI', 'BasicTextFieldUI',
        +            'BasicTextPaneUI', 'BasicTextUI',
        +            'BasicTextUI.BasicCaret',
        +            'BasicTextUI.BasicHighlighter',
        +            'BasicToggleButtonUI', 'BasicToolBarSeparatorUI',
        +            'BasicToolBarUI', 'BasicToolTipUI', 'BasicTreeUI',
        +            'BasicViewportUI', 'BatchUpdateException',
        +            'BeanContext', 'BeanContextChild',
        +            'BeanContextChildComponentProxy',
        +            'BeanContextChildSupport',
        +            'BeanContextContainerProxy', 'BeanContextEvent',
        +            'BeanContextMembershipEvent',
        +            'BeanContextMembershipListener', 'BeanContextProxy',
        +            'BeanContextServiceAvailableEvent',
        +            'BeanContextServiceProvider',
        +            'BeanContextServiceProviderBeanInfo',
        +            'BeanContextServiceRevokedEvent',
        +            'BeanContextServiceRevokedListener',
        +            'BeanContextServices', 'BeanContextServicesListener',
        +            'BeanContextServicesSupport',
        +            'BeanContextServicesSupport.BCSSServiceProvider',
        +            'BeanContextSupport',
        +            'BeanContextSupport.BCSIterator', 'BeanDescriptor',
        +            'BeanInfo', 'Beans', 'BevelBorder', 'BigDecimal',
        +            'BigInteger', 'BinaryRefAddr', 'BindException',
        +            'Binding', 'BindingHelper', 'BindingHolder',
        +            'BindingIterator', 'BindingIteratorHelper',
        +            'BindingIteratorHolder', 'BindingIteratorOperations',
        +            'BindingListHelper', 'BindingListHolder',
        +            'BindingType', 'BindingTypeHelper',
        +            'BindingTypeHolder', 'BitSet', 'Blob', 'BlockView',
        +            'Book', 'Boolean', 'BooleanControl',
        +            'BooleanControl.Type', 'BooleanHolder',
        +            'BooleanSeqHelper', 'BooleanSeqHolder', 'Border',
        +            'BorderFactory', 'BorderLayout', 'BorderUIResource',
        +            'BorderUIResource.BevelBorderUIResource',
        +            'BorderUIResource.CompoundBorderUIResource',
        +            'BorderUIResource.EmptyBorderUIResource',
        +            'BorderUIResource.EtchedBorderUIResource',
        +            'BorderUIResource.LineBorderUIResource',
        +            'BorderUIResource.MatteBorderUIResource',
        +            'BorderUIResource.TitledBorderUIResource',
        +            'BoundedRangeModel', 'Bounds', 'Box', 'Box.Filler',
        +            'BoxedValueHelper', 'BoxLayout', 'BoxView',
        +            'BreakIterator', 'BufferedImage',
        +            'BufferedImageFilter', 'BufferedImageOp',
        +            'BufferedInputStream', 'BufferedOutputStream',
        +            'BufferedReader', 'BufferedWriter', 'Button',
        +            'ButtonGroup', 'ButtonModel', 'ButtonUI', 'Byte',
        +            'ByteArrayInputStream', 'ByteArrayOutputStream',
        +            'ByteHolder', 'ByteLookupTable', 'Calendar',
        +            'CallableStatement', 'CannotProceed',
        +            'CannotProceedException', 'CannotProceedHelper',
        +            'CannotProceedHolder', 'CannotRedoException',
        +            'CannotUndoException', 'Canvas', 'CardLayout',
        +            'Caret', 'CaretEvent', 'CaretListener', 'CellEditor',
        +            'CellEditorListener', 'CellRendererPane',
        +            'Certificate', 'Certificate.CertificateRep',
        +            'CertificateEncodingException',
        +            'CertificateException',
        +            'CertificateExpiredException', 'CertificateFactory',
        +            'CertificateFactorySpi',
        +            'CertificateNotYetValidException',
        +            'CertificateParsingException',
        +            'ChangedCharSetException', 'ChangeEvent',
        +            'ChangeListener', 'Character', 'Character.Subset',
        +            'Character.UnicodeBlock', 'CharacterIterator',
        +            'CharArrayReader', 'CharArrayWriter',
        +            'CharConversionException', 'CharHolder',
        +            'CharSeqHelper', 'CharSeqHolder', 'Checkbox',
        +            'CheckboxGroup', 'CheckboxMenuItem',
        +            'CheckedInputStream', 'CheckedOutputStream',
        +            'Checksum', 'Choice', 'ChoiceFormat', 'Class',
        +            'ClassCastException', 'ClassCircularityError',
        +            'ClassDesc', 'ClassFormatError', 'ClassLoader',
        +            'ClassNotFoundException', 'Clip', 'Clipboard',
        +            'ClipboardOwner', 'Clob', 'Cloneable',
        +            'CloneNotSupportedException', 'CMMException',
        +            'CodeSource', 'CollationElementIterator',
        +            'CollationKey', 'Collator', 'Collection',
        +            'Collections', 'Color',
        +            'ColorChooserComponentFactory', 'ColorChooserUI',
        +            'ColorConvertOp', 'ColorModel',
        +            'ColorSelectionModel', 'ColorSpace',
        +            'ColorUIResource', 'ComboBoxEditor', 'ComboBoxModel',
        +            'ComboBoxUI', 'ComboPopup', 'CommunicationException',
        +            'COMM_FAILURE', 'Comparable', 'Comparator',
        +            'Compiler', 'CompletionStatus',
        +            'CompletionStatusHelper', 'Component',
        +            'ComponentAdapter', 'ComponentColorModel',
        +            'ComponentEvent', 'ComponentInputMap',
        +            'ComponentInputMapUIResource', 'ComponentListener',
        +            'ComponentOrientation', 'ComponentSampleModel',
        +            'ComponentUI', 'ComponentView', 'Composite',
        +            'CompositeContext', 'CompositeName', 'CompositeView',
        +            'CompoundBorder', 'CompoundControl',
        +            'CompoundControl.Type', 'CompoundEdit',
        +            'CompoundName', 'ConcurrentModificationException',
        +            'ConfigurationException', 'ConnectException',
        +            'ConnectIOException', 'Connection', 'Constructor',
        +            'Container', 'ContainerAdapter', 'ContainerEvent',
        +            'ContainerListener', 'ContentHandler',
        +            'ContentHandlerFactory', 'ContentModel', 'Context',
        +            'ContextList', 'ContextNotEmptyException',
        +            'ContextualRenderedImageFactory', 'Control',
        +            'Control.Type', 'ControlFactory',
        +            'ControllerEventListener', 'ConvolveOp', 'CRC32',
        +            'CRL', 'CRLException', 'CropImageFilter', 'CSS',
        +            'CSS.Attribute', 'CTX_RESTRICT_SCOPE',
        +            'CubicCurve2D', 'CubicCurve2D.Double',
        +            'CubicCurve2D.Float', 'Current', 'CurrentHelper',
        +            'CurrentHolder', 'CurrentOperations', 'Cursor',
        +            'Customizer', 'CustomMarshal', 'CustomValue',
        +            'DatabaseMetaData', 'DataBuffer', 'DataBufferByte',
        +            'DataBufferInt', 'DataBufferShort',
        +            'DataBufferUShort', 'DataFlavor',
        +            'DataFormatException', 'DatagramPacket',
        +            'DatagramSocket', 'DatagramSocketImpl',
        +            'DatagramSocketImplFactory', 'DataInput',
        +            'DataInputStream', 'DataLine', 'DataLine.Info',
        +            'DataOutput', 'DataOutputStream', 'DataTruncation',
        +            'DATA_CONVERSION', 'Date', 'DateFormat',
        +            'DateFormatSymbols', 'DebugGraphics',
        +            'DecimalFormat', 'DecimalFormatSymbols',
        +            'DefaultBoundedRangeModel', 'DefaultButtonModel',
        +            'DefaultCaret', 'DefaultCellEditor',
        +            'DefaultColorSelectionModel', 'DefaultComboBoxModel',
        +            'DefaultDesktopManager', 'DefaultEditorKit',
        +            'DefaultEditorKit.BeepAction',
        +            'DefaultEditorKit.CopyAction',
        +            'DefaultEditorKit.CutAction',
        +            'DefaultEditorKit.DefaultKeyTypedAction',
        +            'DefaultEditorKit.InsertBreakAction',
        +            'DefaultEditorKit.InsertContentAction',
        +            'DefaultEditorKit.InsertTabAction',
        +            'DefaultEditorKit.PasteAction,',
        +            'DefaultFocusManager', 'DefaultHighlighter',
        +            'DefaultHighlighter.DefaultHighlightPainter',
        +            'DefaultListCellRenderer',
        +            'DefaultListCellRenderer.UIResource',
        +            'DefaultListModel', 'DefaultListSelectionModel',
        +            'DefaultMenuLayout', 'DefaultMetalTheme',
        +            'DefaultMutableTreeNode',
        +            'DefaultSingleSelectionModel',
        +            'DefaultStyledDocument',
        +            'DefaultStyledDocument.AttributeUndoableEdit',
        +            'DefaultStyledDocument.ElementSpec',
        +            'DefaultTableCellRenderer',
        +            'DefaultTableCellRenderer.UIResource',
        +            'DefaultTableColumnModel', 'DefaultTableModel',
        +            'DefaultTextUI', 'DefaultTreeCellEditor',
        +            'DefaultTreeCellRenderer', 'DefaultTreeModel',
        +            'DefaultTreeSelectionModel', 'DefinitionKind',
        +            'DefinitionKindHelper', 'Deflater',
        +            'DeflaterOutputStream', 'Delegate', 'DesignMode',
        +            'DesktopIconUI', 'DesktopManager', 'DesktopPaneUI',
        +            'DGC', 'Dialog', 'Dictionary', 'DigestException',
        +            'DigestInputStream', 'DigestOutputStream',
        +            'Dimension', 'Dimension2D', 'DimensionUIResource',
        +            'DirContext', 'DirectColorModel', 'DirectoryManager',
        +            'DirObjectFactory', 'DirStateFactory',
        +            'DirStateFactory.Result', 'DnDConstants', 'Document',
        +            'DocumentEvent', 'DocumentEvent.ElementChange',
        +            'DocumentEvent.EventType', 'DocumentListener',
        +            'DocumentParser', 'DomainCombiner', 'DomainManager',
        +            'DomainManagerOperations', 'Double', 'DoubleHolder',
        +            'DoubleSeqHelper', 'DoubleSeqHolder',
        +            'DragGestureEvent', 'DragGestureListener',
        +            'DragGestureRecognizer', 'DragSource',
        +            'DragSourceContext', 'DragSourceDragEvent',
        +            'DragSourceDropEvent', 'DragSourceEvent',
        +            'DragSourceListener', 'Driver', 'DriverManager',
        +            'DriverPropertyInfo', 'DropTarget',
        +            'DropTarget.DropTargetAutoScroller',
        +            'DropTargetContext', 'DropTargetDragEvent',
        +            'DropTargetDropEvent', 'DropTargetEvent',
        +            'DropTargetListener', 'DSAKey',
        +            'DSAKeyPairGenerator', 'DSAParameterSpec',
        +            'DSAParams', 'DSAPrivateKey', 'DSAPrivateKeySpec',
        +            'DSAPublicKey', 'DSAPublicKeySpec', 'DTD',
        +            'DTDConstants', 'DynamicImplementation', 'DynAny',
        +            'DynArray', 'DynEnum', 'DynFixed', 'DynSequence',
        +            'DynStruct', 'DynUnion', 'DynValue', 'EditorKit',
        +            'Element', 'ElementIterator', 'Ellipse2D',
        +            'Ellipse2D.Double', 'Ellipse2D.Float', 'EmptyBorder',
        +            'EmptyStackException', 'EncodedKeySpec', 'Entity',
        +            'EnumControl', 'EnumControl.Type', 'Enumeration',
        +            'Environment', 'EOFException', 'Error',
        +            'EtchedBorder', 'Event', 'EventContext',
        +            'EventDirContext', 'EventListener',
        +            'EventListenerList', 'EventObject', 'EventQueue',
        +            'EventSetDescriptor', 'Exception',
        +            'ExceptionInInitializerError', 'ExceptionList',
        +            'ExpandVetoException', 'ExportException',
        +            'ExtendedRequest', 'ExtendedResponse',
        +            'Externalizable', 'FeatureDescriptor', 'Field',
        +            'FieldNameHelper', 'FieldPosition', 'FieldView',
        +            'File', 'FileChooserUI', 'FileDescriptor',
        +            'FileDialog', 'FileFilter', 'FileInputStream',
        +            'FilenameFilter', 'FileNameMap',
        +            'FileNotFoundException', 'FileOutputStream',
        +            'FilePermission', 'FileReader', 'FileSystemView',
        +            'FileView', 'FileWriter', 'FilteredImageSource',
        +            'FilterInputStream', 'FilterOutputStream',
        +            'FilterReader', 'FilterWriter',
        +            'FixedHeightLayoutCache', 'FixedHolder',
        +            'FlatteningPathIterator', 'FlavorMap', 'Float',
        +            'FloatControl', 'FloatControl.Type', 'FloatHolder',
        +            'FloatSeqHelper', 'FloatSeqHolder', 'FlowLayout',
        +            'FlowView', 'FlowView.FlowStrategy', 'FocusAdapter',
        +            'FocusEvent', 'FocusListener', 'FocusManager',
        +            'Font', 'FontFormatException', 'FontMetrics',
        +            'FontRenderContext', 'FontUIResource', 'Format',
        +            'FormatConversionProvider', 'FormView', 'Frame',
        +            'FREE_MEM', 'GapContent', 'GeneralPath',
        +            'GeneralSecurityException', 'GlyphJustificationInfo',
        +            'GlyphMetrics', 'GlyphVector', 'GlyphView',
        +            'GlyphView.GlyphPainter', 'GradientPaint',
        +            'GraphicAttribute', 'Graphics', 'Graphics2D',
        +            'GraphicsConfigTemplate', 'GraphicsConfiguration',
        +            'GraphicsDevice', 'GraphicsEnvironment',
        +            'GrayFilter', 'GregorianCalendar',
        +            'GridBagConstraints', 'GridBagLayout', 'GridLayout',
        +            'Group', 'Guard', 'GuardedObject', 'GZIPInputStream',
        +            'GZIPOutputStream', 'HasControls', 'HashMap',
        +            'HashSet', 'Hashtable', 'HierarchyBoundsAdapter',
        +            'HierarchyBoundsListener', 'HierarchyEvent',
        +            'HierarchyListener', 'Highlighter',
        +            'Highlighter.Highlight',
        +            'Highlighter.HighlightPainter', 'HTML',
        +            'HTML.Attribute', 'HTML.Tag', 'HTML.UnknownTag',
        +            'HTMLDocument', 'HTMLDocument.Iterator',
        +            'HTMLEditorKit', 'HTMLEditorKit.HTMLFactory',
        +            'HTMLEditorKit.HTMLTextAction',
        +            'HTMLEditorKit.InsertHTMLTextAction',
        +            'HTMLEditorKit.LinkController',
        +            'HTMLEditorKit.Parser',
        +            'HTMLEditorKit.ParserCallback',
        +            'HTMLFrameHyperlinkEvent', 'HTMLWriter',
        +            'HttpURLConnection', 'HyperlinkEvent',
        +            'HyperlinkEvent.EventType', 'HyperlinkListener',
        +            'ICC_ColorSpace', 'ICC_Profile', 'ICC_ProfileGray',
        +            'ICC_ProfileRGB', 'Icon', 'IconUIResource',
        +            'IconView', 'IdentifierHelper', 'Identity',
        +            'IdentityScope', 'IDLEntity', 'IDLType',
        +            'IDLTypeHelper', 'IDLTypeOperations',
        +            'IllegalAccessError', 'IllegalAccessException',
        +            'IllegalArgumentException',
        +            'IllegalComponentStateException',
        +            'IllegalMonitorStateException',
        +            'IllegalPathStateException', 'IllegalStateException',
        +            'IllegalThreadStateException', 'Image',
        +            'ImageConsumer', 'ImageFilter',
        +            'ImageGraphicAttribute', 'ImageIcon',
        +            'ImageObserver', 'ImageProducer',
        +            'ImagingOpException', 'IMP_LIMIT',
        +            'IncompatibleClassChangeError',
        +            'InconsistentTypeCode', 'IndexColorModel',
        +            'IndexedPropertyDescriptor',
        +            'IndexOutOfBoundsException', 'IndirectionException',
        +            'InetAddress', 'Inflater', 'InflaterInputStream',
        +            'InheritableThreadLocal', 'InitialContext',
        +            'InitialContextFactory',
        +            'InitialContextFactoryBuilder', 'InitialDirContext',
        +            'INITIALIZE', 'Initializer', 'InitialLdapContext',
        +            'InlineView', 'InputContext', 'InputEvent',
        +            'InputMap', 'InputMapUIResource', 'InputMethod',
        +            'InputMethodContext', 'InputMethodDescriptor',
        +            'InputMethodEvent', 'InputMethodHighlight',
        +            'InputMethodListener', 'InputMethodRequests',
        +            'InputStream', 'InputStreamReader', 'InputSubset',
        +            'InputVerifier', 'Insets', 'InsetsUIResource',
        +            'InstantiationError', 'InstantiationException',
        +            'Instrument', 'InsufficientResourcesException',
        +            'Integer', 'INTERNAL', 'InternalError',
        +            'InternalFrameAdapter', 'InternalFrameEvent',
        +            'InternalFrameListener', 'InternalFrameUI',
        +            'InterruptedException', 'InterruptedIOException',
        +            'InterruptedNamingException', 'INTF_REPOS',
        +            'IntHolder', 'IntrospectionException',
        +            'Introspector', 'Invalid',
        +            'InvalidAlgorithmParameterException',
        +            'InvalidAttributeIdentifierException',
        +            'InvalidAttributesException',
        +            'InvalidAttributeValueException',
        +            'InvalidClassException',
        +            'InvalidDnDOperationException',
        +            'InvalidKeyException', 'InvalidKeySpecException',
        +            'InvalidMidiDataException', 'InvalidName',
        +            'InvalidNameException', 'InvalidNameHelper',
        +            'InvalidNameHolder', 'InvalidObjectException',
        +            'InvalidParameterException',
        +            'InvalidParameterSpecException',
        +            'InvalidSearchControlsException',
        +            'InvalidSearchFilterException', 'InvalidSeq',
        +            'InvalidTransactionException', 'InvalidValue',
        +            'INVALID_TRANSACTION', 'InvocationEvent',
        +            'InvocationHandler', 'InvocationTargetException',
        +            'InvokeHandler', 'INV_FLAG', 'INV_IDENT',
        +            'INV_OBJREF', 'INV_POLICY', 'IOException',
        +            'IRObject', 'IRObjectOperations', 'IstringHelper',
        +            'ItemEvent', 'ItemListener', 'ItemSelectable',
        +            'Iterator', 'JApplet', 'JarEntry', 'JarException',
        +            'JarFile', 'JarInputStream', 'JarOutputStream',
        +            'JarURLConnection', 'JButton', 'JCheckBox',
        +            'JCheckBoxMenuItem', 'JColorChooser', 'JComboBox',
        +            'JComboBox.KeySelectionManager', 'JComponent',
        +            'JDesktopPane', 'JDialog', 'JEditorPane',
        +            'JFileChooser', 'JFrame', 'JInternalFrame',
        +            'JInternalFrame.JDesktopIcon', 'JLabel',
        +            'JLayeredPane', 'JList', 'JMenu', 'JMenuBar',
        +            'JMenuItem', 'JobAttributes',
        +            'JobAttributes.DefaultSelectionType',
        +            'JobAttributes.DestinationType',
        +            'JobAttributes.DialogType',
        +            'JobAttributes.MultipleDocumentHandlingType',
        +            'JobAttributes.SidesType', 'JOptionPane', 'JPanel',
        +            'JPasswordField', 'JPopupMenu',
        +            'JPopupMenu.Separator', 'JProgressBar',
        +            'JRadioButton', 'JRadioButtonMenuItem', 'JRootPane',
        +            'JScrollBar', 'JScrollPane', 'JSeparator', 'JSlider',
        +            'JSplitPane', 'JTabbedPane', 'JTable',
        +            'JTableHeader', 'JTextArea', 'JTextComponent',
        +            'JTextComponent.KeyBinding', 'JTextField',
        +            'JTextPane', 'JToggleButton',
        +            'JToggleButton.ToggleButtonModel', 'JToolBar',
        +            'JToolBar.Separator', 'JToolTip', 'JTree',
        +            'JTree.DynamicUtilTreeNode',
        +            'JTree.EmptySelectionModel', 'JViewport', 'JWindow',
        +            'Kernel', 'Key', 'KeyAdapter', 'KeyEvent',
        +            'KeyException', 'KeyFactory', 'KeyFactorySpi',
        +            'KeyListener', 'KeyManagementException', 'Keymap',
        +            'KeyPair', 'KeyPairGenerator', 'KeyPairGeneratorSpi',
        +            'KeySpec', 'KeyStore', 'KeyStoreException',
        +            'KeyStoreSpi', 'KeyStroke', 'Label', 'LabelUI',
        +            'LabelView', 'LastOwnerException',
        +            'LayeredHighlighter',
        +            'LayeredHighlighter.LayerPainter', 'LayoutManager',
        +            'LayoutManager2', 'LayoutQueue', 'LdapContext',
        +            'LdapReferralException', 'Lease',
        +            'LimitExceededException', 'Line', 'Line.Info',
        +            'Line2D', 'Line2D.Double', 'Line2D.Float',
        +            'LineBorder', 'LineBreakMeasurer', 'LineEvent',
        +            'LineEvent.Type', 'LineListener', 'LineMetrics',
        +            'LineNumberInputStream', 'LineNumberReader',
        +            'LineUnavailableException', 'LinkageError',
        +            'LinkedList', 'LinkException', 'LinkLoopException',
        +            'LinkRef', 'List', 'ListCellRenderer',
        +            'ListDataEvent', 'ListDataListener', 'ListIterator',
        +            'ListModel', 'ListResourceBundle',
        +            'ListSelectionEvent', 'ListSelectionListener',
        +            'ListSelectionModel', 'ListUI', 'ListView',
        +            'LoaderHandler', 'Locale', 'LocateRegistry',
        +            'LogStream', 'Long', 'LongHolder',
        +            'LongLongSeqHelper', 'LongLongSeqHolder',
        +            'LongSeqHelper', 'LongSeqHolder', 'LookAndFeel',
        +            'LookupOp', 'LookupTable', 'MalformedLinkException',
        +            'MalformedURLException', 'Manifest', 'Map',
        +            'Map.Entry', 'MARSHAL', 'MarshalException',
        +            'MarshalledObject', 'Math', 'MatteBorder',
        +            'MediaTracker', 'Member', 'MemoryImageSource',
        +            'Menu', 'MenuBar', 'MenuBarUI', 'MenuComponent',
        +            'MenuContainer', 'MenuDragMouseEvent',
        +            'MenuDragMouseListener', 'MenuElement', 'MenuEvent',
        +            'MenuItem', 'MenuItemUI', 'MenuKeyEvent',
        +            'MenuKeyListener', 'MenuListener',
        +            'MenuSelectionManager', 'MenuShortcut',
        +            'MessageDigest', 'MessageDigestSpi', 'MessageFormat',
        +            'MetaEventListener', 'MetalBorders',
        +            'MetalBorders.ButtonBorder',
        +            'MetalBorders.Flush3DBorder',
        +            'MetalBorders.InternalFrameBorder',
        +            'MetalBorders.MenuBarBorder',
        +            'MetalBorders.MenuItemBorder',
        +            'MetalBorders.OptionDialogBorder',
        +            'MetalBorders.PaletteBorder',
        +            'MetalBorders.PopupMenuBorder',
        +            'MetalBorders.RolloverButtonBorder',
        +            'MetalBorders.ScrollPaneBorder',
        +            'MetalBorders.TableHeaderBorder',
        +            'MetalBorders.TextFieldBorder',
        +            'MetalBorders.ToggleButtonBorder',
        +            'MetalBorders.ToolBarBorder', 'MetalButtonUI',
        +            'MetalCheckBoxIcon', 'MetalCheckBoxUI',
        +            'MetalComboBoxButton', 'MetalComboBoxEditor',
        +            'MetalComboBoxEditor.UIResource',
        +            'MetalComboBoxIcon', 'MetalComboBoxUI',
        +            'MetalDesktopIconUI', 'MetalFileChooserUI',
        +            'MetalIconFactory', 'MetalIconFactory.FileIcon16',
        +            'MetalIconFactory.FolderIcon16',
        +            'MetalIconFactory.PaletteCloseIcon',
        +            'MetalIconFactory.TreeControlIcon',
        +            'MetalIconFactory.TreeFolderIcon',
        +            'MetalIconFactory.TreeLeafIcon',
        +            'MetalInternalFrameTitlePane',
        +            'MetalInternalFrameUI', 'MetalLabelUI',
        +            'MetalLookAndFeel', 'MetalPopupMenuSeparatorUI',
        +            'MetalProgressBarUI', 'MetalRadioButtonUI',
        +            'MetalScrollBarUI', 'MetalScrollButton',
        +            'MetalScrollPaneUI', 'MetalSeparatorUI',
        +            'MetalSliderUI', 'MetalSplitPaneUI',
        +            'MetalTabbedPaneUI', 'MetalTextFieldUI',
        +            'MetalTheme', 'MetalToggleButtonUI',
        +            'MetalToolBarUI', 'MetalToolTipUI', 'MetalTreeUI',
        +            'MetaMessage', 'Method', 'MethodDescriptor',
        +            'MidiChannel', 'MidiDevice', 'MidiDevice.Info',
        +            'MidiDeviceProvider', 'MidiEvent', 'MidiFileFormat',
        +            'MidiFileReader', 'MidiFileWriter', 'MidiMessage',
        +            'MidiSystem', 'MidiUnavailableException',
        +            'MimeTypeParseException', 'MinimalHTMLWriter',
        +            'MissingResourceException', 'Mixer', 'Mixer.Info',
        +            'MixerProvider', 'ModificationItem', 'Modifier',
        +            'MouseAdapter', 'MouseDragGestureRecognizer',
        +            'MouseEvent', 'MouseInputAdapter',
        +            'MouseInputListener', 'MouseListener',
        +            'MouseMotionAdapter', 'MouseMotionListener',
        +            'MultiButtonUI', 'MulticastSocket',
        +            'MultiColorChooserUI', 'MultiComboBoxUI',
        +            'MultiDesktopIconUI', 'MultiDesktopPaneUI',
        +            'MultiFileChooserUI', 'MultiInternalFrameUI',
        +            'MultiLabelUI', 'MultiListUI', 'MultiLookAndFeel',
        +            'MultiMenuBarUI', 'MultiMenuItemUI',
        +            'MultiOptionPaneUI', 'MultiPanelUI',
        +            'MultiPixelPackedSampleModel', 'MultipleMaster',
        +            'MultiPopupMenuUI', 'MultiProgressBarUI',
        +            'MultiScrollBarUI', 'MultiScrollPaneUI',
        +            'MultiSeparatorUI', 'MultiSliderUI',
        +            'MultiSplitPaneUI', 'MultiTabbedPaneUI',
        +            'MultiTableHeaderUI', 'MultiTableUI', 'MultiTextUI',
        +            'MultiToolBarUI', 'MultiToolTipUI', 'MultiTreeUI',
        +            'MultiViewportUI', 'MutableAttributeSet',
        +            'MutableComboBoxModel', 'MutableTreeNode', 'Name',
        +            'NameAlreadyBoundException', 'NameClassPair',
        +            'NameComponent', 'NameComponentHelper',
        +            'NameComponentHolder', 'NamedValue', 'NameHelper',
        +            'NameHolder', 'NameNotFoundException', 'NameParser',
        +            'NamespaceChangeListener', 'NameValuePair',
        +            'NameValuePairHelper', 'Naming', 'NamingContext',
        +            'NamingContextHelper', 'NamingContextHolder',
        +            'NamingContextOperations', 'NamingEnumeration',
        +            'NamingEvent', 'NamingException',
        +            'NamingExceptionEvent', 'NamingListener',
        +            'NamingManager', 'NamingSecurityException',
        +            'NegativeArraySizeException', 'NetPermission',
        +            'NoClassDefFoundError', 'NoInitialContextException',
        +            'NoninvertibleTransformException',
        +            'NoPermissionException', 'NoRouteToHostException',
        +            'NoSuchAlgorithmException',
        +            'NoSuchAttributeException', 'NoSuchElementException',
        +            'NoSuchFieldError', 'NoSuchFieldException',
        +            'NoSuchMethodError', 'NoSuchMethodException',
        +            'NoSuchObjectException', 'NoSuchProviderException',
        +            'NotActiveException', 'NotBoundException',
        +            'NotContextException', 'NotEmpty', 'NotEmptyHelper',
        +            'NotEmptyHolder', 'NotFound', 'NotFoundHelper',
        +            'NotFoundHolder', 'NotFoundReason',
        +            'NotFoundReasonHelper', 'NotFoundReasonHolder',
        +            'NotOwnerException', 'NotSerializableException',
        +            'NO_IMPLEMENT', 'NO_MEMORY', 'NO_PERMISSION',
        +            'NO_RESOURCES', 'NO_RESPONSE',
        +            'NullPointerException', 'Number', 'NumberFormat',
        +            'NumberFormatException', 'NVList', 'Object',
        +            'ObjectChangeListener', 'ObjectFactory',
        +            'ObjectFactoryBuilder', 'ObjectHelper',
        +            'ObjectHolder', 'ObjectImpl', 'ObjectInput',
        +            'ObjectInputStream', 'ObjectInputStream.GetField',
        +            'ObjectInputValidation', 'ObjectOutput',
        +            'ObjectOutputStream', 'ObjectOutputStream.PutField',
        +            'ObjectStreamClass', 'ObjectStreamConstants',
        +            'ObjectStreamException', 'ObjectStreamField',
        +            'ObjectView', 'OBJECT_NOT_EXIST', 'ObjID',
        +            'OBJ_ADAPTER', 'Observable', 'Observer',
        +            'OctetSeqHelper', 'OctetSeqHolder', 'OMGVMCID',
        +            'OpenType', 'Operation',
        +            'OperationNotSupportedException', 'Option',
        +            'OptionalDataException', 'OptionPaneUI', 'ORB',
        +            'OutOfMemoryError', 'OutputStream',
        +            'OutputStreamWriter', 'OverlayLayout', 'Owner',
        +            'Package', 'PackedColorModel', 'Pageable',
        +            'PageAttributes', 'PageAttributes.ColorType',
        +            'PageAttributes.MediaType',
        +            'PageAttributes.OrientationRequestedType',
        +            'PageAttributes.OriginType',
        +            'PageAttributes.PrintQualityType', 'PageFormat',
        +            'Paint', 'PaintContext', 'PaintEvent', 'Panel',
        +            'PanelUI', 'Paper', 'ParagraphView',
        +            'ParameterBlock', 'ParameterDescriptor',
        +            'ParseException', 'ParsePosition', 'Parser',
        +            'ParserDelegator', 'PartialResultException',
        +            'PasswordAuthentication', 'PasswordView', 'Patch',
        +            'PathIterator', 'Permission', 'PermissionCollection',
        +            'Permissions', 'PERSIST_STORE', 'PhantomReference',
        +            'PipedInputStream', 'PipedOutputStream',
        +            'PipedReader', 'PipedWriter', 'PixelGrabber',
        +            'PixelInterleavedSampleModel', 'PKCS8EncodedKeySpec',
        +            'PlainDocument', 'PlainView', 'Point', 'Point2D',
        +            'Point2D.Double', 'Point2D.Float', 'Policy',
        +            'PolicyError', 'PolicyHelper', 'PolicyHolder',
        +            'PolicyListHelper', 'PolicyListHolder',
        +            'PolicyOperations', 'PolicyTypeHelper', 'Polygon',
        +            'PopupMenu', 'PopupMenuEvent', 'PopupMenuListener',
        +            'PopupMenuUI', 'Port', 'Port.Info',
        +            'PortableRemoteObject',
        +            'PortableRemoteObjectDelegate', 'Position',
        +            'Position.Bias', 'PreparedStatement', 'Principal',
        +            'PrincipalHolder', 'Printable',
        +            'PrinterAbortException', 'PrinterException',
        +            'PrinterGraphics', 'PrinterIOException',
        +            'PrinterJob', 'PrintGraphics', 'PrintJob',
        +            'PrintStream', 'PrintWriter', 'PrivateKey',
        +            'PRIVATE_MEMBER', 'PrivilegedAction',
        +            'PrivilegedActionException',
        +            'PrivilegedExceptionAction', 'Process',
        +            'ProfileDataException', 'ProgressBarUI',
        +            'ProgressMonitor', 'ProgressMonitorInputStream',
        +            'Properties', 'PropertyChangeEvent',
        +            'PropertyChangeListener', 'PropertyChangeSupport',
        +            'PropertyDescriptor', 'PropertyEditor',
        +            'PropertyEditorManager', 'PropertyEditorSupport',
        +            'PropertyPermission', 'PropertyResourceBundle',
        +            'PropertyVetoException', 'ProtectionDomain',
        +            'ProtocolException', 'Provider', 'ProviderException',
        +            'Proxy', 'PublicKey', 'PUBLIC_MEMBER',
        +            'PushbackInputStream', 'PushbackReader',
        +            'QuadCurve2D', 'QuadCurve2D.Double',
        +            'QuadCurve2D.Float', 'Random', 'RandomAccessFile',
        +            'Raster', 'RasterFormatException', 'RasterOp',
        +            'Reader', 'Receiver', 'Rectangle', 'Rectangle2D',
        +            'Rectangle2D.Double', 'Rectangle2D.Float',
        +            'RectangularShape', 'Ref', 'RefAddr', 'Reference',
        +            'Referenceable', 'ReferenceQueue',
        +            'ReferralException', 'ReflectPermission', 'Registry',
        +            'RegistryHandler', 'RemarshalException', 'Remote',
        +            'RemoteCall', 'RemoteException', 'RemoteObject',
        +            'RemoteRef', 'RemoteServer', 'RemoteStub',
        +            'RenderableImage', 'RenderableImageOp',
        +            'RenderableImageProducer', 'RenderContext',
        +            'RenderedImage', 'RenderedImageFactory', 'Renderer',
        +            'RenderingHints', 'RenderingHints.Key',
        +            'RepaintManager', 'ReplicateScaleFilter',
        +            'Repository', 'RepositoryIdHelper', 'Request',
        +            'RescaleOp', 'Resolver', 'ResolveResult',
        +            'ResourceBundle', 'ResponseHandler', 'ResultSet',
        +            'ResultSetMetaData', 'ReverbType', 'RGBImageFilter',
        +            'RMIClassLoader', 'RMIClientSocketFactory',
        +            'RMIFailureHandler', 'RMISecurityException',
        +            'RMISecurityManager', 'RMIServerSocketFactory',
        +            'RMISocketFactory', 'Robot', 'RootPaneContainer',
        +            'RootPaneUI', 'RoundRectangle2D',
        +            'RoundRectangle2D.Double', 'RoundRectangle2D.Float',
        +            'RowMapper', 'RSAKey', 'RSAKeyGenParameterSpec',
        +            'RSAPrivateCrtKey', 'RSAPrivateCrtKeySpec',
        +            'RSAPrivateKey', 'RSAPrivateKeySpec', 'RSAPublicKey',
        +            'RSAPublicKeySpec', 'RTFEditorKit',
        +            'RuleBasedCollator', 'Runnable', 'Runtime',
        +            'RunTime', 'RuntimeException', 'RunTimeOperations',
        +            'RuntimePermission', 'SampleModel',
        +            'SchemaViolationException', 'Scrollable',
        +            'Scrollbar', 'ScrollBarUI', 'ScrollPane',
        +            'ScrollPaneConstants', 'ScrollPaneLayout',
        +            'ScrollPaneLayout.UIResource', 'ScrollPaneUI',
        +            'SearchControls', 'SearchResult',
        +            'SecureClassLoader', 'SecureRandom',
        +            'SecureRandomSpi', 'Security', 'SecurityException',
        +            'SecurityManager', 'SecurityPermission', 'Segment',
        +            'SeparatorUI', 'Sequence', 'SequenceInputStream',
        +            'Sequencer', 'Sequencer.SyncMode', 'Serializable',
        +            'SerializablePermission', 'ServantObject',
        +            'ServerCloneException', 'ServerError',
        +            'ServerException', 'ServerNotActiveException',
        +            'ServerRef', 'ServerRequest',
        +            'ServerRuntimeException', 'ServerSocket',
        +            'ServiceDetail', 'ServiceDetailHelper',
        +            'ServiceInformation', 'ServiceInformationHelper',
        +            'ServiceInformationHolder',
        +            'ServiceUnavailableException', 'Set',
        +            'SetOverrideType', 'SetOverrideTypeHelper', 'Shape',
        +            'ShapeGraphicAttribute', 'Short', 'ShortHolder',
        +            'ShortLookupTable', 'ShortMessage', 'ShortSeqHelper',
        +            'ShortSeqHolder', 'Signature', 'SignatureException',
        +            'SignatureSpi', 'SignedObject', 'Signer',
        +            'SimpleAttributeSet', 'SimpleBeanInfo',
        +            'SimpleDateFormat', 'SimpleTimeZone',
        +            'SinglePixelPackedSampleModel',
        +            'SingleSelectionModel', 'SizeLimitExceededException',
        +            'SizeRequirements', 'SizeSequence', 'Skeleton',
        +            'SkeletonMismatchException',
        +            'SkeletonNotFoundException', 'SliderUI', 'Socket',
        +            'SocketException', 'SocketImpl', 'SocketImplFactory',
        +            'SocketOptions', 'SocketPermission',
        +            'SocketSecurityException', 'SoftBevelBorder',
        +            'SoftReference', 'SortedMap', 'SortedSet',
        +            'Soundbank', 'SoundbankReader', 'SoundbankResource',
        +            'SourceDataLine', 'SplitPaneUI', 'SQLData',
        +            'SQLException', 'SQLInput', 'SQLOutput',
        +            'SQLPermission', 'SQLWarning', 'Stack',
        +            'StackOverflowError', 'StateEdit', 'StateEditable',
        +            'StateFactory', 'Statement', 'Streamable',
        +            'StreamableValue', 'StreamCorruptedException',
        +            'StreamTokenizer', 'StrictMath', 'String',
        +            'StringBuffer', 'StringBufferInputStream',
        +            'StringCharacterIterator', 'StringContent',
        +            'StringHolder', 'StringIndexOutOfBoundsException',
        +            'StringReader', 'StringRefAddr', 'StringSelection',
        +            'StringTokenizer', 'StringValueHelper',
        +            'StringWriter', 'Stroke', 'Struct', 'StructMember',
        +            'StructMemberHelper', 'Stub', 'StubDelegate',
        +            'StubNotFoundException', 'Style', 'StyleConstants',
        +            'StyleConstants.CharacterConstants',
        +            'StyleConstants.ColorConstants',
        +            'StyleConstants.FontConstants',
        +            'StyleConstants.ParagraphConstants', 'StyleContext',
        +            'StyledDocument', 'StyledEditorKit',
        +            'StyledEditorKit.AlignmentAction',
        +            'StyledEditorKit.BoldAction',
        +            'StyledEditorKit.FontFamilyAction',
        +            'StyledEditorKit.FontSizeAction',
        +            'StyledEditorKit.ForegroundAction',
        +            'StyledEditorKit.ItalicAction',
        +            'StyledEditorKit.StyledTextAction',
        +            'StyledEditorKit.UnderlineAction', 'StyleSheet',
        +            'StyleSheet.BoxPainter', 'StyleSheet.ListPainter',
        +            'SwingConstants', 'SwingPropertyChangeSupport',
        +            'SwingUtilities', 'SyncFailedException',
        +            'Synthesizer', 'SysexMessage', 'System',
        +            'SystemColor', 'SystemException', 'SystemFlavorMap',
        +            'TabableView', 'TabbedPaneUI', 'TabExpander',
        +            'TableCellEditor', 'TableCellRenderer',
        +            'TableColumn', 'TableColumnModel',
        +            'TableColumnModelEvent', 'TableColumnModelListener',
        +            'TableHeaderUI', 'TableModel', 'TableModelEvent',
        +            'TableModelListener', 'TableUI', 'TableView',
        +            'TabSet', 'TabStop', 'TagElement', 'TargetDataLine',
        +            'TCKind', 'TextAction', 'TextArea', 'TextAttribute',
        +            'TextComponent', 'TextEvent', 'TextField',
        +            'TextHitInfo', 'TextLayout',
        +            'TextLayout.CaretPolicy', 'TextListener',
        +            'TextMeasurer', 'TextUI', 'TexturePaint', 'Thread',
        +            'ThreadDeath', 'ThreadGroup', 'ThreadLocal',
        +            'Throwable', 'Tie', 'TileObserver', 'Time',
        +            'TimeLimitExceededException', 'Timer', 'TimerTask',
        +            'Timestamp', 'TimeZone', 'TitledBorder', 'ToolBarUI',
        +            'Toolkit', 'ToolTipManager', 'ToolTipUI',
        +            'TooManyListenersException', 'Track',
        +            'TransactionRequiredException',
        +            'TransactionRolledbackException',
        +            'TRANSACTION_REQUIRED', 'TRANSACTION_ROLLEDBACK',
        +            'Transferable', 'TransformAttribute', 'TRANSIENT',
        +            'Transmitter', 'Transparency', 'TreeCellEditor',
        +            'TreeCellRenderer', 'TreeExpansionEvent',
        +            'TreeExpansionListener', 'TreeMap', 'TreeModel',
        +            'TreeModelEvent', 'TreeModelListener', 'TreeNode',
        +            'TreePath', 'TreeSelectionEvent',
        +            'TreeSelectionListener', 'TreeSelectionModel',
        +            'TreeSet', 'TreeUI', 'TreeWillExpandListener',
        +            'TypeCode', 'TypeCodeHolder', 'TypeMismatch',
        +            'Types', 'UID', 'UIDefaults',
        +            'UIDefaults.ActiveValue', 'UIDefaults.LazyInputMap',
        +            'UIDefaults.LazyValue', 'UIDefaults.ProxyLazyValue',
        +            'UIManager', 'UIManager.LookAndFeelInfo',
        +            'UIResource', 'ULongLongSeqHelper',
        +            'ULongLongSeqHolder', 'ULongSeqHelper',
        +            'ULongSeqHolder', 'UndeclaredThrowableException',
        +            'UndoableEdit', 'UndoableEditEvent',
        +            'UndoableEditListener', 'UndoableEditSupport',
        +            'UndoManager', 'UnexpectedException',
        +            'UnicastRemoteObject', 'UnionMember',
        +            'UnionMemberHelper', 'UNKNOWN', 'UnknownError',
        +            'UnknownException', 'UnknownGroupException',
        +            'UnknownHostException', 'UnknownObjectException',
        +            'UnknownServiceException', 'UnknownUserException',
        +            'UnmarshalException', 'UnrecoverableKeyException',
        +            'Unreferenced', 'UnresolvedPermission',
        +            'UnsatisfiedLinkError', 'UnsolicitedNotification',
        +            'UnsolicitedNotificationEvent',
        +            'UnsolicitedNotificationListener',
        +            'UnsupportedAudioFileException',
        +            'UnsupportedClassVersionError',
        +            'UnsupportedEncodingException',
        +            'UnsupportedFlavorException',
        +            'UnsupportedLookAndFeelException',
        +            'UnsupportedOperationException',
        +            'UNSUPPORTED_POLICY', 'UNSUPPORTED_POLICY_VALUE',
        +            'URL', 'URLClassLoader', 'URLConnection',
        +            'URLDecoder', 'URLEncoder', 'URLStreamHandler',
        +            'URLStreamHandlerFactory', 'UserException',
        +            'UShortSeqHelper', 'UShortSeqHolder',
        +            'UTFDataFormatException', 'Util', 'UtilDelegate',
        +            'Utilities', 'ValueBase', 'ValueBaseHelper',
        +            'ValueBaseHolder', 'ValueFactory', 'ValueHandler',
        +            'ValueMember', 'ValueMemberHelper',
        +            'VariableHeightLayoutCache', 'Vector', 'VerifyError',
        +            'VersionSpecHelper', 'VetoableChangeListener',
        +            'VetoableChangeSupport', 'View', 'ViewFactory',
        +            'ViewportLayout', 'ViewportUI',
        +            'VirtualMachineError', 'Visibility',
        +            'VisibilityHelper', 'VMID', 'VM_ABSTRACT',
        +            'VM_CUSTOM', 'VM_NONE', 'VM_TRUNCATABLE',
        +            'VoiceStatus', 'Void', 'WCharSeqHelper',
        +            'WCharSeqHolder', 'WeakHashMap', 'WeakReference',
        +            'Window', 'WindowAdapter', 'WindowConstants',
        +            'WindowEvent', 'WindowListener', 'WrappedPlainView',
        +            'WritableRaster', 'WritableRenderedImage',
        +            'WriteAbortedException', 'Writer',
        +            'WrongTransaction', 'WStringValueHelper',
        +            'X509Certificate', 'X509CRL', 'X509CRLEntry',
        +            'X509EncodedKeySpec', 'X509Extension', 'ZipEntry',
        +            'ZipException', 'ZipFile', 'ZipInputStream',
        +            'ZipOutputStream', 'ZoneView',
        +            '_BindingIteratorImplBase', '_BindingIteratorStub',
        +            '_IDLTypeStub', '_NamingContextImplBase',
        +            '_NamingContextStub', '_PolicyStub', '_Remote_Stub'
        +            ),
        +        4 => array(
        +            'boolean', 'byte', 'char', 'double', 'float', 'int', 'long',
        +            'short', 'void'
        +            ),
        +        5 => array(
        +            'allProperties', 'asImmutable', 'asSynchronized', 'collect',
        +            'count', 'each', 'eachProperty', 'eachPropertyName',
        +            'eachWithIndex', 'find', 'findAll', 'findIndexOf',
        +            'flatten', 'get', 'grep', 'inject', 'intersect',
        +            'join', 'max', 'min', 'pop', 'reverse',
        +            'reverseEach', 'size', 'sort', 'subMap', 'toList'
        +            ),
        +        6 => array(
        +            'center', 'contains', 'eachMatch', 'padLeft', 'padRight',
        +            'toCharacter', 'tokenize', 'toLong', 'toURL'
        +            ),
        +        7 => array(
        +            'append', 'eachByte', 'eachFile', 'eachFileRecurse', 'eachLine',
        +            'eachLines', 'encodeBase64', 'filterLine', 'getText',
        +            'splitEachLine', 'transformChar', 'transformLine',
        +            'withOutputStream', 'withPrintWriter', 'withReader',
        +            'withStream', 'withStreams', 'withWriter',
        +            'withWriterAppend', 'write', 'writeLine'
        +            ),
        +        8 => array(
        +            'dump', 'getLastMatcher', 'inspect', 'invokeMethod', 'print',
        +            'println', 'start', 'startDaemon', 'step', 'times',
        +            'upto', 'use'
        +            ),
        +        9 => array(
        +            'call', 'close', 'eachRow', 'execute', 'executeUpdate', 'Sql'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', '>', '?', '|', '=',
        +        '=>', '||', '-', '+', '<<', '<<<', '&&'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => true,
        +        1 => false,
        +        2 => false,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true,
        +        8 => true,
        +        9 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #aaaadd; font-weight: bold;',
        +            4 => 'color: #993333;',
        +            5 => 'color: #663399;',
        +            6 => 'color: #CC0099;',
        +            7 => 'color: #FFCC33;',
        +            8 => 'color: #993399;',
        +            9 => 'color: #993399; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1=> 'color: #808080; font-style: italic;',
        +            2=> 'color: #a1a100;',
        +            3=> 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;',
        +            2 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #0000ff;'
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAMEL}',
        +        2 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAMEL}',
        +        3 => 'http://www.google.de/search?as_q={FNAME}&num=100&hl=en&as_occt=url&as_sitesearch=java.sun.com%2Fj2se%2F1%2E5%2E0%2Fdocs%2Fapi%2F',
        +        4 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAME}',
        +        5 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAME}',
        +        6 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAME}',
        +        7 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAME}',
        +        8 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAME}',
        +        9 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAME}'
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        //Variables
        +        0 => '\\$\\{[a-zA-Z_][a-zA-Z0-9_]*\\}'
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/gwbasic.php b/includes/geshi/gwbasic.php
        new file mode 100644
        index 0000000..97310df
        --- /dev/null
        +++ b/includes/geshi/gwbasic.php
        @@ -0,0 +1,151 @@
        + 'GwBasic',
        +    'COMMENT_SINGLE' => array(1 => "'", 2=> "REM"),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +    /* Statements */
        +        1 => array('END','FOR','NEXT','DATA','INPUT','DIM','READ','LET',
        +            'GOTO','RUN','IF','RESTORE','GOSUB','RETURN','REM',
        +            'STOP','PRINT','CLEAR','LIST','NEW','ON','WAIT','DEF',
        +            'POKE','CONT','OUT','LPRINT','LLIST','WIDTH','ELSE',
        +            'TRON','TROFF','SWAP','ERASE','EDIT','ERROR','RESUME',
        +            'DELETE','AUTO','RENUM','DEFSTR','DEFINT','DEFSNG',
        +            'DEFDBL','LINE','WHILE','WEND','CALL','WRITE','OPTION',
        +            'RANDOMIZE','OPEN','CLOSE','LOAD','MERGE','SAVE',
        +            'COLOR','CLS','MOTOR','BSAVE','BLOAD','SOUND','BEEP',
        +            'PSET','PRESET','SCREEN','KEY','LOCATE','TO','THEN',
        +            'STEP','USR','FN','SPC','NOT','ERL','ERR','STRING',
        +            'USING','INSTR','VARPTR','CSRLIN','POINT','OFF',
        +            'FILES','FIELD','SYSTEM','NAME','LSET','RSET','KILL',
        +            'PUT','GET','RESET','COMMON','CHAIN','PAINT','COM',
        +            'CIRCLE','DRAW','PLAY','TIMER','IOCTL','CHDIR','MKDIR',
        +            'RMDIR','SHELL','VIEW','WINDOW','PMAP','PALETTE','LCOPY',
        +            'CALLS','PCOPY','LOCK','UNLOCK','RANDOM','APPEND',
        +            ),
        +        2 => array(
        +            /* Functions */
        +            'CVI','CVS','CVD','MKI','MKS','MKD','ENVIRON',
        +            'LEFT','RIGHT','MID','SGN','INT','ABS',
        +            'SQR','SIN','LOG','EXP','COS','TAN','ATN',
        +            'FRE','INP','POS','LEN','STR','VAL','ASC',
        +            'CHR','PEEK','SPACE','OCT','HEX','LPOS',
        +            'CINT','CSNG','CDBL','FIX','PEN','STICK',
        +            'STRIG','EOF','LOC','LOF'
        +            ),
        +        3 => array(
        +            /* alpha Operators */
        +            'AND','OR','XOR','EQV','IMP','MOD'
        +            ),
        +        4 => array(
        +            /* parameterless functions */
        +            'INKEY','DATE','TIME','ERDEV','RND'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array(
        +            '>','=','<','+','-','*','/','^','\\'
        +            ),
        +        1 => array(
        +            '?'
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +            GESHI_COMMENTS => false,
        +            1 => false,
        +            2 => false,
        +            3 => false,
        +            4 => false
        +            ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #00a1a1;font-weight: bold',
        +            2 => 'color: #000066;font-weight: bold',
        +            3 => 'color: #00a166;font-weight: bold',
        +            4 => 'color: #0066a1;font-weight: bold'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080;',
        +            2 => 'color: #808080;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +        /* Same as KEYWORDS[3] (and, or, not...) */
        +            0 => 'color: #00a166;font-weight: bold',
        +            1 => 'color: #00a1a1;font-weight: bold',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            1 => 'color: #708090'
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        1 => '^[0-9]+ '
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/haskell.php b/includes/geshi/haskell.php
        new file mode 100644
        index 0000000..50844f1
        --- /dev/null
        +++ b/includes/geshi/haskell.php
        @@ -0,0 +1,193 @@
        + 'Haskell',
        +    'COMMENT_SINGLE' => array( 1 => '--'),
        +    'COMMENT_MULTI' => array('{-' => '-}'),
        +    'COMMENT_REGEXP' => array(
        +        2 => "/-->/",
        +        3 => "/{-(?:(?R)|.)-}/s", //Nested Comments
        +        ),
        +    'CASE_KEYWORDS' => 0,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        /* main haskell keywords */
        +        1 => array(
        +            'as',
        +            'case', 'of', 'class', 'data', 'default',
        +            'deriving', 'do', 'forall', 'hiding', 'if', 'then',
        +            'else', 'import', 'infix', 'infixl', 'infixr',
        +            'instance', 'let', 'in', 'module', 'newtype',
        +            'qualified', 'type', 'where'
        +            ),
        +        /* define names of main libraries, so we can link to it */
        +        2 => array(
        +            'Foreign', 'Numeric', 'Prelude'
        +            ),
        +        /* just link to Prelude functions, cause it's the default opened library when starting Haskell */
        +        3 => array(
        +            'not', 'otherwise', 'maybe',
        +            'either', 'fst', 'snd', 'curry', 'uncurry',
        +            'compare',
        +            'max', 'min', 'succ', 'pred', 'toEnum', 'fromEnum',
        +            'enumFrom', 'enumFromThen', 'enumFromTo',
        +            'enumFromThenTo', 'minBound', 'maxBound',
        +            'negate', 'abs', 'signum',
        +            'fromInteger', 'toRational', 'quot', 'rem',
        +            'div', 'mod', 'quotRem', 'divMod', 'toInteger',
        +            'recip', 'fromRational', 'pi', 'exp',
        +            'log', 'sqrt', 'logBase', 'sin', 'cos',
        +            'tan', 'asin', 'acos', 'atan', 'sinh', 'cosh',
        +            'tanh', 'asinh', 'acosh', 'atanh',
        +            'properFraction', 'truncate', 'round', 'ceiling',
        +            'floor', 'floatRadix', 'floatDigits', 'floatRange',
        +            'decodeFloat', 'encodeFloat', 'exponent',
        +            'significand', 'scaleFloat', 'isNaN', 'isInfinite',
        +            'isDenomalized', 'isNegativeZero', 'isIEEE',
        +            'atan2', 'subtract', 'even', 'odd', 'gcd',
        +            'lcm', 'fromIntegral', 'realToFrac',
        +            'return', 'fail', 'fmap',
        +            'mapM', 'mapM_', 'sequence', 'sequence_',
        +            'id', 'const','flip',
        +            'until', 'asTypeOf', 'error', 'undefined',
        +            'seq','map','filter', 'head',
        +            'last', 'tail', 'init', 'null', 'length',
        +            'reverse', 'foldl', 'foldl1', 'foldr',
        +            'foldr1', 'and', 'or', 'any', 'all', 'sum',
        +            'product', 'concat', 'concatMap', 'maximum',
        +            'minimum', 'scanl', 'scanl1', 'scanr', 'scanr1',
        +            'iterate', 'repeat', 'cycle', 'take', 'drop',
        +            'splitAt', 'takeWhile', 'dropWhile', 'span',
        +            'break', 'elem', 'notElem', 'lookup', 'zip',
        +            'zip3', 'zipWith', 'zipWith3', 'unzip', 'unzip3',
        +            'lines', 'words', 'unlines',
        +            'unwords', 'showPrec', 'show', 'showList',
        +            'shows', 'showChar', 'showString', 'showParen',
        +            'readsPrec', 'readList', 'reads', 'readParen',
        +            'read', 'lex', 'putChar', 'putStr', 'putStrLn',
        +            'print', 'getChar', 'getLine', 'getContents',
        +            'interact', 'readFile', 'writeFile', 'appendFile',
        +            'readIO', 'readLn', 'ioError', 'userError', 'catch'
        +            ),
        +        /* Prelude types */
        +        4 => array (
        +            'Bool', 'Maybe', 'Either', 'Ordering',
        +            'Char', 'String',
        +            'Int', 'Integer', 'Float', 'Double', 'Rational',
        +            'ShowS', 'ReadS',
        +            'IO', 'IOError', 'IOException'
        +            ),
        +        /* Prelude classes */
        +        5 => array (
        +            'Ord', 'Eq', 'Enum', 'Bounded',
        +            'Num', 'Real', 'Integral', 'Fractional',
        +            'Floating', 'RealFrac', 'RealFloat',
        +            'Monad', 'Functor',
        +            'Show', 'Read'
        +            )
        +        ),
        +    /* Most symbol combinations can be valid Haskell operators */
        +    'SYMBOLS' => array(
        +        '!', '@', '#', '$', '%', '&', '*', '-', '+', '=',
        +        '^', '~', '|', '\\', '>', '<', ':', '?', '/'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true, /* Haskell is a case sensitive language */
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #06c; font-weight: bold;', /* nice blue */
        +            2 => 'color: #06c; font-weight: bold;', /* blue as well */
        +            3 => 'font-weight: bold;', /* make the preduled functions bold */
        +            4 => 'color: #cccc00; font-weight: bold;', /* give types a different bg */
        +            5 => 'color: maroon; font-weight: bold;' /* similarly for classes */
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #5d478b; font-style: italic;',
        +            2 => 'color: #339933; font-weight: bold;',
        +            3 => 'color: #5d478b; font-style: italic;', /* light purple */
        +            'MULTI' => 'color: #5d478b; font-style: italic;' /* light purple */
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'background-color: #3cb371; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: green;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #3cb371;' /* nice green */
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: red;' /* pink */
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #060;' /* dark green */
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933; font-weight: bold;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        /* some of keywords are Prelude functions */
        +        1 => '',
        +        /* link to the wanted library */
        +        2 => 'http://haskell.org/ghc/docs/latest/html/libraries/base/{FNAME}.html',
        +        /* link to Prelude functions */
        +        3 => 'http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:{FNAME}',
        +        /* link to Prelude types */
        +        4 => 'http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:{FNAME}',
        +        /* link to Prelude exceptions */
        +        5 => 'http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:{FNAME}'
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/haxe.php b/includes/geshi/haxe.php
        new file mode 100644
        index 0000000..17f8394
        --- /dev/null
        +++ b/includes/geshi/haxe.php
        @@ -0,0 +1,158 @@
        + 'Haxe',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        //Import and Package directives (Basic Support only)
        +        2 => '/(?:(?<=import[\\n\\s])|(?<=using[\\n\\s])|(?<=package[\\n\\s]))[\\n\\s]*([a-zA-Z0-9_]+\\.)*([a-zA-Z0-9_]+|\*)(?=[\n\s;])/i',
        +        // Haxe comments
        +        3 => '#/\*\*(?![\*\/]).*\*/#sU',
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            //http://haxe.org/ref/keywords
        +            'break', 'callback', 'case', 'cast', 'catch', 'class', 'continue', 'default', 'do', 'dynamic',
        +            'else', 'enum', 'extends', 'extern', /*'false',*/ 'for', 'function', 'here', 'if',
        +            'implements', 'import', 'in', 'inline', 'interface', 'never', 'new', /*'null',*/ 'override',
        +            'package', 'private', 'public', 'return', 'static', 'super', 'switch', 'this', 'throw',
        +            'trace', /*'true',*/ 'try', 'typedef', 'untyped', 'using', 'var', 'while',
        +            'macro', '$type',
        +            ),
        +        2 => array(
        +            //primitive values
        +            'null', 'false', 'true',
        +            ),
        +        3 => array(
        +            //global types
        +            'Array', 'ArrayAccess', /*'Bool',*/ 'Class', 'Date', 'DateTools', 'Dynamic',
        +            'EReg', 'Enum', 'EnumValue', /*'Float',*/ 'Hash', /*'Int',*/ 'IntHash', 'IntIter',
        +            'Iterable', 'Iterator', 'Lambda', 'List', 'Math', 'Null', 'Reflect', 'Std',
        +            /*'String',*/ 'StringBuf', 'StringTools', 'Sys', 'Type', /*'UInt',*/ 'ValueType',
        +            /*'Void',*/ 'Xml', 'XmlType',
        +            ),
        +        4 => array(
        +            //primitive types
        +            'Void', 'Bool', 'Int', 'Float', 'UInt', 'String',
        +            ),
        +        5 => array(
        +            //compiler switches
        +            "#if", "#elseif", "#else", "#end", "#error",
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        //http://haxe.org/manual/operators
        +        '++', '--',
        +        '%',
        +        '*', '/',
        +        '+', '-',
        +        '<<', '>>', '>>>',
        +        '|', '&', '^',
        +        '==', '!=', '>', '>=', '<', '<=',
        +        '...',
        +        '&&',
        +        '||',
        +        '?', ':',
        +        '=', '+=', '-=', '/=', '*=', '<<=', '>>=', '>>>=', '|=', '&=', '^=',
        +        '(', ')', '[', ']', '{', '}', ';',
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #6699cc; font-weight: bold;',
        +            2 => 'color: #000066; font-weight: bold;',
        +            3 => 'color: #03F; ',
        +            4 => 'color: #000033; font-weight: bold;',
        +            5 => 'color: #330000; font-weight: bold;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            2 => 'color: #006699;',
        +            3 => 'color: #008000; font-style: italic; font-weight: bold;',
        +            'MULTI' => 'color: #666666; font-style: italic;',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;',
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #FF0000;',
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;',
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006633;',
        +            2 => 'color: #006633;',
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;',
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.',
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +);
        diff --git a/includes/geshi/hicest.php b/includes/geshi/hicest.php
        new file mode 100644
        index 0000000..cc2c017
        --- /dev/null
        +++ b/includes/geshi/hicest.php
        @@ -0,0 +1,106 @@
        + 'HicEst',
        +    'COMMENT_SINGLE' => array(1 => '!'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"', '\''),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            '$cmd_line', 'abs', 'acos', 'alarm', 'alias', 'allocate', 'appendix', 'asin', 'atan', 'axis', 'beep',
        +            'call', 'ceiling', 'char', 'character', 'com', 'continue', 'cos', 'cosh', 'data', 'diffeq', 'dimension', 'dlg', 'dll',
        +            'do', 'edit', 'else', 'elseif', 'end', 'enddo', 'endif', 'exp', 'floor', 'function', 'fuz', 'goto', 'iand', 'ichar',
        +            'ieor', 'if', 'index', 'init', 'int', 'intpol', 'ior', 'key', 'len', 'len_trim', 'line', 'lock', 'log', 'max', 'maxloc',
        +            'min', 'minloc', 'mod', 'nint', 'not', 'open', 'pop', 'ran', 'read', 'real', 'return', 'rgb', 'roots', 'sign', 'sin',
        +            'sinh', 'solve', 'sort', 'subroutine', 'sum', 'system', 'tan', 'tanh', 'then', 'time', 'use', 'window', 'write', 'xeq'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        1 => array(
        +            '(', ')', '+', '-', '*', '/', '=', '<', '>', '!', '^', ':', ','
        +            ),
        +        2 => array(
        +            '$', '$$'
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #ff0000;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;',
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #004000;'
        +            ),
        +        'SYMBOLS' => array(
        +            1 => 'color: #339933;',
        +            2 => 'color: #ff0000;'
        +            ),
        +        'REGEXPS' => array(),
        +        'SCRIPT' => array()
        +        ),
        +    'URLS' => array(1 => ''),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/hq9plus.php b/includes/geshi/hq9plus.php
        new file mode 100644
        index 0000000..bb461b1
        --- /dev/null
        +++ b/includes/geshi/hq9plus.php
        @@ -0,0 +1,102 @@
        + 'HQ9+',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        ),
        +    'SYMBOLS' => array(
        +        'H', 'Q', '9', '+', 'h', 'q'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            ),
        +        'COMMENTS' => array(
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #a16000;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'ENABLE_FLAGS' => array(
        +            'KEYWORDS' => GESHI_NEVER,
        +            'COMMENTS' => GESHI_NEVER,
        +            'STRINGS' => GESHI_NEVER,
        +            'REGEXPS' => GESHI_NEVER,
        +            'NUMBERS' => GESHI_NEVER
        +            )
        +        )
        +);
        diff --git a/includes/geshi/html4strict.php b/includes/geshi/html4strict.php
        new file mode 100644
        index 0000000..1f01f68
        --- /dev/null
        +++ b/includes/geshi/html4strict.php
        @@ -0,0 +1,188 @@
        + 'HTML',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        2 => array(
        +            'a', 'abbr', 'acronym', 'address', 'applet', 'area',
        +            'base', 'basefont', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'b',
        +            'caption', 'center', 'cite', 'code', 'colgroup', 'col',
        +            'dd', 'del', 'dfn', 'dir', 'div', 'dl', 'dt',
        +            'em',
        +            'fieldset', 'font', 'form', 'frame', 'frameset',
        +            'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'hr', 'html',
        +            'iframe', 'ilayer', 'img', 'input', 'ins', 'isindex', 'i',
        +            'kbd',
        +            'label', 'legend', 'link', 'li',
        +            'map', 'meta',
        +            'noframes', 'noscript',
        +            'object', 'ol', 'optgroup', 'option',
        +            'param', 'pre', 'p',
        +            'q',
        +            'samp', 'script', 'select', 'small', 'span', 'strike', 'strong', 'style', 'sub', 'sup', 's',
        +            'table', 'tbody', 'td', 'textarea', 'text', 'tfoot', 'thead', 'th', 'title', 'tr', 'tt',
        +            'ul', 'u',
        +            'var',
        +            ),
        +        3 => array(
        +            'abbr', 'accept-charset', 'accept', 'accesskey', 'action', 'align', 'alink', 'alt', 'archive', 'axis',
        +            'background', 'bgcolor', 'border',
        +            'cellpadding', 'cellspacing', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 'coords',
        +            'data', 'datetime', 'declare', 'defer', 'dir', 'disabled',
        +            'enctype',
        +            'face', 'for', 'frame', 'frameborder',
        +            'headers', 'height', 'href', 'hreflang', 'hspace', 'http-equiv',
        +            'id', 'ismap',
        +            'label', 'lang', 'language', 'link', 'longdesc',
        +            'marginheight', 'marginwidth', 'maxlength', 'media', 'method', 'multiple',
        +            'name', 'nohref', 'noresize', 'noshade', 'nowrap',
        +            'object', 'onblur', 'onchange', 'onclick', 'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onreset', 'onselect', 'onsubmit', 'onunload',
        +            'profile', 'prompt',
        +            'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules',
        +            'scheme', 'scope', 'scrolling', 'selected', 'shape', 'size', 'span', 'src', 'standby', 'start', 'style', 'summary',
        +            'tabindex', 'target', 'text', 'title', 'type',
        +            'usemap',
        +            'valign', 'value', 'valuetype', 'version', 'vlink', 'vspace',
        +            'width'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '/', '='
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        2 => false,
        +        3 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #000066;'
        +            ),
        +        'COMMENTS' => array(
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'SCRIPT' => array(
        +            -2 => 'color: #404040;', // CDATA
        +            -1 => 'color: #808080; font-style: italic;', // comments
        +            0 => 'color: #00bbdd;',
        +            1 => 'color: #ddbb00;',
        +            2 => 'color: #009900;'
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        2 => 'http://december.com/html/4/element/{FNAMEL}.html',
        +        3 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
        +    'SCRIPT_DELIMITERS' => array(
        +        -2 => array(
        +            ' ']]>'
        +            ),
        +        -1 => array(
        +            ''
        +            ),
        +        0 => array(
        +            ' '>'
        +            ),
        +        1 => array(
        +            '&' => ';'
        +            ),
        +        2 => array(
        +            '<' => '>'
        +            )
        +    ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        -2 => false,
        +        -1 => false,
        +        0 => false,
        +        1 => false,
        +        2 => true
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            2 => array(
        +                'DISALLOWED_BEFORE' => '(?<=<|<\/)',
        +                'DISALLOWED_AFTER' => '(?=\s|\/|>)',
        +            )
        +        )
        +    )
        +);
        diff --git a/includes/geshi/html5.php b/includes/geshi/html5.php
        new file mode 100644
        index 0000000..04fb820
        --- /dev/null
        +++ b/includes/geshi/html5.php
        @@ -0,0 +1,210 @@
        + 'HTML5',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        2 => array(
        +            'a', 'abbr', 'address', 'article', 'area', 'aside', 'audio',
        +
        +            'base', 'bdo', 'blockquote', 'body', 'br', 'button', 'b',
        +
        +            'caption', 'cite', 'code', 'colgroup', 'col', 'canvas', 'command', 'datalist', 'details',
        +
        +            'dd', 'del', 'dfn', 'div', 'dl', 'dt',
        +
        +            'em', 'embed',
        +
        +            'fieldset', 'form', 'figcaption', 'figure', 'footer',
        +
        +            'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'hr', 'html', 'header', 'hgroup',
        +
        +            'iframe', 'ilayer', 'img', 'input', 'ins', 'isindex', 'i',
        +
        +            'kbd', 'keygen',
        +
        +            'label', 'legend', 'link', 'li',
        +
        +            'map', 'meta', 'mark', 'meter',
        +
        +            'noscript', 'nav',
        +
        +            'object', 'ol', 'optgroup', 'option', 'output',
        +
        +            'param', 'pre', 'p', 'progress',
        +
        +            'q',
        +
        +            'rp', 'rt', 'ruby',
        +
        +            'samp', 'script', 'select', 'small', 'span', 'strong', 'style', 'sub', 'sup', 's', 'section', 'source', 'summary',
        +
        +            'table', 'tbody', 'td', 'textarea', 'text', 'tfoot', 'thead', 'th', 'title', 'tr', 'time',
        +
        +            'ul',
        +
        +            'var', 'video',
        +
        +            'wbr',
        +            ),
        +        3 => array(
        +            'abbr', 'accept-charset', 'accept', 'accesskey', 'action', 'align', 'alink', 'alt', 'archive', 'axis', 'autocomplete', 'autofocus',
        +            'background', 'bgcolor', 'border',
        +            'cellpadding', 'cellspacing', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 'coords', 'contenteditable', 'contextmenu',
        +            'data', 'datetime', 'declare', 'defer', 'dir', 'disabled', 'draggable', 'dropzone',
        +            'enctype',
        +            'face', 'for', 'frame', 'frameborder', 'form', 'formaction', 'formenctype', 'formmethod', 'formnovalidate', 'formtarget',
        +            'headers', 'height', 'href', 'hreflang', 'hspace', 'http-equiv', 'hidden',
        +            'id', 'ismap',
        +            'label', 'lang', 'language', 'link', 'longdesc',
        +            'marginheight', 'marginwidth', 'maxlength', 'media', 'method', 'multiple', 'min', 'max',
        +            'name', 'nohref', 'noresize', 'noshade', 'nowrap', 'novalidate',
        +            'object', 'onblur', 'onchange', 'onclick', 'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onselect', 'onsubmit', 'onunload', 'onafterprint', 'onbeforeprint', 'onbeforeonload', 'onerror', 'onhaschange', 'onmessage', 'onoffline', 'ononline', 'onpagehide', 'onpageshow', 'onpopstate', 'onredo', 'onresize', 'onstorage', 'onundo', 'oncontextmenu', 'onformchange', 'onforminput', 'oninput', 'oninvalid', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onmousewheel', 'onscroll', 'oncanplay', 'oncanplaythrough', 'ondurationchange', 'onemptied', 'onended', 'onloadeddata', 'onloadedmetadata', 'onloadstart', 'onpause', 'onplay', 'onplaying', 'onprogress', 'onratechange', 'onreadystatechange', 'onseeked', 'onseeking', 'onstalled', 'onsuspend', 'ontimeupdate', 'onvolumechange', 'onwaiting',
        +            'profile', 'prompt', 'pattern', 'placeholder',
        +            'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules', 'required',
        +            'scheme', 'scope', 'scrolling', 'selected', 'shape', 'size', 'span', 'src', 'standby', 'start', 'style', 'summary', 'spellcheck', 'step',
        +            'tabindex', 'target', 'text', 'title', 'type',
        +            'usemap',
        +            'valign', 'value', 'valuetype', 'version', 'vlink', 'vspace',
        +            'width'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '/', '='
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        2 => false,
        +        3 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #000066;'
        +            ),
        +        'COMMENTS' => array(
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'SCRIPT' => array(
        +            -2 => 'color: #404040;', // CDATA
        +            -1 => 'color: #808080; font-style: italic;', // comments
        +            0 => 'color: #00bbdd;',
        +            1 => 'color: #ddbb00;',
        +            2 => 'color: #009900;'
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        2 => 'http://december.com/html/4/element/{FNAMEL}.html',
        +        3 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
        +    'SCRIPT_DELIMITERS' => array(
        +        -2 => array(
        +            ' ']]>'
        +            ),
        +        -1 => array(
        +            ''
        +            ),
        +        0 => array(
        +            ' '>'
        +            ),
        +        1 => array(
        +            '&' => ';'
        +            ),
        +        2 => array(
        +            '<' => '>'
        +            )
        +    ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        -2 => false,
        +        -1 => false,
        +        0 => false,
        +        1 => false,
        +        2 => true
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            2 => array(
        +                'DISALLOWED_BEFORE' => '(?<=<|<\/)',
        +                'DISALLOWED_AFTER' => '(?=\s|\/|>)',
        +            )
        +        )
        +    )
        +);
        diff --git a/includes/geshi/icon.php b/includes/geshi/icon.php
        new file mode 100644
        index 0000000..eddc88b
        --- /dev/null
        +++ b/includes/geshi/icon.php
        @@ -0,0 +1,210 @@
        + 'Icon',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"', '\''),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'break', 'case', 'continue', 'create', 'default', 'do', 'else',
        +            'end', 'every', 'fail', 'for', 'if', 'import', 'initial',
        +            'initially', 'invocable', 'link', 'next', 'not', 'of', 'package',
        +            'procedure', 'record', 'repeat', 'return', 'switch', 'suspend',
        +            'then', 'to', 'until', 'while'
        +            ),
        +        2 => array(
        +            'global', 'local', 'static'
        +            ),
        +        3 => array(
        +            'allocated', 'ascii', 'clock', 'collections',
        +            'column', 'cset', 'current', 'date', 'dateline', 'digits',
        +            'dump', 'e', 'error', 'errornumber', 'errortext',
        +            'errorvalue', 'errout', 'eventcode', 'eventsource', 'eventvalue',
        +            'fail', 'features', 'file', 'host', 'input', 'lcase',
        +            'letters', 'level', 'line', 'main', 'now', 'null',
        +            'output', 'phi', 'pi', 'pos', 'progname', 'random',
        +            'regions', 'source', 'storage', 'subject', 'syserr', 'time',
        +            'trace', 'ucase', 'version', 'col', 'control', 'interval',
        +            'ldrag', 'lpress', 'lrelease', 'mdrag', 'meta', 'mpress',
        +            'mrelease', 'rdrag', 'resize', 'row', 'rpress', 'rrelease',
        +            'shift', 'window', 'x', 'y'
        +            ),
        +        4 => array(
        +            'abs', 'acos', 'any', 'args', 'asin', 'atan', 'bal', 'center', 'char',
        +            'chmod', 'close', 'cofail', 'collect', 'copy', 'cos', 'cset', 'ctime', 'delay', 'delete',
        +            'detab', 'display', 'dtor', 'entab', 'errorclear', 'event', 'eventmask', 'EvGet', 'exit',
        +            'exp', 'fetch', 'fieldnames', 'find', 'flock', 'flush', 'function', 'get', 'getch',
        +            'getche', 'getenv', 'gettimeofday', 'globalnames', 'gtime', 'iand', 'icom', 'image',
        +            'insert', 'integer', 'ior', 'ishift', 'ixor', 'key', 'left', 'list', 'load', 'loadfunc',
        +            'localnames', 'log', 'many', 'map', 'match', 'member', 'mkdir', 'move', 'name', 'numeric',
        +            'open', 'opmask', 'ord', 'paramnames', 'parent', 'pipe', 'pop', 'pos', 'proc', 'pull',
        +            'push', 'put', 'read', 'reads', 'real', 'receive', 'remove', 'rename', 'repl', 'reverse',
        +            'right', 'rmdir', 'rtod', 'runerr', 'seek', 'select', 'send', 'seq', 'serial', 'set',
        +            'setenv', 'sort', 'sortf', 'sql', 'sqrt', 'stat', 'stop', 'string', 'system', 'tab',
        +            'table', 'tan', 'trap', 'trim', 'truncate', 'type', 'upto', 'utime', 'variable', 'where',
        +            'write', 'writes'
        +            ),
        +        5 => array(
        +            'Active', 'Alert', 'Bg', 'Clip', 'Clone', 'Color', 'ColorValue',
        +            'CopyArea', 'Couple', 'DrawArc', 'DrawCircle', 'DrawCurve', 'DrawCylinder', 'DrawDisk',
        +            'DrawImage', 'DrawLine', 'DrawPoint', 'DrawPolygon', 'DrawRectangle', 'DrawSegment',
        +            'DrawSphere', 'DrawString', 'DrawTorus', 'EraseArea', 'Event', 'Fg', 'FillArc',
        +            'FillCircle', 'FillPolygon', 'FillRectangle', 'Font', 'FreeColor', 'GotoRC', 'GotoXY',
        +            'IdentifyMatrix', 'Lower', 'MatrixMode', 'NewColor', 'PaletteChars', 'PaletteColor',
        +            'PaletteKey', 'Pattern', 'Pending', 'Pixel', 'PopMatrix', 'PushMatrix', 'PushRotate',
        +            'PushScale', 'PushTranslate', 'QueryPointer', 'Raise', 'ReadImage', 'Refresh', 'Rotate',
        +            'Scale', 'Texcoord', 'TextWidth', 'Texture', 'Translate', 'Uncouple', 'WAttrib',
        +            'WDefault', 'WFlush', 'WindowContents', 'WriteImage', 'WSync'
        +            ),
        +        6 => array(
        +            'define', 'include', 'ifdef', 'ifndef', 'else', 'endif', 'error',
        +            'line', 'undef'
        +            ),
        +        7 => array(
        +            '_V9', '_AMIGA', '_ACORN', '_CMS', '_MACINTOSH', '_MSDOS_386',
        +            '_MS_WINDOWS_NT', '_MSDOS', '_MVS', '_OS2', '_POR', 'T', '_UNIX', '_POSIX', '_DBM',
        +            '_VMS', '_ASCII', '_EBCDIC', '_CO_EXPRESSIONS', '_CONSOLE_WINDOW', '_DYNAMIC_LOADING',
        +            '_EVENT_MONITOR', '_EXTERNAL_FUNCTIONS', '_KEYBOARD_FUNCTIONS', '_LARGE_INTEGERS',
        +            '_MULTITASKING', '_PIPES', '_RECORD_IO', '_SYSTEM_FUNCTION', '_MESSAGING', '_GRAPHICS',
        +            '_X_WINDOW_SYSTEM', '_MS_WINDOWS', '_WIN32', '_PRESENTATION_MGR', '_ARM_FUNCTIONS',
        +            '_DOS_FUNCTIONS'
        +            ),
        +        8 => array(
        +            'line'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        1 => array(
        +            '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '\\', '%', '=', '<', '>', '!', '^',
        +            '&', '|', '?', ':', ';', ',', '.', '~', '@'
        +            ),
        +        2 => array(
        +            '$(', '$)', '$<', '$>', '$'
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true,
        +        8 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #b1b100;',
        +            3 => 'color: #b1b100;',
        +            4 => 'color: #b1b100;',
        +            5 => 'color: #b1b100;',
        +            6 => 'color: #b1b100;',
        +            7 => 'color: #b1b100;',
        +            8 => 'color: #b1b100;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;',
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #004000;'
        +            ),
        +        'SYMBOLS' => array(
        +            1 => 'color: #339933;',
        +            2 => 'color: #b1b100;'
        +            ),
        +        'REGEXPS' => array(),
        +        'SCRIPT' => array()
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => '',
        +        7 => '',
        +        8 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(1 => '.'),
        +    'REGEXPS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(),
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            3 => array(
        +                'DISALLOWED_BEFORE' => '(?<=&)'
        +                ),
        +            4 => array(
        +                'DISALLOWED_BEFORE' => "(? "(?![a-zA-Z0-9_\"\'])"
        +                ),
        +            6 => array(
        +                'DISALLOWED_BEFORE' => '(?<=\$)'
        +                ),
        +            8 => array(
        +                'DISALLOWED_BEFORE' => '(?<=#)'
        +                )
        +            )
        +        )
        +);
        diff --git a/includes/geshi/idl.php b/includes/geshi/idl.php
        new file mode 100644
        index 0000000..0bdeb9c
        --- /dev/null
        +++ b/includes/geshi/idl.php
        @@ -0,0 +1,121 @@
        + 'Uno Idl',
        +    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'published', 'get', 'set', 'service', 'singleton', 'type', 'module', 'interface', 'struct',
        +            'const', 'constants', 'exception', 'enum', 'raises', 'typedef'
        +            ),
        +        2 => array(
        +            'bound', 'maybeambiguous', 'maybedefault', 'maybevoid', 'oneway', 'optional',
        +            'readonly', 'in', 'out', 'inout', 'attribute', 'transient', 'removable'
        +            ),
        +        3 => array(
        +            'True', 'False', 'TRUE', 'FALSE'
        +            ),
        +        4 => array(
        +            'string', 'long', 'byte', 'hyper', 'boolean', 'any', 'char', 'double',
        +            'void', 'sequence', 'unsigned'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':', ';', '...'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #990078; font-weight: bold',
        +            2 => 'color: #36dd1c;',
        +            3 => 'color: #990078; font-weight: bold',
        +            4 => 'color: #0000ec;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #3f7f5f;',
        +            2 => 'color: #808080;',
        +            'MULTI' => 'color: #4080ff; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #666666; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #808080;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #0000dd;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/index.php b/includes/geshi/index.php
        new file mode 100644
        index 0000000..590ec3c
        --- /dev/null
        +++ b/includes/geshi/index.php
        @@ -0,0 +1 @@
        +Direct access not allowed.
        \ No newline at end of file
        diff --git a/includes/geshi/ini.php b/includes/geshi/ini.php
        new file mode 100644
        index 0000000..914ebdf
        --- /dev/null
        +++ b/includes/geshi/ini.php
        @@ -0,0 +1,127 @@
        + 'INI',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(0 => '/^\s*;.*?$/m'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        ),
        +    'SYMBOLS' => array(
        +        '[', ']', '='
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            ),
        +        'COMMENTS' => array(
        +            0 => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => ''
        +            ),
        +        'BRACKETS' => array(
        +            0 => ''
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #933;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => ''
        +            ),
        +        'METHODS' => array(
        +            0 => ''
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000066; font-weight:bold;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #000066; font-weight:bold;',
        +            1 => 'color: #000099;',
        +            2 => 'color: #660066;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        //Section names
        +        0 => '\[.+\]',
        +        //Entry names
        +        1 => array(
        +            GESHI_SEARCH => '^(\s*)([a-zA-Z0-9_\-]+)(\s*=)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3'
        +            ),
        +        //Entry values
        +        2 => array(
        +            // Evil hackery to get around GeSHi bug: <>" and ; are added so s can be matched
        +            // Explicit match on variable names because if a comment is before the first < of the span
        +            // gets chewed up...
        +            GESHI_SEARCH => '([<>";a-zA-Z0-9_]+\s*)=(.*)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1=',
        +            GESHI_AFTER => ''
        +            )
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/inno.php b/includes/geshi/inno.php
        new file mode 100644
        index 0000000..5fde614
        --- /dev/null
        +++ b/includes/geshi/inno.php
        @@ -0,0 +1,210 @@
        + 'Inno',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('(*' => '*)'),
        +    'CASE_KEYWORDS' => 0,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'Setup','Types','Components','Tasks','Dirs','Files','Icons','INI',
        +            'InstallDelete','Languages','Messages','CustomMessage',
        +            'LangOptions','Registry','RUN','UninstallDelete','UninstallRun',
        +            'app','win','sys','syswow64','src','sd','pf','pf32','pf64','cf',
        +            'cf32','cf64','tmp','fonts','dao','group','localappdata','sendto',
        +            'userappdata','commonappdata','userdesktop','commondesktop',
        +            'userdocs','commondocs','userfavorites','commonfavorites',
        +            'userprograms','commonprograms','userstartmenu','commonstartmenu',
        +            'userstartup','commonstartup','usertemplates','commontemplates'
        +            ),
        +        2 => array(
        +            'nil', 'false', 'true', 'var', 'type', 'const','And', 'Array', 'As', 'Begin', 'Case', 'Class', 'Constructor', 'Destructor', 'Div', 'Do', 'DownTo', 'Else',
        +            'End', 'Except', 'File', 'Finally', 'For', 'Function', 'Goto', 'If', 'Implementation', 'In', 'Inherited', 'Interface',
        +            'Is', 'Mod', 'Not', 'Object', 'Of', 'On', 'Or', 'Packed', 'Procedure', 'Property', 'Raise', 'Record',
        +            'Repeat', 'Set', 'Shl', 'Shr', 'Then', 'ThreadVar', 'To', 'Try', 'Unit', 'Until', 'Uses', 'While', 'With', 'Xor',
        +
        +            'HKCC','HKCR','HKCU','HKLM','HKU','alwaysoverwrite','alwaysskipifsameorolder','append',
        +            'binary','classic','closeonexit','comparetimestamp','confirmoverwrite',
        +            'createkeyifdoesntexist','createonlyiffileexists','createvalueifdoesntexist',
        +            'deleteafterinstall','deletekey','deletevalue','dirifempty','dontcloseonexit',
        +            'dontcopy','dontcreatekey','disablenouninstallwarning','dword','exclusive','expandsz',
        +            'external','files','filesandordirs','fixed','fontisnttruetype','ignoreversion','iscustom','isreadme',
        +            'modern','multisz','new','noerror','none','normal','nowait','onlyifdestfileexists',
        +            'onlyifdoesntexist','onlyifnewer','overwrite','overwritereadonly','postinstall',
        +            'preservestringtype','promptifolder','regserver','regtypelib','restart','restartreplace',
        +            'runhidden','runmaximized','runminimized','sharedfile','shellexec','showcheckbox',
        +            'skipifnotsilent','skipifsilent','silent','skipifdoesntexist',
        +            'skipifsourcedoesntexist','sortfilesbyextension','unchecked','uninsalwaysuninstall',
        +            'uninsclearvalue','uninsdeleteentry','uninsdeletekey','uninsdeletekeyifempty',
        +            'uninsdeletesection','uninsdeletesectionifempty','uninsdeletevalue',
        +            'uninsneveruninstall','useapppaths','verysilent','waituntilidle'
        +            ),
        +        3 => array(
        +            'Abs', 'Addr', 'AnsiCompareStr', 'AnsiCompareText', 'AnsiContainsStr', 'AnsiEndsStr', 'AnsiIndexStr', 'AnsiLeftStr',
        +            'AnsiLowerCase', 'AnsiMatchStr', 'AnsiMidStr', 'AnsiPos', 'AnsiReplaceStr', 'AnsiReverseString', 'AnsiRightStr',
        +            'AnsiStartsStr', 'AnsiUpperCase', 'ArcCos', 'ArcSin', 'ArcTan', 'Assigned', 'BeginThread', 'Bounds', 'CelsiusToFahrenheit',
        +            'ChangeFileExt', 'Chr', 'CompareStr', 'CompareText', 'Concat', 'Convert', 'Copy', 'Cos', 'CreateDir', 'CurrToStr',
        +            'CurrToStrF', 'Date', 'DateTimeToFileDate', 'DateTimeToStr', 'DateToStr', 'DayOfTheMonth', 'DayOfTheWeek', 'DayOfTheYear',
        +            'DayOfWeek', 'DaysBetween', 'DaysInAMonth', 'DaysInAYear', 'DaySpan', 'DegToRad', 'DeleteFile', 'DiskFree', 'DiskSize',
        +            'DupeString', 'EncodeDate', 'EncodeDateTime', 'EncodeTime', 'EndOfADay', 'EndOfAMonth', 'Eof', 'Eoln', 'Exp', 'ExtractFileDir',
        +            'ExtractFileDrive', 'ExtractFileExt', 'ExtractFileName', 'ExtractFilePath', 'FahrenheitToCelsius', 'FileAge',
        +            'FileDateToDateTime', 'FileExists', 'FilePos', 'FileSearch', 'FileSetDate', 'FileSize', 'FindClose', 'FindCmdLineSwitch',
        +            'FindFirst', 'FindNext', 'FloatToStr', 'FloatToStrF', 'Format', 'FormatCurr', 'FormatDateTime', 'FormatFloat', 'Frac',
        +            'GetCurrentDir', 'GetLastError', 'GetMem', 'High', 'IncDay', 'IncMinute', 'IncMonth', 'IncYear', 'InputBox',
        +            'InputQuery', 'Int', 'IntToHex', 'IntToStr', 'IOResult', 'IsInfinite', 'IsLeapYear', 'IsMultiThread', 'IsNaN',
        +            'LastDelimiter', 'Length', 'Ln', 'Lo', 'Log10', 'Low', 'LowerCase', 'Max', 'Mean', 'MessageDlg', 'MessageDlgPos',
        +            'MonthOfTheYear', 'Now', 'Odd', 'Ord', 'ParamCount', 'ParamStr', 'Pi', 'Point', 'PointsEqual', 'Pos', 'Pred',
        +            'Printer', 'PromptForFileName', 'PtInRect', 'RadToDeg', 'Random', 'RandomRange', 'RecodeDate', 'RecodeTime', 'Rect',
        +            'RemoveDir', 'RenameFile', 'Round', 'SeekEof', 'SeekEoln', 'SelectDirectory', 'SetCurrentDir', 'Sin', 'SizeOf',
        +            'Slice', 'Sqr', 'Sqrt', 'StringOfChar', 'StringReplace', 'StringToWideChar', 'StrToCurr', 'StrToDate', 'StrToDateTime',
        +            'StrToFloat', 'StrToInt', 'StrToInt64', 'StrToInt64Def', 'StrToIntDef', 'StrToTime', 'StuffString', 'Succ', 'Sum', 'Tan',
        +            'Time', 'TimeToStr', 'Tomorrow', 'Trunc', 'UpCase', 'UpperCase', 'VarType', 'WideCharToString', 'WrapText', 'Yesterday',
        +            'Append', 'AppendStr', 'Assign', 'AssignFile', 'AssignPrn', 'Beep', 'BlockRead', 'BlockWrite', 'Break',
        +            'ChDir', 'Close', 'CloseFile', 'Continue', 'DateTimeToString', 'Dec', 'DecodeDate', 'DecodeDateTime',
        +            'DecodeTime', 'Delete', 'Dispose', 'EndThread', 'Erase', 'Exclude', 'Exit', 'FillChar', 'Flush', 'FreeAndNil',
        +            'FreeMem', 'GetDir', 'GetLocaleFormatSettings', 'Halt', 'Inc', 'Include', 'Insert', 'MkDir', 'Move', 'New',
        +            'ProcessPath', 'Randomize', 'Read', 'ReadLn', 'ReallocMem', 'Rename', 'ReplaceDate', 'ReplaceTime',
        +            'Reset', 'ReWrite', 'RmDir', 'RunError', 'Seek', 'SetLength', 'SetString', 'ShowMessage', 'ShowMessageFmt',
        +            'ShowMessagePos', 'Str', 'Truncate', 'Val', 'Write', 'WriteLn',
        +
        +            'AdminPrivilegesRequired','AfterInstall','AllowCancelDuringInstall','AllowNoIcons','AllowRootDirectory','AllowUNCPath','AlwaysRestart','AlwaysShowComponentsList','AlwaysShowDirOnReadyPage','AlwaysShowGroupOnReadyPage ','AlwaysUsePersonalGroup','AppComments','AppContact','AppCopyright','AppendDefaultDirName',
        +            'AppendDefaultGroupName','AppId','AppModifyPath','AppMutex','AppName','AppPublisher',
        +            'AppPublisherURL','AppReadmeFile','AppSupportURL','AppUpdatesURL','AppVerName','AppVersion',
        +            'Attribs','BackColor','BackColor2','BackColorDirection','BackSolid','BeforeInstall',
        +            'ChangesAssociations','ChangesEnvironment','Check','CodeFile','Comment','Compression','CopyMode',
        +            'CreateAppDir','CreateUninstallRegKey','DefaultDirName','DefaultGroupName',
        +            'DefaultUserInfoName','DefaultUserInfoOrg','DefaultUserInfoSerial',
        +            'Description','DestDir','DestName','DirExistsWarning',
        +            'DisableDirPage','DisableFinishedPage',
        +            'DisableProgramGroupPage','DisableReadyMemo','DisableReadyPage',
        +            'DisableStartupPrompt','DiskClusterSize','DiskSliceSize','DiskSpaceMBLabel',
        +            'DiskSpanning','DontMergeDuplicateFiles','EnableDirDoesntExistWarning','Encryption',
        +            'Excludes','ExtraDiskSpaceRequired','Filename','Flags','FlatComponentsList','FontInstall',
        +            'GroupDescription','HotKey','IconFilename','IconIndex','InfoAfterFile','InfoBeforeFile',
        +            'InternalCompressLevel','Key','LanguageDetectionMethod',
        +            'LicenseFile','MergeDuplicateFiles','MessagesFile','MinVersion','Name',
        +            'OnlyBelowVersion','OutputBaseFilename','OutputManifestFile','OutputDir',
        +            'Parameters','Password','Permissions','PrivilegesRequired','ReserveBytes',
        +            'RestartIfNeededByRun','Root','RunOnceId','Section','SetupIconFile',
        +            'ShowComponentSizes','ShowLanguageDialog','ShowTasksTreeLines','SlicesPerDisk',
        +            'SolidCompression','Source','SourceDir','StatusMsg','Subkey',
        +            'TimeStampRounding','TimeStampsInUTC','TouchDate','TouchTime','Type',
        +            'UninstallDisplayIcon','UninstallDisplayName','UninstallFilesDir','UninstallIconFile',
        +            'UninstallLogMode','UninstallRestartComputer','UninstallStyle','Uninstallable',
        +            'UpdateUninstallLogAppName','UsePreviousAppDir','UsePreviousGroup',
        +            'UsePreviousTasks','UsePreviousSetupType','UsePreviousUserInfo',
        +            'UserInfoPage','UseSetupLdr','ValueData','ValueName','ValueType',
        +            'VersionInfoVersion','VersionInfoCompany','VersionInfoDescription','VersionInfoTextVersion',
        +            'WindowResizable','WindowShowCaption','WindowStartMaximized',
        +            'WindowVisible','WizardImageBackColor','WizardImageFile','WizardImageStretch','WizardSmallImageBackColor','WizardSmallImageFile','WizardStyle','WorkingDir'
        +            ),
        +        4 => array(
        +            'AnsiChar', 'AnsiString', 'Boolean', 'Byte', 'Cardinal', 'Char', 'Comp', 'Currency', 'Double', 'Extended',
        +            'Int64', 'Integer', 'LongInt', 'LongWord', 'PAnsiChar', 'PAnsiString', 'PChar', 'PCurrency', 'PDateTime',
        +            'PExtended', 'PInt64', 'Pointer', 'PShortString', 'PString', 'PVariant', 'PWideChar', 'PWideString',
        +            'Real', 'Real48', 'ShortInt', 'ShortString', 'Single', 'SmallInt', 'String', 'TBits', 'TConvType', 'TDateTime',
        +            'Text', 'TextFile', 'TFloatFormat', 'TFormatSettings', 'TList', 'TObject', 'TOpenDialog', 'TPoint',
        +            'TPrintDialog', 'TRect', 'TReplaceFlags', 'TSaveDialog', 'TSearchRec', 'TStringList', 'TSysCharSet',
        +            'TThreadFunc', 'Variant', 'WideChar', 'WideString', 'Word'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}', '@', '%', '&', '*', '|', '/', '<', '>'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000000; font-weight: bold;',/*bold Black*/
        +            2 => 'color: #000000;font-style: italic;',/*Black*/
        +            3 => 'color: #0000FF;',/*blue*/
        +            4 => 'color: #CC0000;'/*red*/
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #33FF00; font-style: italic;',
        +            'MULTI' => 'color: #33FF00; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000000; font-weight: bold;',
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/intercal.php b/includes/geshi/intercal.php
        new file mode 100644
        index 0000000..c68b979
        --- /dev/null
        +++ b/includes/geshi/intercal.php
        @@ -0,0 +1,120 @@
        + 'INTERCAL',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        //Politeness
        +        1 => array(
        +            'DO', 'DOES', 'DONT', 'DON\'T', 'NOT', 'PLEASE', 'PLEASENT', 'PLEASEN\'T', 'MAYBE'
        +            ),
        +        //Statements
        +        2 => array(
        +            'STASH', 'RETRIEVE', 'NEXT', 'RESUME', 'FORGET', 'ABSTAIN', 'ABSTAINING',
        +            'COME', 'FROM', 'CALCULATING', 'REINSTATE', 'IGNORE', 'REMEMBER',
        +            'WRITE', 'IN', 'READ', 'OUT', 'GIVE', 'UP'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '.', ',', ':', ';', '#',
        +        '~', '$', '&', '?',
        +        '\'', '"', '<-'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000080; font-weight: bold;',
        +            2 => 'color: #000080; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            1 => 'color: #808080; font-style: italic;'
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        1 => '^\(\d+\)'
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'ENABLE_FLAGS' => array(
        +            'COMMENTS' => GESHI_NEVER,
        +            'STRINGS' => GESHI_NEVER,
        +            'NUMBERS' => GESHI_NEVER
        +            )
        +        )
        +);
        diff --git a/includes/geshi/io.php b/includes/geshi/io.php
        new file mode 100644
        index 0000000..b57ab85
        --- /dev/null
        +++ b/includes/geshi/io.php
        @@ -0,0 +1,136 @@
        + 'Io',
        +    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'and', 'break', 'else', 'elseif', 'exit', 'for', 'foreach', 'if', 'ifFalse', 'ifNil',
        +            'ifTrue', 'or', 'pass', 'raise', 'return', 'then', 'try', 'wait', 'while', 'yield'
        +            ),
        +        2 => array(
        +            'activate', 'activeCoroCount', 'asString', 'block', 'catch', 'clone', 'collectGarbage',
        +            'compileString', 'continue', 'do', 'doFile', 'doMessage', 'doString', 'forward',
        +            'getSlot', 'getenv', 'hasSlot', 'isActive', 'isNil', 'isResumable', 'list', 'message',
        +            'method', 'parent', 'pause', 'perform', 'performWithArgList', 'print', 'proto',
        +            'raiseResumable', 'removeSlot', 'resend', 'resume', 'schedulerSleepSeconds', 'self',
        +            'sender', 'setSchedulerSleepSeconds', 'setSlot', 'shallowCopy', 'slotNames', 'super',
        +            'system', 'thisBlock', 'thisContext', 'thisMessage', 'type', 'uniqueId', 'updateSlot',
        +            'write'
        +            ),
        +        3 => array(
        +            'Array', 'AudioDevice', 'AudioMixer', 'Block', 'Box', 'Buffer', 'CFunction', 'CGI',
        +            'Color', 'Curses', 'DBM', 'DNSResolver', 'DOConnection', 'DOProxy', 'DOServer',
        +            'Date', 'Directory', 'Duration', 'DynLib', 'Error', 'Exception', 'FFT', 'File',
        +            'Fnmatch', 'Font', 'Future', 'GL', 'GLE', 'GLScissor', 'GLU', 'GLUCylinder',
        +            'GLUQuadric', 'GLUSphere', 'GLUT', 'Host', 'Image', 'Importer', 'LinkList', 'List',
        +            'Lobby', 'Locals', 'MD5', 'MP3Decoder', 'MP3Encoder', 'Map', 'Message', 'Movie',
        +            'NULL', 'Nil', 'Nop', 'Notifiction', 'Number', 'Object', 'OpenGL', 'Point', 'Protos',
        +            'Regex', 'SGMLTag', 'SQLite', 'Server', 'ShowMessage', 'SleepyCat', 'SleepyCatCursor',
        +            'Socket', 'SocketManager', 'Sound', 'Soup', 'Store', 'String', 'Tree', 'UDPSender',
        +            'UDPReceiver', 'URL', 'User', 'Warning', 'WeakLink'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #000066;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            2 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;',
        +            2 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            0 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/ispfpanel.php b/includes/geshi/ispfpanel.php
        new file mode 100644
        index 0000000..a0b0541
        --- /dev/null
        +++ b/includes/geshi/ispfpanel.php
        @@ -0,0 +1,165 @@
        + 'ISPF Panel',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        // Panel Definition Statements
        +        1 => array(
        +            ')CCSID',')PANEL',')ATTR',')ABC',')ABCINIT',')ABCPROC',')BODY',')MODEL',
        +            ')AREA',')INIT',')REINIT',')PROC',')FIELD',')HELP',')LIST',')PNTS',')END'
        +            ),
        +        // File-Tailoring Skeletons
        +        2 => array (
        +            ')DEFAULT',')BLANK', ')CM', ')DO', ')DOT', ')ELSE', ')ENDSEL',
        +            ')ENDDO', ')ENDDOT', ')IF', ')IM', ')ITERATE', ')LEAVE', ')NOP', ')SEL',
        +            ')SET', ')TB', ')TBA'
        +            ),
        +        // Control Variables
        +        3 => array (
        +            '.ALARM','.ATTR','.ATTRCHAR','.AUTOSEL','.CSRPOS','.CSRROW','.CURSOR','.HELP',
        +            '.HHELP','.KANA','.MSG','.NRET','.PFKEY','.RESP','.TRAIL','.ZVARS'
        +            ),
        +        // Keywords
        +        4 => array (
        +            'WINDOW','ALARM','ATTN','BARRIER','HILITE','CAPS',
        +            'CKBOX','CLEAR','CMD','COLOR','COMBO','CSRGRP','CUADYN',
        +            'SKIP','INTENS','AREA','EXTEND',
        +            'DESC','ASIS','VGET','VPUT','JUST','BATSCRD','BATSCRW',
        +            'BDBCS','BDISPMAX','BIT','BKGRND','BREDIMAX','PAD','PADC',
        +            'PAS','CHINESES','CHINESET','DANISH','DATAMOD','DDLIST',
        +            'DEPTH','DUMP','ENGLISH','ERROR','EXIT','EXPAND','FIELD',
        +            'FORMAT','FRENCH','GE','GERMAN','IMAGE','IND','TYPE',
        +            'ITALIAN','JAPANESE','KOREAN','LCOL','LEN','LIND','LISTBOX',
        +            'MODE','NEST','NOJUMP','NOKANA','NUMERIC','OUTLINE','PARM',
        +            'PGM','PORTUGESE','RADIO','RCOL','REP','RIND','ROWS',
        +            'SCALE','SCROLL','SFIHDR','SGERMAN','SIND','SPANISH',
        +            'UPPERENG','WIDTH'
        +            ),
        +        // Parameters
        +        5 => array (
        +            'ADDPOP','ALPHA','ALPHAB','DYNAMIC','SCRL',
        +            'CCSID','COMMAND','DSNAME','DSNAMEF','DSNAMEFM',
        +            'DSNAMEPQ','DSNAMEQ','EBCDIC','ENBLDUMP','ENUM',// 'EXTEND',
        +            'FI','FILEID','FRAME','GUI','GUISCRD','GUISCRW','HEX',
        +            'HIGH','IDATE','IN','INCLUDE','INPUT','ITIME','JDATE',
        +            'JSTD','KEYLIST','LANG','LEFT','LIST','LISTV','LISTVX',
        +            'LISTX','LMSG','LOGO','LOW','MIX','NAME','NAMEF','NB',
        +            'NEWAPPL','NEWPOOL','NOCHECK','NOLOGO','NON','NONBLANK',
        +            'NULLS','NUM','OFF','ON','OPT','OUT','OUTPUT','PANEL',
        +            /* 'PGM',*/'PICT','PICTN','POSITION','TBDISPL','PROFILE',
        +            'QUERY','RANGE','REVERSE','RIGHT','SHARED','SMSG',
        +            'STDDATE','STDTIME','TERMSTAT','TERMTRAC','TEST',
        +            'TESTX','TEXT','TRACE','TRACEX','USCORE','USER',
        +            'USERMOD','WSCMD','WSCMDV'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '(',')','=','&',',','*','#','+','&','%','_','-','@','!'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false
        +        ),
        +    'STYLES' => array(
        +        'BKGROUND' => 'background-color: #000000; color: #00FFFF;',
        +        'KEYWORDS' => array(
        +            1 => 'color: #FF0000;',
        +            2 => 'color: #21A502;',
        +            3 => 'color: #FF00FF;',
        +            4 => 'color: #876C00;',
        +            5 => 'color: #00FF00;'
        +            ),
        +        'COMMENTS' => array(
        +            0 => 'color: #002EB8; font-style: italic;',
        +            //1 => 'color: #002EB8; font-style: italic;',
        +            //2 => 'color: #002EB8; font-style: italic;',
        +            'MULTI' => 'color: #002EB8; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => ''
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #FF7400;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #700000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #FF6633;'
        +            ),
        +        'METHODS' => array(
        +            1 => '',
        +            2 => ''
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #FF7400;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #6B1F6B;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(
        +        // Variables Defined in the Panel
        +        0 => '&[a-zA-Z]{1,8}[0-9]{0,}',
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/j.php b/includes/geshi/j.php
        new file mode 100644
        index 0000000..4cfda8b
        --- /dev/null
        +++ b/includes/geshi/j.php
        @@ -0,0 +1,188 @@
        + 'J',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(
        +        1 => '/(? '/(?<=\bNote\b).*?$\s+\)(?:(?!\n)\s)*$/sm',   //multiline comments in Note
        +        3 => "/'[^']*?$/m"                        //incomplete strings/open quotes
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => '',
        +    'HARDQUOTE' => array("'", "'"),
        +    'HARDESCAPE' => array("'"),
        +    'HARDCHAR' => "'",
        +    'NUMBERS' => array(
        +        0 => '\b(?:_?\d+(?:\.\d+)?(?:x|[bejprx]_?[\da-z]+(?:\.[\da-z]+)?)?|__?)(?![\w\.\:])',
        +        ),
        +    'KEYWORDS' => array(
        +        //Control words
        +        1 => array(
        +            'assert.', 'break.', 'case.', 'catch.', 'catcht.', 'continue.', 'do.',
        +            'else.', 'elseif.', 'end.', 'fcase.', 'for.', 'goto.', 'if.', 'label.',
        +            'return.', 'select.', 'throw.', 'trap.', 'try.', 'while.', 'whilst.'
        +            ),
        +        //Arguments
        +        2 => array(
        +            'm', 'n', 'u', 'v', 'x', 'y'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        //Punctuation
        +        0 => array(
        +            '(', ')'
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        //6 => true,
        +        //7 => true,
        +        //8 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000ff; font-weight: bold;',
        +            2 => 'color: #0000cc; font-weight: bold;',
        +            //6 => 'color: #000000; font-weight: bold;',
        +            //7 => 'color: #000000; font-weight: bold;',
        +            //8 => 'color: #000000; font-weight: bold;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            2 => 'color: #666666; font-style: italic; font-weight: bold;',
        +            3 => 'color: #ff00ff; ',                      //open quote
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            'HARD' => 'font-weight: bold;',
        +            0 => '',
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            'HARD' => 'color: #ff0000;',
        +            0 => 'color: #ff0000;',
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #009999; font-weight: bold;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #009900; font-weight: bold;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #0000ff; font-weight: bold;',   //for_xyz. - same as kw1
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '', //'http://www.jsoftware.com/help/dictionary/ctrl.htm',
        +        2 => '',
        +        //6 => '', //'http://www.jsoftware.com/jwiki/Vocabulary',
        +        //7 => '', //'http://www.jsoftware.com/jwiki/Vocabulary',
        +        //8 => '', //'http://www.jsoftware.com/jwiki/Vocabulary',
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        0 => '\b(for|goto|label)_[a-zA-Z]\w*\.',   //for_xyz. - should be kw1
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'ENABLE_FLAGS' => array(
        +            'BRACKETS' => GESHI_NEVER,
        +            ),
        +        'NUMBERS' => array(
        +            'PRECHECK_RX' => '#[\d_]#',            // underscore is valid number
        +            ),
        +        'KEYWORDS' => array(
        +            //Control words
        +            2 => array(
        +                'DISALLOWED_BEFORE' => '(? '(?![\w\.\:])',
        +                ),
        +            //Primtives starting with a symbol (except . or :)
        +            6 => array(
        +                'DISALLOWED_BEFORE' => '(?!K)',    // effect should be to allow anything
        +                'DISALLOWED_AFTER' => '(?=.*)',
        +                ),
        +            //Primtives starting with a letter
        +            7 => array(
        +                'DISALLOWED_BEFORE' => '(? '(?=.*)',
        +                ),
        +            //Primtives starting with symbol . or :
        +            8 => array(
        +                'DISALLOWED_BEFORE' => '(?<=\s)',
        +                'DISALLOWED_AFTER' => '(?=.*)',
        +                ),
        +            )
        +        )
        +);
        diff --git a/includes/geshi/java.php b/includes/geshi/java.php
        new file mode 100644
        index 0000000..b7323cd
        --- /dev/null
        +++ b/includes/geshi/java.php
        @@ -0,0 +1,980 @@
        + 'Java',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        //Import and Package directives (Basic Support only)
        +        2 => '/(?:(?<=import[\\n\\s])|(?<=package[\\n\\s]))[\\n\\s]*([a-zA-Z0-9_]+\\.)*([a-zA-Z0-9_]+|\*)(?=[\n\s;])/i',
        +        // javadoc comments
        +        3 => '#/\*\*(?![\*\/]).*\*/#sU'
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'for', 'foreach', 'if', 'else', 'while', 'do',
        +            'switch', 'case',  'return', 'public',
        +            'private', 'protected', 'extends', 'break', 'class',
        +            'new', 'try', 'catch', 'throws', 'finally', 'implements',
        +            'interface', 'throw', 'final', 'native', 'synchronized', 'this',
        +            'abstract', 'transient', 'instanceof', 'assert', 'continue',
        +            'default', 'enum', 'package', 'static', 'strictfp', 'super',
        +            'volatile', 'const', 'goto', 'import'
        +            ),
        +        2 => array(
        +            'null', 'false', 'true'
        +            ),
        +        3 => array(
        +            'AbstractAction', 'AbstractBorder', 'AbstractButton',
        +            'AbstractCellEditor', 'AbstractCollection',
        +            'AbstractColorChooserPanel', 'AbstractDocument',
        +            'AbstractDocument.AttributeContext',
        +            'AbstractDocument.Content',
        +            'AbstractDocument.ElementEdit',
        +            'AbstractLayoutCache',
        +            'AbstractLayoutCache.NodeDimensions', 'AbstractList',
        +            'AbstractListModel', 'AbstractMap',
        +            'AbstractMethodError', 'AbstractSequentialList',
        +            'AbstractSet', 'AbstractTableModel',
        +            'AbstractUndoableEdit', 'AbstractWriter',
        +            'AccessControlContext', 'AccessControlException',
        +            'AccessController', 'AccessException', 'Accessible',
        +            'AccessibleAction', 'AccessibleBundle',
        +            'AccessibleComponent', 'AccessibleContext',
        +            'AccessibleHyperlink', 'AccessibleHypertext',
        +            'AccessibleIcon', 'AccessibleObject',
        +            'AccessibleRelation', 'AccessibleRelationSet',
        +            'AccessibleResourceBundle', 'AccessibleRole',
        +            'AccessibleSelection', 'AccessibleState',
        +            'AccessibleStateSet', 'AccessibleTable',
        +            'AccessibleTableModelChange', 'AccessibleText',
        +            'AccessibleValue', 'Acl', 'AclEntry',
        +            'AclNotFoundException', 'Action', 'ActionEvent',
        +            'ActionListener', 'ActionMap', 'ActionMapUIResource',
        +            'Activatable', 'ActivateFailedException',
        +            'ActivationDesc', 'ActivationException',
        +            'ActivationGroup', 'ActivationGroupDesc',
        +            'ActivationGroupDesc.CommandEnvironment',
        +            'ActivationGroupID', 'ActivationID',
        +            'ActivationInstantiator', 'ActivationMonitor',
        +            'ActivationSystem', 'Activator', 'ActiveEvent',
        +            'Adjustable', 'AdjustmentEvent',
        +            'AdjustmentListener', 'Adler32', 'AffineTransform',
        +            'AffineTransformOp', 'AlgorithmParameterGenerator',
        +            'AlgorithmParameterGeneratorSpi',
        +            'AlgorithmParameters', 'AlgorithmParameterSpec',
        +            'AlgorithmParametersSpi', 'AllPermission',
        +            'AlphaComposite', 'AlreadyBound',
        +            'AlreadyBoundException', 'AlreadyBoundHelper',
        +            'AlreadyBoundHolder', 'AncestorEvent',
        +            'AncestorListener', 'Annotation', 'Any', 'AnyHolder',
        +            'AnySeqHelper', 'AnySeqHolder', 'Applet',
        +            'AppletContext', 'AppletInitializer', 'AppletStub',
        +            'ApplicationException', 'Arc2D', 'Arc2D.Double',
        +            'Arc2D.Float', 'Area', 'AreaAveragingScaleFilter',
        +            'ARG_IN', 'ARG_INOUT', 'ARG_OUT',
        +            'ArithmeticException', 'Array',
        +            'ArrayIndexOutOfBoundsException', 'ArrayList',
        +            'Arrays', 'ArrayStoreException', 'AsyncBoxView',
        +            'Attribute', 'AttributedCharacterIterator',
        +            'AttributedCharacterIterator.Attribute',
        +            'AttributedString', 'AttributeInUseException',
        +            'AttributeList', 'AttributeModificationException',
        +            'Attributes', 'Attributes.Name', 'AttributeSet',
        +            'AttributeSet.CharacterAttribute',
        +            'AttributeSet.ColorAttribute',
        +            'AttributeSet.FontAttribute',
        +            'AttributeSet.ParagraphAttribute', 'AudioClip',
        +            'AudioFileFormat', 'AudioFileFormat.Type',
        +            'AudioFileReader', 'AudioFileWriter', 'AudioFormat',
        +            'AudioFormat.Encoding', 'AudioInputStream',
        +            'AudioPermission', 'AudioSystem',
        +            'AuthenticationException',
        +            'AuthenticationNotSupportedException',
        +            'Authenticator', 'Autoscroll', 'AWTError',
        +            'AWTEvent', 'AWTEventListener',
        +            'AWTEventMulticaster', 'AWTException',
        +            'AWTPermission', 'BadKind', 'BadLocationException',
        +            'BAD_CONTEXT', 'BAD_INV_ORDER', 'BAD_OPERATION',
        +            'BAD_PARAM', 'BAD_POLICY', 'BAD_POLICY_TYPE',
        +            'BAD_POLICY_VALUE', 'BAD_TYPECODE', 'BandCombineOp',
        +            'BandedSampleModel', 'BasicArrowButton',
        +            'BasicAttribute', 'BasicAttributes', 'BasicBorders',
        +            'BasicBorders.ButtonBorder',
        +            'BasicBorders.FieldBorder',
        +            'BasicBorders.MarginBorder',
        +            'BasicBorders.MenuBarBorder',
        +            'BasicBorders.RadioButtonBorder',
        +            'BasicBorders.SplitPaneBorder',
        +            'BasicBorders.ToggleButtonBorder',
        +            'BasicButtonListener', 'BasicButtonUI',
        +            'BasicCheckBoxMenuItemUI', 'BasicCheckBoxUI',
        +            'BasicColorChooserUI', 'BasicComboBoxEditor',
        +            'BasicComboBoxEditor.UIResource',
        +            'BasicComboBoxRenderer',
        +            'BasicComboBoxRenderer.UIResource',
        +            'BasicComboBoxUI', 'BasicComboPopup',
        +            'BasicDesktopIconUI', 'BasicDesktopPaneUI',
        +            'BasicDirectoryModel', 'BasicEditorPaneUI',
        +            'BasicFileChooserUI', 'BasicGraphicsUtils',
        +            'BasicHTML', 'BasicIconFactory',
        +            'BasicInternalFrameTitlePane',
        +            'BasicInternalFrameUI', 'BasicLabelUI',
        +            'BasicListUI', 'BasicLookAndFeel', 'BasicMenuBarUI',
        +            'BasicMenuItemUI', 'BasicMenuUI',
        +            'BasicOptionPaneUI',
        +            'BasicOptionPaneUI.ButtonAreaLayout', 'BasicPanelUI',
        +            'BasicPasswordFieldUI', 'BasicPermission',
        +            'BasicPopupMenuSeparatorUI', 'BasicPopupMenuUI',
        +            'BasicProgressBarUI', 'BasicRadioButtonMenuItemUI',
        +            'BasicRadioButtonUI', 'BasicRootPaneUI',
        +            'BasicScrollBarUI', 'BasicScrollPaneUI',
        +            'BasicSeparatorUI', 'BasicSliderUI',
        +            'BasicSplitPaneDivider', 'BasicSplitPaneUI',
        +            'BasicStroke', 'BasicTabbedPaneUI',
        +            'BasicTableHeaderUI', 'BasicTableUI',
        +            'BasicTextAreaUI', 'BasicTextFieldUI',
        +            'BasicTextPaneUI', 'BasicTextUI',
        +            'BasicTextUI.BasicCaret',
        +            'BasicTextUI.BasicHighlighter',
        +            'BasicToggleButtonUI', 'BasicToolBarSeparatorUI',
        +            'BasicToolBarUI', 'BasicToolTipUI', 'BasicTreeUI',
        +            'BasicViewportUI', 'BatchUpdateException',
        +            'BeanContext', 'BeanContextChild',
        +            'BeanContextChildComponentProxy',
        +            'BeanContextChildSupport',
        +            'BeanContextContainerProxy', 'BeanContextEvent',
        +            'BeanContextMembershipEvent',
        +            'BeanContextMembershipListener', 'BeanContextProxy',
        +            'BeanContextServiceAvailableEvent',
        +            'BeanContextServiceProvider',
        +            'BeanContextServiceProviderBeanInfo',
        +            'BeanContextServiceRevokedEvent',
        +            'BeanContextServiceRevokedListener',
        +            'BeanContextServices', 'BeanContextServicesListener',
        +            'BeanContextServicesSupport',
        +            'BeanContextServicesSupport.BCSSServiceProvider',
        +            'BeanContextSupport',
        +            'BeanContextSupport.BCSIterator', 'BeanDescriptor',
        +            'BeanInfo', 'Beans', 'BevelBorder', 'BigDecimal',
        +            'BigInteger', 'BinaryRefAddr', 'BindException',
        +            'Binding', 'BindingHelper', 'BindingHolder',
        +            'BindingIterator', 'BindingIteratorHelper',
        +            'BindingIteratorHolder', 'BindingIteratorOperations',
        +            'BindingListHelper', 'BindingListHolder',
        +            'BindingType', 'BindingTypeHelper',
        +            'BindingTypeHolder', 'BitSet', 'Blob', 'BlockView',
        +            'Book', 'Boolean', 'BooleanControl',
        +            'BooleanControl.Type', 'BooleanHolder',
        +            'BooleanSeqHelper', 'BooleanSeqHolder', 'Border',
        +            'BorderFactory', 'BorderLayout', 'BorderUIResource',
        +            'BorderUIResource.BevelBorderUIResource',
        +            'BorderUIResource.CompoundBorderUIResource',
        +            'BorderUIResource.EmptyBorderUIResource',
        +            'BorderUIResource.EtchedBorderUIResource',
        +            'BorderUIResource.LineBorderUIResource',
        +            'BorderUIResource.MatteBorderUIResource',
        +            'BorderUIResource.TitledBorderUIResource',
        +            'BoundedRangeModel', 'Bounds', 'Box', 'Box.Filler',
        +            'BoxedValueHelper', 'BoxLayout', 'BoxView',
        +            'BreakIterator', 'BufferedImage',
        +            'BufferedImageFilter', 'BufferedImageOp',
        +            'BufferedInputStream', 'BufferedOutputStream',
        +            'BufferedReader', 'BufferedWriter', 'Button',
        +            'ButtonGroup', 'ButtonModel', 'ButtonUI', 'Byte',
        +            'ByteArrayInputStream', 'ByteArrayOutputStream',
        +            'ByteHolder', 'ByteLookupTable', 'Calendar',
        +            'CallableStatement', 'CannotProceed',
        +            'CannotProceedException', 'CannotProceedHelper',
        +            'CannotProceedHolder', 'CannotRedoException',
        +            'CannotUndoException', 'Canvas', 'CardLayout',
        +            'Caret', 'CaretEvent', 'CaretListener', 'CellEditor',
        +            'CellEditorListener', 'CellRendererPane',
        +            'Certificate', 'Certificate.CertificateRep',
        +            'CertificateEncodingException',
        +            'CertificateException',
        +            'CertificateExpiredException', 'CertificateFactory',
        +            'CertificateFactorySpi',
        +            'CertificateNotYetValidException',
        +            'CertificateParsingException',
        +            'ChangedCharSetException', 'ChangeEvent',
        +            'ChangeListener', 'Character', 'Character.Subset',
        +            'Character.UnicodeBlock', 'CharacterIterator',
        +            'CharArrayReader', 'CharArrayWriter',
        +            'CharConversionException', 'CharHolder',
        +            'CharSeqHelper', 'CharSeqHolder', 'Checkbox',
        +            'CheckboxGroup', 'CheckboxMenuItem',
        +            'CheckedInputStream', 'CheckedOutputStream',
        +            'Checksum', 'Choice', 'ChoiceFormat', 'Class',
        +            'ClassCastException', 'ClassCircularityError',
        +            'ClassDesc', 'ClassFormatError', 'ClassLoader',
        +            'ClassNotFoundException', 'Clip', 'Clipboard',
        +            'ClipboardOwner', 'Clob', 'Cloneable',
        +            'CloneNotSupportedException', 'CMMException',
        +            'CodeSource', 'CollationElementIterator',
        +            'CollationKey', 'Collator', 'Collection',
        +            'Collections', 'Color',
        +            'ColorChooserComponentFactory', 'ColorChooserUI',
        +            'ColorConvertOp', 'ColorModel',
        +            'ColorSelectionModel', 'ColorSpace',
        +            'ColorUIResource', 'ComboBoxEditor', 'ComboBoxModel',
        +            'ComboBoxUI', 'ComboPopup', 'CommunicationException',
        +            'COMM_FAILURE', 'Comparable', 'Comparator',
        +            'Compiler', 'CompletionStatus',
        +            'CompletionStatusHelper', 'Component',
        +            'ComponentAdapter', 'ComponentColorModel',
        +            'ComponentEvent', 'ComponentInputMap',
        +            'ComponentInputMapUIResource', 'ComponentListener',
        +            'ComponentOrientation', 'ComponentSampleModel',
        +            'ComponentUI', 'ComponentView', 'Composite',
        +            'CompositeContext', 'CompositeName', 'CompositeView',
        +            'CompoundBorder', 'CompoundControl',
        +            'CompoundControl.Type', 'CompoundEdit',
        +            'CompoundName', 'ConcurrentModificationException',
        +            'ConfigurationException', 'ConnectException',
        +            'ConnectIOException', 'Connection', 'Constructor', 'Container',
        +            'ContainerAdapter', 'ContainerEvent',
        +            'ContainerListener', 'ContentHandler',
        +            'ContentHandlerFactory', 'ContentModel', 'Context',
        +            'ContextList', 'ContextNotEmptyException',
        +            'ContextualRenderedImageFactory', 'Control',
        +            'Control.Type', 'ControlFactory',
        +            'ControllerEventListener', 'ConvolveOp', 'CRC32',
        +            'CRL', 'CRLException', 'CropImageFilter', 'CSS',
        +            'CSS.Attribute', 'CTX_RESTRICT_SCOPE',
        +            'CubicCurve2D', 'CubicCurve2D.Double',
        +            'CubicCurve2D.Float', 'Current', 'CurrentHelper',
        +            'CurrentHolder', 'CurrentOperations', 'Cursor',
        +            'Customizer', 'CustomMarshal', 'CustomValue',
        +            'DatabaseMetaData', 'DataBuffer', 'DataBufferByte',
        +            'DataBufferInt', 'DataBufferShort',
        +            'DataBufferUShort', 'DataFlavor',
        +            'DataFormatException', 'DatagramPacket',
        +            'DatagramSocket', 'DatagramSocketImpl',
        +            'DatagramSocketImplFactory', 'DataInput',
        +            'DataInputStream', 'DataLine', 'DataLine.Info',
        +            'DataOutput', 'DataOutputStream',
        +            'DataTruncation', 'DATA_CONVERSION', 'Date',
        +            'DateFormat', 'DateFormatSymbols', 'DebugGraphics',
        +            'DecimalFormat', 'DecimalFormatSymbols',
        +            'DefaultBoundedRangeModel', 'DefaultButtonModel',
        +            'DefaultCaret', 'DefaultCellEditor',
        +            'DefaultColorSelectionModel', 'DefaultComboBoxModel',
        +            'DefaultDesktopManager', 'DefaultEditorKit',
        +            'DefaultEditorKit.BeepAction',
        +            'DefaultEditorKit.CopyAction',
        +            'DefaultEditorKit.CutAction',
        +            'DefaultEditorKit.DefaultKeyTypedAction',
        +            'DefaultEditorKit.InsertBreakAction',
        +            'DefaultEditorKit.InsertContentAction',
        +            'DefaultEditorKit.InsertTabAction',
        +            'DefaultEditorKit.PasteAction,',
        +            'DefaultFocusManager', 'DefaultHighlighter',
        +            'DefaultHighlighter.DefaultHighlightPainter',
        +            'DefaultListCellRenderer',
        +            'DefaultListCellRenderer.UIResource',
        +            'DefaultListModel', 'DefaultListSelectionModel',
        +            'DefaultMenuLayout', 'DefaultMetalTheme',
        +            'DefaultMutableTreeNode',
        +            'DefaultSingleSelectionModel',
        +            'DefaultStyledDocument',
        +            'DefaultStyledDocument.AttributeUndoableEdit',
        +            'DefaultStyledDocument.ElementSpec',
        +            'DefaultTableCellRenderer',
        +            'DefaultTableCellRenderer.UIResource',
        +            'DefaultTableColumnModel', 'DefaultTableModel',
        +            'DefaultTextUI', 'DefaultTreeCellEditor',
        +            'DefaultTreeCellRenderer', 'DefaultTreeModel',
        +            'DefaultTreeSelectionModel', 'DefinitionKind',
        +            'DefinitionKindHelper', 'Deflater',
        +            'DeflaterOutputStream', 'Delegate', 'DesignMode',
        +            'DesktopIconUI', 'DesktopManager', 'DesktopPaneUI',
        +            'DGC', 'Dialog', 'Dictionary', 'DigestException',
        +            'DigestInputStream', 'DigestOutputStream',
        +            'Dimension', 'Dimension2D', 'DimensionUIResource',
        +            'DirContext', 'DirectColorModel', 'DirectoryManager',
        +            'DirObjectFactory', 'DirStateFactory',
        +            'DirStateFactory.Result', 'DnDConstants', 'Document',
        +            'DocumentEvent', 'DocumentEvent.ElementChange',
        +            'DocumentEvent.EventType', 'DocumentListener',
        +            'DocumentParser', 'DomainCombiner', 'DomainManager',
        +            'DomainManagerOperations', 'Double', 'DoubleHolder',
        +            'DoubleSeqHelper', 'DoubleSeqHolder',
        +            'DragGestureEvent', 'DragGestureListener',
        +            'DragGestureRecognizer', 'DragSource',
        +            'DragSourceContext', 'DragSourceDragEvent',
        +            'DragSourceDropEvent', 'DragSourceEvent',
        +            'DragSourceListener', 'Driver', 'DriverManager',
        +            'DriverPropertyInfo', 'DropTarget',
        +            'DropTarget.DropTargetAutoScroller',
        +            'DropTargetContext', 'DropTargetDragEvent',
        +            'DropTargetDropEvent', 'DropTargetEvent',
        +            'DropTargetListener', 'DSAKey',
        +            'DSAKeyPairGenerator', 'DSAParameterSpec',
        +            'DSAParams', 'DSAPrivateKey', 'DSAPrivateKeySpec',
        +            'DSAPublicKey', 'DSAPublicKeySpec', 'DTD',
        +            'DTDConstants', 'DynamicImplementation', 'DynAny',
        +            'DynArray', 'DynEnum', 'DynFixed', 'DynSequence',
        +            'DynStruct', 'DynUnion', 'DynValue', 'EditorKit',
        +            'Element', 'ElementIterator', 'Ellipse2D',
        +            'Ellipse2D.Double', 'Ellipse2D.Float', 'EmptyBorder',
        +            'EmptyStackException', 'EncodedKeySpec', 'Entity',
        +            'EnumControl', 'EnumControl.Type', 'Enumeration',
        +            'Environment', 'EOFException', 'Error',
        +            'EtchedBorder', 'Event', 'EventContext',
        +            'EventDirContext', 'EventListener',
        +            'EventListenerList', 'EventObject', 'EventQueue',
        +            'EventSetDescriptor', 'Exception',
        +            'ExceptionInInitializerError', 'ExceptionList',
        +            'ExpandVetoException', 'ExportException',
        +            'ExtendedRequest', 'ExtendedResponse',
        +            'Externalizable', 'FeatureDescriptor', 'Field',
        +            'FieldNameHelper', 'FieldPosition', 'FieldView',
        +            'File', 'FileChooserUI', 'FileDescriptor',
        +            'FileDialog', 'FileFilter',
        +            'FileInputStream', 'FilenameFilter', 'FileNameMap',
        +            'FileNotFoundException', 'FileOutputStream',
        +            'FilePermission', 'FileReader', 'FileSystemView',
        +            'FileView', 'FileWriter', 'FilteredImageSource',
        +            'FilterInputStream', 'FilterOutputStream',
        +            'FilterReader', 'FilterWriter',
        +            'FixedHeightLayoutCache', 'FixedHolder',
        +            'FlatteningPathIterator', 'FlavorMap', 'Float',
        +            'FloatControl', 'FloatControl.Type', 'FloatHolder',
        +            'FloatSeqHelper', 'FloatSeqHolder', 'FlowLayout',
        +            'FlowView', 'FlowView.FlowStrategy', 'FocusAdapter',
        +            'FocusEvent', 'FocusListener', 'FocusManager',
        +            'Font', 'FontFormatException', 'FontMetrics',
        +            'FontRenderContext', 'FontUIResource', 'Format',
        +            'FormatConversionProvider', 'FormView', 'Frame',
        +            'FREE_MEM', 'GapContent', 'GeneralPath',
        +            'GeneralSecurityException', 'GlyphJustificationInfo',
        +            'GlyphMetrics', 'GlyphVector', 'GlyphView',
        +            'GlyphView.GlyphPainter', 'GradientPaint',
        +            'GraphicAttribute', 'Graphics', 'Graphics2D',
        +            'GraphicsConfigTemplate', 'GraphicsConfiguration',
        +            'GraphicsDevice', 'GraphicsEnvironment',
        +            'GrayFilter', 'GregorianCalendar',
        +            'GridBagConstraints', 'GridBagLayout', 'GridLayout',
        +            'Group', 'Guard', 'GuardedObject', 'GZIPInputStream',
        +            'GZIPOutputStream', 'HasControls', 'HashMap',
        +            'HashSet', 'Hashtable', 'HierarchyBoundsAdapter',
        +            'HierarchyBoundsListener', 'HierarchyEvent',
        +            'HierarchyListener', 'Highlighter',
        +            'Highlighter.Highlight',
        +            'Highlighter.HighlightPainter', 'HTML',
        +            'HTML.Attribute', 'HTML.Tag', 'HTML.UnknownTag',
        +            'HTMLDocument', 'HTMLDocument.Iterator',
        +            'HTMLEditorKit', 'HTMLEditorKit.HTMLFactory',
        +            'HTMLEditorKit.HTMLTextAction',
        +            'HTMLEditorKit.InsertHTMLTextAction',
        +            'HTMLEditorKit.LinkController',
        +            'HTMLEditorKit.Parser',
        +            'HTMLEditorKit.ParserCallback',
        +            'HTMLFrameHyperlinkEvent', 'HTMLWriter',
        +            'HttpURLConnection', 'HyperlinkEvent',
        +            'HyperlinkEvent.EventType', 'HyperlinkListener',
        +            'ICC_ColorSpace', 'ICC_Profile', 'ICC_ProfileGray',
        +            'ICC_ProfileRGB', 'Icon', 'IconUIResource',
        +            'IconView', 'IdentifierHelper', 'Identity',
        +            'IdentityScope', 'IDLEntity', 'IDLType',
        +            'IDLTypeHelper', 'IDLTypeOperations',
        +            'IllegalAccessError', 'IllegalAccessException',
        +            'IllegalArgumentException',
        +            'IllegalComponentStateException',
        +            'IllegalMonitorStateException',
        +            'IllegalPathStateException', 'IllegalStateException',
        +            'IllegalThreadStateException', 'Image',
        +            'ImageConsumer', 'ImageFilter',
        +            'ImageGraphicAttribute', 'ImageIcon',
        +            'ImageObserver', 'ImageProducer',
        +            'ImagingOpException', 'IMP_LIMIT',
        +            'IncompatibleClassChangeError',
        +            'InconsistentTypeCode', 'IndexColorModel',
        +            'IndexedPropertyDescriptor',
        +            'IndexOutOfBoundsException', 'IndirectionException',
        +            'InetAddress', 'Inflater', 'InflaterInputStream',
        +            'InheritableThreadLocal', 'InitialContext',
        +            'InitialContextFactory',
        +            'InitialContextFactoryBuilder', 'InitialDirContext',
        +            'INITIALIZE', 'Initializer', 'InitialLdapContext',
        +            'InlineView', 'InputContext', 'InputEvent',
        +            'InputMap', 'InputMapUIResource', 'InputMethod',
        +            'InputMethodContext', 'InputMethodDescriptor',
        +            'InputMethodEvent', 'InputMethodHighlight',
        +            'InputMethodListener', 'InputMethodRequests',
        +            'InputStream',
        +            'InputStreamReader', 'InputSubset', 'InputVerifier',
        +            'Insets', 'InsetsUIResource', 'InstantiationError',
        +            'InstantiationException', 'Instrument',
        +            'InsufficientResourcesException', 'Integer',
        +            'INTERNAL', 'InternalError', 'InternalFrameAdapter',
        +            'InternalFrameEvent', 'InternalFrameListener',
        +            'InternalFrameUI', 'InterruptedException',
        +            'InterruptedIOException',
        +            'InterruptedNamingException', 'INTF_REPOS',
        +            'IntHolder', 'IntrospectionException',
        +            'Introspector', 'Invalid',
        +            'InvalidAlgorithmParameterException',
        +            'InvalidAttributeIdentifierException',
        +            'InvalidAttributesException',
        +            'InvalidAttributeValueException',
        +            'InvalidClassException',
        +            'InvalidDnDOperationException',
        +            'InvalidKeyException', 'InvalidKeySpecException',
        +            'InvalidMidiDataException', 'InvalidName',
        +            'InvalidNameException',
        +            'InvalidNameHelper', 'InvalidNameHolder',
        +            'InvalidObjectException',
        +            'InvalidParameterException',
        +            'InvalidParameterSpecException',
        +            'InvalidSearchControlsException',
        +            'InvalidSearchFilterException', 'InvalidSeq',
        +            'InvalidTransactionException', 'InvalidValue',
        +            'INVALID_TRANSACTION', 'InvocationEvent',
        +            'InvocationHandler', 'InvocationTargetException',
        +            'InvokeHandler', 'INV_FLAG', 'INV_IDENT',
        +            'INV_OBJREF', 'INV_POLICY', 'IOException',
        +            'IRObject', 'IRObjectOperations', 'IstringHelper',
        +            'ItemEvent', 'ItemListener', 'ItemSelectable',
        +            'Iterator', 'JApplet', 'JarEntry', 'JarException',
        +            'JarFile', 'JarInputStream', 'JarOutputStream',
        +            'JarURLConnection', 'JButton', 'JCheckBox',
        +            'JCheckBoxMenuItem', 'JColorChooser', 'JComboBox',
        +            'JComboBox.KeySelectionManager', 'JComponent',
        +            'JDesktopPane', 'JDialog', 'JEditorPane',
        +            'JFileChooser', 'JFrame', 'JInternalFrame',
        +            'JInternalFrame.JDesktopIcon', 'JLabel',
        +            'JLayeredPane', 'JList', 'JMenu', 'JMenuBar',
        +            'JMenuItem', 'JobAttributes',
        +            'JobAttributes.DefaultSelectionType',
        +            'JobAttributes.DestinationType',
        +            'JobAttributes.DialogType',
        +            'JobAttributes.MultipleDocumentHandlingType',
        +            'JobAttributes.SidesType', 'JOptionPane', 'JPanel',
        +            'JPasswordField', 'JPopupMenu',
        +            'JPopupMenu.Separator', 'JProgressBar',
        +            'JRadioButton', 'JRadioButtonMenuItem', 'JRootPane',
        +            'JScrollBar', 'JScrollPane', 'JSeparator', 'JSlider',
        +            'JSplitPane', 'JTabbedPane', 'JTable',
        +            'JTableHeader', 'JTextArea', 'JTextComponent',
        +            'JTextComponent.KeyBinding', 'JTextField',
        +            'JTextPane', 'JToggleButton',
        +            'JToggleButton.ToggleButtonModel', 'JToolBar',
        +            'JToolBar.Separator', 'JToolTip', 'JTree',
        +            'JTree.DynamicUtilTreeNode',
        +            'JTree.EmptySelectionModel', 'JViewport', 'JWindow',
        +            'Kernel', 'Key', 'KeyAdapter', 'KeyEvent',
        +            'KeyException', 'KeyFactory', 'KeyFactorySpi',
        +            'KeyListener', 'KeyManagementException', 'Keymap',
        +            'KeyPair', 'KeyPairGenerator', 'KeyPairGeneratorSpi',
        +            'KeySpec', 'KeyStore', 'KeyStoreException',
        +            'KeyStoreSpi', 'KeyStroke', 'Label', 'LabelUI',
        +            'LabelView', 'LastOwnerException',
        +            'LayeredHighlighter',
        +            'LayeredHighlighter.LayerPainter', 'LayoutManager',
        +            'LayoutManager2', 'LayoutQueue', 'LdapContext',
        +            'LdapReferralException', 'Lease',
        +            'LimitExceededException', 'Line', 'Line.Info',
        +            'Line2D', 'Line2D.Double', 'Line2D.Float',
        +            'LineBorder', 'LineBreakMeasurer', 'LineEvent',
        +            'LineEvent.Type', 'LineListener', 'LineMetrics',
        +            'LineNumberInputStream', 'LineNumberReader',
        +            'LineUnavailableException', 'LinkageError',
        +            'LinkedList', 'LinkException', 'LinkLoopException',
        +            'LinkRef', 'List', 'ListCellRenderer',
        +            'ListDataEvent', 'ListDataListener', 'ListIterator',
        +            'ListModel', 'ListResourceBundle',
        +            'ListSelectionEvent', 'ListSelectionListener',
        +            'ListSelectionModel', 'ListUI', 'ListView',
        +            'LoaderHandler', 'Locale', 'LocateRegistry',
        +            'LogStream', 'Long', 'LongHolder',
        +            'LongLongSeqHelper', 'LongLongSeqHolder',
        +            'LongSeqHelper', 'LongSeqHolder', 'LookAndFeel',
        +            'LookupOp', 'LookupTable', 'MalformedLinkException',
        +            'MalformedURLException', 'Manifest', 'Map',
        +            'Map.Entry', 'MARSHAL', 'MarshalException',
        +            'MarshalledObject', 'Math', 'MatteBorder',
        +            'MediaTracker', 'Member', 'MemoryImageSource',
        +            'Menu', 'MenuBar', 'MenuBarUI', 'MenuComponent',
        +            'MenuContainer', 'MenuDragMouseEvent',
        +            'MenuDragMouseListener', 'MenuElement', 'MenuEvent',
        +            'MenuItem', 'MenuItemUI', 'MenuKeyEvent',
        +            'MenuKeyListener', 'MenuListener',
        +            'MenuSelectionManager', 'MenuShortcut',
        +            'MessageDigest', 'MessageDigestSpi', 'MessageFormat',
        +            'MetaEventListener', 'MetalBorders',
        +            'MetalBorders.ButtonBorder',
        +            'MetalBorders.Flush3DBorder',
        +            'MetalBorders.InternalFrameBorder',
        +            'MetalBorders.MenuBarBorder',
        +            'MetalBorders.MenuItemBorder',
        +            'MetalBorders.OptionDialogBorder',
        +            'MetalBorders.PaletteBorder',
        +            'MetalBorders.PopupMenuBorder',
        +            'MetalBorders.RolloverButtonBorder',
        +            'MetalBorders.ScrollPaneBorder',
        +            'MetalBorders.TableHeaderBorder',
        +            'MetalBorders.TextFieldBorder',
        +            'MetalBorders.ToggleButtonBorder',
        +            'MetalBorders.ToolBarBorder', 'MetalButtonUI',
        +            'MetalCheckBoxIcon', 'MetalCheckBoxUI',
        +            'MetalComboBoxButton', 'MetalComboBoxEditor',
        +            'MetalComboBoxEditor.UIResource',
        +            'MetalComboBoxIcon', 'MetalComboBoxUI',
        +            'MetalDesktopIconUI', 'MetalFileChooserUI',
        +            'MetalIconFactory', 'MetalIconFactory.FileIcon16',
        +            'MetalIconFactory.FolderIcon16',
        +            'MetalIconFactory.PaletteCloseIcon',
        +            'MetalIconFactory.TreeControlIcon',
        +            'MetalIconFactory.TreeFolderIcon',
        +            'MetalIconFactory.TreeLeafIcon',
        +            'MetalInternalFrameTitlePane',
        +            'MetalInternalFrameUI', 'MetalLabelUI',
        +            'MetalLookAndFeel', 'MetalPopupMenuSeparatorUI',
        +            'MetalProgressBarUI', 'MetalRadioButtonUI',
        +            'MetalScrollBarUI', 'MetalScrollButton',
        +            'MetalScrollPaneUI', 'MetalSeparatorUI',
        +            'MetalSliderUI', 'MetalSplitPaneUI',
        +            'MetalTabbedPaneUI', 'MetalTextFieldUI',
        +            'MetalTheme', 'MetalToggleButtonUI',
        +            'MetalToolBarUI', 'MetalToolTipUI', 'MetalTreeUI',
        +            'MetaMessage', 'Method', 'MethodDescriptor',
        +            'MidiChannel', 'MidiDevice', 'MidiDevice.Info',
        +            'MidiDeviceProvider', 'MidiEvent', 'MidiFileFormat',
        +            'MidiFileReader', 'MidiFileWriter', 'MidiMessage',
        +            'MidiSystem', 'MidiUnavailableException',
        +            'MimeTypeParseException', 'MinimalHTMLWriter',
        +            'MissingResourceException', 'Mixer', 'Mixer.Info',
        +            'MixerProvider', 'ModificationItem', 'Modifier',
        +            'MouseAdapter', 'MouseDragGestureRecognizer',
        +            'MouseEvent', 'MouseInputAdapter',
        +            'MouseInputListener', 'MouseListener',
        +            'MouseMotionAdapter', 'MouseMotionListener',
        +            'MultiButtonUI', 'MulticastSocket',
        +            'MultiColorChooserUI', 'MultiComboBoxUI',
        +            'MultiDesktopIconUI', 'MultiDesktopPaneUI',
        +            'MultiFileChooserUI', 'MultiInternalFrameUI',
        +            'MultiLabelUI', 'MultiListUI', 'MultiLookAndFeel',
        +            'MultiMenuBarUI', 'MultiMenuItemUI',
        +            'MultiOptionPaneUI', 'MultiPanelUI',
        +            'MultiPixelPackedSampleModel', 'MultipleMaster',
        +            'MultiPopupMenuUI', 'MultiProgressBarUI',
        +            'MultiScrollBarUI', 'MultiScrollPaneUI',
        +            'MultiSeparatorUI', 'MultiSliderUI',
        +            'MultiSplitPaneUI', 'MultiTabbedPaneUI',
        +            'MultiTableHeaderUI', 'MultiTableUI', 'MultiTextUI',
        +            'MultiToolBarUI', 'MultiToolTipUI', 'MultiTreeUI',
        +            'MultiViewportUI', 'MutableAttributeSet',
        +            'MutableComboBoxModel', 'MutableTreeNode', 'Name',
        +            'NameAlreadyBoundException', 'NameClassPair',
        +            'NameComponent', 'NameComponentHelper',
        +            'NameComponentHolder', 'NamedValue', 'NameHelper',
        +            'NameHolder', 'NameNotFoundException', 'NameParser',
        +            'NamespaceChangeListener', 'NameValuePair',
        +            'NameValuePairHelper', 'Naming', 'NamingContext',
        +            'NamingContextHelper', 'NamingContextHolder',
        +            'NamingContextOperations', 'NamingEnumeration',
        +            'NamingEvent', 'NamingException',
        +            'NamingExceptionEvent', 'NamingListener',
        +            'NamingManager', 'NamingSecurityException',
        +            'NegativeArraySizeException', 'NetPermission',
        +            'NoClassDefFoundError', 'NoInitialContextException',
        +            'NoninvertibleTransformException',
        +            'NoPermissionException', 'NoRouteToHostException',
        +            'NoSuchAlgorithmException',
        +            'NoSuchAttributeException', 'NoSuchElementException',
        +            'NoSuchFieldError', 'NoSuchFieldException',
        +            'NoSuchMethodError', 'NoSuchMethodException',
        +            'NoSuchObjectException', 'NoSuchProviderException',
        +            'NotActiveException', 'NotBoundException',
        +            'NotContextException', 'NotEmpty', 'NotEmptyHelper',
        +            'NotEmptyHolder', 'NotFound', 'NotFoundHelper',
        +            'NotFoundHolder', 'NotFoundReason',
        +            'NotFoundReasonHelper', 'NotFoundReasonHolder',
        +            'NotOwnerException', 'NotSerializableException',
        +            'NO_IMPLEMENT', 'NO_MEMORY', 'NO_PERMISSION',
        +            'NO_RESOURCES', 'NO_RESPONSE',
        +            'NullPointerException', 'Number', 'NumberFormat',
        +            'NumberFormatException', 'NVList', 'Object',
        +            'ObjectChangeListener', 'ObjectFactory',
        +            'ObjectFactoryBuilder', 'ObjectHelper',
        +            'ObjectHolder', 'ObjectImpl',
        +            'ObjectInput', 'ObjectInputStream',
        +            'ObjectInputStream.GetField',
        +            'ObjectInputValidation', 'ObjectOutput',
        +            'ObjectOutputStream', 'ObjectOutputStream.PutField',
        +            'ObjectStreamClass', 'ObjectStreamConstants',
        +            'ObjectStreamException', 'ObjectStreamField',
        +            'ObjectView', 'OBJECT_NOT_EXIST', 'ObjID',
        +            'OBJ_ADAPTER', 'Observable', 'Observer',
        +            'OctetSeqHelper', 'OctetSeqHolder', 'OMGVMCID',
        +            'OpenType', 'Operation',
        +            'OperationNotSupportedException', 'Option',
        +            'OptionalDataException', 'OptionPaneUI', 'ORB',
        +            'OutOfMemoryError', 'OutputStream',
        +            'OutputStreamWriter', 'OverlayLayout', 'Owner',
        +            'Package', 'PackedColorModel', 'Pageable',
        +            'PageAttributes', 'PageAttributes.ColorType',
        +            'PageAttributes.MediaType',
        +            'PageAttributes.OrientationRequestedType',
        +            'PageAttributes.OriginType',
        +            'PageAttributes.PrintQualityType', 'PageFormat',
        +            'Paint', 'PaintContext', 'PaintEvent', 'Panel',
        +            'PanelUI', 'Paper', 'ParagraphView',
        +            'ParameterBlock', 'ParameterDescriptor',
        +            'ParseException', 'ParsePosition', 'Parser',
        +            'ParserDelegator', 'PartialResultException',
        +            'PasswordAuthentication', 'PasswordView', 'Patch',
        +            'PathIterator', 'Permission',
        +            'PermissionCollection', 'Permissions',
        +            'PERSIST_STORE', 'PhantomReference',
        +            'PipedInputStream', 'PipedOutputStream',
        +            'PipedReader', 'PipedWriter', 'PixelGrabber',
        +            'PixelInterleavedSampleModel', 'PKCS8EncodedKeySpec',
        +            'PlainDocument', 'PlainView', 'Point', 'Point2D',
        +            'Point2D.Double', 'Point2D.Float', 'Policy',
        +            'PolicyError', 'PolicyHelper',
        +            'PolicyHolder', 'PolicyListHelper',
        +            'PolicyListHolder', 'PolicyOperations',
        +            'PolicyTypeHelper', 'Polygon', 'PopupMenu',
        +            'PopupMenuEvent', 'PopupMenuListener', 'PopupMenuUI',
        +            'Port', 'Port.Info', 'PortableRemoteObject',
        +            'PortableRemoteObjectDelegate', 'Position',
        +            'Position.Bias', 'PreparedStatement', 'Principal',
        +            'PrincipalHolder', 'Printable',
        +            'PrinterAbortException', 'PrinterException',
        +            'PrinterGraphics', 'PrinterIOException',
        +            'PrinterJob', 'PrintGraphics', 'PrintJob',
        +            'PrintStream', 'PrintWriter', 'PrivateKey',
        +            'PRIVATE_MEMBER', 'PrivilegedAction',
        +            'PrivilegedActionException',
        +            'PrivilegedExceptionAction', 'Process',
        +            'ProfileDataException', 'ProgressBarUI',
        +            'ProgressMonitor', 'ProgressMonitorInputStream',
        +            'Properties', 'PropertyChangeEvent',
        +            'PropertyChangeListener', 'PropertyChangeSupport',
        +            'PropertyDescriptor', 'PropertyEditor',
        +            'PropertyEditorManager', 'PropertyEditorSupport',
        +            'PropertyPermission', 'PropertyResourceBundle',
        +            'PropertyVetoException', 'ProtectionDomain',
        +            'ProtocolException', 'Provider', 'ProviderException',
        +            'Proxy', 'PublicKey', 'PUBLIC_MEMBER',
        +            'PushbackInputStream', 'PushbackReader',
        +            'QuadCurve2D', 'QuadCurve2D.Double',
        +            'QuadCurve2D.Float', 'Random', 'RandomAccessFile',
        +            'Raster', 'RasterFormatException', 'RasterOp',
        +            'Reader', 'Receiver', 'Rectangle', 'Rectangle2D',
        +            'Rectangle2D.Double', 'Rectangle2D.Float',
        +            'RectangularShape', 'Ref', 'RefAddr', 'Reference',
        +            'Referenceable', 'ReferenceQueue',
        +            'ReferralException', 'ReflectPermission', 'Registry',
        +            'RegistryHandler', 'RemarshalException', 'Remote',
        +            'RemoteCall', 'RemoteException', 'RemoteObject',
        +            'RemoteRef', 'RemoteServer', 'RemoteStub',
        +            'RenderableImage', 'RenderableImageOp',
        +            'RenderableImageProducer', 'RenderContext',
        +            'RenderedImage', 'RenderedImageFactory', 'Renderer',
        +            'RenderingHints', 'RenderingHints.Key',
        +            'RepaintManager', 'ReplicateScaleFilter',
        +            'Repository', 'RepositoryIdHelper', 'Request',
        +            'RescaleOp', 'Resolver', 'ResolveResult',
        +            'ResourceBundle', 'ResponseHandler', 'ResultSet',
        +            'ResultSetMetaData', 'ReverbType', 'RGBImageFilter',
        +            'RMIClassLoader', 'RMIClientSocketFactory',
        +            'RMIFailureHandler', 'RMISecurityException',
        +            'RMISecurityManager', 'RMIServerSocketFactory',
        +            'RMISocketFactory', 'Robot', 'RootPaneContainer',
        +            'RootPaneUI', 'RoundRectangle2D',
        +            'RoundRectangle2D.Double', 'RoundRectangle2D.Float',
        +            'RowMapper', 'RSAKey', 'RSAKeyGenParameterSpec',
        +            'RSAPrivateCrtKey', 'RSAPrivateCrtKeySpec',
        +            'RSAPrivateKey', 'RSAPrivateKeySpec', 'RSAPublicKey',
        +            'RSAPublicKeySpec', 'RTFEditorKit',
        +            'RuleBasedCollator', 'Runnable', 'RunTime',
        +            'Runtime', 'RuntimeException', 'RunTimeOperations',
        +            'RuntimePermission', 'SampleModel',
        +            'SchemaViolationException', 'Scrollable',
        +            'Scrollbar', 'ScrollBarUI', 'ScrollPane',
        +            'ScrollPaneConstants', 'ScrollPaneLayout',
        +            'ScrollPaneLayout.UIResource', 'ScrollPaneUI',
        +            'SearchControls', 'SearchResult',
        +            'SecureClassLoader', 'SecureRandom',
        +            'SecureRandomSpi', 'Security', 'SecurityException',
        +            'SecurityManager', 'SecurityPermission', 'Segment',
        +            'SeparatorUI', 'Sequence', 'SequenceInputStream',
        +            'Sequencer', 'Sequencer.SyncMode', 'Serializable',
        +            'SerializablePermission', 'ServantObject',
        +            'ServerCloneException', 'ServerError',
        +            'ServerException', 'ServerNotActiveException',
        +            'ServerRef', 'ServerRequest',
        +            'ServerRuntimeException', 'ServerSocket',
        +            'ServiceDetail', 'ServiceDetailHelper',
        +            'ServiceInformation', 'ServiceInformationHelper',
        +            'ServiceInformationHolder',
        +            'ServiceUnavailableException', 'Set',
        +            'SetOverrideType', 'SetOverrideTypeHelper', 'Shape',
        +            'ShapeGraphicAttribute', 'Short', 'ShortHolder',
        +            'ShortLookupTable', 'ShortMessage', 'ShortSeqHelper',
        +            'ShortSeqHolder', 'Signature', 'SignatureException',
        +            'SignatureSpi', 'SignedObject', 'Signer',
        +            'SimpleAttributeSet', 'SimpleBeanInfo',
        +            'SimpleDateFormat', 'SimpleTimeZone',
        +            'SinglePixelPackedSampleModel',
        +            'SingleSelectionModel', 'SizeLimitExceededException',
        +            'SizeRequirements', 'SizeSequence', 'Skeleton',
        +            'SkeletonMismatchException',
        +            'SkeletonNotFoundException', 'SliderUI', 'Socket',
        +            'SocketException', 'SocketImpl', 'SocketImplFactory',
        +            'SocketOptions', 'SocketPermission',
        +            'SocketSecurityException', 'SoftBevelBorder',
        +            'SoftReference', 'SortedMap', 'SortedSet',
        +            'Soundbank', 'SoundbankReader', 'SoundbankResource',
        +            'SourceDataLine', 'SplitPaneUI', 'SQLData',
        +            'SQLException', 'SQLInput', 'SQLOutput',
        +            'SQLPermission', 'SQLWarning', 'Stack',
        +            'StackOverflowError', 'StateEdit', 'StateEditable',
        +            'StateFactory', 'Statement', 'Streamable',
        +            'StreamableValue', 'StreamCorruptedException',
        +            'StreamTokenizer', 'StrictMath', 'String',
        +            'StringBuffer', 'StringBufferInputStream',
        +            'StringCharacterIterator', 'StringContent',
        +            'StringHolder', 'StringIndexOutOfBoundsException',
        +            'StringReader', 'StringRefAddr', 'StringSelection',
        +            'StringTokenizer', 'StringValueHelper',
        +            'StringWriter', 'Stroke', 'Struct', 'StructMember',
        +            'StructMemberHelper', 'Stub', 'StubDelegate',
        +            'StubNotFoundException', 'Style', 'StyleConstants',
        +            'StyleConstants.CharacterConstants',
        +            'StyleConstants.ColorConstants',
        +            'StyleConstants.FontConstants',
        +            'StyleConstants.ParagraphConstants', 'StyleContext',
        +            'StyledDocument', 'StyledEditorKit',
        +            'StyledEditorKit.AlignmentAction',
        +            'StyledEditorKit.BoldAction',
        +            'StyledEditorKit.FontFamilyAction',
        +            'StyledEditorKit.FontSizeAction',
        +            'StyledEditorKit.ForegroundAction',
        +            'StyledEditorKit.ItalicAction',
        +            'StyledEditorKit.StyledTextAction',
        +            'StyledEditorKit.UnderlineAction', 'StyleSheet',
        +            'StyleSheet.BoxPainter', 'StyleSheet.ListPainter',
        +            'SwingConstants', 'SwingPropertyChangeSupport',
        +            'SwingUtilities', 'SyncFailedException',
        +            'Synthesizer', 'SysexMessage', 'System',
        +            'SystemColor', 'SystemException', 'SystemFlavorMap',
        +            'TabableView', 'TabbedPaneUI', 'TabExpander',
        +            'TableCellEditor', 'TableCellRenderer',
        +            'TableColumn', 'TableColumnModel',
        +            'TableColumnModelEvent', 'TableColumnModelListener',
        +            'TableHeaderUI', 'TableModel', 'TableModelEvent',
        +            'TableModelListener', 'TableUI', 'TableView',
        +            'TabSet', 'TabStop', 'TagElement', 'TargetDataLine',
        +            'TCKind', 'TextAction', 'TextArea', 'TextAttribute',
        +            'TextComponent', 'TextEvent', 'TextField',
        +            'TextHitInfo', 'TextLayout',
        +            'TextLayout.CaretPolicy', 'TextListener',
        +            'TextMeasurer', 'TextUI', 'TexturePaint', 'Thread',
        +            'ThreadDeath', 'ThreadGroup', 'ThreadLocal',
        +            'Throwable', 'Tie', 'TileObserver', 'Time',
        +            'TimeLimitExceededException', 'Timer',
        +            'TimerTask', 'Timestamp', 'TimeZone', 'TitledBorder',
        +            'ToolBarUI', 'Toolkit', 'ToolTipManager',
        +            'ToolTipUI', 'TooManyListenersException', 'Track',
        +            'TransactionRequiredException',
        +            'TransactionRolledbackException',
        +            'TRANSACTION_REQUIRED', 'TRANSACTION_ROLLEDBACK',
        +            'Transferable', 'TransformAttribute', 'TRANSIENT',
        +            'Transmitter', 'Transparency', 'TreeCellEditor',
        +            'TreeCellRenderer', 'TreeExpansionEvent',
        +            'TreeExpansionListener', 'TreeMap', 'TreeModel',
        +            'TreeModelEvent', 'TreeModelListener', 'TreeNode',
        +            'TreePath', 'TreeSelectionEvent',
        +            'TreeSelectionListener', 'TreeSelectionModel',
        +            'TreeSet', 'TreeUI', 'TreeWillExpandListener',
        +            'TypeCode', 'TypeCodeHolder', 'TypeMismatch',
        +            'Types', 'UID', 'UIDefaults',
        +            'UIDefaults.ActiveValue', 'UIDefaults.LazyInputMap',
        +            'UIDefaults.LazyValue', 'UIDefaults.ProxyLazyValue',
        +            'UIManager', 'UIManager.LookAndFeelInfo',
        +            'UIResource', 'ULongLongSeqHelper',
        +            'ULongLongSeqHolder', 'ULongSeqHelper',
        +            'ULongSeqHolder', 'UndeclaredThrowableException',
        +            'UndoableEdit', 'UndoableEditEvent',
        +            'UndoableEditListener', 'UndoableEditSupport',
        +            'UndoManager', 'UnexpectedException',
        +            'UnicastRemoteObject', 'UnionMember',
        +            'UnionMemberHelper', 'UNKNOWN', 'UnknownError',
        +            'UnknownException', 'UnknownGroupException',
        +            'UnknownHostException',
        +            'UnknownObjectException', 'UnknownServiceException',
        +            'UnknownUserException', 'UnmarshalException',
        +            'UnrecoverableKeyException', 'Unreferenced',
        +            'UnresolvedPermission', 'UnsatisfiedLinkError',
        +            'UnsolicitedNotification',
        +            'UnsolicitedNotificationEvent',
        +            'UnsolicitedNotificationListener',
        +            'UnsupportedAudioFileException',
        +            'UnsupportedClassVersionError',
        +            'UnsupportedEncodingException',
        +            'UnsupportedFlavorException',
        +            'UnsupportedLookAndFeelException',
        +            'UnsupportedOperationException',
        +            'UNSUPPORTED_POLICY', 'UNSUPPORTED_POLICY_VALUE',
        +            'URL', 'URLClassLoader', 'URLConnection',
        +            'URLDecoder', 'URLEncoder', 'URLStreamHandler',
        +            'URLStreamHandlerFactory', 'UserException',
        +            'UShortSeqHelper', 'UShortSeqHolder',
        +            'UTFDataFormatException', 'Util', 'UtilDelegate',
        +            'Utilities', 'ValueBase', 'ValueBaseHelper',
        +            'ValueBaseHolder', 'ValueFactory', 'ValueHandler',
        +            'ValueMember', 'ValueMemberHelper',
        +            'VariableHeightLayoutCache', 'Vector', 'VerifyError',
        +            'VersionSpecHelper', 'VetoableChangeListener',
        +            'VetoableChangeSupport', 'View', 'ViewFactory',
        +            'ViewportLayout', 'ViewportUI',
        +            'VirtualMachineError', 'Visibility',
        +            'VisibilityHelper', 'VMID', 'VM_ABSTRACT',
        +            'VM_CUSTOM', 'VM_NONE', 'VM_TRUNCATABLE',
        +            'VoiceStatus', 'Void', 'WCharSeqHelper',
        +            'WCharSeqHolder', 'WeakHashMap', 'WeakReference',
        +            'Window', 'WindowAdapter', 'WindowConstants',
        +            'WindowEvent', 'WindowListener', 'WrappedPlainView',
        +            'WritableRaster', 'WritableRenderedImage',
        +            'WriteAbortedException', 'Writer',
        +            'WrongTransaction', 'WStringValueHelper',
        +            'X509Certificate', 'X509CRL', 'X509CRLEntry',
        +            'X509EncodedKeySpec', 'X509Extension', 'ZipEntry',
        +            'ZipException', 'ZipFile', 'ZipInputStream',
        +            'ZipOutputStream', 'ZoneView',
        +            '_BindingIteratorImplBase', '_BindingIteratorStub',
        +            '_IDLTypeStub', '_NamingContextImplBase',
        +            '_NamingContextStub', '_PolicyStub', '_Remote_Stub'
        +            ),
        +        4 => array(
        +            'void', 'double', 'int', 'boolean', 'byte', 'short', 'long', 'char', 'float'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}',
        +        '+', '-', '*', '/', '%',
        +        '!', '&', '|', '^',
        +        '<', '>', '=',
        +        '?', ':', ';',
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => true,
        +        4 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000000; font-weight: bold;',
        +            2 => 'color: #000066; font-weight: bold;',
        +            3 => 'color: #003399;',
        +            4 => 'color: #000066; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            2 => 'color: #006699;',
        +            3 => 'color: #008000; font-style: italic; font-weight: bold;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006633;',
        +            2 => 'color: #006633;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => 'http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+{FNAMEL}',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/java5.php b/includes/geshi/java5.php
        new file mode 100644
        index 0000000..8f0d670
        --- /dev/null
        +++ b/includes/geshi/java5.php
        @@ -0,0 +1,1035 @@
        + 'Java(TM) 2 Platform Standard Edition 5.0',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        //Import and Package directives (Basic Support only)
        +        2 => '/(?:(?<=import[\\n\\s](?!static))|(?<=import[\\n\\s]static[\\n\\s])|(?<=package[\\n\\s]))[\\n\\s]*([a-zA-Z0-9_]+\\.)*([a-zA-Z0-9_]+|\*)(?=[\n\s;])/i',
        +        // javadoc comments
        +        3 => '#/\*\*(?![\*\/]).*\*/#sU'
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            /* see the authoritative list of all 50 Java keywords at */
        +            /* http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#229308 */
        +
        +            /* java keywords, part 1: control flow */
        +            'case', 'default', 'do', 'else', 'for',
        +            'goto', 'if', 'switch', 'while'
        +
        +            /* IMO 'break', 'continue', 'return' and 'throw' */
        +                        /* should also be added to this group, as they   */
        +            /* also manage the control flow,                 */
        +            /* arguably 'try'/'catch'/'finally' as well      */
        +            ),
        +        2 => array(
        +            /* java keywords, part 2 */
        +
        +            'break', 'continue', 'return', 'throw',
        +            'try', 'catch', 'finally',
        +
        +            'abstract', 'assert', 'class', 'const', 'enum', 'extends',
        +            'final', 'implements', 'import', 'instanceof', 'interface',
        +            'native', 'new', 'package', 'private', 'protected',
        +            'public', 'static', 'strictfp', 'super', 'synchronized',
        +            'this', 'throws', 'transient', 'volatile'
        +            ),
        +        3 => array(
        +            /* Java keywords, part 3: primitive data types and 'void' */
        +            'boolean', 'byte', 'char', 'double',
        +            'float', 'int', 'long', 'short', 'void'
        +            ),
        +        4 => array(
        +            /* other reserved words in Java: literals */
        +            /* should be styled to look similar to numbers and Strings */
        +            'false', 'null', 'true'
        +            ),
        +        5 => array (
        +            'Applet', 'AppletContext', 'AppletStub', 'AudioClip'
        +            ),
        +        6 => array (
        +            'AWTError', 'AWTEvent', 'AWTEventMulticaster', 'AWTException', 'AWTKeyStroke', 'AWTPermission', 'ActiveEvent', 'Adjustable', 'AlphaComposite', 'BasicStroke', 'BorderLayout', 'BufferCapabilities', 'BufferCapabilities.FlipContents', 'Button', 'Canvas', 'CardLayout', 'Checkbox', 'CheckboxGroup', 'CheckboxMenuItem', 'Choice', 'Color', 'Component', 'ComponentOrientation', 'Composite', 'CompositeContext', 'Container', 'ContainerOrderFocusTraversalPolicy', 'Cursor', 'DefaultFocusTraversalPolicy', 'DefaultKeyboardFocusManager', 'Dialog', 'Dimension', 'DisplayMode', 'EventQueue', 'FileDialog', 'FlowLayout', 'FocusTraversalPolicy', 'Font', 'FontFormatException', 'FontMetrics', 'Frame', 'GradientPaint', 'Graphics', 'Graphics2D', 'GraphicsConfigTemplate', 'GraphicsConfiguration', 'GraphicsDevice', 'GraphicsEnvironment', 'GridBagConstraints', 'GridBagLayout', 'GridLayout', 'HeadlessException', 'IllegalComponentStateException', 'Image', 'ImageCapabilities', 'Insets', 'ItemSelectable', 'JobAttributes',
        +            'JobAttributes.DefaultSelectionType', 'JobAttributes.DestinationType', 'JobAttributes.DialogType', 'JobAttributes.MultipleDocumentHandlingType', 'JobAttributes.SidesType', 'KeyEventDispatcher', 'KeyEventPostProcessor', 'KeyboardFocusManager', 'Label', 'LayoutManager', 'LayoutManager2', 'MediaTracker', 'Menu', 'MenuBar', 'MenuComponent', 'MenuContainer', 'MenuItem', 'MenuShortcut', 'MouseInfo', 'PageAttributes', 'PageAttributes.ColorType', 'PageAttributes.MediaType', 'PageAttributes.OrientationRequestedType', 'PageAttributes.OriginType', 'PageAttributes.PrintQualityType', 'Paint', 'PaintContext', 'Panel', 'Point', 'PointerInfo', 'Polygon', 'PopupMenu', 'PrintGraphics', 'PrintJob', 'Rectangle', 'RenderingHints', 'RenderingHints.Key', 'Robot', 'ScrollPane', 'ScrollPaneAdjustable', 'Scrollbar', 'Shape', 'Stroke', 'SystemColor', 'TextArea', 'TextComponent', 'TextField', 'TexturePaint', 'Toolkit', 'Transparency', 'Window'
        +            ),
        +        7 => array (
        +            'CMMException', 'ColorSpace', 'ICC_ColorSpace', 'ICC_Profile', 'ICC_ProfileGray', 'ICC_ProfileRGB', 'ProfileDataException'
        +            ),
        +        8 => array (
        +            'Clipboard', 'ClipboardOwner', 'DataFlavor', 'FlavorEvent', 'FlavorListener', 'FlavorMap', 'FlavorTable', 'MimeTypeParseException', 'StringSelection', 'SystemFlavorMap', 'Transferable', 'UnsupportedFlavorException'
        +            ),
        +        9 => array (
        +            'Autoscroll', 'DnDConstants', 'DragGestureEvent', 'DragGestureListener', 'DragGestureRecognizer', 'DragSource', 'DragSourceAdapter', 'DragSourceContext', 'DragSourceDragEvent', 'DragSourceDropEvent', 'DragSourceEvent', 'DragSourceListener', 'DragSourceMotionListener', 'DropTarget', 'DropTarget.DropTargetAutoScroller', 'DropTargetAdapter', 'DropTargetContext', 'DropTargetDragEvent', 'DropTargetDropEvent', 'DropTargetEvent', 'DropTargetListener', 'InvalidDnDOperationException', 'MouseDragGestureRecognizer'
        +            ),
        +        10 => array (
        +            'AWTEventListener', 'AWTEventListenerProxy', 'ActionEvent', 'ActionListener', 'AdjustmentEvent', 'AdjustmentListener', 'ComponentAdapter', 'ComponentEvent', 'ComponentListener', 'ContainerAdapter', 'ContainerEvent', 'ContainerListener', 'FocusAdapter', 'FocusEvent', 'FocusListener', 'HierarchyBoundsAdapter', 'HierarchyBoundsListener', 'HierarchyEvent', 'HierarchyListener', 'InputEvent', 'InputMethodEvent', 'InputMethodListener', 'InvocationEvent', 'ItemEvent', 'ItemListener', 'KeyAdapter', 'KeyEvent', 'KeyListener', 'MouseAdapter', 'MouseListener', 'MouseMotionAdapter', 'MouseMotionListener', 'MouseWheelEvent', 'MouseWheelListener', 'PaintEvent', 'TextEvent', 'TextListener', 'WindowAdapter', 'WindowEvent', 'WindowFocusListener', 'WindowListener', 'WindowStateListener'
        +            ),
        +        11 => array (
        +            'FontRenderContext', 'GlyphJustificationInfo', 'GlyphMetrics', 'GlyphVector', 'GraphicAttribute', 'ImageGraphicAttribute', 'LineBreakMeasurer', 'LineMetrics', 'MultipleMaster', 'NumericShaper', 'ShapeGraphicAttribute', 'TextAttribute', 'TextHitInfo', 'TextLayout', 'TextLayout.CaretPolicy', 'TextMeasurer', 'TransformAttribute'
        +            ),
        +        12 => array (
        +            'AffineTransform', 'Arc2D', 'Arc2D.Double', 'Arc2D.Float', 'Area', 'CubicCurve2D', 'CubicCurve2D.Double', 'CubicCurve2D.Float', 'Dimension2D', 'Ellipse2D', 'Ellipse2D.Double', 'Ellipse2D.Float', 'FlatteningPathIterator', 'GeneralPath', 'IllegalPathStateException', 'Line2D', 'Line2D.Double', 'Line2D.Float', 'NoninvertibleTransformException', 'PathIterator', 'Point2D', 'Point2D.Double', 'Point2D.Float', 'QuadCurve2D', 'QuadCurve2D.Double', 'QuadCurve2D.Float', 'Rectangle2D', 'Rectangle2D.Double', 'Rectangle2D.Float', 'RectangularShape', 'RoundRectangle2D', 'RoundRectangle2D.Double', 'RoundRectangle2D.Float'
        +            ),
        +        13 => array (
        +            'InputContext', 'InputMethodHighlight', 'InputMethodRequests', 'InputSubset'
        +            ),
        +        14 => array (
        +            'InputMethod', 'InputMethodContext', 'InputMethodDescriptor'
        +            ),
        +        15 => array (
        +            'AffineTransformOp', 'AreaAveragingScaleFilter', 'BandCombineOp', 'BandedSampleModel', 'BufferStrategy', 'BufferedImage', 'BufferedImageFilter', 'BufferedImageOp', 'ByteLookupTable', 'ColorConvertOp', 'ColorModel', 'ComponentColorModel', 'ComponentSampleModel', 'ConvolveOp', 'CropImageFilter', 'DataBuffer', 'DataBufferByte', 'DataBufferDouble', 'DataBufferFloat', 'DataBufferInt', 'DataBufferShort', 'DataBufferUShort', 'DirectColorModel', 'FilteredImageSource', 'ImageConsumer', 'ImageFilter', 'ImageObserver', 'ImageProducer', 'ImagingOpException', 'IndexColorModel', 'Kernel', 'LookupOp', 'LookupTable', 'MemoryImageSource', 'MultiPixelPackedSampleModel', 'PackedColorModel', 'PixelGrabber', 'PixelInterleavedSampleModel', 'RGBImageFilter', 'Raster', 'RasterFormatException', 'RasterOp', 'RenderedImage', 'ReplicateScaleFilter', 'RescaleOp', 'SampleModel', 'ShortLookupTable', 'SinglePixelPackedSampleModel', 'TileObserver', 'VolatileImage', 'WritableRaster', 'WritableRenderedImage'
        +            ),
        +        16 => array (
        +            'ContextualRenderedImageFactory', 'ParameterBlock', 'RenderContext', 'RenderableImage', 'RenderableImageOp', 'RenderableImageProducer', 'RenderedImageFactory'
        +            ),
        +        17 => array (
        +            'Book', 'PageFormat', 'Pageable', 'Paper', 'Printable', 'PrinterAbortException', 'PrinterException', 'PrinterGraphics', 'PrinterIOException', 'PrinterJob'
        +            ),
        +        18 => array (
        +            'AppletInitializer', 'BeanDescriptor', 'BeanInfo', 'Beans', 'Customizer', 'DefaultPersistenceDelegate', 'DesignMode', 'Encoder', 'EventHandler', 'EventSetDescriptor', 'ExceptionListener', 'Expression', 'FeatureDescriptor', 'IndexedPropertyChangeEvent', 'IndexedPropertyDescriptor', 'Introspector', 'MethodDescriptor', 'ParameterDescriptor', 'PersistenceDelegate', 'PropertyChangeEvent', 'PropertyChangeListener', 'PropertyChangeListenerProxy', 'PropertyChangeSupport', 'PropertyDescriptor', 'PropertyEditor', 'PropertyEditorManager', 'PropertyEditorSupport', 'PropertyVetoException', 'SimpleBeanInfo', 'VetoableChangeListener', 'VetoableChangeListenerProxy', 'VetoableChangeSupport', 'Visibility', 'XMLDecoder', 'XMLEncoder'
        +            ),
        +        19 => array (
        +            'BeanContext', 'BeanContextChild', 'BeanContextChildComponentProxy', 'BeanContextChildSupport', 'BeanContextContainerProxy', 'BeanContextEvent', 'BeanContextMembershipEvent', 'BeanContextMembershipListener', 'BeanContextProxy', 'BeanContextServiceAvailableEvent', 'BeanContextServiceProvider', 'BeanContextServiceProviderBeanInfo', 'BeanContextServiceRevokedEvent', 'BeanContextServiceRevokedListener', 'BeanContextServices', 'BeanContextServicesListener', 'BeanContextServicesSupport', 'BeanContextServicesSupport.BCSSServiceProvider', 'BeanContextSupport', 'BeanContextSupport.BCSIterator'
        +            ),
        +        20 => array (
        +            'BufferedInputStream', 'BufferedOutputStream', 'BufferedReader', 'BufferedWriter', 'ByteArrayInputStream', 'ByteArrayOutputStream', 'CharArrayReader', 'CharArrayWriter', 'CharConversionException', 'Closeable', 'DataInput', 'DataOutput', 'EOFException', 'Externalizable', 'File', 'FileDescriptor', 'FileInputStream', 'FileNotFoundException', 'FileOutputStream', 'FilePermission', 'FileReader', 'FileWriter', 'FilenameFilter', 'FilterInputStream', 'FilterOutputStream', 'FilterReader', 'FilterWriter', 'Flushable', 'IOException', 'InputStreamReader', 'InterruptedIOException', 'InvalidClassException', 'InvalidObjectException', 'LineNumberInputStream', 'LineNumberReader', 'NotActiveException', 'NotSerializableException', 'ObjectInput', 'ObjectInputStream', 'ObjectInputStream.GetField', 'ObjectInputValidation', 'ObjectOutput', 'ObjectOutputStream', 'ObjectOutputStream.PutField', 'ObjectStreamClass', 'ObjectStreamConstants', 'ObjectStreamException', 'ObjectStreamField', 'OptionalDataException', 'OutputStreamWriter',
        +            'PipedInputStream', 'PipedOutputStream', 'PipedReader', 'PipedWriter', 'PrintStream', 'PrintWriter', 'PushbackInputStream', 'PushbackReader', 'RandomAccessFile', 'Reader', 'SequenceInputStream', 'Serializable', 'SerializablePermission', 'StreamCorruptedException', 'StreamTokenizer', 'StringBufferInputStream', 'StringReader', 'StringWriter', 'SyncFailedException', 'UTFDataFormatException', 'UnsupportedEncodingException', 'WriteAbortedException', 'Writer'
        +            ),
        +        21 => array (
        +            'AbstractMethodError', 'Appendable', 'ArithmeticException', 'ArrayIndexOutOfBoundsException', 'ArrayStoreException', 'AssertionError', 'Boolean', 'Byte', 'CharSequence', 'Character', 'Character.Subset', 'Character.UnicodeBlock', 'Class', 'ClassCastException', 'ClassCircularityError', 'ClassFormatError', 'ClassLoader', 'ClassNotFoundException', 'CloneNotSupportedException', 'Cloneable', 'Comparable', 'Compiler', 'Deprecated', 'Double', 'Enum', 'EnumConstantNotPresentException', 'Error', 'Exception', 'ExceptionInInitializerError', 'Float', 'IllegalAccessError', 'IllegalAccessException', 'IllegalArgumentException', 'IllegalMonitorStateException', 'IllegalStateException', 'IllegalThreadStateException', 'IncompatibleClassChangeError', 'IndexOutOfBoundsException', 'InheritableThreadLocal', 'InstantiationError', 'InstantiationException', 'Integer', 'InternalError', 'InterruptedException', 'Iterable', 'LinkageError', 'Long', 'Math', 'NegativeArraySizeException', 'NoClassDefFoundError', 'NoSuchFieldError',
        +            'NoSuchFieldException', 'NoSuchMethodError', 'NoSuchMethodException', 'NullPointerException', 'Number', 'NumberFormatException', 'OutOfMemoryError', 'Override', 'Package', 'Process', 'ProcessBuilder', 'Readable', 'Runnable', 'Runtime', 'RuntimeException', 'RuntimePermission', 'SecurityException', 'SecurityManager', 'Short', 'StackOverflowError', 'StackTraceElement', 'StrictMath', 'String', 'StringBuffer', 'StringBuilder', 'StringIndexOutOfBoundsException', 'SuppressWarnings', 'System', 'Thread', 'Thread.State', 'Thread.UncaughtExceptionHandler', 'ThreadDeath', 'ThreadGroup', 'ThreadLocal', 'Throwable', 'TypeNotPresentException', 'UnknownError', 'UnsatisfiedLinkError', 'UnsupportedClassVersionError', 'UnsupportedOperationException', 'VerifyError', 'VirtualMachineError', 'Void'
        +            ),
        +        22 => array (
        +            'AnnotationFormatError', 'AnnotationTypeMismatchException', 'Documented', 'ElementType', 'IncompleteAnnotationException', 'Inherited', 'Retention', 'RetentionPolicy', 'Target'
        +            ),
        +        23 => array (
        +            'ClassDefinition', 'ClassFileTransformer', 'IllegalClassFormatException', 'Instrumentation', 'UnmodifiableClassException'
        +            ),
        +        24 => array (
        +            'ClassLoadingMXBean', 'CompilationMXBean', 'GarbageCollectorMXBean', 'ManagementFactory', 'ManagementPermission', 'MemoryMXBean', 'MemoryManagerMXBean', 'MemoryNotificationInfo', 'MemoryPoolMXBean', 'MemoryType', 'MemoryUsage', 'OperatingSystemMXBean', 'RuntimeMXBean', 'ThreadInfo', 'ThreadMXBean'
        +            ),
        +        25 => array (
        +            'PhantomReference', 'ReferenceQueue', 'SoftReference', 'WeakReference'
        +            ),
        +        26 => array (
        +            'AccessibleObject', 'AnnotatedElement', 'Constructor', 'Field', 'GenericArrayType', 'GenericDeclaration', 'GenericSignatureFormatError', 'InvocationHandler', 'InvocationTargetException', 'MalformedParameterizedTypeException', 'Member', 'Method', 'Modifier', 'ParameterizedType', 'ReflectPermission', 'Type', 'TypeVariable', 'UndeclaredThrowableException', 'WildcardType'
        +            ),
        +        27 => array (
        +            'BigDecimal', 'BigInteger', 'MathContext', 'RoundingMode'
        +            ),
        +        28 => array (
        +            'Authenticator', 'Authenticator.RequestorType', 'BindException', 'CacheRequest', 'CacheResponse', 'ContentHandlerFactory', 'CookieHandler', 'DatagramPacket', 'DatagramSocket', 'DatagramSocketImpl', 'DatagramSocketImplFactory', 'FileNameMap', 'HttpRetryException', 'HttpURLConnection', 'Inet4Address', 'Inet6Address', 'InetAddress', 'InetSocketAddress', 'JarURLConnection', 'MalformedURLException', 'MulticastSocket', 'NetPermission', 'NetworkInterface', 'NoRouteToHostException', 'PasswordAuthentication', 'PortUnreachableException', 'ProtocolException', 'Proxy.Type', 'ProxySelector', 'ResponseCache', 'SecureCacheResponse', 'ServerSocket', 'Socket', 'SocketAddress', 'SocketException', 'SocketImpl', 'SocketImplFactory', 'SocketOptions', 'SocketPermission', 'SocketTimeoutException', 'URI', 'URISyntaxException', 'URL', 'URLClassLoader', 'URLConnection', 'URLDecoder', 'URLEncoder', 'URLStreamHandler', 'URLStreamHandlerFactory', 'UnknownServiceException'
        +            ),
        +        29 => array (
        +            'Buffer', 'BufferOverflowException', 'BufferUnderflowException', 'ByteBuffer', 'ByteOrder', 'CharBuffer', 'DoubleBuffer', 'FloatBuffer', 'IntBuffer', 'InvalidMarkException', 'LongBuffer', 'MappedByteBuffer', 'ReadOnlyBufferException', 'ShortBuffer'
        +            ),
        +        30 => array (
        +            'AlreadyConnectedException', 'AsynchronousCloseException', 'ByteChannel', 'CancelledKeyException', 'Channel', 'Channels', 'ClosedByInterruptException', 'ClosedChannelException', 'ClosedSelectorException', 'ConnectionPendingException', 'DatagramChannel', 'FileChannel', 'FileChannel.MapMode', 'FileLock', 'FileLockInterruptionException', 'GatheringByteChannel', 'IllegalBlockingModeException', 'IllegalSelectorException', 'InterruptibleChannel', 'NoConnectionPendingException', 'NonReadableChannelException', 'NonWritableChannelException', 'NotYetBoundException', 'NotYetConnectedException', 'OverlappingFileLockException', 'Pipe', 'Pipe.SinkChannel', 'Pipe.SourceChannel', 'ReadableByteChannel', 'ScatteringByteChannel', 'SelectableChannel', 'SelectionKey', 'Selector', 'ServerSocketChannel', 'SocketChannel', 'UnresolvedAddressException', 'UnsupportedAddressTypeException', 'WritableByteChannel'
        +            ),
        +        31 => array (
        +            'AbstractInterruptibleChannel', 'AbstractSelectableChannel', 'AbstractSelectionKey', 'AbstractSelector', 'SelectorProvider'
        +            ),
        +        32 => array (
        +            'CharacterCodingException', 'Charset', 'CharsetDecoder', 'CharsetEncoder', 'CoderMalfunctionError', 'CoderResult', 'CodingErrorAction', 'IllegalCharsetNameException', 'MalformedInputException', 'UnmappableCharacterException', 'UnsupportedCharsetException'
        +            ),
        +        33 => array (
        +            'CharsetProvider'
        +            ),
        +        34 => array (
        +            'AccessException', 'AlreadyBoundException', 'ConnectIOException', 'MarshalException', 'MarshalledObject', 'Naming', 'NoSuchObjectException', 'NotBoundException', 'RMISecurityException', 'RMISecurityManager', 'Remote', 'RemoteException', 'ServerError', 'ServerException', 'ServerRuntimeException', 'StubNotFoundException', 'UnexpectedException', 'UnmarshalException'
        +            ),
        +        35 => array (
        +            'Activatable', 'ActivateFailedException', 'ActivationDesc', 'ActivationException', 'ActivationGroup', 'ActivationGroupDesc', 'ActivationGroupDesc.CommandEnvironment', 'ActivationGroupID', 'ActivationGroup_Stub', 'ActivationID', 'ActivationInstantiator', 'ActivationMonitor', 'ActivationSystem', 'Activator', 'UnknownGroupException', 'UnknownObjectException'
        +            ),
        +        36 => array (
        +            'DGC', 'Lease', 'VMID'
        +            ),
        +        37 => array (
        +            'LocateRegistry', 'Registry', 'RegistryHandler'
        +            ),
        +        38 => array (
        +            'ExportException', 'LoaderHandler', 'LogStream', 'ObjID', 'Operation', 'RMIClassLoader', 'RMIClassLoaderSpi', 'RMIClientSocketFactory', 'RMIFailureHandler', 'RMIServerSocketFactory', 'RMISocketFactory', 'RemoteCall', 'RemoteObject', 'RemoteObjectInvocationHandler', 'RemoteRef', 'RemoteServer', 'RemoteStub', 'ServerCloneException', 'ServerNotActiveException', 'ServerRef', 'Skeleton', 'SkeletonMismatchException', 'SkeletonNotFoundException', 'SocketSecurityException', 'UID', 'UnicastRemoteObject', 'Unreferenced'
        +            ),
        +        39 => array (
        +            'AccessControlContext', 'AccessControlException', 'AccessController', 'AlgorithmParameterGenerator', 'AlgorithmParameterGeneratorSpi', 'AlgorithmParameters', 'AlgorithmParametersSpi', 'AllPermission', 'AuthProvider', 'BasicPermission', 'CodeSigner', 'CodeSource', 'DigestException', 'DigestInputStream', 'DigestOutputStream', 'DomainCombiner', 'GeneralSecurityException', 'Guard', 'GuardedObject', 'Identity', 'IdentityScope', 'InvalidAlgorithmParameterException', 'InvalidParameterException', 'Key', 'KeyException', 'KeyFactory', 'KeyFactorySpi', 'KeyManagementException', 'KeyPair', 'KeyPairGenerator', 'KeyPairGeneratorSpi', 'KeyRep', 'KeyRep.Type', 'KeyStore', 'KeyStore.Builder', 'KeyStore.CallbackHandlerProtection', 'KeyStore.Entry', 'KeyStore.LoadStoreParameter', 'KeyStore.PasswordProtection', 'KeyStore.PrivateKeyEntry', 'KeyStore.ProtectionParameter', 'KeyStore.SecretKeyEntry', 'KeyStore.TrustedCertificateEntry', 'KeyStoreException', 'KeyStoreSpi', 'MessageDigest', 'MessageDigestSpi',
        +            'NoSuchAlgorithmException', 'NoSuchProviderException', 'PermissionCollection', 'Permissions', 'PrivateKey', 'PrivilegedAction', 'PrivilegedActionException', 'PrivilegedExceptionAction', 'ProtectionDomain', 'Provider', 'Provider.Service', 'ProviderException', 'PublicKey', 'SecureClassLoader', 'SecureRandom', 'SecureRandomSpi', 'Security', 'SecurityPermission', 'Signature', 'SignatureException', 'SignatureSpi', 'SignedObject', 'Signer', 'UnrecoverableEntryException', 'UnrecoverableKeyException', 'UnresolvedPermission'
        +            ),
        +        40 => array (
        +            'Acl', 'AclEntry', 'AclNotFoundException', 'Group', 'LastOwnerException', 'NotOwnerException', 'Owner'
        +            ),
        +        41 => array (
        +            'CRL', 'CRLException', 'CRLSelector', 'CertPath', 'CertPath.CertPathRep', 'CertPathBuilder', 'CertPathBuilderException', 'CertPathBuilderResult', 'CertPathBuilderSpi', 'CertPathParameters', 'CertPathValidator', 'CertPathValidatorException', 'CertPathValidatorResult', 'CertPathValidatorSpi', 'CertSelector', 'CertStore', 'CertStoreException', 'CertStoreParameters', 'CertStoreSpi', 'Certificate.CertificateRep', 'CertificateFactory', 'CertificateFactorySpi', 'CollectionCertStoreParameters', 'LDAPCertStoreParameters', 'PKIXBuilderParameters', 'PKIXCertPathBuilderResult', 'PKIXCertPathChecker', 'PKIXCertPathValidatorResult', 'PKIXParameters', 'PolicyNode', 'PolicyQualifierInfo', 'TrustAnchor', 'X509CRL', 'X509CRLEntry', 'X509CRLSelector', 'X509CertSelector', 'X509Extension'
        +            ),
        +        42 => array (
        +            'DSAKey', 'DSAKeyPairGenerator', 'DSAParams', 'DSAPrivateKey', 'DSAPublicKey', 'ECKey', 'ECPrivateKey', 'ECPublicKey', 'RSAKey', 'RSAMultiPrimePrivateCrtKey', 'RSAPrivateCrtKey', 'RSAPrivateKey', 'RSAPublicKey'
        +            ),
        +        43 => array (
        +            'AlgorithmParameterSpec', 'DSAParameterSpec', 'DSAPrivateKeySpec', 'DSAPublicKeySpec', 'ECField', 'ECFieldF2m', 'ECFieldFp', 'ECGenParameterSpec', 'ECParameterSpec', 'ECPoint', 'ECPrivateKeySpec', 'ECPublicKeySpec', 'EllipticCurve', 'EncodedKeySpec', 'InvalidKeySpecException', 'InvalidParameterSpecException', 'KeySpec', 'MGF1ParameterSpec', 'PKCS8EncodedKeySpec', 'PSSParameterSpec', 'RSAKeyGenParameterSpec', 'RSAMultiPrimePrivateCrtKeySpec', 'RSAOtherPrimeInfo', 'RSAPrivateCrtKeySpec', 'RSAPrivateKeySpec', 'RSAPublicKeySpec', 'X509EncodedKeySpec'
        +            ),
        +        44 => array (
        +            'BatchUpdateException', 'Blob', 'CallableStatement', 'Clob', 'Connection', 'DataTruncation', 'DatabaseMetaData', 'Driver', 'DriverManager', 'DriverPropertyInfo', 'ParameterMetaData', 'PreparedStatement', 'Ref', 'ResultSet', 'ResultSetMetaData', 'SQLData', 'SQLException', 'SQLInput', 'SQLOutput', 'SQLPermission', 'SQLWarning', 'Savepoint', 'Struct', 'Time', 'Types'
        +            ),
        +        45 => array (
        +            'AttributedCharacterIterator', 'AttributedCharacterIterator.Attribute', 'AttributedString', 'Bidi', 'BreakIterator', 'CharacterIterator', 'ChoiceFormat', 'CollationElementIterator', 'CollationKey', 'Collator', 'DateFormat', 'DateFormat.Field', 'DateFormatSymbols', 'DecimalFormat', 'DecimalFormatSymbols', 'FieldPosition', 'Format', 'Format.Field', 'MessageFormat', 'MessageFormat.Field', 'NumberFormat', 'NumberFormat.Field', 'ParseException', 'ParsePosition', 'RuleBasedCollator', 'SimpleDateFormat', 'StringCharacterIterator'
        +            ),
        +        46 => array (
        +            'AbstractCollection', 'AbstractList', 'AbstractMap', 'AbstractQueue', 'AbstractSequentialList', 'AbstractSet', 'ArrayList', 'Arrays', 'BitSet', 'Calendar', 'Collection', 'Collections', 'Comparator', 'ConcurrentModificationException', 'Currency', 'Dictionary', 'DuplicateFormatFlagsException', 'EmptyStackException', 'EnumMap', 'EnumSet', 'Enumeration', 'EventListenerProxy', 'EventObject', 'FormatFlagsConversionMismatchException', 'Formattable', 'FormattableFlags', 'Formatter.BigDecimalLayoutForm', 'FormatterClosedException', 'GregorianCalendar', 'HashMap', 'HashSet', 'Hashtable', 'IdentityHashMap', 'IllegalFormatCodePointException', 'IllegalFormatConversionException', 'IllegalFormatException', 'IllegalFormatFlagsException', 'IllegalFormatPrecisionException', 'IllegalFormatWidthException', 'InputMismatchException', 'InvalidPropertiesFormatException', 'Iterator', 'LinkedHashMap', 'LinkedHashSet', 'LinkedList', 'ListIterator', 'ListResourceBundle', 'Locale', 'Map', 'Map.Entry', 'MissingFormatArgumentException',
        +            'MissingFormatWidthException', 'MissingResourceException', 'NoSuchElementException', 'Observable', 'Observer', 'PriorityQueue', 'Properties', 'PropertyPermission', 'PropertyResourceBundle', 'Queue', 'Random', 'RandomAccess', 'ResourceBundle', 'Scanner', 'Set', 'SimpleTimeZone', 'SortedMap', 'SortedSet', 'Stack', 'StringTokenizer', 'TimeZone', 'TimerTask', 'TooManyListenersException', 'TreeMap', 'TreeSet', 'UUID', 'UnknownFormatConversionException', 'UnknownFormatFlagsException', 'Vector', 'WeakHashMap'
        +            ),
        +        47 => array (
        +            'AbstractExecutorService', 'ArrayBlockingQueue', 'BlockingQueue', 'BrokenBarrierException', 'Callable', 'CancellationException', 'CompletionService', 'ConcurrentHashMap', 'ConcurrentLinkedQueue', 'ConcurrentMap', 'CopyOnWriteArrayList', 'CopyOnWriteArraySet', 'CountDownLatch', 'CyclicBarrier', 'DelayQueue', 'Delayed', 'Exchanger', 'ExecutionException', 'Executor', 'ExecutorCompletionService', 'ExecutorService', 'Executors', 'Future', 'FutureTask', 'LinkedBlockingQueue', 'PriorityBlockingQueue', 'RejectedExecutionException', 'RejectedExecutionHandler', 'ScheduledExecutorService', 'ScheduledFuture', 'ScheduledThreadPoolExecutor', 'Semaphore', 'SynchronousQueue', 'ThreadFactory', 'ThreadPoolExecutor', 'ThreadPoolExecutor.AbortPolicy', 'ThreadPoolExecutor.CallerRunsPolicy', 'ThreadPoolExecutor.DiscardOldestPolicy', 'ThreadPoolExecutor.DiscardPolicy', 'TimeUnit', 'TimeoutException'
        +            ),
        +        48 => array (
        +            'AtomicBoolean', 'AtomicInteger', 'AtomicIntegerArray', 'AtomicIntegerFieldUpdater', 'AtomicLong', 'AtomicLongArray', 'AtomicLongFieldUpdater', 'AtomicMarkableReference', 'AtomicReference', 'AtomicReferenceArray', 'AtomicReferenceFieldUpdater', 'AtomicStampedReference'
        +            ),
        +        49 => array (
        +            'AbstractQueuedSynchronizer', 'Condition', 'Lock', 'LockSupport', 'ReadWriteLock', 'ReentrantLock', 'ReentrantReadWriteLock', 'ReentrantReadWriteLock.ReadLock', 'ReentrantReadWriteLock.WriteLock'
        +            ),
        +        50 => array (
        +            'Attributes.Name', 'JarEntry', 'JarException', 'JarFile', 'JarInputStream', 'JarOutputStream', 'Manifest', 'Pack200', 'Pack200.Packer', 'Pack200.Unpacker'
        +            ),
        +        51 => array (
        +            'ConsoleHandler', 'ErrorManager', 'FileHandler', 'Filter', 'Handler', 'Level', 'LogManager', 'LogRecord', 'Logger', 'LoggingMXBean', 'LoggingPermission', 'MemoryHandler', 'SimpleFormatter', 'SocketHandler', 'StreamHandler', 'XMLFormatter'
        +            ),
        +        52 => array (
        +            'AbstractPreferences', 'BackingStoreException', 'InvalidPreferencesFormatException', 'NodeChangeEvent', 'NodeChangeListener', 'PreferenceChangeEvent', 'PreferenceChangeListener', 'Preferences', 'PreferencesFactory'
        +            ),
        +        53 => array (
        +            'MatchResult', 'Matcher', 'Pattern', 'PatternSyntaxException'
        +            ),
        +        54 => array (
        +            'Adler32', 'CRC32', 'CheckedInputStream', 'CheckedOutputStream', 'Checksum', 'DataFormatException', 'Deflater', 'DeflaterOutputStream', 'GZIPInputStream', 'GZIPOutputStream', 'Inflater', 'InflaterInputStream', 'ZipEntry', 'ZipException', 'ZipFile', 'ZipInputStream', 'ZipOutputStream'
        +            ),
        +        55 => array (
        +            'Accessible', 'AccessibleAction', 'AccessibleAttributeSequence', 'AccessibleBundle', 'AccessibleComponent', 'AccessibleContext', 'AccessibleEditableText', 'AccessibleExtendedComponent', 'AccessibleExtendedTable', 'AccessibleExtendedText', 'AccessibleHyperlink', 'AccessibleHypertext', 'AccessibleIcon', 'AccessibleKeyBinding', 'AccessibleRelation', 'AccessibleRelationSet', 'AccessibleResourceBundle', 'AccessibleRole', 'AccessibleSelection', 'AccessibleState', 'AccessibleStateSet', 'AccessibleStreamable', 'AccessibleTable', 'AccessibleTableModelChange', 'AccessibleText', 'AccessibleTextSequence', 'AccessibleValue'
        +            ),
        +        56 => array (
        +            'ActivityCompletedException', 'ActivityRequiredException', 'InvalidActivityException'
        +            ),
        +        57 => array (
        +            'BadPaddingException', 'Cipher', 'CipherInputStream', 'CipherOutputStream', 'CipherSpi', 'EncryptedPrivateKeyInfo', 'ExemptionMechanism', 'ExemptionMechanismException', 'ExemptionMechanismSpi', 'IllegalBlockSizeException', 'KeyAgreement', 'KeyAgreementSpi', 'KeyGenerator', 'KeyGeneratorSpi', 'Mac', 'MacSpi', 'NoSuchPaddingException', 'NullCipher', 'SealedObject', 'SecretKey', 'SecretKeyFactory', 'SecretKeyFactorySpi', 'ShortBufferException'
        +            ),
        +        58 => array (
        +            'DHKey', 'DHPrivateKey', 'DHPublicKey', 'PBEKey'
        +            ),
        +        59 => array (
        +            'DESKeySpec', 'DESedeKeySpec', 'DHGenParameterSpec', 'DHParameterSpec', 'DHPrivateKeySpec', 'DHPublicKeySpec', 'IvParameterSpec', 'OAEPParameterSpec', 'PBEKeySpec', 'PBEParameterSpec', 'PSource', 'PSource.PSpecified', 'RC2ParameterSpec', 'RC5ParameterSpec', 'SecretKeySpec'
        +            ),
        +        60 => array (
        +            'IIOException', 'IIOImage', 'IIOParam', 'IIOParamController', 'ImageIO', 'ImageReadParam', 'ImageReader', 'ImageTranscoder', 'ImageTypeSpecifier', 'ImageWriteParam', 'ImageWriter'
        +            ),
        +        61 => array (
        +            'IIOReadProgressListener', 'IIOReadUpdateListener', 'IIOReadWarningListener', 'IIOWriteProgressListener', 'IIOWriteWarningListener'
        +            ),
        +        62 => array (
        +            'IIOInvalidTreeException', 'IIOMetadata', 'IIOMetadataController', 'IIOMetadataFormat', 'IIOMetadataFormatImpl', 'IIOMetadataNode'
        +            ),
        +        63 => array (
        +            'BMPImageWriteParam'
        +            ),
        +        64 => array (
        +            'JPEGHuffmanTable', 'JPEGImageReadParam', 'JPEGImageWriteParam', 'JPEGQTable'
        +            ),
        +        65 => array (
        +            'IIORegistry', 'IIOServiceProvider', 'ImageInputStreamSpi', 'ImageOutputStreamSpi', 'ImageReaderSpi', 'ImageReaderWriterSpi', 'ImageTranscoderSpi', 'ImageWriterSpi', 'RegisterableService', 'ServiceRegistry', 'ServiceRegistry.Filter'
        +            ),
        +        66 => array (
        +            'FileCacheImageInputStream', 'FileCacheImageOutputStream', 'FileImageInputStream', 'FileImageOutputStream', 'IIOByteBuffer', 'ImageInputStream', 'ImageInputStreamImpl', 'ImageOutputStream', 'ImageOutputStreamImpl', 'MemoryCacheImageInputStream', 'MemoryCacheImageOutputStream'
        +            ),
        +        67 => array (
        +            'AttributeChangeNotification', 'AttributeChangeNotificationFilter', 'AttributeNotFoundException', 'AttributeValueExp', 'BadAttributeValueExpException', 'BadBinaryOpValueExpException', 'BadStringOperationException', 'Descriptor', 'DescriptorAccess', 'DynamicMBean', 'InstanceAlreadyExistsException', 'InstanceNotFoundException', 'InvalidApplicationException', 'JMException', 'JMRuntimeException', 'ListenerNotFoundException', 'MBeanAttributeInfo', 'MBeanConstructorInfo', 'MBeanException', 'MBeanFeatureInfo', 'MBeanInfo', 'MBeanNotificationInfo', 'MBeanOperationInfo', 'MBeanParameterInfo', 'MBeanPermission', 'MBeanRegistration', 'MBeanRegistrationException', 'MBeanServer', 'MBeanServerBuilder', 'MBeanServerConnection', 'MBeanServerDelegate', 'MBeanServerDelegateMBean', 'MBeanServerFactory', 'MBeanServerInvocationHandler', 'MBeanServerNotification', 'MBeanServerPermission', 'MBeanTrustPermission', 'MalformedObjectNameException', 'NotCompliantMBeanException', 'Notification', 'NotificationBroadcaster',
        +            'NotificationBroadcasterSupport', 'NotificationEmitter', 'NotificationFilter', 'NotificationFilterSupport', 'NotificationListener', 'ObjectInstance', 'ObjectName', 'OperationsException', 'PersistentMBean', 'Query', 'QueryEval', 'QueryExp', 'ReflectionException', 'RuntimeErrorException', 'RuntimeMBeanException', 'RuntimeOperationsException', 'ServiceNotFoundException', 'StandardMBean', 'StringValueExp', 'ValueExp'
        +            ),
        +        68 => array (
        +            'ClassLoaderRepository', 'MLet', 'MLetMBean', 'PrivateClassLoader', 'PrivateMLet'
        +            ),
        +        69 => array (
        +            'DescriptorSupport', 'InvalidTargetObjectTypeException', 'ModelMBean', 'ModelMBeanAttributeInfo', 'ModelMBeanConstructorInfo', 'ModelMBeanInfo', 'ModelMBeanInfoSupport', 'ModelMBeanNotificationBroadcaster', 'ModelMBeanNotificationInfo', 'ModelMBeanOperationInfo', 'RequiredModelMBean', 'XMLParseException'
        +            ),
        +        70 => array (
        +            'CounterMonitor', 'CounterMonitorMBean', 'GaugeMonitor', 'GaugeMonitorMBean', 'Monitor', 'MonitorMBean', 'MonitorNotification', 'MonitorSettingException', 'StringMonitor', 'StringMonitorMBean'
        +            ),
        +        71 => array (
        +            'ArrayType', 'CompositeData', 'CompositeDataSupport', 'CompositeType', 'InvalidOpenTypeException', 'KeyAlreadyExistsException', 'OpenDataException', 'OpenMBeanAttributeInfo', 'OpenMBeanAttributeInfoSupport', 'OpenMBeanConstructorInfo', 'OpenMBeanConstructorInfoSupport', 'OpenMBeanInfo', 'OpenMBeanInfoSupport', 'OpenMBeanOperationInfo', 'OpenMBeanOperationInfoSupport', 'OpenMBeanParameterInfo', 'OpenMBeanParameterInfoSupport', 'SimpleType', 'TabularData', 'TabularDataSupport', 'TabularType'
        +            ),
        +        72 => array (
        +            'InvalidRelationIdException', 'InvalidRelationServiceException', 'InvalidRelationTypeException', 'InvalidRoleInfoException', 'InvalidRoleValueException', 'MBeanServerNotificationFilter', 'Relation', 'RelationException', 'RelationNotFoundException', 'RelationNotification', 'RelationService', 'RelationServiceMBean', 'RelationServiceNotRegisteredException', 'RelationSupport', 'RelationSupportMBean', 'RelationType', 'RelationTypeNotFoundException', 'RelationTypeSupport', 'Role', 'RoleInfo', 'RoleInfoNotFoundException', 'RoleList', 'RoleNotFoundException', 'RoleResult', 'RoleStatus', 'RoleUnresolved', 'RoleUnresolvedList'
        +            ),
        +        73 => array (
        +            'JMXAuthenticator', 'JMXConnectionNotification', 'JMXConnector', 'JMXConnectorFactory', 'JMXConnectorProvider', 'JMXConnectorServer', 'JMXConnectorServerFactory', 'JMXConnectorServerMBean', 'JMXConnectorServerProvider', 'JMXPrincipal', 'JMXProviderException', 'JMXServerErrorException', 'JMXServiceURL', 'MBeanServerForwarder', 'NotificationResult', 'SubjectDelegationPermission', 'TargetedNotification'
        +            ),
        +        74 => array (
        +            'RMIConnection', 'RMIConnectionImpl', 'RMIConnectionImpl_Stub', 'RMIConnector', 'RMIConnectorServer', 'RMIIIOPServerImpl', 'RMIJRMPServerImpl', 'RMIServer', 'RMIServerImpl', 'RMIServerImpl_Stub'
        +            ),
        +        75 => array (
        +            'TimerAlarmClockNotification', 'TimerMBean', 'TimerNotification'
        +            ),
        +        76 => array (
        +            'AuthenticationNotSupportedException', 'BinaryRefAddr', 'CannotProceedException', 'CommunicationException', 'CompositeName', 'CompoundName', 'ConfigurationException', 'ContextNotEmptyException', 'InitialContext', 'InsufficientResourcesException', 'InterruptedNamingException', 'InvalidNameException', 'LimitExceededException', 'LinkException', 'LinkLoopException', 'LinkRef', 'MalformedLinkException', 'Name', 'NameAlreadyBoundException', 'NameClassPair', 'NameNotFoundException', 'NameParser', 'NamingEnumeration', 'NamingException', 'NamingSecurityException', 'NoInitialContextException', 'NoPermissionException', 'NotContextException', 'OperationNotSupportedException', 'PartialResultException', 'RefAddr', 'Referenceable', 'ReferralException', 'ServiceUnavailableException', 'SizeLimitExceededException', 'StringRefAddr', 'TimeLimitExceededException'
        +            ),
        +        77 => array (
        +            'AttributeInUseException', 'AttributeModificationException', 'BasicAttribute', 'BasicAttributes', 'DirContext', 'InitialDirContext', 'InvalidAttributeIdentifierException', 'InvalidAttributesException', 'InvalidSearchControlsException', 'InvalidSearchFilterException', 'ModificationItem', 'NoSuchAttributeException', 'SchemaViolationException', 'SearchControls', 'SearchResult'
        +            ),
        +        78 => array (
        +            'EventContext', 'EventDirContext', 'NamespaceChangeListener', 'NamingEvent', 'NamingExceptionEvent', 'NamingListener', 'ObjectChangeListener'
        +            ),
        +        79 => array (
        +            'BasicControl', 'ControlFactory', 'ExtendedRequest', 'ExtendedResponse', 'HasControls', 'InitialLdapContext', 'LdapContext', 'LdapName', 'LdapReferralException', 'ManageReferralControl', 'PagedResultsControl', 'PagedResultsResponseControl', 'Rdn', 'SortControl', 'SortKey', 'SortResponseControl', 'StartTlsRequest', 'StartTlsResponse', 'UnsolicitedNotification', 'UnsolicitedNotificationEvent', 'UnsolicitedNotificationListener'
        +            ),
        +        80 => array (
        +            'DirObjectFactory', 'DirStateFactory', 'DirStateFactory.Result', 'DirectoryManager', 'InitialContextFactory', 'InitialContextFactoryBuilder', 'NamingManager', 'ObjectFactory', 'ObjectFactoryBuilder', 'ResolveResult', 'Resolver', 'StateFactory'
        +            ),
        +        81 => array (
        +            'ServerSocketFactory', 'SocketFactory'
        +            ),
        +        82 => array (
        +            'CertPathTrustManagerParameters', 'HandshakeCompletedEvent', 'HandshakeCompletedListener', 'HostnameVerifier', 'HttpsURLConnection', 'KeyManager', 'KeyManagerFactory', 'KeyManagerFactorySpi', 'KeyStoreBuilderParameters', 'ManagerFactoryParameters', 'SSLContext', 'SSLContextSpi', 'SSLEngine', 'SSLEngineResult', 'SSLEngineResult.HandshakeStatus', 'SSLEngineResult.Status', 'SSLException', 'SSLHandshakeException', 'SSLKeyException', 'SSLPeerUnverifiedException', 'SSLPermission', 'SSLProtocolException', 'SSLServerSocket', 'SSLServerSocketFactory', 'SSLSession', 'SSLSessionBindingEvent', 'SSLSessionBindingListener', 'SSLSessionContext', 'SSLSocket', 'SSLSocketFactory', 'TrustManager', 'TrustManagerFactory', 'TrustManagerFactorySpi', 'X509ExtendedKeyManager', 'X509KeyManager', 'X509TrustManager'
        +            ),
        +        83 => array (
        +            'AttributeException', 'CancelablePrintJob', 'Doc', 'DocFlavor', 'DocFlavor.BYTE_ARRAY', 'DocFlavor.CHAR_ARRAY', 'DocFlavor.INPUT_STREAM', 'DocFlavor.READER', 'DocFlavor.SERVICE_FORMATTED', 'DocFlavor.STRING', 'DocFlavor.URL', 'DocPrintJob', 'FlavorException', 'MultiDoc', 'MultiDocPrintJob', 'MultiDocPrintService', 'PrintException', 'PrintService', 'PrintServiceLookup', 'ServiceUI', 'ServiceUIFactory', 'SimpleDoc', 'StreamPrintService', 'StreamPrintServiceFactory', 'URIException'
        +            ),
        +        84 => array (
        +            'AttributeSetUtilities', 'DateTimeSyntax', 'DocAttribute', 'DocAttributeSet', 'EnumSyntax', 'HashAttributeSet', 'HashDocAttributeSet', 'HashPrintJobAttributeSet', 'HashPrintRequestAttributeSet', 'HashPrintServiceAttributeSet', 'IntegerSyntax', 'PrintJobAttribute', 'PrintJobAttributeSet', 'PrintRequestAttribute', 'PrintRequestAttributeSet', 'PrintServiceAttribute', 'PrintServiceAttributeSet', 'ResolutionSyntax', 'SetOfIntegerSyntax', 'Size2DSyntax', 'SupportedValuesAttribute', 'TextSyntax', 'URISyntax', 'UnmodifiableSetException'
        +            ),
        +        85 => array (
        +            'Chromaticity', 'ColorSupported', 'Compression', 'Copies', 'CopiesSupported', 'DateTimeAtCompleted', 'DateTimeAtCreation', 'DateTimeAtProcessing', 'Destination', 'DocumentName', 'Fidelity', 'Finishings', 'JobHoldUntil', 'JobImpressions', 'JobImpressionsCompleted', 'JobImpressionsSupported', 'JobKOctets', 'JobKOctetsProcessed', 'JobKOctetsSupported', 'JobMediaSheets', 'JobMediaSheetsCompleted', 'JobMediaSheetsSupported', 'JobMessageFromOperator', 'JobName', 'JobOriginatingUserName', 'JobPriority', 'JobPrioritySupported', 'JobSheets', 'JobState', 'JobStateReason', 'JobStateReasons', 'Media', 'MediaName', 'MediaPrintableArea', 'MediaSize', 'MediaSize.Engineering', 'MediaSize.ISO', 'MediaSize.JIS', 'MediaSize.NA', 'MediaSize.Other', 'MediaSizeName', 'MediaTray', 'MultipleDocumentHandling', 'NumberOfDocuments', 'NumberOfInterveningJobs', 'NumberUp', 'NumberUpSupported', 'OrientationRequested', 'OutputDeviceAssigned', 'PDLOverrideSupported', 'PageRanges', 'PagesPerMinute', 'PagesPerMinuteColor',
        +            'PresentationDirection', 'PrintQuality', 'PrinterInfo', 'PrinterIsAcceptingJobs', 'PrinterLocation', 'PrinterMakeAndModel', 'PrinterMessageFromOperator', 'PrinterMoreInfo', 'PrinterMoreInfoManufacturer', 'PrinterName', 'PrinterResolution', 'PrinterState', 'PrinterStateReason', 'PrinterStateReasons', 'PrinterURI', 'QueuedJobCount', 'ReferenceUriSchemesSupported', 'RequestingUserName', 'Severity', 'SheetCollate', 'Sides'
        +            ),
        +        86 => array (
        +            'PrintEvent', 'PrintJobAdapter', 'PrintJobAttributeEvent', 'PrintJobAttributeListener', 'PrintJobEvent', 'PrintJobListener', 'PrintServiceAttributeEvent', 'PrintServiceAttributeListener'
        +            ),
        +        87 => array (
        +            'PortableRemoteObject'
        +            ),
        +        88 => array (
        +            'ClassDesc', 'PortableRemoteObjectDelegate', 'Stub', 'StubDelegate', 'Tie', 'Util', 'UtilDelegate', 'ValueHandler', 'ValueHandlerMultiFormat'
        +            ),
        +        89 => array (
        +            'SslRMIClientSocketFactory', 'SslRMIServerSocketFactory'
        +            ),
        +        90 => array (
        +            'AuthPermission', 'DestroyFailedException', 'Destroyable', 'PrivateCredentialPermission', 'RefreshFailedException', 'Refreshable', 'Subject', 'SubjectDomainCombiner'
        +            ),
        +        91 => array (
        +            'Callback', 'CallbackHandler', 'ChoiceCallback', 'ConfirmationCallback', 'LanguageCallback', 'NameCallback', 'PasswordCallback', 'TextInputCallback', 'TextOutputCallback', 'UnsupportedCallbackException'
        +            ),
        +        92 => array (
        +            'DelegationPermission', 'KerberosKey', 'KerberosPrincipal', 'KerberosTicket', 'ServicePermission'
        +            ),
        +        93 => array (
        +            'AccountException', 'AccountExpiredException', 'AccountLockedException', 'AccountNotFoundException', 'AppConfigurationEntry', 'AppConfigurationEntry.LoginModuleControlFlag', 'Configuration', 'CredentialException', 'CredentialExpiredException', 'CredentialNotFoundException', 'FailedLoginException', 'LoginContext', 'LoginException'
        +            ),
        +        94 => array (
        +            'LoginModule'
        +            ),
        +        95 => array (
        +            'X500Principal', 'X500PrivateCredential'
        +            ),
        +        96 => array (
        +            'AuthorizeCallback', 'RealmCallback', 'RealmChoiceCallback', 'Sasl', 'SaslClient', 'SaslClientFactory', 'SaslException', 'SaslServer', 'SaslServerFactory'
        +            ),
        +        97 => array (
        +            'ControllerEventListener', 'Instrument', 'InvalidMidiDataException', 'MetaEventListener', 'MetaMessage', 'MidiChannel', 'MidiDevice', 'MidiDevice.Info', 'MidiEvent', 'MidiFileFormat', 'MidiMessage', 'MidiSystem', 'MidiUnavailableException', 'Patch', 'Receiver', 'Sequence', 'Sequencer', 'Sequencer.SyncMode', 'ShortMessage', 'Soundbank', 'SoundbankResource', 'Synthesizer', 'SysexMessage', 'Track', 'Transmitter', 'VoiceStatus'
        +            ),
        +        98 => array (
        +            'MidiDeviceProvider', 'MidiFileReader', 'MidiFileWriter', 'SoundbankReader'
        +            ),
        +        99 => array (
        +            'AudioFileFormat', 'AudioFileFormat.Type', 'AudioFormat', 'AudioFormat.Encoding', 'AudioInputStream', 'AudioPermission', 'AudioSystem', 'BooleanControl', 'BooleanControl.Type', 'Clip', 'CompoundControl', 'CompoundControl.Type', 'Control.Type', 'DataLine', 'DataLine.Info', 'EnumControl', 'EnumControl.Type', 'FloatControl', 'FloatControl.Type', 'Line', 'Line.Info', 'LineEvent', 'LineEvent.Type', 'LineListener', 'LineUnavailableException', 'Mixer', 'Mixer.Info', 'Port', 'Port.Info', 'ReverbType', 'SourceDataLine', 'TargetDataLine', 'UnsupportedAudioFileException'
        +            ),
        +        100 => array (
        +            'AudioFileReader', 'AudioFileWriter', 'FormatConversionProvider', 'MixerProvider'
        +            ),
        +        101 => array (
        +            'ConnectionEvent', 'ConnectionEventListener', 'ConnectionPoolDataSource', 'DataSource', 'PooledConnection', 'RowSet', 'RowSetEvent', 'RowSetInternal', 'RowSetListener', 'RowSetMetaData', 'RowSetReader', 'RowSetWriter', 'XAConnection', 'XADataSource'
        +            ),
        +        102 => array (
        +            'BaseRowSet', 'CachedRowSet', 'FilteredRowSet', 'JdbcRowSet', 'JoinRowSet', 'Joinable', 'Predicate', 'RowSetMetaDataImpl', 'RowSetWarning', 'WebRowSet'
        +            ),
        +        103 => array (
        +            'SQLInputImpl', 'SQLOutputImpl', 'SerialArray', 'SerialBlob', 'SerialClob', 'SerialDatalink', 'SerialException', 'SerialJavaObject', 'SerialRef', 'SerialStruct'
        +            ),
        +        104 => array (
        +            'SyncFactory', 'SyncFactoryException', 'SyncProvider', 'SyncProviderException', 'SyncResolver', 'TransactionalWriter', 'XmlReader', 'XmlWriter'
        +            ),
        +        105 => array (
        +            'AbstractAction', 'AbstractButton', 'AbstractCellEditor', 'AbstractListModel', 'AbstractSpinnerModel', 'Action', 'ActionMap', 'BorderFactory', 'BoundedRangeModel', 'Box', 'Box.Filler', 'BoxLayout', 'ButtonGroup', 'ButtonModel', 'CellEditor', 'CellRendererPane', 'ComboBoxEditor', 'ComboBoxModel', 'ComponentInputMap', 'DebugGraphics', 'DefaultBoundedRangeModel', 'DefaultButtonModel', 'DefaultCellEditor', 'DefaultComboBoxModel', 'DefaultDesktopManager', 'DefaultFocusManager', 'DefaultListCellRenderer', 'DefaultListCellRenderer.UIResource', 'DefaultListModel', 'DefaultListSelectionModel', 'DefaultSingleSelectionModel', 'DesktopManager', 'FocusManager', 'GrayFilter', 'Icon', 'ImageIcon', 'InputMap', 'InputVerifier', 'InternalFrameFocusTraversalPolicy', 'JApplet', 'JButton', 'JCheckBox', 'JCheckBoxMenuItem', 'JColorChooser', 'JComboBox', 'JComboBox.KeySelectionManager', 'JComponent', 'JDesktopPane', 'JDialog', 'JEditorPane', 'JFileChooser', 'JFormattedTextField', 'JFormattedTextField.AbstractFormatter',
        +            'JFormattedTextField.AbstractFormatterFactory', 'JFrame', 'JInternalFrame', 'JInternalFrame.JDesktopIcon', 'JLabel', 'JLayeredPane', 'JList', 'JMenu', 'JMenuBar', 'JMenuItem', 'JOptionPane', 'JPanel', 'JPasswordField', 'JPopupMenu', 'JPopupMenu.Separator', 'JProgressBar', 'JRadioButton', 'JRadioButtonMenuItem', 'JRootPane', 'JScrollBar', 'JScrollPane', 'JSeparator', 'JSlider', 'JSpinner', 'JSpinner.DateEditor', 'JSpinner.DefaultEditor', 'JSpinner.ListEditor', 'JSpinner.NumberEditor', 'JSplitPane', 'JTabbedPane', 'JTable', 'JTable.PrintMode', 'JTextArea', 'JTextField', 'JTextPane', 'JToggleButton', 'JToggleButton.ToggleButtonModel', 'JToolBar', 'JToolBar.Separator', 'JToolTip', 'JTree', 'JTree.DynamicUtilTreeNode', 'JTree.EmptySelectionModel', 'JViewport', 'JWindow', 'KeyStroke', 'LayoutFocusTraversalPolicy', 'ListCellRenderer', 'ListModel', 'ListSelectionModel', 'LookAndFeel', 'MenuElement', 'MenuSelectionManager', 'MutableComboBoxModel', 'OverlayLayout', 'Popup', 'PopupFactory', 'ProgressMonitor',
        +            'ProgressMonitorInputStream', 'Renderer', 'RepaintManager', 'RootPaneContainer', 'ScrollPaneConstants', 'ScrollPaneLayout', 'ScrollPaneLayout.UIResource', 'Scrollable', 'SingleSelectionModel', 'SizeRequirements', 'SizeSequence', 'SortingFocusTraversalPolicy', 'SpinnerDateModel', 'SpinnerListModel', 'SpinnerModel', 'SpinnerNumberModel', 'Spring', 'SpringLayout', 'SpringLayout.Constraints', 'SwingConstants', 'SwingUtilities', 'ToolTipManager', 'TransferHandler', 'UIDefaults', 'UIDefaults.ActiveValue', 'UIDefaults.LazyInputMap', 'UIDefaults.LazyValue', 'UIDefaults.ProxyLazyValue', 'UIManager', 'UIManager.LookAndFeelInfo', 'UnsupportedLookAndFeelException', 'ViewportLayout', 'WindowConstants'
        +            ),
        +        106 => array (
        +            'AbstractBorder', 'BevelBorder', 'Border', 'CompoundBorder', 'EmptyBorder', 'EtchedBorder', 'LineBorder', 'MatteBorder', 'SoftBevelBorder', 'TitledBorder'
        +            ),
        +        107 => array (
        +            'AbstractColorChooserPanel', 'ColorChooserComponentFactory', 'ColorSelectionModel', 'DefaultColorSelectionModel'
        +            ),
        +        108 => array (
        +            'AncestorEvent', 'AncestorListener', 'CaretEvent', 'CaretListener', 'CellEditorListener', 'ChangeEvent', 'ChangeListener', 'DocumentEvent.ElementChange', 'DocumentEvent.EventType', 'DocumentListener', 'EventListenerList', 'HyperlinkEvent', 'HyperlinkEvent.EventType', 'HyperlinkListener', 'InternalFrameAdapter', 'InternalFrameEvent', 'InternalFrameListener', 'ListDataEvent', 'ListDataListener', 'ListSelectionEvent', 'ListSelectionListener', 'MenuDragMouseEvent', 'MenuDragMouseListener', 'MenuEvent', 'MenuKeyEvent', 'MenuKeyListener', 'MenuListener', 'MouseInputAdapter', 'MouseInputListener', 'PopupMenuEvent', 'PopupMenuListener', 'SwingPropertyChangeSupport', 'TableColumnModelEvent', 'TableColumnModelListener', 'TableModelEvent', 'TableModelListener', 'TreeExpansionEvent', 'TreeExpansionListener', 'TreeModelEvent', 'TreeModelListener', 'TreeSelectionEvent', 'TreeSelectionListener', 'TreeWillExpandListener', 'UndoableEditEvent', 'UndoableEditListener'
        +            ),
        +        109 => array (
        +            'FileSystemView', 'FileView'
        +            ),
        +        110 => array (
        +            'ActionMapUIResource', 'BorderUIResource', 'BorderUIResource.BevelBorderUIResource', 'BorderUIResource.CompoundBorderUIResource', 'BorderUIResource.EmptyBorderUIResource', 'BorderUIResource.EtchedBorderUIResource', 'BorderUIResource.LineBorderUIResource', 'BorderUIResource.MatteBorderUIResource', 'BorderUIResource.TitledBorderUIResource', 'ButtonUI', 'ColorChooserUI', 'ColorUIResource', 'ComboBoxUI', 'ComponentInputMapUIResource', 'ComponentUI', 'DesktopIconUI', 'DesktopPaneUI', 'DimensionUIResource', 'FileChooserUI', 'FontUIResource', 'IconUIResource', 'InputMapUIResource', 'InsetsUIResource', 'InternalFrameUI', 'LabelUI', 'ListUI', 'MenuBarUI', 'MenuItemUI', 'OptionPaneUI', 'PanelUI', 'PopupMenuUI', 'ProgressBarUI', 'RootPaneUI', 'ScrollBarUI', 'ScrollPaneUI', 'SeparatorUI', 'SliderUI', 'SpinnerUI', 'SplitPaneUI', 'TabbedPaneUI', 'TableHeaderUI', 'TableUI', 'TextUI', 'ToolBarUI', 'ToolTipUI', 'TreeUI', 'UIResource', 'ViewportUI'
        +            ),
        +        111 => array (
        +            'BasicArrowButton', 'BasicBorders', 'BasicBorders.ButtonBorder', 'BasicBorders.FieldBorder', 'BasicBorders.MarginBorder', 'BasicBorders.MenuBarBorder', 'BasicBorders.RadioButtonBorder', 'BasicBorders.RolloverButtonBorder', 'BasicBorders.SplitPaneBorder', 'BasicBorders.ToggleButtonBorder', 'BasicButtonListener', 'BasicButtonUI', 'BasicCheckBoxMenuItemUI', 'BasicCheckBoxUI', 'BasicColorChooserUI', 'BasicComboBoxEditor', 'BasicComboBoxEditor.UIResource', 'BasicComboBoxRenderer', 'BasicComboBoxRenderer.UIResource', 'BasicComboBoxUI', 'BasicComboPopup', 'BasicDesktopIconUI', 'BasicDesktopPaneUI', 'BasicDirectoryModel', 'BasicEditorPaneUI', 'BasicFileChooserUI', 'BasicFormattedTextFieldUI', 'BasicGraphicsUtils', 'BasicHTML', 'BasicIconFactory', 'BasicInternalFrameTitlePane', 'BasicInternalFrameUI', 'BasicLabelUI', 'BasicListUI', 'BasicLookAndFeel', 'BasicMenuBarUI', 'BasicMenuItemUI', 'BasicMenuUI', 'BasicOptionPaneUI', 'BasicOptionPaneUI.ButtonAreaLayout', 'BasicPanelUI', 'BasicPasswordFieldUI',
        +            'BasicPopupMenuSeparatorUI', 'BasicPopupMenuUI', 'BasicProgressBarUI', 'BasicRadioButtonMenuItemUI', 'BasicRadioButtonUI', 'BasicRootPaneUI', 'BasicScrollBarUI', 'BasicScrollPaneUI', 'BasicSeparatorUI', 'BasicSliderUI', 'BasicSpinnerUI', 'BasicSplitPaneDivider', 'BasicSplitPaneUI', 'BasicTabbedPaneUI', 'BasicTableHeaderUI', 'BasicTableUI', 'BasicTextAreaUI', 'BasicTextFieldUI', 'BasicTextPaneUI', 'BasicTextUI', 'BasicTextUI.BasicCaret', 'BasicTextUI.BasicHighlighter', 'BasicToggleButtonUI', 'BasicToolBarSeparatorUI', 'BasicToolBarUI', 'BasicToolTipUI', 'BasicTreeUI', 'BasicViewportUI', 'ComboPopup', 'DefaultMenuLayout'
        +            ),
        +        112 => array (
        +            'DefaultMetalTheme', 'MetalBorders', 'MetalBorders.ButtonBorder', 'MetalBorders.Flush3DBorder', 'MetalBorders.InternalFrameBorder', 'MetalBorders.MenuBarBorder', 'MetalBorders.MenuItemBorder', 'MetalBorders.OptionDialogBorder', 'MetalBorders.PaletteBorder', 'MetalBorders.PopupMenuBorder', 'MetalBorders.RolloverButtonBorder', 'MetalBorders.ScrollPaneBorder', 'MetalBorders.TableHeaderBorder', 'MetalBorders.TextFieldBorder', 'MetalBorders.ToggleButtonBorder', 'MetalBorders.ToolBarBorder', 'MetalButtonUI', 'MetalCheckBoxIcon', 'MetalCheckBoxUI', 'MetalComboBoxButton', 'MetalComboBoxEditor', 'MetalComboBoxEditor.UIResource', 'MetalComboBoxIcon', 'MetalComboBoxUI', 'MetalDesktopIconUI', 'MetalFileChooserUI', 'MetalIconFactory', 'MetalIconFactory.FileIcon16', 'MetalIconFactory.FolderIcon16', 'MetalIconFactory.PaletteCloseIcon', 'MetalIconFactory.TreeControlIcon', 'MetalIconFactory.TreeFolderIcon', 'MetalIconFactory.TreeLeafIcon', 'MetalInternalFrameTitlePane', 'MetalInternalFrameUI', 'MetalLabelUI',
        +            'MetalLookAndFeel', 'MetalMenuBarUI', 'MetalPopupMenuSeparatorUI', 'MetalProgressBarUI', 'MetalRadioButtonUI', 'MetalRootPaneUI', 'MetalScrollBarUI', 'MetalScrollButton', 'MetalScrollPaneUI', 'MetalSeparatorUI', 'MetalSliderUI', 'MetalSplitPaneUI', 'MetalTabbedPaneUI', 'MetalTextFieldUI', 'MetalTheme', 'MetalToggleButtonUI', 'MetalToolBarUI', 'MetalToolTipUI', 'MetalTreeUI', 'OceanTheme'
        +            ),
        +        113 => array (
        +            'MultiButtonUI', 'MultiColorChooserUI', 'MultiComboBoxUI', 'MultiDesktopIconUI', 'MultiDesktopPaneUI', 'MultiFileChooserUI', 'MultiInternalFrameUI', 'MultiLabelUI', 'MultiListUI', 'MultiLookAndFeel', 'MultiMenuBarUI', 'MultiMenuItemUI', 'MultiOptionPaneUI', 'MultiPanelUI', 'MultiPopupMenuUI', 'MultiProgressBarUI', 'MultiRootPaneUI', 'MultiScrollBarUI', 'MultiScrollPaneUI', 'MultiSeparatorUI', 'MultiSliderUI', 'MultiSpinnerUI', 'MultiSplitPaneUI', 'MultiTabbedPaneUI', 'MultiTableHeaderUI', 'MultiTableUI', 'MultiTextUI', 'MultiToolBarUI', 'MultiToolTipUI', 'MultiTreeUI', 'MultiViewportUI'
        +            ),
        +        114 => array (
        +            'ColorType', 'Region', 'SynthConstants', 'SynthContext', 'SynthGraphicsUtils', 'SynthLookAndFeel', 'SynthPainter', 'SynthStyle', 'SynthStyleFactory'
        +            ),
        +        115 => array (
        +            'AbstractTableModel', 'DefaultTableCellRenderer', 'DefaultTableCellRenderer.UIResource', 'DefaultTableColumnModel', 'DefaultTableModel', 'JTableHeader', 'TableCellEditor', 'TableCellRenderer', 'TableColumn', 'TableColumnModel', 'TableModel'
        +            ),
        +        116 => array (
        +            'AbstractDocument', 'AbstractDocument.AttributeContext', 'AbstractDocument.Content', 'AbstractDocument.ElementEdit', 'AbstractWriter', 'AsyncBoxView', 'AttributeSet.CharacterAttribute', 'AttributeSet.ColorAttribute', 'AttributeSet.FontAttribute', 'AttributeSet.ParagraphAttribute', 'BadLocationException', 'BoxView', 'Caret', 'ChangedCharSetException', 'ComponentView', 'CompositeView', 'DateFormatter', 'DefaultCaret', 'DefaultEditorKit', 'DefaultEditorKit.BeepAction', 'DefaultEditorKit.CopyAction', 'DefaultEditorKit.CutAction', 'DefaultEditorKit.DefaultKeyTypedAction', 'DefaultEditorKit.InsertBreakAction', 'DefaultEditorKit.InsertContentAction', 'DefaultEditorKit.InsertTabAction', 'DefaultEditorKit.PasteAction', 'DefaultFormatter', 'DefaultFormatterFactory', 'DefaultHighlighter', 'DefaultHighlighter.DefaultHighlightPainter', 'DefaultStyledDocument', 'DefaultStyledDocument.AttributeUndoableEdit', 'DefaultStyledDocument.ElementSpec', 'DefaultTextUI', 'DocumentFilter', 'DocumentFilter.FilterBypass',
        +            'EditorKit', 'ElementIterator', 'FieldView', 'FlowView', 'FlowView.FlowStrategy', 'GapContent', 'GlyphView', 'GlyphView.GlyphPainter', 'Highlighter', 'Highlighter.Highlight', 'Highlighter.HighlightPainter', 'IconView', 'InternationalFormatter', 'JTextComponent', 'JTextComponent.KeyBinding', 'Keymap', 'LabelView', 'LayeredHighlighter', 'LayeredHighlighter.LayerPainter', 'LayoutQueue', 'MaskFormatter', 'MutableAttributeSet', 'NavigationFilter', 'NavigationFilter.FilterBypass', 'NumberFormatter', 'PasswordView', 'PlainDocument', 'PlainView', 'Position', 'Position.Bias', 'Segment', 'SimpleAttributeSet', 'StringContent', 'Style', 'StyleConstants', 'StyleConstants.CharacterConstants', 'StyleConstants.ColorConstants', 'StyleConstants.FontConstants', 'StyleConstants.ParagraphConstants', 'StyleContext', 'StyledDocument', 'StyledEditorKit', 'StyledEditorKit.AlignmentAction', 'StyledEditorKit.BoldAction', 'StyledEditorKit.FontFamilyAction', 'StyledEditorKit.FontSizeAction', 'StyledEditorKit.ForegroundAction',
        +            'StyledEditorKit.ItalicAction', 'StyledEditorKit.StyledTextAction', 'StyledEditorKit.UnderlineAction', 'TabExpander', 'TabSet', 'TabStop', 'TabableView', 'TableView', 'TextAction', 'Utilities', 'View', 'ViewFactory', 'WrappedPlainView', 'ZoneView'
        +            ),
        +        117 => array (
        +            'BlockView', 'CSS', 'CSS.Attribute', 'FormSubmitEvent', 'FormSubmitEvent.MethodType', 'FormView', 'HTML', 'HTML.Attribute', 'HTML.Tag', 'HTML.UnknownTag', 'HTMLDocument', 'HTMLDocument.Iterator', 'HTMLEditorKit', 'HTMLEditorKit.HTMLFactory', 'HTMLEditorKit.HTMLTextAction', 'HTMLEditorKit.InsertHTMLTextAction', 'HTMLEditorKit.LinkController', 'HTMLEditorKit.Parser', 'HTMLEditorKit.ParserCallback', 'HTMLFrameHyperlinkEvent', 'HTMLWriter', 'ImageView', 'InlineView', 'ListView', 'MinimalHTMLWriter', 'ObjectView', 'Option', 'StyleSheet', 'StyleSheet.BoxPainter', 'StyleSheet.ListPainter'
        +            ),
        +        118 => array (
        +            'ContentModel', 'DTD', 'DTDConstants', 'DocumentParser', 'ParserDelegator', 'TagElement'
        +            ),
        +        119 => array (
        +            'RTFEditorKit'
        +            ),
        +        120 => array (
        +            'AbstractLayoutCache', 'AbstractLayoutCache.NodeDimensions', 'DefaultMutableTreeNode', 'DefaultTreeCellEditor', 'DefaultTreeCellRenderer', 'DefaultTreeModel', 'DefaultTreeSelectionModel', 'ExpandVetoException', 'FixedHeightLayoutCache', 'MutableTreeNode', 'RowMapper', 'TreeCellEditor', 'TreeCellRenderer', 'TreeModel', 'TreeNode', 'TreePath', 'TreeSelectionModel', 'VariableHeightLayoutCache'
        +            ),
        +        121 => array (
        +            'AbstractUndoableEdit', 'CannotRedoException', 'CannotUndoException', 'CompoundEdit', 'StateEdit', 'StateEditable', 'UndoManager', 'UndoableEdit', 'UndoableEditSupport'
        +            ),
        +        122 => array (
        +            'InvalidTransactionException', 'TransactionRequiredException', 'TransactionRolledbackException'
        +            ),
        +        123 => array (
        +            'XAException', 'XAResource', 'Xid'
        +            ),
        +        124 => array (
        +            'XMLConstants'
        +            ),
        +        125 => array (
        +            'DatatypeConfigurationException', 'DatatypeConstants', 'DatatypeConstants.Field', 'DatatypeFactory', 'Duration', 'XMLGregorianCalendar'
        +            ),
        +        126 => array (
        +            'NamespaceContext', 'QName'
        +            ),
        +        127 => array (
        +            'DocumentBuilder', 'DocumentBuilderFactory', 'FactoryConfigurationError', 'ParserConfigurationException', 'SAXParser', 'SAXParserFactory'
        +            ),
        +        128 => array (
        +            'ErrorListener', 'OutputKeys', 'Result', 'Source', 'SourceLocator', 'Templates', 'Transformer', 'TransformerConfigurationException', 'TransformerException', 'TransformerFactory', 'TransformerFactoryConfigurationError', 'URIResolver'
        +            ),
        +        129 => array (
        +            'DOMResult', 'DOMSource'
        +            ),
        +        130 => array (
        +            'SAXResult', 'SAXSource', 'SAXTransformerFactory', 'TemplatesHandler', 'TransformerHandler'
        +            ),
        +        131 => array (
        +            'StreamResult', 'StreamSource'
        +            ),
        +        132 => array (
        +            'Schema', 'SchemaFactory', 'SchemaFactoryLoader', 'TypeInfoProvider', 'Validator', 'ValidatorHandler'
        +            ),
        +        133 => array (
        +            'XPath', 'XPathConstants', 'XPathException', 'XPathExpression', 'XPathExpressionException', 'XPathFactory', 'XPathFactoryConfigurationException', 'XPathFunction', 'XPathFunctionException', 'XPathFunctionResolver', 'XPathVariableResolver'
        +            ),
        +        134 => array (
        +            'ChannelBinding', 'GSSContext', 'GSSCredential', 'GSSException', 'GSSManager', 'GSSName', 'MessageProp', 'Oid'
        +            ),
        +        135 => array (
        +            'ACTIVITY_COMPLETED', 'ACTIVITY_REQUIRED', 'ARG_IN', 'ARG_INOUT', 'ARG_OUT', 'Any', 'AnyHolder', 'AnySeqHolder', 'BAD_CONTEXT', 'BAD_INV_ORDER', 'BAD_OPERATION', 'BAD_PARAM', 'BAD_POLICY', 'BAD_POLICY_TYPE', 'BAD_POLICY_VALUE', 'BAD_QOS', 'BAD_TYPECODE', 'BooleanHolder', 'BooleanSeqHelper', 'BooleanSeqHolder', 'ByteHolder', 'CODESET_INCOMPATIBLE', 'COMM_FAILURE', 'CTX_RESTRICT_SCOPE', 'CharHolder', 'CharSeqHelper', 'CharSeqHolder', 'CompletionStatus', 'CompletionStatusHelper', 'ContextList', 'CurrentHolder', 'CustomMarshal', 'DATA_CONVERSION', 'DefinitionKind', 'DefinitionKindHelper', 'DomainManager', 'DomainManagerOperations', 'DoubleHolder', 'DoubleSeqHelper', 'DoubleSeqHolder', 'Environment', 'ExceptionList', 'FREE_MEM', 'FixedHolder', 'FloatHolder', 'FloatSeqHelper', 'FloatSeqHolder', 'IDLType', 'IDLTypeHelper', 'IDLTypeOperations', 'IMP_LIMIT', 'INITIALIZE', 'INTERNAL', 'INTF_REPOS', 'INVALID_ACTIVITY', 'INVALID_TRANSACTION', 'INV_FLAG', 'INV_IDENT', 'INV_OBJREF', 'INV_POLICY', 'IRObject',
        +            'IRObjectOperations', 'IdentifierHelper', 'IntHolder', 'LocalObject', 'LongHolder', 'LongLongSeqHelper', 'LongLongSeqHolder', 'LongSeqHelper', 'LongSeqHolder', 'MARSHAL', 'NO_IMPLEMENT', 'NO_MEMORY', 'NO_PERMISSION', 'NO_RESOURCES', 'NO_RESPONSE', 'NVList', 'NamedValue', 'OBJECT_NOT_EXIST', 'OBJ_ADAPTER', 'OMGVMCID', 'ObjectHelper', 'ObjectHolder', 'OctetSeqHelper', 'OctetSeqHolder', 'PERSIST_STORE', 'PRIVATE_MEMBER', 'PUBLIC_MEMBER', 'ParameterMode', 'ParameterModeHelper', 'ParameterModeHolder', 'PolicyError', 'PolicyErrorCodeHelper', 'PolicyErrorHelper', 'PolicyErrorHolder', 'PolicyHelper', 'PolicyHolder', 'PolicyListHelper', 'PolicyListHolder', 'PolicyOperations', 'PolicyTypeHelper', 'PrincipalHolder', 'REBIND', 'RepositoryIdHelper', 'Request', 'ServerRequest', 'ServiceDetail', 'ServiceDetailHelper', 'ServiceInformation', 'ServiceInformationHelper', 'ServiceInformationHolder', 'SetOverrideType', 'SetOverrideTypeHelper', 'ShortHolder', 'ShortSeqHelper', 'ShortSeqHolder', 'StringHolder',
        +            'StringSeqHelper', 'StringSeqHolder', 'StringValueHelper', 'StructMember', 'StructMemberHelper', 'SystemException', 'TCKind', 'TIMEOUT', 'TRANSACTION_MODE', 'TRANSACTION_REQUIRED', 'TRANSACTION_ROLLEDBACK', 'TRANSACTION_UNAVAILABLE', 'TRANSIENT', 'TypeCode', 'TypeCodeHolder', 'ULongLongSeqHelper', 'ULongLongSeqHolder', 'ULongSeqHelper', 'ULongSeqHolder', 'UNSUPPORTED_POLICY', 'UNSUPPORTED_POLICY_VALUE', 'UShortSeqHelper', 'UShortSeqHolder', 'UnionMember', 'UnionMemberHelper', 'UnknownUserException', 'UnknownUserExceptionHelper', 'UnknownUserExceptionHolder', 'UserException', 'VM_ABSTRACT', 'VM_CUSTOM', 'VM_NONE', 'VM_TRUNCATABLE', 'ValueBaseHelper', 'ValueBaseHolder', 'ValueMember', 'ValueMemberHelper', 'VersionSpecHelper', 'VisibilityHelper', 'WCharSeqHelper', 'WCharSeqHolder', 'WStringSeqHelper', 'WStringSeqHolder', 'WStringValueHelper', 'WrongTransaction', 'WrongTransactionHelper', 'WrongTransactionHolder', '_IDLTypeStub', '_PolicyStub'
        +            ),
        +        136 => array (
        +            'Invalid', 'InvalidSeq'
        +            ),
        +        137 => array (
        +            'BadKind'
        +            ),
        +        138 => array (
        +            'ApplicationException', 'BoxedValueHelper', 'CustomValue', 'IDLEntity', 'IndirectionException', 'InvokeHandler', 'RemarshalException', 'ResponseHandler', 'ServantObject', 'Streamable', 'StreamableValue', 'UnknownException', 'ValueBase', 'ValueFactory', 'ValueInputStream', 'ValueOutputStream'
        +            ),
        +        139 => array (
        +            'BindingHelper', 'BindingHolder', 'BindingIterator', 'BindingIteratorHelper', 'BindingIteratorHolder', 'BindingIteratorOperations', 'BindingIteratorPOA', 'BindingListHelper', 'BindingListHolder', 'BindingType', 'BindingTypeHelper', 'BindingTypeHolder', 'IstringHelper', 'NameComponent', 'NameComponentHelper', 'NameComponentHolder', 'NameHelper', 'NameHolder', 'NamingContext', 'NamingContextExt', 'NamingContextExtHelper', 'NamingContextExtHolder', 'NamingContextExtOperations', 'NamingContextExtPOA', 'NamingContextHelper', 'NamingContextHolder', 'NamingContextOperations', 'NamingContextPOA', '_BindingIteratorImplBase', '_BindingIteratorStub', '_NamingContextExtStub', '_NamingContextImplBase', '_NamingContextStub'
        +            ),
        +        140 => array (
        +            'AddressHelper', 'InvalidAddress', 'InvalidAddressHelper', 'InvalidAddressHolder', 'StringNameHelper', 'URLStringHelper'
        +            ),
        +        141 => array (
        +            'AlreadyBound', 'AlreadyBoundHelper', 'AlreadyBoundHolder', 'CannotProceed', 'CannotProceedHelper', 'CannotProceedHolder', 'InvalidNameHolder', 'NotEmpty', 'NotEmptyHelper', 'NotEmptyHolder', 'NotFound', 'NotFoundHelper', 'NotFoundHolder', 'NotFoundReason', 'NotFoundReasonHelper', 'NotFoundReasonHolder'
        +            ),
        +        142 => array (
        +            'Parameter'
        +            ),
        +        143 => array (
        +            'DynAnyFactory', 'DynAnyFactoryHelper', 'DynAnyFactoryOperations', 'DynAnyHelper', 'DynAnyOperations', 'DynAnySeqHelper', 'DynArrayHelper', 'DynArrayOperations', 'DynEnumHelper', 'DynEnumOperations', 'DynFixedHelper', 'DynFixedOperations', 'DynSequenceHelper', 'DynSequenceOperations', 'DynStructHelper', 'DynStructOperations', 'DynUnionHelper', 'DynUnionOperations', 'DynValueBox', 'DynValueBoxOperations', 'DynValueCommon', 'DynValueCommonOperations', 'DynValueHelper', 'DynValueOperations', 'NameDynAnyPair', 'NameDynAnyPairHelper', 'NameDynAnyPairSeqHelper', 'NameValuePairSeqHelper', '_DynAnyFactoryStub', '_DynAnyStub', '_DynArrayStub', '_DynEnumStub', '_DynFixedStub', '_DynSequenceStub', '_DynStructStub', '_DynUnionStub', '_DynValueStub'
        +            ),
        +        144 => array (
        +            'InconsistentTypeCodeHelper'
        +            ),
        +        145 => array (
        +            'InvalidValueHelper'
        +            ),
        +        146 => array (
        +            'CodeSets', 'Codec', 'CodecFactory', 'CodecFactoryHelper', 'CodecFactoryOperations', 'CodecOperations', 'ComponentIdHelper', 'ENCODING_CDR_ENCAPS', 'Encoding', 'ExceptionDetailMessage', 'IOR', 'IORHelper', 'IORHolder', 'MultipleComponentProfileHelper', 'MultipleComponentProfileHolder', 'ProfileIdHelper', 'RMICustomMaxStreamFormat', 'ServiceContext', 'ServiceContextHelper', 'ServiceContextHolder', 'ServiceContextListHelper', 'ServiceContextListHolder', 'ServiceIdHelper', 'TAG_ALTERNATE_IIOP_ADDRESS', 'TAG_CODE_SETS', 'TAG_INTERNET_IOP', 'TAG_JAVA_CODEBASE', 'TAG_MULTIPLE_COMPONENTS', 'TAG_ORB_TYPE', 'TAG_POLICIES', 'TAG_RMI_CUSTOM_MAX_STREAM_FORMAT', 'TaggedComponent', 'TaggedComponentHelper', 'TaggedComponentHolder', 'TaggedProfile', 'TaggedProfileHelper', 'TaggedProfileHolder', 'TransactionService'
        +            ),
        +        147 => array (
        +            'UnknownEncoding', 'UnknownEncodingHelper'
        +            ),
        +        148 => array (
        +            'FormatMismatch', 'FormatMismatchHelper', 'InvalidTypeForEncoding', 'InvalidTypeForEncodingHelper'
        +            ),
        +        149 => array (
        +            'SYNC_WITH_TRANSPORT', 'SyncScopeHelper'
        +            ),
        +        150 => array (
        +            'ACTIVE', 'AdapterManagerIdHelper', 'AdapterNameHelper', 'AdapterStateHelper', 'ClientRequestInfo', 'ClientRequestInfoOperations', 'ClientRequestInterceptor', 'ClientRequestInterceptorOperations', 'DISCARDING', 'HOLDING', 'INACTIVE', 'IORInfo', 'IORInfoOperations', 'IORInterceptor', 'IORInterceptorOperations', 'IORInterceptor_3_0', 'IORInterceptor_3_0Helper', 'IORInterceptor_3_0Holder', 'IORInterceptor_3_0Operations', 'Interceptor', 'InterceptorOperations', 'InvalidSlot', 'InvalidSlotHelper', 'LOCATION_FORWARD', 'NON_EXISTENT', 'ORBIdHelper', 'ORBInitInfo', 'ORBInitInfoOperations', 'ORBInitializer', 'ORBInitializerOperations', 'ObjectReferenceFactory', 'ObjectReferenceFactoryHelper', 'ObjectReferenceFactoryHolder', 'ObjectReferenceTemplate', 'ObjectReferenceTemplateHelper', 'ObjectReferenceTemplateHolder', 'ObjectReferenceTemplateSeqHelper', 'ObjectReferenceTemplateSeqHolder', 'PolicyFactory', 'PolicyFactoryOperations', 'RequestInfo', 'RequestInfoOperations', 'SUCCESSFUL', 'SYSTEM_EXCEPTION',
        +            'ServerIdHelper', 'ServerRequestInfo', 'ServerRequestInfoOperations', 'ServerRequestInterceptor', 'ServerRequestInterceptorOperations', 'TRANSPORT_RETRY', 'USER_EXCEPTION'
        +            ),
        +        151 => array (
        +            'DuplicateName', 'DuplicateNameHelper'
        +            ),
        +        152 => array (
        +            'AdapterActivator', 'AdapterActivatorOperations', 'ID_ASSIGNMENT_POLICY_ID', 'ID_UNIQUENESS_POLICY_ID', 'IMPLICIT_ACTIVATION_POLICY_ID', 'IdAssignmentPolicy', 'IdAssignmentPolicyOperations', 'IdAssignmentPolicyValue', 'IdUniquenessPolicy', 'IdUniquenessPolicyOperations', 'IdUniquenessPolicyValue', 'ImplicitActivationPolicy', 'ImplicitActivationPolicyOperations', 'ImplicitActivationPolicyValue', 'LIFESPAN_POLICY_ID', 'LifespanPolicy', 'LifespanPolicyOperations', 'LifespanPolicyValue', 'POA', 'POAHelper', 'POAManager', 'POAManagerOperations', 'POAOperations', 'REQUEST_PROCESSING_POLICY_ID', 'RequestProcessingPolicy', 'RequestProcessingPolicyOperations', 'RequestProcessingPolicyValue', 'SERVANT_RETENTION_POLICY_ID', 'Servant', 'ServantActivator', 'ServantActivatorHelper', 'ServantActivatorOperations', 'ServantActivatorPOA', 'ServantLocator', 'ServantLocatorHelper', 'ServantLocatorOperations', 'ServantLocatorPOA', 'ServantManager', 'ServantManagerOperations', 'ServantRetentionPolicy',
        +            'ServantRetentionPolicyOperations', 'ServantRetentionPolicyValue', 'THREAD_POLICY_ID', 'ThreadPolicy', 'ThreadPolicyOperations', 'ThreadPolicyValue', '_ServantActivatorStub', '_ServantLocatorStub'
        +            ),
        +        153 => array (
        +            'NoContext', 'NoContextHelper'
        +            ),
        +        154 => array (
        +            'AdapterInactive', 'AdapterInactiveHelper', 'State'
        +            ),
        +        155 => array (
        +            'AdapterAlreadyExists', 'AdapterAlreadyExistsHelper', 'AdapterNonExistent', 'AdapterNonExistentHelper', 'InvalidPolicy', 'InvalidPolicyHelper', 'NoServant', 'NoServantHelper', 'ObjectAlreadyActive', 'ObjectAlreadyActiveHelper', 'ObjectNotActive', 'ObjectNotActiveHelper', 'ServantAlreadyActive', 'ServantAlreadyActiveHelper', 'ServantNotActive', 'ServantNotActiveHelper', 'WrongAdapter', 'WrongAdapterHelper', 'WrongPolicy', 'WrongPolicyHelper'
        +            ),
        +        156 => array (
        +            'CookieHolder'
        +            ),
        +        157 => array (
        +            'RunTime', 'RunTimeOperations'
        +            ),
        +        158 => array (
        +            '_Remote_Stub'
        +            ),
        +        159 => array (
        +            'Attr', 'CDATASection', 'CharacterData', 'Comment', 'DOMConfiguration', 'DOMError', 'DOMErrorHandler', 'DOMException', 'DOMImplementation', 'DOMImplementationList', 'DOMImplementationSource', 'DOMStringList', 'DocumentFragment', 'DocumentType', 'EntityReference', 'NameList', 'NamedNodeMap', 'Node', 'NodeList', 'Notation', 'ProcessingInstruction', 'Text', 'TypeInfo', 'UserDataHandler'
        +            ),
        +        160 => array (
        +            'DOMImplementationRegistry'
        +            ),
        +        161 => array (
        +            'EventException', 'EventTarget', 'MutationEvent', 'UIEvent'
        +            ),
        +        162 => array (
        +            'DOMImplementationLS', 'LSException', 'LSInput', 'LSLoadEvent', 'LSOutput', 'LSParser', 'LSParserFilter', 'LSProgressEvent', 'LSResourceResolver', 'LSSerializer', 'LSSerializerFilter'
        +            ),
        +        163 => array (
        +            'DTDHandler', 'DocumentHandler', 'EntityResolver', 'ErrorHandler', 'HandlerBase', 'InputSource', 'Locator', 'SAXException', 'SAXNotRecognizedException', 'SAXNotSupportedException', 'SAXParseException', 'XMLFilter', 'XMLReader'
        +            ),
        +        164 => array (
        +            'Attributes2', 'Attributes2Impl', 'DeclHandler', 'DefaultHandler2', 'EntityResolver2', 'LexicalHandler', 'Locator2', 'Locator2Impl'
        +            ),
        +        165 => array (
        +            'AttributeListImpl', 'AttributesImpl', 'DefaultHandler', 'LocatorImpl', 'NamespaceSupport', 'ParserAdapter', 'ParserFactory', 'XMLFilterImpl', 'XMLReaderAdapter', 'XMLReaderFactory'
        +            ),
        +        /* ambiguous class names (appear in more than one package) */
        +        166 => array (
        +            'Annotation', 'AnySeqHelper', 'Array', 'Attribute', 'AttributeList', 'AttributeSet', 'Attributes', 'AuthenticationException', 'Binding', 'Bounds', 'Certificate', 'CertificateEncodingException', 'CertificateException', 'CertificateExpiredException', 'CertificateNotYetValidException', 'CertificateParsingException', 'ConnectException', 'ContentHandler', 'Context', 'Control', 'Current', 'CurrentHelper', 'CurrentOperations', 'DOMLocator', 'DataInputStream', 'DataOutputStream', 'Date', 'DefaultLoaderRepository', 'Delegate', 'Document', 'DocumentEvent', 'DynAny', 'DynArray', 'DynEnum', 'DynFixed', 'DynSequence', 'DynStruct', 'DynUnion', 'DynValue', 'DynamicImplementation', 'Element', 'Entity', 'Event', 'EventListener', 'FieldNameHelper', 'FileFilter', 'Formatter', 'ForwardRequest', 'ForwardRequestHelper', 'InconsistentTypeCode', 'InputStream', 'IntrospectionException', 'InvalidAttributeValueException', 'InvalidKeyException', 'InvalidName', 'InvalidNameHelper', 'InvalidValue', 'List', 'MouseEvent',
        +            'NameValuePair', 'NameValuePairHelper', 'ORB', 'Object', 'ObjectIdHelper', 'ObjectImpl', 'OpenType', 'OutputStream', 'ParagraphView', 'Parser', 'Permission', 'Policy', 'Principal', 'Proxy', 'Reference', 'Statement', 'Timer', 'Timestamp', 'TypeMismatch', 'TypeMismatchHelper', 'UNKNOWN', 'UnknownHostException', 'X509Certificate'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', '>', '?'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        /* all Java keywords are case sensitive */
        +        1 => true, 2 => true, 3 => true, 4 => true,
        +        5 => true, 6 => true, 7 => true, 8 => true, 9 => true,
        +        10 => true, 11 => true, 12 => true, 13 => true, 14 => true,
        +        15 => true, 16 => true, 17 => true, 18 => true, 19 => true,
        +        20 => true, 21 => true, 22 => true, 23 => true, 24 => true,
        +        25 => true, 26 => true, 27 => true, 28 => true, 29 => true,
        +        30 => true, 31 => true, 32 => true, 33 => true, 34 => true,
        +        35 => true, 36 => true, 37 => true, 38 => true, 39 => true,
        +        40 => true, 41 => true, 42 => true, 43 => true, 44 => true,
        +        45 => true, 46 => true, 47 => true, 48 => true, 49 => true,
        +        50 => true, 51 => true, 52 => true, 53 => true, 54 => true,
        +        55 => true, 56 => true, 57 => true, 58 => true, 59 => true,
        +        60 => true, 61 => true, 62 => true, 63 => true, 64 => true,
        +        65 => true, 66 => true, 67 => true, 68 => true, 69 => true,
        +        70 => true, 71 => true, 72 => true, 73 => true, 74 => true,
        +        75 => true, 76 => true, 77 => true, 78 => true, 79 => true,
        +        80 => true, 81 => true, 82 => true, 83 => true, 84 => true,
        +        85 => true, 86 => true, 87 => true, 88 => true, 89 => true,
        +        90 => true, 91 => true, 92 => true, 93 => true, 94 => true,
        +        95 => true, 96 => true, 97 => true, 98 => true, 99 => true,
        +        100 => true, 101 => true, 102 => true, 103 => true, 104 => true,
        +        105 => true, 106 => true, 107 => true, 108 => true, 109 => true,
        +        110 => true, 111 => true, 112 => true, 113 => true, 114 => true,
        +        115 => true, 116 => true, 117 => true, 118 => true, 119 => true,
        +        120 => true, 121 => true, 122 => true, 123 => true, 124 => true,
        +        125 => true, 126 => true, 127 => true, 128 => true, 129 => true,
        +        130 => true, 131 => true, 132 => true, 133 => true, 134 => true,
        +        135 => true, 136 => true, 137 => true, 138 => true, 139 => true,
        +        140 => true, 141 => true, 142 => true, 143 => true, 144 => true,
        +        145 => true, 146 => true, 147 => true, 148 => true, 149 => true,
        +        150 => true, 151 => true, 152 => true, 153 => true, 154 => true,
        +        155 => true, 156 => true, 157 => true, 158 => true, 159 => true,
        +        160 => true, 161 => true, 162 => true, 163 => true, 164 => true,
        +        165 => true, 166 => true
        +    ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000000;  font-weight: bold;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #006600; font-weight: bold;',
        +            4 => 'color: #006600; font-weight: bold;',
        +            5 => 'color: #003399; font-weight: bold;',
        +            6 => 'color: #003399; font-weight: bold;',
        +            7 => 'color: #003399; font-weight: bold;',
        +            8 => 'color: #003399; font-weight: bold;',
        +            9 => 'color: #003399; font-weight: bold;',
        +            10 => 'color: #003399; font-weight: bold;',
        +            11 => 'color: #003399; font-weight: bold;',
        +            12 => 'color: #003399; font-weight: bold;',
        +            13 => 'color: #003399; font-weight: bold;',
        +            14 => 'color: #003399; font-weight: bold;',
        +            15 => 'color: #003399; font-weight: bold;',
        +            16 => 'color: #003399; font-weight: bold;',
        +            17 => 'color: #003399; font-weight: bold;',
        +            18 => 'color: #003399; font-weight: bold;',
        +            19 => 'color: #003399; font-weight: bold;',
        +            20 => 'color: #003399; font-weight: bold;',
        +            21 => 'color: #003399; font-weight: bold;',
        +            22 => 'color: #003399; font-weight: bold;',
        +            23 => 'color: #003399; font-weight: bold;',
        +            24 => 'color: #003399; font-weight: bold;',
        +            25 => 'color: #003399; font-weight: bold;',
        +            26 => 'color: #003399; font-weight: bold;',
        +            27 => 'color: #003399; font-weight: bold;',
        +            28 => 'color: #003399; font-weight: bold;',
        +            29 => 'color: #003399; font-weight: bold;',
        +            30 => 'color: #003399; font-weight: bold;',
        +            31 => 'color: #003399; font-weight: bold;',
        +            32 => 'color: #003399; font-weight: bold;',
        +            33 => 'color: #003399; font-weight: bold;',
        +            34 => 'color: #003399; font-weight: bold;',
        +            35 => 'color: #003399; font-weight: bold;',
        +            36 => 'color: #003399; font-weight: bold;',
        +            37 => 'color: #003399; font-weight: bold;',
        +            38 => 'color: #003399; font-weight: bold;',
        +            39 => 'color: #003399; font-weight: bold;',
        +            40 => 'color: #003399; font-weight: bold;',
        +            41 => 'color: #003399; font-weight: bold;',
        +            42 => 'color: #003399; font-weight: bold;',
        +            43 => 'color: #003399; font-weight: bold;',
        +            44 => 'color: #003399; font-weight: bold;',
        +            45 => 'color: #003399; font-weight: bold;',
        +            46 => 'color: #003399; font-weight: bold;',
        +            47 => 'color: #003399; font-weight: bold;',
        +            48 => 'color: #003399; font-weight: bold;',
        +            49 => 'color: #003399; font-weight: bold;',
        +            50 => 'color: #003399; font-weight: bold;',
        +            51 => 'color: #003399; font-weight: bold;',
        +            52 => 'color: #003399; font-weight: bold;',
        +            53 => 'color: #003399; font-weight: bold;',
        +            54 => 'color: #003399; font-weight: bold;',
        +            55 => 'color: #003399; font-weight: bold;',
        +            56 => 'color: #003399; font-weight: bold;',
        +            57 => 'color: #003399; font-weight: bold;',
        +            58 => 'color: #003399; font-weight: bold;',
        +            59 => 'color: #003399; font-weight: bold;',
        +            60 => 'color: #003399; font-weight: bold;',
        +            61 => 'color: #003399; font-weight: bold;',
        +            62 => 'color: #003399; font-weight: bold;',
        +            63 => 'color: #003399; font-weight: bold;',
        +            64 => 'color: #003399; font-weight: bold;',
        +            65 => 'color: #003399; font-weight: bold;',
        +            66 => 'color: #003399; font-weight: bold;',
        +            67 => 'color: #003399; font-weight: bold;',
        +            68 => 'color: #003399; font-weight: bold;',
        +            69 => 'color: #003399; font-weight: bold;',
        +            70 => 'color: #003399; font-weight: bold;',
        +            71 => 'color: #003399; font-weight: bold;',
        +            72 => 'color: #003399; font-weight: bold;',
        +            73 => 'color: #003399; font-weight: bold;',
        +            74 => 'color: #003399; font-weight: bold;',
        +            75 => 'color: #003399; font-weight: bold;',
        +            76 => 'color: #003399; font-weight: bold;',
        +            77 => 'color: #003399; font-weight: bold;',
        +            78 => 'color: #003399; font-weight: bold;',
        +            79 => 'color: #003399; font-weight: bold;',
        +            80 => 'color: #003399; font-weight: bold;',
        +            81 => 'color: #003399; font-weight: bold;',
        +            82 => 'color: #003399; font-weight: bold;',
        +            83 => 'color: #003399; font-weight: bold;',
        +            84 => 'color: #003399; font-weight: bold;',
        +            85 => 'color: #003399; font-weight: bold;',
        +            86 => 'color: #003399; font-weight: bold;',
        +            87 => 'color: #003399; font-weight: bold;',
        +            88 => 'color: #003399; font-weight: bold;',
        +            89 => 'color: #003399; font-weight: bold;',
        +            90 => 'color: #003399; font-weight: bold;',
        +            91 => 'color: #003399; font-weight: bold;',
        +            92 => 'color: #003399; font-weight: bold;',
        +            93 => 'color: #003399; font-weight: bold;',
        +            94 => 'color: #003399; font-weight: bold;',
        +            95 => 'color: #003399; font-weight: bold;',
        +            96 => 'color: #003399; font-weight: bold;',
        +            97 => 'color: #003399; font-weight: bold;',
        +            98 => 'color: #003399; font-weight: bold;',
        +            99 => 'color: #003399; font-weight: bold;',
        +            100 => 'color: #003399; font-weight: bold;',
        +            101 => 'color: #003399; font-weight: bold;',
        +            102 => 'color: #003399; font-weight: bold;',
        +            103 => 'color: #003399; font-weight: bold;',
        +            104 => 'color: #003399; font-weight: bold;',
        +            105 => 'color: #003399; font-weight: bold;',
        +            106 => 'color: #003399; font-weight: bold;',
        +            107 => 'color: #003399; font-weight: bold;',
        +            108 => 'color: #003399; font-weight: bold;',
        +            109 => 'color: #003399; font-weight: bold;',
        +            110 => 'color: #003399; font-weight: bold;',
        +            111 => 'color: #003399; font-weight: bold;',
        +            112 => 'color: #003399; font-weight: bold;',
        +            113 => 'color: #003399; font-weight: bold;',
        +            114 => 'color: #003399; font-weight: bold;',
        +            115 => 'color: #003399; font-weight: bold;',
        +            116 => 'color: #003399; font-weight: bold;',
        +            117 => 'color: #003399; font-weight: bold;',
        +            118 => 'color: #003399; font-weight: bold;',
        +            119 => 'color: #003399; font-weight: bold;',
        +            120 => 'color: #003399; font-weight: bold;',
        +            121 => 'color: #003399; font-weight: bold;',
        +            122 => 'color: #003399; font-weight: bold;',
        +            123 => 'color: #003399; font-weight: bold;',
        +            124 => 'color: #003399; font-weight: bold;',
        +            125 => 'color: #003399; font-weight: bold;',
        +            126 => 'color: #003399; font-weight: bold;',
        +            127 => 'color: #003399; font-weight: bold;',
        +            128 => 'color: #003399; font-weight: bold;',
        +            129 => 'color: #003399; font-weight: bold;',
        +            130 => 'color: #003399; font-weight: bold;',
        +            131 => 'color: #003399; font-weight: bold;',
        +            132 => 'color: #003399; font-weight: bold;',
        +            133 => 'color: #003399; font-weight: bold;',
        +            134 => 'color: #003399; font-weight: bold;',
        +            135 => 'color: #003399; font-weight: bold;',
        +            136 => 'color: #003399; font-weight: bold;',
        +            137 => 'color: #003399; font-weight: bold;',
        +            138 => 'color: #003399; font-weight: bold;',
        +            139 => 'color: #003399; font-weight: bold;',
        +            140 => 'color: #003399; font-weight: bold;',
        +            141 => 'color: #003399; font-weight: bold;',
        +            142 => 'color: #003399; font-weight: bold;',
        +            143 => 'color: #003399; font-weight: bold;',
        +            144 => 'color: #003399; font-weight: bold;',
        +            145 => 'color: #003399; font-weight: bold;',
        +            146 => 'color: #003399; font-weight: bold;',
        +            147 => 'color: #003399; font-weight: bold;',
        +            148 => 'color: #003399; font-weight: bold;',
        +            149 => 'color: #003399; font-weight: bold;',
        +            150 => 'color: #003399; font-weight: bold;',
        +            151 => 'color: #003399; font-weight: bold;',
        +            152 => 'color: #003399; font-weight: bold;',
        +            153 => 'color: #003399; font-weight: bold;',
        +            154 => 'color: #003399; font-weight: bold;',
        +            155 => 'color: #003399; font-weight: bold;',
        +            156 => 'color: #003399; font-weight: bold;',
        +            157 => 'color: #003399; font-weight: bold;',
        +            158 => 'color: #003399; font-weight: bold;',
        +            159 => 'color: #003399; font-weight: bold;',
        +            160 => 'color: #003399; font-weight: bold;',
        +            161 => 'color: #003399; font-weight: bold;',
        +            162 => 'color: #003399; font-weight: bold;',
        +            163 => 'color: #003399; font-weight: bold;',
        +            164 => 'color: #003399; font-weight: bold;',
        +            165 => 'color: #003399; font-weight: bold;',
        +            166 => 'color: #003399; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            2 => 'color: #006699;',
        +            3 => 'color: #008000; font-style: italic; font-weight: bold;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006633;',
        +            2 => 'color: #006633;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => 'http://docs.oracle.com/javase/7/docs/api/java/applet/{FNAME}.html',
        +        6 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/{FNAME}.html',
        +        7 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/color/{FNAME}.html',
        +        8 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/datatransfer/{FNAME}.html',
        +        9 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/dnd/{FNAME}.html',
        +        10 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/event/{FNAME}.html',
        +        11 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/font/{FNAME}.html',
        +        12 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/geom/{FNAME}.html',
        +        13 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/im/{FNAME}.html',
        +        14 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/im/spi/{FNAME}.html',
        +        15 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/image/{FNAME}.html',
        +        16 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/image/renderable/{FNAME}.html',
        +        17 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/print/{FNAME}.html',
        +        18 => 'http://docs.oracle.com/javase/7/docs/api/java/beans/{FNAME}.html',
        +        19 => 'http://docs.oracle.com/javase/7/docs/api/java/beans/beancontext/{FNAME}.html',
        +        20 => 'http://docs.oracle.com/javase/7/docs/api/java/io/{FNAME}.html',
        +        21 => 'http://docs.oracle.com/javase/7/docs/api/java/lang/{FNAME}.html',
        +        22 => 'http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/{FNAME}.html',
        +        23 => 'http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/{FNAME}.html',
        +        24 => 'http://docs.oracle.com/javase/7/docs/api/java/lang/management/{FNAME}.html',
        +        25 => 'http://docs.oracle.com/javase/7/docs/api/java/lang/ref/{FNAME}.html',
        +        26 => 'http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/{FNAME}.html',
        +        27 => 'http://docs.oracle.com/javase/7/docs/api/java/math/{FNAME}.html',
        +        28 => 'http://docs.oracle.com/javase/7/docs/api/java/net/{FNAME}.html',
        +        29 => 'http://docs.oracle.com/javase/7/docs/api/java/nio/{FNAME}.html',
        +        30 => 'http://docs.oracle.com/javase/7/docs/api/java/nio/channels/{FNAME}.html',
        +        31 => 'http://docs.oracle.com/javase/7/docs/api/java/nio/channels/spi/{FNAME}.html',
        +        32 => 'http://docs.oracle.com/javase/7/docs/api/java/nio/charset/{FNAME}.html',
        +        33 => 'http://docs.oracle.com/javase/7/docs/api/java/nio/charset/spi/{FNAME}.html',
        +        34 => 'http://docs.oracle.com/javase/7/docs/api/java/rmi/{FNAME}.html',
        +        35 => 'http://docs.oracle.com/javase/7/docs/api/java/rmi/activation/{FNAME}.html',
        +        36 => 'http://docs.oracle.com/javase/7/docs/api/java/rmi/dgc/{FNAME}.html',
        +        37 => 'http://docs.oracle.com/javase/7/docs/api/java/rmi/registry/{FNAME}.html',
        +        38 => 'http://docs.oracle.com/javase/7/docs/api/java/rmi/server/{FNAME}.html',
        +        39 => 'http://docs.oracle.com/javase/7/docs/api/java/security/{FNAME}.html',
        +        40 => 'http://docs.oracle.com/javase/7/docs/api/java/security/acl/{FNAME}.html',
        +        41 => 'http://docs.oracle.com/javase/7/docs/api/java/security/cert/{FNAME}.html',
        +        42 => 'http://docs.oracle.com/javase/7/docs/api/java/security/interfaces/{FNAME}.html',
        +        43 => 'http://docs.oracle.com/javase/7/docs/api/java/security/spec/{FNAME}.html',
        +        44 => 'http://docs.oracle.com/javase/7/docs/api/java/sql/{FNAME}.html',
        +        45 => 'http://docs.oracle.com/javase/7/docs/api/java/text/{FNAME}.html',
        +        46 => 'http://docs.oracle.com/javase/7/docs/api/java/util/{FNAME}.html',
        +        47 => 'http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/{FNAME}.html',
        +        48 => 'http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/{FNAME}.html',
        +        49 => 'http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/{FNAME}.html',
        +        50 => 'http://docs.oracle.com/javase/7/docs/api/java/util/jar/{FNAME}.html',
        +        51 => 'http://docs.oracle.com/javase/7/docs/api/java/util/logging/{FNAME}.html',
        +        52 => 'http://docs.oracle.com/javase/7/docs/api/java/util/prefs/{FNAME}.html',
        +        53 => 'http://docs.oracle.com/javase/7/docs/api/java/util/regex/{FNAME}.html',
        +        54 => 'http://docs.oracle.com/javase/7/docs/api/java/util/zip/{FNAME}.html',
        +        55 => 'http://docs.oracle.com/javase/7/docs/api/javax/accessibility/{FNAME}.html',
        +        56 => 'http://docs.oracle.com/javase/7/docs/api/javax/activity/{FNAME}.html',
        +        57 => 'http://docs.oracle.com/javase/7/docs/api/javax/crypto/{FNAME}.html',
        +        58 => 'http://docs.oracle.com/javase/7/docs/api/javax/crypto/interfaces/{FNAME}.html',
        +        59 => 'http://docs.oracle.com/javase/7/docs/api/javax/crypto/spec/{FNAME}.html',
        +        60 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/{FNAME}.html',
        +        61 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/event/{FNAME}.html',
        +        62 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/metadata/{FNAME}.html',
        +        63 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/plugins/bmp/{FNAME}.html',
        +        64 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/plugins/jpeg/{FNAME}.html',
        +        65 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/spi/{FNAME}.html',
        +        66 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/stream/{FNAME}.html',
        +        67 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/{FNAME}.html',
        +        68 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/loading/{FNAME}.html',
        +        69 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/modelmbean/{FNAME}.html',
        +        70 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/monitor/{FNAME}.html',
        +        71 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/openmbean/{FNAME}.html',
        +        72 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/relation/{FNAME}.html',
        +        73 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/remote/{FNAME}.html',
        +        74 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/remote/rmi/{FNAME}.html',
        +        75 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/timer/{FNAME}.html',
        +        76 => 'http://docs.oracle.com/javase/7/docs/api/javax/naming/{FNAME}.html',
        +        77 => 'http://docs.oracle.com/javase/7/docs/api/javax/naming/directory/{FNAME}.html',
        +        78 => 'http://docs.oracle.com/javase/7/docs/api/javax/naming/event/{FNAME}.html',
        +        79 => 'http://docs.oracle.com/javase/7/docs/api/javax/naming/ldap/{FNAME}.html',
        +        80 => 'http://docs.oracle.com/javase/7/docs/api/javax/naming/spi/{FNAME}.html',
        +        81 => 'http://docs.oracle.com/javase/7/docs/api/javax/net/{FNAME}.html',
        +        82 => 'http://docs.oracle.com/javase/7/docs/api/javax/net/ssl/{FNAME}.html',
        +        83 => 'http://docs.oracle.com/javase/7/docs/api/javax/print/{FNAME}.html',
        +        84 => 'http://docs.oracle.com/javase/7/docs/api/javax/print/attribute/{FNAME}.html',
        +        85 => 'http://docs.oracle.com/javase/7/docs/api/javax/print/attribute/standard/{FNAME}.html',
        +        86 => 'http://docs.oracle.com/javase/7/docs/api/javax/print/event/{FNAME}.html',
        +        87 => 'http://docs.oracle.com/javase/7/docs/api/javax/rmi/{FNAME}.html',
        +        88 => 'http://docs.oracle.com/javase/7/docs/api/javax/rmi/CORBA/{FNAME}.html',
        +        89 => 'http://docs.oracle.com/javase/7/docs/api/javax/rmi/ssl/{FNAME}.html',
        +        90 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/auth/{FNAME}.html',
        +        91 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/auth/callback/{FNAME}.html',
        +        92 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/auth/kerberos/{FNAME}.html',
        +        93 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/auth/login/{FNAME}.html',
        +        94 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/auth/spi/{FNAME}.html',
        +        95 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/auth/x500/{FNAME}.html',
        +        96 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/sasl/{FNAME}.html',
        +        97 => 'http://docs.oracle.com/javase/7/docs/api/javax/sound/midi/{FNAME}.html',
        +        98 => 'http://docs.oracle.com/javase/7/docs/api/javax/sound/midi/spi/{FNAME}.html',
        +        99 => 'http://docs.oracle.com/javase/7/docs/api/javax/sound/sampled/{FNAME}.html',
        +        100 => 'http://docs.oracle.com/javase/7/docs/api/javax/sound/sampled/spi/{FNAME}.html',
        +        101 => 'http://docs.oracle.com/javase/7/docs/api/javax/sql/{FNAME}.html',
        +        102 => 'http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/{FNAME}.html',
        +        103 => 'http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/serial/{FNAME}.html',
        +        104 => 'http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/spi/{FNAME}.html',
        +        105 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/{FNAME}.html',
        +        106 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/border/{FNAME}.html',
        +        107 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/colorchooser/{FNAME}.html',
        +        108 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/event/{FNAME}.html',
        +        109 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/filechooser/{FNAME}.html',
        +        110 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/{FNAME}.html',
        +        111 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/basic/{FNAME}.html',
        +        112 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/metal/{FNAME}.html',
        +        113 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/multi/{FNAME}.html',
        +        114 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/synth/{FNAME}.html',
        +        115 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/table/{FNAME}.html',
        +        116 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/text/{FNAME}.html',
        +        117 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/text/html/{FNAME}.html',
        +        118 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/text/html/parser/{FNAME}.html',
        +        119 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/text/rtf/{FNAME}.html',
        +        120 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/tree/{FNAME}.html',
        +        121 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/undo/{FNAME}.html',
        +        122 => 'http://docs.oracle.com/javase/7/docs/api/javax/transaction/{FNAME}.html',
        +        123 => 'http://docs.oracle.com/javase/7/docs/api/javax/transaction/xa/{FNAME}.html',
        +        124 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/{FNAME}.html',
        +        125 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/datatype/{FNAME}.html',
        +        126 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/namespace/{FNAME}.html',
        +        127 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/parsers/{FNAME}.html',
        +        128 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/transform/{FNAME}.html',
        +        129 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/transform/dom/{FNAME}.html',
        +        130 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/transform/sax/{FNAME}.html',
        +        131 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/transform/stream/{FNAME}.html',
        +        132 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/validation/{FNAME}.html',
        +        133 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/xpath/{FNAME}.html',
        +        134 => 'http://docs.oracle.com/javase/7/docs/api/org/ietf/jgss/{FNAME}.html',
        +        135 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CORBA/{FNAME}.html',
        +        136 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CORBA/DynAnyPackage/{FNAME}.html',
        +        137 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CORBA/TypeCodePackage/{FNAME}.html',
        +        138 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CORBA/portable/{FNAME}.html',
        +        139 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CosNaming/{FNAME}.html',
        +        140 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CosNaming/NamingContextExtPackage/{FNAME}.html',
        +        141 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CosNaming/NamingContextPackage/{FNAME}.html',
        +        142 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/Dynamic/{FNAME}.html',
        +        143 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/DynamicAny/{FNAME}.html',
        +        144 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/DynamicAny/DynAnyFactoryPackage/{FNAME}.html',
        +        145 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/DynamicAny/DynAnyPackage/{FNAME}.html',
        +        146 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/IOP/{FNAME}.html',
        +        147 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/IOP/CodecFactoryPackage/{FNAME}.html',
        +        148 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/IOP/CodecPackage/{FNAME}.html',
        +        149 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/Messaging/{FNAME}.html',
        +        150 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableInterceptor/{FNAME}.html',
        +        151 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableInterceptor/ORBInitInfoPackage/{FNAME}.html',
        +        152 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableServer/{FNAME}.html',
        +        153 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableServer/CurrentPackage/{FNAME}.html',
        +        154 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableServer/POAManagerPackage/{FNAME}.html',
        +        155 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableServer/POAPackage/{FNAME}.html',
        +        156 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableServer/ServantLocatorPackage/{FNAME}.html',
        +        157 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/SendingContext/{FNAME}.html',
        +        158 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/stub/java/rmi/{FNAME}.html',
        +        159 => 'http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/{FNAME}.html',
        +        160 => 'http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/bootstrap/{FNAME}.html',
        +        161 => 'http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/events/{FNAME}.html',
        +        162 => 'http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/ls/{FNAME}.html',
        +        163 => 'http://docs.oracle.com/javase/7/docs/api/org/xml/sax/{FNAME}.html',
        +        164 => 'http://docs.oracle.com/javase/7/docs/api/org/xml/sax/ext/{FNAME}.html',
        +        165 => 'http://docs.oracle.com/javase/7/docs/api/org/xml/sax/helpers/{FNAME}.html',
        +        /* ambiguous class names (appear in more than one package) */
        +        166 => 'http://www.google.com/search?sitesearch=docs.oracle.com&q=allinurl%3Ajavase+docs+api+{FNAME}'
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        /* Java does not use '::' */
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => '(?|^&"\'])',
        +            'DISALLOWED_AFTER' => '(?![a-zA-Z0-9_\|%\\-;"\'])'
        +            )
        +        )
        +);
        diff --git a/includes/geshi/javascript.php b/includes/geshi/javascript.php
        new file mode 100644
        index 0000000..439b7a9
        --- /dev/null
        +++ b/includes/geshi/javascript.php
        @@ -0,0 +1,172 @@
        + 'Javascript',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        //Regular Expressions
        +        2 => "/(?<=[\\s^])(s|tr|y)\\/(?!\*)(?!\s)(?:\\\\.|(?!\n)[^\\/\\\\])+(? GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            //reserved/keywords; also some non-reserved keywords
        +            'break','case','catch','const','continue',
        +            'default','delete','do',
        +            'else',
        +            'finally','for','function',
        +            'get','goto',
        +            'if','in','instanceof',
        +            'new',
        +            'prototype',
        +            'return',
        +            'set','static','switch',
        +            'this','throw','try','typeof',
        +            'var','void'
        +            ),
        +        2 => array(
        +            //reserved/non-keywords; metaconstants
        +            'false','null','true','undefined','NaN','Infinity'
        +            ),
        +        3 => array(
        +            //magic properties/functions
        +            '__proto__','__defineGetter__','__defineSetter__','hasOwnProperty','hasProperty'
        +            ),
        +        4 => array(
        +            //type constructors
        +            'Object', 'Function', 'Date', 'Math', 'String', 'Number', 'Boolean', 'Array'
        +            ),
        +        5 => array(
        +            //reserved, but invalid in language
        +            'abstract','boolean','byte','char','class','debugger','double','enum','export','extends',
        +            'final','float','implements','import','int','interface','long','native',
        +            'short','super','synchronized','throws','transient','volatile'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}',
        +        '+', '-', '*', '/', '%',
        +        '!', '@', '&', '|', '^',
        +        '<', '>', '=',
        +        ',', ';', '?', ':'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000066; font-weight: bold;',
        +            2 => 'color: #003366; font-weight: bold;',
        +            3 => 'color: #000066;',
        +            5 => 'color: #FF0000;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #006600; font-style: italic;',
        +            2 => 'color: #009966; font-style: italic;',
        +            'MULTI' => 'color: #006600; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #3366CC;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #CC0000;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #660066;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => '',
        +            2 => '',
        +            3 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => ''
        +    ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
        +    'SCRIPT_DELIMITERS' => array(
        +        0 => array(
        +            ''
        +            ),
        +        1 => array(
        +            ''
        +            )
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => true,
        +        1 => true
        +        )
        +);
        diff --git a/includes/geshi/jcl.php b/includes/geshi/jcl.php
        new file mode 100644
        index 0000000..74fe0fd
        --- /dev/null
        +++ b/includes/geshi/jcl.php
        @@ -0,0 +1,155 @@
        + 'JCL',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(
        +        // Comments identified using REGEX
        +        // Comments start with //* but should not be followed by % (TWS) or + (some JES3 stmts)
        +        3 => "\/\/\*[^%](.*?)(\n)"
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'COMMAND', 'CNTL', 'DD', 'ENDCNTL', 'EXEC', 'IF', 'THEN', 'ELSE',
        +            'ENDIF', 'JCLLIB', 'JOB', 'OUTPUT', 'PEND',
        +            'PROC', 'SET', 'XMIT'
        +            ),
        +        2 => array (
        +            'PGM','CLASS','NOTIFY','MSGCLASS','DSN','KEYLEN','LABEL','LIKE',
        +            'RECFM','LRECL','DCB','DSORG','BLKSIZE','SPACE','STORCLAS',
        +            'DUMMY','DYNAM','AVGREC','BURST','DISP','UNIT','VOLUME',
        +            'MSGLEVEL','REGION'
        +            ),
        +        // Keywords set 3: DFSORT, ICETOOL
        +        3 => array (
        +            'ALTSEQ','DEBUG','END','INCLUDE','INREC','MERGE','MODS','OMIT',
        +            'OPTION','OUTFIL','OUTREC','RECORD','SORT','SUM',
        +            'COPY','COUNT','DEFAULTS','DISPLAY','MODE','OCCUR','RANGE',
        +            'SELECT','STATS','UNIQUE','VERIFY'
        +            ),
        +        // Keywords set 4: IDCAMS
        +        4 => array (
        +            'ALTER','BLDINDEX','CNVTCAT','DEFINE','ALIAS','ALTERNATEINDEX',
        +            'CLUSTER','GENERATIONDATAGROUP','GDG','NONVSAM','PAGESPACE','PATH',
        +            /* 'SPACE',*/'USERCATALOG','DELETE','EXAMINE','EXPORT','DISCONNECT',
        +            'EXPORTRA','IMPORT','CONNECT','IMPORTRA','LISTCAT','LISTCRA',
        +            'PRINT','REPRO','RESETCAT'//,'VERIFY'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(',')','=',',','>','<'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #FF0000;',
        +            2 => 'color: #21A502;',
        +            3 => 'color: #FF00FF;',
        +            4 => 'color: #876C00;'
        +            ),
        +        'COMMENTS' => array(
        +            0 => 'color: #0000FF;',
        +            //1 => 'color: #0000FF;',
        +            //2 => 'color: #0000FF;',
        +            3 => 'color: #0000FF;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => ''
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #FF7400;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #66CC66;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #336633;'
        +            ),
        +        'METHODS' => array(
        +            1 => '',
        +            2 => ''
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #FF7400;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #6B1F6B;',
        +            1 => 'color: #6B1F6B;',
        +            2 => 'color: #6B1F6B;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        // JCL book at IBM Bookshelf is http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/handheld/Connected/BOOKS/IEA2B680/CONTENTS?SHELF=&DT=20080604022956#3.1
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(
        +        // The following regular expressions solves three purposes
        +        // - Identify Temp Variables in JCL (e.g. &&TEMP)
        +        // - Symbolic variables in JCL (e.g. &SYSUID)
        +        // - TWS OPC Variables (e.g. %OPC)
        +        // Thanks to Simon for pointing me to this
        +        0 => '&&[a-zA-Z]{1,8}[0-9]{0,}',
        +        1 => '&[a-zA-Z]{1,8}[0-9]{0,}',
        +        2 => '&|\?|%[a-zA-Z]{1,8}[0-9]{0,}'
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/jquery.php b/includes/geshi/jquery.php
        new file mode 100644
        index 0000000..02a9eee
        --- /dev/null
        +++ b/includes/geshi/jquery.php
        @@ -0,0 +1,236 @@
        + 'jQuery',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    //Regular Expressions
        +    'COMMENT_REGEXP' => array(2 => "/(?<=[\\s^])s\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/[gimsu]*(?=[\\s$\\.\\;])|(?<=[\\s^(=])m?\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/[gimsu]*(?=[\\s$\\.\\,\\;\\)])/iU"),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'as', 'break', 'case', 'catch', 'continue', 'decodeURI', 'delete', 'do',
        +            'else', 'encodeURI', 'eval', 'finally', 'for', 'if', 'in', 'is', 'item',
        +            'instanceof', 'return', 'switch', 'this', 'throw', 'try', 'typeof', 'void',
        +            'while', 'write', 'with'
        +            ),
        +        2 => array(
        +            'class', 'const', 'default', 'debugger', 'export', 'extends', 'false',
        +            'function', 'import', 'namespace', 'new', 'null', 'package', 'private',
        +            'protected', 'public', 'super', 'true', 'use', 'var'
        +            ),
        +        3 => array(
        +            // common functions for Window object
        +            'alert', 'back', 'close', 'confirm', 'forward', 'home',
        +            'name', 'navigate', 'onblur', 'onerror', 'onfocus', 'onload', 'onmove',
        +            'onresize', 'onunload', 'open', 'print', 'prompt', 'status',
        +            //'blur', 'focus', 'scroll', // Duplicate with kw9
        +            //'stop', //Duplicate with kw10
        +            ),
        +        4 => array(
        +            // jQuery Core Functions
        +            'jQuery', 'each', 'size', 'length', 'selector', 'context', 'eq',
        +            'index', 'data', 'removeData', 'queue', 'dequeue', 'noConflict'
        +            //'get', //Duplicate with kw11
        +            ),
        +        5 => array(
        +            // jQuery Attribute Functions
        +            'attr', 'removeAttr', 'addClass', 'hasClass', 'removeClass', 'toggleClass',
        +            'html', 'text', 'val',
        +            ),
        +        6 => array(
        +            // jQuery Traversing Functions
        +            'filter', 'not', 'slice', 'add', 'children', 'closest',
        +            'contents', 'find', 'next', 'nextAll', 'parent', 'parents',
        +            'prev', 'prevAll', 'siblings', 'andSelf', 'end',
        +            //'is',  //Dup with kw1
        +            //'offsetParent', //Duplicate with kw8
        +            //'map', //Duplicate with kw12
        +            ),
        +        7 => array(
        +            // jQuery Manipulation Functions
        +            'append', 'appendTo', 'prepend', 'prependTo', 'after', 'before', 'insertAfter',
        +            'insertBefore', 'wrap', 'wrapAll', 'wrapInner', 'replaceWith', 'replaceAll',
        +            'empty', 'remove', 'clone',
        +            ),
        +        8 => array(
        +            // jQuery CSS Functions
        +            'css', 'offset', 'offsetParent', 'position', 'scrollTop', 'scrollLeft',
        +            'height', 'width', 'innerHeight', 'innerWidth', 'outerHeight', 'outerWidth',
        +            ),
        +        9 => array(
        +            // jQuery Events Functions
        +            'ready', 'bind', 'one', 'trigger', 'triggerHandler', 'unbind', 'live',
        +            'die', 'hover', 'blur', 'change', 'click', 'dblclick', 'error',
        +            'focus', 'keydown', 'keypress', 'keyup', 'mousedown', 'mouseenter',
        +            'mouseleave', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'resize',
        +            'scroll', 'select', 'submit', 'unload',
        +            //'toggle', //Duplicate with kw10
        +            //'load', //Duplicate with kw11
        +            ),
        +        10 => array(
        +            // jQuery Effects Functions
        +            'show', 'hide', 'toggle', 'slideDown', 'slideUp', 'slideToggle', 'fadeIn',
        +            'fadeOut', 'fadeTo', 'animate', 'stop',
        +            ),
        +        11 => array(
        +            // jQuery Ajax Functions
        +            'ajax', 'load', 'get', 'getJSON', 'getScript', 'post', 'ajaxComplete',
        +            'ajaxError', 'ajaxSend', 'ajaxStart', 'ajaxStop', 'ajaxSuccess', 'ajaxSetup',
        +            'serialize', 'serializeArray',
        +            ),
        +        12 => array(
        +            // jQuery Utility Functions
        +            'support', 'browser', 'version', 'boxModal', 'extend', 'grep', 'makeArray',
        +            'map', 'inArray', 'merge', 'unique', 'isArray', 'isFunction', 'trim',
        +            'param',
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array(
        +            '(', ')', '[', ']', '{', '}',
        +            '+', '-', '*', '/', '%',
        +            '!', '@', '&', '|', '^',
        +            '<', '>', '=',
        +            ',', ';', '?', ':'
        +            ),
        +        1 => array(
        +            '$'
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        6 => false,
        +        7 => false,
        +        8 => false,
        +        9 => false,
        +        10 => false,
        +        11 => false,
        +        12 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000066; font-weight: bold;',
        +            2 => 'color: #003366; font-weight: bold;',
        +            3 => 'color: #000066;',
        +            4 => 'color: #000066;',
        +            5 => 'color: #000066;',
        +            6 => 'color: #000066;',
        +            7 => 'color: #000066;',
        +            8 => 'color: #000066;',
        +            9 => 'color: #000066;',
        +            10 => 'color: #000066;',
        +            11 => 'color: #000066;',
        +            12 => 'color: #000066;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #006600; font-style: italic;',
        +            2 => 'color: #009966; font-style: italic;',
        +            'MULTI' => 'color: #006600; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #3366CC;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #CC0000;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #660066;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;',
        +            1 => 'color: #000066;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => '',
        +            2 => '',
        +            3 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => 'http://docs.jquery.com/Core/{FNAME}',
        +        5 => 'http://docs.jquery.com/Attributes/{FNAME}',
        +        6 => 'http://docs.jquery.com/Traversing/{FNAME}',
        +        7 => 'http://docs.jquery.com/Manipulation/{FNAME}',
        +        8 => 'http://docs.jquery.com/CSS/{FNAME}',
        +        9 => 'http://docs.jquery.com/Events/{FNAME}',
        +        10 => 'http://docs.jquery.com/Effects/{FNAME}',
        +        11 => 'http://docs.jquery.com/Ajax/{FNAME}',
        +        12 => 'http://docs.jquery.com/Utilities/{FNAME}'
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
        +    'SCRIPT_DELIMITERS' => array(
        +        0 => array(
        +            ''
        +            ),
        +        1 => array(
        +            ''
        +            )
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => true,
        +        1 => true
        +        )
        +);
        diff --git a/includes/geshi/julia.php b/includes/geshi/julia.php
        new file mode 100644
        index 0000000..a235041
        --- /dev/null
        +++ b/includes/geshi/julia.php
        @@ -0,0 +1,171 @@
        + 'Julia',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    //Longest quotemarks ALWAYS first
        +    'QUOTEMARKS' => array('"""', '"', "'"),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +
        +        /*
        +        ** reserved words
        +        */
        +        1 => array(
        +            'function', 'global', 'for', 'end', 'while', 'if', 'else', 'elseif', 'break',
        +            'switch', 'case', 'otherwise', 'try', 'catch', 'const', 'immutable',
        +            'import', 'importall', 'export', 'type', 'typealias', 'return', 'true',
        +            'false', 'macro', 'quote', 'in', 'abstract', 'module', 'using', 'continue',
        +            'ifelse', 'do', 'eval', 'let', 'finally', 'throw'
        +        ),
        +
        +        /*
        +        ** builtins
        +        */
        +        2 => array(
        +            'Array', 'String', 'Bool', 'Number', 'Int', 'Integer', 'Real', 'Complex',
        +            'FloatingPoint', 'Float64', 'Float32', 'Int8', 'Int16', 'Int32', 'Int64',
        +            'Rational', 'AbstractArray', 'Unsigned', 'Signed', 'Uint', 'Uint8', 'Uint16',
        +            'Uint32', 'Uint64', 'Vector', 'AbstractVector', 'Matrix', 'AbstractMatrix',
        +            'Type', 'IO', 'Any', 'ASCIIString', 'Union', 'Dict', 'Function', 'SubArray',
        +            'Range', 'Range1', 'Symbol', 'Expr',
        +
        +            'cell', 'collect', 'filter', 'merge', 'divrem', 'hex', 'dec', 'oct', 'base',
        +            'int', 'round', 'cmp', 'float', 'linspace', 'fill', 'start', 'done', 'tuple',
        +            'minimum', 'maximum', 'count', 'index', 'append', 'push', 'pop', 'shift',
        +            'unshift', 'insert', 'splice', 'reverse', 'sort', 'zip', 'length', 'delete',
        +            'copy', 'haskey', 'keys', 'values', 'get', 'getkey', 'Set', 'isa', 'issubset',
        +            'intersect', 'setdiff', 'symdiff', 'complement', 'print', 'printf', 'println',
        +            'sprintf', 'utf8', 'char', 'search', 'rsearch',
        +            'replace', 'lowercase', 'uppercase', 'ucfirst', 'lcfirst', 'union',
        +            'split', 'rsplit', 'chop', 'chomp', 'lpad', 'rpad', 'lstrip', 'rstrip',
        +            'strip', 'isalnum', 'isalpha', 'isascii', 'isblank', 'iscntrl', 'isdigit',
        +            'isgraph', 'islower', 'isprint', 'ispunct', 'isspace', 'isupper', 'isxdigit',
        +            'match', 'captures', 'offset', 'offsets', 'matchall', 'eachmatch', 'hcat',
        +            'vcat', 'hvcat', 'reshape', 'deepcopy', 'similar', 'reinterpret', 'map',
        +            'reduce', 'mapreduce', 'DataArray', 'DataFrame', 'removeNA', 'replaceNA',
        +            'colnames', 'head', 'tail', 'describe', 'join', 'groupby', 'by', 'stack',
        +            'readtable', 'readcsv', 'readdlm', 'writetable', 'writecsv', 'writedlm',
        +            'require', 'reload', 'include', 'evalfile', 'cd', 'open', 'write', 'close',
        +            'position', 'seek', 'seekstart', 'skip', 'isopen', 'eof',
        +            'isreadonly', 'ltoh', 'htol', 'serialize', 'deserialize', 'download',
        +            'isequal', 'getindex', 'setindex', 'eachline', 'beginswith', 'endswith',
        +            'parsefloat', 'parseint', 'seekend', 'findnz', 'DivideError', 'addprocs',
        +            'scale', 'issubnormal', 'readdir', 'mapslices'
        +        ),
        +
        +        /*
        +        ** system interaction
        +        */
        +        3 => array(
        +            'run', 'spawn', 'success', 'process_running', 'process_exited', 'kill',
        +            'readsfrom', 'writesto', 'readsandwrite', 'detach', 'setenv', 'ENV', 'getpid',
        +            'clipboard', 'strftime', 'time', 'gethostname', 'getipaddr', 'pwd',
        +            'mkdir', 'mkpath', 'rmdir', 'ignorestatus'
        +        ),
        +
        +        /*
        +        ** prompt
        +        */
        +        4 => array(
        +            'julia>'
        +        )
        +    ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}', '*', '&', '|', '%', '!', ';', '<', '>', '?', '`'
        +    ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true
        +    ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #4266d5;font-weight:bold;',    // Reserved
        +            2 => 'color: #0000A8;font-weight:bold;',    // Built-ins
        +            3 => 'color: #0000A8;font-weight:bold;',    // System Interaction
        +            4 => 'color: #3b972e;font-weight:bold;'     // Prompt
        +        ),
        +        'COMMENTS' => array(
        +            1 => 'color: #888888;',
        +            'MULTI' => 'color: #888888;'
        +        ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +        ),
        +        'BRACKETS' => array(
        +            0 => 'color: #3b972e;'
        +        ),
        +        'STRINGS' => array(
        +            0 => 'color: #c93d39;'
        +        ),
        +        'NUMBERS' => array(
        +            0 => 'color: black;'
        +        ),
        +        'METHODS' => array(
        +            1 => 'color: black;'
        +        ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #6bab5b;'
        +        ),
        +        'REGEXPS' => array(),
        +        'SCRIPT' => array()
        +    ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +    ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +    ),
        +    'REGEXPS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/kixtart.php b/includes/geshi/kixtart.php
        new file mode 100644
        index 0000000..b2b7b93
        --- /dev/null
        +++ b/includes/geshi/kixtart.php
        @@ -0,0 +1,327 @@
        + 'KiXtart',
        +    'COMMENT_SINGLE' => array(1 => ';'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'While', 'Loop',
        +            'Use',
        +            'Small',
        +            'Sleep',
        +            'Shell',
        +            'SetTime',
        +            'SetM',
        +            'SetL',
        +            'Set',
        +            'Select', 'Case',
        +            'Run',
        +            'Return',
        +            'Redim',
        +            'RD',
        +            'Quit',
        +            'Play',
        +            'Move',
        +            'MD',
        +            'Include',
        +            'If', 'Else', 'Endif',
        +            'GoTo',
        +            'GoSub',
        +            'Go',
        +            'Global',
        +            'GetS',
        +            'Get',
        +            'Function', 'Endfunction',
        +            'For', 'Next',
        +            'Each',
        +            'FlushKb',
        +            'Exit',
        +            'Do', 'Until',
        +            'Display',
        +            'Dim',
        +            'Del',
        +            'Debug',
        +            'Copy',
        +            'Cookie1',
        +            'Color',
        +            'CLS',
        +            'CD',
        +            'Call',
        +            'Break',
        +            'Big',
        +            'Beep',
        +            ),
        +        2 => array(
        +            '@Address',
        +            '@Build',
        +            '@Color',
        +            '@Comment',
        +            '@CPU',
        +            '@CRLF',
        +            '@CSD',
        +            '@CurDir',
        +            '@Date',
        +            '@Day',
        +            '@Domain',
        +            '@DOS',
        +            '@Error',
        +            '@FullName',
        +            '@HomeDir',
        +            '@HomeDrive',
        +            '@HomeShr',
        +            '@HostName',
        +            '@InWin',
        +            '@IPaddressX',
        +            '@KiX',
        +            '@LanRoot',
        +            '@LDomain',
        +            '@LDrive',
        +            '@LM',
        +            '@LogonMode',
        +            '@LongHomeDir',
        +            '@LServer',
        +            '@MaxPWAge',
        +            '@MDayNo',
        +            '@MHz',
        +            '@MonthNo',
        +            '@Month',
        +            '@MSecs',
        +            '@OnWoW64',
        +            '@PID',
        +            '@PrimaryGroup',
        +            '@Priv',
        +            '@ProductSuite',
        +            '@ProductType',
        +            '@PWAge',
        +            '@RAS',
        +            '@Result',
        +            '@RServer',
        +            '@ScriptDir',
        +            '@ScriptExe',
        +            '@ScriptName',
        +            '@SError',
        +            '@SID',
        +            '@Site',
        +            '@StartDir',
        +            '@SysLang',
        +            '@Ticks',
        +            '@Time',
        +            '@TsSession',
        +            '@UserID',
        +            '@UserLang',
        +            '@WDayNo',
        +            '@Wksta',
        +            '@WUserID',
        +            '@YDayNo',
        +            '@Year',
        +            ),
        +        3 => array(
        +            'WriteValue',
        +            'WriteProfileString',
        +            'WriteLine',
        +            'VarTypeName',
        +            'VarType',
        +            'Val',
        +            'UnloadHive',
        +            'UCase',
        +            'Ubound',
        +            'Trim',
        +            'Substr',
        +            'SRnd',
        +            'Split',
        +            'SidToName',
        +            'ShutDown',
        +            'ShowProgramGroup',
        +            'SetWallpaper',
        +            'SetTitle',
        +            'SetSystemState',
        +            'SetOption',
        +            'SetFocus',
        +            'SetFileAttr',
        +            'SetDefaultPrinter',
        +            'SetConsole',
        +            'SetAscii',
        +            'SendMessage',
        +            'SendKeys',
        +            'SaveKey',
        +            'RTrim',
        +            'Round',
        +            'Rnd',
        +            'Right',
        +            'RedirectOutput',
        +            'ReadValue',
        +            'ReadType',
        +            'ReadProfileString',
        +            'ReadLine',
        +            'Open',
        +            'MessageBox',
        +            'MemorySize',
        +            'LTrim',
        +            'Logoff',
        +            'LogEvent',
        +            'LoadKey',
        +            'LoadHive',
        +            'Len',
        +            'Left',
        +            'LCase',
        +            'KeyExist',
        +            'KbHit',
        +            'Join',
        +            'IsDeclared',
        +            'Int',
        +            'InStrRev',
        +            'InStr',
        +            'InGroup',
        +            'IIF',
        +            'GetObject',
        +            'GetFileVersion',
        +            'GetFileTime',
        +            'GetFileSize',
        +            'GetFileAttr',
        +            'GetDiskSpace',
        +            'FreeFileHandle',
        +            'FormatNumber',
        +            'Fix',
        +            'ExpandEnvironmentVars',
        +            'Exist',
        +            'Execute',
        +            'EnumValue',
        +            'EnumLocalGroup',
        +            'EnumKey',
        +            'EnumIpInfo',
        +            'EnumGroup',
        +            'Dir',
        +            'DelValue',
        +            'DelTree',
        +            'DelProgramItem',
        +            'DelProgramGroup',
        +            'DelPrinterConnection',
        +            'DelKey',
        +            'DecToHex',
        +            'CStr',
        +            'CreateObject',
        +            'CompareFileTimes',
        +            'Close',
        +            'ClearEventLog',
        +            'CInt',
        +            'Chr',
        +            'CDbl',
        +            'Box',
        +            'BackupEventLog',
        +            'At',
        +            'AScan',
        +            'Asc',
        +            'AddProgramItem',
        +            'AddProgramGroup',
        +            'AddPrinterConnection',
        +            'AddKey',
        +            'Abs'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '?', ':', '+', '-', '*', '/', '&', '|', '^', '~', '<', '>', '='
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #000066;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;',
        +            2 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => 'http://www.kixtart.org/manual/Commands/{FNAMEL}.htm',
        +        2 => '',
        +        3 => 'http://www.kixtart.org/manual/Functions/{FNAMEL}.htm'
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => true,
        +        1 => true,
        +        2 => true,
        +        3 => true
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/klonec.php b/includes/geshi/klonec.php
        new file mode 100644
        index 0000000..f4f8ac4
        --- /dev/null
        +++ b/includes/geshi/klonec.php
        @@ -0,0 +1,280 @@
        + 'KLone C',
        +    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),//#pour precede les include de C
        +    'COMMENT_MULTI' => array('/*' => '*/', '' ),//comentaires C et KLone suivi de ceux pour HTML
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(//mots-cles C
        +            'if', 'return', 'while', 'case', 'class', 'continue', 'default',
        +            'do', 'else', 'for', 'switch', 'goto',
        +            'null', 'break', 'true', 'enum', 'extern', 'inline', 'false'
        +            ),
        +        2 => array(//mots-cles KLone
        +            'out', 'request', 'response',
        +            ),
        +        3 => array(//fonctions C usuelles
        +            'printf', 'malloc', 'fopen', 'fclose', 'free', 'fputs', 'fgets', 'feof', 'fwrite',
        +            'perror', 'ferror', 'qsort', 'stats', 'sscanf', 'scanf',
        +            'strdup', 'strcpy', 'strcmp', 'strncpy', 'strcasecmp', 'cat', 'strcat', 'strstr',
        +            'strlen', 'strtof', 'strtod', 'strtok', 'towlower', 'towupper',
        +            'cd', 'system', 'exit', 'exec', 'fork', 'vfork', 'kill', 'signal', 'syslog',
        +            'usleep', 'utime', 'wait', 'waitpid', 'waitid',
        +            'ceil', 'eval', 'round', 'floor',
        +            'atoi', 'atol', 'abs', 'cos', 'sin', 'tan', 'acos', 'asin', 'atan', 'exp',
        +            'time', 'ctime', 'localtime', 'asctime', 'gmtime', 'difftime', 'date'
        +            ),
        +        4 => array(//fonctions KLone usuelles
        +            'request_get_cookies', 'request_get_cookie', 'request_get_args', 'request_get_arg',
        +            'request_io', 'request_get_uri', 'request_get_filename', 'request_get_query_string', 'request_get_path_info',
        +            'request_get_if_modified_since', 'request_get_http', 'request_get_client_request',
        +            'request_get_content_length', 'request_get_uploads', 'request_get_uploaded_file',
        +            'request_get_method', 'request_get_protocol', 'request_get_resolved_filename',
        +            'request_get_resolved_path_info', 'request_get_addr', 'request_get_peer_addr',
        +            'request_get_header', 'request_get_field', 'request_get_field_value',
        +            'response_set_content_encoding', 'response_disable_caching', 'response_enable_caching',
        +            'response_set_cookie', 'response_set_method', 'response_get_method',
        +            'response_print_header', 'response_set_field', 'response_del_field',
        +            'response_set_content_type', 'response_set_date', 'response_set_last_modified',
        +            'response_set_content_length', 'response_get_status', 'response_get_header',
        +            'response_io', 'response_redirect', 'response_set_status',
        +            'session_get_vars', 'session_get', 'session_set', 'session_age', 'session_clean', 'session_del',
        +            'io_type', 'io_pipe', 'io_dup', 'io_copy', 'io_seek', 'io_tell', 'io_close',
        +            'io_free', 'io_read', 'io_printf', 'io_flush', 'io_write', 'io_putc', 'io_getc',
        +            'io_get_until', 'io_gets', 'io_codec_add_head', 'io_codec_add_tail',
        +            'io_codecs_remove', 'io_name_set', 'io_name_get'
        +            ),
        +        5 => array(//types C
        +            'auto', 'char', 'const', 'double',  'float', 'int', 'long',
        +            'register', 'short', 'signed', 'sizeof', 'static', 'string', 'struct',
        +            'typedef', 'union', 'unsigned', 'void', 'volatile',
        +            'wchar_t', 'time_t', 'FILE'
        +            ),
        +        6 => array(//mots-cles HTML
        +            'a', 'abbr', 'acronym', 'address', 'applet',
        +
        +            'base', 'basefont', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'b',
        +
        +            'caption', 'center', 'cite', 'code', 'colgroup', 'col',
        +
        +            'dd', 'del', 'dfn', 'dir', 'div', 'dl', 'dt',
        +
        +            'em',
        +
        +            'fieldset', 'font', 'form', 'frame', 'frameset',
        +
        +            'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'hr', 'html',
        +
        +            'iframe', 'ilayer', 'img', 'input', 'ins', 'isindex', 'i',
        +
        +            'kbd',
        +
        +            'label', 'legend', 'link', 'li',
        +
        +            'map', 'meta',
        +
        +            'noframes', 'noscript',
        +
        +            'object', 'ol', 'optgroup', 'option',
        +
        +            'param', 'pre', 'p',
        +
        +            'q',
        +
        +            'samp', 'script', 'select', 'small', 'span', 'strike', 'strong', 'style', 'sub', 'sup', 's',
        +
        +            'table', 'tbody', 'td', 'textarea', 'text', 'tfoot', 'thead', 'th', 'title', 'tr', 'tt',
        +
        +            'ul', 'u',
        +
        +            'var',
        +            ),
        +        7 => array(//autres mots-cles HTML
        +            'abbr', 'accept-charset', 'accept', 'accesskey', 'action', 'align', 'alink', 'alt', 'archive', 'axis',
        +            'background', 'bgcolor', 'border',
        +            'cellpadding', 'cellspacing', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 'coords',
        +            'data', 'datetime', 'declare', 'defer', 'dir', 'disabled',
        +            'enctype',
        +            'face', 'for', 'frame', 'frameborder',
        +            'headers', 'height', 'href', 'hreflang', 'hspace', 'http-equiv',
        +            'id', 'ismap',
        +            'label', 'lang', 'language', 'link', 'longdesc',
        +            'marginheight', 'marginwidth', 'maxlength', 'media', 'method', 'multiple',
        +            'name', 'nohref', 'noresize', 'noshade', 'nowrap',
        +            'object', 'onblur', 'onchange', 'onclick', 'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onreset', 'onselect', 'onsubmit', 'onunload',
        +            'profile', 'prompt',
        +            'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules',
        +            'scheme', 'scope', 'scrolling', 'selected', 'shape', 'size', 'span', 'src', 'standby', 'start', 'style', 'summary',
        +            'tabindex', 'target', 'text', 'title', 'type',
        +            'usemap',
        +            'valign', 'value', 'valuetype', 'version', 'vlink', 'vspace',
        +            'width'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        1 => array(
        +            '<%=', '<%!', '<%', '%>'
        +            ),
        +        0 => array(
        +            '(', ')', '[', ']', '{', '}',
        +            '!', '%', '&', '|', '/',
        +            '<', '>',
        +            '=', '-', '+', '*',
        +            '.', ':', ',', ';', '^'
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        6 => false,
        +        7 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100; font-weight: bold;',//pour les mots-cles C
        +            2 => 'color: #000000; font-weight: bold;',//pour les mots-cles KLone
        +            3 => 'color: #6600FF;',//pour les fonctions C
        +            4 => 'color: #6600FF;',//pour les fonctions Klone
        +            5 => 'color: #0099FF; font-weight: bold;',//pour les types C
        +            6 => 'color: #990099; font-weight: bold;',//pour les mots-cles HTML
        +            7 => 'color: #000066;'//pour les autres mots-cles HTML
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',//commentaire sur une ligne C et KLone
        +            2 => 'color: #339933;',//pour les #... en C
        +            'MULTI' => 'color: #808080; font-style: italic;'//commentaire sur plusieurs lignes C et KLone
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;',
        +            2 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000000;',
        +            1 => 'color: #000000; font-weight: bold;'
        +            ),
        +        'REGEXPS' => array(),
        +        'SCRIPT' => array(
        +            0 => 'background-color:#ffccff; font-weight: bold; color:#000000;',
        +            1 => '',
        +            2 => '',
        +            3 => 'color: #00bbdd; font-weight: bold;',
        +            4 => 'color: #ddbb00;',
        +            5 => 'color: #009900;'
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAMEL}.html',
        +        4 => 'http://www.koanlogic.com/klone/api/html/globals.html',
        +        5 => '',
        +        6 => 'http://december.com/html/4/element/{FNAMEL}.html',
        +        7 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.',
        +        2 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
        +    'SCRIPT_DELIMITERS' => array(
        +        //delimiteurs pour KLone
        +        0 => array(
        +            '<%=' => '%>'
        +            ),
        +        1 => array(
        +            '<%!' => '%>'
        +            ),
        +        2 => array(
        +            '<%' => '%>'
        +            ),
        +        //delimiteur pour HTML
        +        3 => array(
        +            ' '>'
        +            ),
        +        4 => array(
        +            '&' => ';'
        +            ),
        +        5 => array(
        +            '<' => '>'
        +            )
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => false,
        +        1 => true,
        +        2 => true,
        +        3 => false,
        +        4 => false,
        +        5 => true
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            6 => array(
        +                'DISALLOWED_BEFORE' => '(?<=<|<\/)',
        +                'DISALLOWED_AFTER' => '(?=\s|\/|>)',
        +            ),
        +            7 => array(
        +                'DISALLOWED_AFTER' => '(?=\s*=)',
        +            )
        +        )
        +    )
        +);
        diff --git a/includes/geshi/klonecpp.php b/includes/geshi/klonecpp.php
        new file mode 100644
        index 0000000..e11015e
        --- /dev/null
        +++ b/includes/geshi/klonecpp.php
        @@ -0,0 +1,308 @@
        + 'KLone C++',
        +    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),//#pour precede les include de C
        +    'COMMENT_MULTI' => array('/*' => '*/', '' ),//comentaires C et KLone suivi de ceux pour HTML
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(//mots-cles C++
        +            'if', 'return', 'while', 'case', 'continue', 'default',
        +            'do', 'else', 'for', 'switch', 'goto',
        +            'break', 'true', 'enum', 'extern', 'inline', 'false',
        +            'errno', 'stdin', 'stdout', 'stderr',
        +            'virtual', 'public', 'private', 'protected', 'template', 'using', 'namespace',
        +            'try', 'catch', 'dynamic_cast', 'const_cast', 'reinterpret_cast',
        +            'static_cast', 'explicit', 'friend', 'typename', 'typeid', 'class',
        +            'EDOM', 'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',
        +            'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',
        +            'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',
        +            'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',
        +            'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',
        +            'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',
        +            'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',
        +            'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',
        +            'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam', 'NULL',
        +            'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX',
        +            'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC'
        +            ),
        +        2 => array(//mots-cles KLone
        +            'out', 'request', 'response',
        +            ),
        +        3 => array(//fonctions C++ usuelles
        +            'cin', 'cerr', 'clog', 'cout', 'delete', 'new', 'this',
        +            'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
        +            'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',
        +            'ispunct', 'isspace', 'isupper', 'isxdigit', 'tolower', 'toupper',
        +            'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',
        +            'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',
        +            'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp',
        +            'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',
        +            'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',
        +            'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',
        +            'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',
        +            'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',
        +            'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',
        +            'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',
        +            'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',
        +            'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',
        +            'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',
        +            'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',
        +            'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',
        +            'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
        +            ),
        +        4 => array(//fonctions KLone usuelles
        +            'request_get_cookies', 'request_get_cookie', 'request_get_args', 'request_get_arg',
        +            'request_io', 'request_get_uri', 'request_get_filename', 'request_get_query_string', 'request_get_path_info',
        +            'request_get_if_modified_since', 'request_get_http', 'request_get_client_request',
        +            'request_get_content_length', 'request_get_uploads', 'request_get_uploaded_file',
        +            'request_get_method', 'request_get_protocol', 'request_get_resolved_filename',
        +            'request_get_resolved_path_info', 'request_get_addr', 'request_get_peer_addr',
        +            'request_get_header', 'request_get_field', 'request_get_field_value',
        +            'response_set_content_encoding', 'response_disable_caching', 'response_enable_caching',
        +            'response_set_cookie', 'response_set_method', 'response_get_method',
        +            'response_print_header', 'response_set_field', 'response_del_field',
        +            'response_set_content_type', 'response_set_date', 'response_set_last_modified',
        +            'response_set_content_length', 'response_get_status', 'response_get_header',
        +            'response_io', 'response_redirect', 'response_set_status',
        +            'session_get_vars', 'session_get', 'session_set', 'session_age', 'session_clean', 'session_del',
        +            'io_type', 'io_pipe', 'io_dup', 'io_copy', 'io_seek', 'io_tell', 'io_close',
        +            'io_free', 'io_read', 'io_printf', 'io_flush', 'io_write', 'io_putc', 'io_getc',
        +            'io_get_until', 'io_gets', 'io_codec_add_head', 'io_codec_add_tail',
        +            'io_codecs_remove', 'io_name_set', 'io_name_get'
        +            ),
        +        5 => array(//types C++
        +            'auto', 'bool', 'char', 'const', 'double', 'float', 'int', 'long', 'longint',
        +            'register', 'short', 'shortint', 'signed', 'static', 'struct',
        +            'typedef', 'union', 'unsigned', 'void', 'volatile', 'jmp_buf',
        +            'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',
        +            'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm',
        +            'string', 'wchar_t'
        +            ),
        +        6 => array(//mots-cles HTML
        +            'a', 'abbr', 'acronym', 'address', 'applet',
        +
        +            'base', 'basefont', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'b',
        +
        +            'caption', 'center', 'cite', 'code', 'colgroup', 'col',
        +
        +            'dd', 'del', 'dfn', 'dir', 'div', 'dl', 'dt',
        +
        +            'em',
        +
        +            'fieldset', 'font', 'form', 'frame', 'frameset',
        +
        +            'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'hr', 'html',
        +
        +            'iframe', 'ilayer', 'img', 'input', 'ins', 'isindex', 'i',
        +
        +            'kbd',
        +
        +            'label', 'legend', 'link', 'li',
        +
        +            'map', 'meta',
        +
        +            'noframes', 'noscript',
        +
        +            'object', 'ol', 'optgroup', 'option',
        +
        +            'param', 'pre', 'p',
        +
        +            'q',
        +
        +            'samp', 'script', 'select', 'small', 'span', 'strike', 'strong', 'style', 'sub', 'sup', 's',
        +
        +            'table', 'tbody', 'td', 'textarea', 'text', 'tfoot', 'thead', 'th', 'title', 'tr', 'tt',
        +
        +            'ul', 'u',
        +
        +            'var',
        +            ),
        +        7 => array(//autres mots-cles HTML
        +            'abbr', 'accept-charset', 'accept', 'accesskey', 'action', 'align', 'alink', 'alt', 'archive', 'axis',
        +            'background', 'bgcolor', 'border',
        +            'cellpadding', 'cellspacing', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 'coords',
        +            'data', 'datetime', 'declare', 'defer', 'dir', 'disabled',
        +            'enctype',
        +            'face', 'for', 'frame', 'frameborder',
        +            'headers', 'height', 'href', 'hreflang', 'hspace', 'http-equiv',
        +            'id', 'ismap',
        +            'label', 'lang', 'language', 'link', 'longdesc',
        +            'marginheight', 'marginwidth', 'maxlength', 'media', 'method', 'multiple',
        +            'name', 'nohref', 'noresize', 'noshade', 'nowrap',
        +            'object', 'onblur', 'onchange', 'onclick', 'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onreset', 'onselect', 'onsubmit', 'onunload',
        +            'profile', 'prompt',
        +            'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules',
        +            'scheme', 'scope', 'scrolling', 'selected', 'shape', 'size', 'span', 'src', 'standby', 'start', 'style', 'summary',
        +            'tabindex', 'target', 'text', 'title', 'type',
        +            'usemap',
        +            'valign', 'value', 'valuetype', 'version', 'vlink', 'vspace',
        +            'width'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        1 => array(
        +            '<%=', '<%!', '<%', '%>'
        +            ),
        +        0 => array(
        +            '(', ')', '[', ']', '{', '}',
        +            '!', '%', '&', '|', '/',
        +            '<', '>',
        +            '=', '-', '+', '*',
        +            '.', ':', ',', ';', '^'
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        6 => false,
        +        7 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100; font-weight: bold;',//pour les mots-cles C++
        +            2 => 'color: #000000; font-weight: bold;',//pour les mots-cles KLone
        +            3 => 'color: #6600FF;',//pour les fonctions C++
        +            4 => 'color: #6600FF;',//pour les fonctions Klone
        +            5 => 'color: #0099FF; font-weight: bold;',//pour les types C++
        +            6 => 'color: #990099; font-weight: bold;',//pour les mots-cles HTML
        +            7 => 'color: #000066;'//pour les autres mots-cles HTML
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',//commentaire sur une ligne C++ et KLone
        +            2 => 'color: #339933;',//pour les #... en C++
        +            'MULTI' => 'color: #808080; font-style: italic;'//commentaire sur plusieurs lignes C++ et KLone
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;',
        +            2 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000000;',
        +            1 => 'color: #000000; font-weight: bold;'
        +            ),
        +        'REGEXPS' => array(),
        +        'SCRIPT' => array(
        +            0 => 'background-color:#ffccff; font-weight: bold; color:#000000;',
        +            1 => '',
        +            2 => '',
        +            3 => 'color: #00bbdd; font-weight: bold;',
        +            4 => 'color: #ddbb00;',
        +            5 => 'color: #009900;'
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAMEL}.html',
        +        4 => 'http://www.koanlogic.com/klone/api/html/globals.html',
        +        5 => '',
        +        6 => 'http://december.com/html/4/element/{FNAMEL}.html',
        +        7 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.',
        +        2 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
        +    'SCRIPT_DELIMITERS' => array(
        +        //delimiteurs pour KLone
        +        0 => array(
        +            '<%=' => '%>'
        +            ),
        +        1 => array(
        +            '<%!' => '%>'
        +            ),
        +        2 => array(
        +            '<%' => '%>'
        +            ),
        +        //delimiteur pour HTML
        +        3 => array(
        +            ' '>'
        +            ),
        +        4 => array(
        +            '&' => ';'
        +            ),
        +        5 => array(
        +            '<' => '>'
        +            )
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => false,
        +        1 => true,
        +        2 => true,
        +        3 => false,
        +        4 => false,
        +        5 => true
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            6 => array(
        +                'DISALLOWED_BEFORE' => '(?<=<|<\/)',
        +                'DISALLOWED_AFTER' => '(?=\s|\/|>)',
        +            ),
        +            7 => array(
        +                'DISALLOWED_AFTER' => '(?=\s*=)',
        +            )
        +        )
        +    )
        +);
        diff --git a/includes/geshi/kotlin.php b/includes/geshi/kotlin.php
        new file mode 100644
        index 0000000..c84787d
        --- /dev/null
        +++ b/includes/geshi/kotlin.php
        @@ -0,0 +1,959 @@
        + 'Kotlin',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        //Import and Package directives (Basic Support only)
        +        2 => '/(?:(?<=import[\\n\\s])|(?<=package[\\n\\s]))[\\n\\s]*([a-zA-Z0-9_]+\\.)*([a-zA-Z0-9_]+|\*)(?=[\n\s;])/i',
        +        // javadoc comments
        +        3 => '#/\*\*(?![\*\/]).*\*/#sU'
        +    ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'fun', 'var', 'val', 'typeof', 'typealias', 'suspend',
        +            'for', 'if', 'else', 'while', 'do',
        +            'when', 'return', 'public', 'get', 'set',
        +            'private', 'protected', 'internal', 'break', 'class', 'object',
        +            'companion', 'data', 'sealed', 'open', 'operator',
        +            'try', 'catch', 'finally', 'inner', 'constructor', 'init',
        +            'interface', 'throw', 'final', 'external', 'this',
        +            'abstract', 'is', '!is', 'as', 'as?', 'continue',
        +            'default', 'enum', 'package', 'super', 'where',
        +            'const', 'import', 'in', '!in', 'out', 'override',
        +            'reified', 'inline', 'noinline', 'crossinline'
        +        ),
        +        2 => array(
        +            'null', 'false', 'true'
        +        ),
        +        3 => array(
        +            'AbstractAction', 'AbstractBorder', 'AbstractButton',
        +            'AbstractCellEditor', 'AbstractCollection',
        +            'AbstractColorChooserPanel', 'AbstractDocument',
        +            'AbstractDocument.AttributeContext',
        +            'AbstractDocument.Content',
        +            'AbstractDocument.ElementEdit',
        +            'AbstractLayoutCache',
        +            'AbstractLayoutCache.NodeDimensions', 'AbstractList',
        +            'AbstractListModel', 'AbstractMap',
        +            'AbstractMethodError', 'AbstractSequentialList',
        +            'AbstractSet', 'AbstractTableModel',
        +            'AbstractUndoableEdit', 'AbstractWriter',
        +            'AccessControlContext', 'AccessControlException',
        +            'AccessController', 'AccessException', 'Accessible',
        +            'AccessibleAction', 'AccessibleBundle',
        +            'AccessibleComponent', 'AccessibleContext',
        +            'AccessibleHyperlink', 'AccessibleHypertext',
        +            'AccessibleIcon', 'AccessibleObject',
        +            'AccessibleRelation', 'AccessibleRelationSet',
        +            'AccessibleResourceBundle', 'AccessibleRole',
        +            'AccessibleSelection', 'AccessibleState',
        +            'AccessibleStateSet', 'AccessibleTable',
        +            'AccessibleTableModelChange', 'AccessibleText',
        +            'AccessibleValue', 'Acl', 'AclEntry',
        +            'AclNotFoundException', 'Action', 'ActionEvent',
        +            'ActionListener', 'ActionMap', 'ActionMapUIResource',
        +            'Activatable', 'ActivateFailedException',
        +            'ActivationDesc', 'ActivationException',
        +            'ActivationGroup', 'ActivationGroupDesc',
        +            'ActivationGroupDesc.CommandEnvironment',
        +            'ActivationGroupID', 'ActivationID',
        +            'ActivationInstantiator', 'ActivationMonitor',
        +            'ActivationSystem', 'Activator', 'ActiveEvent',
        +            'Adjustable', 'AdjustmentEvent',
        +            'AdjustmentListener', 'Adler32', 'AffineTransform',
        +            'AffineTransformOp', 'AlgorithmParameterGenerator',
        +            'AlgorithmParameterGeneratorSpi',
        +            'AlgorithmParameters', 'AlgorithmParameterSpec',
        +            'AlgorithmParametersSpi', 'AllPermission',
        +            'AlphaComposite', 'AlreadyBound',
        +            'AlreadyBoundException', 'AlreadyBoundHelper',
        +            'AlreadyBoundHolder', 'AncestorEvent',
        +            'AncestorListener', 'Annotation', 'AnyHolder',
        +            'AnySeqHelper', 'AnySeqHolder', 'Applet',
        +            'AppletContext', 'AppletInitializer', 'AppletStub',
        +            'ApplicationException', 'Arc2D', 'Arc2D.Double',
        +            'Arc2D.Float', 'Area', 'AreaAveragingScaleFilter',
        +            'ARG_IN', 'ARG_INOUT', 'ARG_OUT',
        +            'ArithmeticException', 'Array',
        +            'ArrayIndexOutOfBoundsException', 'ArrayList',
        +            'Arrays', 'ArrayStoreException', 'AsyncBoxView',
        +            'Attribute', 'AttributedCharacterIterator',
        +            'AttributedCharacterIterator.Attribute',
        +            'AttributedString', 'AttributeInUseException',
        +            'AttributeList', 'AttributeModificationException',
        +            'Attributes', 'Attributes.Name', 'AttributeSet',
        +            'AttributeSet.CharacterAttribute',
        +            'AttributeSet.ColorAttribute',
        +            'AttributeSet.FontAttribute',
        +            'AttributeSet.ParagraphAttribute', 'AudioClip',
        +            'AudioFileFormat', 'AudioFileFormat.Type',
        +            'AudioFileReader', 'AudioFileWriter', 'AudioFormat',
        +            'AudioFormat.Encoding', 'AudioInputStream',
        +            'AudioPermission', 'AudioSystem',
        +            'AuthenticationException',
        +            'AuthenticationNotSupportedException',
        +            'Authenticator', 'Autoscroll', 'AWTError',
        +            'AWTEvent', 'AWTEventListener',
        +            'AWTEventMulticaster', 'AWTException',
        +            'AWTPermission', 'BadKind', 'BadLocationException',
        +            'BAD_CONTEXT', 'BAD_INV_ORDER', 'BAD_OPERATION',
        +            'BAD_PARAM', 'BAD_POLICY', 'BAD_POLICY_TYPE',
        +            'BAD_POLICY_VALUE', 'BAD_TYPECODE', 'BandCombineOp',
        +            'BandedSampleModel', 'BasicArrowButton',
        +            'BasicAttribute', 'BasicAttributes', 'BasicBorders',
        +            'BasicBorders.ButtonBorder',
        +            'BasicBorders.FieldBorder',
        +            'BasicBorders.MarginBorder',
        +            'BasicBorders.MenuBarBorder',
        +            'BasicBorders.RadioButtonBorder',
        +            'BasicBorders.SplitPaneBorder',
        +            'BasicBorders.ToggleButtonBorder',
        +            'BasicButtonListener', 'BasicButtonUI',
        +            'BasicCheckBoxMenuItemUI', 'BasicCheckBoxUI',
        +            'BasicColorChooserUI', 'BasicComboBoxEditor',
        +            'BasicComboBoxEditor.UIResource',
        +            'BasicComboBoxRenderer',
        +            'BasicComboBoxRenderer.UIResource',
        +            'BasicComboBoxUI', 'BasicComboPopup',
        +            'BasicDesktopIconUI', 'BasicDesktopPaneUI',
        +            'BasicDirectoryModel', 'BasicEditorPaneUI',
        +            'BasicFileChooserUI', 'BasicGraphicsUtils',
        +            'BasicHTML', 'BasicIconFactory',
        +            'BasicInternalFrameTitlePane',
        +            'BasicInternalFrameUI', 'BasicLabelUI',
        +            'BasicListUI', 'BasicLookAndFeel', 'BasicMenuBarUI',
        +            'BasicMenuItemUI', 'BasicMenuUI',
        +            'BasicOptionPaneUI',
        +            'BasicOptionPaneUI.ButtonAreaLayout', 'BasicPanelUI',
        +            'BasicPasswordFieldUI', 'BasicPermission',
        +            'BasicPopupMenuSeparatorUI', 'BasicPopupMenuUI',
        +            'BasicProgressBarUI', 'BasicRadioButtonMenuItemUI',
        +            'BasicRadioButtonUI', 'BasicRootPaneUI',
        +            'BasicScrollBarUI', 'BasicScrollPaneUI',
        +            'BasicSeparatorUI', 'BasicSliderUI',
        +            'BasicSplitPaneDivider', 'BasicSplitPaneUI',
        +            'BasicStroke', 'BasicTabbedPaneUI',
        +            'BasicTableHeaderUI', 'BasicTableUI',
        +            'BasicTextAreaUI', 'BasicTextFieldUI',
        +            'BasicTextPaneUI', 'BasicTextUI',
        +            'BasicTextUI.BasicCaret',
        +            'BasicTextUI.BasicHighlighter',
        +            'BasicToggleButtonUI', 'BasicToolBarSeparatorUI',
        +            'BasicToolBarUI', 'BasicToolTipUI', 'BasicTreeUI',
        +            'BasicViewportUI', 'BatchUpdateException',
        +            'BeanContext', 'BeanContextChild',
        +            'BeanContextChildComponentProxy',
        +            'BeanContextChildSupport',
        +            'BeanContextContainerProxy', 'BeanContextEvent',
        +            'BeanContextMembershipEvent',
        +            'BeanContextMembershipListener', 'BeanContextProxy',
        +            'BeanContextServiceAvailableEvent',
        +            'BeanContextServiceProvider',
        +            'BeanContextServiceProviderBeanInfo',
        +            'BeanContextServiceRevokedEvent',
        +            'BeanContextServiceRevokedListener',
        +            'BeanContextServices', 'BeanContextServicesListener',
        +            'BeanContextServicesSupport',
        +            'BeanContextServicesSupport.BCSSServiceProvider',
        +            'BeanContextSupport',
        +            'BeanContextSupport.BCSIterator', 'BeanDescriptor',
        +            'BeanInfo', 'Beans', 'BevelBorder', 'BigDecimal',
        +            'BigInteger', 'BinaryRefAddr', 'BindException',
        +            'Binding', 'BindingHelper', 'BindingHolder',
        +            'BindingIterator', 'BindingIteratorHelper',
        +            'BindingIteratorHolder', 'BindingIteratorOperations',
        +            'BindingListHelper', 'BindingListHolder',
        +            'BindingType', 'BindingTypeHelper',
        +            'BindingTypeHolder', 'BitSet', 'Blob', 'BlockView',
        +            'Book', 'BooleanControl',
        +            'BooleanControl.Type', 'BooleanHolder',
        +            'BooleanSeqHelper', 'BooleanSeqHolder', 'Border',
        +            'BorderFactory', 'BorderLayout', 'BorderUIResource',
        +            'BorderUIResource.BevelBorderUIResource',
        +            'BorderUIResource.CompoundBorderUIResource',
        +            'BorderUIResource.EmptyBorderUIResource',
        +            'BorderUIResource.EtchedBorderUIResource',
        +            'BorderUIResource.LineBorderUIResource',
        +            'BorderUIResource.MatteBorderUIResource',
        +            'BorderUIResource.TitledBorderUIResource',
        +            'BoundedRangeModel', 'Bounds', 'Box', 'Box.Filler',
        +            'BoxedValueHelper', 'BoxLayout', 'BoxView',
        +            'BreakIterator', 'BufferedImage',
        +            'BufferedImageFilter', 'BufferedImageOp',
        +            'BufferedInputStream', 'BufferedOutputStream',
        +            'BufferedReader', 'BufferedWriter', 'Button',
        +            'ButtonGroup', 'ButtonModel', 'ButtonUI',
        +            'ByteArrayInputStream', 'ByteArrayOutputStream',
        +            'ByteHolder', 'ByteLookupTable', 'Calendar',
        +            'CallableStatement', 'CannotProceed',
        +            'CannotProceedException', 'CannotProceedHelper',
        +            'CannotProceedHolder', 'CannotRedoException',
        +            'CannotUndoException', 'Canvas', 'CardLayout',
        +            'Caret', 'CaretEvent', 'CaretListener', 'CellEditor',
        +            'CellEditorListener', 'CellRendererPane',
        +            'Certificate', 'Certificate.CertificateRep',
        +            'CertificateEncodingException',
        +            'CertificateException',
        +            'CertificateExpiredException', 'CertificateFactory',
        +            'CertificateFactorySpi',
        +            'CertificateNotYetValidException',
        +            'CertificateParsingException',
        +            'ChangedCharSetException', 'ChangeEvent',
        +            'ChangeListener', 'Character', 'Character.Subset',
        +            'Character.UnicodeBlock', 'CharacterIterator',
        +            'CharArrayReader', 'CharArrayWriter',
        +            'CharConversionException', 'CharHolder',
        +            'CharSeqHelper', 'CharSeqHolder', 'Checkbox',
        +            'CheckboxGroup', 'CheckboxMenuItem',
        +            'CheckedInputStream', 'CheckedOutputStream',
        +            'Checksum', 'Choice', 'ChoiceFormat', 'Class',
        +            'ClassCastException', 'ClassCircularityError',
        +            'ClassDesc', 'ClassFormatError', 'ClassLoader',
        +            'ClassNotFoundException', 'Clip', 'Clipboard',
        +            'ClipboardOwner', 'Clob', 'Cloneable',
        +            'CloneNotSupportedException', 'CMMException',
        +            'CodeSource', 'CollationElementIterator',
        +            'CollationKey', 'Collator', 'Collection',
        +            'Collections', 'Color',
        +            'ColorChooserComponentFactory', 'ColorChooserUI',
        +            'ColorConvertOp', 'ColorModel',
        +            'ColorSelectionModel', 'ColorSpace',
        +            'ColorUIResource', 'ComboBoxEditor', 'ComboBoxModel',
        +            'ComboBoxUI', 'ComboPopup', 'CommunicationException',
        +            'COMM_FAILURE', 'Comparable', 'Comparator',
        +            'Compiler', 'CompletionStatus',
        +            'CompletionStatusHelper', 'Component',
        +            'ComponentAdapter', 'ComponentColorModel',
        +            'ComponentEvent', 'ComponentInputMap',
        +            'ComponentInputMapUIResource', 'ComponentListener',
        +            'ComponentOrientation', 'ComponentSampleModel',
        +            'ComponentUI', 'ComponentView', 'Composite',
        +            'CompositeContext', 'CompositeName', 'CompositeView',
        +            'CompoundBorder', 'CompoundControl',
        +            'CompoundControl.Type', 'CompoundEdit',
        +            'CompoundName', 'ConcurrentModificationException',
        +            'ConfigurationException', 'ConnectException',
        +            'ConnectIOException', 'Connection', 'Constructor', 'Container',
        +            'ContainerAdapter', 'ContainerEvent',
        +            'ContainerListener', 'ContentHandler',
        +            'ContentHandlerFactory', 'ContentModel', 'Context',
        +            'ContextList', 'ContextNotEmptyException',
        +            'ContextualRenderedImageFactory', 'Control',
        +            'Control.Type', 'ControlFactory',
        +            'ControllerEventListener', 'ConvolveOp', 'CRC32',
        +            'CRL', 'CRLException', 'CropImageFilter', 'CSS',
        +            'CSS.Attribute', 'CTX_RESTRICT_SCOPE',
        +            'CubicCurve2D', 'CubicCurve2D.Double',
        +            'CubicCurve2D.Float', 'Current', 'CurrentHelper',
        +            'CurrentHolder', 'CurrentOperations', 'Cursor',
        +            'Customizer', 'CustomMarshal', 'CustomValue',
        +            'DatabaseMetaData', 'DataBuffer', 'DataBufferByte',
        +            'DataBufferInt', 'DataBufferShort',
        +            'DataBufferUShort', 'DataFlavor',
        +            'DataFormatException', 'DatagramPacket',
        +            'DatagramSocket', 'DatagramSocketImpl',
        +            'DatagramSocketImplFactory', 'DataInput',
        +            'DataInputStream', 'DataLine', 'DataLine.Info',
        +            'DataOutput', 'DataOutputStream',
        +            'DataTruncation', 'DATA_CONVERSION', 'Date',
        +            'DateFormat', 'DateFormatSymbols', 'DebugGraphics',
        +            'DecimalFormat', 'DecimalFormatSymbols',
        +            'DefaultBoundedRangeModel', 'DefaultButtonModel',
        +            'DefaultCaret', 'DefaultCellEditor',
        +            'DefaultColorSelectionModel', 'DefaultComboBoxModel',
        +            'DefaultDesktopManager', 'DefaultEditorKit',
        +            'DefaultEditorKit.BeepAction',
        +            'DefaultEditorKit.CopyAction',
        +            'DefaultEditorKit.CutAction',
        +            'DefaultEditorKit.DefaultKeyTypedAction',
        +            'DefaultEditorKit.InsertBreakAction',
        +            'DefaultEditorKit.InsertContentAction',
        +            'DefaultEditorKit.InsertTabAction',
        +            'DefaultEditorKit.PasteAction,',
        +            'DefaultFocusManager', 'DefaultHighlighter',
        +            'DefaultHighlighter.DefaultHighlightPainter',
        +            'DefaultListCellRenderer',
        +            'DefaultListCellRenderer.UIResource',
        +            'DefaultListModel', 'DefaultListSelectionModel',
        +            'DefaultMenuLayout', 'DefaultMetalTheme',
        +            'DefaultMutableTreeNode',
        +            'DefaultSingleSelectionModel',
        +            'DefaultStyledDocument',
        +            'DefaultStyledDocument.AttributeUndoableEdit',
        +            'DefaultStyledDocument.ElementSpec',
        +            'DefaultTableCellRenderer',
        +            'DefaultTableCellRenderer.UIResource',
        +            'DefaultTableColumnModel', 'DefaultTableModel',
        +            'DefaultTextUI', 'DefaultTreeCellEditor',
        +            'DefaultTreeCellRenderer', 'DefaultTreeModel',
        +            'DefaultTreeSelectionModel', 'DefinitionKind',
        +            'DefinitionKindHelper', 'Deflater',
        +            'DeflaterOutputStream', 'Delegate', 'DesignMode',
        +            'DesktopIconUI', 'DesktopManager', 'DesktopPaneUI',
        +            'DGC', 'Dialog', 'Dictionary', 'DigestException',
        +            'DigestInputStream', 'DigestOutputStream',
        +            'Dimension', 'Dimension2D', 'DimensionUIResource',
        +            'DirContext', 'DirectColorModel', 'DirectoryManager',
        +            'DirObjectFactory', 'DirStateFactory',
        +            'DirStateFactory.Result', 'DnDConstants', 'Document',
        +            'DocumentEvent', 'DocumentEvent.ElementChange',
        +            'DocumentEvent.EventType', 'DocumentListener',
        +            'DocumentParser', 'DomainCombiner', 'DomainManager',
        +            'DomainManagerOperations', 'DoubleHolder',
        +            'DoubleSeqHelper', 'DoubleSeqHolder',
        +            'DragGestureEvent', 'DragGestureListener',
        +            'DragGestureRecognizer', 'DragSource',
        +            'DragSourceContext', 'DragSourceDragEvent',
        +            'DragSourceDropEvent', 'DragSourceEvent',
        +            'DragSourceListener', 'Driver', 'DriverManager',
        +            'DriverPropertyInfo', 'DropTarget',
        +            'DropTarget.DropTargetAutoScroller',
        +            'DropTargetContext', 'DropTargetDragEvent',
        +            'DropTargetDropEvent', 'DropTargetEvent',
        +            'DropTargetListener', 'DSAKey',
        +            'DSAKeyPairGenerator', 'DSAParameterSpec',
        +            'DSAParams', 'DSAPrivateKey', 'DSAPrivateKeySpec',
        +            'DSAPublicKey', 'DSAPublicKeySpec', 'DTD',
        +            'DTDConstants', 'DynamicImplementation', 'DynAny',
        +            'DynArray', 'DynEnum', 'DynFixed', 'DynSequence',
        +            'DynStruct', 'DynUnion', 'DynValue', 'EditorKit',
        +            'Element', 'ElementIterator', 'Ellipse2D',
        +            'Ellipse2D.Double', 'Ellipse2D.Float', 'EmptyBorder',
        +            'EmptyStackException', 'EncodedKeySpec', 'Entity',
        +            'EnumControl', 'EnumControl.Type', 'Enumeration',
        +            'Environment', 'EOFException', 'Error',
        +            'EtchedBorder', 'Event', 'EventContext',
        +            'EventDirContext', 'EventListener',
        +            'EventListenerList', 'EventObject', 'EventQueue',
        +            'EventSetDescriptor', 'Exception',
        +            'ExceptionInInitializerError', 'ExceptionList',
        +            'ExpandVetoException', 'ExportException',
        +            'ExtendedRequest', 'ExtendedResponse',
        +            'Externalizable', 'FeatureDescriptor', 'Field',
        +            'FieldNameHelper', 'FieldPosition', 'FieldView',
        +            'File', 'FileChooserUI', 'FileDescriptor',
        +            'FileDialog', 'FileFilter',
        +            'FileInputStream', 'FilenameFilter', 'FileNameMap',
        +            'FileNotFoundException', 'FileOutputStream',
        +            'FilePermission', 'FileReader', 'FileSystemView',
        +            'FileView', 'FileWriter', 'FilteredImageSource',
        +            'FilterInputStream', 'FilterOutputStream',
        +            'FilterReader', 'FilterWriter',
        +            'FixedHeightLayoutCache', 'FixedHolder',
        +            'FlatteningPathIterator', 'FlavorMap',
        +            'FloatControl', 'FloatControl.Type', 'FloatHolder',
        +            'FloatSeqHelper', 'FloatSeqHolder', 'FlowLayout',
        +            'FlowView', 'FlowView.FlowStrategy', 'FocusAdapter',
        +            'FocusEvent', 'FocusListener', 'FocusManager',
        +            'Font', 'FontFormatException', 'FontMetrics',
        +            'FontRenderContext', 'FontUIResource', 'Format',
        +            'FormatConversionProvider', 'FormView', 'Frame',
        +            'FREE_MEM', 'GapContent', 'GeneralPath',
        +            'GeneralSecurityException', 'GlyphJustificationInfo',
        +            'GlyphMetrics', 'GlyphVector', 'GlyphView',
        +            'GlyphView.GlyphPainter', 'GradientPaint',
        +            'GraphicAttribute', 'Graphics', 'Graphics2D',
        +            'GraphicsConfigTemplate', 'GraphicsConfiguration',
        +            'GraphicsDevice', 'GraphicsEnvironment',
        +            'GrayFilter', 'GregorianCalendar',
        +            'GridBagConstraints', 'GridBagLayout', 'GridLayout',
        +            'Group', 'Guard', 'GuardedObject', 'GZIPInputStream',
        +            'GZIPOutputStream', 'HasControls', 'HashMap',
        +            'HashSet', 'Hashtable', 'HierarchyBoundsAdapter',
        +            'HierarchyBoundsListener', 'HierarchyEvent',
        +            'HierarchyListener', 'Highlighter',
        +            'Highlighter.Highlight',
        +            'Highlighter.HighlightPainter', 'HTML',
        +            'HTML.Attribute', 'HTML.Tag', 'HTML.UnknownTag',
        +            'HTMLDocument', 'HTMLDocument.Iterator',
        +            'HTMLEditorKit', 'HTMLEditorKit.HTMLFactory',
        +            'HTMLEditorKit.HTMLTextAction',
        +            'HTMLEditorKit.InsertHTMLTextAction',
        +            'HTMLEditorKit.LinkController',
        +            'HTMLEditorKit.Parser',
        +            'HTMLEditorKit.ParserCallback',
        +            'HTMLFrameHyperlinkEvent', 'HTMLWriter',
        +            'HttpURLConnection', 'HyperlinkEvent',
        +            'HyperlinkEvent.EventType', 'HyperlinkListener',
        +            'ICC_ColorSpace', 'ICC_Profile', 'ICC_ProfileGray',
        +            'ICC_ProfileRGB', 'Icon', 'IconUIResource',
        +            'IconView', 'IdentifierHelper', 'Identity',
        +            'IdentityScope', 'IDLEntity', 'IDLType',
        +            'IDLTypeHelper', 'IDLTypeOperations',
        +            'IllegalAccessError', 'IllegalAccessException',
        +            'IllegalArgumentException',
        +            'IllegalComponentStateException',
        +            'IllegalMonitorStateException',
        +            'IllegalPathStateException', 'IllegalStateException',
        +            'IllegalThreadStateException', 'Image',
        +            'ImageConsumer', 'ImageFilter',
        +            'ImageGraphicAttribute', 'ImageIcon',
        +            'ImageObserver', 'ImageProducer',
        +            'ImagingOpException', 'IMP_LIMIT',
        +            'IncompatibleClassChangeError',
        +            'InconsistentTypeCode', 'IndexColorModel',
        +            'IndexedPropertyDescriptor',
        +            'IndexOutOfBoundsException', 'IndirectionException',
        +            'InetAddress', 'Inflater', 'InflaterInputStream',
        +            'InheritableThreadLocal', 'InitialContext',
        +            'InitialContextFactory',
        +            'InitialContextFactoryBuilder', 'InitialDirContext',
        +            'INITIALIZE', 'Initializer', 'InitialLdapContext',
        +            'InlineView', 'InputContext', 'InputEvent',
        +            'InputMap', 'InputMapUIResource', 'InputMethod',
        +            'InputMethodContext', 'InputMethodDescriptor',
        +            'InputMethodEvent', 'InputMethodHighlight',
        +            'InputMethodListener', 'InputMethodRequests',
        +            'InputStream',
        +            'InputStreamReader', 'InputSubset', 'InputVerifier',
        +            'Insets', 'InsetsUIResource', 'InstantiationError',
        +            'InstantiationException', 'Instrument',
        +            'InsufficientResourcesException', 'Integer',
        +            'INTERNAL', 'InternalError', 'InternalFrameAdapter',
        +            'InternalFrameEvent', 'InternalFrameListener',
        +            'InternalFrameUI', 'InterruptedException',
        +            'InterruptedIOException',
        +            'InterruptedNamingException', 'INTF_REPOS',
        +            'IntHolder', 'IntrospectionException',
        +            'Introspector', 'Invalid',
        +            'InvalidAlgorithmParameterException',
        +            'InvalidAttributeIdentifierException',
        +            'InvalidAttributesException',
        +            'InvalidAttributeValueException',
        +            'InvalidClassException',
        +            'InvalidDnDOperationException',
        +            'InvalidKeyException', 'InvalidKeySpecException',
        +            'InvalidMidiDataException', 'InvalidName',
        +            'InvalidNameException',
        +            'InvalidNameHelper', 'InvalidNameHolder',
        +            'InvalidObjectException',
        +            'InvalidParameterException',
        +            'InvalidParameterSpecException',
        +            'InvalidSearchControlsException',
        +            'InvalidSearchFilterException', 'InvalidSeq',
        +            'InvalidTransactionException', 'InvalidValue',
        +            'INVALID_TRANSACTION', 'InvocationEvent',
        +            'InvocationHandler', 'InvocationTargetException',
        +            'InvokeHandler', 'INV_FLAG', 'INV_IDENT',
        +            'INV_OBJREF', 'INV_POLICY', 'IOException',
        +            'IRObject', 'IRObjectOperations', 'IstringHelper',
        +            'ItemEvent', 'ItemListener', 'ItemSelectable',
        +            'Iterator', 'JApplet', 'JarEntry', 'JarException',
        +            'JarFile', 'JarInputStream', 'JarOutputStream',
        +            'JarURLConnection', 'JButton', 'JCheckBox',
        +            'JCheckBoxMenuItem', 'JColorChooser', 'JComboBox',
        +            'JComboBox.KeySelectionManager', 'JComponent',
        +            'JDesktopPane', 'JDialog', 'JEditorPane',
        +            'JFileChooser', 'JFrame', 'JInternalFrame',
        +            'JInternalFrame.JDesktopIcon', 'JLabel',
        +            'JLayeredPane', 'JList', 'JMenu', 'JMenuBar',
        +            'JMenuItem', 'JobAttributes',
        +            'JobAttributes.DefaultSelectionType',
        +            'JobAttributes.DestinationType',
        +            'JobAttributes.DialogType',
        +            'JobAttributes.MultipleDocumentHandlingType',
        +            'JobAttributes.SidesType', 'JOptionPane', 'JPanel',
        +            'JPasswordField', 'JPopupMenu',
        +            'JPopupMenu.Separator', 'JProgressBar',
        +            'JRadioButton', 'JRadioButtonMenuItem', 'JRootPane',
        +            'JScrollBar', 'JScrollPane', 'JSeparator', 'JSlider',
        +            'JSplitPane', 'JTabbedPane', 'JTable',
        +            'JTableHeader', 'JTextArea', 'JTextComponent',
        +            'JTextComponent.KeyBinding', 'JTextField',
        +            'JTextPane', 'JToggleButton',
        +            'JToggleButton.ToggleButtonModel', 'JToolBar',
        +            'JToolBar.Separator', 'JToolTip', 'JTree',
        +            'JTree.DynamicUtilTreeNode',
        +            'JTree.EmptySelectionModel', 'JViewport', 'JWindow',
        +            'Kernel', 'Key', 'KeyAdapter', 'KeyEvent',
        +            'KeyException', 'KeyFactory', 'KeyFactorySpi',
        +            'KeyListener', 'KeyManagementException', 'Keymap',
        +            'KeyPair', 'KeyPairGenerator', 'KeyPairGeneratorSpi',
        +            'KeySpec', 'KeyStore', 'KeyStoreException',
        +            'KeyStoreSpi', 'KeyStroke', 'Label', 'LabelUI',
        +            'LabelView', 'LastOwnerException',
        +            'LayeredHighlighter',
        +            'LayeredHighlighter.LayerPainter', 'LayoutManager',
        +            'LayoutManager2', 'LayoutQueue', 'LdapContext',
        +            'LdapReferralException', 'Lease',
        +            'LimitExceededException', 'Line', 'Line.Info',
        +            'Line2D', 'Line2D.Double', 'Line2D.Float',
        +            'LineBorder', 'LineBreakMeasurer', 'LineEvent',
        +            'LineEvent.Type', 'LineListener', 'LineMetrics',
        +            'LineNumberInputStream', 'LineNumberReader',
        +            'LineUnavailableException', 'LinkageError',
        +            'LinkedList', 'LinkException', 'LinkLoopException',
        +            'LinkRef', 'List', 'ListCellRenderer',
        +            'ListDataEvent', 'ListDataListener', 'ListIterator',
        +            'ListModel', 'ListResourceBundle',
        +            'ListSelectionEvent', 'ListSelectionListener',
        +            'ListSelectionModel', 'ListUI', 'ListView',
        +            'LoaderHandler', 'Locale', 'LocateRegistry',
        +            'LogStream', 'LongHolder',
        +            'LongLongSeqHelper', 'LongLongSeqHolder',
        +            'LongSeqHelper', 'LongSeqHolder', 'LookAndFeel',
        +            'LookupOp', 'LookupTable', 'MalformedLinkException',
        +            'MalformedURLException', 'Manifest', 'Map',
        +            'Map.Entry', 'MARSHAL', 'MarshalException',
        +            'MarshalledObject', 'Math', 'MatteBorder',
        +            'MediaTracker', 'Member', 'MemoryImageSource',
        +            'Menu', 'MenuBar', 'MenuBarUI', 'MenuComponent',
        +            'MenuContainer', 'MenuDragMouseEvent',
        +            'MenuDragMouseListener', 'MenuElement', 'MenuEvent',
        +            'MenuItem', 'MenuItemUI', 'MenuKeyEvent',
        +            'MenuKeyListener', 'MenuListener',
        +            'MenuSelectionManager', 'MenuShortcut',
        +            'MessageDigest', 'MessageDigestSpi', 'MessageFormat',
        +            'MetaEventListener', 'MetalBorders',
        +            'MetalBorders.ButtonBorder',
        +            'MetalBorders.Flush3DBorder',
        +            'MetalBorders.InternalFrameBorder',
        +            'MetalBorders.MenuBarBorder',
        +            'MetalBorders.MenuItemBorder',
        +            'MetalBorders.OptionDialogBorder',
        +            'MetalBorders.PaletteBorder',
        +            'MetalBorders.PopupMenuBorder',
        +            'MetalBorders.RolloverButtonBorder',
        +            'MetalBorders.ScrollPaneBorder',
        +            'MetalBorders.TableHeaderBorder',
        +            'MetalBorders.TextFieldBorder',
        +            'MetalBorders.ToggleButtonBorder',
        +            'MetalBorders.ToolBarBorder', 'MetalButtonUI',
        +            'MetalCheckBoxIcon', 'MetalCheckBoxUI',
        +            'MetalComboBoxButton', 'MetalComboBoxEditor',
        +            'MetalComboBoxEditor.UIResource',
        +            'MetalComboBoxIcon', 'MetalComboBoxUI',
        +            'MetalDesktopIconUI', 'MetalFileChooserUI',
        +            'MetalIconFactory', 'MetalIconFactory.FileIcon16',
        +            'MetalIconFactory.FolderIcon16',
        +            'MetalIconFactory.PaletteCloseIcon',
        +            'MetalIconFactory.TreeControlIcon',
        +            'MetalIconFactory.TreeFolderIcon',
        +            'MetalIconFactory.TreeLeafIcon',
        +            'MetalInternalFrameTitlePane',
        +            'MetalInternalFrameUI', 'MetalLabelUI',
        +            'MetalLookAndFeel', 'MetalPopupMenuSeparatorUI',
        +            'MetalProgressBarUI', 'MetalRadioButtonUI',
        +            'MetalScrollBarUI', 'MetalScrollButton',
        +            'MetalScrollPaneUI', 'MetalSeparatorUI',
        +            'MetalSliderUI', 'MetalSplitPaneUI',
        +            'MetalTabbedPaneUI', 'MetalTextFieldUI',
        +            'MetalTheme', 'MetalToggleButtonUI',
        +            'MetalToolBarUI', 'MetalToolTipUI', 'MetalTreeUI',
        +            'MetaMessage', 'Method', 'MethodDescriptor',
        +            'MidiChannel', 'MidiDevice', 'MidiDevice.Info',
        +            'MidiDeviceProvider', 'MidiEvent', 'MidiFileFormat',
        +            'MidiFileReader', 'MidiFileWriter', 'MidiMessage',
        +            'MidiSystem', 'MidiUnavailableException',
        +            'MimeTypeParseException', 'MinimalHTMLWriter',
        +            'MissingResourceException', 'Mixer', 'Mixer.Info',
        +            'MixerProvider', 'ModificationItem', 'Modifier',
        +            'MouseAdapter', 'MouseDragGestureRecognizer',
        +            'MouseEvent', 'MouseInputAdapter',
        +            'MouseInputListener', 'MouseListener',
        +            'MouseMotionAdapter', 'MouseMotionListener',
        +            'MultiButtonUI', 'MulticastSocket',
        +            'MultiColorChooserUI', 'MultiComboBoxUI',
        +            'MultiDesktopIconUI', 'MultiDesktopPaneUI',
        +            'MultiFileChooserUI', 'MultiInternalFrameUI',
        +            'MultiLabelUI', 'MultiListUI', 'MultiLookAndFeel',
        +            'MultiMenuBarUI', 'MultiMenuItemUI',
        +            'MultiOptionPaneUI', 'MultiPanelUI',
        +            'MultiPixelPackedSampleModel', 'MultipleMaster',
        +            'MultiPopupMenuUI', 'MultiProgressBarUI',
        +            'MultiScrollBarUI', 'MultiScrollPaneUI',
        +            'MultiSeparatorUI', 'MultiSliderUI',
        +            'MultiSplitPaneUI', 'MultiTabbedPaneUI',
        +            'MultiTableHeaderUI', 'MultiTableUI', 'MultiTextUI',
        +            'MultiToolBarUI', 'MultiToolTipUI', 'MultiTreeUI',
        +            'MultiViewportUI', 'MutableAttributeSet',
        +            'MutableComboBoxModel', 'MutableTreeNode', 'Name',
        +            'NameAlreadyBoundException', 'NameClassPair',
        +            'NameComponent', 'NameComponentHelper',
        +            'NameComponentHolder', 'NamedValue', 'NameHelper',
        +            'NameHolder', 'NameNotFoundException', 'NameParser',
        +            'NamespaceChangeListener', 'NameValuePair',
        +            'NameValuePairHelper', 'Naming', 'NamingContext',
        +            'NamingContextHelper', 'NamingContextHolder',
        +            'NamingContextOperations', 'NamingEnumeration',
        +            'NamingEvent', 'NamingException',
        +            'NamingExceptionEvent', 'NamingListener',
        +            'NamingManager', 'NamingSecurityException',
        +            'NegativeArraySizeException', 'NetPermission',
        +            'NoClassDefFoundError', 'NoInitialContextException',
        +            'NoninvertibleTransformException',
        +            'NoPermissionException', 'NoRouteToHostException',
        +            'NoSuchAlgorithmException',
        +            'NoSuchAttributeException', 'NoSuchElementException',
        +            'NoSuchFieldError', 'NoSuchFieldException',
        +            'NoSuchMethodError', 'NoSuchMethodException',
        +            'NoSuchObjectException', 'NoSuchProviderException',
        +            'NotActiveException', 'NotBoundException',
        +            'NotContextException', 'NotEmpty', 'NotEmptyHelper',
        +            'NotEmptyHolder', 'NotFound', 'NotFoundHelper',
        +            'NotFoundHolder', 'NotFoundReason',
        +            'NotFoundReasonHelper', 'NotFoundReasonHolder',
        +            'NotOwnerException', 'NotSerializableException',
        +            'NO_IMPLEMENT', 'NO_MEMORY', 'NO_PERMISSION',
        +            'NO_RESOURCES', 'NO_RESPONSE',
        +            'NullPointerException', 'Number', 'NumberFormat',
        +            'NumberFormatException', 'NVList', 'Object',
        +            'ObjectChangeListener', 'ObjectFactory',
        +            'ObjectFactoryBuilder', 'ObjectHelper',
        +            'ObjectHolder', 'ObjectImpl',
        +            'ObjectInput', 'ObjectInputStream',
        +            'ObjectInputStream.GetField',
        +            'ObjectInputValidation', 'ObjectOutput',
        +            'ObjectOutputStream', 'ObjectOutputStream.PutField',
        +            'ObjectStreamClass', 'ObjectStreamConstants',
        +            'ObjectStreamException', 'ObjectStreamField',
        +            'ObjectView', 'OBJECT_NOT_EXIST', 'ObjID',
        +            'OBJ_ADAPTER', 'Observable', 'Observer',
        +            'OctetSeqHelper', 'OctetSeqHolder', 'OMGVMCID',
        +            'OpenType', 'Operation',
        +            'OperationNotSupportedException', 'Option',
        +            'OptionalDataException', 'OptionPaneUI', 'ORB',
        +            'OutOfMemoryError', 'OutputStream',
        +            'OutputStreamWriter', 'OverlayLayout', 'Owner',
        +            'Package', 'PackedColorModel', 'Pageable',
        +            'PageAttributes', 'PageAttributes.ColorType',
        +            'PageAttributes.MediaType',
        +            'PageAttributes.OrientationRequestedType',
        +            'PageAttributes.OriginType',
        +            'PageAttributes.PrintQualityType', 'PageFormat',
        +            'Paint', 'PaintContext', 'PaintEvent', 'Panel',
        +            'PanelUI', 'Paper', 'ParagraphView',
        +            'ParameterBlock', 'ParameterDescriptor',
        +            'ParseException', 'ParsePosition', 'Parser',
        +            'ParserDelegator', 'PartialResultException',
        +            'PasswordAuthentication', 'PasswordView', 'Patch',
        +            'PathIterator', 'Permission',
        +            'PermissionCollection', 'Permissions',
        +            'PERSIST_STORE', 'PhantomReference',
        +            'PipedInputStream', 'PipedOutputStream',
        +            'PipedReader', 'PipedWriter', 'PixelGrabber',
        +            'PixelInterleavedSampleModel', 'PKCS8EncodedKeySpec',
        +            'PlainDocument', 'PlainView', 'Point', 'Point2D',
        +            'Point2D.Double', 'Point2D.Float', 'Policy',
        +            'PolicyError', 'PolicyHelper',
        +            'PolicyHolder', 'PolicyListHelper',
        +            'PolicyListHolder', 'PolicyOperations',
        +            'PolicyTypeHelper', 'Polygon', 'PopupMenu',
        +            'PopupMenuEvent', 'PopupMenuListener', 'PopupMenuUI',
        +            'Port', 'Port.Info', 'PortableRemoteObject',
        +            'PortableRemoteObjectDelegate', 'Position',
        +            'Position.Bias', 'PreparedStatement', 'Principal',
        +            'PrincipalHolder', 'Printable',
        +            'PrinterAbortException', 'PrinterException',
        +            'PrinterGraphics', 'PrinterIOException',
        +            'PrinterJob', 'PrintGraphics', 'PrintJob',
        +            'PrintStream', 'PrintWriter', 'PrivateKey',
        +            'PRIVATE_MEMBER', 'PrivilegedAction',
        +            'PrivilegedActionException',
        +            'PrivilegedExceptionAction', 'Process',
        +            'ProfileDataException', 'ProgressBarUI',
        +            'ProgressMonitor', 'ProgressMonitorInputStream',
        +            'Properties', 'PropertyChangeEvent',
        +            'PropertyChangeListener', 'PropertyChangeSupport',
        +            'PropertyDescriptor', 'PropertyEditor',
        +            'PropertyEditorManager', 'PropertyEditorSupport',
        +            'PropertyPermission', 'PropertyResourceBundle',
        +            'PropertyVetoException', 'ProtectionDomain',
        +            'ProtocolException', 'Provider', 'ProviderException',
        +            'Proxy', 'PublicKey', 'PUBLIC_MEMBER',
        +            'PushbackInputStream', 'PushbackReader',
        +            'QuadCurve2D', 'QuadCurve2D.Double',
        +            'QuadCurve2D.Float', 'Random', 'RandomAccessFile',
        +            'Raster', 'RasterFormatException', 'RasterOp',
        +            'Reader', 'Receiver', 'Rectangle', 'Rectangle2D',
        +            'Rectangle2D.Double', 'Rectangle2D.Float',
        +            'RectangularShape', 'Ref', 'RefAddr', 'Reference',
        +            'Referenceable', 'ReferenceQueue',
        +            'ReferralException', 'ReflectPermission', 'Registry',
        +            'RegistryHandler', 'RemarshalException', 'Remote',
        +            'RemoteCall', 'RemoteException', 'RemoteObject',
        +            'RemoteRef', 'RemoteServer', 'RemoteStub',
        +            'RenderableImage', 'RenderableImageOp',
        +            'RenderableImageProducer', 'RenderContext',
        +            'RenderedImage', 'RenderedImageFactory', 'Renderer',
        +            'RenderingHints', 'RenderingHints.Key',
        +            'RepaintManager', 'ReplicateScaleFilter',
        +            'Repository', 'RepositoryIdHelper', 'Request',
        +            'RescaleOp', 'Resolver', 'ResolveResult',
        +            'ResourceBundle', 'ResponseHandler', 'ResultSet',
        +            'ResultSetMetaData', 'ReverbType', 'RGBImageFilter',
        +            'RMIClassLoader', 'RMIClientSocketFactory',
        +            'RMIFailureHandler', 'RMISecurityException',
        +            'RMISecurityManager', 'RMIServerSocketFactory',
        +            'RMISocketFactory', 'Robot', 'RootPaneContainer',
        +            'RootPaneUI', 'RoundRectangle2D',
        +            'RoundRectangle2D.Double', 'RoundRectangle2D.Float',
        +            'RowMapper', 'RSAKey', 'RSAKeyGenParameterSpec',
        +            'RSAPrivateCrtKey', 'RSAPrivateCrtKeySpec',
        +            'RSAPrivateKey', 'RSAPrivateKeySpec', 'RSAPublicKey',
        +            'RSAPublicKeySpec', 'RTFEditorKit',
        +            'RuleBasedCollator', 'Runnable', 'RunTime',
        +            'Runtime', 'RuntimeException', 'RunTimeOperations',
        +            'RuntimePermission', 'SampleModel',
        +            'SchemaViolationException', 'Scrollable',
        +            'Scrollbar', 'ScrollBarUI', 'ScrollPane',
        +            'ScrollPaneConstants', 'ScrollPaneLayout',
        +            'ScrollPaneLayout.UIResource', 'ScrollPaneUI',
        +            'SearchControls', 'SearchResult',
        +            'SecureClassLoader', 'SecureRandom',
        +            'SecureRandomSpi', 'Security', 'SecurityException',
        +            'SecurityManager', 'SecurityPermission', 'Segment',
        +            'SeparatorUI', 'Sequence', 'SequenceInputStream',
        +            'Sequencer', 'Sequencer.SyncMode', 'Serializable',
        +            'SerializablePermission', 'ServantObject',
        +            'ServerCloneException', 'ServerError',
        +            'ServerException', 'ServerNotActiveException',
        +            'ServerRef', 'ServerRequest',
        +            'ServerRuntimeException', 'ServerSocket',
        +            'ServiceDetail', 'ServiceDetailHelper',
        +            'ServiceInformation', 'ServiceInformationHelper',
        +            'ServiceInformationHolder',
        +            'ServiceUnavailableException', 'Set',
        +            'SetOverrideType', 'SetOverrideTypeHelper', 'Shape',
        +            'ShapeGraphicAttribute', 'ShortHolder',
        +            'ShortLookupTable', 'ShortMessage', 'ShortSeqHelper',
        +            'ShortSeqHolder', 'Signature', 'SignatureException',
        +            'SignatureSpi', 'SignedObject', 'Signer',
        +            'SimpleAttributeSet', 'SimpleBeanInfo',
        +            'SimpleDateFormat', 'SimpleTimeZone',
        +            'SinglePixelPackedSampleModel',
        +            'SingleSelectionModel', 'SizeLimitExceededException',
        +            'SizeRequirements', 'SizeSequence', 'Skeleton',
        +            'SkeletonMismatchException',
        +            'SkeletonNotFoundException', 'SliderUI', 'Socket',
        +            'SocketException', 'SocketImpl', 'SocketImplFactory',
        +            'SocketOptions', 'SocketPermission',
        +            'SocketSecurityException', 'SoftBevelBorder',
        +            'SoftReference', 'SortedMap', 'SortedSet',
        +            'Soundbank', 'SoundbankReader', 'SoundbankResource',
        +            'SourceDataLine', 'SplitPaneUI', 'SQLData',
        +            'SQLException', 'SQLInput', 'SQLOutput',
        +            'SQLPermission', 'SQLWarning', 'Stack',
        +            'StackOverflowError', 'StateEdit', 'StateEditable',
        +            'StateFactory', 'Statement', 'Streamable',
        +            'StreamableValue', 'StreamCorruptedException',
        +            'StreamTokenizer', 'StrictMath', 'String',
        +            'StringBuffer', 'StringBufferInputStream',
        +            'StringCharacterIterator', 'StringContent',
        +            'StringHolder', 'StringIndexOutOfBoundsException',
        +            'StringReader', 'StringRefAddr', 'StringSelection',
        +            'StringTokenizer', 'StringValueHelper',
        +            'StringWriter', 'Stroke', 'Struct', 'StructMember',
        +            'StructMemberHelper', 'Stub', 'StubDelegate',
        +            'StubNotFoundException', 'Style', 'StyleConstants',
        +            'StyleConstants.CharacterConstants',
        +            'StyleConstants.ColorConstants',
        +            'StyleConstants.FontConstants',
        +            'StyleConstants.ParagraphConstants', 'StyleContext',
        +            'StyledDocument', 'StyledEditorKit',
        +            'StyledEditorKit.AlignmentAction',
        +            'StyledEditorKit.BoldAction',
        +            'StyledEditorKit.FontFamilyAction',
        +            'StyledEditorKit.FontSizeAction',
        +            'StyledEditorKit.ForegroundAction',
        +            'StyledEditorKit.ItalicAction',
        +            'StyledEditorKit.StyledTextAction',
        +            'StyledEditorKit.UnderlineAction', 'StyleSheet',
        +            'StyleSheet.BoxPainter', 'StyleSheet.ListPainter',
        +            'SwingConstants', 'SwingPropertyChangeSupport',
        +            'SwingUtilities', 'SyncFailedException',
        +            'Synthesizer', 'SysexMessage', 'System',
        +            'SystemColor', 'SystemException', 'SystemFlavorMap',
        +            'TabableView', 'TabbedPaneUI', 'TabExpander',
        +            'TableCellEditor', 'TableCellRenderer',
        +            'TableColumn', 'TableColumnModel',
        +            'TableColumnModelEvent', 'TableColumnModelListener',
        +            'TableHeaderUI', 'TableModel', 'TableModelEvent',
        +            'TableModelListener', 'TableUI', 'TableView',
        +            'TabSet', 'TabStop', 'TagElement', 'TargetDataLine',
        +            'TCKind', 'TextAction', 'TextArea', 'TextAttribute',
        +            'TextComponent', 'TextEvent', 'TextField',
        +            'TextHitInfo', 'TextLayout',
        +            'TextLayout.CaretPolicy', 'TextListener',
        +            'TextMeasurer', 'TextUI', 'TexturePaint', 'Thread',
        +            'ThreadDeath', 'ThreadGroup', 'ThreadLocal',
        +            'Throwable', 'Tie', 'TileObserver', 'Time',
        +            'TimeLimitExceededException', 'Timer',
        +            'TimerTask', 'Timestamp', 'TimeZone', 'TitledBorder',
        +            'ToolBarUI', 'Toolkit', 'ToolTipManager',
        +            'ToolTipUI', 'TooManyListenersException', 'Track',
        +            'TransactionRequiredException',
        +            'TransactionRolledbackException',
        +            'TRANSACTION_REQUIRED', 'TRANSACTION_ROLLEDBACK',
        +            'Transferable', 'TransformAttribute', 'TRANSIENT',
        +            'Transmitter', 'Transparency', 'TreeCellEditor',
        +            'TreeCellRenderer', 'TreeExpansionEvent',
        +            'TreeExpansionListener', 'TreeMap', 'TreeModel',
        +            'TreeModelEvent', 'TreeModelListener', 'TreeNode',
        +            'TreePath', 'TreeSelectionEvent',
        +            'TreeSelectionListener', 'TreeSelectionModel',
        +            'TreeSet', 'TreeUI', 'TreeWillExpandListener',
        +            'TypeCode', 'TypeCodeHolder', 'TypeMismatch',
        +            'Types', 'UID', 'UIDefaults',
        +            'UIDefaults.ActiveValue', 'UIDefaults.LazyInputMap',
        +            'UIDefaults.LazyValue', 'UIDefaults.ProxyLazyValue',
        +            'UIManager', 'UIManager.LookAndFeelInfo',
        +            'UIResource', 'ULongLongSeqHelper',
        +            'ULongLongSeqHolder', 'ULongSeqHelper',
        +            'ULongSeqHolder', 'UndeclaredThrowableException',
        +            'UndoableEdit', 'UndoableEditEvent',
        +            'UndoableEditListener', 'UndoableEditSupport',
        +            'UndoManager', 'UnexpectedException',
        +            'UnicastRemoteObject', 'UnionMember',
        +            'UnionMemberHelper', 'UNKNOWN', 'UnknownError',
        +            'UnknownException', 'UnknownGroupException',
        +            'UnknownHostException',
        +            'UnknownObjectException', 'UnknownServiceException',
        +            'UnknownUserException', 'UnmarshalException',
        +            'UnrecoverableKeyException', 'Unreferenced',
        +            'UnresolvedPermission', 'UnsatisfiedLinkError',
        +            'UnsolicitedNotification',
        +            'UnsolicitedNotificationEvent',
        +            'UnsolicitedNotificationListener',
        +            'UnsupportedAudioFileException',
        +            'UnsupportedClassVersionError',
        +            'UnsupportedEncodingException',
        +            'UnsupportedFlavorException',
        +            'UnsupportedLookAndFeelException',
        +            'UnsupportedOperationException',
        +            'UNSUPPORTED_POLICY', 'UNSUPPORTED_POLICY_VALUE',
        +            'URL', 'URLClassLoader', 'URLConnection',
        +            'URLDecoder', 'URLEncoder', 'URLStreamHandler',
        +            'URLStreamHandlerFactory', 'UserException',
        +            'UShortSeqHelper', 'UShortSeqHolder',
        +            'UTFDataFormatException', 'Util', 'UtilDelegate',
        +            'Utilities', 'ValueBase', 'ValueBaseHelper',
        +            'ValueBaseHolder', 'ValueFactory', 'ValueHandler',
        +            'ValueMember', 'ValueMemberHelper',
        +            'VariableHeightLayoutCache', 'Vector', 'VerifyError',
        +            'VersionSpecHelper', 'VetoableChangeListener',
        +            'VetoableChangeSupport', 'View', 'ViewFactory',
        +            'ViewportLayout', 'ViewportUI',
        +            'VirtualMachineError', 'Visibility',
        +            'VisibilityHelper', 'VMID', 'VM_ABSTRACT',
        +            'VM_CUSTOM', 'VM_NONE', 'VM_TRUNCATABLE',
        +            'VoiceStatus', 'Void', 'WCharSeqHelper',
        +            'WCharSeqHolder', 'WeakHashMap', 'WeakReference',
        +            'Window', 'WindowAdapter', 'WindowConstants',
        +            'WindowEvent', 'WindowListener', 'WrappedPlainView',
        +            'WritableRaster', 'WritableRenderedImage',
        +            'WriteAbortedException', 'Writer',
        +            'WrongTransaction', 'WStringValueHelper',
        +            'X509Certificate', 'X509CRL', 'X509CRLEntry',
        +            'X509EncodedKeySpec', 'X509Extension', 'ZipEntry',
        +            'ZipException', 'ZipFile', 'ZipInputStream',
        +            'ZipOutputStream', 'ZoneView',
        +            '_BindingIteratorImplBase', '_BindingIteratorStub',
        +            '_IDLTypeStub', '_NamingContextImplBase',
        +            '_NamingContextStub', '_PolicyStub', '_Remote_Stub'
        +        ),
        +        4 => array(
        +            'Double', 'Int', 'Boolean', 'Byte', 'Short', 'Long', 'Char', 'Float', 'Unit', 'Nothing', 'Any'
        +        )
        +    ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}',
        +        '+', '-', '*', '/', '%',
        +        '!', '&', '|', '^',
        +        '<', '>', '=',
        +        '?', ':', ';',
        +    ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true
        +    ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000000; font-weight: bold;',
        +            2 => 'color: #000066; font-weight: bold;',
        +            3 => 'color: #003399;',
        +            4 => 'color: #000066; font-weight: bold;'
        +        ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            2 => 'color: #006699;',
        +            3 => 'color: #008000; font-style: italic; font-weight: bold;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +        ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +        ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +        ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;'
        +        ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +        ),
        +        'METHODS' => array(
        +            1 => 'color: #006633;',
        +            2 => 'color: #006633;'
        +        ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;'
        +        ),
        +        'SCRIPT' => array(),
        +        'REGEXPS' => array()
        +    ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => 'http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+{FNAMEL}',
        +        4 => ''
        +    ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +    ),
        +    'REGEXPS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/latex.php b/includes/geshi/latex.php
        new file mode 100644
        index 0000000..8b28e34
        --- /dev/null
        +++ b/includes/geshi/latex.php
        @@ -0,0 +1,221 @@
        + 'LaTeX',
        +    'COMMENT_SINGLE' => array(
        +        1 => '%'
        +        ),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'addlinespace','and','address','appendix','author','backmatter',
        +            'bfseries','bibitem','bigskip','blindtext','caption','captionabove',
        +            'captionbelow','cdot','centering','chapter','cite','color',
        +            'colorbox','date','dedication','def','definecolor','documentclass',
        +            'edef','else','email','emph','eqref','extratitle','fbox','fi',
        +            'flushleft','flushright','footnote','frac','frontmatter',
        +            'graphicspath','hfil','hfill','hfilll','hline','hspace','huge','ifx','include',
        +            'includegraphics','infty','input','int','item','itemsep',
        +            'KOMAoption','KOMAoptions','label','LaTeX','left','let','limits',
        +            'listfiles','listoffigures','listoftables','lowertitleback',
        +            'mainmatter','makeatletter','makeatother','makebox','makeindex',
        +            'maketitle','mbox','mediumskip','newcommand','newenvironment',
        +            'newpage','nocite','nonumber','pagestyle','par','paragraph',
        +            'parbox','parident','parskip','partial','publishers','raggedleft',
        +            'raggedright','raisebox','ref','renewcommand','renewenvironment',
        +            'right','rule','section','setlength','sffamily','subject',
        +            'subparagraph','subsection','subsubsection','subtitle','sum',
        +            'table','tableofcontents','textbf','textcolor','textit',
        +            'textnormal','textsuperscript','texttt','textwidth','thanks','title',
        +            'titlehead','today','ttfamily','uppertitleback','urlstyle',
        +            'usepackage','vfil','vfill','vfilll','vspace'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        "&", "\\", "{", "}", "[", "]"
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        1 => true,
        +        GESHI_COMMENTS => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #800000;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #2C922C; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 =>  'color: #000000; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            ),
        +        'STRINGS' => array(
        +            0 =>  'color: #000000;'
        +            ),
        +        'NUMBERS' => array(
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 =>  'color: #E02020; '
        +            ),
        +        'REGEXPS' => array(
        +            1 => 'color: #8020E0; font-weight: normal;',  // Math inner
        +            2 => 'color: #C08020; font-weight: normal;', // [Option]
        +            3 => 'color: #8020E0; font-weight: normal;', // Maths
        +            4 => 'color: #800000; font-weight: normal;', // Structure: Labels
        +            5 => 'color: #00008B; font-weight: bold;',  // Structure (\section{->x<-})
        +            6 => 'color: #800000; font-weight: normal;', // Structure (\section)
        +            7 => 'color: #0000D0; font-weight: normal;', // Environment \end or \begin{->x<-} (brighter blue)
        +            8 => 'color: #C00000; font-weight: normal;', // Structure \end or \begin
        +            9 => 'color: #2020C0; font-weight: normal;', // {...}
        +            10 => 'color: #800000; font-weight: normal;', // \%, \& etc.
        +            11 => 'color: #E00000; font-weight: normal;', // \@keyword
        +            12 => 'color: #800000; font-weight: normal;', // \keyword
        +        ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => 'http://www.golatex.de/wiki/%5C{FNAME}',
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        // Math inner
        +        1 => array(
        +            GESHI_SEARCH => "(\\\\begin\\{(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|alignat|flalign)\\})(.*)(\\\\end\\{\\2\\})",
        +            GESHI_REPLACE => '\3',
        +            GESHI_MODIFIERS => 'Us',
        +            GESHI_BEFORE => '\1',
        +            GESHI_AFTER => '\4'
        +            ),
        +        // [options]
        +        2 => array(
        +            GESHI_SEARCH => "(?<=\[).*(?=\])",
        +            GESHI_REPLACE => '\0',
        +            GESHI_MODIFIERS => 'Us',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        // Math mode with $ ... $
        +        3 => array(
        +            GESHI_SEARCH => "\\$.+\\$",
        +            GESHI_REPLACE => '\0',
        +            GESHI_MODIFIERS => 'Us',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        // Structure: Label
        +        4 => "\\\\(?:label|pageref|ref|cite)(?=[^a-zA-Z])",
        +        // Structure: sections
        +        5 => array(
        +            GESHI_SEARCH => "(\\\\(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph|addpart|addchap|addsec)\*?\\{)(.*)(?=\\})",
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'U',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +            ),
        +        // Structure: sections
        +        6 => "\\\\(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph|addpart|addchap|addsec)\*?(?=[^a-zA-Z])",
        +        // environment \begin{} and \end{} (i.e. the things inside the {})
        +        7 => array(
        +            GESHI_SEARCH => "(\\\\(?:begin|end)\\{)(.*)(?=\\})",
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'U',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +            ),
        +        // Structure \begin and \end
        +        8 => "\\\\(?:end|begin)(?=[^a-zA-Z])",
        +        // {parameters}
        +        9 => array(
        +            GESHI_SEARCH => "(?<=\\{)(?!<\|!REG3XP5!>).*?(?=\\})",
        +            GESHI_REPLACE => '\0',
        +            GESHI_MODIFIERS => 'Us',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        // \%, \& usw.
        +        10 => "\\\\(?:[_$%]|&)",
        +        //  \@keywords
        +        11 => "(?)\\\\@[a-zA-Z]+\*?",
        +        // \keywords
        +        12 => "(?)\\\\[a-zA-Z]+\*?",
        +
        +// ---------------------------------------------
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'COMMENTS' => array(
        +            'DISALLOWED_BEFORE' => '\\'
        +        ),
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => "(?<=\\\\)",
        +            'DISALLOWED_AFTER' => "(?![A-Za-z0-9])"
        +        ),
        +        'ENABLE_FLAGS' => array(
        +            'NUMBERS' => GESHI_NEVER,
        +            'BRACKETS' => GESHI_NEVER
        +        )
        +    )
        +);
        diff --git a/includes/geshi/lb.php b/includes/geshi/lb.php
        new file mode 100644
        index 0000000..aa3f5c0
        --- /dev/null
        +++ b/includes/geshi/lb.php
        @@ -0,0 +1,160 @@
        + 'Liberty BASIC',
        +    'COMMENT_SINGLE' => array(1 => '\''),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'and', 'append', 'as', 'beep', 'bmpbutton', 'bmpsave', 'boolean',
        +            'button', 'byref', 'call', 'callback', 'calldll', 'callfn', 'case',
        +            'checkbox', 'close', 'cls', 'colordialog', 'combobox', 'confirm',
        +            'cursor', 'data', 'dialog', 'dim', 'dll', 'do', 'double', 'dump',
        +            'dword', 'else', 'end', 'error', 'exit', 'field', 'filedialog',
        +            'files', 'fontdialog', 'for', 'function', 'get', 'gettrim',
        +            'global', 'gosub', 'goto', 'graphicbox', 'graphics', 'groupbox',
        +            'if', 'input', 'kill', 'let', 'line', 'listbox', 'loadbmp',
        +            'locate', 'long', 'loop', 'lprint', 'mainwin', 'maphandle', 'menu',
        +            'mod', 'name', 'next', 'nomainwin', 'none', 'notice', 'on',
        +            'oncomerror', 'or', 'open', 'out', 'output', 'password', 'playmidi',
        +            'playwave', 'popupmenu', 'print', 'printerdialog', 'prompt', 'ptr',
        +            'put', 'radiobutton', 'random', 'randomize', 'read', 'readjoystick',
        +            'redim', 'rem', 'restore', 'resume', 'return', 'run', 'scan',
        +            'seek', 'select', 'short', 'sort', 'statictext', 'stop', 'stopmidi',
        +            'struct', 'stylebits', 'sub', 'text', 'textbox', 'texteditor',
        +            'then', 'timer', 'titlebar', 'to', 'trace', 'ulong', 'unloadbmp',
        +            'until', 'ushort', 'void', 'wait', 'window', 'wend', 'while',
        +            'word', 'xor'
        +            ),
        +        2 => array(
        +            'abs', 'acs', 'asc', 'asn', 'atn', 'chr$', 'cos', 'date$',
        +            'dechex$', 'eof', 'eval', 'eval$', 'exp', 'hbmp', 'hexdec', 'hwnd',
        +            'inp', 'input$', 'inputto$', 'instr', 'int', 'left$', 'len', 'lof',
        +            'log', 'lower$', 'max', 'midipos', 'mid$', 'min', 'mkdir', 'not',
        +            'right$', 'rmdir', 'rnd', 'sin', 'space$', 'sqr', 'str$', 'tab',
        +            'tan', 'time$', 'trim$', 'txcount', 'upper$', 'using', 'val',
        +            'winstring', 'word$'
        +            ),
        +        3 => array(
        +            'BackgroundColor$', 'Com', 'ComboboxColor$', 'ComError', 'ComErrorNumber',
        +            'CommandLine$', 'ComPortNumber', 'DefaultDir$',
        +            'DisplayHeight', 'DisplayWidth', 'Drives$', 'Err', 'Err$',
        +            'ForegroundColor$', 'Inkey$', 'Joy1x', 'Joy1y', 'Joy1z',
        +            'Joy1button1', 'Joy1button2', 'Joy2x', 'Joy2y', 'Joy2z',
        +            'Joy2button1', 'Joy2button2', 'ListboxColor$', 'MouseX', 'MouseY', 'Platform$',
        +            'PrintCollate', 'PrintCopies', 'PrinterFont$', 'PrinterName$', 'StartupDir$',
        +            'TextboxColor$', 'TexteditorColor$', 'Version$', 'WindowHeight',
        +            'WindowWidth', 'UpperLeftX', 'UpperLeftY'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        1 => array(
        +            '(', ')', '[', ']', '+', '-', '*', '/', '%', '=', '<', '>', ':', ',', '#'
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000FF;',
        +            2 => 'color: #AD0080;',
        +            3 => 'color: #008080;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #008000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #FF0000;',
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #004000;'
        +            ),
        +        'SYMBOLS' => array(
        +            1 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(),
        +        'SCRIPT' => array()
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(),
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            2 => array(
        +                //In LB, the second keyword list is a list of built-in functions,
        +                //and their names should not be highlighted unless being used
        +                //as a function name.
        +                'DISALLOWED_AFTER' => '(?=\s*\()'
        +                )
        +            )
        +        )
        +);
        diff --git a/includes/geshi/ldif.php b/includes/geshi/ldif.php
        new file mode 100644
        index 0000000..c413513
        --- /dev/null
        +++ b/includes/geshi/ldif.php
        @@ -0,0 +1,114 @@
        + 'LDIF',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        ),
        +    'SYMBOLS' => array(
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => ''
        +            ),
        +        'BRACKETS' => array(
        +            0 => ''
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #933;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => ''
        +            ),
        +        'METHODS' => array(
        +            0 => ''
        +            ),
        +        'SYMBOLS' => array(
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #000066; font-weight: bold;',
        +            1 => 'color: #FF0000;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        0 => array(
        +            GESHI_SEARCH => '([a-zA-Z0-9_]+):(.+)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ':\\2'
        +            ),
        +        1 => array(
        +            // Evil hackery to get around GeSHi bug: <>" and ; are added so s can be matched
        +            // Explicit match on variable names because if a comment is before the first < of the span
        +            // gets chewed up...
        +            GESHI_SEARCH => '([<>";a-zA-Z0-9_]+):(.+)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1:',
        +            GESHI_AFTER => ''
        +            )
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/lisp.php b/includes/geshi/lisp.php
        new file mode 100644
        index 0000000..a230191
        --- /dev/null
        +++ b/includes/geshi/lisp.php
        @@ -0,0 +1,147 @@
        + 'Lisp',
        +    'COMMENT_SINGLE' => array(1 => ';'),
        +    'COMMENT_MULTI' => array(';|' => '|;'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'not','defun','princ','when',
        +            'eval','apply','funcall','quote','identity','function',
        +            'complement','backquote','lambda','set','setq','setf',
        +            'defmacro','gensym','make','symbol','intern',
        +            'name','value','plist','get',
        +            'getf','putprop','remprop','hash','array','aref',
        +            'car','cdr','caar','cadr','cdar','cddr','caaar','caadr','cadar',
        +            'caddr','cdaar','cdadr','cddar','cdddr','caaaar','caaadr',
        +            'caadar','caaddr','cadaar','cadadr','caddar','cadddr',
        +            'cdaaar','cdaadr','cdadar','cdaddr','cddaar','cddadr',
        +            'cdddar','cddddr','cons','list','append','reverse','last','nth',
        +            'nthcdr','member','assoc','subst','sublis','nsubst',
        +            'nsublis','remove','length',
        +            'mapc','mapcar','mapl','maplist','mapcan','mapcon','rplaca',
        +            'rplacd','nconc','delete','atom','symbolp','numberp',
        +            'boundp','null','listp','consp','minusp','zerop','plusp',
        +            'evenp','oddp','eq','eql','equal','cond','case','and','or',
        +            'let','l','if','prog','prog1','prog2','progn','go','return',
        +            'do','dolist','dotimes','catch','throw','error','cerror','break',
        +            'continue','errset','baktrace','evalhook','truncate','float',
        +            'rem','min','max','abs','sin','cos','tan','expt','exp','sqrt',
        +            'random','logand','logior','logxor','lognot','bignums','logeqv',
        +            'lognand','lognor','logorc2','logtest','logbitp','logcount',
        +            'integer','nil','parse-integer','make-list','print','write'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '[', ']',
        +        '!', '%', '^', '&',
        +        ' + ',' - ',' * ',' / ',
        +        '=','<','>',
        +        '.',':',',',';',
        +        '|'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #555;',
        +            1 => 'color: #555;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        '::', ':'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => '(? array(
        +            'MATCH_AFTER' => '[a-zA-Z][a-zA-Z0-9_\-]*'
        +            )
        +        )
        +);
        diff --git a/includes/geshi/llvm.php b/includes/geshi/llvm.php
        new file mode 100644
        index 0000000..9fe90ea
        --- /dev/null
        +++ b/includes/geshi/llvm.php
        @@ -0,0 +1,389 @@
        + 'LLVM Intermediate Representation',
        +    'COMMENT_SINGLE' => array(1 => ';'),
        +    'COMMENT_MULTI' => array(),
        +    'HARDQUOTE' => array("\"", "\""),
        +    'HARDESCAPE' => array("\"", "\\"),
        +    'HARDCHAR' => "\\",
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        //Simple Single Char Escapes
        +        // 1 => "#\\\\[nfrtv\$\"\n\\\\]#i",
        +        //Hexadecimal Char Specs
        +        // 2 => "#\\\\x[\da-fA-F]{1,2}#i",
        +        //Octal Char Specs
        +        // 3 => "#\\\\[0-7]{1,3}#",
        +        //String Parsing of Variable Names
        +        // 4 => "#\\$[a-z0-9_]+(?:\\[[a-z0-9_]+\\]|->[a-z0-9_]+)?|(?:\\{\\$|\\$\\{)[a-z0-9_]+(?:\\[('?)[a-z0-9_]*\\1\\]|->[a-z0-9_]+)*\\}#i",
        +        //Experimental extension supporting cascaded {${$var}} syntax
        +        // 5 => "#\$[a-z0-9_]+(?:\[[a-z0-9_]+\]|->[a-z0-9_]+)?|(?:\{\$|\$\{)[a-z0-9_]+(?:\[('?)[a-z0-9_]*\\1\]|->[a-z0-9_]+)*\}|\{\$(?R)\}#i",
        +        //Format String support in ""-Strings
        +        // 6 => "#%(?:%|(?:\d+\\\\\\\$)?\\+?(?:\x20|0|'.)?-?(?:\d+|\\*)?(?:\.\d+)?[bcdefFosuxX])#"
        +        ),
        +    'NUMBERS' =>
        +    GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        0 => array(
        +            'to', 'nuw', 'nsw', 'inbounds', 'entry', 'return'
        +            ),
        +        //Terminator Instructions
        +        1 => array(
        +            'ret', 'br', 'switch', 'indirectbr', 'invoke', 'resume', 'catchswitch', 'catchret', 'cleanupret', 'unreachable'
        +            ),
        +        //Binary Operations
        +        2 => array(
        +            'add', 'fadd', 'sub', 'fsub', 'mul', 'fmul', 'udiv', 'sdiv', 'fdiv', 'urem', 'srem', 'frem'
        +            ),
        +        //Bitwise Binary Operations
        +        3 => array(
        +            'shl', 'lshr', 'ashr', 'and', 'or', 'xor'
        +            ),
        +        //Vector Operations
        +        4 => array(
        +            'extractelement', 'insertelement', 'shufflevector'
        +            ),
        +        //Aggregate Operations
        +        5 => array(
        +            'extractvalue', 'insertvalue'
        +            ),
        +        //Memory Access and Addressing Operations
        +        6 => array(
        +            'alloca', 'load', 'store', 'fence', 'cmpxchg', 'atomicrmw', 'getelementptr'
        +            ),
        +        //Conversion Operations
        +        7 => array(
        +            'trunc', 'zext', 'sext', 'fptrunc', 'fpext', 'fptoui', 'fptosi', 'uitofp', 'sitofp',
        +            'ptrtoint', 'inttoptr', 'bitcast', 'addrspacecast'
        +            ),
        +        //Other Operations
        +        8 => array(
        +            'icmp', 'fcmp', 'phi', 'select', 'call', 'va_arg', 'landingpad', 'catchpad', 'cleanuppad'
        +            ),
        +        //Linkage Types
        +        9 => array(
        +            'private', 'internal', 'available_externally', 'linkonce', 'weak', 'common', 'appending',
        +            'extern_weak', 'linkonce_odr', 'weak_odr', 'external'
        +            ),
        +        //Calling Conventions
        +        10 => array(
        +            'ccc', 'fastcc', 'coldcc', 'cc 10', 'cc 11', 'webkit_jscc', 'anyregcc', 'preserve_mostcc',
        +            'preserve_allcc', 'cxx_fast_tlscc', 'swiftcc', 'cc'
        +            ),
        +        //Structure Types
        +        11 => array(
        +            'type'
        +            ),
        +        //Parameter Attributes
        +        12 => array(
        +            'zeroext', 'signext', 'inreg', 'byval', 'inalloca', 'sret', 'align', 'noalias', 'nocapture', 'nest',
        +            'returned', 'nonnull', 'dereferenceable', 'dereferenceable_or_null', 'swiftself', 'swifterror'
        +            ),
        +        //Function Attributes
        +        13 => array(
        +            'alignstack', 'allocsize', 'alwaysinline', 'builtin', 'cold', 'convergent', 'inaccessiblememonly',
        +            'inaccessiblemem_or_argmemonly', 'inlinehint', 'jumptable', 'minsize', 'naked', 'nobuiltin', 'noduplicate',
        +            'noimplicitfloat', 'noinline', 'nonlazybind', 'noredzone', 'noreturn', 'norecurse', 'nounwind',
        +            'optnone', 'optsize', 'patchable-function', 'readnone', 'readonly', 'writeonly', 'argmemonly',
        +            'returns_twice', 'safestack', 'sanitize_address', 'sanitize_memory', 'sanitize_thread', 'ssp',
        +            'sspreq', 'sspstrong', 'thunk', 'uwtable'
        +            ),
        +        //Module-Level Inline Assembly
        +        14 => array(
        +            'module asm'
        +            ),
        +        //Data Layout
        +        15 => array(
        +            'target datalayout'
        +            ),
        +        //Type System
        +        16 => array(
        +            'x86_mmx',
        +            'void',
        +            'label',
        +            'metadata',
        +            'opaque'
        +            ),
        +        //Floating Point Types
        +        17 => array(
        +            'half', 'float', 'double', 'fp128', 'x86_fp80', 'ppc_fp128',
        +            ),
        +        //Simple Constants
        +        18 => array(
        +            'false', 'true', 'null'
        +            ),
        +        //Global Variable
        +        19 => array(
        +            'global', 'addrspace', 'constant', 'section'
        +            ),
        +        //Functions
        +        20 => array(
        +            'declare', 'define'
        +            ),
        +        //Complex Constants
        +        21 => array(
        +            'zeroinitializer'
        +            ),
        +        //Undefined Values
        +        22 => array(
        +            'undef'
        +            ),
        +        //Addresses of Basic Blocks
        +        23 => array(
        +            'blockaddress'
        +            ),
        +        //Visibility Styles
        +        24 => array(
        +            'default', 'hidden', 'protected'
        +            ),
        +        //Volatile Memory Accesses
        +        25 => array(
        +            'volatile'
        +            ),
        +        26 => array(
        +            'tail'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array(
        +            '(', ')', '[', ']', '{', '}',
        +            '!', '@', '%', '&', '|', '/',
        +            '<', '>',
        +            '=', '-', '+', '*',
        +            '.', ':', ',', ';'
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true,
        +        8 => true,
        +        9 => true,
        +        10 => true,
        +        11 => true,
        +        12 => true,
        +        13 => true,
        +        14 => true,
        +        15 => true,
        +        16 => true,
        +        17 => true,
        +        18 => true,
        +        19 => true,
        +        20 => true,
        +        21 => true,
        +        22 => true,
        +        23 => true,
        +        24 => true,
        +        25 => true,
        +        26 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            0 => 'color: #209090;',
        +            1 => 'color: #0000F0;',
        +            2 => 'color: #00F000; font-weight: bold;',
        +            3 => 'color: #F00000;',
        +            4 => 'color: #00F0F0; font-weight: bold;',
        +            5 => 'color: #F000F0; font-weight: bold;',
        +            6 => 'color: #403020; font-weight: bold;',
        +            7 => 'color: #909090; font-weight: bold;',
        +            8 => 'color: #009090; font-weight: bold;',
        +            9 => 'color: #900090; font-weight: bold;',
        +            10 => 'color: #909000; font-weight: bold;',
        +            11 => 'color: #000090; font-weight: bold;',
        +            12 => 'color: #900000; font-weight: bold;',
        +            13 => 'color: #009000; font-weight: bold;',
        +            14 => 'color: #F0F090; font-weight: bold;',
        +            15 => 'color: #F090F0; font-weight: bold;',
        +            16 => 'color: #90F0F0; font-weight: bold;',
        +            17 => 'color: #9090F0; font-weight: bold;',
        +            18 => 'color: #90F090; font-weight: bold;',
        +            19 => 'color: #F09090; font-weight: bold;',
        +            20 => 'color: #4040F0; font-weight: bold;',
        +            21 => 'color: #40F040; font-weight: bold;',
        +            22 => 'color: #F04040; font-weight: bold;',
        +            23 => 'color: #F0F040; font-weight: bold;',
        +            24 => 'color: #F040F0; font-weight: bold;',
        +            25 => 'color: #40F0F0; font-weight: bold;',
        +            26 => 'color: #904040; font-weight: bold;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            1 => 'color: #000099; font-weight: bold;',
        +            2 => 'color: #660099; font-weight: bold;',
        +            3 => 'color: #660099; font-weight: bold;',
        +            4 => 'color: #006699; font-weight: bold;',
        +            5 => 'color: #006699; font-weight: bold; font-style: italic;',
        +            6 => 'color: #009933; font-weight: bold;',
        +            'HARD' => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;',
        +            'HARD' => 'color: #0000ff;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;',
        +            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #004000;',
        +            2 => 'color: #004000;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;',
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #007088;',
        +            1 => 'color: #007088;',
        +            // 2 => 'color: #000088;',
        +            3 => 'color: #700088;',
        +            4 => 'color: #010088;',
        +            // 5 => 'color: #610088;',
        +            // 6 => 'color: #616088;',
        +            // 7 => 'color: #616988;',
        +            // 8 => 'color: #616908;',
        +            9 => 'color: #6109F8;',
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => '',
        +            2 => '',
        +            3 => '',
        +            4 => '',
        +            5 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        0 => '',
        +        1 => 'http://llvm.org/docs/LangRef.html#{FNAME}-instruction',
        +        2 => 'http://llvm.org/docs/LangRef.html#{FNAME}-instruction',
        +        3 => 'http://llvm.org/docs/LangRef.html#{FNAME}-instruction',
        +        4 => 'http://llvm.org/docs/LangRef.html#{FNAME}-instruction',
        +        5 => 'http://llvm.org/docs/LangRef.html#{FNAME}-instruction',
        +        6 => 'http://llvm.org/docs/LangRef.html#{FNAME}-instruction',
        +        7 => 'http://llvm.org/docs/LangRef.html#{FNAME}-instruction',
        +        8 => 'http://llvm.org/docs/LangRef.html#{FNAME}-instruction',
        +        9 => 'http://llvm.org/docs/LangRef.html#linkage-types',
        +        10 => 'http://llvm.org/docs/LangRef.html#calling-conventions',
        +        11 => 'http://llvm.org/docs/LangRef.html#opaque-structure-types',
        +        12 => 'http://llvm.org/docs/LangRef.html#parameter-attributes',
        +        13 => 'http://llvm.org/docs/LangRef.html#function-attributes',
        +        14 => 'http://llvm.org/docs/LangRef.html#module-level-inline-assembly',
        +        15 => 'http://llvm.org/docs/LangRef.html#data-layout',
        +        16 => 'http://llvm.org/docs/LangRef.html#type-system',
        +        17 => 'http://llvm.org/docs/LangRef.html#floating-point-types',
        +        18 => 'http://llvm.org/docs/LangRef.html#simple-constants',
        +        19 => 'http://llvm.org/docs/LangRef.html#global-variables',
        +        20 => 'http://llvm.org/docs/LangRef.html#functions',
        +        21 => 'http://llvm.org/docs/LangRef.html#complex-constants',
        +        22 => 'http://llvm.org/docs/LangRef.html#undefined-values',
        +        23 => 'http://llvm.org/docs/LangRef.html#addresses-of-basic-blocks',
        +        24 => 'http://llvm.org/docs/LangRef.html#visibility-styles',
        +        25 => 'http://llvm.org/docs/LangRef.html#volatile-memory-accesses',
        +        26 => 'http://llvm.org/docs/LangRef.html#call-instruction',
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        //Variables
        +        0 => '%[-a-zA-Z$\._][-a-zA-Z$\._0-9]*',
        +        //Labels
        +        // 1 => '[-a-zA-Z$\._0-9]+:',
        +        1 => '(?]*<)',
        +        //Strings
        +        // 2 => '"[^"]+"',
        +        //Unnamed variable slots
        +        3 => '%[-]?[0-9]+',
        +        //Integer Types
        +        4 => array(
        +            GESHI_SEARCH => '(? '\\0',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        //Comments
        +        // 5 => ';.*',
        +        //Integer literals
        +        // 6 => '\\b[-]?[0-9]+\\b',
        +        //Floating point constants
        +        // 7 => '\\b[-+]?[0-9]+\.[0-9]*\([eE][-+]?[0-9]+\)?\\b',
        +        //Hex constants
        +        // 8 => '\\b0x[0-9A-Fa-f]+\\b',
        +        //Global variables
        +        9 => array(
        +            GESHI_SEARCH => '@[-a-zA-Z$\._][-a-zA-Z$\._0-9]*',
        +            GESHI_REPLACE => '\\0',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => true,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true
        +        ),
        +    'SCRIPT_DELIMITERS' => array(),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/locobasic.php b/includes/geshi/locobasic.php
        new file mode 100644
        index 0000000..686bb6c
        --- /dev/null
        +++ b/includes/geshi/locobasic.php
        @@ -0,0 +1,128 @@
        + 'Locomotive Basic',
        +    'COMMENT_SINGLE' => array(1 => "'", 2 => 'REM'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            "AFTER", "AND", "AUTO", "BORDER", "BREAK", "CALL", "CAT", "CHAIN",
        +            "CLEAR", "CLG", "CLS", "CLOSEIN", "CLOSEOUT", "CONT", "CURSOR",
        +            "DATA", "DEF", "DEFINT", "DEFREAL", "DEFSTR", "DEG", "DELETE",
        +            "DERR", "DI", "DIM", "DRAW", "DRAWR", "EDIT", "EI", "ELSE", "END",
        +            "ENV", "ENT", "EOF", "ERASE", "ERL", "ERR", "ERROR", "EVERY",
        +            "FILL", "FN", "FOR", "FRAME", "GOSUB", "GOTO", "GRAPHICS", "HIMEM",
        +            "IF", "INK", "INPUT", "KEY", "LET", "LINE", "LIST", "LOAD",
        +            "LOCATE", "MASK", "MEMORY", "MERGE", "MODE", "MOVE", "MOVER", "NEW",
        +            "NEXT", "NOT", "ON", "OPENIN", "OPENOUT", "OR", "ORIGIN", "PAPER",
        +            "PEEK", "PEN", "PLOT", "PLOTR", "POKE", "PRINT", "RAD", "RANDOMIZE",
        +            "READ", "RELEASE", "REMAIN", "RENUM", "RESTORE", "RESUME", "RETURN",
        +            "RUN", "SAVE", "SPEED", "SOUND", "SPC", "SQ", "STEP", "STOP", "SWAP",
        +            "SYMBOL", "TAB", "TAG", "TAGOFF", "TEST", "TESTR", "TIME", "TO",
        +            "THEN", "TRON", "TROFF", "USING", "WAIT", "WEND", "WHILE", "WIDTH",
        +            "WINDOW", "WRITE", "XOR", "ZONE"
        +            ),
        +        2 => array(
        +            "ABS", "ASC", "ATN", "BIN", "CHR", "CINT", "COPYCHR", "COS",
        +            "CREAL", "DEC", "FIX", "FRE", "EXP", "HEX", "INKEY", "INP", "INSTR",
        +            "INT", "JOY", "LEFT", "LEN", "LOG", "LOG10", "LOWER", "MAX", "MID",
        +            "MIN", "MOD", "OUT", "PI", "POS", "RIGHT", "RND", "ROUND", "SGN",
        +            "SIN", "SPACE", "SQR", "STR", "STRING", "TAN", "UNT", "UPPER",
        +            "VAL", "VPOS", "XPOS", "YPOS"
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000088; font-weight: bold;',
        +            2 => 'color: #AA00AA; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080;',
        +            2 => 'color: #808080;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #008800;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #0044ff;'
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/logtalk.php b/includes/geshi/logtalk.php
        new file mode 100644
        index 0000000..c72e548
        --- /dev/null
        +++ b/includes/geshi/logtalk.php
        @@ -0,0 +1,343 @@
        + 'Logtalk',
        +    'COMMENT_SINGLE' => array(1 => '%'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(2 => "/0'./sim"),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'"),
        +    'HARDQUOTE' => array('"', '"'),
        +    'HARDESCAPE' => array(),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        //Simple Single Char Escapes
        +        1 => "#\\\\[\\\\abfnrtv\'\"?\n]#i",
        +        //Hexadecimal Char Specs
        +        2 => "#\\\\x[\da-fA-F]+\\\\#",
        +        //Octal Char Specs
        +        3 => "#\\\\[0-7]+\\\\#"
        +        ),
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC |
        +        GESHI_NUMBER_BIN_PREFIX_0B |
        +        GESHI_NUMBER_OCT_PREFIX_0O |
        +        GESHI_NUMBER_HEX_PREFIX |
        +        GESHI_NUMBER_FLT_NONSCI |
        +        GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        // Directives (with arguments)
        +        1 => array(
        +            // file directives
        +            'encoding', 'ensure_loaded',
        +            // flag directives
        +            'set_logtalk_flag', 'set_prolog_flag',
        +            // entity opening directives
        +            'category', 'object', 'protocol',
        +            // predicate scope directives
        +            'private', 'protected', 'public',
        +            // conditional compilation directives
        +            'elif', 'if',
        +            // entity directives
        +            'calls', 'initialization', 'op', 'uses',
        +            // predicate directives
        +            'alias', 'coinductive', 'discontiguous', 'dynamic', 'mode', 'info', 'meta_predicate', 'multifile', 'synchronized',
        +            // module directives
        +            'export', 'module', 'reexport', 'use_module'
        +            ),
        +        // Directives (no arguments)
        +        2 => array(
        +            // entity directives
        +            'dynamic',
        +            // multi-threading directives
        +            'synchronized', 'threaded',
        +            // entity closing directives
        +            'end_category', 'end_object', 'end_protocol',
        +            // conditional compilation directives
        +            'else', 'endif'
        +            ),
        +        // Entity relations
        +        3 => array(
        +            'complements', 'extends', 'imports', 'implements','instantiates', 'specializes'
        +            ),
        +        // Built-in predicates (with arguments)
        +        4 => array(
        +            // event handlers
        +            'after', 'before',
        +            // execution-context methods
        +            'parameter', 'self', 'sender', 'this',
        +            // predicate reflection
        +            'current_predicate', 'predicate_property',
        +            // DCGs and term expansion
        +            'expand_goal', 'expand_term', 'goal_expansion', 'phrase', 'term_expansion',
        +            // entity
        +            'abolish_category', 'abolish_object', 'abolish_protocol',
        +            'create_category', 'create_object', 'create_protocol',
        +            'current_category', 'current_object', 'current_protocol',
        +            'category_property', 'object_property', 'protocol_property',
        +            // entity relations
        +            'complements_object', 'conforms_to_protocol',
        +            'extends_category', 'extends_object', 'extends_protocol',
        +            'implements_protocol', 'imports_category',
        +            'instantiates_class', 'specializes_class',
        +            // events
        +            'abolish_events', 'current_event', 'define_events',
        +            // flags
        +            'current_logtalk_flag', 'set_logtalk_flag',
        +            'current_prolog_flag', 'set_prolog_flag',
        +            // compiling, loading, and library path
        +            'logtalk_compile', 'logtalk_library_path', 'logtalk_load',
        +            // database
        +            'abolish', 'asserta', 'assertz', 'clause', 'retract', 'retractall',
        +            // control
        +            'call', 'catch', 'ignore', 'once', 'throw',
        +            // all solutions predicates
        +            'bagof', 'findall', 'forall', 'setof',
        +            // multi-threading meta-predicates
        +            'threaded',
        +            'threaded_call', 'threaded_once', 'threaded_ignore', 'threaded_exit', 'threaded_peek',
        +            'threaded_wait', 'threaded_notify',
        +            // term unification
        +            'unify_with_occurs_check',
        +            // atomic term processing
        +            'atom_chars', 'atom_codes', 'atom_concat', 'atom_length',
        +            'number_chars', 'number_codes',
        +            'char_code',
        +            // term creation and decomposition
        +            'arg', 'copy_term', 'functor', 'numbervars',
        +            // term testing
        +            'atom', 'atomic', 'callable', 'compound', 'float', 'ground', 'integer', 'nonvar', 'number', 'sub_atom', 'var',
        +            // term comparison
        +            'compare',
        +            // stream selection and control
        +            'current_input', 'current_output', 'set_input', 'set_output',
        +            'open', 'close', 'flush_output', 'stream_property',
        +            'at_end_of_stream', 'set_stream_position',
        +            // character and byte input/output predicates
        +            'get_byte', 'get_char', 'get_code',
        +            'peek_byte', 'peek_char', 'peek_code',
        +            'put_byte', 'put_char', 'put_code',
        +            'nl',
        +            // term input/output predicates
        +            'current_op', 'op',
        +            'write', 'writeq', 'write_canonical', 'write_term',
        +            'read', 'read_term',
        +            'char_conversion', 'current_char_conversion',
        +            // hooks
        +            'halt',
        +            // sorting
        +            'keysort', 'sort'
        +            ),
        +        // Built-in predicates (no arguments)
        +        5 => array(
        +            // control
        +            'fail', 'repeat', 'true',
        +            // character and byte input/output predicates
        +            'nl',
        +            // implementation defined hooks functions
        +            'halt',
        +            // arithemtic evaluation
        +            'is',
        +            // stream selection and control
        +            'at_end_of_stream', 'flush_output'
        +            ),
        +        // Evaluable functors (with arguments)
        +        6 => array(
        +            'float_integer_part', 'float_fractional_part',
        +            'rem', 'mod', 'abs', 'sign', 'floor', 'truncate', 'round', 'ceiling',
        +            'cos', 'atan', 'exp', 'log', 'sin', 'sqrt'
        +            ),
        +        // Evaluable functors (no arguments)
        +        7 => array(
        +            'e', 'pi', 'mod', 'rem'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array(
        +            // external call
        +            '{', '}'
        +            ),
        +        1 => array(
        +            // arithemtic comparison
        +            '=:=', '=\=', '<', '=<', '>=', '>',
        +            // term comparison
        +            '<<', '>>', '/\\', '\\/', '\\',
        +            // bitwise functors
        +            '==', '\==', '@<', '@=<', '@>=', '@>',
        +            // evaluable functors
        +            '+', '-', '*', '/', '**',
        +            // logic and control
        +            '!', '\\+', ';',
        +            // message sending operators
        +            '::', '^^', ':',
        +            // grammar rule and conditional functors
        +            '-->', '->',
        +            // mode operators
        +            '@', '?',
        +            // term to list predicate
        +            '=..',
        +            // unification
        +            '=', '\\='
        +            ),
        +        2 => array(
        +            // clause and directive functors
        +            ':-'
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #2e4dc9;',
        +            2 => 'color: #2e4dc9;',
        +            3 => 'color: #2e4dc9;',
        +            4 => 'color: #9d4f37;',
        +            5 => 'color: #9d4f37;',
        +            6 => 'color: #9d4f37;',
        +            7 => 'color: #9d4f37;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #430000;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #60a0b0; font-style: italic;',
        +            2 => 'color: #430000;',
        +            'MULTI' => 'color: #60a0b0; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #9f0000; font-weight: bold;',
        +            1 => 'color: #9f0000; font-weight: bold;',
        +            2 => 'color: #9f0000; font-weight: bold;',
        +            3 => 'color: #9f0000; font-weight: bold;',
        +            'HARD' => '',
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #666666;font-weight: bold;',
        +            1 => 'color: #666666;font-weight: bold;',
        +            2 => 'color: #000000;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #9f0000;',
        +            'HARD' => 'color: #9f0000;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #848484;'
        +            ),
        +        'SCRIPT' => array()
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => '',
        +        7 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        // variables
        +        0 => '\b(?!(?:PIPE|SEMI|REG3XP\d*)[^a-zA-Z0-9_])[A-Z_][a-zA-Z0-9_]*(?![a-zA-Z0-9_])'
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'ENABLE_FLAGS' => array(
        +            'BRACKETS' => GESHI_NEVER
        +            ),
        +        'KEYWORDS' => array(
        +            1 => array(
        +                'DISALLOWED_BEFORE' => '(?<=:-\s)',
        +                'DISALLOWED_AFTER' => '(?=\()'
        +                ),
        +            2 => array(
        +                'DISALLOWED_BEFORE' => '(?<=:-\s)',
        +                'DISALLOWED_AFTER' => '(?=\.)'
        +                ),
        +            3 => array(
        +                'DISALLOWED_BEFORE' => '(?|^&\'"])',
        +                'DISALLOWED_AFTER' => '(?=\()'
        +                ),
        +            4 => array(
        +                'DISALLOWED_BEFORE' => '(?|^&\'"])',
        +                'DISALLOWED_AFTER' => '(?=\()'
        +                ),
        +            5 => array(
        +                'DISALLOWED_BEFORE' => '(?|^&\'"])',
        +                'DISALLOWED_AFTER' => '(?![a-zA-Z0-9_\|%\\-&\'"])'
        +                ),
        +            6 => array(
        +                'DISALLOWED_BEFORE' => '(?|^&\'"])',
        +                'DISALLOWED_AFTER' => '(?=\()'
        +                ),
        +            7 => array(
        +                'DISALLOWED_BEFORE' => '(?|^&\'"])',
        +                'DISALLOWED_AFTER' => '(?![a-zA-Z0-9_\|%\\-&\'"])'
        +                )
        +            )
        +        )
        +);
        diff --git a/includes/geshi/lolcode.php b/includes/geshi/lolcode.php
        new file mode 100644
        index 0000000..3dee092
        --- /dev/null
        +++ b/includes/geshi/lolcode.php
        @@ -0,0 +1,159 @@
        + 'LOLcode',
        +    'COMMENT_SINGLE' => array('BTW'),
        +    'COMMENT_MULTI' => array('BTW','WTB'),
        +    'COMMENT_REGEXP' => array(
        +        1 => "/\bBTW\b.*$/im",
        +        2 => "/(^|\b)(?:OBTW\b.+?\bTLDR|LOL\b.+?\/LOL)(\b|$)/si"
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        1 => '/:[)>o":]/',
        +        2 => '/:\([\da-f]+\)/i',
        +        3 => '/:\{\w+\}/i',
        +        4 => '/:\[\w+\]/i',
        +        ),
        +    'KEYWORDS' => array(
        +        //Statements
        +        1 => array(
        +            'VISIBLE', 'HAI', 'KTHX', 'KTHXBYE', 'SMOOSH', 'GIMMEH', 'PLZ',
        +            'ON', 'INVISIBLE', 'R', 'ITZ', 'GTFO', 'COMPLAIN', 'GIMME',
        +
        +            'OPEN', 'FILE', 'I HAS A', 'AWSUM THX', 'O NOES', 'CAN', 'HAS', 'HAZ',
        +            'HOW DOES I', 'IF U SAY SO', 'FOUND YR', 'BORROW', 'OWN', 'ALONG',
        +            'WITH', 'WIT', 'LOOK', 'AT', 'AWSUM', 'THX'
        +            ),
        +        //Conditionals
        +        2 => array(
        +            'IZ', 'YARLY', 'NOWAI', 'WTF?', 'MEBBE', 'OMG', 'OMGWTF',
        +            'ORLY?', 'OF', 'NOPE', 'SO', 'IM', 'MAI',
        +
        +            'O RLY?', 'SUM', 'BOTH SAEM', 'DIFFRINT', 'BOTH', 'EITHER', 'WON',
        +            'DIFF', 'PRODUKT', 'QUOSHUNT', 'MOD', 'MKAY', 'OK', 'THING',
        +            'BIGNESS'
        +            ),
        +        //Repetition
        +        3 => array(
        +            'IN', 'OUTTA', 'LOOP', 'WHILE'
        +            ),
        +        //Operators \Math
        +        4 => array(
        +            'AN', 'AND', 'NOT', 'UP', 'YR', 'UPPIN', 'NERF', 'NERFIN', 'NERFZ',
        +            'SMASHING', 'UR', 'KINDA', 'LIKE', 'SAEM', 'BIG', 'SMALL',
        +            'BIGGR', 'SMALLR', 'BIGGER', 'SMALLER', 'GOOD', 'CUTE', 'THAN'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '.', ',', '?',
        +        '!!'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #008000;',
        +            2 => 'color: #000080;',
        +            3 => 'color: #000080;',
        +            4 => 'color: #800000;'
        +            ),
        +        'COMMENTS' => array(
        +            0 => 'color: #666666; style: italic;',
        +            1 => 'color: #666666; style: italic;',
        +            2 => 'color: #666666; style: italic;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #00F;'
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #0F0;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #00F;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => 'color: #00F;'
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'SPACE_AS_WHITESPACE' => true
        +            )
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/lotusformulas.php b/includes/geshi/lotusformulas.php
        new file mode 100644
        index 0000000..e94f5df
        --- /dev/null
        +++ b/includes/geshi/lotusformulas.php
        @@ -0,0 +1,316 @@
        + 'Lotus Notes @Formulas',
        +    'COMMENT_SINGLE' => array(1 => "'"),
        +    'COMMENT_MULTI' => array('REM' => ';'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array (
        +            '[ZoomPreview]', '[WorkspaceStackReplicaIcons]',
        +            '[WorkspaceProperties]', '[WindowWorkspace]',
        +            '[WindowTile]', '[WindowRestore]', '[WindowNext]',
        +            '[WindowMinimizeAll]', '[WindowMinimize]', '[WindowMaximizeAll]',
        +            '[WindowMaximize]', '[WindowCascade]', '[ViewSwitchForm]',
        +            '[ViewShowUnread]', '[ViewShowServerNames]', '[ViewShowSearchBar]',
        +            '[ViewShowRuler]', '[ViewShowPageBreaks]', '[ViewShowOnlyUnread]',
        +            '[ViewShowOnlySelected]', '[ViewShowOnlySearchResults]',
        +            '[ViewShowOnlyCategories]', '[ViewShowObject]',
        +            '[ViewShowFieldHelp]', '[ViewRenamePerson]', '[ViewRefreshUnread]',
        +            '[ViewRefreshFields]', '[ViewNavigatorsNone]',
        +            '[ViewNavigatorsFolders]', '[ViewMoveName]', '[ViewHorizScrollbar]',
        +            '[ViewExpandWithChildren]', '[ViewExpandAll]', '[ViewExpand]',
        +            '[ViewCollapseAll]', '[ViewCollapse]', '[ViewChange]',
        +            '[ViewCertify]', '[ViewBesideFolders]', '[ViewBelowFolders]',
        +            '[ViewArrangeIcons]', '[V3EditPrevField]', '[V3EditNextField]',
        +            '[UserIDSwitch]', '[UserIDSetPassword]', '[UserIDMergeCopy]',
        +            '[UserIDInfo]', '[UserIDEncryptionKeys]', '[UserIDCreateSafeCopy]',
        +            '[UserIDClearPassword]', '[UserIDCertificates]',
        +            '[ToolsUserLogoff]', '[ToolsSpellCheck]', '[ToolsSmartIcons]',
        +            '[ToolsSetupUserSetup]', '[ToolsSetupPorts]', '[ToolsSetupMail]',
        +            '[ToolsSetupLocation]', '[ToolsScanUnreadSelected]',
        +            '[ToolsScanUnreadPreferred]', '[ToolsScanUnreadChoose]',
        +            '[ToolsRunMacro]', '[ToolsRunBackgroundMacros]', '[ToolsReplicate]',
        +            '[ToolsRefreshSelectedDocs]', '[ToolsRefreshAllDocs]',
        +            '[ToolsMarkSelectedUnread]', '[ToolsMarkSelectedRead]',
        +            '[ToolsMarkAllUnread]', '[ToolsMarkAllRead]', '[ToolsHangUp]',
        +            '[ToolsCategorize]', '[ToolsCall]', '[TextUnderline]',
        +            '[TextSpacingSingle]', '[TextSpacingOneAndaHalf]',
        +            '[TextSpacingDouble]', '[TextSetFontSize]', '[TextSetFontFace]',
        +            '[TextSetFontColor]', '[TextReduceFont]', '[TextPermanentPen]',
        +            '[TextParagraphStyles]', '[TextParagraph]', '[TextOutdent]',
        +            '[TextNumbers]', '[TextNormal]', '[TextItalic]', '[TextFont]',
        +            '[TextEnlargeFont]', '[TextCycleSpacing]', '[TextBullet]',
        +            '[TextBold]', '[TextAlignRight]', '[TextAlignNone]',
        +            '[TextAlignLeft]', '[TextAlignFull]', '[TextAlignCenter]',
        +            '[SwitchView]', '[SwitchForm]', '[StyleCycleKey]',
        +            '[SmartIconsNextSet]', '[SmartIconsFloating]', '[ShowProperties]',
        +            '[ShowHidePreviewPane]', '[ShowHideParentPreview]',
        +            '[ShowHideLinkPreview]', '[ShowHideIMContactList]',
        +            '[SetCurrentLocation]', '[SendInstantMessage]',
        +            '[SectionRemoveHeader]', '[SectionProperties]',
        +            '[SectionExpandAll]', '[SectionExpand]', '[SectionDefineEditors]',
        +            '[SectionCollapseAll]', '[SectionCollapse]', '[RunScheduledAgents]',
        +            '[RunAgent]', '[ReplicatorStop]', '[ReplicatorStart]',
        +            '[ReplicatorSendReceiveMail]', '[ReplicatorSendMail]',
        +            '[ReplicatorReplicateWithServer]', '[ReplicatorReplicateSelected]',
        +            '[ReplicatorReplicateNext]', '[ReplicatorReplicateHigh]',
        +            '[Replicator]', '[RenameDatabase]', '[RemoveFromFolder]',
        +            '[RemoteDebugLotusScript]', '[ReloadWindow]', '[RefreshWindow]',
        +            '[RefreshParentNote]', '[RefreshHideFormulas]', '[RefreshFrame]',
        +            '[PublishDatabase]', '[PictureProperties]', '[PasteBitmapAsObject]',
        +            '[PasteBitmapAsBackground]', '[OpenView]', '[OpenPage]',
        +            '[OpenNavigator]', '[OpenInNewWindow]', '[OpenHelpDocument]',
        +            '[OpenFrameset]', '[OpenDocument]', '[OpenCalendar]',
        +            '[ObjectProperties]', '[ObjectOpen]', '[ObjectDisplayAs]',
        +            '[NavPrevUnread]', '[NavPrevSelected]', '[NavPrevMain]',
        +            '[NavPrev]', '[NavNextUnread]', '[NavNextSelected]',
        +            '[NavNextMain]', '[NavNext]', '[NavigatorTest]',
        +            '[NavigatorProperties]', '[NavigateToBacklink]',
        +            '[NavigatePrevUnread]', '[NavigatePrevSelected]',
        +            '[NavigatePrevMain]', '[NavigatePrevHighlight]', '[NavigatePrev]',
        +            '[NavigateNextUnread]', '[NavigateNextSelected]',
        +            '[NavigateNextMain]', '[NavigateNextHighlight]', '[NavigateNext]',
        +            '[MoveToTrash]', '[MailSendPublicKey]', '[MailSendEncryptionKey]',
        +            '[MailSendCertificateRequest]', '[MailSend]', '[MailScanUnread]',
        +            '[MailRequestNewPublicKey]', '[MailRequestNewName]',
        +            '[MailRequestCrossCert]', '[MailOpen]', '[MailForwardAsAttachment]',
        +            '[MailForward]', '[MailComposeMemo]', '[MailAddress]',
        +            '[LayoutProperties]', '[LayoutElementSendToBack]',
        +            '[LayoutElementProperties]', '[LayoutElementBringToFront]',
        +            '[LayoutAddText]', '[LayoutAddGraphic]', '[InsertSubform]',
        +            '[HotspotProperties]', '[HotspotClear]', '[HelpUsingDatabase]',
        +            '[HelpAboutNotes]', '[HelpAboutDatabase]', '[GoUpLevel]',
        +            '[FormTestDocument]', '[FormActions]', '[FolderRename]',
        +            '[FolderProperties]', '[FolderMove]', '[FolderExpandWithChildren]',
        +            '[FolderExpandAll]', '[FolderExpand]', '[FolderDocuments]',
        +            '[FolderCustomize]', '[FolderCollapse]', '[Folder]',
        +            '[FindFreeTimeDialog]', '[FileSaveNewVersion]', '[FileSave]',
        +            '[FilePrintSetup]', '[FilePrint]', '[FilePageSetup]',
        +            '[FileOpenDBRepID]', '[FileOpenDatabase]', '[FileNewReplica]',
        +            '[FileNewDatabase]', '[FileImport]', '[FileFullTextUpdate]',
        +            '[FileFullTextInfo]', '[FileFullTextDelete]',
        +            '[FileFullTextCreate]', '[FileExport]', '[FileExit]',
        +            '[FileDatabaseUseServer]', '[FileDatabaseRemove]',
        +            '[FileDatabaseInfo]', '[FileDatabaseDelete]', '[FileDatabaseCopy]',
        +            '[FileDatabaseCompact]', '[FileDatabaseACL]', '[FileCloseWindow]',
        +            '[ExitNotes]', '[Execute]', '[ExchangeUnreadMarks]', '[EmptyTrash]',
        +            '[EditUp]', '[EditUntruncate]', '[EditUndo]', '[EditTop]',
        +            '[EditTableInsertRowColumn]', '[EditTableFormat]',
        +            '[EditTableDeleteRowColumn]', '[EditShowHideHiddenChars]',
        +            '[EditSelectByDate]', '[EditSelectAll]', '[EditRight]',
        +            '[EditRestoreDocument]', '[EditResizePicture]',
        +            '[EditQuoteSelection]', '[EditProfileDocument]', '[EditProfile]',
        +            '[EditPrevField]', '[EditPhoneNumbers]', '[EditPasteSpecial]',
        +            '[EditPaste]', '[EditOpenLink]', '[EditNextField]',
        +            '[EditMakeDocLink]', '[EditLocations]', '[EditLinks]', '[EditLeft]',
        +            '[EditInsertText]', '[EditInsertTable]', '[EditInsertPopup]',
        +            '[EditInsertPageBreak]', '[EditInsertObject]',
        +            '[EditInsertFileAttachment]', '[EditInsertButton]',
        +            '[EditIndentFirstLine]', '[EditIndent]', '[EditHorizScrollbar]',
        +            '[EditHeaderFooter]', '[EditGotoField]', '[EditFindNext]',
        +            '[EditFindInPreview]', '[EditFind]', '[EditEncryptionKeys]',
        +            '[EditDown]', '[EditDocument]', '[EditDetach]', '[EditDeselectAll]',
        +            '[EditCut]', '[EditCopy]', '[EditClear]', '[EditButton]',
        +            '[EditBottom]', '[DiscoverFolders]', '[Directories]',
        +            '[DialingRules]', '[DesignViewSelectFormula]', '[DesignViews]',
        +            '[DesignViewNewColumn]', '[DesignViewFormFormula]',
        +            '[DesignViewEditActions]', '[DesignViewColumnDef]',
        +            '[DesignViewAttributes]', '[DesignViewAppendColumn]',
        +            '[DesignSynopsis]', '[DesignSharedFields]', '[DesignReplace]',
        +            '[DesignRefresh]', '[DesignMacros]', '[DesignIcon]',
        +            '[DesignHelpUsingDocument]', '[DesignHelpAboutDocument]',
        +            '[DesignFormWindowTitle]', '[DesignFormUseField]',
        +            '[DesignFormShareField]', '[DesignForms]', '[DesignFormNewField]',
        +            '[DesignFormFieldDef]', '[DesignFormAttributes]',
        +            '[DesignDocumentInfo]', '[DebugLotusScript]',
        +            '[DatabaseReplSettings]', '[DatabaseDelete]', '[CreateView]',
        +            '[CreateTextbox]', '[CreateSubForm]', '[CreateSection]',
        +            '[CreateRectangularHotspot]', '[CreateRectangle]',
        +            '[CreatePolyline]', '[CreatePolygon]', '[CreateNavigator]',
        +            '[CreateLayoutRegion]', '[CreateForm]', '[CreateFolder]',
        +            '[CreateEllipse]', '[CreateControlledAccessSection]',
        +            '[CreateAgent]', '[CreateAction]', '[CopySelectedAsTable]',
        +            '[ComposeWithReference]', '[Compose]', '[CloseWindow]', '[Clear]',
        +            '[ChooseFolders]', '[CalendarGoTo]', '[CalendarFormat]',
        +            '[AttachmentView]', '[AttachmentProperties]', '[AttachmentLaunch]',
        +            '[AttachmentDetachAll]', '[AgentTestRun]', '[AgentSetServerName]',
        +            '[AgentRun]', '[AgentLog]', '[AgentEnableDisable]', '[AgentEdit]',
        +            '[AdminTraceConnection]', '[AdminStatisticsConfig]',
        +            '[AdminSendMailTrace]', '[AdminRemoteConsole]',
        +            '[AdminRegisterUser]', '[AdminRegisterServer]',
        +            '[AdminRegisterFromFile]', '[AdminOutgoingMail]',
        +            '[AdminOpenUsersView]', '[AdminOpenStatistics]',
        +            '[AdminOpenServersView]', '[AdminOpenServerLog]',
        +            '[AdminOpenGroupsView]', '[AdminOpenCertLog]', '[AdminOpenCatalog]',
        +            '[AdminOpenAddressBook]', '[AdminNewOrgUnit]',
        +            '[AdminNewOrganization]', '[Administration]',
        +            '[AdminIDFileSetPassword]', '[AdminIDFileExamine]',
        +            '[AdminIDFileClearPassword]', '[AdminDatabaseQuotas]',
        +            '[AdminDatabaseAnalysis]', '[AdminCrossCertifyKey]',
        +            '[AdminCrossCertifyIDFile]', '[AdminCreateGroup]', '[AdminCertify]',
        +            '[AddToIMContactList]', '[AddDatabaseRepID]', '[AddDatabase]',
        +            '[AddBookmark]'
        +            ),
        +        2 => array(
        +            'SELECT', 'FIELD', 'ENVIRONMENT', 'DEFAULT', '@Zone ', '@Yesterday',
        +            '@Yes', '@Year', '@Word', '@Wide', '@While', '@Weekday',
        +            '@WebDbName', '@ViewTitle', '@ViewShowThisUnread', '@Version',
        +            '@VerifyPassword', '@ValidateInternetAddress', '@V4UserAccess',
        +            '@V3UserName', '@V2If', '@UserRoles', '@UserPrivileges',
        +            '@UserNamesList', '@UserNameLanguage', '@UserName', '@UserAccess',
        +            '@UrlQueryString', '@URLOpen', '@URLHistory', '@URLGetHeader',
        +            '@URLEncode', '@URLDecode', '@UpperCase', '@UpdateFormulaContext',
        +            '@Unique', '@UndeleteDocument', '@Unavailable', '@True', '@Trim',
        +            '@Transform', '@ToTime', '@ToNumber', '@Tomorrow', '@Today',
        +            '@TimeZoneToText', '@TimeToTextInZone', '@TimeMerge', '@Time',
        +            '@ThisValue', '@ThisName', '@TextToTime', '@TextToNumber', '@Text',
        +            '@TemplateVersion', '@Tan', '@Sum', '@Success', '@Subset',
        +            '@StatusBar', '@Sqrt', '@Soundex', '@Sort', '@Sin', '@Sign',
        +            '@SetViewInfo', '@SetTargetFrame', '@SetProfileField',
        +            '@SetHTTPHeader', '@SetField', '@SetEnvironment', '@SetDocField',
        +            '@Set', '@ServerName', '@ServerAccess', '@Select', '@Second',
        +            '@Round', '@RightBack', '@Right', '@Return', '@Responses',
        +            '@ReplicaID', '@ReplaceSubstring', '@Replace', '@Repeat',
        +            '@RegQueryValue', '@RefreshECL', '@Random', '@ProperCase',
        +            '@Prompt', '@Power', '@PostedCommand', '@PolicyIsFieldLocked',
        +            '@Platform', '@PickList', '@Pi', '@PasswordQuality', '@Password',
        +            '@OrgDir', '@OptimizeMailAddress', '@OpenInNewWindow', '@Now',
        +            '@Nothing', '@NoteID', '@No', '@NewLine', '@Narrow', '@NameLookup',
        +            '@Name', '@Month', '@Modulo', '@Modified', '@Minute', '@Min',
        +            '@MiddleBack', '@Middle', '@Member', '@Max', '@Matches',
        +            '@MailSignPreference', '@MailSend', '@MailSavePreference',
        +            '@MailEncryptSentPreference', '@MailEncryptSavedPreference',
        +            '@MailDbName', '@LowerCase', '@Log', '@Locale', '@Ln', '@Like',
        +            '@Length', '@LeftBack', '@Left', '@LDAPServer', '@LaunchApp',
        +            '@LanguagePreference', '@Keywords', '@IsVirtualizedDirectory',
        +            '@IsValid', '@IsUsingJavaElement', '@IsUnavailable', '@IsTime',
        +            '@IsText', '@IsResponseDoc', '@IsNumber', '@IsNull', '@IsNotMember',
        +            '@IsNewDoc', '@IsModalHelp', '@IsMember', '@IsExpandable',
        +            '@IsError', '@IsEmbeddedInsideWCT', '@IsDocTruncated',
        +            '@IsDocBeingSaved', '@IsDocBeingRecalculated', '@IsDocBeingMailed',
        +            '@IsDocBeingLoaded', '@IsDocBeingEdited', '@IsDB2', '@IsCategory',
        +            '@IsAvailable', '@IsAppInstalled', '@IsAgentEnabled', '@Integer',
        +            '@InheritedDocumentUniqueID', '@Implode', '@IfError', '@If',
        +            '@Hour', '@HashPassword', '@HardDeleteDocument', '@GetViewInfo',
        +            '@GetProfileField', '@GetPortsList', '@GetIMContactListGroupNames',
        +            '@GetHTTPHeader', '@GetFocusTable', '@GetField', '@GetDocField',
        +            '@GetCurrentTimeZone', '@GetAddressBooks', '@FormLanguage', '@For',
        +            '@FontList', '@FloatEq', '@FileDir', '@False', '@Failure',
        +            '@Explode', '@Exp', '@Eval', '@Error', '@Environment', '@Ends',
        +            '@EnableAlarms', '@Elements', '@EditUserECL', '@EditECL',
        +            '@DoWhile', '@Domain', '@DocumentUniqueID', '@DocSiblings',
        +            '@DocParentNumber', '@DocOmmittedLength', '@DocNumber', '@DocMark',
        +            '@DocLock', '@DocLevel', '@DocLength', '@DocFields',
        +            '@DocDescendants', '@DocChildren', '@Do', '@DialogBox',
        +            '@DeleteField', '@DeleteDocument', '@DDETerminate', '@DDEPoke',
        +            '@DDEInitiate', '@DDEExecute', '@DbTitle', '@DbName', '@DbManager',
        +            '@DbLookup', '@DbExists', '@DbCommand', '@DbColumn', '@DB2Schema',
        +            '@Day', '@Date', '@Created', '@Count', '@Cos', '@Contains',
        +            '@ConfigFile', '@Compare', '@Command', '@ClientType',
        +            '@CheckFormulaSyntax', '@CheckAlarms', '@Char', '@Certificate',
        +            '@BusinessDays', '@BrowserInfo', '@Begins', '@Author',
        +            '@Attachments', '@AttachmentNames', '@AttachmentModifiedTimes',
        +            '@AttachmentLengths', '@ATan2', '@ATan', '@ASin', '@Ascii',
        +            '@AllDescendants', '@AllChildren', '@All', '@AdminECLIsLocked',
        +            '@Adjust', '@AddToFolder', '@ACos', '@Accessed', '@AbstractSimple',
        +            '@Abstract', '@Abs'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #800000;',
        +            2 => 'color: #0000FF;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008000;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #FF00FF;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #FF00FF;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #0000AA;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 2
        +);
        diff --git a/includes/geshi/lotusscript.php b/includes/geshi/lotusscript.php
        new file mode 100644
        index 0000000..e5a8971
        --- /dev/null
        +++ b/includes/geshi/lotusscript.php
        @@ -0,0 +1,189 @@
        + 'LotusScript',
        +    'COMMENT_SINGLE' => array(1 => "'"),
        +    'COMMENT_MULTI' => array('%REM' => '%END REM'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"' , "|"),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array (
        +            'Yield', 'Year', 'Xor', 'Write', 'With', 'Width', 'While', 'Wend',
        +            'Weekday', 'VarType', 'Variant', 'Val', 'UString', 'UString$',
        +            'UseLSX', 'Use', 'Until', 'Unlock', 'Unicode', 'Uni', 'UChr',
        +            'UChr$', 'UCase', 'UCase$', 'UBound', 'TypeName', 'Type', 'TRUE',
        +            'Trim', 'Trim$', 'Today', 'To', 'TimeValue', 'TimeSerial', 'Timer',
        +            'TimeNumber', 'Time', 'Time$', 'Then', 'Text', 'Tan', 'Tab', 'Sub',
        +            'StrToken', 'StrToken$', 'StrRightBack', 'StrRightBack$',
        +            'StrRight', 'StrRight$', 'StrLeftBack', 'StrLeftBack$', 'StrLeft',
        +            'StrLeft$', 'String', 'String$', 'StrConv', 'StrCompare', 'StrComp',
        +            'Str', 'Str$', 'Stop', 'Step', 'Static', 'Sqr', 'Split', 'Spc',
        +            'Space', 'Space$', 'Sleep', 'Single', 'Sin', 'Shell', 'Shared',
        +            'Sgn', 'SetFileAttr', 'SetAttr', 'Set', 'SendKeys', 'Select',
        +            'Seek', 'Second', 'RTrim', 'RTrim$', 'RSet', 'Round', 'Rnd',
        +            'RmDir', 'RightC', 'RightC$', 'RightBP', 'RightBP$', 'RightB',
        +            'RightB$', 'Right', 'Right$', 'Return', 'Resume', 'Reset',
        +            'Replace', 'Remove', 'Rem', 'ReDim', 'Read', 'Randomize',
        +            'Random', 'Put', 'Public', 'Property', 'Private', 'Print',
        +            'Preserve', 'Pitch', 'PI', 'Output', 'Or', 'Option', 'Open', 'On',
        +            'Oct', 'Oct$', 'NULL', 'Now', 'NOTHING', 'Not', 'NoPitch', 'NoCase',
        +            'Next', 'New', 'Name', 'MsgBox', 'Month', 'Mod', 'MkDir', 'Minute',
        +            'MidC', 'MidC$', 'MidBP', 'MidBP$', 'MidB', 'MidB$', 'Mid', 'Mid$',
        +            'MessageBox', 'Me', 'LTrim', 'LTrim$', 'LSServer', 'LSI_Info',
        +            'LSet', 'Loop', 'Long', 'Log', 'LOF', 'Lock', 'LOC', 'LMBCS',
        +            'ListTag', 'List', 'Line', 'Like', 'Lib', 'Let', 'LenC', 'LenBP',
        +            'LenB', 'Len', 'LeftC', 'LeftC$', 'LeftBP', 'LeftBP$', 'LeftB',
        +            'LeftB$', 'Left', 'Left$', 'LCase', 'LCase$', 'LBound', 'Kill',
        +            'Join', 'IsUnknown', 'IsScalar', 'IsObject', 'IsNumeric', 'IsNull',
        +            'IsList', 'IsEmpty', 'IsElement', 'IsDate', 'IsArray', 'IsA', 'Is',
        +            'Integer', 'Int', 'InStrC', 'InStrBP', 'InStrB', 'InStr', 'InputBP',
        +            'InputBP$', 'InputBox', 'InputBox$', 'InputB', 'InputB$', 'Input',
        +            'Input$', 'In', 'IMSetMode', 'Implode', 'Implode$', 'Imp',
        +            'IMEStatus', 'If', 'Hour', 'Hex', 'Hex$', 'Goto', 'GoSub',
        +            'GetThreadInfo', 'GetFileAttr', 'GetAttr', 'Get', 'Function',
        +            'FullTrim', 'From', 'FreeFile', 'Fraction', 'Format', 'Format$',
        +            'ForAll', 'For', 'Fix', 'FileLen', 'FileDateTime', 'FileCopy',
        +            'FileAttr', 'FALSE', 'Explicit', 'Exp', 'Exit', 'Execute', 'Event',
        +            'Evaluate', 'Error', 'Error$', 'Err', 'Erl', 'Erase', 'Eqv', 'EOF',
        +            'Environ', 'Environ$', 'End', 'ElseIf', 'Else', 'Double', 'DoEvents',
        +            'Do', 'Dir', 'Dir$', 'Dim', 'DestroyLock', 'Delete', 'DefVar',
        +            'DefStr', 'DefSng', 'DefLng', 'DefInt', 'DefDbl', 'DefCur',
        +            'DefByte', 'DefBool', 'Declare', 'Day', 'DateValue', 'DateSerial',
        +            'DateNumber', 'Date', 'Date$', 'DataType', 'CVDate', 'CVar',
        +            'Currency', 'CurDrive', 'CurDrive$', 'CurDir', 'CurDir$', 'CStr',
        +            'CSng', 'CreateLock', 'Cos', 'Const', 'Compare', 'Command',
        +            'Command$', 'CodeUnlock', 'CodeLockCheck', 'CodeLock', 'Close',
        +            'CLng', 'Class', 'CInt', 'Chr', 'Chr$', 'ChDrive', 'ChDir', 'CDbl',
        +            'CDat', 'CCur', 'CByte', 'CBool', 'Case', 'Call', 'ByVal', 'Byte',
        +            'Boolean', 'Bind', 'Binary', 'Bin', 'Bin$', 'Beep', 'Base', 'Atn2',
        +            'Atn', 'ASin', 'Asc', 'As', 'ArrayUnique', 'ArrayReplace',
        +            'ArrayGetIndex', 'ArrayAppend', 'Append', 'AppActivate', 'Any',
        +            'And', 'Alias', 'ActivateApp', 'ACos', 'Access', 'Abs', '%Include',
        +            '%If', '%END', '%ElseIf', '%Else'
        +            ),
        +        2 => array (
        +            'NotesXSLTransformer', 'NotesXMLProcessor', 'NotesViewNavigator',
        +            'NotesViewEntryCollection', 'NotesViewEntry', 'NotesViewColumn',
        +            'NotesView', 'NotesUIWorkspace', 'NotesUIView', 'NotesUIScheduler',
        +            'NotesUIDocument', 'NotesUIDatabase', 'NotesTimer', 'NotesStream',
        +            'NotesSession', 'NotesSAXParser', 'NotesSAXException',
        +            'NotesSAXAttributeList', 'NotesRichTextTable', 'NotesRichTextTab',
        +            'NotesRichTextStyle', 'NotesRichTextSection', 'NotesRichTextRange',
        +            'NotesRichTextParagraphStyle', 'NotesRichTextNavigator',
        +            'NotesRichTextItem', 'NotesRichTextDocLink',
        +            'NotesReplicationEntry', 'NotesReplication', 'NotesRegistration',
        +            'NotesOutlineEntry', 'NotesOutline', 'NotesNoteCollection',
        +            'NotesNewsLetter', 'NotesName', 'NotesMIMEHeader',
        +            'NotesMIMEEntity', 'NotesLog', 'NotesItem', 'NotesInternational',
        +            'NotesForm', 'NotesEmbeddedObject', 'NotesDXLImporter',
        +            'NotesDXLExporter', 'NotesDOMXMLDeclNode', 'NotesDOMTextNode',
        +            'NotesDOMProcessingInstructionNode', 'NotesDOMParser',
        +            'NotesDOMNotationNode', 'NotesDOMNodeList', 'NotesDOMNode',
        +            'NotesDOMNamedNodeMap', 'NotesDOMEntityReferenceNode',
        +            'NotesDOMEntityNode', 'NotesDOMElementNode',
        +            'NotesDOMDocumentTypeNode', 'NotesDOMDocumentNode',
        +            'NotesDOMDocumentFragmentNode', 'NotesDOMCommentNode',
        +            'NotesDOMCharacterDataNote', 'NotesDOMCDATASectionNode',
        +            'NotesDOMAttributeNode', 'NotesDocumentCollection', 'NotesDocument',
        +            'NotesDbDirectory', 'NotesDateTime', 'NotesDateRange',
        +            'NotesDatabase', 'NotesColorObject', 'NotesAgent',
        +            'NotesAdministrationProcess', 'NotesACLEntry', 'NotesACL',
        +            'Navigator', 'Field', 'Button'
        +            )
        +        ) ,
        +    'SYMBOLS' => array(
        +        '(', ')'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000FF;',
        +            2 => 'color: #0000EE;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008000;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #FF00FF;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #0000AA;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #006600;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 2
        +);
        diff --git a/includes/geshi/lscript.php b/includes/geshi/lscript.php
        new file mode 100644
        index 0000000..acfd18e
        --- /dev/null
        +++ b/includes/geshi/lscript.php
        @@ -0,0 +1,385 @@
        + 'LScript',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +    //Yes, I'm aware these are out of order,
        +    //I had to rearrange and couldn't be bothered changing the numbers...
        +        7 => array(
        +            '@data', '@define', '@else', '@end', '@fpdepth', '@if', '@include',
        +            '@insert', '@library', '@localipc', '@name', '@save', '@script',
        +            '@sequence', '@version', '@warnings'
        +            ),
        +        1 => array(
        +            'break', 'case', 'continue', 'else', 'end', 'false', 'for',
        +            'foreach', 'if', 'return', 'switch', 'true', 'while',
        +            ),
        +        3 => array(
        +            'active', 'alertlevel', 'alpha', 'alphaprefix', 'animfilename', 'autokeycreate',
        +            'backdroptype', 'blue', 'boxthreshold', 'button',
        +            'channelsvisible', 'childrenvisible', 'compfg', 'compbg', 'compfgalpha',
        +            'coneangles', 'cosine', 'count', 'ctl', 'curFilename', 'curFrame',
        +            'currenttime', 'curTime', 'curType',
        +            'depth', 'diffshade', 'diffuse', 'dimensions', 'displayopts', 'dynamicupdate',
        +            'end', 'eta',
        +            'filename', 'flags', 'fogtype', 'fps', 'frame', 'frameend', 'frameheight',
        +            'framestart', 'framestep', 'framewidth',
        +            'generalopts', 'genus', 'geometry', 'gNorm', 'goal', 'green',
        +            'h', 'hasAlpha', 'height',
        +            'id', 'innerlimit', 'isColor',
        +            'keyCount', 'keys',
        +            'limiteregion', 'locked', 'luminous',
        +            'maxsamplesperpixel', 'minsamplesperpixel', 'mirror', 'motionx', 'motiony',
        +            'name', 'newFilename', 'newFrame', 'newTime', 'newType', 'null', 'numthreads',
        +            'objID', 'oPos', 'outerlimit', 'oXfrm',
        +            'parent', 'pixel', 'pixelaspect', 'point', 'points', 'pointcount', 'polNum',
        +            'polycount', 'polygon', 'polygons', 'postBehavior', 'preBehavior', 'previewend',
        +            'previewstart', 'previewstep',
        +            'range', 'rawblue', 'rawgreen', 'rawred', 'rayLength', 'raySource', 'red',
        +            'reflectblue', 'reflectgreen', 'reflectred', 'recursiondepth', 'renderend',
        +            'renderopts', 'renderstart', 'renderstep', 'rendertype', 'restlength',
        +            'rgbprefix', 'roughness',
        +            'selected', 'setColor', 'setPattern', 'shading', 'shadow', 'shadows',
        +            'shadowtype', 'size', 'source', 'special', 'specshade', 'specular',
        +            'spotsize', 'start', 'sx', 'sy', 'sz',
        +            'target', 'totallayers', 'totalpoints', 'totalpolygons', 'trans', 'transparency',
        +            'type',
        +            'value', 'view', 'visible', 'visibility',
        +            'w', 'width', 'wNorm', 'wPos', 'wXfrm',
        +            'x', 'xoffset',
        +            'y', 'yoffset',
        +            'z'
        +            ),
        +        4 => array(
        +            'addLayer', 'addParticle', 'alphaspot', 'ambient', 'asAsc', 'asBin',
        +            'asInt', 'asNum', 'asStr', 'asVec', 'attach', 'axislocks',
        +            'backdropColor', 'backdropRay', 'backdropSqueeze', 'bone', 'blurLength',
        +            'close', 'color', 'contains', 'copy', 'createKey',
        +            'deleteKey', 'detach', 'drawCircle', 'drawLine', 'drawPoint', 'drawText',
        +            'drawTriangle',
        +            'edit', 'eof', 'event',
        +            'firstChannel', 'firstLayer', 'firstSelect', 'focalLength', 'fogColor',
        +            'fogMaxAmount', 'fogMaxDist', 'fogMinAmount', 'fogMinDist',
        +            'fovAngles', 'fStop', 'firstChild', 'focalDistance',
        +            'get', 'getChannelGroup', 'getEnvelope', 'getForward', 'getKeyBias',
        +            'getKeyContinuity', 'getKeyCurve', 'getKeyHermite', 'getKeyTension',
        +            'getKeyTime', 'getKeyValue', 'getParticle', 'getPivot', 'getPosition',
        +            'getRight', 'getRotation', 'getSelect', 'getScaling', 'getTag', 'getTexture',
        +            'getUp', 'getValue', 'getWorldPosition', 'getWorldForward', 'getWorldRight',
        +            'getWorldRotation', 'getWorldUp', 'globalBlur', 'globalMask', 'globalResolution',
        +            'hasCCEnd', 'hasCCStart',
        +            'illuminate', 'indexOf', 'isAscii', 'isAlnum', 'isAlpha', 'isBone',
        +            'isCamera', 'isChannel', 'isChannelGroup', 'isCntrl', 'isCurve', 'isDigit',
        +            'isEnvelope', 'isImage', 'isInt', 'isLight', 'isLower', 'isMapped', 'isMesh',
        +            'isNil', 'isNum', 'IsOpen', 'isOriginal', 'isPrint', 'isPunct', 'isScene',
        +            'isSpace', 'isStr', 'isUpper', 'isValid', 'isVMap', 'isVec', 'isXDigit',
        +            'keyExists',
        +            'layer', 'layerName', 'layerVisible', 'limits', 'line', 'linecount', 'load', 'luma',
        +            'next', 'nextLayer', 'nextSelect', 'nextChannel', 'nextChild', 'nl',
        +            'offset', 'open',
        +            'pack', 'param', 'parse', 'paste', 'persist', 'polygonCount', 'position',
        +            'rayCast', 'rayTrace', 'read', 'readByte', 'readInt', 'readNumber',
        +            'readDouble', 'readShort', 'readString', 'readVector', 'reduce',
        +            'remParticle', 'renderCamera', 'reopen', 'replace', 'reset', 'restParam',
        +            'rewind', 'rgb', 'rgbambient', 'rgbcolor', 'rgbspot',
        +            'save', 'schemaPosition', 'select', 'set', 'setChannelGroup', 'setKeyBias',
        +            'setKeyContinuity', 'setKeyCurve',
        +            'setKeyHermite', 'setKeyTension', 'setKeyValue', 'setParticle', 'setPoints',
        +            'setTag', 'setValue', 'server', 'serverFlags', 'sortA', 'sortD', 'surface',
        +            'trunc',
        +            'write', 'writeln', 'writeByte', 'writeData', 'writeNumber', 'writeDouble',
        +            'writeShort', 'writeString', 'writeVector',
        +            'vertex', 'vertexCount',
        +            'zoomFactor'
        +            ),
        +        2 => array(
        +            'abs', 'acos', 'angle', 'append', 'ascii', 'asin', 'atan',
        +            'binary',
        +            'ceil', 'center', 'chdir', 'clearimage', 'cloned', 'comringattach',
        +            'comringdecode', 'comringdetach', 'comringencode', 'comringmsg', 'cos',
        +            'cosh', 'cot', 'cross2d', 'cross3d', 'csc', 'ctlstring', 'ctlinteger',
        +            'ctlnumber', 'ctlvector', 'ctldistance', 'ctlchoice', 'ctltext',
        +            'ctlcolor', 'ctlsurface', 'ctlfont', 'ctlpopup', 'ctledit', 'ctlpercent',
        +            'ctlangle', 'ctlrgb', 'ctlhsv', 'ctlcheckbox', 'ctlstate', 'ctlfilename',
        +            'ctlbutton', 'ctllistbox', 'ctlslider', 'ctlminislider', 'ctlsep', 'ctlimage',
        +            'ctltab', 'ctlallitems', 'ctlmeshitems', 'ctlcameraitems', 'ctllightitems',
        +            'ctlboneitems', 'ctlimageitems', 'ctlchannel', 'ctlviewport', 'Control_Management',
        +            'ctlpage', 'ctlgroup', 'ctlposition', 'ctlactive', 'ctlvisible', 'ctlalign',
        +            'ctlrefresh', 'ctlmenu', 'ctlinfo',
        +            'date', 'debug', 'deg', 'dot2d', 'dot3d', 'drawborder', 'drawbox', 'drawcircle',
        +            'drawelipse', 'drawerase', 'drawfillcircle', 'drawfillelipse', 'drawline',
        +            'drawpixel', 'drawtext', 'drawtextwidth', 'drawtextheight', 'dump',
        +            'error', 'exp', 'expose', 'extent',
        +            'fac', 'filecrc', 'filedelete', 'fileexists', 'filefind', 'filerename',
        +            'filestat', 'floor', 'format', 'frac', 'fullpath',
        +            'gamma', 'getdir', 'getenv', 'getfile', 'getfirstitem', 'getsep', 'getvalue',
        +            'globalrecall', 'globalstore',
        +            'hash', 'hex', 'hostBuild', 'hostVersion', 'hypot',
        +            'info', 'integer',
        +            'library', 'licenseId', 'lscriptVersion', 'load', 'loadimage', 'log', 'log10',
        +            'matchdirs', 'matchfiles', 'max', 'min', 'mkdir', 'mod', 'monend', 'moninit', 'monstep',
        +            'nil', 'normalize', 'number',
        +            'octal', 'overlayglyph',
        +            'parse', 'platform', 'pow',
        +            'rad', 'random', 'randu', 'range', 'read', 'readdouble', 'readInt', 'readNumber',
        +            'readShort', 'recall', 'regexp', 'reqabort', 'reqbegin', 'reqend', 'reqisopen',
        +            'reqkeyboard', 'reqopen', 'reqposition', 'reqpost', 'reqredraw',
        +            'reqsize', 'reqresize', 'requpdate', 'rmdir', 'round', 'runningUnder',
        +            'save', 'sec', 'select', 'selector', 'setdesc', 'setvalue', 'sin', 'sinh', 'size',
        +            'sizeof', 'sleep', 'spawn', 'split', 'sqrt', 'step', 'store', 'string', 'strleft',
        +            'strlower', 'strright', 'strsub', 'strupper',
        +            'tan', 'tanh', 'targetobject', 'terminate', 'text', 'time',
        +            'wait', 'warn', 'when', 'write', 'writeDouble', 'writeInt', 'writeNumber', 'writeShort',
        +            'var', 'vector', 'visitnodes', 'vmag',
        +            ),
        +        5 => array(
        +            'addcurve', 'addpoint', 'addpolygon', 'addquad', 'addtriangle', 'alignpols',
        +            'autoflex', 'axisdrill',
        +            'bend', 'bevel', 'boolean', 'boundingbox',
        +            'changepart', 'changesurface', 'close', 'closeall', 'cmdseq', 'copy', 'copysurface',
        +            'createsurface', 'cut',
        +            'deformregion', 'delete',
        +            'editbegin', 'editend', 'exit', 'extrude',
        +            'fixedflex', 'flip', 'fontclear', 'fontcount', 'fontindex', 'fontload',
        +            'fontname', 'fracsubdivide', 'freezecurves',
        +            'getdefaultsurface',
        +            'jitter',
        +            'lathe', 'layerName', 'layerVisible', 'lyrbg', 'lyrdata', 'lyrempty', 'lyremptybg',
        +            'lyremptyfg', 'lyrfg', 'lyrsetbg', 'lyrsetfg', 'lyrswap',
        +            'magnet', 'make4patch', 'makeball', 'makebox', 'makecone', 'makedisc',
        +            'maketesball', 'maketext', 'mergepoints', 'mergepols', 'meshedit', 'mirror',
        +            'morphpols', 'move',
        +            'new', 'nextsurface',
        +            'paste', 'pathclone', 'pathextrude', 'pixel', 'pointcount', 'pointinfo',
        +            'pointmove', 'pole', 'polycount', 'polyinfo', 'polynormal', 'polypointcount',
        +            'polypoints', 'polysurface',
        +            'quantize',
        +            'railclone', 'railextrude', 'redo', 'removepols', 'rempoint', 'rempoly',
        +            'renamesurface', 'revert', 'rotate',
        +            'scale', 'selhide', 'selinvert', 'selmode', 'selpoint', 'selpolygon', 'selunhide',
        +            'selectvmap', 'setlayername', 'setobject', 'setpivot', 'setsurface', 'shapebevel',
        +            'shear', 'skinpols', 'smooth', 'smoothcurves', 'smoothscale', 'smoothshift',
        +            'soliddrill', 'splitpols', 'subdivide', 'swaphidden',
        +            'taper', 'triple', 'toggleCCend', 'toggleCCstart', 'togglepatches', 'twist',
        +            'undo', 'undogroupend', 'undogroupbegin', 'unifypols', 'unweld',
        +            'vortex',
        +            'weldaverage', 'weldpoints'
        +            ),
        +        6 => array(
        +            'About', 'AboutOpenGL', 'AdaptiveSampling', 'AdaptiveThreshold',
        +            'AddAreaLight', 'AddBone', 'AddButton', 'AddCamera', 'AddChildBone',
        +            'AddDistantLight', 'AddEnvelope', 'AddLinearLight', 'AddNull',
        +            'AddPartigon', 'AddPlugins', 'AddPointLight', 'AddPosition',
        +            'AddRotation', 'AddScale', 'AddSpotlight', 'AddToSelection',
        +            'AdjustRegionTool', 'AffectCaustics', 'AffectDiffuse', 'AffectOpenGL',
        +            'AffectSpecular', 'AlertLevel', 'AmbientColor', 'AmbientIntensity',
        +            'Antialiasing', 'ApertureHeight', 'ApplyServer', 'AreaLight',
        +            'AutoConfirm', 'AutoFrameAdvance', 'AutoKey',
        +            'BackdropColor', 'BackView', 'BController', 'BLimits', 'BLurLength', 'BoneActive',
        +            'BoneFalloffType', 'BoneJointComp', 'BoneJointCompAmounts', 'BoneJointCompParent',
        +            'BoneLimitedRange', 'BoneMaxRange', 'BoneMinRange', 'BoneMuscleFlex',
        +            'BoneMuscleFlexAmounts', 'BoneMuscleFlexParent', 'BoneNormalization',
        +            'BoneRestLength', 'BoneRestPosition', 'BoneRestRotation', 'BoneSource',
        +            'BoneStrength', 'BoneStrengthMultiply', 'BoneWeightMapName', 'BoneWeightMapOnly',
        +            'BoneWeightShade', 'BoneXRay', 'BottomView', 'BoundingBoxThreshold',
        +            'BStiffness',
        +            'CacheCaustics', 'CacheRadiosity', 'CacheShadowMap',
        +            'CameraMask', 'CameraView', 'CameraZoomTool', 'CastShadow', 'CausticIntensity',
        +            'CenterItem', 'CenterMouse', 'ChangeTool', 'ClearAllBones', 'ClearAllCameras',
        +            'ClearAllLights', 'ClearAllObjects', 'ClearAudio', 'ClearScene', 'ClearSelected',
        +            'Clone', 'CommandHistory', 'CommandInput', 'Compositing', 'ConeAngleTool',
        +            'ContentDirectory', 'CreateKey',
        +            'DecreaseGrid', 'DeleteKey', 'DepthBufferAA', 'DepthOfField', 'DisplayOptions',
        +            'DistantLight', 'DrawAntialiasing', 'DrawBones', 'DrawChildBones', 'DynamicUpdate',
        +            'EditBones', 'EditCameras', 'EditKeys', 'EditLights',
        +            'EditMenus', 'EditObjects', 'EditPlugins', 'EditServer', 'EnableCaustics',
        +            'EnableDeformations', 'EnableIK', 'EnableLensFlares', 'EnableRadiosity', 'EnableServer',
        +            'EnableShadowMaps', 'EnableVIPER', 'EnableVolumetricLights', 'EnableXH',
        +            'EnableYP', 'EnableZB', 'EnahancedAA', 'ExcludeLight', 'ExcludeObject',
        +            'EyeSeparation',
        +            'FasterBones', 'FirstFrame', 'FirstItem', 'FitAll', 'FitSelected',
        +            'FlareIntensity', 'FlareOptions', 'FocalDistance', 'FogColor', 'FogMaxAmount',
        +            'FogMaxDistance', 'FogMinAmount', 'FogMinDistance', 'FogType', 'FractionalFrames',
        +            'FrameSize', 'FramesPerSecond', 'FrameStep', 'FreePreview', 'FrontView', 'FullTimeIK',
        +            'GeneralOptions', 'Generics', 'GlobalApertureHeight', 'GlobalBlurLength',
        +            'GlobalFrameSize', 'GlobalIllumination', 'GlobalMaskPosition', 'GlobalMotionBlur',
        +            'GlobalParticleBlur', 'GlobalPixelAspect', 'GlobalResolutionMulitplier', 'GoalItem',
        +            'GoalStrength', 'GoToFrame', 'GradientBackdrop', 'GraphEditor', 'GridSize', 'GroundColor',
        +            'HController', 'HideToolbar', 'HideWindows', 'HLimits', 'HStiffness',
        +            'ImageEditor', 'ImageProcessing', 'IncludeLight', 'IncludeObject', 'IncreaseGrid',
        +            'IndirectBounces', 'Item_SetWindowPos', 'ItemActive', 'ItemColor', 'ItemLock',
        +            'ItemProperties', 'ItemVisibilty',
        +            'KeepGoalWithinReach',
        +            'LastFrame', 'LastItem', 'LastPluginInterface', 'Layout_SetWindowPos',
        +            'Layout_SetWindowSize', 'LeftView', 'LensFlare', 'LensFStop', 'LightColor',
        +            'LightConeAngle', 'LightEdgeAngle', 'LightFalloffType', 'LightIntensity',
        +            'LightIntensityTool', 'LightQuality', 'LightRange', 'LightView', 'LimitB',
        +            'LimitDynamicRange', 'LimitedRegion', 'LimitH', 'LimitP', 'LinearLight',
        +            'LoadAudio', 'LoadFromScene', 'LoadMotion', 'LoadObject', 'LoadObjectLayer',
        +            'LoadPreview', 'LoadScene', 'LocalCoordinateSystem',
        +            'MakePreview', 'MaskColor', 'MaskPosition', 'MasterPlugins', 'MatchGoalOrientation',
        +            'MatteColor', 'MatteObject', 'MetaballResolution', 'Model', 'MorphAmount',
        +            'MorphAmountTool', 'MorphMTSE', 'MorphSurfaces', 'MorphTarget', 'MotionBlur',
        +            'MotionBlurDOFPreview', 'MotionOptions', 'MovePathTool', 'MovePivotTool', 'MoveTool',
        +            'NadirColor', 'NetRender', 'NextFrame', 'NextItem', 'NextKey', 'NextSibling',
        +            'NextViewLayout', 'NoiseReduction', 'Numeric',
        +            'ObjectDissolve',
        +            'ParentCoordinateSystem', 'ParentInPlace', 'ParentItem',
        +            'ParticleBlur', 'PathAlignLookAhead', 'PathAlignMaxLookSteps', 'PathAlignReliableDist',
        +            'Pause', 'PController', 'PerspectiveView',
        +            'PivotPosition', 'PivotRotation', 'PixelAspect', 'PlayAudio', 'PlayBackward',
        +            'PlayForward', 'PlayPreview', 'PLimits', 'PointLight', 'PolygonEdgeColor',
        +            'PolygonEdgeFlags', 'PolygonEdgeThickness', 'PolygonEdgeZScale', 'PolygonSize',
        +            'Position', 'Presets', 'PreviewFirstFrame', 'PreviewFrameStep', 'PreviewLastFrame',
        +            'PreviewOptions', 'PreviousFrame', 'PreviousItem', 'PreviousKey', 'PreviousSibling',
        +            'PreviousViewLayout', 'PStiffness',
        +            'Quit',
        +            'RadiosityIntensity', 'RadiosityTolerance', 'RadiosityType', 'RayRecursionLimit',
        +            'RayTraceReflection', 'RayTraceShadows',
        +            'RayTraceTransparency', 'ReceiveShadow', 'RecentContentDirs', 'RecentScenes',
        +            'ReconstructionFilter', 'RecordMaxAngles', 'RecordMinAngles', 'RecordPivotRotation',
        +            'RecordRestPosition', 'Redraw', 'RedrawNow', 'Refresh', 'RefreshNow', 'RegionPosition',
        +            'RemoveEnvelope', 'RemoveFromSelection', 'RemoveServer', 'Rename', 'RenderFrame',
        +            'RenderOptions', 'RenderScene', 'RenderSelected', 'RenderThreads',
        +            'ReplaceObjectLayer', 'ReplaceWithNull', 'ReplaceWithObject', 'Reset',
        +            'ResolutionMultiplier', 'RestLengthTool', 'RightView', 'RotatePivotTool',
        +            'RotateTool', 'Rotation',
        +            'SaveAllObjects', 'SaveCommandList', 'SaveCommandMessages',
        +            'SaveEndomorph', 'SaveLight', 'SaveLWSC1', 'SaveMotion', 'SaveObject', 'SaveObjectCopy',
        +            'SavePreview', 'SaveScene', 'SaveSceneAs', 'SaveSceneCopy', 'SaveTransformed',
        +            'SaveViewLayout', 'Scale', 'Scene_SetWindowPos', 'Scene_SetWindowSize',
        +            'SceneEditor', 'SchematicPosition', 'SchematicView', 'SelectAllBones',
        +            'SelectAllCameras', 'SelectAllLights', 'SelectAllObjects', 'SelectByName',
        +            'SelectChild', 'SelectItem', 'SelectParent', 'SelfShadow', 'ShadowColor',
        +            'ShadowExclusion', 'ShadowMapAngle', 'ShadowMapFitCone', 'ShadowMapFuzziness',
        +            'ShadowMapSize', 'ShadowType', 'ShowCages', 'ShowFieldChart', 'ShowHandles',
        +            'ShowIKChains', 'ShowMotionPaths', 'ShowSafeAreas', 'ShowTargetLines',
        +            'ShrinkEdgesWithDistance', 'SingleView', 'SizeTool', 'SkelegonsToBones', 'SkyColor',
        +            'Spotlight', 'SquashTool', 'Statistics', 'StatusMsg', 'Stereoscopic', 'StretchTool',
        +            'SubdivisionOrder', 'SubPatchLevel', 'SurfaceEditor', 'Synchronize',
        +            'TargetItem', 'TopView',
        +            'UnaffectedByFog', 'UnaffectedByIK', 'Undo', 'UnseenByAlphaChannel', 'UnseenByCamera',
        +            'UnseenByRays', 'UseGlobalResolution', 'UseGlobalBlur', 'UseGlobalMask',
        +            'UseMorphedPositions',
        +            'ViewLayout', 'VIPER', 'VolumetricLighting',
        +            'VolumetricLightingOptions', 'VolumetricRadiosity', 'Volumetrics',
        +            'WorldCoordinateSystem',
        +            'XYView', 'XZView',
        +            'ZenithColor', 'ZoomFactor', 'ZoomIn', 'ZoomInX2', 'ZoomOut', 'ZoomOutX2', 'ZYView',
        +            'Camera', 'Channel', 'ChannelGroup', 'Envelope', 'File', 'Glyph', 'Icon', 'Image',
        +            'Light', 'Mesh', 'Scene', 'Surface', 'VMap'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '[', ']', '=', '<', '>', '+', '-', '*', '/', '!', '%', '&', '@'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => true,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        6 => false,
        +        7 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000000; font-weight: bold;',
        +            2 => 'color: #FF6820; font-weight: bold;', //LS_COMMANDS
        +            3 => 'color: #007F7F; font-weight: bold;', //LS_MEMBERS
        +            4 => 'color: #800080; font-weight: bold;', //LS_METHODS
        +            5 => 'color: #51BD95; font-weight: bold;', //LS_MODELER
        +            6 => 'color: #416F85; font-weight: bold;', //LS_GENERAL
        +            7 => 'color: #C92929; font-weight: bold;'  //LS_COMMANDS (cont)
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #7F7F7F;',
        +            'MULTI' => 'color: #7F7F7F;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #0040A0;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #00C800;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #6953AC;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #0040A0;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => '',
        +        7 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            3 => array(
        +                'DISALLOWED_BEFORE' => '(?<=\.)'
        +                ),
        +            4 => array(
        +                'DISALLOWED_BEFORE' => '(?<=\.)'
        +                )
        +            )
        +        )
        +);
        diff --git a/includes/geshi/lsl2.php b/includes/geshi/lsl2.php
        new file mode 100644
        index 0000000..1bbf1c0
        --- /dev/null
        +++ b/includes/geshi/lsl2.php
        @@ -0,0 +1,1276 @@
        + 'LSL2',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array( // flow control
        +            'do',
        +            'else',
        +            'for',
        +            'if',
        +            'jump',
        +            'return',
        +            'state',
        +            'while',
        +            ),
        +        2 => array( // manifest constants
        +            'ACTIVE',
        +            'AGENT',
        +            'AGENT_ALWAYS_RUN',
        +            'AGENT_ATTACHMENTS',
        +            'AGENT_AUTOPILOT',
        +            'AGENT_AWAY',
        +            'AGENT_BUSY',
        +            'AGENT_BY_LEGACY_NAME',
        +            'AGENT_BY_USERNAME',
        +            'AGENT_CROUCHING',
        +            'AGENT_FLYING',
        +            'AGENT_IN_AIR',
        +            'AGENT_LIST_PARCEL',
        +            'AGENT_LIST_PARCEL_OWNER',
        +            'AGENT_LIST_REGION',
        +            'AGENT_MOUSELOOK',
        +            'AGENT_ON_OBJECT',
        +            'AGENT_SCRIPTED',
        +            'AGENT_SITTING',
        +            'AGENT_TYPING',
        +            'AGENT_WALKING',
        +            'ALL_SIDES',
        +            'ANIM_ON',
        +            'ATTACH_AVATAR_CENTER',
        +            'ATTACH_BACK',
        +            'ATTACH_BELLY',
        +            'ATTACH_CHEST',
        +            'ATTACH_CHIN',
        +            'ATTACH_HEAD',
        +            'ATTACH_HUD_BOTTOM',
        +            'ATTACH_HUD_BOTTOM_LEFT',
        +            'ATTACH_HUD_BOTTOM_RIGHT',
        +            'ATTACH_HUD_CENTER_1',
        +            'ATTACH_HUD_CENTER_2',
        +            'ATTACH_HUD_TOP_CENTER',
        +            'ATTACH_HUD_TOP_LEFT',
        +            'ATTACH_HUD_TOP_RIGHT',
        +            'ATTACH_LEAR',
        +            'ATTACH_LEFT_PEC',
        +            'ATTACH_LEYE',
        +            'ATTACH_LFOOT',
        +            'ATTACH_LHAND',
        +            'ATTACH_LHIP',
        +            'ATTACH_LLARM',
        +            'ATTACH_LLLEG',
        +            'ATTACH_LSHOULDER',
        +            'ATTACH_LUARM',
        +            'ATTACH_LULEG',
        +            'ATTACH_MOUTH',
        +            'ATTACH_NECK',
        +            'ATTACH_NOSE',
        +            'ATTACH_PELVIS',
        +            'ATTACH_REAR',
        +            'ATTACH_REYE',
        +            'ATTACH_RFOOT',
        +            'ATTACH_RHAND',
        +            'ATTACH_RHIP',
        +            'ATTACH_RIGHT_PEC',
        +            'ATTACH_RLARM',
        +            'ATTACH_RLLEG',
        +            'ATTACH_RSHOULDER',
        +            'ATTACH_RUARM',
        +            'ATTACH_RULEG',
        +            'AVOID_CHARACTERS',
        +            'AVOID_DYNAMIC_OBSTACLES',
        +            'AVOID_NONE',
        +            'CAMERA_ACTIVE',
        +            'CAMERA_BEHINDNESS_ANGLE',
        +            'CAMERA_BEHINDNESS_LAG',
        +            'CAMERA_DISTANCE',
        +            'CAMERA_FOCUS',
        +            'CAMERA_FOCUS_LAG',
        +            'CAMERA_FOCUS_LOCKED',
        +            'CAMERA_FOCUS_OFFSET',
        +            'CAMERA_FOCUS_THRESHOLD',
        +            'CAMERA_PITCH',
        +            'CAMERA_POSITION',
        +            'CAMERA_POSITION_LAG',
        +            'CAMERA_POSITION_LOCKED',
        +            'CAMERA_POSITION_THRESHOLD',
        +            'CHANGED_ALLOWED_DROP',
        +            'CHANGED_COLOR',
        +            'CHANGED_INVENTORY',
        +            'CHANGED_LINK',
        +            'CHANGED_MEDIA',
        +            'CHANGED_OWNER',
        +            'CHANGED_REGION',
        +            'CHANGED_REGION_START',
        +            'CHANGED_SCALE',
        +            'CHANGED_SHAPE',
        +            'CHANGED_TELEPORT',
        +            'CHANGED_TEXTURE',
        +            'CHARACTER_ACCOUNT_FOR_SKIPPED_FRAMES',
        +            'CHARACTER_AVOIDANCE_MODE',
        +            'CHARACTER_CMD_JUMP',
        +            'CHARACTER_CMD_SMOOTH_STOP',
        +            'CHARACTER_CMD_STOP',
        +            'CHARACTER_DESIRED_SPEED',
        +            'CHARACTER_DESIRED_TURN_SPEED',
        +            'CHARACTER_LENGTH',
        +            'CHARACTER_MAX_ACCEL',
        +            'CHARACTER_MAX_DECEL',
        +            'CHARACTER_MAX_SPEED',
        +            'CHARACTER_MAX_TURN_RADIUS',
        +            'CHARACTER_ORIENTATION',
        +            'CHARACTER_RADIUS',
        +            'CHARACTER_STAY_WITHIN_PARCEL',
        +            'CHARACTER_TYPE',
        +            'CHARACTER_TYPE_A',
        +            'CHARACTER_TYPE_B',
        +            'CHARACTER_TYPE_C',
        +            'CHARACTER_TYPE_D',
        +            'CHARACTER_TYPE_NONE',
        +            'CLICK_ACTION_BUY',
        +            'CLICK_ACTION_NONE',
        +            'CLICK_ACTION_OPEN',
        +            'CLICK_ACTION_OPEN_MEDIA',
        +            'CLICK_ACTION_PAY',
        +            'CLICK_ACTION_PLAY',
        +            'CLICK_ACTION_SIT',
        +            'CLICK_ACTION_TOUCH',
        +            'CONTENT_TYPE_ATOM',
        +            'CONTENT_TYPE_FORM',
        +            'CONTENT_TYPE_HTML',
        +            'CONTENT_TYPE_JSON',
        +            'CONTENT_TYPE_LLSD',
        +            'CONTENT_TYPE_RSS',
        +            'CONTENT_TYPE_TEXT',
        +            'CONTENT_TYPE_XHTML',
        +            'CONTENT_TYPE_XML',
        +            'CONTROL_BACK',
        +            'CONTROL_DOWN',
        +            'CONTROL_FWD',
        +            'CONTROL_LBUTTON',
        +            'CONTROL_LEFT',
        +            'CONTROL_ML_LBUTTON',
        +            'CONTROL_RIGHT',
        +            'CONTROL_ROT_LEFT',
        +            'CONTROL_ROT_RIGHT',
        +            'CONTROL_UP',
        +            'DATA_BORN',
        +            'DATA_NAME',
        +            'DATA_ONLINE',
        +            'DATA_PAYINFO',
        +            'DATA_SIM_POS',
        +            'DATA_SIM_RATING',
        +            'DATA_SIM_STATUS',
        +            'DEBUG_CHANNEL',
        +            'DEG_TO_RAD',
        +            'DENSITY',
        +            'EOF',
        +            'ERR_GENERIC',
        +            'ERR_MALFORMED_PARAMS',
        +            'ERR_PARCEL_PERMISSIONS',
        +            'ERR_RUNTIME_PERMISSIONS',
        +            'ERR_THROTTLED',
        +            'ESTATE_ACCESS_ALLOWED_AGENT_ADD',
        +            'ESTATE_ACCESS_ALLOWED_AGENT_REMOVE',
        +            'ESTATE_ACCESS_ALLOWED_GROUP_ADD',
        +            'ESTATE_ACCESS_ALLOWED_GROUP_REMOVE',
        +            'ESTATE_ACCESS_BANNED_AGENT_ADD',
        +            'ESTATE_ACCESS_BANNED_AGENT_REMOVE',
        +            'FALSE',
        +            'FORCE_DIRECT_PATH',
        +            'FRICTION',
        +            'GCNP_RADIUS',
        +            'GCNP_STATIC',
        +            'GRAVITY_MULTIPLIER',
        +            'HORIZONTAL',
        +            'HTTP_BODY_MAXLENGTH',
        +            'HTTP_BODY_TRUNCATED',
        +            'HTTP_CUSTOM_HEADER',
        +            'HTTP_METHOD',
        +            'HTTP_MIMETYPE',
        +            'HTTP_PRAGMA_NO_CACHE',
        +            'HTTP_VERBOSE_THROTTLE',
        +            'HTTP_VERIFY_CERT',
        +            'INVENTORY_ALL',
        +            'INVENTORY_ANIMATION',
        +            'INVENTORY_BODYPART',
        +            'INVENTORY_CLOTHING',
        +            'INVENTORY_GESTURE',
        +            'INVENTORY_LANDMARK',
        +            'INVENTORY_NONE',
        +            'INVENTORY_NOTECARD',
        +            'INVENTORY_OBJECT',
        +            'INVENTORY_SCRIPT',
        +            'INVENTORY_SOUND',
        +            'INVENTORY_TEXTURE',
        +            'JSON_APPEND',
        +            'JSON_ARRAY',
        +            'JSON_DELETE',
        +            'JSON_FALSE',
        +            'JSON_INVALID',
        +            'JSON_NULL',
        +            'JSON_NUMBER',
        +            'JSON_OBJECT',
        +            'JSON_STRING',
        +            'JSON_TRUE',
        +            'KFM_CMD_PAUSE',
        +            'KFM_CMD_PLAY',
        +            'KFM_CMD_SET_MODE',
        +            'KFM_CMD_STOP',
        +            'KFM_COMMAND',
        +            'KFM_DATA',
        +            'KFM_FORWARD',
        +            'KFM_LOOP',
        +            'KFM_MODE',
        +            'KFM_PING_PONG',
        +            'KFM_REVERSE',
        +            'KFM_ROTATION',
        +            'KFM_TRANSLATION',
        +            'LAND_LARGE_BRUSH',
        +            'LAND_LEVEL',
        +            'LAND_LOWER',
        +            'LAND_MEDIUM_BRUSH',
        +            'LAND_NOISE',
        +            'LAND_RAISE',
        +            'LAND_REVERT',
        +            'LAND_SMALL_BRUSH',
        +            'LAND_SMOOTH',
        +            'LINK_ALL_CHILDREN',
        +            'LINK_ALL_OTHERS',
        +            'LINK_ROOT',
        +            'LINK_SET',
        +            'LINK_THIS',
        +            'LIST_STAT_GEOMETRIC_MEAN',
        +            'LIST_STAT_MAX',
        +            'LIST_STAT_MEAN',
        +            'LIST_STAT_MEDIAN',
        +            'LIST_STAT_MIN',
        +            'LIST_STAT_NUM_COUNT',
        +            'LIST_STAT_RANGE',
        +            'LIST_STAT_STD_DEV',
        +            'LIST_STAT_SUM',
        +            'LIST_STAT_SUM_SQUARES',
        +            'LOOP',
        +            'MASK_BASE',
        +            'MASK_EVERYONE',
        +            'MASK_GROUP',
        +            'MASK_NEXT',
        +            'MASK_OWNER',
        +            'NULL_KEY',
        +            'OBJECT_ATTACHED_POINT',
        +            'OBJECT_CHARACTER_TIME',
        +            'OBJECT_CREATOR',
        +            'OBJECT_DESC',
        +            'OBJECT_GROUP',
        +            'OBJECT_NAME',
        +            'OBJECT_OWNER',
        +            'OBJECT_PATHFINDING_TYPE',
        +            'OBJECT_PHANTOM',
        +            'OBJECT_PHYSICS',
        +            'OBJECT_PHYSICS_COST',
        +            'OBJECT_POS',
        +            'OBJECT_PRIM_EQUIVALENCE',
        +            'OBJECT_RENDER_WEIGHT',
        +            'OBJECT_RETURN_PARCEL',
        +            'OBJECT_RETURN_PARCEL_OWNER',
        +            'OBJECT_RETURN_REGION',
        +            'OBJECT_ROOT',
        +            'OBJECT_ROT',
        +            'OBJECT_RUNNING_SCRIPT_COUNT',
        +            'OBJECT_SCRIPT_MEMORY',
        +            'OBJECT_SCRIPT_TIME',
        +            'OBJECT_SERVER_COST',
        +            'OBJECT_STREAMING_COST',
        +            'OBJECT_TEMP_ON_REZ',
        +            'OBJECT_TOTAL_SCRIPT_COUNT',
        +            'OBJECT_UNKNOWN_DETAIL',
        +            'OBJECT_VELOCITY',
        +            'OPT_AVATAR',
        +            'OPT_CHARACTER',
        +            'OPT_EXCLUSION_VOLUME',
        +            'OPT_LEGACY_LINKSET',
        +            'OPT_MATERIAL_VOLUME',
        +            'OPT_OTHER',
        +            'OPT_STATIC_OBSTACLE',
        +            'OPT_WALKABLE',
        +            'PARCEL_COUNT_GROUP',
        +            'PARCEL_COUNT_OTHER',
        +            'PARCEL_COUNT_OWNER',
        +            'PARCEL_COUNT_SELECTED',
        +            'PARCEL_COUNT_TEMP',
        +            'PARCEL_COUNT_TOTAL',
        +            'PARCEL_DETAILS_AREA',
        +            'PARCEL_DETAILS_DESC',
        +            'PARCEL_DETAILS_GROUP',
        +            'PARCEL_DETAILS_ID',
        +            'PARCEL_DETAILS_NAME',
        +            'PARCEL_DETAILS_OWNER',
        +            'PARCEL_DETAILS_SEE_AVATARS',
        +            'PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY',
        +            'PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS',
        +            'PARCEL_FLAG_ALLOW_CREATE_OBJECTS',
        +            'PARCEL_FLAG_ALLOW_DAMAGE',
        +            'PARCEL_FLAG_ALLOW_FLY',
        +            'PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY',
        +            'PARCEL_FLAG_ALLOW_GROUP_SCRIPTS',
        +            'PARCEL_FLAG_ALLOW_LANDMARK',
        +            'PARCEL_FLAG_ALLOW_SCRIPTS',
        +            'PARCEL_FLAG_ALLOW_TERRAFORM',
        +            'PARCEL_FLAG_LOCAL_SOUND_ONLY',
        +            'PARCEL_FLAG_RESTRICT_PUSHOBJECT',
        +            'PARCEL_FLAG_USE_ACCESS_GROUP',
        +            'PARCEL_FLAG_USE_ACCESS_LIST',
        +            'PARCEL_FLAG_USE_BAN_LIST',
        +            'PARCEL_FLAG_USE_LAND_PASS_LIST',
        +            'PARCEL_MEDIA_COMMAND_AGENT',
        +            'PARCEL_MEDIA_COMMAND_AUTO_ALIGN',
        +            'PARCEL_MEDIA_COMMAND_DESC',
        +            'PARCEL_MEDIA_COMMAND_LOOP',
        +            'PARCEL_MEDIA_COMMAND_LOOP_SET',
        +            'PARCEL_MEDIA_COMMAND_PAUSE',
        +            'PARCEL_MEDIA_COMMAND_PLAY',
        +            'PARCEL_MEDIA_COMMAND_SIZE',
        +            'PARCEL_MEDIA_COMMAND_STOP',
        +            'PARCEL_MEDIA_COMMAND_TEXTURE',
        +            'PARCEL_MEDIA_COMMAND_TIME',
        +            'PARCEL_MEDIA_COMMAND_TYPE',
        +            'PARCEL_MEDIA_COMMAND_UNLOAD',
        +            'PARCEL_MEDIA_COMMAND_URL',
        +            'PASSIVE',
        +            'PATROL_PAUSE_AT_WAYPOINTS',
        +            'PAYMENT_INFO_ON_FILE',
        +            'PAYMENT_INFO_USED',
        +            'PAY_DEFAULT',
        +            'PAY_HIDE',
        +            'PERMISSION_ATTACH',
        +            'PERMISSION_CHANGE_LINKS',
        +            'PERMISSION_CONTROL_CAMERA',
        +            'PERMISSION_DEBIT',
        +            'PERMISSION_OVERRIDE_ANIMATIONS',
        +            'PERMISSION_RETURN_OBJECTS',
        +            'PERMISSION_SILENT_ESTATE_MANAGEMENT',
        +            'PERMISSION_TAKE_CONTROLS',
        +            'PERMISSION_TELEPORT',
        +            'PERMISSION_TRACK_CAMERA',
        +            'PERMISSION_TRIGGER_ANIMATION',
        +            'PERM_ALL',
        +            'PERM_COPY',
        +            'PERM_MODIFY',
        +            'PERM_MOVE',
        +            'PERM_TRANSFER',
        +            'PI',
        +            'PING_PONG',
        +            'PI_BY_TWO',
        +            'PRIM_BUMP_BARK',
        +            'PRIM_BUMP_BLOBS',
        +            'PRIM_BUMP_BRICKS',
        +            'PRIM_BUMP_BRIGHT',
        +            'PRIM_BUMP_CHECKER',
        +            'PRIM_BUMP_CONCRETE',
        +            'PRIM_BUMP_DARK',
        +            'PRIM_BUMP_DISKS',
        +            'PRIM_BUMP_GRAVEL',
        +            'PRIM_BUMP_LARGETILE',
        +            'PRIM_BUMP_NONE',
        +            'PRIM_BUMP_SHINY',
        +            'PRIM_BUMP_SIDING',
        +            'PRIM_BUMP_STONE',
        +            'PRIM_BUMP_STUCCO',
        +            'PRIM_BUMP_SUCTION',
        +            'PRIM_BUMP_TILE',
        +            'PRIM_BUMP_WEAVE',
        +            'PRIM_BUMP_WOOD',
        +            'PRIM_COLOR',
        +            'PRIM_DESC',
        +            'PRIM_FLEXIBLE',
        +            'PRIM_FULLBRIGHT',
        +            'PRIM_GLOW',
        +            'PRIM_HOLE_CIRCLE',
        +            'PRIM_HOLE_DEFAULT',
        +            'PRIM_HOLE_SQUARE',
        +            'PRIM_HOLE_TRIANGLE',
        +            'PRIM_LINK_TARGET',
        +            'PRIM_MATERIAL',
        +            'PRIM_MATERIAL_FLESH',
        +            'PRIM_MATERIAL_GLASS',
        +            'PRIM_MATERIAL_METAL',
        +            'PRIM_MATERIAL_PLASTIC',
        +            'PRIM_MATERIAL_RUBBER',
        +            'PRIM_MATERIAL_STONE',
        +            'PRIM_MATERIAL_WOOD',
        +            'PRIM_MEDIA_ALT_IMAGE_ENABLE',
        +            'PRIM_MEDIA_AUTO_LOOP',
        +            'PRIM_MEDIA_AUTO_PLAY',
        +            'PRIM_MEDIA_AUTO_SCALE',
        +            'PRIM_MEDIA_AUTO_ZOOM',
        +            'PRIM_MEDIA_CONTROLS',
        +            'PRIM_MEDIA_CONTROLS_MINI',
        +            'PRIM_MEDIA_CONTROLS_STANDARD',
        +            'PRIM_MEDIA_CURRENT_URL',
        +            'PRIM_MEDIA_FIRST_CLICK_INTERACT',
        +            'PRIM_MEDIA_HEIGHT_PIXELS',
        +            'PRIM_MEDIA_HOME_URL',
        +            'PRIM_MEDIA_MAX_HEIGHT_PIXELS',
        +            'PRIM_MEDIA_MAX_URL_LENGTH',
        +            'PRIM_MEDIA_MAX_WHITELIST_COUNT',
        +            'PRIM_MEDIA_MAX_WHITELIST_SIZE',
        +            'PRIM_MEDIA_MAX_WIDTH_PIXELS',
        +            'PRIM_MEDIA_PARAM_MAX',
        +            'PRIM_MEDIA_PERMS_CONTROL',
        +            'PRIM_MEDIA_PERMS_INTERACT',
        +            'PRIM_MEDIA_PERM_ANYONE',
        +            'PRIM_MEDIA_PERM_GROUP',
        +            'PRIM_MEDIA_PERM_NONE',
        +            'PRIM_MEDIA_PERM_OWNER',
        +            'PRIM_MEDIA_WHITELIST',
        +            'PRIM_MEDIA_WHITELIST_ENABLE',
        +            'PRIM_MEDIA_WIDTH_PIXELS',
        +            'PRIM_NAME',
        +            'PRIM_OMEGA',
        +            'PRIM_PHANTOM',
        +            'PRIM_PHYSICS',
        +            'PRIM_PHYSICS_SHAPE_CONVEX',
        +            'PRIM_PHYSICS_SHAPE_NONE',
        +            'PRIM_PHYSICS_SHAPE_PRIM',
        +            'PRIM_PHYSICS_SHAPE_TYPE',
        +            'PRIM_POINT_LIGHT',
        +            'PRIM_POSITION',
        +            'PRIM_POS_LOCAL',
        +            'PRIM_ROTATION',
        +            'PRIM_ROT_LOCAL',
        +            'PRIM_SCULPT_FLAG_INVERT',
        +            'PRIM_SCULPT_FLAG_MIRROR',
        +            'PRIM_SCULPT_TYPE_CYLINDER',
        +            'PRIM_SCULPT_TYPE_MASK',
        +            'PRIM_SCULPT_TYPE_PLANE',
        +            'PRIM_SCULPT_TYPE_SPHERE',
        +            'PRIM_SCULPT_TYPE_TORUS',
        +            'PRIM_SHINY_HIGH',
        +            'PRIM_SHINY_LOW',
        +            'PRIM_SHINY_MEDIUM',
        +            'PRIM_SHINY_NONE',
        +            'PRIM_SIZE',
        +            'PRIM_SLICE',
        +            'PRIM_TEMP_ON_REZ',
        +            'PRIM_TEXGEN',
        +            'PRIM_TEXGEN_DEFAULT',
        +            'PRIM_TEXGEN_PLANAR',
        +            'PRIM_TEXT',
        +            'PRIM_TEXTURE',
        +            'PRIM_TYPE',
        +            'PRIM_TYPE_BOX',
        +            'PRIM_TYPE_CYLINDER',
        +            'PRIM_TYPE_PRISM',
        +            'PRIM_TYPE_RING',
        +            'PRIM_TYPE_SCULPT',
        +            'PRIM_TYPE_SPHERE',
        +            'PRIM_TYPE_TORUS',
        +            'PRIM_TYPE_TUBE',
        +            'PROFILE_NONE',
        +            'PROFILE_SCRIPT_MEMORY',
        +            'PSYS_PART_BF_DEST_COLOR',
        +            'PSYS_PART_BF_ONE',
        +            'PSYS_PART_BF_ONE_MINUS_DEST_COLOR',
        +            'PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA',
        +            'PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR',
        +            'PSYS_PART_BF_SOURCE_ALPHA',
        +            'PSYS_PART_BF_SOURCE_COLOR',
        +            'PSYS_PART_BF_ZERO',
        +            'PSYS_PART_BLEND_FUNC_DEST',
        +            'PSYS_PART_BLEND_FUNC_SOURCE',
        +            'PSYS_PART_BOUNCE_MASK',
        +            'PSYS_PART_EMISSIVE_MASK',
        +            'PSYS_PART_END_ALPHA',
        +            'PSYS_PART_END_COLOR',
        +            'PSYS_PART_END_GLOW',
        +            'PSYS_PART_END_SCALE',
        +            'PSYS_PART_FLAGS',
        +            'PSYS_PART_FOLLOW_SRC_MASK',
        +            'PSYS_PART_FOLLOW_VELOCITY_MASK',
        +            'PSYS_PART_INTERP_COLOR_MASK',
        +            'PSYS_PART_INTERP_SCALE_MASK',
        +            'PSYS_PART_MAX_AGE',
        +            'PSYS_PART_RIBBON_MASK',
        +            'PSYS_PART_START_ALPHA',
        +            'PSYS_PART_START_COLOR',
        +            'PSYS_PART_START_GLOW',
        +            'PSYS_PART_START_SCALE',
        +            'PSYS_PART_TARGET_LINEAR_MASK',
        +            'PSYS_PART_TARGET_POS_MASK',
        +            'PSYS_PART_WIND_MASK',
        +            'PSYS_SRC_ACCEL',
        +            'PSYS_SRC_ANGLE_BEGIN',
        +            'PSYS_SRC_ANGLE_END',
        +            'PSYS_SRC_BURST_PART_COUNT',
        +            'PSYS_SRC_BURST_RADIUS',
        +            'PSYS_SRC_BURST_RATE',
        +            'PSYS_SRC_BURST_SPEED_MAX',
        +            'PSYS_SRC_BURST_SPEED_MIN',
        +            'PSYS_SRC_MAX_AGE',
        +            'PSYS_SRC_OMEGA',
        +            'PSYS_SRC_PATTERN',
        +            'PSYS_SRC_PATTERN_ANGLE',
        +            'PSYS_SRC_PATTERN_ANGLE_CONE',
        +            'PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY',
        +            'PSYS_SRC_PATTERN_DROP',
        +            'PSYS_SRC_PATTERN_EXPLODE',
        +            'PSYS_SRC_TARGET_KEY',
        +            'PSYS_SRC_TEXTURE',
        +            'PUBLIC_CHANNEL',
        +            'PURSUIT_FUZZ_FACTOR',
        +            'PURSUIT_GOAL_TOLERANCE',
        +            'PURSUIT_INTERCEPT',
        +            'PURSUIT_OFFSET',
        +            'PU_EVADE_HIDDEN',
        +            'PU_EVADE_SPOTTED',
        +            'PU_FAILURE_DYNAMIC_PATHFINDING_DISABLED',
        +            'PU_FAILURE_INVALID_GOAL',
        +            'PU_FAILURE_INVALID_START',
        +            'PU_FAILURE_NO_NAVMESH',
        +            'PU_FAILURE_NO_VALID_DESTINATION',
        +            'PU_FAILURE_OTHER',
        +            'PU_FAILURE_PARCEL_UNREACHABLE',
        +            'PU_FAILURE_TARGET_GONE',
        +            'PU_FAILURE_UNREACHABLE',
        +            'PU_GOAL_REACHED',
        +            'PU_SLOWDOWN_DISTANCE_REACHED',
        +            'RAD_TO_DEG',
        +            'RCERR_CAST_TIME_EXCEEDED',
        +            'RCERR_SIM_PERF_LOW',
        +            'RCERR_UNKNOWN',
        +            'RC_DATA_FLAGS',
        +            'RC_DETECT_PHANTOM',
        +            'RC_GET_LINK_NUM',
        +            'RC_GET_NORMAL',
        +            'RC_GET_ROOT_KEY',
        +            'RC_MAX_HITS',
        +            'RC_REJECT_AGENTS',
        +            'RC_REJECT_LAND',
        +            'RC_REJECT_NONPHYSICAL',
        +            'RC_REJECT_PHYSICAL',
        +            'RC_REJECT_TYPES',
        +            'REGION_FLAG_ALLOW_DAMAGE',
        +            'REGION_FLAG_ALLOW_DIRECT_TELEPORT',
        +            'REGION_FLAG_BLOCK_FLY',
        +            'REGION_FLAG_BLOCK_TERRAFORM',
        +            'REGION_FLAG_DISABLE_COLLISIONS',
        +            'REGION_FLAG_DISABLE_PHYSICS',
        +            'REGION_FLAG_FIXED_SUN',
        +            'REGION_FLAG_RESTRICT_PUSHOBJECT',
        +            'REGION_FLAG_SANDBOX',
        +            'REMOTE_DATA_CHANNEL',
        +            'REMOTE_DATA_REPLY',
        +            'REMOTE_DATA_REQUEST',
        +            'REQUIRE_LINE_OF_SIGHT',
        +            'RESTITUTION',
        +            'REVERSE',
        +            'ROTATE',
        +            'SCALE',
        +            'SCRIPTED',
        +            'SIM_STAT_PCT_CHARS_STEPPED',
        +            'SMOOTH',
        +            'SQRT2',
        +            'STATUS_BLOCK_GRAB',
        +            'STATUS_BLOCK_GRAB_OBJECT',
        +            'STATUS_BOUNDS_ERROR',
        +            'STATUS_CAST_SHADOWS',
        +            'STATUS_DIE_AT_EDGE',
        +            'STATUS_INTERNAL_ERROR',
        +            'STATUS_MALFORMED_PARAMS',
        +            'STATUS_NOT_FOUND',
        +            'STATUS_NOT_SUPPORTED',
        +            'STATUS_OK',
        +            'STATUS_PHANTOM',
        +            'STATUS_PHYSICS',
        +            'STATUS_RETURN_AT_EDGE',
        +            'STATUS_ROTATE_X',
        +            'STATUS_ROTATE_Y',
        +            'STATUS_ROTATE_Z',
        +            'STATUS_SANDBOX',
        +            'STATUS_TYPE_MISMATCH',
        +            'STATUS_WHITELIST_FAILED',
        +            'STRING_TRIM',
        +            'STRING_TRIM_HEAD',
        +            'STRING_TRIM_TAIL',
        +            'TEXTURE_BLANK',
        +            'TEXTURE_DEFAULT',
        +            'TEXTURE_MEDIA',
        +            'TEXTURE_PLYWOOD',
        +            'TEXTURE_TRANSPARENT',
        +            'TOUCH_INVALID_FACE',
        +            'TOUCH_INVALID_TEXCOORD',
        +            'TOUCH_INVALID_VECTOR',
        +            'TRAVERSAL_TYPE',
        +            'TRAVERSAL_TYPE_FAST',
        +            'TRAVERSAL_TYPE_NONE',
        +            'TRAVERSAL_TYPE_SLOW',
        +            'TRUE',
        +            'TWO_PI',
        +            'TYPE_FLOAT',
        +            'TYPE_INTEGER',
        +            'TYPE_INVALID',
        +            'TYPE_KEY',
        +            'TYPE_ROTATION',
        +            'TYPE_STRING',
        +            'TYPE_VECTOR',
        +            'URL_REQUEST_DENIED',
        +            'URL_REQUEST_GRANTED',
        +            'VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY',
        +            'VEHICLE_ANGULAR_DEFLECTION_TIMESCALE',
        +            'VEHICLE_ANGULAR_FRICTION_TIMESCALE',
        +            'VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE',
        +            'VEHICLE_ANGULAR_MOTOR_DIRECTION',
        +            'VEHICLE_ANGULAR_MOTOR_TIMESCALE',
        +            'VEHICLE_BANKING_EFFICIENCY',
        +            'VEHICLE_BANKING_MIX',
        +            'VEHICLE_BANKING_TIMESCALE',
        +            'VEHICLE_BUOYANCY',
        +            'VEHICLE_FLAG_CAMERA_DECOUPLED',
        +            'VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT',
        +            'VEHICLE_FLAG_HOVER_TERRAIN_ONLY',
        +            'VEHICLE_FLAG_HOVER_UP_ONLY',
        +            'VEHICLE_FLAG_HOVER_WATER_ONLY',
        +            'VEHICLE_FLAG_LIMIT_MOTOR_UP',
        +            'VEHICLE_FLAG_LIMIT_ROLL_ONLY',
        +            'VEHICLE_FLAG_MOUSELOOK_BANK',
        +            'VEHICLE_FLAG_MOUSELOOK_STEER',
        +            'VEHICLE_FLAG_NO_DEFLECTION_UP',
        +            'VEHICLE_HOVER_EFFICIENCY',
        +            'VEHICLE_HOVER_HEIGHT',
        +            'VEHICLE_HOVER_TIMESCALE',
        +            'VEHICLE_LINEAR_DEFLECTION_EFFICIENCY',
        +            'VEHICLE_LINEAR_DEFLECTION_TIMESCALE',
        +            'VEHICLE_LINEAR_FRICTION_TIMESCALE',
        +            'VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE',
        +            'VEHICLE_LINEAR_MOTOR_DIRECTION',
        +            'VEHICLE_LINEAR_MOTOR_OFFSET',
        +            'VEHICLE_LINEAR_MOTOR_TIMESCALE',
        +            'VEHICLE_REFERENCE_FRAME',
        +            'VEHICLE_TYPE_AIRPLANE',
        +            'VEHICLE_TYPE_BALLOON',
        +            'VEHICLE_TYPE_BOAT',
        +            'VEHICLE_TYPE_CAR',
        +            'VEHICLE_TYPE_NONE',
        +            'VEHICLE_TYPE_SLED',
        +            'VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY',
        +            'VEHICLE_VERTICAL_ATTRACTION_TIMESCALE',
        +            'VERTICAL',
        +            'WANDER_PAUSE_AT_WAYPOINTS',
        +            'ZERO_ROTATION',
        +            'ZERO_VECTOR',
        +            ),
        +        3 => array( // handlers
        +            'at_rot_target',
        +            'at_target',
        +            'attach',
        +            'changed',
        +            'collision',
        +            'collision_end',
        +            'collision_start',
        +            'control',
        +            'dataserver',
        +            'email',
        +            'http_request',
        +            'http_response',
        +            'land_collision',
        +            'land_collision_end',
        +            'land_collision_start',
        +            'link_message',
        +            'listen',
        +            'money',
        +            'moving_end',
        +            'moving_start',
        +            'no_sensor',
        +            'not_at_rot_target',
        +            'not_at_target',
        +            'object_rez',
        +            'on_rez',
        +            'path_update',
        +            'remote_data',
        +            'run_time_permissions',
        +            'sensor',
        +            'state_entry',
        +            'state_exit',
        +            'timer',
        +            'touch',
        +            'touch_end',
        +            'touch_start',
        +            'transaction_result',
        +            ),
        +        4 => array( // data types
        +            'float',
        +            'integer',
        +            'key',
        +            'list',
        +            'quaternion',
        +            'rotation',
        +            'string',
        +            'vector',
        +            ),
        +        5 => array( // library
        +            'default',
        +            'llAbs',
        +            'llAcos',
        +            'llAddToLandBanList',
        +            'llAddToLandPassList',
        +            'llAdjustSoundVolume',
        +            'llAllowInventoryDrop',
        +            'llAngleBetween',
        +            'llApplyImpulse',
        +            'llApplyRotationalImpulse',
        +            'llAsin',
        +            'llAtan2',
        +            'llAttachToAvatar',
        +            'llAttachToAvatarTemp',
        +            'llAvatarOnLinkSitTarget',
        +            'llAvatarOnSitTarget',
        +            'llAxes2Rot',
        +            'llAxisAngle2Rot',
        +            'llBase64ToInteger',
        +            'llBase64ToString',
        +            'llBreakAllLinks',
        +            'llBreakLink',
        +            'llCastRay',
        +            'llCeil',
        +            'llClearCameraParams',
        +            'llClearLinkMedia',
        +            'llClearPrimMedia',
        +            'llCloseRemoteDataChannel',
        +            'llCollisionFilter',
        +            'llCollisionSound',
        +            'llCos',
        +            'llCreateCharacter',
        +            'llCreateLink',
        +            'llCSV2List',
        +            'llDeleteCharacter',
        +            'llDeleteSubList',
        +            'llDeleteSubString',
        +            'llDetachFromAvatar',
        +            'llDetectedGrab',
        +            'llDetectedGroup',
        +            'llDetectedKey',
        +            'llDetectedLinkNumber',
        +            'llDetectedName',
        +            'llDetectedOwner',
        +            'llDetectedPos',
        +            'llDetectedRot',
        +            'llDetectedTouchBinormal',
        +            'llDetectedTouchFace',
        +            'llDetectedTouchNormal',
        +            'llDetectedTouchPos',
        +            'llDetectedTouchST',
        +            'llDetectedTouchUV',
        +            'llDetectedType',
        +            'llDetectedVel',
        +            'llDialog',
        +            'llDie',
        +            'llDumpList2String',
        +            'llEdgeOfWorld',
        +            'llEjectFromLand',
        +            'llEmail',
        +            'llEscapeURL',
        +            'llEuler2Rot',
        +            'llEvade',
        +            'llExecCharacterCmd',
        +            'llFabs',
        +            'llFleeFrom',
        +            'llFloor',
        +            'llForceMouselook',
        +            'llFrand',
        +            'llGenerateKey',
        +            'llGetAccel',
        +            'llGetAgentInfo',
        +            'llGetAgentLanguage',
        +            'llGetAgentList',
        +            'llGetAgentSize',
        +            'llGetAlpha',
        +            'llGetAndResetTime',
        +            'llGetAnimation',
        +            'llGetAnimationList',
        +            'llGetAnimationOverride',
        +            'llGetAttached',
        +            'llGetBoundingBox',
        +            'llGetCameraPos',
        +            'llGetCameraRot',
        +            'llGetCenterOfMass',
        +            'llGetClosestNavPoint',
        +            'llGetColor',
        +            'llGetCreator',
        +            'llGetDate',
        +            'llGetDisplayName',
        +            'llGetEnergy',
        +            'llGetEnv',
        +            'llGetForce',
        +            'llGetFreeMemory',
        +            'llGetFreeURLs',
        +            'llGetGeometricCenter',
        +            'llGetGMTclock',
        +            'llGetHTTPHeader',
        +            'llGetInventoryCreator',
        +            'llGetInventoryKey',
        +            'llGetInventoryName',
        +            'llGetInventoryNumber',
        +            'llGetInventoryPermMask',
        +            'llGetInventoryType',
        +            'llGetKey',
        +            'llGetLandOwnerAt',
        +            'llGetLinkKey',
        +            'llGetLinkMedia',
        +            'llGetLinkName',
        +            'llGetLinkNumber',
        +            'llGetLinkNumberOfSides',
        +            'llGetLinkPrimitiveParams',
        +            'llGetListEntryType',
        +            'llGetListLength',
        +            'llGetLocalPos',
        +            'llGetLocalRot',
        +            'llGetMass',
        +            'llGetMassMKS',
        +            'llGetMaxScaleFactor',
        +            'llGetMemoryLimit',
        +            'llGetMinScaleFactor',
        +            'llGetNextEmail',
        +            'llGetNotecardLine',
        +            'llGetNumberOfNotecardLines',
        +            'llGetNumberOfPrims',
        +            'llGetNumberOfSides',
        +            'llGetObjectDesc',
        +            'llGetObjectDetails',
        +            'llGetObjectMass',
        +            'llGetObjectName',
        +            'llGetObjectPermMask',
        +            'llGetObjectPrimCount',
        +            'llGetOmega',
        +            'llGetOwner',
        +            'llGetOwnerKey',
        +            'llGetParcelDetails',
        +            'llGetParcelFlags',
        +            'llGetParcelMaxPrims',
        +            'llGetParcelMusicURL',
        +            'llGetParcelPrimCount',
        +            'llGetParcelPrimOwners',
        +            'llGetPermissions',
        +            'llGetPermissionsKey',
        +            'llGetPhysicsMaterial',
        +            'llGetPos',
        +            'llGetPrimitiveParams',
        +            'llGetPrimMediaParams',
        +            'llGetRegionAgentCount',
        +            'llGetRegionCorner',
        +            'llGetRegionFlags',
        +            'llGetRegionFPS',
        +            'llGetRegionName',
        +            'llGetRegionTimeDilation',
        +            'llGetRootPosition',
        +            'llGetRootRotation',
        +            'llGetRot',
        +            'llGetScale',
        +            'llGetScriptName',
        +            'llGetScriptState',
        +            'llGetSimStats',
        +            'llGetSimulatorHostname',
        +            'llGetSPMaxMemory',
        +            'llGetStartParameter',
        +            'llGetStaticPath',
        +            'llGetStatus',
        +            'llGetSubString',
        +            'llGetSunDirection',
        +            'llGetTexture',
        +            'llGetTextureOffset',
        +            'llGetTextureRot',
        +            'llGetTextureScale',
        +            'llGetTime',
        +            'llGetTimeOfDay',
        +            'llGetTimestamp',
        +            'llGetTorque',
        +            'llGetUnixTime',
        +            'llGetUsedMemory',
        +            'llGetUsername',
        +            'llGetVel',
        +            'llGetWallclock',
        +            'llGiveInventory',
        +            'llGiveInventoryList',
        +            'llGiveMoney',
        +            'llGround',
        +            'llGroundContour',
        +            'llGroundNormal',
        +            'llGroundRepel',
        +            'llGroundSlope',
        +            'llHTTPRequest',
        +            'llHTTPResponse',
        +            'llInsertString',
        +            'llInstantMessage',
        +            'llIntegerToBase64',
        +            'llJson2List',
        +            'llJsonGetValue',
        +            'llJsonSetValue',
        +            'llJsonValueType',
        +            'llKey2Name',
        +            'llLinkParticleSystem',
        +            'llLinkSitTarget',
        +            'llList2CSV',
        +            'llList2Float',
        +            'llList2Integer',
        +            'llList2Json',
        +            'llList2Key',
        +            'llList2List',
        +            'llList2ListStrided',
        +            'llList2Rot',
        +            'llList2String',
        +            'llList2Vector',
        +            'llListen',
        +            'llListenControl',
        +            'llListenRemove',
        +            'llListFindList',
        +            'llListInsertList',
        +            'llListRandomize',
        +            'llListReplaceList',
        +            'llListSort',
        +            'llListStatistics',
        +            'llLoadURL',
        +            'llLog',
        +            'llLog10',
        +            'llLookAt',
        +            'llLoopSound',
        +            'llLoopSoundMaster',
        +            'llLoopSoundSlave',
        +            'llManageEstateAccess',
        +            'llMapDestination',
        +            'llMD5String',
        +            'llMessageLinked',
        +            'llMinEventDelay',
        +            'llModifyLand',
        +            'llModPow',
        +            'llMoveToTarget',
        +            'llNavigateTo',
        +            'llOffsetTexture',
        +            'llOpenRemoteDataChannel',
        +            'llOverMyLand',
        +            'llOwnerSay',
        +            'llParcelMediaCommandList',
        +            'llParcelMediaQuery',
        +            'llParseString2List',
        +            'llParseStringKeepNulls',
        +            'llParticleSystem',
        +            'llPassCollisions',
        +            'llPassTouches',
        +            'llPatrolPoints',
        +            'llPlaySound',
        +            'llPlaySoundSlave',
        +            'llPow',
        +            'llPreloadSound',
        +            'llPursue',
        +            'llPushObject',
        +            'llRegionSay',
        +            'llRegionSayTo',
        +            'llReleaseControls',
        +            'llReleaseURL',
        +            'llRemoteDataReply',
        +            'llRemoteLoadScriptPin',
        +            'llRemoveFromLandBanList',
        +            'llRemoveFromLandPassList',
        +            'llRemoveInventory',
        +            'llRemoveVehicleFlags',
        +            'llRequestAgentData',
        +            'llRequestDisplayName',
        +            'llRequestInventoryData',
        +            'llRequestPermissions',
        +            'llRequestSecureURL',
        +            'llRequestSimulatorData',
        +            'llRequestURL',
        +            'llRequestUsername',
        +            'llResetAnimationOverride',
        +            'llResetLandBanList',
        +            'llResetLandPassList',
        +            'llResetOtherScript',
        +            'llResetScript',
        +            'llResetTime',
        +            'llReturnObjectsByID',
        +            'llReturnObjectsByOwner',
        +            'llRezAtRoot',
        +            'llRezObject',
        +            'llRot2Angle',
        +            'llRot2Axis',
        +            'llRot2Euler',
        +            'llRot2Fwd',
        +            'llRot2Left',
        +            'llRot2Up',
        +            'llRotateTexture',
        +            'llRotBetween',
        +            'llRotLookAt',
        +            'llRotTarget',
        +            'llRotTargetRemove',
        +            'llRound',
        +            'llSameGroup',
        +            'llSay',
        +            'llScaleByFactor',
        +            'llScaleTexture',
        +            'llScriptDanger',
        +            'llScriptProfiler',
        +            'llSendRemoteData',
        +            'llSensor',
        +            'llSensorRemove',
        +            'llSensorRepeat',
        +            'llSetAlpha',
        +            'llSetAngularVelocity',
        +            'llSetAnimationOverride',
        +            'llSetBuoyancy',
        +            'llSetCameraAtOffset',
        +            'llSetCameraEyeOffset',
        +            'llSetCameraParams',
        +            'llSetClickAction',
        +            'llSetColor',
        +            'llSetContentType',
        +            'llSetDamage',
        +            'llSetForce',
        +            'llSetForceAndTorque',
        +            'llSetHoverHeight',
        +            'llSetKeyframedMotion',
        +            'llSetLinkAlpha',
        +            'llSetLinkCamera',
        +            'llSetLinkColor',
        +            'llSetLinkMedia',
        +            'llSetLinkPrimitiveParams',
        +            'llSetLinkPrimitiveParamsFast',
        +            'llSetLinkTexture',
        +            'llSetLinkTextureAnim',
        +            'llSetLocalRot',
        +            'llSetMemoryLimit',
        +            'llSetObjectDesc',
        +            'llSetObjectName',
        +            'llSetParcelMusicURL',
        +            'llSetPayPrice',
        +            'llSetPhysicsMaterial',
        +            'llSetPos',
        +            'llSetPrimitiveParams',
        +            'llSetPrimMediaParams',
        +            'llSetRegionPos',
        +            'llSetRemoteScriptAccessPin',
        +            'llSetRot',
        +            'llSetScale',
        +            'llSetScriptState',
        +            'llSetSitText',
        +            'llSetSoundQueueing',
        +            'llSetSoundRadius',
        +            'llSetStatus',
        +            'llSetText',
        +            'llSetTexture',
        +            'llSetTextureAnim',
        +            'llSetTimerEvent',
        +            'llSetTorque',
        +            'llSetTouchText',
        +            'llSetVehicleFlags',
        +            'llSetVehicleFloatParam',
        +            'llSetVehicleRotationParam',
        +            'llSetVehicleType',
        +            'llSetVehicleVectorParam',
        +            'llSetVelocity',
        +            'llSHA1String',
        +            'llShout',
        +            'llSin',
        +            'llSitTarget',
        +            'llSleep',
        +            'llSqrt',
        +            'llStartAnimation',
        +            'llStopAnimation',
        +            'llStopHover',
        +            'llStopLookAt',
        +            'llStopMoveToTarget',
        +            'llStopSound',
        +            'llStringLength',
        +            'llStringToBase64',
        +            'llStringTrim',
        +            'llSubStringIndex',
        +            'llTakeControls',
        +            'llTan',
        +            'llTarget',
        +            'llTargetOmega',
        +            'llTargetRemove',
        +            'llTeleportAgent',
        +            'llTeleportAgentGlobalCoords',
        +            'llTeleportAgentHome',
        +            'llTextBox',
        +            'llToLower',
        +            'llToUpper',
        +            'llTransferLindenDollars',
        +            'llTriggerSound',
        +            'llTriggerSoundLimited',
        +            'llUnescapeURL',
        +            'llUnSit',
        +            'llUpdateCharacter',
        +            'llVecDist',
        +            'llVecMag',
        +            'llVecNorm',
        +            'llVolumeDetect',
        +            'llWanderWithin',
        +            'llWater',
        +            'llWhisper',
        +            'llWind',
        +            'llXorBase64',
        +            'print',
        +            ),
        +        6 => array( // deprecated
        +            'ATTACH_LPEC',
        +            'ATTACH_RPEC',
        +            'DATA_RATING',
        +            'PERMISSION_CHANGE_JOINTS',
        +            'PERMISSION_CHANGE_PERMISSIONS',
        +            'PERMISSION_RELEASE_OWNERSHIP',
        +            'PERMISSION_REMAP_CONTROLS',
        +            'PRIM_CAST_SHADOWS',
        +            'PRIM_MATERIAL_LIGHT',
        +            'PSYS_SRC_INNERANGLE',
        +            'PSYS_SRC_OBJ_REL_MASK',
        +            'PSYS_SRC_OUTERANGLE',
        +            'VEHICLE_FLAG_NO_FLY_UP',
        +            'llCloud',
        +            'llMakeExplosion',
        +            'llMakeFire',
        +            'llMakeFountain',
        +            'llMakeSmoke',
        +            'llRemoteDataSetRegion',
        +            'llSound',
        +            'llSoundPreload',
        +            'llXorBase64Strings',
        +            'llXorBase64StringsCorrect',
        +            ),
        +        7 => array( // unimplemented
        +            'event',
        +            'llCollisionSprite',
        +            'llPointAt',
        +            'llRefreshPrimURL',
        +            'llReleaseCamera',
        +            'llRemoteLoadScript',
        +            'llSetPrimURL',
        +            'llStopPointAt',
        +            'llTakeCamera',
        +            ),
        +        8 => array( // God mode
        +            'llGodLikeRezObject',
        +            'llSetInventoryPermMask',
        +            'llSetObjectPermMask',
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '{', '}', '(', ')', '[', ']',
        +        '=', '+', '-', '*', '/',
        +        '+=', '-=', '*=', '/=', '%=', '++', '--',
        +        '!', '%', '&', '|', '&&', '||',
        +        '==', '!=', '<', '>', '<=', '>=',
        +        '~', '<<', '>>', '^', ':',
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => true,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true,
        +        8 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000ff;',
        +            2 => 'color: #000080;',
        +            3 => 'color: #008080;',
        +            4 => 'color: #228b22;',
        +            5 => 'color: #b22222;',
        +            6 => 'color: #8b0000; background-color: #ffff00;',
        +            7 => 'color: #8b0000; background-color: #fa8072;',
        +            8 => 'color: #000000; background-color: #ba55d3;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #ff7f50; font-style: italic;',
        +            'MULTI' => 'color: #ff7f50; font-style: italic;',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #006400;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => 'http://wiki.secondlife.com/wiki/{FNAME}',
        +        4 => 'http://wiki.secondlife.com/wiki/{FNAME}',
        +        5 => 'http://wiki.secondlife.com/wiki/{FNAME}',
        +        6 => 'http://wiki.secondlife.com/wiki/{FNAME}',
        +        7 => 'http://wiki.secondlife.com/wiki/{FNAME}',
        +        8 => 'http://wiki.secondlife.com/wiki/{FNAME}',
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/lua.php b/includes/geshi/lua.php
        new file mode 100644
        index 0000000..142375d
        --- /dev/null
        +++ b/includes/geshi/lua.php
        @@ -0,0 +1,175 @@
        + 'Lua',
        +    'COMMENT_SINGLE' => array(1 => "--"),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(1 => '/--\[(=*)\[.*?\]\1\]/s'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        //Simple Single Char Escapes
        +        1 => "#\\\\[\\\\abfnrtv\'\"]#i",
        +        //Octal Char Specs
        +        2 => "#\\\\\\d{1,3}#"
        +        ),
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_HEX_PREFIX |
        +        GESHI_NUMBER_FLT_NONSCI | GESHI_NUMBER_FLT_NONSCI_F |
        +        GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'break','do','else','elseif','end','for','function','if',
        +            'local','repeat','return','then','until','while'
        +            ),
        +        2 => array(
        +            'and','in','not','or'
        +            ),
        +        3 => array(
        +            '_VERSION','assert','collectgarbage','dofile','error','gcinfo','loadfile','loadstring',
        +            'print','tonumber','tostring','type','unpack',
        +            '_ALERT','_ERRORMESSAGE','_INPUT','_PROMPT','_OUTPUT',
        +            '_STDERR','_STDIN','_STDOUT','call','dostring','foreach','foreachi','getn','globals','newtype',
        +            'rawget','rawset','require','sort','tinsert','tremove',
        +            'abs','acos','asin','atan','atan2','ceil','cos','deg','exp',
        +            'floor','format','frexp','gsub','ldexp','log','log10','max','min','mod','rad','random','randomseed',
        +            'sin','sqrt','strbyte','strchar','strfind','strlen','strlower','strrep','strsub','strupper','tan',
        +            'openfile','closefile','readfrom','writeto','appendto',
        +            'remove','rename','flush','seek','tmpfile','tmpname','read','write',
        +            'clock','date','difftime','execute','exit','getenv','setlocale','time',
        +            '_G','getfenv','getmetatable','ipairs','loadlib','next','pairs','pcall',
        +            'rawegal','setfenv','setmetatable','xpcall',
        +            'string.byte','string.char','string.dump','string.find','string.len',
        +            'string.lower','string.rep','string.sub','string.upper','string.format','string.gfind','string.gsub',
        +            'table.concat','table.foreach','table.foreachi','table.getn','table.sort','table.insert','table.remove','table.setn',
        +            'math.abs','math.acos','math.asin','math.atan','math.atan2','math.ceil','math.cos','math.deg','math.exp',
        +            'math.floor','math.frexp','math.ldexp','math.log','math.log10','math.max','math.min','math.mod',
        +            'math.pi','math.rad','math.random','math.randomseed','math.sin','math.sqrt','math.tan',
        +            'coroutine.create','coroutine.resume','coroutine.status',
        +            'coroutine.wrap','coroutine.yield',
        +            'io.close','io.flush','io.input','io.lines','io.open','io.output','io.read','io.tmpfile','io.type','io.write',
        +            'io.stdin','io.stdout','io.stderr',
        +            'os.clock','os.date','os.difftime','os.execute','os.exit','os.getenv','os.remove','os.rename',
        +            'os.setlocale','os.time','os.tmpname',
        +            'string','table','math','coroutine','io','os','debug'
        +            ),
        +        4 => array(
        +            'nil', 'false', 'true'
        +            ),
        +        5 => array(
        +            'Nil', 'Boolean', 'Number', 'String', 'Userdata', 'Thread', 'Table'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '+', '-', '*', '/', '%', '^', '#',
        +        '==', '~=', '<=', '>=', '<', '>', '=',
        +        '(', ')', '{', '}', '[', ']',
        +        ';', ':', ',', '.', '..', '...'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #aa9900; font-weight: bold;',
        +            2 => 'color: #aa9900; font-weight: bold;',
        +            3 => 'color: #0000aa;',
        +            4 => 'color: #aa9900;',
        +            5 => 'color: #aa9900;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            //2 => 'color: #ff0000;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            1 => 'color: #000099; font-weight: bold;',
        +            2 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff6666;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #aa9900;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/m68k.php b/includes/geshi/m68k.php
        new file mode 100644
        index 0000000..aff1994
        --- /dev/null
        +++ b/includes/geshi/m68k.php
        @@ -0,0 +1,141 @@
        + 'Motorola 68000 Assembler',
        +    'COMMENT_SINGLE' => array(1 => ';'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        /*CPU*/
        +        1 => array(
        +            'adc','add','ais','aix','and','asl','asr','bcc','bclr','bcs','beq',
        +            'bge','bgt','bhcc','bhcs','bhi','bhs','bih','bil','bit','ble','blo',
        +            'bls','blt','bmc','bmi','bms','bne','bpl','bra','brclr','brn',
        +            'brset','bset','bsr','cbeq','clc','cli','clr','cmp','com','cphx',
        +            'cpx','daa','dbnz','dec','div','eor','inc','jmp','jsr','lda','ldhx',
        +            'ldx','lsl','lsr','mov','mul','neg','nop','nsa','ora','psha','pshh',
        +            'pshx','pula','pulh','pulx','rol','ror','rsp','rti','rts','sbc',
        +            'sec','sei','sta','sthx','stop','stx','sub','swi','tap','tax','tpa',
        +            'tst','tsx','txa','txs','wait'
        +        ),
        +        /*registers*/
        +        2 => array(
        +            'a','h','x',
        +            'hx','sp'
        +            ),
        +        /*Directive*/
        +        3 => array(
        +            '#define','#endif','#else','#ifdef','#ifndef','#include','#undef',
        +            '.db','.dd','.df','.dq','.dt','.dw','.end','.org','equ'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        ','
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000ff; font-weight:bold;',
        +            2 => 'color: #0000ff;',
        +            3 => 'color: #46aa03; font-weight:bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #adadad; font-style: italic;',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #7f007f;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #dd22dd;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #008000;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #22bbff;',
        +            1 => 'color: #22bbff;',
        +            2 => 'color: #993333;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        //Hex numbers
        +        0 => '#?0[0-9a-fA-F]{1,32}[hH]',
        +        //Binary numbers
        +        1 => '\%[01]{1,64}[bB]',
        +        //Labels
        +        2 => '^[_a-zA-Z][_a-zA-Z0-9]*?\:'
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 8
        +);
        diff --git a/includes/geshi/magiksf.php b/includes/geshi/magiksf.php
        new file mode 100644
        index 0000000..74e794e
        --- /dev/null
        +++ b/includes/geshi/magiksf.php
        @@ -0,0 +1,191 @@
        + null,
        +    'LANG_NAME' => 'MagikSF',
        +    'COMMENT_SINGLE' => array(1 => '##', 2 => '#%', 3 => '#'),
        +    'COMMENT_MULTI' => array("_pragma(" => ")"),
        +    //Multiline-continued single-line comments
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '', // FIXME: Duplicate array key. null or ''?
        +    'KEYWORDS' => array(
        +        1 => array(
        +            '_block', '_endblock', '_proc', '_endproc', '_loop', '_endloop',
        +            '_method', '_endmethod',
        +            '_protect', '_endprotect', '_protection', '_locking',
        +            '_continue',
        +            ),
        +        2 => array(
        +            '_self', '_thisthread', '_pragma', '_private', '_abstract',
        +            '_local', '_global', '_dynamic', '_package', '_constant',
        +            '_import', '_iter', '_lock', '_optional', '_recursive', '_super'
        +            ),
        +        3 => array(
        +            '_if', '_endif', '_then', '_else', '_elif', '_orif', '_andif', '_for', '_over',
        +            '_try', '_endtry', '_when', '_throw', '_catch', '_endcatch', '_handling',
        +            '_finally', '_loopbody', '_return', '_leave', '_with'
        +            ),
        +        4 => array(
        +            '_false', '_true', '_maybe', '_unset', '_no_way'
        +            ),
        +        5 => array(
        +            '_mod', '_div', '_or', '_and', '_cf', '_is', '_isnt', '_not', '_gather', '_scatter',
        +            '_allresults', '_clone', '_xor'
        +            ),
        +        6 => array(
        +            'def_slotted_exemplar', 'write_string', 'write', 'condition',
        +            'record_transaction', 'gis_program_manager', 'perform', 'define_shared_constant',
        +            'property_list', 'rope', 'def_property', 'def_mixin'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '[', ']',
        +        '+', '-', '*', '/', '**',
        +        '=', '<', '>', '<<', '>>',
        +        ',', '$',
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        6 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000000; font-weight: bold;',
        +            2 => 'color: #ff3f3f;',
        +            3 => 'color: #3f7f3f; font-weight: bold;',
        +            4 => 'color: #cc66cc;',
        +            5 => 'color: #ff3fff; font-weight: bold;',
        +            6 => 'font-weight: bold;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #339933; font-weight: bold;',
        +            2 => 'color: #993333;',
        +            3 => 'color: #339933;',
        +            'MULTI' => 'color: #7f7f7f; font-style: italic',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #ff3f3f;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #202020;',
        +            2 => 'color: #202020;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #ff3f3f;'
        +            ),
        +        'REGEXPS' => array(
        +            1 => 'color: #3f3fff;',
        +            2 => 'color: #3f3fff;',
        +            3 => 'color: #cc66cc;',
        +            4 => 'color: #7f3f7f; font-style: italic;',
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        1 => array(
        +            GESHI_SEARCH => '\b[a-zA-Z0-9_]+:', // package identifiers
        +            GESHI_REPLACE => '\\0',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        2 => array(
        +            GESHI_SEARCH => ':(?:[a-zA-Z0-9!?_]+|(?:[].*?[]))*', //symbols
        +            GESHI_REPLACE => '\\0',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        3 => array(
        +            GESHI_SEARCH => '%space|%tab|%newline|%.', //characters
        +            GESHI_REPLACE => '\\0',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        4 => array(
        +            GESHI_SEARCH => '@(?:[a-zA-Z0-9!?_]+|(?:[].*?[]))*', //symbols
        +            GESHI_REPLACE => '\\0',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/make.php b/includes/geshi/make.php
        new file mode 100644
        index 0000000..4567dab
        --- /dev/null
        +++ b/includes/geshi/make.php
        @@ -0,0 +1,149 @@
        +
        + * Copyright: (c) 2008 Neil Bird
        + * Release Version: 1.0.8.12
        + * Date Started: 2008/08/26
        + *
        + * make language file for GeSHi.
        + *
        + * (GNU make specific)
        + *
        + * CHANGES
        + * -------
        + * 2008/09/05 (1.0.0)
        + *  -  First Release
        + *
        + *************************************************************************************
        + *
        + *     This file is part of GeSHi.
        + *
        + *   GeSHi is free software; you can redistribute it and/or modify
        + *   it under the terms of the GNU General Public License as published by
        + *   the Free Software Foundation; either version 2 of the License, or
        + *   (at your option) any later version.
        + *
        + *   GeSHi is distributed in the hope that it will be useful,
        + *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + *   GNU General Public License for more details.
        + *
        + *   You should have received a copy of the GNU General Public License
        + *   along with GeSHi; if not, write to the Free Software
        + *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        + *
        + ************************************************************************************/
        +
        +$language_data = array (
        +    'LANG_NAME' => 'GNU make',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_REGEXP' => array(
        +        //Escaped String Starters
        +        2 => "/\\\\['\"]/siU"
        +        ),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            // core
        +            'ifeq', 'else', 'endif', 'ifneq', 'ifdef', 'ifndef',
        +            'include', 'vpath', 'export', 'unexport', 'override',
        +            'info', 'warning', 'error'
        +            ),
        +        2 => array(
        +            // macros, literals
        +            '.SUFFIXES', '.PHONY', '.DEFAULT', '.PRECIOUS', '.IGNORE', '.SILENT', '.EXPORT_ALL_VARIABLES', '.KEEP_STATE',
        +            '.LIBPATTERNS', '.NOTPARALLEL', '.DELETE_ON_ERROR', '.INTERMEDIATE', '.POSIX', '.SECONDARY'
        +            ),
        +        /*
        +        3 => array(
        +            // funcs - see regex
        +            //'subst', 'addprefix', 'addsuffix', 'basename', 'call', 'dir', 'error', 'eval', 'filter-out', 'filter',
        +            //'findstring', 'firstword', 'foreach', 'if', 'join', 'notdir', 'origin', 'patsubst', 'shell', 'sort', 'strip',
        +            //'suffix', 'warning', 'wildcard', 'word', 'wordlist', 'words'
        +            )*/
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}',
        +        '!', '@', '%', '&', '|', '/',
        +        '<', '>',
        +        '=', '-', '+', '*',
        +        '.', ':', ',', ';',
        +        '$'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        //3 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #666622; font-weight: bold;',
        +            2 => 'color: #990000;',
        +            //3 => 'color: #000000; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #339900; font-style: italic;',
        +            2 => 'color: #000099; font-weight: bold;',
        +            'MULTI' => ''
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(  # keep same as symbols so as to make ${} and $() equiv.
        +            0 => 'color: #004400;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #CC2200;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #CC2200;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #004400;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #000088; font-weight: bold;',
        +            1 => 'color: #0000CC; font-weight: bold;',
        +            2 => 'color: #000088;'
        +            ),
        +        'SCRIPT' => array(),
        +        'METHODS' => array()
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        //3 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(
        +        //Simple variables
        +        0 => "\\$(?:[^{(&]|&(?:amp|lt|gt);)",
        +        //Complex variables/functions [built-ins]
        +        1 => array(
        +            GESHI_SEARCH => '(\\$[({])(subst|addprefix|addsuffix|basename|call|dir|error|eval|filter-out|filter,|findstring|firstword|foreach|if|join|notdir|origin|patsubst|shell|sort|strip,|suffix|warning|wildcard|word|wordlist|words)([ })])',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3'
        +            ),
        +            //Complex variables/functions [others]
        +        2 => array(
        +            GESHI_SEARCH => '(\\$[({])([A-Za-z_][A-Za-z_0-9]*)([ })])',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3'
        +            ),
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(),
        +    'TAB_WIDTH' => 8
        +);
        diff --git a/includes/geshi/mapbasic.php b/includes/geshi/mapbasic.php
        new file mode 100644
        index 0000000..2672eb7
        --- /dev/null
        +++ b/includes/geshi/mapbasic.php
        @@ -0,0 +1,906 @@
        + 'MapBasic',
        +    'COMMENT_SINGLE' => array(1 => "'"),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +/*
        +        1 - Statements + Clauses + Data Types + Logical Operators, Geographical Operators + SQL
        +        2 - Special Procedures
        +        3 - Functions
        +        4 - Constants
        +        5 - Extended keywords (case sensitive)
        +*/
        +        1 => array(
        +            'Add', 'Alias', 'All', 'Alter', 'And', 'Any', 'Application', 'Arc',
        +            'Area', 'As', 'AutoLabel', 'Bar', 'Beep', 'Begin', 'Bind',
        +            'Browse', 'Brush', 'BrushPicker', 'Button', 'ButtonPad',
        +            'ButtonPads', 'BY', 'Call', 'CancelButton', 'Cartographic', 'Case',
        +            'CharSet', 'Check', 'CheckBox', 'Clean', 'Close', 'Collection',
        +            'Column', 'Combine', 'Command', 'Commit', 'Connection',
        +            'ConnectionNumber', 'Contains', 'Continue', 'Control', 'CoordSys',
        +            'Create', 'Cutter', 'Date', 'Datum', 'DDEExecute', 'DDEPoke',
        +            'DDETerminate', 'DDETerminateAll', 'Declare', 'Default', 'Define',
        +            'Delete', 'Dialog', 'Digitizer', 'Dim', 'Disaggregate',
        +            'Disconnect', 'Distance', 'Do', 'Document', 'DocumentWindow',
        +            'Drag', 'Drop', 'EditText', 'Ellipse', 'Enclose', 'End', 'Entire',
        +            'Entirely', 'Erase', 'Error', 'Event', 'Exit', 'Export',
        +            'Farthest', 'Fetch', 'File', 'Find', 'Float', 'FME', 'Font',
        +            'FontPicker', 'For', 'Format', 'Frame', 'From', 'Function',
        +            'Geocode', 'Get', 'Global', 'Goto', 'Graph', 'Grid', 'GROUP',
        +            'GroupBox', 'Handler', 'If', 'Import', 'In', 'Include', 'Index',
        +            'Info', 'Input', 'Insert', 'Integer', 'Intersect', 'Intersects',
        +            'INTO', 'Isogram', 'Item', 'Kill', 'Layout', 'Legend', 'Line',
        +            'Link', 'ListBox', 'Logical', 'Loop', 'Map', 'Map3D', 'MapInfo',
        +            'MapInfoDialog', 'Menu', 'Merge', 'Metadata', 'Method', 'Mod',
        +            'Move', 'MultiListBox', 'MultiPoint', 'MWS', 'Nearest', 'Next',
        +            'NOSELECT', 'Not', 'Note', 'Object', 'Objects', 'Offset',
        +            'OKButton', 'OnError', 'Open', 'Or', 'ORDER', 'Overlay', 'Pack',
        +            'Paper', 'Part', 'Partly', 'Pen', 'PenPicker', 'Pline', 'Point',
        +            'PopupMenu', 'Preserve', 'Print', 'PrintWin', 'PrismMap',
        +            'Processing', 'Program', 'ProgressBar', 'ProgressBars', 'Put',
        +            'RadioGroup', 'Randomize', 'Ranges', 'Rect', 'ReDim',
        +            'Redistricter', 'Refresh', 'Region', 'Register', 'Relief',
        +            'Reload', 'Remove', 'Rename', 'Report', 'Reproject', 'Resolution',
        +            'Resume', 'Rollback', 'RoundRect', 'RowID', 'Run', 'Save', 'Seek',
        +            'Select', 'Selection', 'Server', 'Set', 'Shade', 'SmallInt',
        +            'Snap', 'Split', 'StaticText', 'StatusBar', 'Stop', 'String',
        +            'Style', 'Styles', 'Sub', 'Symbol', 'SymbolPicker', 'Symbols',
        +            'Table', 'Target', 'Terminate', 'Text', 'Then', 'Threshold',
        +            'Timeout', 'To', 'Transaction', 'Transform', 'Type', 'UnDim',
        +            'Units', 'Unlink', 'Update', 'Using', 'VALUES', 'Version',
        +            'Versioning', 'Wend', 'WFS', 'WHERE', 'While', 'Window', 'Within',
        +            'Workspace', 'Write'
        +            ),
        +        2 => array(
        +            'EndHandler', 'ForegroundTaskSwitchHandler', 'Main',
        +            'RemoteMapGenHandler', 'RemoteMsgHandler', 'SelChangedHandler',
        +            'ToolHandler', 'WinChangedHandler', 'WinClosedHandler',
        +            'WinFocusChangedHandler'
        +            ),
        +        3 => array(
        +            'Abs', 'Acos', 'ApplicationDirectory$', 'AreaOverlap', 'Asc',
        +            'Asin', 'Ask', 'Atn', 'Avg', 'Buffer', 'ButtonPadInfo',
        +            'CartesianArea', 'CartesianBuffer', 'CartesianConnectObjects',
        +            'CartesianDistance', 'CartesianObjectDistance',
        +            'CartesianObjectLen', 'CartesianOffset', 'CartesianOffsetXY',
        +            'CartesianPerimeter', 'Centroid', 'CentroidX', 'CentroidY',
        +            'ChooseProjection$', 'Chr$', 'ColumnInfo', 'CommandInfo',
        +            'ConnectObjects', 'ControlPointInfo', 'ConvertToPline',
        +            'ConvertToRegion', 'ConvexHull', 'CoordSysName$', 'Cos', 'Count',
        +            'CreateCircle', 'CreateLine', 'CreatePoint', 'CreateText',
        +            'CurDate', 'CurrentBorderPen', 'CurrentBrush', 'CurrentFont',
        +            'CurrentLinePen', 'CurrentPen', 'CurrentSymbol', 'DateWindow',
        +            'Day', 'DDEInitiate', 'DDERequest$', 'DeformatNumber$', 'EOF',
        +            'EOT', 'EPSGToCoordSysString$', 'Err', 'Error$', 'Exp',
        +            'ExtractNodes', 'FileAttr', 'FileExists', 'FileOpenDlg',
        +            'FileSaveAsDlg', 'Fix', 'Format$', 'FormatDate$', 'FormatNumber$',
        +            'FrontWindow', 'GeocodeInfo', 'GetFolderPath$', 'GetGridCellValue',
        +            'GetMetadata$', 'GetSeamlessSheet', 'GridTableInfo',
        +            'HomeDirectory$', 'InStr', 'Int', 'IntersectNodes',
        +            'IsGridCellNull', 'IsogramInfo', 'IsPenWidthPixels',
        +            'LabelFindByID', 'LabelFindFirst', 'LabelFindNext', 'LabelInfo',
        +            'LayerInfo', 'LCase$', 'Left$', 'LegendFrameInfo', 'LegendInfo',
        +            'LegendStyleInfo', 'Len', 'Like', 'LocateFile$', 'LOF', 'Log',
        +            'LTrim$', 'MakeBrush', 'MakeCustomSymbol', 'MakeFont',
        +            'MakeFontSymbol', 'MakePen', 'MakeSymbol', 'Map3DInfo',
        +            'MapperInfo', 'Max', 'Maximum', 'MBR', 'MenuItemInfoByHandler',
        +            'MenuItemInfoByID', 'MGRSToPoint', 'MICloseContent',
        +            'MICloseFtpConnection', 'MICloseFtpFileFind',
        +            'MICloseHttpConnection', 'MICloseHttpFile', 'MICloseSession',
        +            'MICreateSession', 'MICreateSessionFull', 'Mid$', 'MidByte$',
        +            'MIErrorDlg', 'MIFindFtpFile', 'MIFindNextFtpFile', 'MIGetContent',
        +            'MIGetContentBuffer', 'MIGetContentLen', 'MIGetContentString',
        +            'MIGetContentToFile', 'MIGetContentType',
        +            'MIGetCurrentFtpDirectory', 'MIGetErrorCode', 'MIGetErrorMessage',
        +            'MIGetFileURL', 'MIGetFtpConnection', 'MIGetFtpFile',
        +            'MIGetFtpFileFind', 'MIGetFtpFileName', 'MIGetHttpConnection',
        +            'MIIsFtpDirectory', 'MIIsFtpDots', 'Min', 'Minimum',
        +            'MIOpenRequest', 'MIOpenRequestFull', 'MIParseURL', 'MIPutFtpFile',
        +            'MIQueryInfo', 'MIQueryInfoStatusCode', 'MISaveContent',
        +            'MISendRequest', 'MISendSimpleRequest', 'MISetCurrentFtpDirectory',
        +            'MISetSessionTimeout', 'MIXmlAttributeListDestroy',
        +            'MIXmlDocumentCreate', 'MIXmlDocumentDestroy',
        +            'MIXmlDocumentGetNamespaces', 'MIXmlDocumentGetRootNode',
        +            'MIXmlDocumentLoad', 'MIXmlDocumentLoadXML',
        +            'MIXmlDocumentLoadXMLString', 'MIXmlDocumentSetProperty',
        +            'MIXmlGetAttributeList', 'MIXmlGetChildList',
        +            'MIXmlGetNextAttribute', 'MIXmlGetNextNode', 'MIXmlNodeDestroy',
        +            'MIXmlNodeGetAttributeValue', 'MIXmlNodeGetFirstChild',
        +            'MIXmlNodeGetName', 'MIXmlNodeGetParent', 'MIXmlNodeGetText',
        +            'MIXmlNodeGetValue', 'MIXmlNodeListDestroy', 'MIXmlSCDestroy',
        +            'MIXmlSCGetLength', 'MIXmlSCGetNamespace', 'MIXmlSelectNodes',
        +            'MIXmlSelectSingleNode', 'Month', 'NumAllWindows', 'NumberToDate',
        +            'NumCols', 'NumTables', 'NumWindows', 'ObjectDistance',
        +            'ObjectGeography', 'ObjectInfo', 'ObjectLen', 'ObjectNodeHasM',
        +            'ObjectNodeHasZ', 'ObjectNodeM', 'ObjectNodeX', 'ObjectNodeY',
        +            'ObjectNodeZ', 'OffsetXY', 'Overlap', 'OverlayNodes',
        +            'PathToDirectory$', 'PathToFileName$', 'PathToTableName$',
        +            'PenWidthToPoints', 'Perimeter', 'PointsToPenWidth',
        +            'PointToMGRS$', 'PrismMapInfo', 'ProgramDirectory$', 'Proper$',
        +            'ProportionOverlap', 'RasterTableInfo', 'ReadControlValue',
        +            'RegionInfo', 'RemoteQueryHandler', 'RGB', 'Right$', 'Rnd',
        +            'Rotate', 'RotateAtPoint', 'Round', 'RTrim$', 'SearchInfo',
        +            'SearchPoint', 'SearchRect', 'SelectionInfo', 'Server_ColumnInfo',
        +            'Server_Connect', 'Server_ConnectInfo', 'Server_DriverInfo',
        +            'Server_EOT', 'Server_Execute', 'Server_GetODBCHConn',
        +            'Server_GetODBCHStmt', 'Server_NumCols', 'Server_NumDrivers',
        +            'SessionInfo', 'Sgn', 'Sin', 'Space$', 'SphericalArea',
        +            'SphericalConnectObjects', 'SphericalDistance',
        +            'SphericalObjectDistance', 'SphericalObjectLen', 'SphericalOffset',
        +            'SphericalOffsetXY', 'SphericalPerimeter', 'Sqr', 'Str$',
        +            'String$', 'StringCompare', 'StringCompareIntl', 'StringToDate',
        +            'StyleAttr', 'Sum', 'SystemInfo', 'TableInfo', 'Tan',
        +            'TempFileName$', 'TextSize', 'Time', 'Timer', 'TriggerControl',
        +            'TrueFileName$', 'UBound', 'UCase$', 'UnitAbbr$', 'UnitName$',
        +            'Val', 'Weekday', 'WindowID', 'WindowInfo', 'WtAvg', 'Year'
        +            ),
        +        4 => array(
        +            'BLACK', 'BLUE', 'BRUSH_BACKCOLOR', 'BRUSH_FORECOLOR',
        +            'BRUSH_PATTERN', 'BTNPAD_INFO_FLOATING', 'BTNPAD_INFO_NBTNS',
        +            'BTNPAD_INFO_WIDTH', 'BTNPAD_INFO_WINID', 'BTNPAD_INFO_X',
        +            'BTNPAD_INFO_Y', 'CLS', 'CMD_INFO_CTRL', 'CMD_INFO_CUSTOM_OBJ',
        +            'CMD_INFO_DLG_DBL', 'CMD_INFO_DLG_OK', 'CMD_INFO_EDIT_ASK',
        +            'CMD_INFO_EDIT_DISCARD', 'CMD_INFO_EDIT_SAVE',
        +            'CMD_INFO_EDIT_STATUS', 'CMD_INFO_EDIT_TABLE', 'CMD_INFO_FIND_RC',
        +            'CMD_INFO_FIND_ROWID', 'CMD_INFO_HL_FILE_NAME',
        +            'CMD_INFO_HL_LAYER_ID', 'CMD_INFO_HL_ROWID',
        +            'CMD_INFO_HL_TABLE_NAME', 'CMD_INFO_HL_WINDOW_ID',
        +            'CMD_INFO_INTERRUPT', 'CMD_INFO_MENUITEM', 'CMD_INFO_MSG',
        +            'CMD_INFO_ROWID', 'CMD_INFO_SELTYPE', 'CMD_INFO_SHIFT',
        +            'CMD_INFO_STATUS', 'CMD_INFO_TASK_SWITCH', 'CMD_INFO_TOOLBTN',
        +            'CMD_INFO_WIN', 'CMD_INFO_X', 'CMD_INFO_X2', 'CMD_INFO_XCMD',
        +            'CMD_INFO_Y', 'CMD_INFO_Y2', 'COL_INFO_DECPLACES',
        +            'COL_INFO_EDITABLE', 'COL_INFO_INDEXED', 'COL_INFO_NAME',
        +            'COL_INFO_NUM', 'COL_INFO_TYPE', 'COL_INFO_WIDTH', 'COL_TYPE_CHAR',
        +            'COL_TYPE_DATE', 'COL_TYPE_DATETIME', 'COL_TYPE_DECIMAL',
        +            'COL_TYPE_FLOAT', 'COL_TYPE_GRAPHIC', 'COL_TYPE_INTEGER',
        +            'COL_TYPE_LOGICAL', 'COL_TYPE_SMALLINT', 'COL_TYPE_TIME', 'CYAN',
        +            'DATE_WIN_CURPROG', 'DATE_WIN_SESSION', 'DEG_2_RAD',
        +            'DICTIONARY_ADDRESS_ONLY', 'DICTIONARY_ALL',
        +            'DICTIONARY_PREFER_ADDRESS', 'DICTIONARY_PREFER_USER',
        +            'DICTIONARY_USER_ONLY', 'DM_CUSTOM_CIRCLE', 'DM_CUSTOM_ELLIPSE',
        +            'DM_CUSTOM_LINE', 'DM_CUSTOM_POINT', 'DM_CUSTOM_POLYGON',
        +            'DM_CUSTOM_POLYLINE', 'DM_CUSTOM_RECT', 'DMPAPER_10X11',
        +            'DMPAPER_10X14', 'DMPAPER_11X17', 'DMPAPER_12X11', 'DMPAPER_15X11',
        +            'DMPAPER_9X11', 'DMPAPER_A_PLUS', 'DMPAPER_A2', 'DMPAPER_A3',
        +            'DMPAPER_A3_EXTRA', 'DMPAPER_A3_EXTRA_TRANSVERSE',
        +            'DMPAPER_A3_ROTATED', 'DMPAPER_A3_TRANSVERSE', 'DMPAPER_A4',
        +            'DMPAPER_A4_EXTRA', 'DMPAPER_A4_PLUS', 'DMPAPER_A4_ROTATED',
        +            'DMPAPER_A4_TRANSVERSE', 'DMPAPER_A4SMALL', 'DMPAPER_A5',
        +            'DMPAPER_A5_EXTRA', 'DMPAPER_A5_ROTATED', 'DMPAPER_A5_TRANSVERSE',
        +            'DMPAPER_A6', 'DMPAPER_A6_ROTATED', 'DMPAPER_B_PLUS', 'DMPAPER_B4',
        +            'DMPAPER_B4_JIS_ROTATED', 'DMPAPER_B5', 'DMPAPER_B5_EXTRA',
        +            'DMPAPER_B5_JIS_ROTATED', 'DMPAPER_B5_TRANSVERSE',
        +            'DMPAPER_B6_JIS', 'DMPAPER_B6_JIS_ROTATED', 'DMPAPER_CSHEET',
        +            'DMPAPER_DBL_JAPANESE_POSTCARD',
        +            'DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED', 'DMPAPER_DSHEET',
        +            'DMPAPER_ENV_10', 'DMPAPER_ENV_11', 'DMPAPER_ENV_12',
        +            'DMPAPER_ENV_14', 'DMPAPER_ENV_9', 'DMPAPER_ENV_B4',
        +            'DMPAPER_ENV_B5', 'DMPAPER_ENV_B6', 'DMPAPER_ENV_C3',
        +            'DMPAPER_ENV_C4', 'DMPAPER_ENV_C5', 'DMPAPER_ENV_C6',
        +            'DMPAPER_ENV_C65', 'DMPAPER_ENV_DL', 'DMPAPER_ENV_INVITE',
        +            'DMPAPER_ENV_ITALY', 'DMPAPER_ENV_MONARCH', 'DMPAPER_ENV_PERSONAL',
        +            'DMPAPER_ESHEET', 'DMPAPER_EXECUTIVE',
        +            'DMPAPER_FANFOLD_LGL_GERMAN', 'DMPAPER_FANFOLD_STD_GERMAN',
        +            'DMPAPER_FANFOLD_US', 'DMPAPER_FIRST', 'DMPAPER_FOLIO',
        +            'DMPAPER_ISO_B4', 'DMPAPER_JAPANESE_POSTCARD',
        +            'DMPAPER_JAPANESE_POSTCARD_ROTATED', 'DMPAPER_JENV_CHOU3',
        +            'DMPAPER_JENV_CHOU3_ROTATED', 'DMPAPER_JENV_CHOU4',
        +            'DMPAPER_JENV_CHOU4_ROTATED', 'DMPAPER_JENV_KAKU2',
        +            'DMPAPER_JENV_KAKU2_ROTATED', 'DMPAPER_JENV_KAKU3',
        +            'DMPAPER_JENV_KAKU3_ROTATED', 'DMPAPER_JENV_YOU4',
        +            'DMPAPER_JENV_YOU4_ROTATED', 'DMPAPER_LEDGER', 'DMPAPER_LEGAL',
        +            'DMPAPER_LEGAL_EXTRA', 'DMPAPER_LETTER', 'DMPAPER_LETTER_EXTRA',
        +            'DMPAPER_LETTER_EXTRA_TRANSVERSE', 'DMPAPER_LETTER_PLUS',
        +            'DMPAPER_LETTER_ROTATED', 'DMPAPER_LETTER_TRANSVERSE',
        +            'DMPAPER_LETTERSMALL', 'DMPAPER_NOTE', 'DMPAPER_P16K',
        +            'DMPAPER_P16K_ROTATED', 'DMPAPER_P32K', 'DMPAPER_P32K_ROTATED',
        +            'DMPAPER_P32KBIG', 'DMPAPER_P32KBIG_ROTATED', 'DMPAPER_PENV_1',
        +            'DMPAPER_PENV_1_ROTATED', 'DMPAPER_PENV_10',
        +            'DMPAPER_PENV_10_ROTATED', 'DMPAPER_PENV_2',
        +            'DMPAPER_PENV_2_ROTATED', 'DMPAPER_PENV_3',
        +            'DMPAPER_PENV_3_ROTATED', 'DMPAPER_PENV_4',
        +            'DMPAPER_PENV_4_ROTATED', 'DMPAPER_PENV_5',
        +            'DMPAPER_PENV_5_ROTATED', 'DMPAPER_PENV_6',
        +            'DMPAPER_PENV_6_ROTATED', 'DMPAPER_PENV_7',
        +            'DMPAPER_PENV_7_ROTATED', 'DMPAPER_PENV_8',
        +            'DMPAPER_PENV_8_ROTATED', 'DMPAPER_PENV_9',
        +            'DMPAPER_PENV_9_ROTATED', 'DMPAPER_QUARTO', 'DMPAPER_RESERVED_48',
        +            'DMPAPER_RESERVED_49', 'DMPAPER_STATEMENT', 'DMPAPER_TABLOID',
        +            'DMPAPER_TABLOID_EXTRA', 'DMPAPER_USER', 'ERR_BAD_WINDOW',
        +            'ERR_BAD_WINDOW_NUM', 'ERR_CANT_ACCESS_FILE',
        +            'ERR_CANT_INITIATE_LINK', 'ERR_CMD_NOT_SUPPORTED',
        +            'ERR_FCN_ARG_RANGE', 'ERR_FCN_INVALID_FMT',
        +            'ERR_FCN_OBJ_FETCH_FAILED', 'ERR_FILEMGR_NOTOPEN',
        +            'ERR_FP_MATH_LIB_DOMAIN', 'ERR_FP_MATH_LIB_RANGE',
        +            'ERR_INVALID_CHANNEL', 'ERR_INVALID_READ_CONTROL',
        +            'ERR_INVALID_TRIG_CONTROL', 'ERR_NO_FIELD',
        +            'ERR_NO_RESPONSE_FROM_APP', 'ERR_NULL_SELECTION',
        +            'ERR_PROCESS_FAILED_IN_APP', 'ERR_TABLE_NOT_FOUND',
        +            'ERR_WANT_MAPPER_WIN', 'FALSE', 'FILE_ATTR_FILESIZE',
        +            'FILE_ATTR_MODE', 'FILTER_ALL_DIRECTIONS_1',
        +            'FILTER_ALL_DIRECTIONS_2', 'FILTER_DIAGONALLY',
        +            'FILTER_HORIZONTALLY', 'FILTER_VERTICALLY',
        +            'FILTER_VERTICALLY_AND_HORIZONTALLY', 'FOLDER_APPDATA',
        +            'FOLDER_COMMON_APPDATA', 'FOLDER_COMMON_DOCS',
        +            'FOLDER_LOCAL_APPDATA', 'FOLDER_MI_APPDATA',
        +            'FOLDER_MI_COMMON_APPDATA', 'FOLDER_MI_LOCAL_APPDATA',
        +            'FOLDER_MI_PREFERENCE', 'FOLDER_MYDOCS', 'FOLDER_MYPICS',
        +            'FONT_BACKCOLOR', 'FONT_FORECOLOR', 'FONT_NAME', 'FONT_POINTSIZE',
        +            'FONT_STYLE', 'FRAME_INFO_BORDER_PEN', 'FRAME_INFO_COLUMN',
        +            'FRAME_INFO_HEIGHT', 'FRAME_INFO_LABEL', 'FRAME_INFO_MAP_LAYER_ID',
        +            'FRAME_INFO_NUM_STYLES', 'FRAME_INFO_POS_X', 'FRAME_INFO_POS_Y',
        +            'FRAME_INFO_REFRESHABLE', 'FRAME_INFO_SUBTITLE',
        +            'FRAME_INFO_SUBTITLE_FONT', 'FRAME_INFO_TITLE',
        +            'FRAME_INFO_TITLE_FONT', 'FRAME_INFO_TYPE', 'FRAME_INFO_VISIBLE',
        +            'FRAME_INFO_WIDTH', 'FRAME_TYPE_STYLE', 'FRAME_TYPE_THEME',
        +            'GEO_CONTROL_POINT_X', 'GEO_CONTROL_POINT_Y', 'GEOCODE_BATCH_SIZE',
        +            'GEOCODE_COUNT_GEOCODED', 'GEOCODE_COUNT_NOTGEOCODED',
        +            'GEOCODE_COUNTRY_SUBDIVISION', 'GEOCODE_COUNTRY_SUBDIVISION2',
        +            'GEOCODE_DICTIONARY', 'GEOCODE_FALLBACK_GEOGRAPHIC',
        +            'GEOCODE_FALLBACK_POSTAL', 'GEOCODE_MAX_BATCH_SIZE',
        +            'GEOCODE_MIXED_CASE', 'GEOCODE_MUNICIPALITY',
        +            'GEOCODE_MUNICIPALITY2', 'GEOCODE_OFFSET_CENTER',
        +            'GEOCODE_OFFSET_CENTER_UNITS', 'GEOCODE_OFFSET_END',
        +            'GEOCODE_OFFSET_END_UNITS', 'GEOCODE_PASSTHROUGH',
        +            'GEOCODE_POSTAL_CODE', 'GEOCODE_RESULT_MARK_MULTIPLE',
        +            'GEOCODE_STREET_NAME', 'GEOCODE_STREET_NUMBER',
        +            'GEOCODE_UNABLE_TO_CONVERT_DATA', 'GREEN',
        +            'GRID_TAB_INFO_HAS_HILLSHADE', 'GRID_TAB_INFO_MAX_VALUE',
        +            'GRID_TAB_INFO_MIN_VALUE', 'HOTLINK_INFO_ENABLED',
        +            'HOTLINK_INFO_EXPR', 'HOTLINK_INFO_MODE', 'HOTLINK_INFO_RELATIVE',
        +            'HOTLINK_MODE_BOTH', 'HOTLINK_MODE_LABEL', 'HOTLINK_MODE_OBJ',
        +            'IMAGE_CLASS_BILEVEL', 'IMAGE_CLASS_GREYSCALE',
        +            'IMAGE_CLASS_PALETTE', 'IMAGE_CLASS_RGB', 'IMAGE_TYPE_GRID',
        +            'IMAGE_TYPE_RASTER', 'INCL_ALL', 'INCL_COMMON', 'INCL_CROSSINGS',
        +            'ISOGRAM_AMBIENT_SPEED_DIST_UNIT',
        +            'ISOGRAM_AMBIENT_SPEED_TIME_UNIT', 'ISOGRAM_BANDING',
        +            'ISOGRAM_BATCH_SIZE', 'ISOGRAM_DEFAULT_AMBIENT_SPEED',
        +            'ISOGRAM_MAJOR_POLYGON_ONLY', 'ISOGRAM_MAJOR_ROADS_ONLY',
        +            'ISOGRAM_MAX_BANDS', 'ISOGRAM_MAX_BATCH_SIZE',
        +            'ISOGRAM_MAX_DISTANCE', 'ISOGRAM_MAX_DISTANCE_UNITS',
        +            'ISOGRAM_MAX_OFFROAD_DIST', 'ISOGRAM_MAX_OFFROAD_DIST_UNITS',
        +            'ISOGRAM_MAX_TIME', 'ISOGRAM_MAX_TIME_UNITS',
        +            'ISOGRAM_POINTS_ONLY', 'ISOGRAM_PROPAGATION_FACTOR',
        +            'ISOGRAM_RECORDS_INSERTED', 'ISOGRAM_RECORDS_NOTINSERTED',
        +            'ISOGRAM_RETURN_HOLES', 'ISOGRAM_SIMPLIFICATION_FACTOR',
        +            'LABEL_INFO_ANCHORX', 'LABEL_INFO_ANCHORY', 'LABEL_INFO_DRAWN',
        +            'LABEL_INFO_EDIT', 'LABEL_INFO_EDIT_ANCHOR',
        +            'LABEL_INFO_EDIT_ANGLE', 'LABEL_INFO_EDIT_FONT',
        +            'LABEL_INFO_EDIT_OFFSET', 'LABEL_INFO_EDIT_PEN',
        +            'LABEL_INFO_EDIT_POSITION', 'LABEL_INFO_EDIT_TEXT',
        +            'LABEL_INFO_EDIT_TEXTARROW', 'LABEL_INFO_EDIT_TEXTLINE',
        +            'LABEL_INFO_EDIT_VISIBILITY', 'LABEL_INFO_OBJECT',
        +            'LABEL_INFO_OFFSET', 'LABEL_INFO_ORIENTATION',
        +            'LABEL_INFO_POSITION', 'LABEL_INFO_ROWID', 'LABEL_INFO_SELECT',
        +            'LABEL_INFO_TABLE', 'LAYER_INFO_ARROWS', 'LAYER_INFO_CENTROIDS',
        +            'LAYER_INFO_COSMETIC', 'LAYER_INFO_DISPLAY',
        +            'LAYER_INFO_DISPLAY_GLOBAL', 'LAYER_INFO_DISPLAY_GRAPHIC',
        +            'LAYER_INFO_DISPLAY_OFF', 'LAYER_INFO_DISPLAY_VALUE',
        +            'LAYER_INFO_EDITABLE', 'LAYER_INFO_HOTLINK_COUNT',
        +            'LAYER_INFO_HOTLINK_EXPR', 'LAYER_INFO_HOTLINK_MODE',
        +            'LAYER_INFO_HOTLINK_RELATIVE', 'LAYER_INFO_LABEL_ALPHA',
        +            'LAYER_INFO_LABEL_ORIENT_CURVED',
        +            'LAYER_INFO_LABEL_ORIENT_HORIZONTAL',
        +            'LAYER_INFO_LABEL_ORIENT_PARALLEL', 'LAYER_INFO_LAYER_ALPHA',
        +            'LAYER_INFO_LAYER_TRANSLUCENCY', 'LAYER_INFO_LBL_AUTODISPLAY',
        +            'LAYER_INFO_LBL_CURFONT', 'LAYER_INFO_LBL_DUPLICATES',
        +            'LAYER_INFO_LBL_EXPR', 'LAYER_INFO_LBL_FONT', 'LAYER_INFO_LBL_LT',
        +            'LAYER_INFO_LBL_LT_ARROW', 'LAYER_INFO_LBL_LT_NONE',
        +            'LAYER_INFO_LBL_LT_SIMPLE', 'LAYER_INFO_LBL_MAX',
        +            'LAYER_INFO_LBL_OFFSET', 'LAYER_INFO_LBL_ORIENTATION',
        +            'LAYER_INFO_LBL_OVERLAP', 'LAYER_INFO_LBL_PARALLEL',
        +            'LAYER_INFO_LBL_PARTIALSEGS', 'LAYER_INFO_LBL_POS',
        +            'LAYER_INFO_LBL_POS_BC', 'LAYER_INFO_LBL_POS_BL',
        +            'LAYER_INFO_LBL_POS_BR', 'LAYER_INFO_LBL_POS_CC',
        +            'LAYER_INFO_LBL_POS_CL', 'LAYER_INFO_LBL_POS_CR',
        +            'LAYER_INFO_LBL_POS_TC', 'LAYER_INFO_LBL_POS_TL',
        +            'LAYER_INFO_LBL_POS_TR', 'LAYER_INFO_LBL_VIS_OFF',
        +            'LAYER_INFO_LBL_VIS_ON', 'LAYER_INFO_LBL_VIS_ZOOM',
        +            'LAYER_INFO_LBL_VISIBILITY', 'LAYER_INFO_LBL_ZOOM_MAX',
        +            'LAYER_INFO_LBL_ZOOM_MIN', 'LAYER_INFO_NAME', 'LAYER_INFO_NODES',
        +            'LAYER_INFO_OVR_BRUSH', 'LAYER_INFO_OVR_FONT',
        +            'LAYER_INFO_OVR_LINE', 'LAYER_INFO_OVR_PEN',
        +            'LAYER_INFO_OVR_SYMBOL', 'LAYER_INFO_PATH',
        +            'LAYER_INFO_SELECTABLE', 'LAYER_INFO_TYPE',
        +            'LAYER_INFO_TYPE_COSMETIC', 'LAYER_INFO_TYPE_GRID',
        +            'LAYER_INFO_TYPE_IMAGE', 'LAYER_INFO_TYPE_NORMAL',
        +            'LAYER_INFO_TYPE_THEMATIC', 'LAYER_INFO_TYPE_WMS',
        +            'LAYER_INFO_ZOOM_LAYERED', 'LAYER_INFO_ZOOM_MAX',
        +            'LAYER_INFO_ZOOM_MIN', 'LEGEND_INFO_MAP_ID',
        +            'LEGEND_INFO_NUM_FRAMES', 'LEGEND_INFO_ORIENTATION',
        +            'LEGEND_INFO_STYLE_SAMPLE_SIZE', 'LEGEND_STYLE_INFO_FONT',
        +            'LEGEND_STYLE_INFO_OBJ', 'LEGEND_STYLE_INFO_TEXT',
        +            'LOCATE_ABB_FILE', 'LOCATE_CLR_FILE', 'LOCATE_CUSTSYMB_DIR',
        +            'LOCATE_DEF_WOR', 'LOCATE_FNT_FILE', 'LOCATE_GEOCODE_SERVERLIST',
        +            'LOCATE_GRAPH_DIR', 'LOCATE_LAYOUT_TEMPLATE_DIR',
        +            'LOCATE_MNU_FILE', 'LOCATE_PEN_FILE', 'LOCATE_PREF_FILE',
        +            'LOCATE_PRJ_FILE', 'LOCATE_ROUTING_SERVERLIST',
        +            'LOCATE_THMTMPLT_DIR', 'LOCATE_WFS_SERVERLIST',
        +            'LOCATE_WMS_SERVERLIST', 'M_3DMAP_CLONE_VIEW',
        +            'M_3DMAP_PREVIOUS_VIEW', 'M_3DMAP_PROPERTIES',
        +            'M_3DMAP_REFRESH_GRID_TEXTURE', 'M_3DMAP_VIEW_ENTIRE_GRID',
        +            'M_3DMAP_VIEWPOINT_CONTROL', 'M_3DMAP_WIREFRAME',
        +            'M_ANALYZE_CALC_STATISTICS', 'M_ANALYZE_CUSTOMIZE_LEGEND',
        +            'M_ANALYZE_FIND', 'M_ANALYZE_FIND_SELECTION',
        +            'M_ANALYZE_INVERTSELECT', 'M_ANALYZE_SELECT',
        +            'M_ANALYZE_SELECTALL', 'M_ANALYZE_SHADE', 'M_ANALYZE_SQLQUERY',
        +            'M_ANALYZE_UNSELECT', 'M_BROWSE_EDIT', 'M_BROWSE_GRID',
        +            'M_BROWSE_NEW_RECORD', 'M_BROWSE_OPTIONS', 'M_BROWSE_PICK_FIELDS',
        +            'M_DBMS_OPEN_ODBC', 'M_EDIT_CLEAR', 'M_EDIT_CLEAROBJ',
        +            'M_EDIT_COPY', 'M_EDIT_CUT', 'M_EDIT_GETINFO', 'M_EDIT_NEW_ROW',
        +            'M_EDIT_PASTE', 'M_EDIT_PREFERENCES', 'M_EDIT_PREFERENCES_COUNTRY',
        +            'M_EDIT_PREFERENCES_FILE', 'M_EDIT_PREFERENCES_IMAGE_PROC',
        +            'M_EDIT_PREFERENCES_LAYOUT', 'M_EDIT_PREFERENCES_LEGEND',
        +            'M_EDIT_PREFERENCES_MAP', 'M_EDIT_PREFERENCES_OUTPUT',
        +            'M_EDIT_PREFERENCES_PATH', 'M_EDIT_PREFERENCES_PRINTER',
        +            'M_EDIT_PREFERENCES_STYLES', 'M_EDIT_PREFERENCES_SYSTEM',
        +            'M_EDIT_PREFERENCES_WEBSERVICES', 'M_EDIT_RESHAPE', 'M_EDIT_UNDO',
        +            'M_FILE_ABOUT', 'M_FILE_ADD_WORKSPACE', 'M_FILE_CLOSE',
        +            'M_FILE_CLOSE_ALL', 'M_FILE_CLOSE_ODBC', 'M_FILE_EXIT',
        +            'M_FILE_HELP', 'M_FILE_NEW', 'M_FILE_OPEN', 'M_FILE_OPEN_ODBC',
        +            'M_FILE_OPEN_ODBC_CONN', 'M_FILE_OPEN_UNIVERSAL_DATA',
        +            'M_FILE_OPEN_WFS', 'M_FILE_OPEN_WMS', 'M_FILE_PAGE_SETUP',
        +            'M_FILE_PRINT', 'M_FILE_PRINT_SETUP', 'M_FILE_REVERT',
        +            'M_FILE_RUN', 'M_FILE_SAVE', 'M_FILE_SAVE_COPY_AS',
        +            'M_FILE_SAVE_QUERY', 'M_FILE_SAVE_WINDOW_AS',
        +            'M_FILE_SAVE_WORKSPACE', 'M_FORMAT_CUSTOM_COLORS',
        +            'M_FORMAT_PICK_FILL', 'M_FORMAT_PICK_FONT', 'M_FORMAT_PICK_LINE',
        +            'M_FORMAT_PICK_SYMBOL', 'M_GRAPH_3D_VIEWING_ANGLE',
        +            'M_GRAPH_FORMATING', 'M_GRAPH_GENERAL_OPTIONS',
        +            'M_GRAPH_GRID_SCALES', 'M_GRAPH_LABEL_AXIS',
        +            'M_GRAPH_SAVE_AS_TEMPLATE', 'M_GRAPH_SERIES',
        +            'M_GRAPH_SERIES_OPTIONS', 'M_GRAPH_TITLES', 'M_GRAPH_TYPE',
        +            'M_GRAPH_VALUE_AXIS', 'M_HELP_ABOUT', 'M_HELP_CHECK_FOR_UPDATE',
        +            'M_HELP_CONNECT_MIFORUM', 'M_HELP_CONTENTS',
        +            'M_HELP_CONTEXTSENSITIVE', 'M_HELP_HELPMODE',
        +            'M_HELP_MAPINFO_3DGRAPH_HELP', 'M_HELP_MAPINFO_CONNECT_SERVICES',
        +            'M_HELP_MAPINFO_WWW', 'M_HELP_MAPINFO_WWW_STORE',
        +            'M_HELP_MAPINFO_WWW_TUTORIAL', 'M_HELP_SEARCH',
        +            'M_HELP_TECHSUPPORT', 'M_HELP_USE_HELP', 'M_LAYOUT_ACTUAL',
        +            'M_LAYOUT_ALIGN', 'M_LAYOUT_AUTOSCROLL_ONOFF',
        +            'M_LAYOUT_BRING2FRONT', 'M_LAYOUT_CHANGE_VIEW',
        +            'M_LAYOUT_DISPLAYOPTIONS', 'M_LAYOUT_DROPSHADOWS',
        +            'M_LAYOUT_ENTIRE', 'M_LAYOUT_LAYOUT_SIZE', 'M_LAYOUT_PREVIOUS',
        +            'M_LAYOUT_SEND2BACK', 'M_LEGEND_ADD_FRAMES', 'M_LEGEND_DELETE',
        +            'M_LEGEND_PROPERTIES', 'M_LEGEND_REFRESH', 'M_MAP_AUTOLABEL',
        +            'M_MAP_AUTOSCROLL_ONOFF', 'M_MAP_CHANGE_VIEW',
        +            'M_MAP_CLEAR_COSMETIC', 'M_MAP_CLEAR_CUSTOM_LABELS',
        +            'M_MAP_CLIP_REGION_ONOFF', 'M_MAP_CLONE_MAPPER',
        +            'M_MAP_CREATE_3DMAP', 'M_MAP_CREATE_LEGEND',
        +            'M_MAP_CREATE_PRISMMAP', 'M_MAP_ENTIRE_LAYER',
        +            'M_MAP_LAYER_CONTROL', 'M_MAP_MODIFY_THEMATIC', 'M_MAP_OPTIONS',
        +            'M_MAP_PREVIOUS', 'M_MAP_PROJECTION', 'M_MAP_SAVE_COSMETIC',
        +            'M_MAP_SET_CLIP_REGION', 'M_MAP_SETUNITS', 'M_MAP_SETUPDIGITIZER',
        +            'M_MAP_THEMATIC', 'M_MAPBASIC_CLEAR', 'M_MAPBASIC_SAVECONTENTS',
        +            'M_OBJECTS_BREAKPOLY', 'M_OBJECTS_BUFFER',
        +            'M_OBJECTS_CHECK_REGIONS', 'M_OBJECTS_CLEAN',
        +            'M_OBJECTS_CLEAR_TARGET', 'M_OBJECTS_COMBINE',
        +            'M_OBJECTS_CONVEX_HULL', 'M_OBJECTS_CVT_PGON',
        +            'M_OBJECTS_CVT_PLINE', 'M_OBJECTS_DISAGG',
        +            'M_OBJECTS_DRIVE_REGION', 'M_OBJECTS_ENCLOSE', 'M_OBJECTS_ERASE',
        +            'M_OBJECTS_ERASE_OUT', 'M_OBJECTS_MERGE', 'M_OBJECTS_OFFSET',
        +            'M_OBJECTS_OVERLAY', 'M_OBJECTS_POLYLINE_SPLIT',
        +            'M_OBJECTS_POLYLINE_SPLIT_AT_NODE', 'M_OBJECTS_RESHAPE',
        +            'M_OBJECTS_ROTATE', 'M_OBJECTS_SET_TARGET', 'M_OBJECTS_SMOOTH',
        +            'M_OBJECTS_SNAP', 'M_OBJECTS_SPLIT', 'M_OBJECTS_UNSMOOTH',
        +            'M_OBJECTS_VORONOI', 'M_ORACLE_CREATE_WORKSPACE',
        +            'M_ORACLE_DELETE_WORKSPACE', 'M_ORACLE_MERGE_PARENT',
        +            'M_ORACLE_REFRESH_FROM_PARENT', 'M_ORACLE_VERSION_ENABLE_OFF',
        +            'M_ORACLE_VERSION_ENABLE_ON', 'M_QUERY_CALC_STATISTICS',
        +            'M_QUERY_FIND', 'M_QUERY_FIND_ADDRESS', 'M_QUERY_FIND_SELECTION',
        +            'M_QUERY_FIND_SELECTION_CURRENT_MAP', 'M_QUERY_INVERTSELECT',
        +            'M_QUERY_SELECT', 'M_QUERY_SELECTALL', 'M_QUERY_SQLQUERY',
        +            'M_QUERY_UNSELECT', 'M_REDISTRICT_ADD', 'M_REDISTRICT_ASSIGN',
        +            'M_REDISTRICT_DELETE', 'M_REDISTRICT_OPTIONS',
        +            'M_REDISTRICT_TARGET', 'M_SENDMAIL_CURRENTWINDOW',
        +            'M_SENDMAIL_WORKSPACE', 'M_TABLE_APPEND', 'M_TABLE_BUFFER',
        +            'M_TABLE_CHANGESYMBOL', 'M_TABLE_CREATE_POINTS', 'M_TABLE_DELETE',
        +            'M_TABLE_DRIVE_REGION', 'M_TABLE_EXPORT', 'M_TABLE_GEOCODE',
        +            'M_TABLE_IMPORT', 'M_TABLE_MAKEMAPPABLE',
        +            'M_TABLE_MERGE_USING_COLUMN', 'M_TABLE_MODIFY_STRUCTURE',
        +            'M_TABLE_PACK', 'M_TABLE_RASTER_REG', 'M_TABLE_RASTER_STYLE',
        +            'M_TABLE_REFRESH', 'M_TABLE_RENAME',
        +            'M_TABLE_UNIVERSAL_DATA_REFRESH', 'M_TABLE_UNLINK',
        +            'M_TABLE_UPDATE_COLUMN', 'M_TABLE_VORONOI', 'M_TABLE_WEB_GEOCODE',
        +            'M_TABLE_WFS_PROPS', 'M_TABLE_WFS_REFRESH', 'M_TABLE_WMS_PROPS',
        +            'M_TOOLS_ADD_NODE', 'M_TOOLS_ARC', 'M_TOOLS_CRYSTAL_REPORTS_NEW',
        +            'M_TOOLS_CRYSTAL_REPORTS_OPEN', 'M_TOOLS_DRAGWINDOW',
        +            'M_TOOLS_ELLIPSE', 'M_TOOLS_EXPAND', 'M_TOOLS_FRAME',
        +            'M_TOOLS_HOTLINK', 'M_TOOLS_LABELER', 'M_TOOLS_LINE',
        +            'M_TOOLS_MAPBASIC', 'M_TOOLS_PNT_QUERY', 'M_TOOLS_POINT',
        +            'M_TOOLS_POLYGON', 'M_TOOLS_POLYLINE', 'M_TOOLS_RASTER_REG',
        +            'M_TOOLS_RECENTER', 'M_TOOLS_RECTANGLE', 'M_TOOLS_ROUNDEDRECT',
        +            'M_TOOLS_RULER', 'M_TOOLS_RUN', 'M_TOOLS_SEARCH_BOUNDARY',
        +            'M_TOOLS_SEARCH_POLYGON', 'M_TOOLS_SEARCH_RADIUS',
        +            'M_TOOLS_SEARCH_RECT', 'M_TOOLS_SELECTOR', 'M_TOOLS_SHRINK',
        +            'M_TOOLS_TEXT', 'M_TOOLS_TOOL_MANAGER', 'M_WINDOW_ARRANGEICONS',
        +            'M_WINDOW_BROWSE', 'M_WINDOW_BUTTONPAD', 'M_WINDOW_CASCADE',
        +            'M_WINDOW_EXPORT_WINDOW', 'M_WINDOW_FIRST', 'M_WINDOW_GRAPH',
        +            'M_WINDOW_LAYOUT', 'M_WINDOW_LEGEND', 'M_WINDOW_MAP',
        +            'M_WINDOW_MAPBASIC', 'M_WINDOW_MORE', 'M_WINDOW_REDISTRICT',
        +            'M_WINDOW_REDRAW', 'M_WINDOW_STATISTICS', 'M_WINDOW_STATUSBAR',
        +            'M_WINDOW_TILE', 'M_WINDOW_TOOL_PALETTE', 'MAGENTA',
        +            'MAP3D_INFO_BACKGROUND', 'MAP3D_INFO_CAMERA_CLIP_FAR',
        +            'MAP3D_INFO_CAMERA_CLIP_NEAR', 'MAP3D_INFO_CAMERA_FOCAL_X',
        +            'MAP3D_INFO_CAMERA_FOCAL_Y', 'MAP3D_INFO_CAMERA_FOCAL_Z',
        +            'MAP3D_INFO_CAMERA_VPN_1', 'MAP3D_INFO_CAMERA_VPN_2',
        +            'MAP3D_INFO_CAMERA_VPN_3', 'MAP3D_INFO_CAMERA_VU_1',
        +            'MAP3D_INFO_CAMERA_VU_2', 'MAP3D_INFO_CAMERA_VU_3',
        +            'MAP3D_INFO_CAMERA_X', 'MAP3D_INFO_CAMERA_Y',
        +            'MAP3D_INFO_CAMERA_Z', 'MAP3D_INFO_LIGHT_COLOR',
        +            'MAP3D_INFO_LIGHT_X', 'MAP3D_INFO_LIGHT_Y', 'MAP3D_INFO_LIGHT_Z',
        +            'MAP3D_INFO_RESOLUTION_X', 'MAP3D_INFO_RESOLUTION_Y',
        +            'MAP3D_INFO_SCALE', 'MAP3D_INFO_UNITS', 'MAPPER_INFO_AREAUNITS',
        +            'MAPPER_INFO_CENTERX', 'MAPPER_INFO_CENTERY',
        +            'MAPPER_INFO_CLIP_DISPLAY_ALL', 'MAPPER_INFO_CLIP_DISPLAY_POLYOBJ',
        +            'MAPPER_INFO_CLIP_OVERLAY', 'MAPPER_INFO_CLIP_REGION',
        +            'MAPPER_INFO_CLIP_TYPE', 'MAPPER_INFO_COORDSYS_CLAUSE',
        +            'MAPPER_INFO_COORDSYS_CLAUSE_WITH_BOUNDS',
        +            'MAPPER_INFO_COORDSYS_NAME', 'MAPPER_INFO_DISPLAY',
        +            'MAPPER_INFO_DISPLAY_DECIMAL', 'MAPPER_INFO_DISPLAY_DEGMINSEC',
        +            'MAPPER_INFO_DISPLAY_DMS', 'MAPPER_INFO_DISPLAY_MGRS',
        +            'MAPPER_INFO_DISPLAY_POSITION', 'MAPPER_INFO_DISPLAY_SCALE',
        +            'MAPPER_INFO_DISPLAY_ZOOM', 'MAPPER_INFO_DIST_CALC_TYPE',
        +            'MAPPER_INFO_DIST_CARTESIAN', 'MAPPER_INFO_DIST_SPHERICAL',
        +            'MAPPER_INFO_DISTUNITS', 'MAPPER_INFO_EDIT_LAYER',
        +            'MAPPER_INFO_LAYERS', 'MAPPER_INFO_MAXX', 'MAPPER_INFO_MAXY',
        +            'MAPPER_INFO_MERGE_MAP', 'MAPPER_INFO_MINX', 'MAPPER_INFO_MINY',
        +            'MAPPER_INFO_MOVE_DUPLICATE_NODES', 'MAPPER_INFO_NUM_THEMATIC',
        +            'MAPPER_INFO_REPROJECTION', 'MAPPER_INFO_RESAMPLING',
        +            'MAPPER_INFO_SCALE', 'MAPPER_INFO_SCROLLBARS',
        +            'MAPPER_INFO_XYUNITS', 'MAPPER_INFO_ZOOM', 'MAX_STRING_LENGTH',
        +            'MENUITEM_INFO_ACCELERATOR', 'MENUITEM_INFO_CHECKABLE',
        +            'MENUITEM_INFO_CHECKED', 'MENUITEM_INFO_ENABLED',
        +            'MENUITEM_INFO_HANDLER', 'MENUITEM_INFO_HELPMSG',
        +            'MENUITEM_INFO_ID', 'MENUITEM_INFO_SHOWHIDEABLE',
        +            'MENUITEM_INFO_TEXT', 'MI_CURSOR_ARROW', 'MI_CURSOR_CHANGE_WIDTH',
        +            'MI_CURSOR_CROSSHAIR', 'MI_CURSOR_DRAG_OBJ',
        +            'MI_CURSOR_FINGER_LEFT', 'MI_CURSOR_FINGER_UP',
        +            'MI_CURSOR_GRABBER', 'MI_CURSOR_IBEAM', 'MI_CURSOR_IBEAM_CROSS',
        +            'MI_CURSOR_ZOOM_IN', 'MI_CURSOR_ZOOM_OUT', 'MI_ICON_ADD_NODE',
        +            'MI_ICON_ARC', 'MI_ICON_ARROW', 'MI_ICON_ARROW_1',
        +            'MI_ICON_ARROW_10', 'MI_ICON_ARROW_11', 'MI_ICON_ARROW_12',
        +            'MI_ICON_ARROW_13', 'MI_ICON_ARROW_14', 'MI_ICON_ARROW_15',
        +            'MI_ICON_ARROW_16', 'MI_ICON_ARROW_17', 'MI_ICON_ARROW_18',
        +            'MI_ICON_ARROW_19', 'MI_ICON_ARROW_2', 'MI_ICON_ARROW_20',
        +            'MI_ICON_ARROW_21', 'MI_ICON_ARROW_3', 'MI_ICON_ARROW_4',
        +            'MI_ICON_ARROW_5', 'MI_ICON_ARROW_6', 'MI_ICON_ARROW_7',
        +            'MI_ICON_ARROW_8', 'MI_ICON_ARROW_9', 'MI_ICON_CLIP_MODE',
        +            'MI_ICON_CLIP_REGION', 'MI_ICON_CLOSE_ALL',
        +            'MI_ICON_COMMUNICATION_1', 'MI_ICON_COMMUNICATION_10',
        +            'MI_ICON_COMMUNICATION_11', 'MI_ICON_COMMUNICATION_12',
        +            'MI_ICON_COMMUNICATION_2', 'MI_ICON_COMMUNICATION_3',
        +            'MI_ICON_COMMUNICATION_4', 'MI_ICON_COMMUNICATION_5',
        +            'MI_ICON_COMMUNICATION_6', 'MI_ICON_COMMUNICATION_7',
        +            'MI_ICON_COMMUNICATION_8', 'MI_ICON_COMMUNICATION_9',
        +            'MI_ICON_COMPASS_CIRCLE_TA', 'MI_ICON_COMPASS_CONTRACT',
        +            'MI_ICON_COMPASS_EXPAND', 'MI_ICON_COMPASS_POLY_TA',
        +            'MI_ICON_COMPASS_TAG', 'MI_ICON_COMPASS_UNTAG', 'MI_ICON_COPY',
        +            'MI_ICON_CROSSHAIR', 'MI_ICON_CUT', 'MI_ICON_DISTRICT_MANY',
        +            'MI_ICON_DISTRICT_SAME', 'MI_ICON_DRAG_HANDLE', 'MI_ICON_ELLIPSE',
        +            'MI_ICON_EMERGENCY_1', 'MI_ICON_EMERGENCY_10',
        +            'MI_ICON_EMERGENCY_11', 'MI_ICON_EMERGENCY_12',
        +            'MI_ICON_EMERGENCY_13', 'MI_ICON_EMERGENCY_14',
        +            'MI_ICON_EMERGENCY_15', 'MI_ICON_EMERGENCY_16',
        +            'MI_ICON_EMERGENCY_17', 'MI_ICON_EMERGENCY_18',
        +            'MI_ICON_EMERGENCY_2', 'MI_ICON_EMERGENCY_3',
        +            'MI_ICON_EMERGENCY_4', 'MI_ICON_EMERGENCY_5',
        +            'MI_ICON_EMERGENCY_6', 'MI_ICON_EMERGENCY_7',
        +            'MI_ICON_EMERGENCY_8', 'MI_ICON_EMERGENCY_9', 'MI_ICON_GRABBER',
        +            'MI_ICON_GRAPH_SELECT', 'MI_ICON_HELP', 'MI_ICON_HOT_LINK',
        +            'MI_ICON_INFO', 'MI_ICON_INVERTSELECT', 'MI_ICON_LABEL',
        +            'MI_ICON_LAYERS', 'MI_ICON_LEGEND', 'MI_ICON_LETTERS_A',
        +            'MI_ICON_LETTERS_B', 'MI_ICON_LETTERS_C', 'MI_ICON_LETTERS_D',
        +            'MI_ICON_LETTERS_E', 'MI_ICON_LETTERS_F', 'MI_ICON_LETTERS_G',
        +            'MI_ICON_LETTERS_H', 'MI_ICON_LETTERS_I', 'MI_ICON_LETTERS_J',
        +            'MI_ICON_LETTERS_K', 'MI_ICON_LETTERS_L', 'MI_ICON_LETTERS_M',
        +            'MI_ICON_LETTERS_N', 'MI_ICON_LETTERS_O', 'MI_ICON_LETTERS_P',
        +            'MI_ICON_LETTERS_Q', 'MI_ICON_LETTERS_R', 'MI_ICON_LETTERS_S',
        +            'MI_ICON_LETTERS_T', 'MI_ICON_LETTERS_U', 'MI_ICON_LETTERS_V',
        +            'MI_ICON_LETTERS_W', 'MI_ICON_LETTERS_X', 'MI_ICON_LETTERS_Y',
        +            'MI_ICON_LETTERS_Z', 'MI_ICON_LINE', 'MI_ICON_LINE_STYLE',
        +            'MI_ICON_MAPSYMB_1', 'MI_ICON_MAPSYMB_10', 'MI_ICON_MAPSYMB_11',
        +            'MI_ICON_MAPSYMB_12', 'MI_ICON_MAPSYMB_13', 'MI_ICON_MAPSYMB_14',
        +            'MI_ICON_MAPSYMB_15', 'MI_ICON_MAPSYMB_16', 'MI_ICON_MAPSYMB_17',
        +            'MI_ICON_MAPSYMB_18', 'MI_ICON_MAPSYMB_19', 'MI_ICON_MAPSYMB_2',
        +            'MI_ICON_MAPSYMB_20', 'MI_ICON_MAPSYMB_21', 'MI_ICON_MAPSYMB_22',
        +            'MI_ICON_MAPSYMB_23', 'MI_ICON_MAPSYMB_24', 'MI_ICON_MAPSYMB_25',
        +            'MI_ICON_MAPSYMB_26', 'MI_ICON_MAPSYMB_3', 'MI_ICON_MAPSYMB_4',
        +            'MI_ICON_MAPSYMB_5', 'MI_ICON_MAPSYMB_6', 'MI_ICON_MAPSYMB_7',
        +            'MI_ICON_MAPSYMB_8', 'MI_ICON_MAPSYMB_9', 'MI_ICON_MARITIME_1',
        +            'MI_ICON_MARITIME_10', 'MI_ICON_MARITIME_2', 'MI_ICON_MARITIME_3',
        +            'MI_ICON_MARITIME_4', 'MI_ICON_MARITIME_5', 'MI_ICON_MARITIME_6',
        +            'MI_ICON_MARITIME_7', 'MI_ICON_MARITIME_8', 'MI_ICON_MARITIME_9',
        +            'MI_ICON_MB_1', 'MI_ICON_MB_10', 'MI_ICON_MB_11', 'MI_ICON_MB_12',
        +            'MI_ICON_MB_13', 'MI_ICON_MB_14', 'MI_ICON_MB_2', 'MI_ICON_MB_3',
        +            'MI_ICON_MB_4', 'MI_ICON_MB_5', 'MI_ICON_MB_6', 'MI_ICON_MB_7',
        +            'MI_ICON_MB_8', 'MI_ICON_MB_9', 'MI_ICON_MISC_1',
        +            'MI_ICON_MISC_10', 'MI_ICON_MISC_11', 'MI_ICON_MISC_12',
        +            'MI_ICON_MISC_13', 'MI_ICON_MISC_14', 'MI_ICON_MISC_15',
        +            'MI_ICON_MISC_16', 'MI_ICON_MISC_17', 'MI_ICON_MISC_18',
        +            'MI_ICON_MISC_19', 'MI_ICON_MISC_2', 'MI_ICON_MISC_20',
        +            'MI_ICON_MISC_21', 'MI_ICON_MISC_22', 'MI_ICON_MISC_23',
        +            'MI_ICON_MISC_24', 'MI_ICON_MISC_25', 'MI_ICON_MISC_26',
        +            'MI_ICON_MISC_27', 'MI_ICON_MISC_28', 'MI_ICON_MISC_29',
        +            'MI_ICON_MISC_3', 'MI_ICON_MISC_30', 'MI_ICON_MISC_31',
        +            'MI_ICON_MISC_4', 'MI_ICON_MISC_5', 'MI_ICON_MISC_6',
        +            'MI_ICON_MISC_7', 'MI_ICON_MISC_8', 'MI_ICON_MISC_9',
        +            'MI_ICON_NEW_DOC', 'MI_ICON_NUMBERS_1', 'MI_ICON_NUMBERS_10',
        +            'MI_ICON_NUMBERS_11', 'MI_ICON_NUMBERS_12', 'MI_ICON_NUMBERS_13',
        +            'MI_ICON_NUMBERS_14', 'MI_ICON_NUMBERS_15', 'MI_ICON_NUMBERS_16',
        +            'MI_ICON_NUMBERS_17', 'MI_ICON_NUMBERS_18', 'MI_ICON_NUMBERS_19',
        +            'MI_ICON_NUMBERS_2', 'MI_ICON_NUMBERS_20', 'MI_ICON_NUMBERS_21',
        +            'MI_ICON_NUMBERS_22', 'MI_ICON_NUMBERS_23', 'MI_ICON_NUMBERS_24',
        +            'MI_ICON_NUMBERS_25', 'MI_ICON_NUMBERS_26', 'MI_ICON_NUMBERS_27',
        +            'MI_ICON_NUMBERS_28', 'MI_ICON_NUMBERS_29', 'MI_ICON_NUMBERS_3',
        +            'MI_ICON_NUMBERS_30', 'MI_ICON_NUMBERS_31', 'MI_ICON_NUMBERS_32',
        +            'MI_ICON_NUMBERS_4', 'MI_ICON_NUMBERS_5', 'MI_ICON_NUMBERS_6',
        +            'MI_ICON_NUMBERS_7', 'MI_ICON_NUMBERS_8', 'MI_ICON_NUMBERS_9',
        +            'MI_ICON_ODBC_DISCONNECT', 'MI_ICON_ODBC_MAPPABLE',
        +            'MI_ICON_ODBC_OPEN', 'MI_ICON_ODBC_REFRESH', 'MI_ICON_ODBC_SYMBOL',
        +            'MI_ICON_ODBC_UNLINK', 'MI_ICON_OPEN_FILE', 'MI_ICON_OPEN_WOR',
        +            'MI_ICON_OPENWFS', 'MI_ICON_OPENWMS', 'MI_ICON_PASTE',
        +            'MI_ICON_POLYGON', 'MI_ICON_POLYLINE', 'MI_ICON_PRINT',
        +            'MI_ICON_REALESTATE_1', 'MI_ICON_REALESTATE_10',
        +            'MI_ICON_REALESTATE_11', 'MI_ICON_REALESTATE_12',
        +            'MI_ICON_REALESTATE_13', 'MI_ICON_REALESTATE_14',
        +            'MI_ICON_REALESTATE_15', 'MI_ICON_REALESTATE_16',
        +            'MI_ICON_REALESTATE_17', 'MI_ICON_REALESTATE_18',
        +            'MI_ICON_REALESTATE_19', 'MI_ICON_REALESTATE_2',
        +            'MI_ICON_REALESTATE_20', 'MI_ICON_REALESTATE_21',
        +            'MI_ICON_REALESTATE_22', 'MI_ICON_REALESTATE_23',
        +            'MI_ICON_REALESTATE_3', 'MI_ICON_REALESTATE_4',
        +            'MI_ICON_REALESTATE_5', 'MI_ICON_REALESTATE_6',
        +            'MI_ICON_REALESTATE_7', 'MI_ICON_REALESTATE_8',
        +            'MI_ICON_REALESTATE_9', 'MI_ICON_RECT', 'MI_ICON_REGION_STYLE',
        +            'MI_ICON_RESHAPE', 'MI_ICON_ROUND_RECT', 'MI_ICON_RULER',
        +            'MI_ICON_RUN', 'MI_ICON_SAVE_FILE', 'MI_ICON_SAVE_WIN',
        +            'MI_ICON_SAVE_WOR', 'MI_ICON_SEARCH_BDY', 'MI_ICON_SEARCH_POLYGON',
        +            'MI_ICON_SEARCH_RADIUS', 'MI_ICON_SEARCH_RECT', 'MI_ICON_SIGNS_1',
        +            'MI_ICON_SIGNS_10', 'MI_ICON_SIGNS_11', 'MI_ICON_SIGNS_12',
        +            'MI_ICON_SIGNS_13', 'MI_ICON_SIGNS_14', 'MI_ICON_SIGNS_15',
        +            'MI_ICON_SIGNS_16', 'MI_ICON_SIGNS_17', 'MI_ICON_SIGNS_18',
        +            'MI_ICON_SIGNS_19', 'MI_ICON_SIGNS_2', 'MI_ICON_SIGNS_3',
        +            'MI_ICON_SIGNS_4', 'MI_ICON_SIGNS_5', 'MI_ICON_SIGNS_6',
        +            'MI_ICON_SIGNS_7', 'MI_ICON_SIGNS_8', 'MI_ICON_SIGNS_9',
        +            'MI_ICON_STATISTICS', 'MI_ICON_SYMBOL', 'MI_ICON_SYMBOL_STYLE',
        +            'MI_ICON_TEXT', 'MI_ICON_TEXT_STYLE', 'MI_ICON_TRANSPORT_1',
        +            'MI_ICON_TRANSPORT_10', 'MI_ICON_TRANSPORT_11',
        +            'MI_ICON_TRANSPORT_12', 'MI_ICON_TRANSPORT_13',
        +            'MI_ICON_TRANSPORT_14', 'MI_ICON_TRANSPORT_15',
        +            'MI_ICON_TRANSPORT_16', 'MI_ICON_TRANSPORT_17',
        +            'MI_ICON_TRANSPORT_18', 'MI_ICON_TRANSPORT_19',
        +            'MI_ICON_TRANSPORT_2', 'MI_ICON_TRANSPORT_20',
        +            'MI_ICON_TRANSPORT_21', 'MI_ICON_TRANSPORT_22',
        +            'MI_ICON_TRANSPORT_23', 'MI_ICON_TRANSPORT_24',
        +            'MI_ICON_TRANSPORT_25', 'MI_ICON_TRANSPORT_26',
        +            'MI_ICON_TRANSPORT_27', 'MI_ICON_TRANSPORT_3',
        +            'MI_ICON_TRANSPORT_4', 'MI_ICON_TRANSPORT_5',
        +            'MI_ICON_TRANSPORT_6', 'MI_ICON_TRANSPORT_7',
        +            'MI_ICON_TRANSPORT_8', 'MI_ICON_TRANSPORT_9', 'MI_ICON_UNDO',
        +            'MI_ICON_UNSELECT_ALL', 'MI_ICON_WINDOW_FRAME', 'MI_ICON_WRENCH',
        +            'MI_ICON_ZOOM_IN', 'MI_ICON_ZOOM_OUT', 'MI_ICON_ZOOM_QUESTION',
        +            'MI_ICONS_MAPS_1', 'MI_ICONS_MAPS_10', 'MI_ICONS_MAPS_11',
        +            'MI_ICONS_MAPS_12', 'MI_ICONS_MAPS_13', 'MI_ICONS_MAPS_14',
        +            'MI_ICONS_MAPS_15', 'MI_ICONS_MAPS_2', 'MI_ICONS_MAPS_3',
        +            'MI_ICONS_MAPS_4', 'MI_ICONS_MAPS_5', 'MI_ICONS_MAPS_6',
        +            'MI_ICONS_MAPS_7', 'MI_ICONS_MAPS_8', 'MI_ICONS_MAPS_9',
        +            'MIPLATFORM_HP', 'MIPLATFORM_MAC68K', 'MIPLATFORM_POWERMAC',
        +            'MIPLATFORM_SPECIAL', 'MIPLATFORM_SUN', 'MIPLATFORM_WIN16',
        +            'MIPLATFORM_WIN32', 'MODE_APPEND', 'MODE_BINARY', 'MODE_INPUT',
        +            'MODE_OUTPUT', 'MODE_RANDOM', 'OBJ_ARC', 'OBJ_ELLIPSE',
        +            'OBJ_FRAME', 'OBJ_GEO_ARCBEGANGLE', 'OBJ_GEO_ARCENDANGLE',
        +            'OBJ_GEO_CENTROID', 'OBJ_GEO_LINEBEGX', 'OBJ_GEO_LINEBEGY',
        +            'OBJ_GEO_LINEENDX', 'OBJ_GEO_LINEENDY', 'OBJ_GEO_MAXX',
        +            'OBJ_GEO_MAXY', 'OBJ_GEO_MINX', 'OBJ_GEO_MINY', 'OBJ_GEO_POINTM',
        +            'OBJ_GEO_POINTX', 'OBJ_GEO_POINTY', 'OBJ_GEO_POINTZ',
        +            'OBJ_GEO_ROUNDRADIUS', 'OBJ_GEO_TEXTANGLE', 'OBJ_GEO_TEXTLINEX',
        +            'OBJ_GEO_TEXTLINEY', 'OBJ_INFO_BRUSH', 'OBJ_INFO_FILLFRAME',
        +            'OBJ_INFO_FRAMETITLE', 'OBJ_INFO_FRAMEWIN', 'OBJ_INFO_HAS_M',
        +            'OBJ_INFO_HAS_Z', 'OBJ_INFO_MPOINT', 'OBJ_INFO_NONEMPTY',
        +            'OBJ_INFO_NPNTS', 'OBJ_INFO_NPOLYGONS', 'OBJ_INFO_PEN',
        +            'OBJ_INFO_PLINE', 'OBJ_INFO_REGION', 'OBJ_INFO_SMOOTH',
        +            'OBJ_INFO_SYMBOL', 'OBJ_INFO_TEXTARROW', 'OBJ_INFO_TEXTFONT',
        +            'OBJ_INFO_TEXTJUSTIFY', 'OBJ_INFO_TEXTSPACING',
        +            'OBJ_INFO_TEXTSTRING', 'OBJ_INFO_TYPE', 'OBJ_INFO_Z_UNIT',
        +            'OBJ_INFO_Z_UNIT_SET', 'OBJ_LINE', 'OBJ_PLINE', 'OBJ_POINT',
        +            'OBJ_RECT', 'OBJ_REGION', 'OBJ_ROUNDRECT', 'OBJ_TEXT',
        +            'OBJ_TYPE_ARC', 'OBJ_TYPE_COLLECTION', 'OBJ_TYPE_ELLIPSE',
        +            'OBJ_TYPE_FRAME', 'OBJ_TYPE_LINE', 'OBJ_TYPE_MPOINT',
        +            'OBJ_TYPE_PLINE', 'OBJ_TYPE_POINT', 'OBJ_TYPE_RECT',
        +            'OBJ_TYPE_REGION', 'OBJ_TYPE_ROUNDRECT', 'OBJ_TYPE_TEXT',
        +            'ORIENTATION_CUSTOM', 'ORIENTATION_LANDSCAPE',
        +            'ORIENTATION_PORTRAIT', 'PEN_COLOR', 'PEN_INDEX',
        +            'PEN_INTERLEAVED', 'PEN_PATTERN', 'PEN_WIDTH', 'PLATFORM_MAC',
        +            'PLATFORM_MOTIF', 'PLATFORM_SPECIAL', 'PLATFORM_WIN',
        +            'PLATFORM_X11', 'PLATFORM_XOL', 'PRISMMAP_INFO_BACKGROUND',
        +            'PRISMMAP_INFO_CAMERA_CLIP_FAR', 'PRISMMAP_INFO_CAMERA_CLIP_NEAR',
        +            'PRISMMAP_INFO_CAMERA_FOCAL_X', 'PRISMMAP_INFO_CAMERA_FOCAL_Y',
        +            'PRISMMAP_INFO_CAMERA_FOCAL_Z', 'PRISMMAP_INFO_CAMERA_VPN_1',
        +            'PRISMMAP_INFO_CAMERA_VPN_2', 'PRISMMAP_INFO_CAMERA_VPN_3',
        +            'PRISMMAP_INFO_CAMERA_VU_1', 'PRISMMAP_INFO_CAMERA_VU_2',
        +            'PRISMMAP_INFO_CAMERA_VU_3', 'PRISMMAP_INFO_CAMERA_X',
        +            'PRISMMAP_INFO_CAMERA_Y', 'PRISMMAP_INFO_CAMERA_Z',
        +            'PRISMMAP_INFO_INFOTIP_EXPR', 'PRISMMAP_INFO_LIGHT_COLOR',
        +            'PRISMMAP_INFO_LIGHT_X', 'PRISMMAP_INFO_LIGHT_Y',
        +            'PRISMMAP_INFO_LIGHT_Z', 'PRISMMAP_INFO_SCALE', 'RAD_2_DEG',
        +            'RASTER_CONTROL_POINT_X', 'RASTER_CONTROL_POINT_Y',
        +            'RASTER_TAB_INFO_ALPHA', 'RASTER_TAB_INFO_BITS_PER_PIXEL',
        +            'RASTER_TAB_INFO_BRIGHTNESS', 'RASTER_TAB_INFO_CONTRAST',
        +            'RASTER_TAB_INFO_DISPLAY_TRANSPARENT', 'RASTER_TAB_INFO_GREYSCALE',
        +            'RASTER_TAB_INFO_HEIGHT', 'RASTER_TAB_INFO_IMAGE_CLASS',
        +            'RASTER_TAB_INFO_IMAGE_NAME', 'RASTER_TAB_INFO_IMAGE_TYPE',
        +            'RASTER_TAB_INFO_NUM_CONTROL_POINTS',
        +            'RASTER_TAB_INFO_TRANSPARENT_COLOR', 'RASTER_TAB_INFO_WIDTH',
        +            'RED', 'REGION_INFO_IS_CLOCKWISE', 'SEARCH_INFO_ROW',
        +            'SEARCH_INFO_TABLE', 'SECONDS_PER_DAY', 'SEL_INFO_NROWS',
        +            'SEL_INFO_SELNAME', 'SEL_INFO_TABLENAME',
        +            'SESSION_INFO_AREA_UNITS', 'SESSION_INFO_COORDSYS_CLAUSE',
        +            'SESSION_INFO_DISTANCE_UNITS', 'SESSION_INFO_PAPER_UNITS',
        +            'SRV_COL_INFO_ALIAS', 'SRV_COL_INFO_NAME',
        +            'SRV_COL_INFO_PRECISION', 'SRV_COL_INFO_SCALE',
        +            'SRV_COL_INFO_STATUS', 'SRV_COL_INFO_TYPE', 'SRV_COL_INFO_VALUE',
        +            'SRV_COL_INFO_WIDTH', 'SRV_COL_TYPE_BIN_STRING',
        +            'SRV_COL_TYPE_CHAR', 'SRV_COL_TYPE_DATE', 'SRV_COL_TYPE_DECIMAL',
        +            'SRV_COL_TYPE_FIXED_LEN_STRING', 'SRV_COL_TYPE_FLOAT',
        +            'SRV_COL_TYPE_INTEGER', 'SRV_COL_TYPE_LOGICAL',
        +            'SRV_COL_TYPE_NONE', 'SRV_COL_TYPE_SMALLINT',
        +            'SRV_CONNECT_INFO_DB_NAME', 'SRV_CONNECT_INFO_DRIVER_NAME',
        +            'SRV_CONNECT_INFO_DS_NAME', 'SRV_CONNECT_INFO_QUOTE_CHAR',
        +            'SRV_CONNECT_INFO_SQL_USER_ID', 'SRV_DRV_DATA_SOURCE',
        +            'SRV_DRV_INFO_NAME', 'SRV_DRV_INFO_NAME_LIST', 'SRV_ERROR',
        +            'SRV_FETCH_FIRST', 'SRV_FETCH_LAST', 'SRV_FETCH_NEXT',
        +            'SRV_FETCH_PREV', 'SRV_INVALID_HANDLE', 'SRV_NEED_DATA',
        +            'SRV_NO_MORE_DATA', 'SRV_NULL_DATA', 'SRV_SUCCESS',
        +            'SRV_SUCCESS_WITH_INFO', 'SRV_TRUNCATED_DATA',
        +            'SRV_WM_HIST_NO_OVERWRITE', 'SRV_WM_HIST_NONE',
        +            'SRV_WM_HIST_OVERWRITE', 'STR_EQ', 'STR_GT', 'STR_LT',
        +            'STYLE_SAMPLE_SIZE_LARGE', 'STYLE_SAMPLE_SIZE_SMALL',
        +            'SWITCHING_INTO_MAPINFO', 'SWITCHING_OUT_OF_MAPINFO',
        +            'SYMBOL_ANGLE', 'SYMBOL_CODE', 'SYMBOL_COLOR',
        +            'SYMBOL_CUSTOM_NAME', 'SYMBOL_CUSTOM_STYLE', 'SYMBOL_FONT_NAME',
        +            'SYMBOL_FONT_STYLE', 'SYMBOL_KIND', 'SYMBOL_KIND_CUSTOM',
        +            'SYMBOL_KIND_FONT', 'SYMBOL_KIND_VECTOR', 'SYMBOL_POINTSIZE',
        +            'SYS_INFO_APPIDISPATCH', 'SYS_INFO_APPLICATIONWND',
        +            'SYS_INFO_APPVERSION', 'SYS_INFO_CHARSET',
        +            'SYS_INFO_COPYPROTECTED', 'SYS_INFO_DATE_FORMAT',
        +            'SYS_INFO_DDESTATUS', 'SYS_INFO_DIG_INSTALLED',
        +            'SYS_INFO_DIG_MODE', 'SYS_INFO_MAPINFOWND',
        +            'SYS_INFO_MDICLIENTWND', 'SYS_INFO_MIBUILD_NUMBER',
        +            'SYS_INFO_MIPLATFORM', 'SYS_INFO_MIVERSION',
        +            'SYS_INFO_NUMBER_FORMAT', 'SYS_INFO_PLATFORM',
        +            'SYS_INFO_PRODUCTLEVEL', 'SYS_INFO_RUNTIME',
        +            'TAB_GEO_CONTROL_POINT_X', 'TAB_GEO_CONTROL_POINT_Y',
        +            'TAB_INFO_BROWSER_LIST', 'TAB_INFO_COORDSYS_CLAUSE',
        +            'TAB_INFO_COORDSYS_CLAUSE_WITHOUT_BOUNDS',
        +            'TAB_INFO_COORDSYS_MAXX', 'TAB_INFO_COORDSYS_MAXY',
        +            'TAB_INFO_COORDSYS_MINX', 'TAB_INFO_COORDSYS_MINY',
        +            'TAB_INFO_COORDSYS_NAME', 'TAB_INFO_EDITED', 'TAB_INFO_FASTEDIT',
        +            'TAB_INFO_MAPPABLE', 'TAB_INFO_MAPPABLE_TABLE', 'TAB_INFO_MAXX',
        +            'TAB_INFO_MAXY', 'TAB_INFO_MINX', 'TAB_INFO_MINY', 'TAB_INFO_NAME',
        +            'TAB_INFO_NCOLS', 'TAB_INFO_NREFS', 'TAB_INFO_NROWS',
        +            'TAB_INFO_NUM', 'TAB_INFO_READONLY', 'TAB_INFO_SEAMLESS',
        +            'TAB_INFO_SUPPORT_MZ', 'TAB_INFO_TABFILE', 'TAB_INFO_TEMP',
        +            'TAB_INFO_THEME_METADATA', 'TAB_INFO_TYPE', 'TAB_INFO_UNDO',
        +            'TAB_INFO_USERBROWSE', 'TAB_INFO_USERCLOSE',
        +            'TAB_INFO_USERDISPLAYMAP', 'TAB_INFO_USEREDITABLE',
        +            'TAB_INFO_USERMAP', 'TAB_INFO_USERREMOVEMAP', 'TAB_INFO_Z_UNIT',
        +            'TAB_INFO_Z_UNIT_SET', 'TAB_TYPE_BASE', 'TAB_TYPE_FME',
        +            'TAB_TYPE_IMAGE', 'TAB_TYPE_LINKED', 'TAB_TYPE_RESULT',
        +            'TAB_TYPE_VIEW', 'TAB_TYPE_WFS', 'TAB_TYPE_WMS', 'TRUE', 'WHITE',
        +            'WIN_3DMAP', 'WIN_BROWSER', 'WIN_BUTTONPAD', 'WIN_CART_LEGEND',
        +            'WIN_GRAPH', 'WIN_HELP', 'WIN_INFO', 'WIN_INFO_AUTOSCROLL',
        +            'WIN_INFO_CLONEWINDOW', 'WIN_INFO_ENHANCED_RENDERING',
        +            'WIN_INFO_EXPORT_ANTIALIASING', 'WIN_INFO_EXPORT_BORDER',
        +            'WIN_INFO_EXPORT_DITHER', 'WIN_INFO_EXPORT_FILTER',
        +            'WIN_INFO_EXPORT_MASKSIZE', 'WIN_INFO_EXPORT_THRESHOLD',
        +            'WIN_INFO_EXPORT_TRANSPRASTER', 'WIN_INFO_EXPORT_TRANSPVECTOR',
        +            'WIN_INFO_EXPORT_TRUECOLOR', 'WIN_INFO_HEIGHT',
        +            'WIN_INFO_LEGENDS_MAP', 'WIN_INFO_NAME', 'WIN_INFO_OPEN',
        +            'WIN_INFO_PRINTER_BORDER', 'WIN_INFO_PRINTER_BOTTOMMARGIN',
        +            'WIN_INFO_PRINTER_COPIES', 'WIN_INFO_PRINTER_DITHER',
        +            'WIN_INFO_PRINTER_LEFTMARGIN', 'WIN_INFO_PRINTER_METHOD',
        +            'WIN_INFO_PRINTER_NAME', 'WIN_INFO_PRINTER_ORIENT',
        +            'WIN_INFO_PRINTER_PAPERSIZE', 'WIN_INFO_PRINTER_RIGHTMARGIN',
        +            'WIN_INFO_PRINTER_SCALE_PATTERNS', 'WIN_INFO_PRINTER_TOPMARGIN',
        +            'WIN_INFO_PRINTER_TRANSPRASTER', 'WIN_INFO_PRINTER_TRANSPVECTOR',
        +            'WIN_INFO_PRINTER_TRUECOLOR', 'WIN_INFO_SMARTPAN',
        +            'WIN_INFO_SMOOTH_IMAGE', 'WIN_INFO_SMOOTH_TEXT',
        +            'WIN_INFO_SMOOTH_VECTOR', 'WIN_INFO_SNAPMODE',
        +            'WIN_INFO_SNAPTHRESHOLD', 'WIN_INFO_STATE',
        +            'WIN_INFO_SYSMENUCLOSE', 'WIN_INFO_TABLE', 'WIN_INFO_TOPMOST',
        +            'WIN_INFO_TYPE', 'WIN_INFO_WIDTH', 'WIN_INFO_WINDOWID',
        +            'WIN_INFO_WND', 'WIN_INFO_WORKSPACE', 'WIN_INFO_X', 'WIN_INFO_Y',
        +            'WIN_LAYOUT', 'WIN_LEGEND', 'WIN_MAPBASIC', 'WIN_MAPINFO',
        +            'WIN_MAPPER', 'WIN_MESSAGE', 'WIN_PENPICKER',
        +            'WIN_PRINTER_LANDSCAPE', 'WIN_PRINTER_PORTRAIT', 'WIN_RULER',
        +            'WIN_STATE_MAXIMIZED', 'WIN_STATE_MINIMIZED', 'WIN_STATE_NORMAL',
        +            'WIN_STATISTICS', 'WIN_STYLE_CHILD', 'WIN_STYLE_POPUP',
        +            'WIN_STYLE_POPUP_FULLCAPTION', 'WIN_STYLE_STANDARD',
        +            'WIN_SYMBOLPICKER', 'WIN_TOOLBAR', 'WIN_TOOLPICKER', 'YELLOW'
        +            ),
        +        5 => array(
        +            'Abbrs', 'Above', 'Access', 'Active', 'Address', 'Advanced',
        +            'Affine', 'Align', 'Alpha', 'alpha_value', 'Always', 'Angle',
        +            'Animate', 'Antialiasing', 'Append', 'Apply', 'ApplyUpdates',
        +            'Arrow', 'Ascending', 'ASCII', 'At', 'AttributeData', 'Auto',
        +            'Autoflip', 'Autokey', 'Automatic', 'Autoscroll', 'Axis',
        +            'Background', 'Banding', 'Batch', 'Behind', 'Below', 'Bend',
        +            'Binary', 'Blocks', 'Border', 'BorderPen', 'Bottom', 'Bounds',
        +            'ByteOrder', 'ByVal', 'Calling', 'Camera', 'Candidates',
        +            'Cartesian', 'Cell', 'Center', 'Change', 'Char', 'Circle',
        +            'Clipping', 'CloseMatchesOnly', 'ClosestAddr', 'Color', 'Columns',
        +            'Contents', 'ControlPoints', 'Copies', 'Copyright', 'Counter',
        +            'Country', 'CountrySecondarySubdivision', 'CountrySubdivision',
        +            'Cross', 'CubicConvolution', 'Cull', 'Cursor', 'Custom', 'Data',
        +            'DBF', 'DDE', 'Decimal', 'DecimalPlaces', 'DefaultAmbientSpeed',
        +            'DefaultPropagationFactor', 'DeformatNumber', 'Delimiter',
        +            'Density', 'DenyWrite', 'Descending', 'Destroy', 'Device',
        +            'Dictionary', 'DInfo', 'Disable', 'DiscardUpdates', 'Display',
        +            'Dither', 'DrawMode', 'DropKey', 'Droplines', 'Duplicates',
        +            'Dynamic', 'Earth', 'East', 'EditLayerPopup', 'Elevation', 'Else',
        +            'ElseIf', 'Emf', 'Enable', 'Envinsa', 'ErrorDiffusion', 'Extents',
        +            'Fallback', 'FastEdit', 'FillFrame', 'Filter', 'First', 'Fit',
        +            'Fixed', 'FocalPoint', 'Footnote', 'Force', 'FromMapCatalog',
        +            'Front', 'Gap', 'Geographic', 'Geography', 'Graduated', 'Graphic',
        +            'Gutter', 'Half', 'Halftone', 'Handles', 'Height', 'Help',
        +            'HelpMsg', 'Hide', 'Hierarchical', 'HIGHLOW', 'History', 'Icon',
        +            'ID', 'Ignore', 'Image', 'Inflect', 'Inset', 'Inside',
        +            'Interactive', 'Internal', 'Interpolate', 'IntersectingStreet',
        +            'Justify', 'Key', 'Label', 'Labels', 'Landscape', 'Large', 'Last',
        +            'Layer', 'Left', 'Lib', 'Light', 'LinePen', 'Lines', 'Linestyle',
        +            'Longitude', 'LOWHIGH', 'Major', 'MajorPolygonOnly',
        +            'MajorRoadsOnly', 'MapBounds', 'MapMarker', 'MapString', 'Margins',
        +            'MarkMultiple', 'MaskSize', 'Match', 'MaxOffRoadDistance',
        +            'Message', 'MICODE', 'Minor', 'MixedCase', 'Mode', 'ModifierKeys',
        +            'Modify', 'Multiple', 'MultiPolygonRgns', 'Municipality',
        +            'MunicipalitySubdivision', 'Name', 'NATIVE', 'NearestNeighbor',
        +            'NoCollision', 'Node', 'Nodes', 'NoIndex', 'None', 'Nonearth',
        +            'NoRefresh', 'Normalized', 'North', 'Number', 'ObjectType', 'ODBC',
        +            'Off', 'OK', 'OLE', 'On', 'Options', 'Orientation', 'OtherBdy',
        +            'Output', 'Outside', 'Overlapped', 'Overwrite', 'Pagebreaks',
        +            'Pan', 'Papersize', 'Parent', 'PassThrough', 'Password',
        +            'Patterns', 'Per', 'Percent', 'Percentage', 'Permanent',
        +            'PersistentCache', 'Pie', 'Pitch', 'Placename', 'PointsOnly',
        +            'PolyObj', 'Portrait', 'Position', 'PostalCode', 'Prefer',
        +            'Preferences', 'Prev', 'Printer', 'Projection', 'PushButton',
        +            'Quantile', 'Query', 'Random', 'Range', 'Raster', 'Read',
        +            'ReadOnly', 'Rec', 'Redraw', 'Refine', 'Regionstyle', 'RemoveData',
        +            'Replace', 'Reprojection', 'Resampling', 'Restore', 'ResultCode',
        +            'ReturnHoles', 'Right', 'Roll', 'ROP', 'Rotated', 'Row', 'Ruler',
        +            'Scale', 'ScrollBars', 'Seamless', 'SecondaryPostalCode',
        +            'SelfInt', 'Separator', 'Series', 'Service', 'SetKey',
        +            'SetTraverse', 'Shades', 'Show', 'Simple', 'SimplificationFactor',
        +            'Size', 'Small', 'Smart', 'Smooth', 'South', 'Spacing',
        +            'SPATIALWARE', 'Spherical', 'Square', 'Stacked', 'Step', 'Store',
        +            'Street', 'StreetName', 'StreetNumber', 'StyleType', 'Subtitle',
        +            'SysMenuClose', 'Thin', 'Tick', 'Title', 'TitleAxisY',
        +            'TitleGroup', 'Titles', 'TitleSeries', 'ToggleButton', 'Tolerance',
        +            'ToolbarPosition', 'ToolButton', 'Toolkit', 'Top', 'Translucency',
        +            'translucency_percent', 'Transparency', 'Transparent', 'Traverse',
        +            'TrueColor', 'Uncheck', 'Undo', 'Union', 'Unit', 'Until', 'URL',
        +            'Use', 'User', 'UserBrowse', 'UserClose', 'UserDisplayMap',
        +            'UserEdit', 'UserMap', 'UserRemoveMap', 'Value', 'Variable',
        +            'Vary', 'Vector', 'Versioned', 'View', 'ViewDisplayPopup',
        +            'VisibleOnly', 'VMDefault', 'VMGrid', 'VMRaster', 'Voronoi',
        +            'Warnings', 'Wedge', 'West', 'Width', 'With', 'XY', 'XYINDEX',
        +            'Yaw', 'Zoom'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +            //Numeric/String Operators + Comparison Operators
        +            '(', ')', '[', ']', '+', '-', '*', '/', '\\', '^', '&',
        +            '=', '<', '>'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000ff;',        //Statements + Clauses + Data Types + Logical Operators, Geographical Operators + SQL
        +            2 => 'color: #2391af;',        //Special Procedures
        +            3 => 'color: #2391af;',        //Functions
        +            4 => 'color: #c635cb;',        //Constants
        +            5 => 'color: #0000ff;'         //Extended keywords (case sensitive)
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008000;',
        +            'MULTI' => 'color: #008000;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #a31515;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #12198b;',            //Table Attributes
        +            1 => 'color: #2391af;'             //Data Types
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +            //Table Attribute
        +            0 => "[\\.]{1}[a-zA-Z0-9_]+",
        +            //Data Type
        +            1 => "(?xi) \\s+ as \\s+ (Alias|Brush|Date|Float|Font|Integer|Logical|Object|Pen|SmallInt|String|Symbol)"
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +);
        diff --git a/includes/geshi/mathematica.php b/includes/geshi/mathematica.php
        new file mode 100644
        index 0000000..ad56925
        --- /dev/null
        +++ b/includes/geshi/mathematica.php
        @@ -0,0 +1,5035 @@
        + 'Mathematica',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(
        +        '(*' => '*)',
        +    ),
        +    'COMMENT_REGEXP' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array(
        +        1 => '"',
        +    ),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(),
        +    'HARDQUOTE' => array(),
        +    'HARDESCAPE' => array(),
        +    'HARDCHAR' => '',
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX |
        +        GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'AASTriangle',
        +            'APIFunction',
        +            'ARCHProcess',
        +            'ARIMAProcess',
        +            'ARMAProcess',
        +            'ARProcess',
        +            'ASATriangle',
        +            'AbelianGroup',
        +            'Abort',
        +            'AbortKernels',
        +            'AbortProtect',
        +            'AbortScheduledTask',
        +            'Above',
        +            'Abs',
        +            'AbsArg',
        +            'AbsoluteCorrelation',
        +            'AbsoluteCorrelationFunction',
        +            'AbsoluteCurrentValue',
        +            'AbsoluteDashing',
        +            'AbsoluteFileName',
        +            'AbsoluteOptions',
        +            'AbsolutePointSize',
        +            'AbsoluteThickness',
        +            'AbsoluteTime',
        +            'AbsoluteTiming',
        +            'AccountingForm',
        +            'Accumulate',
        +            'Accuracy',
        +            'AccuracyGoal',
        +            'ActionMenu',
        +            'Activate',
        +            'ActiveStyle',
        +            'AcyclicGraphQ',
        +            'AddTo',
        +            'AddUsers',
        +            'AdjacencyGraph',
        +            'AdjacencyList',
        +            'AdjacencyMatrix',
        +            'AdjustTimeSeriesForecast',
        +            'AdjustmentBox',
        +            'AdjustmentBoxOptions',
        +            'AdministrativeDivisionData',
        +            'AffineHalfSpace',
        +            'AffineSpace',
        +            'AffineStateSpaceModel',
        +            'AffineTransform',
        +            'After',
        +            'AirPressureData',
        +            'AirTemperatureData',
        +            'AircraftData',
        +            'AirportData',
        +            'AiryAi',
        +            'AiryAiPrime',
        +            'AiryAiZero',
        +            'AiryBi',
        +            'AiryBiPrime',
        +            'AiryBiZero',
        +            'AlgebraicIntegerQ',
        +            'AlgebraicNumber',
        +            'AlgebraicNumberDenominator',
        +            'AlgebraicNumberNorm',
        +            'AlgebraicNumberPolynomial',
        +            'AlgebraicNumberTrace',
        +            'AlgebraicUnitQ',
        +            'Algebraics',
        +            'Alignment',
        +            'AlignmentPoint',
        +            'All',
        +            'AllTrue',
        +            'AllowGroupClose',
        +            'AllowInlineCells',
        +            'AllowLooseGrammar',
        +            'AllowReverseGroupClose',
        +            'AllowedDimensions',
        +            'AlphaChannel',
        +            'Alphabet',
        +            'AlphabeticOrder',
        +            'AlphabeticSort',
        +            'AlternateImage',
        +            'AlternatingFactorial',
        +            'AlternatingGroup',
        +            'AlternativeHypothesis',
        +            'Alternatives',
        +            'AltitudeMethod',
        +            'AmbiguityFunction',
        +            'AmbiguityList',
        +            'AnatomyData',
        +            'AnatomyForm',
        +            'AnatomyPlot3D',
        +            'AnchoredSearch',
        +            'And',
        +            'AndersonDarlingTest',
        +            'AngerJ',
        +            'AngleBracket',
        +            'AnglePath',
        +            'AngleVector',
        +            'AngularGauge',
        +            'Animate',
        +            'AnimationDirection',
        +            'AnimationRate',
        +            'AnimationRepetitions',
        +            'AnimationRunTime',
        +            'AnimationRunning',
        +            'AnimationTimeIndex',
        +            'Animator',
        +            'Annotation',
        +            'Annuity',
        +            'AnnuityDue',
        +            'Annulus',
        +            'Anonymous',
        +            'Antialiasing',
        +            'AntihermitianMatrixQ',
        +            'Antisymmetric',
        +            'AntisymmetricMatrixQ',
        +            'AnyOrder',
        +            'AnySubset',
        +            'AnyTrue',
        +            'Apart',
        +            'ApartSquareFree',
        +            'Appearance',
        +            'AppearanceElements',
        +            'AppearanceRules',
        +            'AppellF1',
        +            'Append',
        +            'AppendTo',
        +            'Apply',
        +            'ArcCos',
        +            'ArcCosh',
        +            'ArcCot',
        +            'ArcCoth',
        +            'ArcCsc',
        +            'ArcCsch',
        +            'ArcCurvature',
        +            'ArcLength',
        +            'ArcSec',
        +            'ArcSech',
        +            'ArcSin',
        +            'ArcSinDistribution',
        +            'ArcSinh',
        +            'ArcTan',
        +            'ArcTanh',
        +            'Area',
        +            'Arg',
        +            'ArgMax',
        +            'ArgMin',
        +            'ArithmeticGeometricMean',
        +            'Array',
        +            'ArrayComponents',
        +            'ArrayDepth',
        +            'ArrayFilter',
        +            'ArrayFlatten',
        +            'ArrayMesh',
        +            'ArrayPad',
        +            'ArrayPlot',
        +            'ArrayQ',
        +            'ArrayResample',
        +            'ArrayReshape',
        +            'ArrayRules',
        +            'Arrays',
        +            'Arrow',
        +            'Arrowheads',
        +            'Ask',
        +            'AskAppend',
        +            'AskConfirm',
        +            'AskDisplay',
        +            'AskFunction',
        +            'AskTemplateDisplay',
        +            'AskedQ',
        +            'AskedValue',
        +            'AspectRatio',
        +            'Assert',
        +            'AssociateTo',
        +            'Association',
        +            'AssociationFormat',
        +            'AssociationMap',
        +            'AssociationQ',
        +            'AssociationThread',
        +            'AssumeDeterministic',
        +            'Assuming',
        +            'Assumptions',
        +            'AsymptoticOutputTracker',
        +            'Asynchronous',
        +            'AsynchronousTaskObject',
        +            'AsynchronousTasks',
        +            'AtomQ',
        +            'Attributes',
        +            'Audio',
        +            'AudioAmplify',
        +            'AudioBlockMap',
        +            'AudioChannelCombine',
        +            'AudioChannelMix',
        +            'AudioChannelSeparate',
        +            'AudioChannels',
        +            'AudioData',
        +            'AudioDelay',
        +            'AudioDelete',
        +            'AudioDevice',
        +            'AudioFade',
        +            'AudioFrequencyShift',
        +            'AudioGenerator',
        +            'AudioIntervals',
        +            'AudioJoin',
        +            'AudioLabel',
        +            'AudioLength',
        +            'AudioLocalMeasurements',
        +            'AudioMeasurements',
        +            'AudioNormalize',
        +            'AudioOverlay',
        +            'AudioPad',
        +            'AudioPan',
        +            'AudioPartition',
        +            'AudioPitchShift',
        +            'AudioPlot',
        +            'AudioQ',
        +            'AudioResample',
        +            'AudioReverb',
        +            'AudioSampleRate',
        +            'AudioSplit',
        +            'AudioTimeStretch',
        +            'AudioTrim',
        +            'AudioType',
        +            'AugmentedSymmetricPolynomial',
        +            'Authentication',
        +            'AutoAction',
        +            'AutoDelete',
        +            'AutoIndent',
        +            'AutoItalicWords',
        +            'AutoMultiplicationSymbol',
        +            'AutoRefreshed',
        +            'AutoRemove',
        +            'AutoScroll',
        +            'AutoSpacing',
        +            'AutoSubmitting',
        +            'Autocomplete',
        +            'AutocompletionFunction',
        +            'AutocorrelationTest',
        +            'Automatic',
        +            'AutorunSequencing',
        +            'Axes',
        +            'AxesEdge',
        +            'AxesLabel',
        +            'AxesOrigin',
        +            'AxesStyle',
        +            'Axis',
        +            'BSplineBasis',
        +            'BSplineCurve',
        +            'BSplineFunction',
        +            'BSplineSurface',
        +            'BabyMonsterGroupB',
        +            'Back',
        +            'Background',
        +            'Backslash',
        +            'Backward',
        +            'Ball',
        +            'Band',
        +            'BandpassFilter',
        +            'BandstopFilter',
        +            'BarChart',
        +            'BarChart3D',
        +            'BarLegend',
        +            'BarOrigin',
        +            'BarSpacing',
        +            'BarabasiAlbertGraphDistribution',
        +            'BarcodeImage',
        +            'BarcodeRecognize',
        +            'BaringhausHenzeTest',
        +            'BarlowProschanImportance',
        +            'BarnesG',
        +            'BartlettHannWindow',
        +            'BartlettWindow',
        +            'BaseForm',
        +            'BaseStyle',
        +            'Baseline',
        +            'BaselinePosition',
        +            'BatchNormalizationLayer',
        +            'BatchSize',
        +            'BatesDistribution',
        +            'BattleLemarieWavelet',
        +            'BayesianMaximization',
        +            'BayesianMaximizationObject',
        +            'BayesianMinimization',
        +            'BayesianMinimizationObject',
        +            'Because',
        +            'BeckmannDistribution',
        +            'Beep',
        +            'Before',
        +            'Begin',
        +            'BeginDialogPacket',
        +            'BeginPackage',
        +            'BellB',
        +            'BellY',
        +            'Below',
        +            'BenfordDistribution',
        +            'BeniniDistribution',
        +            'BenktanderGibratDistribution',
        +            'BenktanderWeibullDistribution',
        +            'BernoulliB',
        +            'BernoulliDistribution',
        +            'BernoulliGraphDistribution',
        +            'BernoulliProcess',
        +            'BernsteinBasis',
        +            'BesselFilterModel',
        +            'BesselI',
        +            'BesselJ',
        +            'BesselJZero',
        +            'BesselK',
        +            'BesselY',
        +            'BesselYZero',
        +            'Beta',
        +            'BetaBinomialDistribution',
        +            'BetaDistribution',
        +            'BetaNegativeBinomialDistribution',
        +            'BetaPrimeDistribution',
        +            'BetaRegularized',
        +            'Between',
        +            'BetweennessCentrality',
        +            'BezierCurve',
        +            'BezierFunction',
        +            'BilateralFilter',
        +            'BinCounts',
        +            'BinLists',
        +            'Binarize',
        +            'BinaryDistance',
        +            'BinaryFormat',
        +            'BinaryImageQ',
        +            'BinaryRead',
        +            'BinaryReadList',
        +            'BinaryWrite',
        +            'Binomial',
        +            'BinomialDistribution',
        +            'BinomialProcess',
        +            'BinormalDistribution',
        +            'BiorthogonalSplineWavelet',
        +            'BipartiteGraphQ',
        +            'BiquadraticFilterModel',
        +            'BirnbaumImportance',
        +            'BirnbaumSaundersDistribution',
        +            'BitAnd',
        +            'BitClear',
        +            'BitGet',
        +            'BitLength',
        +            'BitNot',
        +            'BitOr',
        +            'BitSet',
        +            'BitShiftLeft',
        +            'BitShiftRight',
        +            'BitXor',
        +            'Black',
        +            'BlackmanHarrisWindow',
        +            'BlackmanNuttallWindow',
        +            'BlackmanWindow',
        +            'Blank',
        +            'BlankNullSequence',
        +            'BlankSequence',
        +            'Blend',
        +            'Block',
        +            'BlockMap',
        +            'BlockRandom',
        +            'BlomqvistBeta',
        +            'BlomqvistBetaTest',
        +            'Blue',
        +            'Blur',
        +            'BodePlot',
        +            'BohmanWindow',
        +            'Bold',
        +            'Bookmarks',
        +            'Boole',
        +            'BooleanConsecutiveFunction',
        +            'BooleanConvert',
        +            'BooleanCountingFunction',
        +            'BooleanFunction',
        +            'BooleanGraph',
        +            'BooleanMaxterms',
        +            'BooleanMinimize',
        +            'BooleanMinterms',
        +            'BooleanQ',
        +            'BooleanRegion',
        +            'BooleanStrings',
        +            'BooleanTable',
        +            'BooleanVariables',
        +            'Booleans',
        +            'BorderDimensions',
        +            'BorelTannerDistribution',
        +            'Bottom',
        +            'BottomHatTransform',
        +            'BoundaryDiscretizeGraphics',
        +            'BoundaryDiscretizeRegion',
        +            'BoundaryMesh',
        +            'BoundaryMeshRegion',
        +            'BoundaryMeshRegionQ',
        +            'BoundaryStyle',
        +            'BoundedRegionQ',
        +            'BoundingRegion',
        +            'BoxData',
        +            'BoxMatrix',
        +            'BoxObject',
        +            'BoxRatios',
        +            'BoxStyle',
        +            'BoxWhiskerChart',
        +            'Boxed',
        +            'BracketingBar',
        +            'BrayCurtisDistance',
        +            'BreadthFirstScan',
        +            'Break',
        +            'BridgeData',
        +            'BroadcastStationData',
        +            'Brown',
        +            'BrownForsytheTest',
        +            'BrownianBridgeProcess',
        +            'BubbleChart',
        +            'BubbleChart3D',
        +            'BubbleScale',
        +            'BubbleSizes',
        +            'BuildingData',
        +            'BulletGauge',
        +            'BusinessDayQ',
        +            'ButterflyGraph',
        +            'ButterworthFilterModel',
        +            'Button',
        +            'ButtonBar',
        +            'ButtonBox',
        +            'ButtonBoxOptions',
        +            'ButtonData',
        +            'ButtonFunction',
        +            'ButtonMinHeight',
        +            'ButtonNotebook',
        +            'ButtonSource',
        +            'Byte',
        +            'ByteArray',
        +            'ByteArrayQ',
        +            'ByteCount',
        +            'ByteOrdering',
        +
        +            'C',
        +            'CDF',
        +            'CDFDeploy',
        +            'CDFInformation',
        +            'CDFWavelet',
        +            'CForm',
        +            'CMYKColor',
        +            'CachePersistence',
        +            'CalendarConvert',
        +            'CalendarData',
        +            'CalendarType',
        +            'CallPacket',
        +            'Callout',
        +            'CalloutMarker',
        +            'CalloutStyle',
        +            'CanberraDistance',
        +            'Cancel',
        +            'CancelButton',
        +            'CandlestickChart',
        +            'CanonicalGraph',
        +            'CanonicalName',
        +            'CanonicalWarpingCorrespondence',
        +            'CanonicalWarpingDistance',
        +            'CantorStaircase',
        +            'Cap',
        +            'CapForm',
        +            'CapitalDifferentialD',
        +            'Capitalize',
        +            'CapsuleShape',
        +            'CarlemanLinearize',
        +            'CarmichaelLambda',
        +            'CaseOrdering',
        +            'CaseSensitive',
        +            'Cases',
        +            'Cashflow',
        +            'Casoratian',
        +            'Catalan',
        +            'CatalanNumber',
        +            'Catch',
        +            'Catenate',
        +            'CatenateLayer',
        +            'CauchyDistribution',
        +            'CauchyWindow',
        +            'CayleyGraph',
        +            'Ceiling',
        +            'CelestialSystem',
        +            'Cell',
        +            'CellAutoOverwrite',
        +            'CellBaseline',
        +            'CellBracketOptions',
        +            'CellChangeTimes',
        +            'CellContext',
        +            'CellDingbat',
        +            'CellDynamicExpression',
        +            'CellEditDuplicate',
        +            'CellEpilog',
        +            'CellEvaluationDuplicate',
        +            'CellEvaluationFunction',
        +            'CellEventActions',
        +            'CellFrame',
        +            'CellFrameColor',
        +            'CellFrameLabelMargins',
        +            'CellFrameLabels',
        +            'CellFrameMargins',
        +            'CellGroup',
        +            'CellGroupData',
        +            'CellGrouping',
        +            'CellID',
        +            'CellLabel',
        +            'CellLabelAutoDelete',
        +            'CellMargins',
        +            'CellObject',
        +            'CellOpen',
        +            'CellPrint',
        +            'CellProlog',
        +            'CellStyle',
        +            'CellTags',
        +            'Cells',
        +            'CellularAutomaton',
        +            'CensoredDistribution',
        +            'Censoring',
        +            'Center',
        +            'CenterArray',
        +            'CenterDot',
        +            'CentralMoment',
        +            'CentralMomentGeneratingFunction',
        +            'ChampernowneNumber',
        +            'ChanVeseBinarize',
        +            'ChannelBase',
        +            'ChannelDatabin',
        +            'ChannelListen',
        +            'ChannelListener',
        +            'ChannelListeners',
        +            'ChannelObject',
        +            'ChannelPreSendFunction',
        +            'ChannelSend',
        +            'ChannelSubscribers',
        +            'Character',
        +            'CharacterCounts',
        +            'CharacterEncoding',
        +            'CharacterName',
        +            'CharacterRange',
        +            'CharacteristicFunction',
        +            'CharacteristicPolynomial',
        +            'Characters',
        +            'ChartBaseStyle',
        +            'ChartElementFunction',
        +            'ChartElements',
        +            'ChartLabels',
        +            'ChartLayout',
        +            'ChartLegends',
        +            'ChartStyle',
        +            'Chebyshev1FilterModel',
        +            'Chebyshev2FilterModel',
        +            'ChebyshevT',
        +            'ChebyshevU',
        +            'Check',
        +            'CheckAbort',
        +            'Checkbox',
        +            'CheckboxBar',
        +            'ChemicalData',
        +            'ChessboardDistance',
        +            'ChiDistribution',
        +            'ChiSquareDistribution',
        +            'ChineseRemainder',
        +            'ChoiceButtons',
        +            'ChoiceDialog',
        +            'CholeskyDecomposition',
        +            'Chop',
        +            'ChromaticPolynomial',
        +            'ChromaticityPlot',
        +            'ChromaticityPlot3D',
        +            'Circle',
        +            'CircleDot',
        +            'CircleMinus',
        +            'CirclePlus',
        +            'CirclePoints',
        +            'CircleTimes',
        +            'CirculantGraph',
        +            'CircularOrthogonalMatrixDistribution',
        +            'CircularQuaternionMatrixDistribution',
        +            'CircularRealMatrixDistribution',
        +            'CircularSymplecticMatrixDistribution',
        +            'CircularUnitaryMatrixDistribution',
        +            'Circumsphere',
        +            'CityData',
        +            'ClassPriors',
        +            'ClassifierFunction',
        +            'ClassifierInformation',
        +            'ClassifierMeasurements',
        +            'ClassifierMeasurementsObject',
        +            'Classify',
        +            'Clear',
        +            'ClearAll',
        +            'ClearAttributes',
        +            'ClearCookies',
        +            'ClearPermissions',
        +            'ClearSystemCache',
        +            'ClebschGordan',
        +            'ClickPane',
        +            'Clip',
        +            'ClipPlanes',
        +            'ClipPlanesStyle',
        +            'ClipRange',
        +            'ClippingStyle',
        +            'Clock',
        +            'ClockGauge',
        +            'Close',
        +            'CloseKernels',
        +            'ClosenessCentrality',
        +            'Closing',
        +            'CloudAccountData',
        +            'CloudBase',
        +            'CloudConnect',
        +            'CloudDeploy',
        +            'CloudDirectory',
        +            'CloudDisconnect',
        +            'CloudEvaluate',
        +            'CloudExport',
        +            'CloudExpression',
        +            'CloudExpressions',
        +            'CloudFunction',
        +            'CloudGet',
        +            'CloudImport',
        +            'CloudLoggingData',
        +            'CloudObject',
        +            'CloudObjects',
        +            'CloudPublish',
        +            'CloudPut',
        +            'CloudSave',
        +            'CloudShare',
        +            'CloudSubmit',
        +            'CloudSymbol',
        +            'ClusterClassify',
        +            'ClusterDissimilarityFunction',
        +            'ClusteringComponents',
        +            'ClusteringTree',
        +            'CodeAssistOptions',
        +            'Coefficient',
        +            'CoefficientArrays',
        +            'CoefficientList',
        +            'CoefficientRules',
        +            'CoifletWavelet',
        +            'Collect',
        +            'Colon',
        +            'ColorBalance',
        +            'ColorCombine',
        +            'ColorConvert',
        +            'ColorCoverage',
        +            'ColorData',
        +            'ColorDataFunction',
        +            'ColorDistance',
        +            'ColorFunction',
        +            'ColorFunctionScaling',
        +            'ColorNegate',
        +            'ColorProfileData',
        +            'ColorQ',
        +            'ColorQuantize',
        +            'ColorReplace',
        +            'ColorRules',
        +            'ColorSeparate',
        +            'ColorSetter',
        +            'ColorSlider',
        +            'ColorSpace',
        +            'ColorToneMapping',
        +            'Colorize',
        +            'Column',
        +            'ColumnAlignments',
        +            'ColumnLines',
        +            'ColumnSpacings',
        +            'ColumnWidths',
        +            'ColumnsEqual',
        +            'CombinerFunction',
        +            'CometData',
        +            'CommonName',
        +            'CommonUnits',
        +            'Commonest',
        +            'CommonestFilter',
        +            'CommunityBoundaryStyle',
        +            'CommunityGraphPlot',
        +            'CommunityLabels',
        +            'CommunityRegionStyle',
        +            'CompanyData',
        +            'CompatibleUnitQ',
        +            'CompilationOptions',
        +            'CompilationTarget',
        +            'Compile',
        +            'Compiled',
        +            'CompiledFunction',
        +            'Complement',
        +            'CompleteGraph',
        +            'CompleteGraphQ',
        +            'CompleteKaryTree',
        +            'Complex',
        +            'ComplexExpand',
        +            'ComplexInfinity',
        +            'Complexes',
        +            'ComplexityFunction',
        +            'ComponentMeasurements',
        +            'ComposeList',
        +            'ComposeSeries',
        +            'CompositeQ',
        +            'Composition',
        +            'CompoundElement',
        +            'CompoundExpression',
        +            'CompoundPoissonDistribution',
        +            'CompoundPoissonProcess',
        +            'CompoundRenewalProcess',
        +            'Compress',
        +            'Condition',
        +            'ConditionalExpression',
        +            'Conditioned',
        +            'Cone',
        +            'ConfidenceLevel',
        +            'ConfidenceRange',
        +            'ConfidenceTransform',
        +            'ConformAudio',
        +            'ConformImages',
        +            'Congruent',
        +            'ConicHullRegion',
        +            'Conjugate',
        +            'ConjugateTranspose',
        +            'Conjunction',
        +            'ConnectLibraryCallbackFunction',
        +            'ConnectedComponents',
        +            'ConnectedGraphComponents',
        +            'ConnectedGraphQ',
        +            'ConnectedMeshComponents',
        +            'ConnesWindow',
        +            'ConoverTest',
        +            'Constant',
        +            'ConstantArray',
        +            'ConstantImage',
        +            'ConstantRegionQ',
        +            'Constants',
        +            'ConstellationData',
        +            'Containing',
        +            'ContainsAll',
        +            'ContainsAny',
        +            'ContainsExactly',
        +            'ContainsNone',
        +            'ContainsOnly',
        +            'ContentFieldOptions',
        +            'ContentLocationFunction',
        +            'ContentObject',
        +            'ContentPadding',
        +            'ContentSelectable',
        +            'ContentSize',
        +            'Context',
        +            'ContextToFileName',
        +            'Contexts',
        +            'Continue',
        +            'ContinuedFraction',
        +            'ContinuedFractionK',
        +            'ContinuousAction',
        +            'ContinuousMarkovProcess',
        +            'ContinuousTask',
        +            'ContinuousTimeModelQ',
        +            'ContinuousWaveletData',
        +            'ContinuousWaveletTransform',
        +            'ContourDetect',
        +            'ContourLabels',
        +            'ContourPlot',
        +            'ContourPlot3D',
        +            'ContourShading',
        +            'ContourStyle',
        +            'Contours',
        +            'ContraharmonicMean',
        +            'Control',
        +            'ControlActive',
        +            'ControlPlacement',
        +            'ControlType',
        +            'ControllabilityGramian',
        +            'ControllabilityMatrix',
        +            'ControllableDecomposition',
        +            'ControllableModelQ',
        +            'ControllerInformation',
        +            'ControllerLinking',
        +            'ControllerManipulate',
        +            'ControllerMethod',
        +            'ControllerPath',
        +            'ControllerState',
        +            'ControlsRendering',
        +            'Convergents',
        +            'ConversionRules',
        +            'ConvexHullMesh',
        +            'ConvolutionLayer',
        +            'Convolve',
        +            'ConwayGroupCo1',
        +            'ConwayGroupCo2',
        +            'ConwayGroupCo3',
        +            'CookieFunction',
        +            'CoordinateBoundingBox',
        +            'CoordinateBoundingBoxArray',
        +            'CoordinateBounds',
        +            'CoordinateBoundsArray',
        +            'CoordinateChartData',
        +            'CoordinateTransform',
        +            'CoordinateTransformData',
        +            'CoordinatesToolOptions',
        +            'CoprimeQ',
        +            'Coproduct',
        +            'CopulaDistribution',
        +            'CopyDatabin',
        +            'CopyDirectory',
        +            'CopyFile',
        +            'CopyToClipboard',
        +            'Copyable',
        +            'CornerFilter',
        +            'CornerNeighbors',
        +            'Correlation',
        +            'CorrelationDistance',
        +            'CorrelationFunction',
        +            'CorrelationTest',
        +            'Cos',
        +            'CosIntegral',
        +            'Cosh',
        +            'CoshIntegral',
        +            'CosineDistance',
        +            'CosineWindow',
        +            'Cot',
        +            'Coth',
        +            'Count',
        +            'CountDistinct',
        +            'CountDistinctBy',
        +            'CountRoots',
        +            'CountryData',
        +            'Counts',
        +            'CountsBy',
        +            'Covariance',
        +            'CovarianceEstimatorFunction',
        +            'CovarianceFunction',
        +            'CoxIngersollRossProcess',
        +            'CoxModel',
        +            'CoxModelFit',
        +            'CoxianDistribution',
        +            'CramerVonMisesTest',
        +            'CreateArchive',
        +            'CreateCellID',
        +            'CreateChannel',
        +            'CreateCloudExpression',
        +            'CreateDatabin',
        +            'CreateDialog',
        +            'CreateDirectory',
        +            'CreateDocument',
        +            'CreateFile',
        +            'CreateIntermediateDirectories',
        +            'CreateManagedLibraryExpression',
        +            'CreateNotebook',
        +            'CreatePalette',
        +            'CreatePermissionsGroup',
        +            'CreateScheduledTask',
        +            'CreateSearchIndex',
        +            'CreateUUID',
        +            'CreateWindow',
        +            'CriterionFunction',
        +            'CriticalSection',
        +            'CriticalityFailureImportance',
        +            'CriticalitySuccessImportance',
        +            'Cross',
        +            'CrossEntropyLossLayer',
        +            'CrossMatrix',
        +            'CrossingDetect',
        +            'Csc',
        +            'Csch',
        +            'CubeRoot',
        +            'Cubics',
        +            'Cuboid',
        +            'Cumulant',
        +            'CumulantGeneratingFunction',
        +            'Cup',
        +            'CupCap',
        +            'Curl',
        +            'CurrencyConvert',
        +            'CurrentImage',
        +            'CurrentValue',
        +            'CurvatureFlowFilter',
        +            'CurveClosed',
        +            'Cyan',
        +            'CycleGraph',
        +            'CycleIndexPolynomial',
        +            'Cycles',
        +            'CyclicGroup',
        +            'Cyclotomic',
        +            'Cylinder',
        +            'CylindricalDecomposition',
        +
        +            'D',
        +            'DEigensystem',
        +            'DEigenvalues',
        +            'DGaussianWavelet',
        +            'DMSList',
        +            'DMSString',
        +            'DSolve',
        +            'DSolveValue',
        +            'DagumDistribution',
        +            'DamData',
        +            'DamerauLevenshteinDistance',
        +            'Darker',
        +            'Dashed',
        +            'Dashing',
        +            'DataDistribution',
        +            'DataRange',
        +            'DataReversed',
        +            'Databin',
        +            'DatabinAdd',
        +            'DatabinRemove',
        +            'DatabinUpload',
        +            'Databins',
        +            'Dataset',
        +            'DateBounds',
        +            'DateDifference',
        +            'DateFormat',
        +            'DateFunction',
        +            'DateHistogram',
        +            'DateList',
        +            'DateListLogPlot',
        +            'DateListPlot',
        +            'DateListStepPlot',
        +            'DateObject',
        +            'DateObjectQ',
        +            'DatePattern',
        +            'DatePlus',
        +            'DateRange',
        +            'DateReduction',
        +            'DateString',
        +            'DateTicksFormat',
        +            'DateValue',
        +            'Dated',
        +            'DatedUnit',
        +            'DaubechiesWavelet',
        +            'DavisDistribution',
        +            'DawsonF',
        +            'DayCount',
        +            'DayCountConvention',
        +            'DayHemisphere',
        +            'DayMatchQ',
        +            'DayName',
        +            'DayNightTerminator',
        +            'DayPlus',
        +            'DayRange',
        +            'DayRound',
        +            'DaylightQ',
        +            'DeBruijnGraph',
        +            'Decapitalize',
        +            'DeclarePackage',
        +            'Decompose',
        +            'DeconvolutionLayer',
        +            'Decrement',
        +            'Decrypt',
        +            'DedekindEta',
        +            'DeepSpaceProbeData',
        +            'Default',
        +            'DefaultAxesStyle',
        +            'DefaultBaseStyle',
        +            'DefaultBoxStyle',
        +            'DefaultButton',
        +            'DefaultDuplicateCellStyle',
        +            'DefaultDuration',
        +            'DefaultElement',
        +            'DefaultFaceGridsStyle',
        +            'DefaultFieldHintStyle',
        +            'DefaultFrameStyle',
        +            'DefaultFrameTicksStyle',
        +            'DefaultGridLinesStyle',
        +            'DefaultLabelStyle',
        +            'DefaultMenuStyle',
        +            'DefaultNaturalLanguage',
        +            'DefaultNewCellStyle',
        +            'DefaultOptions',
        +            'DefaultTicksStyle',
        +            'DefaultTooltipStyle',
        +            'Defer',
        +            'DefineInputStreamMethod',
        +            'DefineOutputStreamMethod',
        +            'Definition',
        +            'Degree',
        +            'DegreeCentrality',
        +            'DegreeGraphDistribution',
        +            'Deinitialization',
        +            'Del',
        +            'DelaunayMesh',
        +            'Delayed',
        +            'Deletable',
        +            'Delete',
        +            'DeleteBorderComponents',
        +            'DeleteCases',
        +            'DeleteChannel',
        +            'DeleteCloudExpression',
        +            'DeleteContents',
        +            'DeleteDirectory',
        +            'DeleteDuplicates',
        +            'DeleteDuplicatesBy',
        +            'DeleteFile',
        +            'DeleteMissing',
        +            'DeletePermissionsKey',
        +            'DeleteSearchIndex',
        +            'DeleteSmallComponents',
        +            'DeleteStopwords',
        +            'DelimitedSequence',
        +            'Delimiter',
        +            'DelimiterFlashTime',
        +            'Delimiters',
        +            'DeliveryFunction',
        +            'Dendrogram',
        +            'Denominator',
        +            'DensityHistogram',
        +            'DensityPlot',
        +            'DensityPlot3D',
        +            'DependentVariables',
        +            'Deploy',
        +            'Deployed',
        +            'Depth',
        +            'DepthFirstScan',
        +            'Derivative',
        +            'DerivativeFilter',
        +            'DescriptorStateSpace',
        +            'DesignMatrix',
        +            'Det',
        +            'DeviceClose',
        +            'DeviceConfigure',
        +            'DeviceExecute',
        +            'DeviceExecuteAsynchronous',
        +            'DeviceObject',
        +            'DeviceOpen',
        +            'DeviceRead',
        +            'DeviceReadBuffer',
        +            'DeviceReadLatest',
        +            'DeviceReadList',
        +            'DeviceReadTimeSeries',
        +            'DeviceStreams',
        +            'DeviceWrite',
        +            'DeviceWriteBuffer',
        +            'Devices',
        +            'Diagonal',
        +            'DiagonalMatrix',
        +            'DiagonalizableMatrixQ',
        +            'Dialog',
        +            'DialogInput',
        +            'DialogNotebook',
        +            'DialogProlog',
        +            'DialogReturn',
        +            'DialogSymbols',
        +            'Diamond',
        +            'DiamondMatrix',
        +            'DiceDissimilarity',
        +            'DictionaryLookup',
        +            'DictionaryWordQ',
        +            'DifferenceDelta',
        +            'DifferenceQuotient',
        +            'DifferenceRoot',
        +            'DifferenceRootReduce',
        +            'Differences',
        +            'DifferentialD',
        +            'DifferentialRoot',
        +            'DifferentialRootReduce',
        +            'DifferentiatorFilter',
        +            'DigitBlock',
        +            'DigitCharacter',
        +            'DigitCount',
        +            'DigitQ',
        +            'DihedralGroup',
        +            'Dilation',
        +            'DimensionReduce',
        +            'DimensionReducerFunction',
        +            'DimensionReduction',
        +            'DimensionalCombinations',
        +            'DimensionalMeshComponents',
        +            'Dimensions',
        +            'DiracComb',
        +            'DiracDelta',
        +            'DirectedEdge',
        +            'DirectedEdges',
        +            'DirectedGraph',
        +            'DirectedGraphQ',
        +            'DirectedInfinity',
        +            'Direction',
        +            'Directive',
        +            'Directory',
        +            'DirectoryName',
        +            'DirectoryQ',
        +            'DirectoryStack',
        +            'DirichletBeta',
        +            'DirichletCharacter',
        +            'DirichletCondition',
        +            'DirichletConvolve',
        +            'DirichletDistribution',
        +            'DirichletEta',
        +            'DirichletL',
        +            'DirichletLambda',
        +            'DirichletTransform',
        +            'DirichletWindow',
        +            'DisableFormatting',
        +            'DiscreteChirpZTransform',
        +            'DiscreteConvolve',
        +            'DiscreteDelta',
        +            'DiscreteHadamardTransform',
        +            'DiscreteIndicator',
        +            'DiscreteLQEstimatorGains',
        +            'DiscreteLQRegulatorGains',
        +            'DiscreteLyapunovSolve',
        +            'DiscreteMarkovProcess',
        +            'DiscretePlot',
        +            'DiscretePlot3D',
        +            'DiscreteRatio',
        +            'DiscreteRiccatiSolve',
        +            'DiscreteShift',
        +            'DiscreteTimeModelQ',
        +            'DiscreteUniformDistribution',
        +            'DiscreteVariables',
        +            'DiscreteWaveletData',
        +            'DiscreteWaveletPacketTransform',
        +            'DiscreteWaveletTransform',
        +            'DiscretizeGraphics',
        +            'DiscretizeRegion',
        +            'Discriminant',
        +            'DisjointQ',
        +            'Disjunction',
        +            'Disk',
        +            'DiskMatrix',
        +            'DiskSegment',
        +            'Dispatch',
        +            'DispersionEstimatorFunction',
        +            'DisplayAllSteps',
        +            'DisplayEndPacket',
        +            'DisplayForm',
        +            'DisplayFunction',
        +            'DisplayPacket',
        +            'DistanceFunction',
        +            'DistanceMatrix',
        +            'DistanceTransform',
        +            'Distribute',
        +            'DistributeDefinitions',
        +            'Distributed',
        +            'DistributedContexts',
        +            'DistributionChart',
        +            'DistributionFitTest',
        +            'DistributionParameterAssumptions',
        +            'DistributionParameterQ',
        +            'Dithering',
        +            'Div',
        +            'Divide',
        +            'DivideBy',
        +            'Dividers',
        +            'Divisible',
        +            'DivisorSigma',
        +            'DivisorSum',
        +            'Divisors',
        +            'Do',
        +            'DockedCells',
        +            'DocumentGenerator',
        +            'DocumentGeneratorInformation',
        +            'DocumentGenerators',
        +            'DocumentNotebook',
        +            'DominantColors',
        +            'Dot',
        +            'DotDashed',
        +            'DotEqual',
        +            'DotPlusLayer',
        +            'Dotted',
        +            'DoubleBracketingBar',
        +            'DoubleDownArrow',
        +            'DoubleLeftArrow',
        +            'DoubleLeftRightArrow',
        +            'DoubleLeftTee',
        +            'DoubleLongLeftArrow',
        +            'DoubleLongLeftRightArrow',
        +            'DoubleLongRightArrow',
        +            'DoubleRightArrow',
        +            'DoubleRightTee',
        +            'DoubleUpArrow',
        +            'DoubleUpDownArrow',
        +            'DoubleVerticalBar',
        +            'DownArrow',
        +            'DownArrowBar',
        +            'DownArrowUpArrow',
        +            'DownLeftRightVector',
        +            'DownLeftTeeVector',
        +            'DownLeftVector',
        +            'DownLeftVectorBar',
        +            'DownRightTeeVector',
        +            'DownRightVector',
        +            'DownRightVectorBar',
        +            'DownTee',
        +            'DownTeeArrow',
        +            'DownValues',
        +            'Downsample',
        +            'Drop',
        +            'DropoutLayer',
        +            'Dt',
        +            'DualSystemsModel',
        +            'DumpSave',
        +            'DuplicateFreeQ',
        +            'Duration',
        +            'Dynamic',
        +            'DynamicEvaluationTimeout',
        +            'DynamicGeoGraphics',
        +            'DynamicImage',
        +            'DynamicModule',
        +            'DynamicModuleValues',
        +            'DynamicSetting',
        +            'DynamicWrapper',
        +
        +            'E',
        +            'EarthImpactData',
        +            'EarthquakeData',
        +            'EccentricityCentrality',
        +            'Echo',
        +            'EchoFunction',
        +            'EclipseType',
        +            'EdgeAdd',
        +            'EdgeBetweennessCentrality',
        +            'EdgeCapacity',
        +            'EdgeConnectivity',
        +            'EdgeContract',
        +            'EdgeCost',
        +            'EdgeCount',
        +            'EdgeCoverQ',
        +            'EdgeCycleMatrix',
        +            'EdgeDelete',
        +            'EdgeDetect',
        +            'EdgeForm',
        +            'EdgeIndex',
        +            'EdgeLabelStyle',
        +            'EdgeLabeling',
        +            'EdgeLabels',
        +            'EdgeList',
        +            'EdgeQ',
        +            'EdgeRenderingFunction',
        +            'EdgeRules',
        +            'EdgeShapeFunction',
        +            'EdgeStyle',
        +            'EdgeWeight',
        +            'EditDistance',
        +            'Editable',
        +            'EffectiveInterest',
        +            'Eigensystem',
        +            'Eigenvalues',
        +            'EigenvectorCentrality',
        +            'Eigenvectors',
        +            'Element',
        +            'ElementData',
        +            'ElementwiseLayer',
        +            'ElidedForms',
        +            'Eliminate',
        +            'Ellipsoid',
        +            'EllipticE',
        +            'EllipticExp',
        +            'EllipticExpPrime',
        +            'EllipticF',
        +            'EllipticFilterModel',
        +            'EllipticK',
        +            'EllipticLog',
        +            'EllipticNomeQ',
        +            'EllipticPi',
        +            'EllipticTheta',
        +            'EllipticThetaPrime',
        +            'EmbedCode',
        +            'EmbeddedHTML',
        +            'EmbeddedService',
        +            'EmbeddingLayer',
        +            'EmitSound',
        +            'EmpiricalDistribution',
        +            'EmptyGraphQ',
        +            'EmptyRegion',
        +            'Enabled',
        +            'Encode',
        +            'Encrypt',
        +            'EncryptedObject',
        +            'End',
        +            'EndDialogPacket',
        +            'EndOfBuffer',
        +            'EndOfFile',
        +            'EndOfLine',
        +            'EndOfString',
        +            'EndPackage',
        +            'EngineeringForm',
        +            'EnterExpressionPacket',
        +            'EnterTextPacket',
        +            'Entity',
        +            'EntityClass',
        +            'EntityClassList',
        +            'EntityCopies',
        +            'EntityGroup',
        +            'EntityInstance',
        +            'EntityList',
        +            'EntityProperties',
        +            'EntityProperty',
        +            'EntityPropertyClass',
        +            'EntityStore',
        +            'EntityTypeName',
        +            'EntityValue',
        +            'Entropy',
        +            'EntropyFilter',
        +            'Environment',
        +            'Epilog',
        +            'EpilogFunction',
        +            'Equal',
        +            'EqualTilde',
        +            'EqualTo',
        +            'Equilibrium',
        +            'EquirippleFilterKernel',
        +            'Equivalent',
        +            'Erf',
        +            'Erfc',
        +            'Erfi',
        +            'ErlangB',
        +            'ErlangC',
        +            'ErlangDistribution',
        +            'Erosion',
        +            'ErrorBox',
        +            'EscapeRadius',
        +            'EstimatedBackground',
        +            'EstimatedDistribution',
        +            'EstimatedProcess',
        +            'EstimatorGains',
        +            'EstimatorRegulator',
        +            'EuclideanDistance',
        +            'EulerAngles',
        +            'EulerE',
        +            'EulerGamma',
        +            'EulerMatrix',
        +            'EulerPhi',
        +            'EulerianGraphQ',
        +            'Evaluatable',
        +            'Evaluate',
        +            'EvaluatePacket',
        +            'EvaluateScheduledTask',
        +            'EvaluationBox',
        +            'EvaluationCell',
        +            'EvaluationData',
        +            'EvaluationElements',
        +            'EvaluationMonitor',
        +            'EvaluationNotebook',
        +            'EvaluationObject',
        +            'Evaluator',
        +            'EvenQ',
        +            'EventData',
        +            'EventHandler',
        +            'EventLabels',
        +            'EventSeries',
        +            'ExactBlackmanWindow',
        +            'ExactNumberQ',
        +            'ExampleData',
        +            'Except',
        +            'ExcludePods',
        +            'ExcludedForms',
        +            'ExcludedLines',
        +            'ExcludedPhysicalQuantities',
        +            'Exclusions',
        +            'ExclusionsStyle',
        +            'Exists',
        +            'Exit',
        +            'ExoplanetData',
        +            'Exp',
        +            'ExpGammaDistribution',
        +            'ExpIntegralE',
        +            'ExpIntegralEi',
        +            'ExpToTrig',
        +            'Expand',
        +            'ExpandAll',
        +            'ExpandDenominator',
        +            'ExpandFileName',
        +            'ExpandNumerator',
        +            'Expectation',
        +            'Exponent',
        +            'ExponentFunction',
        +            'ExponentStep',
        +            'ExponentialDistribution',
        +            'ExponentialFamily',
        +            'ExponentialGeneratingFunction',
        +            'ExponentialMovingAverage',
        +            'ExponentialPowerDistribution',
        +            'Export',
        +            'ExportForm',
        +            'ExportString',
        +            'Expression',
        +            'ExpressionCell',
        +            'ExtendedGCD',
        +            'Extension',
        +            'ExtentElementFunction',
        +            'ExtentMarkers',
        +            'ExtentSize',
        +            'ExternalBundle',
        +            'ExternalOptions',
        +            'ExternalTypeSignature',
        +            'Extract',
        +            'ExtractArchive',
        +            'ExtremeValueDistribution',
        +
        +            'FARIMAProcess',
        +            'FRatioDistribution',
        +            'FaceForm',
        +            'FaceGrids',
        +            'FaceGridsStyle',
        +            'Factor',
        +            'FactorInteger',
        +            'FactorList',
        +            'FactorSquareFree',
        +            'FactorSquareFreeList',
        +            'FactorTerms',
        +            'FactorTermsList',
        +            'Factorial',
        +            'Factorial2',
        +            'FactorialMoment',
        +            'FactorialMomentGeneratingFunction',
        +            'FactorialPower',
        +            'Failure',
        +            'FailureAction',
        +            'FailureDistribution',
        +            'FailureQ',
        +            'False',
        +            'FareySequence',
        +            'FeatureDistance',
        +            'FeatureExtract',
        +            'FeatureExtraction',
        +            'FeatureExtractor',
        +            'FeatureExtractorFunction',
        +            'FeatureNames',
        +            'FeatureTypes',
        +            'FeedbackLinearize',
        +            'FeedbackSector',
        +            'FeedbackSectorStyle',
        +            'FeedbackType',
        +            'FetalGrowthData',
        +            'Fibonacci',
        +            'Fibonorial',
        +            'FieldHint',
        +            'FieldHintStyle',
        +            'FieldMasked',
        +            'FieldSize',
        +            'File',
        +            'FileBaseName',
        +            'FileByteCount',
        +            'FileDate',
        +            'FileExistsQ',
        +            'FileExtension',
        +            'FileFormat',
        +            'FileHash',
        +            'FileNameDepth',
        +            'FileNameDrop',
        +            'FileNameForms',
        +            'FileNameJoin',
        +            'FileNameSetter',
        +            'FileNameSplit',
        +            'FileNameTake',
        +            'FileNames',
        +            'FilePrint',
        +            'FileSystemMap',
        +            'FileSystemScan',
        +            'FileTemplate',
        +            'FileTemplateApply',
        +            'FileType',
        +            'FilledCurve',
        +            'Filling',
        +            'FillingStyle',
        +            'FillingTransform',
        +            'FilterRules',
        +            'FinancialBond',
        +            'FinancialData',
        +            'FinancialDerivative',
        +            'FinancialIndicator',
        +            'Find',
        +            'FindArgMax',
        +            'FindArgMin',
        +            'FindChannels',
        +            'FindClique',
        +            'FindClusters',
        +            'FindCookies',
        +            'FindCurvePath',
        +            'FindCycle',
        +            'FindDevices',
        +            'FindDistribution',
        +            'FindDistributionParameters',
        +            'FindDivisions',
        +            'FindEdgeCover',
        +            'FindEdgeCut',
        +            'FindEdgeIndependentPaths',
        +            'FindEulerianCycle',
        +            'FindFaces',
        +            'FindFile',
        +            'FindFit',
        +            'FindFormula',
        +            'FindFundamentalCycles',
        +            'FindGeneratingFunction',
        +            'FindGeoLocation',
        +            'FindGeometricTransform',
        +            'FindGraphCommunities',
        +            'FindGraphIsomorphism',
        +            'FindGraphPartition',
        +            'FindHamiltonianCycle',
        +            'FindHamiltonianPath',
        +            'FindHiddenMarkovStates',
        +            'FindIndependentEdgeSet',
        +            'FindIndependentVertexSet',
        +            'FindInstance',
        +            'FindIntegerNullVector',
        +            'FindKClan',
        +            'FindKClique',
        +            'FindKClub',
        +            'FindKPlex',
        +            'FindLibrary',
        +            'FindLinearRecurrence',
        +            'FindList',
        +            'FindMaxValue',
        +            'FindMaximum',
        +            'FindMaximumFlow',
        +            'FindMeshDefects',
        +            'FindMinValue',
        +            'FindMinimum',
        +            'FindMinimumCostFlow',
        +            'FindMinimumCut',
        +            'FindPath',
        +            'FindPeaks',
        +            'FindPermutation',
        +            'FindPostmanTour',
        +            'FindProcessParameters',
        +            'FindRoot',
        +            'FindSequenceFunction',
        +            'FindSettings',
        +            'FindShortestPath',
        +            'FindShortestTour',
        +            'FindSpanningTree',
        +            'FindThreshold',
        +            'FindTransientRepeat',
        +            'FindVertexCover',
        +            'FindVertexCut',
        +            'FindVertexIndependentPaths',
        +            'FinishDynamic',
        +            'FiniteAbelianGroupCount',
        +            'FiniteGroupCount',
        +            'FiniteGroupData',
        +            'First',
        +            'FirstCase',
        +            'FirstPassageTimeDistribution',
        +            'FirstPosition',
        +            'FischerGroupFi22',
        +            'FischerGroupFi23',
        +            'FischerGroupFi24Prime',
        +            'FisherHypergeometricDistribution',
        +            'FisherRatioTest',
        +            'FisherZDistribution',
        +            'Fit',
        +            'FittedModel',
        +            'FixedOrder',
        +            'FixedPoint',
        +            'FixedPointList',
        +            'Flat',
        +            'FlatTopWindow',
        +            'Flatten',
        +            'FlattenAt',
        +            'FlattenLayer',
        +            'FlipView',
        +            'Floor',
        +            'FlowPolynomial',
        +            'Fold',
        +            'FoldList',
        +            'FoldPair',
        +            'FoldPairList',
        +            'FollowRedirects',
        +            'FontColor',
        +            'FontFamily',
        +            'FontSize',
        +            'FontSlant',
        +            'FontSubstitutions',
        +            'FontTracking',
        +            'FontVariations',
        +            'FontWeight',
        +            'For',
        +            'ForAll',
        +            'FormBox',
        +            'FormBoxOptions',
        +            'FormControl',
        +            'FormFunction',
        +            'FormLayoutFunction',
        +            'FormObject',
        +            'FormPage',
        +            'Format',
        +            'FormatType',
        +            'FormulaData',
        +            'FormulaLookup',
        +            'FortranForm',
        +            'Forward',
        +            'ForwardBackward',
        +            'Fourier',
        +            'FourierCoefficient',
        +            'FourierCosCoefficient',
        +            'FourierCosSeries',
        +            'FourierCosTransform',
        +            'FourierDCT',
        +            'FourierDCTFilter',
        +            'FourierDCTMatrix',
        +            'FourierDST',
        +            'FourierDSTMatrix',
        +            'FourierMatrix',
        +            'FourierParameters',
        +            'FourierSequenceTransform',
        +            'FourierSeries',
        +            'FourierSinCoefficient',
        +            'FourierSinSeries',
        +            'FourierSinTransform',
        +            'FourierTransform',
        +            'FourierTrigSeries',
        +            'FractionBox',
        +            'FractionBoxOptions',
        +            'FractionalBrownianMotionProcess',
        +            'FractionalGaussianNoiseProcess',
        +            'FractionalPart',
        +            'Frame',
        +            'FrameBox',
        +            'FrameBoxOptions',
        +            'FrameLabel',
        +            'FrameMargins',
        +            'FrameStyle',
        +            'FrameTicks',
        +            'FrameTicksStyle',
        +            'Framed',
        +            'FrechetDistribution',
        +            'FreeQ',
        +            'FrenetSerretSystem',
        +            'FrequencySamplingFilterKernel',
        +            'FresnelC',
        +            'FresnelF',
        +            'FresnelG',
        +            'FresnelS',
        +            'Friday',
        +            'FrobeniusNumber',
        +            'FrobeniusSolve',
        +            'FromCharacterCode',
        +            'FromCoefficientRules',
        +            'FromContinuedFraction',
        +            'FromDMS',
        +            'FromDigits',
        +            'FromEntity',
        +            'FromJulianDate',
        +            'FromLetterNumber',
        +            'FromPolarCoordinates',
        +            'FromRomanNumeral',
        +            'FromSphericalCoordinates',
        +            'FromUnixTime',
        +            'Front',
        +            'FrontEndDynamicExpression',
        +            'FrontEndEventActions',
        +            'FrontEndExecute',
        +            'FrontEndToken',
        +            'FrontEndTokenExecute',
        +            'Full',
        +            'FullDefinition',
        +            'FullForm',
        +            'FullGraphics',
        +            'FullInformationOutputRegulator',
        +            'FullRegion',
        +            'FullSimplify',
        +            'Function',
        +            'FunctionDomain',
        +            'FunctionExpand',
        +            'FunctionInterpolation',
        +            'FunctionPeriod',
        +            'FunctionRange',
        +            'FunctionSpace',
        +            'FussellVeselyImportance',
        +
        +            'GARCHProcess',
        +            'GCD',
        +            'GaborFilter',
        +            'GaborMatrix',
        +            'GaborWavelet',
        +            'GainMargins',
        +            'GainPhaseMargins',
        +            'GalaxyData',
        +            'GalleryView',
        +            'Gamma',
        +            'GammaDistribution',
        +            'GammaRegularized',
        +            'GapPenalty',
        +            'Gather',
        +            'GatherBy',
        +            'GaugeFaceElementFunction',
        +            'GaugeFaceStyle',
        +            'GaugeFrameElementFunction',
        +            'GaugeFrameSize',
        +            'GaugeFrameStyle',
        +            'GaugeLabels',
        +            'GaugeMarkers',
        +            'GaugeStyle',
        +            'GaussianFilter',
        +            'GaussianIntegers',
        +            'GaussianMatrix',
        +            'GaussianOrthogonalMatrixDistribution',
        +            'GaussianSymplecticMatrixDistribution',
        +            'GaussianUnitaryMatrixDistribution',
        +            'GaussianWindow',
        +            'GegenbauerC',
        +            'General',
        +            'GeneralizedLinearModelFit',
        +            'GenerateAsymmetricKeyPair',
        +            'GenerateConditions',
        +            'GenerateDocument',
        +            'GenerateHTTPResponse',
        +            'GenerateSymmetricKey',
        +            'GeneratedCell',
        +            'GeneratedDocumentBinding',
        +            'GeneratedParameters',
        +            'GeneratingFunction',
        +            'GeneratorDescription',
        +            'GeneratorHistoryLength',
        +            'GeneratorOutputType',
        +            'GenericCylindricalDecomposition',
        +            'GenomeData',
        +            'GenomeLookup',
        +            'GeoArea',
        +            'GeoBackground',
        +            'GeoBoundingBox',
        +            'GeoBounds',
        +            'GeoBoundsRegion',
        +            'GeoCenter',
        +            'GeoCircle',
        +            'GeoDestination',
        +            'GeoDirection',
        +            'GeoDisk',
        +            'GeoDisplacement',
        +            'GeoDistance',
        +            'GeoDistanceList',
        +            'GeoElevationData',
        +            'GeoEntities',
        +            'GeoGraphics',
        +            'GeoGridLines',
        +            'GeoGridLinesStyle',
        +            'GeoGridPosition',
        +            'GeoGroup',
        +            'GeoHemisphere',
        +            'GeoHemisphereBoundary',
        +            'GeoHistogram',
        +            'GeoIdentify',
        +            'GeoLabels',
        +            'GeoLength',
        +            'GeoListPlot',
        +            'GeoLocation',
        +            'GeoMarker',
        +            'GeoModel',
        +            'GeoNearest',
        +            'GeoPath',
        +            'GeoPosition',
        +            'GeoPositionENU',
        +            'GeoPositionXYZ',
        +            'GeoProjection',
        +            'GeoProjectionData',
        +            'GeoRange',
        +            'GeoRangePadding',
        +            'GeoRegionValuePlot',
        +            'GeoScaleBar',
        +            'GeoServer',
        +            'GeoStyling',
        +            'GeoStylingImageFunction',
        +            'GeoVariant',
        +            'GeoVisibleRegion',
        +            'GeoVisibleRegionBoundary',
        +            'GeoWithinQ',
        +            'GeoZoomLevel',
        +            'GeodesicClosing',
        +            'GeodesicDilation',
        +            'GeodesicErosion',
        +            'GeodesicOpening',
        +            'GeodesyData',
        +            'GeogravityModelData',
        +            'GeologicalPeriodData',
        +            'GeomagneticModelData',
        +            'GeometricBrownianMotionProcess',
        +            'GeometricDistribution',
        +            'GeometricMean',
        +            'GeometricMeanFilter',
        +            'GeometricTransformation',
        +            'GestureHandler',
        +            'Get',
        +            'GetEnvironment',
        +            'Glaisher',
        +            'GlobalClusteringCoefficient',
        +            'Glow',
        +            'GoldenAngle',
        +            'GoldenRatio',
        +            'GompertzMakehamDistribution',
        +            'GoodmanKruskalGamma',
        +            'GoodmanKruskalGammaTest',
        +            'Goto',
        +            'Grad',
        +            'Gradient',
        +            'GradientFilter',
        +            'GradientOrientationFilter',
        +            'GrammarApply',
        +            'GrammarRules',
        +            'GrammarToken',
        +            'Graph',
        +            'Graph3D',
        +            'GraphAssortativity',
        +            'GraphAutomorphismGroup',
        +            'GraphCenter',
        +            'GraphComplement',
        +            'GraphData',
        +            'GraphDensity',
        +            'GraphDiameter',
        +            'GraphDifference',
        +            'GraphDisjointUnion',
        +            'GraphDistance',
        +            'GraphDistanceMatrix',
        +            'GraphEmbedding',
        +            'GraphHighlight',
        +            'GraphHighlightStyle',
        +            'GraphHub',
        +            'GraphIntersection',
        +            'GraphLayout',
        +            'GraphLinkEfficiency',
        +            'GraphPeriphery',
        +            'GraphPlot',
        +            'GraphPlot3D',
        +            'GraphPower',
        +            'GraphPropertyDistribution',
        +            'GraphQ',
        +            'GraphRadius',
        +            'GraphReciprocity',
        +            'GraphStyle',
        +            'GraphUnion',
        +            'Graphics',
        +            'Graphics3D',
        +            'GraphicsColumn',
        +            'GraphicsComplex',
        +            'GraphicsGrid',
        +            'GraphicsGroup',
        +            'GraphicsRow',
        +            'Gray',
        +            'GrayLevel',
        +            'Greater',
        +            'GreaterEqual',
        +            'GreaterEqualLess',
        +            'GreaterEqualThan',
        +            'GreaterFullEqual',
        +            'GreaterGreater',
        +            'GreaterLess',
        +            'GreaterSlantEqual',
        +            'GreaterThan',
        +            'GreaterTilde',
        +            'Green',
        +            'GreenFunction',
        +            'Grid',
        +            'GridBox',
        +            'GridDefaultElement',
        +            'GridGraph',
        +            'GridLines',
        +            'GridLinesStyle',
        +            'GroebnerBasis',
        +            'GroupActionBase',
        +            'GroupBy',
        +            'GroupCentralizer',
        +            'GroupElementFromWord',
        +            'GroupElementPosition',
        +            'GroupElementQ',
        +            'GroupElementToWord',
        +            'GroupElements',
        +            'GroupGenerators',
        +            'GroupMultiplicationTable',
        +            'GroupOrbits',
        +            'GroupOrder',
        +            'GroupPageBreakWithin',
        +            'GroupSetwiseStabilizer',
        +            'GroupStabilizer',
        +            'GroupStabilizerChain',
        +            'Groupings',
        +            'GrowCutComponents',
        +            'Gudermannian',
        +            'GuidedFilter',
        +            'GumbelDistribution',
        +
        +            'HITSCentrality',
        +            'HTTPErrorResponse',
        +            'HTTPRedirect',
        +            'HTTPRequest',
        +            'HTTPRequestData',
        +            'HTTPResponse',
        +            'HaarWavelet',
        +            'HadamardMatrix',
        +            'HalfLine',
        +            'HalfNormalDistribution',
        +            'HalfPlane',
        +            'HalfSpace',
        +            'HamiltonianGraphQ',
        +            'HammingDistance',
        +            'HammingWindow',
        +            'HandlerFunctions',
        +            'HandlerFunctionsKeys',
        +            'HankelH1',
        +            'HankelH2',
        +            'HankelMatrix',
        +            'HannPoissonWindow',
        +            'HannWindow',
        +            'HaradaNortonGroupHN',
        +            'HararyGraph',
        +            'HarmonicMean',
        +            'HarmonicMeanFilter',
        +            'HarmonicNumber',
        +            'Hash',
        +            'Haversine',
        +            'HazardFunction',
        +            'Head',
        +            'HeaderLines',
        +            'Heads',
        +            'HeavisideLambda',
        +            'HeavisidePi',
        +            'HeavisideTheta',
        +            'HeldGroupHe',
        +            'Here',
        +            'HermiteDecomposition',
        +            'HermiteH',
        +            'HermitianMatrixQ',
        +            'HessenbergDecomposition',
        +            'HexadecimalCharacter',
        +            'Hexahedron',
        +            'HiddenMarkovProcess',
        +            'HighlightGraph',
        +            'HighlightImage',
        +            'HighlightMesh',
        +            'Highlighted',
        +            'HighpassFilter',
        +            'HigmanSimsGroupHS',
        +            'HilbertFilter',
        +            'HilbertMatrix',
        +            'Histogram',
        +            'Histogram3D',
        +            'HistogramDistribution',
        +            'HistogramList',
        +            'HistogramTransform',
        +            'HistogramTransformInterpolation',
        +            'HistoricalPeriodData',
        +            'HitMissTransform',
        +            'HodgeDual',
        +            'HoeffdingD',
        +            'HoeffdingDTest',
        +            'Hold',
        +            'HoldAll',
        +            'HoldAllComplete',
        +            'HoldComplete',
        +            'HoldFirst',
        +            'HoldForm',
        +            'HoldPattern',
        +            'HoldRest',
        +            'HolidayCalendar',
        +            'HorizontalGauge',
        +            'HornerForm',
        +            'HostLookup',
        +            'HotellingTSquareDistribution',
        +            'HoytDistribution',
        +            'Hue',
        +            'HumanGrowthData',
        +            'HumpDownHump',
        +            'HumpEqual',
        +            'HurwitzLerchPhi',
        +            'HurwitzZeta',
        +            'HyperbolicDistribution',
        +            'HypercubeGraph',
        +            'HyperexponentialDistribution',
        +            'Hyperfactorial',
        +            'Hypergeometric0F1',
        +            'Hypergeometric0F1Regularized',
        +            'Hypergeometric1F1',
        +            'Hypergeometric1F1Regularized',
        +            'Hypergeometric2F1',
        +            'Hypergeometric2F1Regularized',
        +            'HypergeometricDistribution',
        +            'HypergeometricPFQ',
        +            'HypergeometricPFQRegularized',
        +            'HypergeometricU',
        +            'Hyperlink',
        +            'Hyperplane',
        +            'Hyphenation',
        +            'HypoexponentialDistribution',
        +            'HypothesisTestData',
        +
        +            'I',
        +            'IPAddress',
        +            'IconData',
        +            'IconRules',
        +            'Identity',
        +            'IdentityMatrix',
        +            'If',
        +            'IgnoreCase',
        +            'IgnoreDiacritics',
        +            'IgnorePunctuation',
        +            'IgnoringInactive',
        +            'Im',
        +            'Image',
        +            'Image3D',
        +            'Image3DSlices',
        +            'ImageAccumulate',
        +            'ImageAdd',
        +            'ImageAdjust',
        +            'ImageAlign',
        +            'ImageApply',
        +            'ImageApplyIndexed',
        +            'ImageAspectRatio',
        +            'ImageAssemble',
        +            'ImageCapture',
        +            'ImageChannels',
        +            'ImageClip',
        +            'ImageCollage',
        +            'ImageColorSpace',
        +            'ImageCompose',
        +            'ImageConvolve',
        +            'ImageCooccurrence',
        +            'ImageCorners',
        +            'ImageCorrelate',
        +            'ImageCorrespondingPoints',
        +            'ImageCrop',
        +            'ImageData',
        +            'ImageDeconvolve',
        +            'ImageDemosaic',
        +            'ImageDifference',
        +            'ImageDimensions',
        +            'ImageDisplacements',
        +            'ImageDistance',
        +            'ImageEffect',
        +            'ImageExposureCombine',
        +            'ImageFeatureTrack',
        +            'ImageFileApply',
        +            'ImageFileFilter',
        +            'ImageFileScan',
        +            'ImageFilter',
        +            'ImageFocusCombine',
        +            'ImageForestingComponents',
        +            'ImageFormattingWidth',
        +            'ImageForwardTransformation',
        +            'ImageHistogram',
        +            'ImageIdentify',
        +            'ImageInstanceQ',
        +            'ImageKeypoints',
        +            'ImageLevels',
        +            'ImageLines',
        +            'ImageMargins',
        +            'ImageMarker',
        +            'ImageMeasurements',
        +            'ImageMesh',
        +            'ImageMultiply',
        +            'ImagePad',
        +            'ImagePadding',
        +            'ImagePartition',
        +            'ImagePeriodogram',
        +            'ImagePerspectiveTransformation',
        +            'ImageQ',
        +            'ImageReflect',
        +            'ImageResize',
        +            'ImageResolution',
        +            'ImageRotate',
        +            'ImageSaliencyFilter',
        +            'ImageScaled',
        +            'ImageScan',
        +            'ImageSize',
        +            'ImageSizeAction',
        +            'ImageSizeMultipliers',
        +            'ImageSubtract',
        +            'ImageTake',
        +            'ImageTransformation',
        +            'ImageTrim',
        +            'ImageType',
        +            'ImageValue',
        +            'ImageValuePositions',
        +            'ImagingDevice',
        +            'ImplicitRegion',
        +            'Implies',
        +            'Import',
        +            'ImportOptions',
        +            'ImportString',
        +            'ImprovementImportance',
        +            'In',
        +            'InString',
        +            'Inactivate',
        +            'Inactive',
        +            'IncidenceGraph',
        +            'IncidenceList',
        +            'IncidenceMatrix',
        +            'IncludeConstantBasis',
        +            'IncludeGeneratorTasks',
        +            'IncludeInflections',
        +            'IncludeMetaInformation',
        +            'IncludePods',
        +            'IncludeQuantities',
        +            'IncludeWindowTimes',
        +            'Increment',
        +            'IndefiniteMatrixQ',
        +            'IndependenceTest',
        +            'IndependentEdgeSetQ',
        +            'IndependentUnit',
        +            'IndependentVertexSetQ',
        +            'Indeterminate',
        +            'IndeterminateThreshold',
        +            'IndexGraph',
        +            'Indexed',
        +            'InexactNumberQ',
        +            'InfiniteLine',
        +            'InfinitePlane',
        +            'Infinity',
        +            'Infix',
        +            'InflationAdjust',
        +            'InflationMethod',
        +            'Information',
        +            'InheritScope',
        +            'Inherited',
        +            'InhomogeneousPoissonProcess',
        +            'InitialEvaluationHistory',
        +            'Initialization',
        +            'InitializationCell',
        +            'Inner',
        +            'Inpaint',
        +            'Input',
        +            'InputAliases',
        +            'InputAssumptions',
        +            'InputAutoReplacements',
        +            'InputField',
        +            'InputForm',
        +            'InputNamePacket',
        +            'InputNotebook',
        +            'InputPacket',
        +            'InputStream',
        +            'InputString',
        +            'InputStringPacket',
        +            'Insert',
        +            'InsertLinebreaks',
        +            'InsertResults',
        +            'InsertionFunction',
        +            'Inset',
        +            'Insphere',
        +            'Install',
        +            'InstallService',
        +            'Integer',
        +            'IntegerDigits',
        +            'IntegerExponent',
        +            'IntegerLength',
        +            'IntegerName',
        +            'IntegerPart',
        +            'IntegerPartitions',
        +            'IntegerQ',
        +            'IntegerReverse',
        +            'IntegerString',
        +            'Integers',
        +            'Integrate',
        +            'Interactive',
        +            'InteractiveTradingChart',
        +            'Interleaving',
        +            'InternallyBalancedDecomposition',
        +            'InterpolatingFunction',
        +            'InterpolatingPolynomial',
        +            'Interpolation',
        +            'InterpolationOrder',
        +            'InterpolationPoints',
        +            'Interpretation',
        +            'InterpretationBox',
        +            'InterpretationBoxOptions',
        +            'Interpreter',
        +            'InterquartileRange',
        +            'Interrupt',
        +            'IntersectingQ',
        +            'Intersection',
        +            'Interval',
        +            'IntervalIntersection',
        +            'IntervalMemberQ',
        +            'IntervalSlider',
        +            'IntervalUnion',
        +            'Inverse',
        +            'InverseBetaRegularized',
        +            'InverseCDF',
        +            'InverseChiSquareDistribution',
        +            'InverseContinuousWaveletTransform',
        +            'InverseDistanceTransform',
        +            'InverseEllipticNomeQ',
        +            'InverseErf',
        +            'InverseErfc',
        +            'InverseFourier',
        +            'InverseFourierCosTransform',
        +            'InverseFourierSequenceTransform',
        +            'InverseFourierSinTransform',
        +            'InverseFourierTransform',
        +            'InverseFunction',
        +            'InverseFunctions',
        +            'InverseGammaDistribution',
        +            'InverseGammaRegularized',
        +            'InverseGaussianDistribution',
        +            'InverseGudermannian',
        +            'InverseHaversine',
        +            'InverseJacobiCD',
        +            'InverseJacobiCN',
        +            'InverseJacobiCS',
        +            'InverseJacobiDC',
        +            'InverseJacobiDN',
        +            'InverseJacobiDS',
        +            'InverseJacobiNC',
        +            'InverseJacobiND',
        +            'InverseJacobiNS',
        +            'InverseJacobiSC',
        +            'InverseJacobiSD',
        +            'InverseJacobiSN',
        +            'InverseLaplaceTransform',
        +            'InverseMellinTransform',
        +            'InversePermutation',
        +            'InverseRadon',
        +            'InverseSeries',
        +            'InverseSurvivalFunction',
        +            'InverseTransformedRegion',
        +            'InverseWaveletTransform',
        +            'InverseWeierstrassP',
        +            'InverseWishartMatrixDistribution',
        +            'InverseZTransform',
        +            'Invisible',
        +            'IrreduciblePolynomialQ',
        +            'IslandData',
        +            'IsolatingInterval',
        +            'IsomorphicGraphQ',
        +            'IsotopeData',
        +            'Italic',
        +            'Item',
        +            'ItemAspectRatio',
        +            'ItemSize',
        +            'ItemStyle',
        +            'ItoProcess',
        +
        +            'JaccardDissimilarity',
        +            'JacobiAmplitude',
        +            'JacobiCD',
        +            'JacobiCN',
        +            'JacobiCS',
        +            'JacobiDC',
        +            'JacobiDN',
        +            'JacobiDS',
        +            'JacobiNC',
        +            'JacobiND',
        +            'JacobiNS',
        +            'JacobiP',
        +            'JacobiSC',
        +            'JacobiSD',
        +            'JacobiSN',
        +            'JacobiSymbol',
        +            'JacobiZeta',
        +            'JankoGroupJ1',
        +            'JankoGroupJ2',
        +            'JankoGroupJ3',
        +            'JankoGroupJ4',
        +            'JarqueBeraALMTest',
        +            'JohnsonDistribution',
        +            'Join',
        +            'JoinAcross',
        +            'JoinForm',
        +            'Joined',
        +            'JoinedCurve',
        +            'JordanDecomposition',
        +            'JordanModelDecomposition',
        +            'JuliaSetBoettcher',
        +            'JuliaSetIterationCount',
        +            'JuliaSetPlot',
        +            'JuliaSetPoints',
        +            'JulianDate',
        +
        +            'KCoreComponents',
        +            'KDistribution',
        +            'KEdgeConnectedComponents',
        +            'KEdgeConnectedGraphQ',
        +            'KVertexConnectedComponents',
        +            'KVertexConnectedGraphQ',
        +            'KagiChart',
        +            'KaiserBesselWindow',
        +            'KaiserWindow',
        +            'KalmanEstimator',
        +            'KalmanFilter',
        +            'KarhunenLoeveDecomposition',
        +            'KaryTree',
        +            'KatzCentrality',
        +            'KelvinBei',
        +            'KelvinBer',
        +            'KelvinKei',
        +            'KelvinKer',
        +            'KendallTau',
        +            'KendallTauTest',
        +            'KernelMixtureDistribution',
        +            'KernelObject',
        +            'Kernels',
        +            'Key',
        +            'KeyCollisionFunction',
        +            'KeyComplement',
        +            'KeyDrop',
        +            'KeyDropFrom',
        +            'KeyExistsQ',
        +            'KeyFreeQ',
        +            'KeyIntersection',
        +            'KeyMap',
        +            'KeyMemberQ',
        +            'KeySelect',
        +            'KeySort',
        +            'KeySortBy',
        +            'KeyTake',
        +            'KeyUnion',
        +            'KeyValueMap',
        +            'KeyValuePattern',
        +            'KeypointStrength',
        +            'Keys',
        +            'Khinchin',
        +            'KillProcess',
        +            'KirchhoffGraph',
        +            'KirchhoffMatrix',
        +            'KleinInvariantJ',
        +            'KnapsackSolve',
        +            'KnightTourGraph',
        +            'KnotData',
        +            'KnownUnitQ',
        +            'KolmogorovSmirnovTest',
        +            'KroneckerDelta',
        +            'KroneckerModelDecomposition',
        +            'KroneckerProduct',
        +            'KroneckerSymbol',
        +            'KuiperTest',
        +            'KumaraswamyDistribution',
        +            'Kurtosis',
        +            'KuwaharaFilter',
        +
        +            'LABColor',
        +            'LCHColor',
        +            'LCM',
        +            'LQEstimatorGains',
        +            'LQGRegulator',
        +            'LQOutputRegulatorGains',
        +            'LQRegulatorGains',
        +            'LUDecomposition',
        +            'LUVColor',
        +            'Label',
        +            'LabelStyle',
        +            'Labeled',
        +            'LabelingFunction',
        +            'LaguerreL',
        +            'LakeData',
        +            'LambdaComponents',
        +            'LaminaData',
        +            'LanczosWindow',
        +            'LandauDistribution',
        +            'Language',
        +            'LanguageCategory',
        +            'LanguageData',
        +            'LanguageIdentify',
        +            'LaplaceDistribution',
        +            'LaplaceTransform',
        +            'Laplacian',
        +            'LaplacianFilter',
        +            'LaplacianGaussianFilter',
        +            'Large',
        +            'Larger',
        +            'Last',
        +            'Latitude',
        +            'LatitudeLongitude',
        +            'LatticeData',
        +            'LatticeReduce',
        +            'LaunchKernels',
        +            'LayerSizeFunction',
        +            'LayeredGraphPlot',
        +            'LeaderSize',
        +            'LeafCount',
        +            'LeapYearQ',
        +            'LeastSquares',
        +            'LeastSquaresFilterKernel',
        +            'Left',
        +            'LeftArrow',
        +            'LeftArrowBar',
        +            'LeftArrowRightArrow',
        +            'LeftDownTeeVector',
        +            'LeftDownVector',
        +            'LeftDownVectorBar',
        +            'LeftRightArrow',
        +            'LeftRightVector',
        +            'LeftTee',
        +            'LeftTeeArrow',
        +            'LeftTeeVector',
        +            'LeftTriangle',
        +            'LeftTriangleBar',
        +            'LeftTriangleEqual',
        +            'LeftUpDownVector',
        +            'LeftUpTeeVector',
        +            'LeftUpVector',
        +            'LeftUpVectorBar',
        +            'LeftVector',
        +            'LeftVectorBar',
        +            'LegendAppearance',
        +            'LegendFunction',
        +            'LegendLabel',
        +            'LegendLayout',
        +            'LegendMargins',
        +            'LegendMarkerSize',
        +            'LegendMarkers',
        +            'Legended',
        +            'LegendreP',
        +            'LegendreQ',
        +            'Length',
        +            'LengthWhile',
        +            'LerchPhi',
        +            'Less',
        +            'LessEqual',
        +            'LessEqualGreater',
        +            'LessEqualThan',
        +            'LessFullEqual',
        +            'LessGreater',
        +            'LessLess',
        +            'LessSlantEqual',
        +            'LessThan',
        +            'LessTilde',
        +            'LetterCharacter',
        +            'LetterCounts',
        +            'LetterNumber',
        +            'LetterQ',
        +            'Level',
        +            'LeveneTest',
        +            'LeviCivitaTensor',
        +            'LevyDistribution',
        +            'LibraryDataType',
        +            'LibraryFunction',
        +            'LibraryFunctionError',
        +            'LibraryFunctionInformation',
        +            'LibraryFunctionLoad',
        +            'LibraryFunctionUnload',
        +            'LibraryLoad',
        +            'LibraryUnload',
        +            'LiftingFilterData',
        +            'LiftingWaveletTransform',
        +            'LightBlue',
        +            'LightBrown',
        +            'LightCyan',
        +            'LightGray',
        +            'LightGreen',
        +            'LightMagenta',
        +            'LightOrange',
        +            'LightPink',
        +            'LightPurple',
        +            'LightRed',
        +            'LightYellow',
        +            'Lighter',
        +            'Lighting',
        +            'LightingAngle',
        +            'Likelihood',
        +            'Limit',
        +            'LimitsPositioning',
        +            'LindleyDistribution',
        +            'Line',
        +            'LineBreakChart',
        +            'LineGraph',
        +            'LineIndent',
        +            'LineIndentMaxFraction',
        +            'LineIntegralConvolutionPlot',
        +            'LineIntegralConvolutionScale',
        +            'LineLegend',
        +            'LineSpacing',
        +            'LinearFractionalTransform',
        +            'LinearGradientImage',
        +            'LinearModelFit',
        +            'LinearOffsetFunction',
        +            'LinearProgramming',
        +            'LinearRecurrence',
        +            'LinearSolve',
        +            'LinearSolveFunction',
        +            'LinearizingTransformationData',
        +            'LinkActivate',
        +            'LinkClose',
        +            'LinkConnect',
        +            'LinkCreate',
        +            'LinkFunction',
        +            'LinkInterrupt',
        +            'LinkLaunch',
        +            'LinkObject',
        +            'LinkPatterns',
        +            'LinkProtocol',
        +            'LinkRankCentrality',
        +            'LinkRead',
        +            'LinkReadyQ',
        +            'LinkWrite',
        +            'Links',
        +            'LiouvilleLambda',
        +            'List',
        +            'ListAnimate',
        +            'ListContourPlot',
        +            'ListContourPlot3D',
        +            'ListConvolve',
        +            'ListCorrelate',
        +            'ListCurvePathPlot',
        +            'ListDeconvolve',
        +            'ListDensityPlot',
        +            'ListDensityPlot3D',
        +            'ListFormat',
        +            'ListFourierSequenceTransform',
        +            'ListInterpolation',
        +            'ListLineIntegralConvolutionPlot',
        +            'ListLinePlot',
        +            'ListLogLinearPlot',
        +            'ListLogLogPlot',
        +            'ListLogPlot',
        +            'ListPicker',
        +            'ListPickerBox',
        +            'ListPickerBoxOptions',
        +            'ListPlay',
        +            'ListPlot',
        +            'ListPlot3D',
        +            'ListPointPlot3D',
        +            'ListPolarPlot',
        +            'ListQ',
        +            'ListSliceContourPlot3D',
        +            'ListSliceDensityPlot3D',
        +            'ListSliceVectorPlot3D',
        +            'ListStepPlot',
        +            'ListStreamDensityPlot',
        +            'ListStreamPlot',
        +            'ListSurfacePlot3D',
        +            'ListVectorDensityPlot',
        +            'ListVectorPlot',
        +            'ListVectorPlot3D',
        +            'ListZTransform',
        +            'Listable',
        +            'LocalAdaptiveBinarize',
        +            'LocalCache',
        +            'LocalClusteringCoefficient',
        +            'LocalObject',
        +            'LocalObjects',
        +            'LocalSymbol',
        +            'LocalTime',
        +            'LocalTimeZone',
        +            'LocalizeVariables',
        +            'LocationEquivalenceTest',
        +            'LocationTest',
        +            'Locator',
        +            'LocatorAutoCreate',
        +            'LocatorPane',
        +            'LocatorRegion',
        +            'Locked',
        +            'Log',
        +            'Log10',
        +            'Log2',
        +            'LogBarnesG',
        +            'LogGamma',
        +            'LogGammaDistribution',
        +            'LogIntegral',
        +            'LogLikelihood',
        +            'LogLinearPlot',
        +            'LogLogPlot',
        +            'LogLogisticDistribution',
        +            'LogMultinormalDistribution',
        +            'LogNormalDistribution',
        +            'LogPlot',
        +            'LogRankTest',
        +            'LogSeriesDistribution',
        +            'LogicalExpand',
        +            'LogisticDistribution',
        +            'LogisticSigmoid',
        +            'LogitModelFit',
        +            'LongLeftArrow',
        +            'LongLeftRightArrow',
        +            'LongRightArrow',
        +            'Longest',
        +            'LongestCommonSequence',
        +            'LongestCommonSequencePositions',
        +            'LongestCommonSubsequence',
        +            'LongestCommonSubsequencePositions',
        +            'LongestOrderedSequence',
        +            'Longitude',
        +            'Lookup',
        +            'LoopFreeGraphQ',
        +            'LowerCaseQ',
        +            'LowerLeftArrow',
        +            'LowerRightArrow',
        +            'LowerTriangularize',
        +            'LowpassFilter',
        +            'LucasL',
        +            'LuccioSamiComponents',
        +            'LunarEclipse',
        +            'LyapunovSolve',
        +            'LyonsGroupLy',
        +
        +            'MAProcess',
        +            'MachineNumberQ',
        +            'MachinePrecision',
        +            'Magenta',
        +            'Magnification',
        +            'Magnify',
        +            'MailReceiverFunction',
        +            'MailResponseFunction',
        +            'Majority',
        +            'MakeBoxes',
        +            'MakeExpression',
        +            'ManagedLibraryExpressionID',
        +            'ManagedLibraryExpressionQ',
        +            'MandelbrotSetBoettcher',
        +            'MandelbrotSetDistance',
        +            'MandelbrotSetIterationCount',
        +            'MandelbrotSetMemberQ',
        +            'MandelbrotSetPlot',
        +            'MangoldtLambda',
        +            'ManhattanDistance',
        +            'Manipulate',
        +            'Manipulator',
        +            'MannWhitneyTest',
        +            'MannedSpaceMissionData',
        +            'MantissaExponent',
        +            'Manual',
        +            'Map',
        +            'MapAll',
        +            'MapAt',
        +            'MapIndexed',
        +            'MapThread',
        +            'MarchenkoPasturDistribution',
        +            'MarcumQ',
        +            'MardiaCombinedTest',
        +            'MardiaKurtosisTest',
        +            'MardiaSkewnessTest',
        +            'MarginalDistribution',
        +            'MarkovProcessProperties',
        +            'Masking',
        +            'MatchLocalNames',
        +            'MatchQ',
        +            'MatchingDissimilarity',
        +            'MathMLForm',
        +            'MathematicalFunctionData',
        +            'MathieuC',
        +            'MathieuCPrime',
        +            'MathieuCharacteristicA',
        +            'MathieuCharacteristicB',
        +            'MathieuCharacteristicExponent',
        +            'MathieuGroupM11',
        +            'MathieuGroupM12',
        +            'MathieuGroupM22',
        +            'MathieuGroupM23',
        +            'MathieuGroupM24',
        +            'MathieuS',
        +            'MathieuSPrime',
        +            'Matrices',
        +            'MatrixExp',
        +            'MatrixForm',
        +            'MatrixFunction',
        +            'MatrixLog',
        +            'MatrixNormalDistribution',
        +            'MatrixPlot',
        +            'MatrixPower',
        +            'MatrixPropertyDistribution',
        +            'MatrixQ',
        +            'MatrixRank',
        +            'MatrixTDistribution',
        +            'Max',
        +            'MaxCellMeasure',
        +            'MaxDetect',
        +            'MaxExtraBandwidths',
        +            'MaxExtraConditions',
        +            'MaxFeatureDisplacement',
        +            'MaxFeatures',
        +            'MaxFilter',
        +            'MaxItems',
        +            'MaxIterations',
        +            'MaxMemoryUsed',
        +            'MaxMixtureKernels',
        +            'MaxPlotPoints',
        +            'MaxRecursion',
        +            'MaxStableDistribution',
        +            'MaxStepFraction',
        +            'MaxStepSize',
        +            'MaxSteps',
        +            'MaxTrainingRounds',
        +            'MaxValue',
        +            'MaxWordGap',
        +            'MaximalBy',
        +            'Maximize',
        +            'MaxwellDistribution',
        +            'McLaughlinGroupMcL',
        +            'Mean',
        +            'MeanAbsoluteLossLayer',
        +            'MeanClusteringCoefficient',
        +            'MeanDegreeConnectivity',
        +            'MeanDeviation',
        +            'MeanFilter',
        +            'MeanGraphDistance',
        +            'MeanNeighborDegree',
        +            'MeanShift',
        +            'MeanShiftFilter',
        +            'MeanSquaredLossLayer',
        +            'Median',
        +            'MedianDeviation',
        +            'MedianFilter',
        +            'MedicalTestData',
        +            'Medium',
        +            'MeijerG',
        +            'MeijerGReduce',
        +            'MeixnerDistribution',
        +            'MellinConvolve',
        +            'MellinTransform',
        +            'MemberQ',
        +            'MemoryConstrained',
        +            'MemoryConstraint',
        +            'MemoryInUse',
        +            'MenuCommandKey',
        +            'MenuPacket',
        +            'MenuSortingValue',
        +            'MenuStyle',
        +            'MenuView',
        +            'Merge',
        +            'MersennePrimeExponent',
        +            'MersennePrimeExponentQ',
        +            'Mesh',
        +            'MeshCellCentroid',
        +            'MeshCellCount',
        +            'MeshCellHighlight',
        +            'MeshCellIndex',
        +            'MeshCellLabel',
        +            'MeshCellMarker',
        +            'MeshCellMeasure',
        +            'MeshCellQuality',
        +            'MeshCellShapeFunction',
        +            'MeshCellStyle',
        +            'MeshCells',
        +            'MeshCoordinates',
        +            'MeshFunctions',
        +            'MeshPrimitives',
        +            'MeshQualityGoal',
        +            'MeshRefinementFunction',
        +            'MeshRegion',
        +            'MeshRegionQ',
        +            'MeshShading',
        +            'MeshStyle',
        +            'Message',
        +            'MessageDialog',
        +            'MessageList',
        +            'MessageName',
        +            'MessagePacket',
        +            'Messages',
        +            'MetaInformation',
        +            'MeteorShowerData',
        +            'Method',
        +            'MexicanHatWavelet',
        +            'MeyerWavelet',
        +            'Min',
        +            'MinColorDistance',
        +            'MinDetect',
        +            'MinFilter',
        +            'MinIntervalSize',
        +            'MinMax',
        +            'MinStableDistribution',
        +            'MinValue',
        +            'MineralData',
        +            'MinimalBy',
        +            'MinimalPolynomial',
        +            'MinimalStateSpaceModel',
        +            'Minimize',
        +            'MinimumTimeIncrement',
        +            'MinkowskiQuestionMark',
        +            'MinorPlanetData',
        +            'Minors',
        +            'Minus',
        +            'MinusPlus',
        +            'Missing',
        +            'MissingBehavior',
        +            'MissingDataMethod',
        +            'MissingDataRules',
        +            'MissingQ',
        +            'MissingString',
        +            'MissingStyle',
        +            'MittagLefflerE',
        +            'MixedGraphQ',
        +            'MixedMagnitude',
        +            'MixedRadix',
        +            'MixedRadixQuantity',
        +            'MixedUnit',
        +            'MixtureDistribution',
        +            'Mod',
        +            'Modal',
        +            'ModularLambda',
        +            'Module',
        +            'Modulus',
        +            'MoebiusMu',
        +            'Moment',
        +            'MomentConvert',
        +            'MomentEvaluate',
        +            'MomentGeneratingFunction',
        +            'MomentOfInertia',
        +            'Monday',
        +            'Monitor',
        +            'MonomialList',
        +            'MonsterGroupM',
        +            'MoonPhase',
        +            'MoonPosition',
        +            'MorletWavelet',
        +            'MorphologicalBinarize',
        +            'MorphologicalBranchPoints',
        +            'MorphologicalComponents',
        +            'MorphologicalEulerNumber',
        +            'MorphologicalGraph',
        +            'MorphologicalPerimeter',
        +            'MorphologicalTransform',
        +            'MortalityData',
        +            'Most',
        +            'MountainData',
        +            'MouseAnnotation',
        +            'MouseAppearance',
        +            'MousePosition',
        +            'Mouseover',
        +            'MovieData',
        +            'MovingAverage',
        +            'MovingMap',
        +            'MovingMedian',
        +            'MoyalDistribution',
        +            'Multicolumn',
        +            'MultiedgeStyle',
        +            'MultigraphQ',
        +            'Multinomial',
        +            'MultinomialDistribution',
        +            'MultinormalDistribution',
        +            'MultiplicativeOrder',
        +            'Multiselection',
        +            'MultivariateHypergeometricDistribution',
        +            'MultivariatePoissonDistribution',
        +            'MultivariateTDistribution',
        +
        +            'N',
        +            'NArgMax',
        +            'NArgMin',
        +            'NCache',
        +            'NDEigensystem',
        +            'NDEigenvalues',
        +            'NDSolve',
        +            'NDSolveValue',
        +            'NExpectation',
        +            'NHoldAll',
        +            'NHoldFirst',
        +            'NHoldRest',
        +            'NIntegrate',
        +            'NMaxValue',
        +            'NMaximize',
        +            'NMinValue',
        +            'NMinimize',
        +            'NProbability',
        +            'NProduct',
        +            'NRoots',
        +            'NSolve',
        +            'NSum',
        +            'NakagamiDistribution',
        +            'NameQ',
        +            'Names',
        +            'Nand',
        +            'Nearest',
        +            'NearestFunction',
        +            'NearestNeighborGraph',
        +            'NebulaData',
        +            'NeedlemanWunschSimilarity',
        +            'Needs',
        +            'Negative',
        +            'NegativeBinomialDistribution',
        +            'NegativeDefiniteMatrixQ',
        +            'NegativeMultinomialDistribution',
        +            'NegativeSemidefiniteMatrixQ',
        +            'NeighborhoodData',
        +            'NeighborhoodGraph',
        +            'Nest',
        +            'NestGraph',
        +            'NestList',
        +            'NestWhile',
        +            'NestWhileList',
        +            'NestedGreaterGreater',
        +            'NestedLessLess',
        +            'NetChain',
        +            'NetDecoder',
        +            'NetEncoder',
        +            'NetExtract',
        +            'NetGraph',
        +            'NetInitialize',
        +            'NetPort',
        +            'NetTrain',
        +            'NeumannValue',
        +            'NevilleThetaC',
        +            'NevilleThetaD',
        +            'NevilleThetaN',
        +            'NevilleThetaS',
        +            'NextCell',
        +            'NextPrime',
        +            'NextScheduledTaskTime',
        +            'NicholsGridLines',
        +            'NicholsPlot',
        +            'NightHemisphere',
        +            'NoWhitespace',
        +            'NominalVariables',
        +            'NonCommutativeMultiply',
        +            'NonConstants',
        +            'NonNegative',
        +            'NonPositive',
        +            'NoncentralBetaDistribution',
        +            'NoncentralChiSquareDistribution',
        +            'NoncentralFRatioDistribution',
        +            'NoncentralStudentTDistribution',
        +            'None',
        +            'NoneTrue',
        +            'NonlinearModelFit',
        +            'NonlinearStateSpaceModel',
        +            'NonlocalMeansFilter',
        +            'Nor',
        +            'NorlundB',
        +            'Norm',
        +            'NormFunction',
        +            'Normal',
        +            'NormalDistribution',
        +            'NormalMatrixQ',
        +            'Normalize',
        +            'Normalized',
        +            'NormalizedSquaredEuclideanDistance',
        +            'NormalsFunction',
        +            'Not',
        +            'NotCongruent',
        +            'NotCupCap',
        +            'NotDoubleVerticalBar',
        +            'NotElement',
        +            'NotEqualTilde',
        +            'NotExists',
        +            'NotGreater',
        +            'NotGreaterEqual',
        +            'NotGreaterFullEqual',
        +            'NotGreaterGreater',
        +            'NotGreaterLess',
        +            'NotGreaterSlantEqual',
        +            'NotGreaterTilde',
        +            'NotHumpDownHump',
        +            'NotHumpEqual',
        +            'NotLeftTriangle',
        +            'NotLeftTriangleBar',
        +            'NotLeftTriangleEqual',
        +            'NotLess',
        +            'NotLessEqual',
        +            'NotLessFullEqual',
        +            'NotLessGreater',
        +            'NotLessLess',
        +            'NotLessSlantEqual',
        +            'NotLessTilde',
        +            'NotNestedGreaterGreater',
        +            'NotNestedLessLess',
        +            'NotPrecedes',
        +            'NotPrecedesEqual',
        +            'NotPrecedesSlantEqual',
        +            'NotPrecedesTilde',
        +            'NotReverseElement',
        +            'NotRightTriangle',
        +            'NotRightTriangleBar',
        +            'NotRightTriangleEqual',
        +            'NotSquareSubset',
        +            'NotSquareSubsetEqual',
        +            'NotSquareSuperset',
        +            'NotSquareSupersetEqual',
        +            'NotSubset',
        +            'NotSubsetEqual',
        +            'NotSucceeds',
        +            'NotSucceedsEqual',
        +            'NotSucceedsSlantEqual',
        +            'NotSucceedsTilde',
        +            'NotSuperset',
        +            'NotSupersetEqual',
        +            'NotTilde',
        +            'NotTildeEqual',
        +            'NotTildeFullEqual',
        +            'NotTildeTilde',
        +            'NotVerticalBar',
        +            'Notebook',
        +            'NotebookApply',
        +            'NotebookAutoSave',
        +            'NotebookClose',
        +            'NotebookDelete',
        +            'NotebookDirectory',
        +            'NotebookDynamicExpression',
        +            'NotebookEvaluate',
        +            'NotebookEventActions',
        +            'NotebookFileName',
        +            'NotebookFind',
        +            'NotebookGet',
        +            'NotebookImport',
        +            'NotebookInformation',
        +            'NotebookLocate',
        +            'NotebookObject',
        +            'NotebookOpen',
        +            'NotebookPrint',
        +            'NotebookPut',
        +            'NotebookRead',
        +            'NotebookSave',
        +            'NotebookSelection',
        +            'NotebookTemplate',
        +            'NotebookWrite',
        +            'Notebooks',
        +            'Nothing',
        +            'NotificationFunction',
        +            'Now',
        +            'NuclearExplosionData',
        +            'NuclearReactorData',
        +            'Null',
        +            'NullRecords',
        +            'NullSpace',
        +            'NullWords',
        +            'Number',
        +            'NumberCompose',
        +            'NumberDecompose',
        +            'NumberExpand',
        +            'NumberFieldClassNumber',
        +            'NumberFieldDiscriminant',
        +            'NumberFieldFundamentalUnits',
        +            'NumberFieldIntegralBasis',
        +            'NumberFieldNormRepresentatives',
        +            'NumberFieldRegulator',
        +            'NumberFieldRootsOfUnity',
        +            'NumberFieldSignature',
        +            'NumberForm',
        +            'NumberFormat',
        +            'NumberLinePlot',
        +            'NumberMarks',
        +            'NumberMultiplier',
        +            'NumberPadding',
        +            'NumberPoint',
        +            'NumberQ',
        +            'NumberSeparator',
        +            'NumberSigns',
        +            'NumberString',
        +            'Numerator',
        +            'NumericFunction',
        +            'NumericQ',
        +            'NuttallWindow',
        +            'NyquistGridLines',
        +            'NyquistPlot',
        +
        +            'O',
        +            'ONanGroupON',
        +            'ObservabilityGramian',
        +            'ObservabilityMatrix',
        +            'ObservableDecomposition',
        +            'ObservableModelQ',
        +            'OceanData',
        +            'OddQ',
        +            'Off',
        +            'Offset',
        +            'On',
        +            'Once',
        +            'OneIdentity',
        +            'Opacity',
        +            'OpacityFunction',
        +            'OpacityFunctionScaling',
        +            'OpenAppend',
        +            'OpenRead',
        +            'OpenWrite',
        +            'Opener',
        +            'OpenerView',
        +            'Opening',
        +            'Operate',
        +            'OperatingSystem',
        +            'OptimumFlowData',
        +            'OptionValue',
        +            'Optional',
        +            'OptionalElement',
        +            'Options',
        +            'OptionsPattern',
        +            'Or',
        +            'Orange',
        +            'Order',
        +            'OrderDistribution',
        +            'OrderedQ',
        +            'Ordering',
        +            'Orderless',
        +            'OrderlessPatternSequence',
        +            'OrnsteinUhlenbeckProcess',
        +            'OrthogonalMatrixQ',
        +            'Orthogonalize',
        +            'Out',
        +            'Outer',
        +            'OutputControllabilityMatrix',
        +            'OutputControllableModelQ',
        +            'OutputForm',
        +            'OutputNamePacket',
        +            'OutputResponse',
        +            'OutputSizeLimit',
        +            'OutputStream',
        +            'OverBar',
        +            'OverDot',
        +            'OverHat',
        +            'OverTilde',
        +            'OverVector',
        +            'Overflow',
        +            'Overlaps',
        +            'Overlay',
        +            'Overscript',
        +            'OverscriptBox',
        +            'OverscriptBoxOptions',
        +            'OverwriteTarget',
        +            'OwenT',
        +            'OwnValues',
        +
        +            'PDF',
        +            'PERTDistribution',
        +            'PIDData',
        +            'PIDDerivativeFilter',
        +            'PIDFeedforward',
        +            'PIDTune',
        +            'PackingMethod',
        +            'PadLeft',
        +            'PadRight',
        +            'PaddedForm',
        +            'Padding',
        +            'PaddingSize',
        +            'PadeApproximant',
        +            'PageBreakAbove',
        +            'PageBreakBelow',
        +            'PageBreakWithin',
        +            'PageFooters',
        +            'PageHeaders',
        +            'PageRankCentrality',
        +            'PageTheme',
        +            'PageWidth',
        +            'Pagination',
        +            'PairedBarChart',
        +            'PairedHistogram',
        +            'PairedSmoothHistogram',
        +            'PairedTTest',
        +            'PairedZTest',
        +            'PaletteNotebook',
        +            'PalindromeQ',
        +            'Pane',
        +            'PaneSelector',
        +            'Panel',
        +            'Paneled',
        +            'ParabolicCylinderD',
        +            'ParagraphIndent',
        +            'ParagraphSpacing',
        +            'ParallelArray',
        +            'ParallelCombine',
        +            'ParallelDo',
        +            'ParallelEvaluate',
        +            'ParallelMap',
        +            'ParallelNeeds',
        +            'ParallelProduct',
        +            'ParallelSubmit',
        +            'ParallelSum',
        +            'ParallelTable',
        +            'ParallelTry',
        +            'Parallelepiped',
        +            'Parallelization',
        +            'Parallelize',
        +            'Parallelogram',
        +            'ParameterEstimator',
        +            'ParameterMixtureDistribution',
        +            'ParametricFunction',
        +            'ParametricNDSolve',
        +            'ParametricNDSolveValue',
        +            'ParametricPlot',
        +            'ParametricPlot3D',
        +            'ParametricRegion',
        +            'ParentBox',
        +            'ParentCell',
        +            'ParentDirectory',
        +            'ParentNotebook',
        +            'ParetoDistribution',
        +            'ParkData',
        +            'Part',
        +            'PartBehavior',
        +            'PartOfSpeech',
        +            'PartProtection',
        +            'PartialCorrelationFunction',
        +            'ParticleAcceleratorData',
        +            'ParticleData',
        +            'Partition',
        +            'PartitionGranularity',
        +            'PartitionsP',
        +            'PartitionsQ',
        +            'ParzenWindow',
        +            'PascalDistribution',
        +            'PassEventsDown',
        +            'PassEventsUp',
        +            'Paste',
        +            'PasteButton',
        +            'Path',
        +            'PathGraph',
        +            'PathGraphQ',
        +            'Pattern',
        +            'PatternSequence',
        +            'PatternTest',
        +            'PaulWavelet',
        +            'PauliMatrix',
        +            'Pause',
        +            'PeakDetect',
        +            'PearsonChiSquareTest',
        +            'PearsonCorrelationTest',
        +            'PearsonDistribution',
        +            'PerfectNumber',
        +            'PerfectNumberQ',
        +            'PerformanceGoal',
        +            'PeriodicBoundaryCondition',
        +            'Periodogram',
        +            'PeriodogramArray',
        +            'Permanent',
        +            'Permissions',
        +            'PermissionsGroup',
        +            'PermissionsGroups',
        +            'PermissionsKey',
        +            'PermissionsKeys',
        +            'PermutationCycles',
        +            'PermutationCyclesQ',
        +            'PermutationGroup',
        +            'PermutationLength',
        +            'PermutationList',
        +            'PermutationListQ',
        +            'PermutationMax',
        +            'PermutationMin',
        +            'PermutationOrder',
        +            'PermutationPower',
        +            'PermutationProduct',
        +            'PermutationReplace',
        +            'PermutationSupport',
        +            'Permutations',
        +            'Permute',
        +            'PeronaMalikFilter',
        +            'PersonData',
        +            'PetersenGraph',
        +            'PhaseMargins',
        +            'PhaseRange',
        +            'PhysicalSystemData',
        +            'Pi',
        +            'Pick',
        +            'PieChart',
        +            'PieChart3D',
        +            'Piecewise',
        +            'PiecewiseExpand',
        +            'PillaiTrace',
        +            'PillaiTraceTest',
        +            'PingTime',
        +            'Pink',
        +            'PixelConstrained',
        +            'PixelValue',
        +            'PixelValuePositions',
        +            'Placed',
        +            'Placeholder',
        +            'PlaceholderReplace',
        +            'Plain',
        +            'PlanarGraph',
        +            'PlanarGraphQ',
        +            'PlanckRadiationLaw',
        +            'PlaneCurveData',
        +            'PlanetData',
        +            'PlanetaryMoonData',
        +            'PlantData',
        +            'Play',
        +            'PlayRange',
        +            'Plot',
        +            'Plot3D',
        +            'PlotLabel',
        +            'PlotLabels',
        +            'PlotLayout',
        +            'PlotLegends',
        +            'PlotMarkers',
        +            'PlotPoints',
        +            'PlotRange',
        +            'PlotRangeClipping',
        +            'PlotRangePadding',
        +            'PlotRegion',
        +            'PlotStyle',
        +            'PlotTheme',
        +            'Pluralize',
        +            'Plus',
        +            'PlusMinus',
        +            'Pochhammer',
        +            'PodStates',
        +            'PodWidth',
        +            'Point',
        +            'PointFigureChart',
        +            'PointLegend',
        +            'PointSize',
        +            'PoissonConsulDistribution',
        +            'PoissonDistribution',
        +            'PoissonProcess',
        +            'PoissonWindow',
        +            'PolarAxes',
        +            'PolarAxesOrigin',
        +            'PolarGridLines',
        +            'PolarPlot',
        +            'PolarTicks',
        +            'PoleZeroMarkers',
        +            'PolyGamma',
        +            'PolyLog',
        +            'PolyaAeppliDistribution',
        +            'Polygon',
        +            'PolygonalNumber',
        +            'PolyhedronData',
        +            'PolynomialExtendedGCD',
        +            'PolynomialGCD',
        +            'PolynomialLCM',
        +            'PolynomialMod',
        +            'PolynomialQ',
        +            'PolynomialQuotient',
        +            'PolynomialQuotientRemainder',
        +            'PolynomialReduce',
        +            'PolynomialRemainder',
        +            'PoolingLayer',
        +            'PopupMenu',
        +            'PopupView',
        +            'PopupWindow',
        +            'Position',
        +            'PositionIndex',
        +            'Positive',
        +            'PositiveDefiniteMatrixQ',
        +            'PositiveSemidefiniteMatrixQ',
        +            'PossibleZeroQ',
        +            'Postfix',
        +            'Power',
        +            'PowerDistribution',
        +            'PowerExpand',
        +            'PowerMod',
        +            'PowerModList',
        +            'PowerRange',
        +            'PowerSpectralDensity',
        +            'PowerSymmetricPolynomial',
        +            'PowersRepresentations',
        +            'PreDecrement',
        +            'PreIncrement',
        +            'PrecedenceForm',
        +            'Precedes',
        +            'PrecedesEqual',
        +            'PrecedesSlantEqual',
        +            'PrecedesTilde',
        +            'Precision',
        +            'PrecisionGoal',
        +            'Predict',
        +            'PredictorFunction',
        +            'PredictorInformation',
        +            'PredictorMeasurements',
        +            'PredictorMeasurementsObject',
        +            'PreemptProtect',
        +            'Prefix',
        +            'Prepend',
        +            'PrependTo',
        +            'PreserveImageOptions',
        +            'PreviousCell',
        +            'PriceGraphDistribution',
        +            'Prime',
        +            'PrimeNu',
        +            'PrimeOmega',
        +            'PrimePi',
        +            'PrimePowerQ',
        +            'PrimeQ',
        +            'PrimeZetaP',
        +            'Primes',
        +            'PrimitiveRoot',
        +            'PrimitiveRootList',
        +            'PrincipalComponents',
        +            'PrincipalValue',
        +            'Print',
        +            'PrintTemporary',
        +            'PrintableASCIIQ',
        +            'PrintingStyleEnvironment',
        +            'Printout3D',
        +            'Printout3DPreviewer',
        +            'Prism',
        +            'PrivateCellOptions',
        +            'PrivateFontOptions',
        +            'PrivateKey',
        +            'PrivateNotebookOptions',
        +            'Probability',
        +            'ProbabilityDistribution',
        +            'ProbabilityPlot',
        +            'ProbabilityScalePlot',
        +            'ProbitModelFit',
        +            'ProcessConnection',
        +            'ProcessDirectory',
        +            'ProcessEnvironment',
        +            'ProcessEstimator',
        +            'ProcessInformation',
        +            'ProcessObject',
        +            'ProcessParameterAssumptions',
        +            'ProcessParameterQ',
        +            'ProcessStatus',
        +            'Processes',
        +            'Product',
        +            'ProductDistribution',
        +            'ProductLog',
        +            'ProgressIndicator',
        +            'Projection',
        +            'Prolog',
        +            'Properties',
        +            'Property',
        +            'PropertyList',
        +            'PropertyValue',
        +            'Proportion',
        +            'Proportional',
        +            'Protect',
        +            'Protected',
        +            'ProteinData',
        +            'Pruning',
        +            'PseudoInverse',
        +            'PublicKey',
        +            'PulsarData',
        +            'PunctuationCharacter',
        +            'Purple',
        +            'Put',
        +            'PutAppend',
        +            'Pyramid',
        +
        +            'QBinomial',
        +            'QFactorial',
        +            'QGamma',
        +            'QHypergeometricPFQ',
        +            'QPochhammer',
        +            'QPolyGamma',
        +            'QRDecomposition',
        +            'QuadraticIrrationalQ',
        +            'Quantile',
        +            'QuantilePlot',
        +            'Quantity',
        +            'QuantityArray',
        +            'QuantityDistribution',
        +            'QuantityForm',
        +            'QuantityMagnitude',
        +            'QuantityQ',
        +            'QuantityUnit',
        +            'QuantityVariable',
        +            'QuantityVariableCanonicalUnit',
        +            'QuantityVariableDimensions',
        +            'QuantityVariableIdentifier',
        +            'QuantityVariablePhysicalQuantity',
        +            'Quartics',
        +            'QuartileDeviation',
        +            'QuartileSkewness',
        +            'Quartiles',
        +            'Query',
        +            'QueueProperties',
        +            'QueueingNetworkProcess',
        +            'QueueingProcess',
        +            'Quiet',
        +            'Quit',
        +            'Quotient',
        +            'QuotientRemainder',
        +
        +            'RGBColor',
        +            'RSolve',
        +            'RSolveValue',
        +            'RadialGradientImage',
        +            'RadialityCentrality',
        +            'RadicalBox',
        +            'RadicalBoxOptions',
        +            'RadioButton',
        +            'RadioButtonBar',
        +            'Radon',
        +            'RamanujanTau',
        +            'RamanujanTauL',
        +            'RamanujanTauTheta',
        +            'RamanujanTauZ',
        +            'Ramp',
        +            'RandomChoice',
        +            'RandomColor',
        +            'RandomComplex',
        +            'RandomEntity',
        +            'RandomFunction',
        +            'RandomGraph',
        +            'RandomImage',
        +            'RandomInteger',
        +            'RandomPermutation',
        +            'RandomPoint',
        +            'RandomPrime',
        +            'RandomReal',
        +            'RandomSample',
        +            'RandomVariate',
        +            'RandomWalkProcess',
        +            'RandomWord',
        +            'Range',
        +            'RangeFilter',
        +            'RankedMax',
        +            'RankedMin',
        +            'Raster',
        +            'Raster3D',
        +            'RasterSize',
        +            'Rasterize',
        +            'Rational',
        +            'Rationalize',
        +            'Rationals',
        +            'Ratios',
        +            'RawBoxes',
        +            'RawData',
        +            'RayleighDistribution',
        +            'Re',
        +            'ReIm',
        +            'Read',
        +            'ReadLine',
        +            'ReadList',
        +            'ReadProtected',
        +            'ReadString',
        +            'Real',
        +            'RealBlockDiagonalForm',
        +            'RealDigits',
        +            'RealExponent',
        +            'Reals',
        +            'Reap',
        +            'RecognitionPrior',
        +            'RecognitionThreshold',
        +            'Record',
        +            'RecordLists',
        +            'RecordSeparators',
        +            'Rectangle',
        +            'RectangleChart',
        +            'RectangleChart3D',
        +            'RecurrenceFilter',
        +            'RecurrenceTable',
        +            'Red',
        +            'Reduce',
        +            'ReferenceLineStyle',
        +            'Refine',
        +            'ReflectionMatrix',
        +            'ReflectionTransform',
        +            'Refresh',
        +            'RefreshRate',
        +            'RegionBinarize',
        +            'RegionBoundary',
        +            'RegionBounds',
        +            'RegionCentroid',
        +            'RegionDifference',
        +            'RegionDimension',
        +            'RegionDistance',
        +            'RegionDistanceFunction',
        +            'RegionEmbeddingDimension',
        +            'RegionFunction',
        +            'RegionIntersection',
        +            'RegionMeasure',
        +            'RegionMember',
        +            'RegionMemberFunction',
        +            'RegionMoment',
        +            'RegionNearest',
        +            'RegionNearestFunction',
        +            'RegionPlot',
        +            'RegionPlot3D',
        +            'RegionProduct',
        +            'RegionQ',
        +            'RegionResize',
        +            'RegionSize',
        +            'RegionSymmetricDifference',
        +            'RegionUnion',
        +            'RegularExpression',
        +            'RegularPolygon',
        +            'Regularization',
        +            'RegularlySampledQ',
        +            'RelationGraph',
        +            'ReleaseHold',
        +            'ReliabilityDistribution',
        +            'ReliefImage',
        +            'ReliefPlot',
        +            'Remove',
        +            'RemoveAlphaChannel',
        +            'RemoveAsynchronousTask',
        +            'RemoveBackground',
        +            'RemoveChannelListener',
        +            'RemoveDiacritics',
        +            'RemoveInputStreamMethod',
        +            'RemoveOutputStreamMethod',
        +            'RemoveProperty',
        +            'RemoveScheduledTask',
        +            'RemoveUsers',
        +            'RenameDirectory',
        +            'RenameFile',
        +            'RenewalProcess',
        +            'RenkoChart',
        +            'RepairMesh',
        +            'Repeated',
        +            'RepeatedNull',
        +            'RepeatedTiming',
        +            'RepeatingElement',
        +            'Replace',
        +            'ReplaceAll',
        +            'ReplaceImageValue',
        +            'ReplaceList',
        +            'ReplacePart',
        +            'ReplacePixelValue',
        +            'ReplaceRepeated',
        +            'RequiredPhysicalQuantities',
        +            'Resampling',
        +            'ResamplingAlgorithmData',
        +            'ResamplingMethod',
        +            'Rescale',
        +            'RescalingTransform',
        +            'ResetDirectory',
        +            'ResetScheduledTask',
        +            'ReshapeLayer',
        +            'Residue',
        +            'Resolve',
        +            'ResourceData',
        +            'ResourceObject',
        +            'ResourceRemove',
        +            'ResourceSearch',
        +            'ResponseForm',
        +            'Rest',
        +            'RestartInterval',
        +            'Restricted',
        +            'Resultant',
        +            'Return',
        +            'ReturnExpressionPacket',
        +            'ReturnPacket',
        +            'ReturnReceiptFunction',
        +            'ReturnTextPacket',
        +            'Reverse',
        +            'ReverseBiorthogonalSplineWavelet',
        +            'ReverseElement',
        +            'ReverseEquilibrium',
        +            'ReverseGraph',
        +            'ReverseUpEquilibrium',
        +            'RevolutionAxis',
        +            'RevolutionPlot3D',
        +            'RiccatiSolve',
        +            'RiceDistribution',
        +            'RidgeFilter',
        +            'RiemannR',
        +            'RiemannSiegelTheta',
        +            'RiemannSiegelZ',
        +            'RiemannXi',
        +            'Riffle',
        +            'Right',
        +            'RightArrow',
        +            'RightArrowBar',
        +            'RightArrowLeftArrow',
        +            'RightComposition',
        +            'RightCosetRepresentative',
        +            'RightDownTeeVector',
        +            'RightDownVector',
        +            'RightDownVectorBar',
        +            'RightTee',
        +            'RightTeeArrow',
        +            'RightTeeVector',
        +            'RightTriangle',
        +            'RightTriangleBar',
        +            'RightTriangleEqual',
        +            'RightUpDownVector',
        +            'RightUpTeeVector',
        +            'RightUpVector',
        +            'RightUpVectorBar',
        +            'RightVector',
        +            'RightVectorBar',
        +            'RiskAchievementImportance',
        +            'RiskReductionImportance',
        +            'RogersTanimotoDissimilarity',
        +            'RollPitchYawAngles',
        +            'RollPitchYawMatrix',
        +            'RomanNumeral',
        +            'Root',
        +            'RootApproximant',
        +            'RootIntervals',
        +            'RootLocusPlot',
        +            'RootMeanSquare',
        +            'RootOfUnityQ',
        +            'RootReduce',
        +            'RootSum',
        +            'Roots',
        +            'Rotate',
        +            'RotateLabel',
        +            'RotateLeft',
        +            'RotateRight',
        +            'RotationAction',
        +            'RotationMatrix',
        +            'RotationTransform',
        +            'Round',
        +            'RoundingRadius',
        +            'Row',
        +            'RowAlignments',
        +            'RowBox',
        +            'RowLines',
        +            'RowMinHeight',
        +            'RowReduce',
        +            'RowSpacings',
        +            'RowsEqual',
        +            'RudinShapiro',
        +            'RudvalisGroupRu',
        +            'Rule',
        +            'RuleDelayed',
        +            'RulePlot',
        +            'Run',
        +            'RunProcess',
        +            'RunScheduledTask',
        +            'RunThrough',
        +            'RuntimeAttributes',
        +            'RuntimeOptions',
        +            'RussellRaoDissimilarity',
        +
        +            'SARIMAProcess',
        +            'SARMAProcess',
        +            'SASTriangle',
        +            'SSSTriangle',
        +            'SameQ',
        +            'SameTest',
        +            'SampleDepth',
        +            'SampleRate',
        +            'SampledSoundFunction',
        +            'SampledSoundList',
        +            'SamplingPeriod',
        +            'SatelliteData',
        +            'SatisfiabilityCount',
        +            'SatisfiabilityInstances',
        +            'SatisfiableQ',
        +            'Saturday',
        +            'Save',
        +            'SaveDefinitions',
        +            'SavitzkyGolayMatrix',
        +            'SawtoothWave',
        +            'Scale',
        +            'ScaleDivisions',
        +            'ScaleOrigin',
        +            'ScalePadding',
        +            'ScaleRangeStyle',
        +            'ScaleRanges',
        +            'Scaled',
        +            'ScalingFunctions',
        +            'ScalingMatrix',
        +            'ScalingTransform',
        +            'Scan',
        +            'ScheduledTask',
        +            'ScheduledTaskActiveQ',
        +            'ScheduledTaskInformation',
        +            'ScheduledTaskObject',
        +            'ScheduledTasks',
        +            'SchurDecomposition',
        +            'ScientificForm',
        +            'ScorerGi',
        +            'ScorerGiPrime',
        +            'ScorerHi',
        +            'ScorerHiPrime',
        +            'ScreenStyleEnvironment',
        +            'ScriptBaselineShifts',
        +            'ScriptMinSize',
        +            'ScriptSizeMultipliers',
        +            'ScrollPosition',
        +            'Scrollbars',
        +            'ScrollingOptions',
        +            'SearchAdjustment',
        +            'SearchIndexObject',
        +            'SearchIndices',
        +            'SearchQueryString',
        +            'SearchResultObject',
        +            'Sec',
        +            'Sech',
        +            'SechDistribution',
        +            'SectorChart',
        +            'SectorChart3D',
        +            'SectorOrigin',
        +            'SectorSpacing',
        +            'SeedRandom',
        +            'Select',
        +            'SelectComponents',
        +            'SelectFirst',
        +            'Selectable',
        +            'SelectedCells',
        +            'SelectedNotebook',
        +            'SelectionCreateCell',
        +            'SelectionEvaluate',
        +            'SelectionEvaluateCreateCell',
        +            'SelectionMove',
        +            'SelfLoopStyle',
        +            'SemanticImport',
        +            'SemanticImportString',
        +            'SemanticInterpretation',
        +            'SemialgebraicComponentInstances',
        +            'SendMail',
        +            'SendMessage',
        +            'Sequence',
        +            'SequenceAlignment',
        +            'SequenceCases',
        +            'SequenceCount',
        +            'SequenceFold',
        +            'SequenceFoldList',
        +            'SequenceHold',
        +            'SequencePosition',
        +            'Series',
        +            'SeriesCoefficient',
        +            'SeriesData',
        +            'ServiceConnect',
        +            'ServiceDisconnect',
        +            'ServiceExecute',
        +            'ServiceObject',
        +            'SessionTime',
        +            'Set',
        +            'SetAccuracy',
        +            'SetAlphaChannel',
        +            'SetAttributes',
        +            'SetCloudDirectory',
        +            'SetCookies',
        +            'SetDelayed',
        +            'SetDirectory',
        +            'SetEnvironment',
        +            'SetFileDate',
        +            'SetOptions',
        +            'SetPermissions',
        +            'SetPrecision',
        +            'SetProperty',
        +            'SetSelectedNotebook',
        +            'SetSharedFunction',
        +            'SetSharedVariable',
        +            'SetStreamPosition',
        +            'SetSystemOptions',
        +            'SetUsers',
        +            'Setter',
        +            'SetterBar',
        +            'Setting',
        +            'Shallow',
        +            'ShannonWavelet',
        +            'ShapiroWilkTest',
        +            'Share',
        +            'Sharpen',
        +            'ShearingMatrix',
        +            'ShearingTransform',
        +            'ShellRegion',
        +            'ShenCastanMatrix',
        +            'ShiftRegisterSequence',
        +            'ShiftedGompertzDistribution',
        +            'Short',
        +            'ShortDownArrow',
        +            'ShortLeftArrow',
        +            'ShortRightArrow',
        +            'ShortUpArrow',
        +            'Shortest',
        +            'ShortestPathFunction',
        +            'Show',
        +            'ShowAutoSpellCheck',
        +            'ShowAutoStyles',
        +            'ShowCellBracket',
        +            'ShowCellLabel',
        +            'ShowCellTags',
        +            'ShowCursorTracker',
        +            'ShowGroupOpener',
        +            'ShowPageBreaks',
        +            'ShowSelection',
        +            'ShowSpecialCharacters',
        +            'ShowStringCharacters',
        +            'ShrinkingDelay',
        +            'SiderealTime',
        +            'SiegelTheta',
        +            'SiegelTukeyTest',
        +            'Sign',
        +            'SignPadding',
        +            'SignTest',
        +            'Signature',
        +            'SignedRankTest',
        +            'SignedRegionDistance',
        +            'SignificanceLevel',
        +            'SimilarityRules',
        +            'SimpleGraph',
        +            'SimpleGraphQ',
        +            'Simplex',
        +            'Simplify',
        +            'Sin',
        +            'SinIntegral',
        +            'Sinc',
        +            'SinghMaddalaDistribution',
        +            'SingleLetterItalics',
        +            'SingularValueDecomposition',
        +            'SingularValueList',
        +            'SingularValuePlot',
        +            'Sinh',
        +            'SinhIntegral',
        +            'SixJSymbol',
        +            'Skeleton',
        +            'SkeletonTransform',
        +            'SkellamDistribution',
        +            'SkewNormalDistribution',
        +            'Skewness',
        +            'SkinStyle',
        +            'Skip',
        +            'SliceContourPlot3D',
        +            'SliceDensityPlot3D',
        +            'SliceDistribution',
        +            'SliceVectorPlot3D',
        +            'SlideView',
        +            'Slider',
        +            'Slider2D',
        +            'Slot',
        +            'SlotSequence',
        +            'Small',
        +            'SmallCircle',
        +            'Smaller',
        +            'SmithDecomposition',
        +            'SmithDelayCompensator',
        +            'SmithWatermanSimilarity',
        +            'SmoothDensityHistogram',
        +            'SmoothHistogram',
        +            'SmoothHistogram3D',
        +            'SmoothKernelDistribution',
        +            'Snippet',
        +            'SocialMediaData',
        +            'SocketConnect',
        +            'SocketObject',
        +            'SoftmaxLayer',
        +            'SokalSneathDissimilarity',
        +            'SolarEclipse',
        +            'SolarSystemFeatureData',
        +            'SolidData',
        +            'SolidRegionQ',
        +            'Solve',
        +            'SolveAlways',
        +            'Sort',
        +            'SortBy',
        +            'Sound',
        +            'SoundNote',
        +            'SoundVolume',
        +            'SourceLink',
        +            'Sow',
        +            'SpaceCurveData',
        +            'Spacer',
        +            'Spacings',
        +            'Span',
        +            'SpanFromAbove',
        +            'SpanFromBoth',
        +            'SpanFromLeft',
        +            'SparseArray',
        +            'SpatialGraphDistribution',
        +            'Speak',
        +            'SpearmanRankTest',
        +            'SpearmanRho',
        +            'SpeciesData',
        +            'SpecificityGoal',
        +            'Spectrogram',
        +            'SpectrogramArray',
        +            'Specularity',
        +            'SpellingCorrection',
        +            'SpellingCorrectionList',
        +            'SpellingOptions',
        +            'Sphere',
        +            'SphericalBesselJ',
        +            'SphericalBesselY',
        +            'SphericalHankelH1',
        +            'SphericalHankelH2',
        +            'SphericalHarmonicY',
        +            'SphericalPlot3D',
        +            'SphericalRegion',
        +            'SphericalShell',
        +            'SpheroidalEigenvalue',
        +            'SpheroidalJoiningFactor',
        +            'SpheroidalPS',
        +            'SpheroidalPSPrime',
        +            'SpheroidalQS',
        +            'SpheroidalQSPrime',
        +            'SpheroidalRadialFactor',
        +            'SpheroidalS1',
        +            'SpheroidalS1Prime',
        +            'SpheroidalS2',
        +            'SpheroidalS2Prime',
        +            'SplicedDistribution',
        +            'SplineClosed',
        +            'SplineDegree',
        +            'SplineKnots',
        +            'SplineWeights',
        +            'Split',
        +            'SplitBy',
        +            'SpokenString',
        +            'Sqrt',
        +            'SqrtBox',
        +            'SqrtBoxOptions',
        +            'Square',
        +            'SquareFreeQ',
        +            'SquareIntersection',
        +            'SquareMatrixQ',
        +            'SquareSubset',
        +            'SquareSubsetEqual',
        +            'SquareSuperset',
        +            'SquareSupersetEqual',
        +            'SquareUnion',
        +            'SquareWave',
        +            'SquaredEuclideanDistance',
        +            'SquaresR',
        +            'StabilityMargins',
        +            'StabilityMarginsStyle',
        +            'StableDistribution',
        +            'Stack',
        +            'StackBegin',
        +            'StackComplete',
        +            'StackInhibit',
        +            'StadiumShape',
        +            'StandardAtmosphereData',
        +            'StandardDeviation',
        +            'StandardDeviationFilter',
        +            'StandardForm',
        +            'StandardOceanData',
        +            'Standardize',
        +            'Standardized',
        +            'StandbyDistribution',
        +            'Star',
        +            'StarClusterData',
        +            'StarData',
        +            'StarGraph',
        +            'StartAsynchronousTask',
        +            'StartOfLine',
        +            'StartOfString',
        +            'StartProcess',
        +            'StartScheduledTask',
        +            'StartingStepSize',
        +            'StateFeedbackGains',
        +            'StateOutputEstimator',
        +            'StateResponse',
        +            'StateSpaceModel',
        +            'StateSpaceRealization',
        +            'StateSpaceTransform',
        +            'StateTransformationLinearize',
        +            'StationaryDistribution',
        +            'StationaryWaveletPacketTransform',
        +            'StationaryWaveletTransform',
        +            'StatusArea',
        +            'StatusCentrality',
        +            'StepMonitor',
        +            'StieltjesGamma',
        +            'StirlingS1',
        +            'StirlingS2',
        +            'StopAsynchronousTask',
        +            'StopScheduledTask',
        +            'StoppingPowerData',
        +            'StrataVariables',
        +            'StratonovichProcess',
        +            'StreamColorFunction',
        +            'StreamColorFunctionScaling',
        +            'StreamDensityPlot',
        +            'StreamPlot',
        +            'StreamPoints',
        +            'StreamPosition',
        +            'StreamScale',
        +            'StreamStyle',
        +            'Streams',
        +            'String',
        +            'StringCases',
        +            'StringContainsQ',
        +            'StringCount',
        +            'StringDelete',
        +            'StringDrop',
        +            'StringEndsQ',
        +            'StringExpression',
        +            'StringExtract',
        +            'StringForm',
        +            'StringFormat',
        +            'StringFreeQ',
        +            'StringInsert',
        +            'StringJoin',
        +            'StringLength',
        +            'StringMatchQ',
        +            'StringPadLeft',
        +            'StringPadRight',
        +            'StringPart',
        +            'StringPartition',
        +            'StringPosition',
        +            'StringQ',
        +            'StringRepeat',
        +            'StringReplace',
        +            'StringReplaceList',
        +            'StringReplacePart',
        +            'StringReverse',
        +            'StringRiffle',
        +            'StringRotateLeft',
        +            'StringRotateRight',
        +            'StringSkeleton',
        +            'StringSplit',
        +            'StringStartsQ',
        +            'StringTake',
        +            'StringTemplate',
        +            'StringToStream',
        +            'StringTrim',
        +            'StripBoxes',
        +            'StripOnInput',
        +            'StripWrapperBoxes',
        +            'StructuralImportance',
        +            'StructuredArray',
        +            'StructuredSelection',
        +            'StruveH',
        +            'StruveL',
        +            'Stub',
        +            'StudentTDistribution',
        +            'Style',
        +            'StyleBox',
        +            'StyleData',
        +            'StyleDefinitions',
        +            'SubMinus',
        +            'SubPlus',
        +            'SubStar',
        +            'Subdivide',
        +            'Subfactorial',
        +            'Subgraph',
        +            'SubresultantPolynomialRemainders',
        +            'SubresultantPolynomials',
        +            'Subresultants',
        +            'Subscript',
        +            'SubscriptBox',
        +            'SubscriptBoxOptions',
        +            'Subsequences',
        +            'Subset',
        +            'SubsetEqual',
        +            'SubsetQ',
        +            'Subsets',
        +            'SubstitutionSystem',
        +            'Subsuperscript',
        +            'SubsuperscriptBox',
        +            'SubsuperscriptBoxOptions',
        +            'Subtract',
        +            'SubtractFrom',
        +            'Succeeds',
        +            'SucceedsEqual',
        +            'SucceedsSlantEqual',
        +            'SucceedsTilde',
        +            'SuchThat',
        +            'Sum',
        +            'SumConvergence',
        +            'SummationLayer',
        +            'SunPosition',
        +            'Sunday',
        +            'Sunrise',
        +            'Sunset',
        +            'SuperDagger',
        +            'SuperMinus',
        +            'SuperPlus',
        +            'SuperStar',
        +            'SupernovaData',
        +            'Superscript',
        +            'SuperscriptBox',
        +            'SuperscriptBoxOptions',
        +            'Superset',
        +            'SupersetEqual',
        +            'Surd',
        +            'SurfaceData',
        +            'SurvivalDistribution',
        +            'SurvivalFunction',
        +            'SurvivalModel',
        +            'SurvivalModelFit',
        +            'SuzukiDistribution',
        +            'SuzukiGroupSuz',
        +            'SwatchLegend',
        +            'Switch',
        +            'Symbol',
        +            'SymbolName',
        +            'SymletWavelet',
        +            'Symmetric',
        +            'SymmetricGroup',
        +            'SymmetricKey',
        +            'SymmetricMatrixQ',
        +            'SymmetricPolynomial',
        +            'SymmetricReduction',
        +            'Symmetrize',
        +            'SymmetrizedArray',
        +            'SymmetrizedArrayRules',
        +            'SymmetrizedDependentComponents',
        +            'SymmetrizedIndependentComponents',
        +            'SymmetrizedReplacePart',
        +            'SynchronousInitialization',
        +            'SynchronousUpdating',
        +            'SyntaxForm',
        +            'SyntaxInformation',
        +            'SyntaxLength',
        +            'SyntaxPacket',
        +            'SyntaxQ',
        +            'SystemDialogInput',
        +            'SystemInformation',
        +            'SystemOpen',
        +            'SystemOptions',
        +            'SystemsModelDelay',
        +            'SystemsModelDelayApproximate',
        +            'SystemsModelDelete',
        +            'SystemsModelDimensions',
        +            'SystemsModelExtract',
        +            'SystemsModelFeedbackConnect',
        +            'SystemsModelLabels',
        +            'SystemsModelLinearity',
        +            'SystemsModelMerge',
        +            'SystemsModelOrder',
        +            'SystemsModelParallelConnect',
        +            'SystemsModelSeriesConnect',
        +            'SystemsModelStateFeedbackConnect',
        +            'SystemsModelVectorRelativeOrders',
        +
        +            'TTest',
        +            'TabView',
        +            'Table',
        +            'TableAlignments',
        +            'TableDepth',
        +            'TableDirections',
        +            'TableForm',
        +            'TableHeadings',
        +            'TableSpacing',
        +            'TagBox',
        +            'TagBoxOptions',
        +            'TagSet',
        +            'TagSetDelayed',
        +            'TagUnset',
        +            'TaggingRules',
        +            'Take',
        +            'TakeDrop',
        +            'TakeLargest',
        +            'TakeLargestBy',
        +            'TakeSmallest',
        +            'TakeSmallestBy',
        +            'TakeWhile',
        +            'Tally',
        +            'Tan',
        +            'Tanh',
        +            'TargetDevice',
        +            'TargetFunctions',
        +            'TargetUnits',
        +            'TautologyQ',
        +            'TeXForm',
        +            'TelegraphProcess',
        +            'TemplateApply',
        +            'TemplateBox',
        +            'TemplateBoxOptions',
        +            'TemplateExpression',
        +            'TemplateIf',
        +            'TemplateObject',
        +            'TemplateSequence',
        +            'TemplateSlot',
        +            'TemplateWith',
        +            'TemporalData',
        +            'TemporalRegularity',
        +            'Temporary',
        +            'TensorContract',
        +            'TensorDimensions',
        +            'TensorExpand',
        +            'TensorProduct',
        +            'TensorRank',
        +            'TensorReduce',
        +            'TensorSymmetry',
        +            'TensorTranspose',
        +            'TensorWedge',
        +            'TestID',
        +            'TestReport',
        +            'TestReportObject',
        +            'TestResultObject',
        +            'Tetrahedron',
        +            'Text',
        +            'TextAlignment',
        +            'TextCases',
        +            'TextCell',
        +            'TextClipboardType',
        +            'TextData',
        +            'TextElement',
        +            'TextGrid',
        +            'TextJustification',
        +            'TextPacket',
        +            'TextPosition',
        +            'TextRecognize',
        +            'TextSearch',
        +            'TextSearchReport',
        +            'TextSentences',
        +            'TextString',
        +            'TextStructure',
        +            'TextWords',
        +            'Texture',
        +            'TextureCoordinateFunction',
        +            'TextureCoordinateScaling',
        +            'Therefore',
        +            'ThermodynamicData',
        +            'ThermometerGauge',
        +            'Thick',
        +            'Thickness',
        +            'Thin',
        +            'Thinning',
        +            'ThompsonGroupTh',
        +            'Thread',
        +            'ThreeJSymbol',
        +            'Threshold',
        +            'Through',
        +            'Throw',
        +            'ThueMorse',
        +            'Thumbnail',
        +            'Thursday',
        +            'Ticks',
        +            'TicksStyle',
        +            'Tilde',
        +            'TildeEqual',
        +            'TildeFullEqual',
        +            'TildeTilde',
        +            'TimeConstrained',
        +            'TimeConstraint',
        +            'TimeDirection',
        +            'TimeFormat',
        +            'TimeObject',
        +            'TimeObjectQ',
        +            'TimeSeries',
        +            'TimeSeriesAggregate',
        +            'TimeSeriesForecast',
        +            'TimeSeriesInsert',
        +            'TimeSeriesInvertibility',
        +            'TimeSeriesMap',
        +            'TimeSeriesMapThread',
        +            'TimeSeriesModel',
        +            'TimeSeriesModelFit',
        +            'TimeSeriesResample',
        +            'TimeSeriesRescale',
        +            'TimeSeriesShift',
        +            'TimeSeriesThread',
        +            'TimeSeriesWindow',
        +            'TimeUsed',
        +            'TimeValue',
        +            'TimeZone',
        +            'TimeZoneConvert',
        +            'TimeZoneOffset',
        +            'TimelinePlot',
        +            'Times',
        +            'TimesBy',
        +            'Timing',
        +            'Tiny',
        +            'TitsGroupT',
        +            'ToBoxes',
        +            'ToCharacterCode',
        +            'ToContinuousTimeModel',
        +            'ToDiscreteTimeModel',
        +            'ToEntity',
        +            'ToExpression',
        +            'ToInvertibleTimeSeries',
        +            'ToLowerCase',
        +            'ToNumberField',
        +            'ToPolarCoordinates',
        +            'ToRadicals',
        +            'ToRules',
        +            'ToSphericalCoordinates',
        +            'ToString',
        +            'ToUpperCase',
        +            'Today',
        +            'ToeplitzMatrix',
        +            'Together',
        +            'Toggler',
        +            'TogglerBar',
        +            'TokenWords',
        +            'Tolerance',
        +            'Tomorrow',
        +            'Tooltip',
        +            'TooltipDelay',
        +            'TooltipStyle',
        +            'Top',
        +            'TopHatTransform',
        +            'TopologicalSort',
        +            'Total',
        +            'TotalLayer',
        +            'TotalVariationFilter',
        +            'TotalWidth',
        +            'TouchPosition',
        +            'TouchscreenAutoZoom',
        +            'TouchscreenControlPlacement',
        +            'Tr',
        +            'Trace',
        +            'TraceAbove',
        +            'TraceBackward',
        +            'TraceDepth',
        +            'TraceDialog',
        +            'TraceForward',
        +            'TraceOff',
        +            'TraceOn',
        +            'TraceOriginal',
        +            'TracePrint',
        +            'TraceScan',
        +            'TrackedSymbols',
        +            'TrackingFunction',
        +            'TracyWidomDistribution',
        +            'TradingChart',
        +            'TraditionalForm',
        +            'TransferFunctionCancel',
        +            'TransferFunctionExpand',
        +            'TransferFunctionFactor',
        +            'TransferFunctionModel',
        +            'TransferFunctionPoles',
        +            'TransferFunctionTransform',
        +            'TransferFunctionZeros',
        +            'TransformationClass',
        +            'TransformationFunction',
        +            'TransformationFunctions',
        +            'TransformationMatrix',
        +            'TransformedDistribution',
        +            'TransformedField',
        +            'TransformedProcess',
        +            'TransformedRegion',
        +            'TransitionDirection',
        +            'TransitionDuration',
        +            'TransitionEffect',
        +            'TransitiveClosureGraph',
        +            'TransitiveReductionGraph',
        +            'Translate',
        +            'TranslationOptions',
        +            'TranslationTransform',
        +            'Transliterate',
        +            'Transparent',
        +            'Transpose',
        +            'TravelDirections',
        +            'TravelDirectionsData',
        +            'TravelDistance',
        +            'TravelDistanceList',
        +            'TravelMethod',
        +            'TravelTime',
        +            'TreeForm',
        +            'TreeGraph',
        +            'TreeGraphQ',
        +            'TreePlot',
        +            'TrendStyle',
        +            'Triangle',
        +            'TriangleWave',
        +            'TriangularDistribution',
        +            'TriangulateMesh',
        +            'Trig',
        +            'TrigExpand',
        +            'TrigFactor',
        +            'TrigFactorList',
        +            'TrigReduce',
        +            'TrigToExp',
        +            'Trigger',
        +            'TrimmedMean',
        +            'TropicalStormData',
        +            'True',
        +            'TrueQ',
        +            'TruncatedDistribution',
        +            'TsallisQExponentialDistribution',
        +            'TsallisQGaussianDistribution',
        +            'Tube',
        +            'Tuesday',
        +            'TukeyLambdaDistribution',
        +            'TukeyWindow',
        +            'TunnelData',
        +            'Tuples',
        +            'TuranGraph',
        +            'TuringMachine',
        +            'TuttePolynomial',
        +
        +            'URL',
        +            'URLBuild',
        +            'URLDecode',
        +            'URLDispatcher',
        +            'URLDownload',
        +            'URLEncode',
        +            'URLExecute',
        +            'URLExpand',
        +            'URLParse',
        +            'URLQueryDecode',
        +            'URLQueryEncode',
        +            'URLRead',
        +            'URLSaveAsynchronous',
        +            'URLShorten',
        +            'URLSubmit',
        +            'UnateQ',
        +            'Uncompress',
        +            'Undefined',
        +            'UnderBar',
        +            'Underflow',
        +            'Underlined',
        +            'Underoverscript',
        +            'UnderoverscriptBox',
        +            'UnderoverscriptBoxOptions',
        +            'Underscript',
        +            'UnderscriptBox',
        +            'UnderscriptBoxOptions',
        +            'UnderseaFeatureData',
        +            'UndirectedEdge',
        +            'UndirectedGraph',
        +            'UndirectedGraphQ',
        +            'UndoOptions',
        +            'UndoTrackedVariables',
        +            'Unequal',
        +            'UnequalTo',
        +            'Unevaluated',
        +            'UniformDistribution',
        +            'UniformGraphDistribution',
        +            'UniformSumDistribution',
        +            'Uninstall',
        +            'Union',
        +            'UnionPlus',
        +            'Unique',
        +            'UnitBox',
        +            'UnitConvert',
        +            'UnitDimensions',
        +            'UnitRootTest',
        +            'UnitSimplify',
        +            'UnitStep',
        +            'UnitSystem',
        +            'UnitTriangle',
        +            'UnitVector',
        +            'UnitaryMatrixQ',
        +            'Unitize',
        +            'UnityDimensions',
        +            'UniverseModelData',
        +            'UniversityData',
        +            'UnixTime',
        +            'Unprotect',
        +            'UnsameQ',
        +            'UnsavedVariables',
        +            'Unset',
        +            'UnsetShared',
        +            'UpArrow',
        +            'UpArrowBar',
        +            'UpArrowDownArrow',
        +            'UpDownArrow',
        +            'UpEquilibrium',
        +            'UpSet',
        +            'UpSetDelayed',
        +            'UpTee',
        +            'UpTeeArrow',
        +            'UpTo',
        +            'UpValues',
        +            'Update',
        +            'UpdateInterval',
        +            'UpdateSearchIndex',
        +            'UpperCaseQ',
        +            'UpperLeftArrow',
        +            'UpperRightArrow',
        +            'UpperTriangularize',
        +            'Upsample',
        +            'UsingFrontEnd',
        +            'UtilityFunction',
        +
        +            'ValidationLength',
        +            'ValidationSet',
        +            'ValueDimensions',
        +            'ValueQ',
        +            'Values',
        +            'Variables',
        +            'Variance',
        +            'VarianceEquivalenceTest',
        +            'VarianceEstimatorFunction',
        +            'VarianceGammaDistribution',
        +            'VarianceTest',
        +            'VectorAngle',
        +            'VectorColorFunction',
        +            'VectorColorFunctionScaling',
        +            'VectorDensityPlot',
        +            'VectorPlot',
        +            'VectorPlot3D',
        +            'VectorPoints',
        +            'VectorQ',
        +            'VectorScale',
        +            'VectorStyle',
        +            'Vectors',
        +            'Vee',
        +            'Verbatim',
        +            'VerificationTest',
        +            'VerifyConvergence',
        +            'VerifySecurityCertificates',
        +            'VerifySolutions',
        +            'VerifyTestAssumptions',
        +            'VertexAdd',
        +            'VertexCapacity',
        +            'VertexColors',
        +            'VertexComponent',
        +            'VertexConnectivity',
        +            'VertexContract',
        +            'VertexCoordinateRules',
        +            'VertexCoordinates',
        +            'VertexCorrelationSimilarity',
        +            'VertexCosineSimilarity',
        +            'VertexCount',
        +            'VertexCoverQ',
        +            'VertexDataCoordinates',
        +            'VertexDegree',
        +            'VertexDelete',
        +            'VertexDiceSimilarity',
        +            'VertexEccentricity',
        +            'VertexInComponent',
        +            'VertexInDegree',
        +            'VertexIndex',
        +            'VertexJaccardSimilarity',
        +            'VertexLabelStyle',
        +            'VertexLabeling',
        +            'VertexLabels',
        +            'VertexList',
        +            'VertexNormals',
        +            'VertexOutComponent',
        +            'VertexOutDegree',
        +            'VertexQ',
        +            'VertexRenderingFunction',
        +            'VertexReplace',
        +            'VertexShape',
        +            'VertexShapeFunction',
        +            'VertexSize',
        +            'VertexStyle',
        +            'VertexTextureCoordinates',
        +            'VertexWeight',
        +            'VerticalBar',
        +            'VerticalGauge',
        +            'VerticalSeparator',
        +            'VerticalSlider',
        +            'VerticalTilde',
        +            'ViewAngle',
        +            'ViewCenter',
        +            'ViewMatrix',
        +            'ViewPoint',
        +            'ViewRange',
        +            'ViewVector',
        +            'ViewVertical',
        +            'Visible',
        +            'VoigtDistribution',
        +            'VolcanoData',
        +            'Volume',
        +            'VonMisesDistribution',
        +            'VoronoiMesh',
        +
        +            'WaitAll',
        +            'WaitAsynchronousTask',
        +            'WaitNext',
        +            'WakebyDistribution',
        +            'WalleniusHypergeometricDistribution',
        +            'WaringYuleDistribution',
        +            'WarpingCorrespondence',
        +            'WarpingDistance',
        +            'WatershedComponents',
        +            'WatsonUSquareTest',
        +            'WattsStrogatzGraphDistribution',
        +            'WaveletBestBasis',
        +            'WaveletFilterCoefficients',
        +            'WaveletImagePlot',
        +            'WaveletListPlot',
        +            'WaveletMapIndexed',
        +            'WaveletMatrixPlot',
        +            'WaveletPhi',
        +            'WaveletPsi',
        +            'WaveletScale',
        +            'WaveletScalogram',
        +            'WaveletThreshold',
        +            'WeakStationarity',
        +            'WeaklyConnectedComponents',
        +            'WeaklyConnectedGraphComponents',
        +            'WeaklyConnectedGraphQ',
        +            'WeatherData',
        +            'WeatherForecastData',
        +            'WeberE',
        +            'Wedge',
        +            'Wednesday',
        +            'WeibullDistribution',
        +            'WeierstrassHalfPeriods',
        +            'WeierstrassInvariants',
        +            'WeierstrassP',
        +            'WeierstrassPPrime',
        +            'WeierstrassSigma',
        +            'WeierstrassZeta',
        +            'WeightedAdjacencyGraph',
        +            'WeightedAdjacencyMatrix',
        +            'WeightedData',
        +            'WeightedGraphQ',
        +            'Weights',
        +            'WelchWindow',
        +            'WheelGraph',
        +            'WhenEvent',
        +            'Which',
        +            'While',
        +            'White',
        +            'WhiteNoiseProcess',
        +            'WhitePoint',
        +            'Whitespace',
        +            'WhitespaceCharacter',
        +            'WhittakerM',
        +            'WhittakerW',
        +            'WienerFilter',
        +            'WienerProcess',
        +            'WignerD',
        +            'WignerSemicircleDistribution',
        +            'WikipediaData',
        +            'WikipediaSearch',
        +            'WilksW',
        +            'WilksWTest',
        +            'WindDirectionData',
        +            'WindSpeedData',
        +            'WindVectorData',
        +            'WindowClickSelect',
        +            'WindowElements',
        +            'WindowFloating',
        +            'WindowFrame',
        +            'WindowMargins',
        +            'WindowMovable',
        +            'WindowOpacity',
        +            'WindowSize',
        +            'WindowStatusArea',
        +            'WindowTitle',
        +            'WindowToolbars',
        +            'WishartMatrixDistribution',
        +            'With',
        +            'WolframAlpha',
        +            'WolframLanguageData',
        +            'Word',
        +            'WordBoundary',
        +            'WordCharacter',
        +            'WordCloud',
        +            'WordCount',
        +            'WordCounts',
        +            'WordData',
        +            'WordDefinition',
        +            'WordFrequency',
        +            'WordFrequencyData',
        +            'WordList',
        +            'WordOrientation',
        +            'WordSearch',
        +            'WordSeparators',
        +            'WordSpacings',
        +            'WordStem',
        +            'WordTranslation',
        +            'WorkingPrecision',
        +            'WrapAround',
        +            'Write',
        +            'WriteLine',
        +            'WriteString',
        +            'Wronskian',
        +
        +            'XMLElement',
        +            'XMLObject',
        +            'XMLTemplate',
        +            'XYZColor',
        +            'Xnor',
        +            'Xor',
        +
        +            'Yellow',
        +            'Yesterday',
        +            'YuleDissimilarity',
        +
        +            'ZIPCodeData',
        +            'ZTest',
        +            'ZTransform',
        +            'ZernikeR',
        +            'ZeroSymmetric',
        +            'ZeroTest',
        +            'Zeta',
        +            'ZoomCenter',
        +            'ZetaZero',
        +            'ZipfDistribution',
        +            'ZoomFactor'
        +        )
        +    ),
        +    'CASE_SENSITIVE' => array(
        +        1 => true
        +    ),
        +    'SYMBOLS' => array(
        +        1 => array(
        +            '@', '//', '/@', '@@', '@@@', '#', '&', //functions
        +            '=', ':=', '+=', '-=', '*=', '/=', //assignments
        +            '^', '+' ,'-', '/', '*', '>', '<', '%', //math
        +            '||', '&&', //logic
        +            '/.', '/;', '->', ':>' //rules
        +        ),
        +        2 => array( // Wolfram
        +            '$Aborted',
        +            '$AllowExternalChannelFunctions',
        +            '$AssertFunction',
        +            '$Assumptions',
        +            '$AsynchronousTask',
        +            '$AudioOutputDevices',
        +
        +            '$BaseDirectory',
        +            '$BatchInput',
        +            '$BatchOutput',
        +            '$ByteOrdering',
        +
        +            '$CacheBaseDirectory',
        +            '$Canceled',
        +            '$ChannelBase',
        +            '$CharacterEncoding',
        +            '$CharacterEncodings',
        +            '$CloudBase',
        +            '$CloudConnected',
        +            '$CloudCreditsAvailable',
        +            '$CloudEvaluation',
        +            '$CloudExpressionBase',
        +            '$CloudRootDirectory',
        +            '$CloudSymbolBase',
        +            '$CommandLine',
        +            '$CompilationTarget',
        +            '$ConfiguredKernels',
        +            '$Context',
        +            '$ContextPath',
        +            '$ControlActiveSetting',
        +            '$CookieStore',
        +            '$Cookies',
        +            '$CreationDate',
        +            '$CurrentLink',
        +
        +            '$DateStringFormat',
        +            '$DefaultAudioOutputDevice',
        +            '$DefaultImagingDevice',
        +            '$DefaultLocalBase',
        +            '$Display',
        +            '$DisplayFunction',
        +            '$DistributedContexts',
        +            '$DynamicEvaluation',
        +
        +            '$Echo',
        +            '$EmbedCodeEnvironments',
        +            '$EmbeddableServices',
        +            '$EntityStores',
        +            '$Epilog',
        +            '$EvaluationCloudObject',
        +            '$EvaluationEnvironment',
        +            '$ExportFormats',
        +
        +            '$Failed',
        +            '$FontFamilies',
        +            '$FrontEnd',
        +            '$FrontEndSession',
        +
        +            '$GeoLocation',
        +            '$GeoLocationCity',
        +            '$GeoLocationCountry',
        +            '$GeoLocationSource',
        +
        +            '$HistoryLength',
        +            '$HomeDirectory',
        +
        +            '$IgnoreEOF',
        +            '$ImageFormattingWidth',
        +            '$ImagingDevice',
        +            '$ImagingDevices',
        +            '$ImportFormats',
        +            '$InitialDirectory',
        +            '$Input',
        +            '$InputFileName',
        +            '$InputStreamMethods',
        +            '$Inspector',
        +            '$InstallationDirectory',
        +            '$InterpreterTypes',
        +            '$IterationLimit',
        +
        +            '$KernelCount',
        +            '$KernelID',
        +
        +            '$Language',
        +            '$LibraryPath',
        +            '$LicenseExpirationDate',
        +            '$LicenseID',
        +            '$LicenseServer',
        +            '$Line',
        +            '$Linked',
        +            '$LocalBase',
        +            '$LocalSymbolBase',
        +
        +            '$MachineAddresses',
        +            '$MachineDomains',
        +            '$MachineEpsilon',
        +            '$MachineID',
        +            '$MachineName',
        +            '$MachinePrecision',
        +            '$MachineType',
        +            '$MaxExtraPrecision',
        +            '$MaxMachineNumber',
        +            '$MaxNumber',
        +            '$MaxPiecewiseCases',
        +            '$MaxPrecision',
        +            '$MaxRootDegree',
        +            '$MessageGroups',
        +            '$MessageList',
        +            '$MessagePrePrint',
        +            '$Messages',
        +            '$MinMachineNumber',
        +            '$MinNumber',
        +            '$MinPrecision',
        +            '$ModuleNumber',
        +
        +            '$NewMessage',
        +            '$NewSymbol',
        +            '$Notebooks',
        +            '$NumberMarks',
        +
        +            '$OperatingSystem',
        +            '$Output',
        +            '$OutputSizeLimit',
        +            '$OutputStreamMethods',
        +
        +            '$Packages',
        +            '$ParentLink',
        +            '$ParentProcessID',
        +            '$Path',
        +            '$PathnameSeparator',
        +            '$PerformanceGoal',
        +            '$Permissions',
        +            '$PlotTheme',
        +            '$Post',
        +            '$Pre',
        +            '$PrePrint',
        +            '$PreRead',
        +            '$Printout3DPreviewer',
        +            '$ProcessID',
        +            '$ProcessorCount',
        +            '$ProcessorType',
        +
        +            '$RecursionLimit',
        +            '$ReleaseNumber',
        +            '$RequesterAddress',
        +            '$RequesterWolframID',
        +            '$RequesterWolframUUID',
        +            '$RootDirectory',
        +
        +            '$ScheduledTask',
        +            '$ScriptCommandLine',
        +            '$ScriptInputString',
        +            '$Services',
        +            '$SessionID',
        +            '$SharedFunctions',
        +            '$SharedVariables',
        +            '$SoundDisplayFunction',
        +            '$SourceLink',
        +            '$SynchronousEvaluation',
        +            '$SyntaxHandler',
        +            '$System',
        +            '$SystemCharacterEncoding',
        +            '$SystemID',
        +            '$SystemShell',
        +            '$SystemTimeZone',
        +            '$SystemWordLength',
        +
        +            '$TemplatePath',
        +            '$TemporaryDirectory',
        +            '$TimeUnit',
        +            '$TimeZone',
        +            '$TimeZoneEntity',
        +            '$TimedOut',
        +
        +            '$UnitSystem',
        +            '$Urgent',
        +            '$UserAgentString',
        +            '$UserBaseDirectory',
        +            '$UserDocumentsDirectory',
        +            '$UserName',
        +
        +            '$Version',
        +            '$VersionNumber',
        +
        +            '$WolframID',
        +            '$WolframUUID',
        +        ),
        +        3 => array( // array stuff
        +            '{', '}', '[[', ']]', '<|', '|>'
        +        ),
        +    ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #FF7700; font-weight: bold;',
        +        ),
        +        'COMMENTS' => array(
        +            'MULTI' => 'color: #999999; font-style: italic;',
        +        ),
        +        'ESCAPE_CHAR' => array(
        +            1 => '',
        +        ),
        +        'BRACKETS' => array(),
        +        'STRINGS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +        ),
        +        'NUMBERS' => array(
        +        ),
        +        'METHODS' => array(),
        +        'SYMBOLS' => array(
        +            1 => 'color: #133CAC; font-weight: bold;',
        +            2 => 'color: #028E9B; font-weight: bold;',
        +            3 => 'color: #FFAD00; font-weight: bold;',
        +        ),
        +        //'BRACKETS' => array(
        +        //0 => 'color: #8C0953; font-weight: bold;', // array
        +        //),
        +        'REGEXPS' => array(
        +            0 => 'color: #133CAC; font-weight: bold;',
        +        ),
        +        'SCRIPT' => array()
        +    ),
        +    'URLS' => array(
        +        1 => 'http://reference.wolfram.com/language/ref/{FNAME}.html'
        +    ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(
        +        0 => '#[1-9][0-9]*'
        +    ),
        +    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/matlab.php b/includes/geshi/matlab.php
        new file mode 100644
        index 0000000..ee275f0
        --- /dev/null
        +++ b/includes/geshi/matlab.php
        @@ -0,0 +1,225 @@
        + 'Matlab M',
        +    'COMMENT_SINGLE' => array(1 => '%'),
        +    'COMMENT_MULTI' => array(),
        +    //Matlab Strings
        +    'COMMENT_REGEXP' => array(
        +        2 => "/(? GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'break', 'case', 'catch', 'continue', 'elseif', 'else', 'end', 'for',
        +            'function', 'global', 'if', 'otherwise', 'persistent', 'return',
        +            'switch', 'try', 'while'
        +            ),
        +        2 => array(
        +            'all','any','exist','is','logical','mislocked',
        +
        +            'abs','acos','acosh','acot','acoth','acsc','acsch','airy','angle',
        +            'ans','area','asec','asech','asin','asinh','atan','atan2','atanh',
        +            'auread','autumn','auwrite','axes','axis','balance','bar','bar3',
        +            'bar3h','barh','besselh','besseli','besselj','besselk','Bessely',
        +            'beta','betainc','betaln','bicg','bicgstab','bin2dec','bitand',
        +            'bitcmp','bitget','bitmax','bitor','bitset','bitshift','bitxor',
        +            'blkdiag','bone','box','brighten','builtin','bwcontr','calendar',
        +            'camdolly','camlight','camlookat','camorbit','campan','campos',
        +            'camproj','camroll','camtarget','camup','camva','camzoom','capture',
        +            'cart2pol','cart2sph','cat','caxis','cdf2rdf','ceil','cell',
        +            'cell2struct','celldisp','cellfun','cellplot','cellstr','cgs',
        +            'char','chol','cholinc','cholupdate','cla','clabel','class','clc',
        +            'clf','clg','clock','close','colmmd','colorbar','colorcube',
        +            'colordef','colormap','colperm','comet','comet3','compan','compass',
        +            'complex','computer','cond','condeig','condest','coneplot','conj',
        +            'contour','contourc','contourf','contourslice','contrast','conv',
        +            'conv2','convhull','cool','copper','copyobj','corrcoef','cos',
        +            'cosh','cot','coth','cov','cplxpair','cputime','cross','csc','csch',
        +            'cumprod','cumsum','cumtrapz','cylinder','daspect','date','datenum',
        +            'datestr','datetick','datevec','dbclear','dbcont','dbdown',
        +            'dblquad','dbmex','dbquit','dbstack','dbstatus','dbstep','dbstop',
        +            'dbtype','dbup','deblank','dec2bin','dec2hex','deconv','del2',
        +            'delaunay','det','diag','dialog','diff','diffuse','dlmread',
        +            'dlmwrite','dmperm','double','dragrect','drawnow','dsearch','eig',
        +            'eigs','ellipj','ellipke','eomday','eps','erf','erfc','erfcx',
        +            'erfiny','error','errorbar','errordlg','etime','eval','evalc',
        +            'evalin','exp','expint','expm','eye','ezcontour','ezcontourf',
        +            'ezmesh','ezmeshc','ezplot','ezplot3','ezpolar','ezsurf','ezsurfc',
        +            'factor','factorial','fclose','feather','feof','ferror','feval',
        +            'fft','fft2','fftshift','fgetl','fgets','fieldnames','figure',
        +            'fill','fill3','filter','filter2','find','findfigs','findobj',
        +            'findstr','fix','flag','flipdim','fliplr','flipud','floor','flops',
        +            'fmin','fmins','fopen','fplot','fprintf','fread','frewind','fscanf',
        +            'fseek','ftell','full','funm','fwrite','fzero','gallery','gamma',
        +            'gammainc','gammaln','gca','gcbo','gcd','gcf','gco','get',
        +            'getfield','ginput','gmres','gradient','gray','graymon','grid',
        +            'griddata','gsvd','gtext','hadamard','hankel','hdf','helpdlg',
        +            'hess','hex2dec','hex2num','hidden','hilb','hist','hold','hot',
        +            'hsv','hsv2rgb','i','ifft','ifft2','ifftn','ifftshift','imag',
        +            'image','imfinfo','imread','imwrite','ind2sub','Inf','inferiorto',
        +            'inline','inpolygon','input','inputdlg','inputname','int16',
        +            'int2str','int32','int8','interp1','interp2','interp3','interpft',
        +            'interpn','intersect','inv','invhilb','ipermute','isa','ishandle',
        +            'ismember','isocaps','isonormals','isosurface','j','jet','keyboard',
        +            'lcm','legend','legendre','light','lighting','lightingangle',
        +            'lin2mu','line','lines','linspace','listdlg','loadobj','log',
        +            'log10','log2','loglog','logm','logspace','lower','lscov','lu',
        +            'luinc','magic','mat2str','material','max','mean','median','menu',
        +            'menuedit','mesh','meshc','meshgrid','min','mod','msgbox','mu2lin',
        +            'NaN','nargchk','nargin','nargout','nchoosek','ndgrid','ndims',
        +            'newplot','nextpow2','nnls','nnz','nonzeros','norm','normest','now',
        +            'null','num2cell','num2str','nzmax','ode113,','ode15s,','ode23s,',
        +            'ode23t,','ode23tb','ode45,','odefile','odeget','odeset','ones',
        +            'orient','orth','pagedlg','pareto','pascal','patch','pause',
        +            'pbaspect','pcg','pcolor','peaks','perms','permute','pi','pie',
        +            'pie3','pinv','plot','plot3','plotmatrix','plotyy','pol2cart',
        +            'polar','poly','polyarea','polyder','polyeig','polyfit','polyval',
        +            'polyvalm','pow2','primes','print','printdlg','printopt','prism',
        +            'prod','propedit','qmr','qr','qrdelete','qrinsert','qrupdate',
        +            'quad','questdlg','quiver','quiver3','qz','rand','randn','randperm',
        +            'rank','rat','rats','rbbox','rcond','real','realmax','realmin',
        +            'rectangle','reducepatch','reducevolume','refresh','rem','repmat',
        +            'reset','reshape','residue','rgb2hsv','rgbplot','ribbon','rmfield',
        +            'roots','rose','rot90','rotate','rotate3d','round','rref',
        +            'rrefmovie','rsf2csf','saveobj','scatter','scatter3','schur',
        +            'script','sec','sech','selectmoveresize','semilogx','semilogy',
        +            'set','setdiff','setfield','setxor','shading','shg','shiftdim',
        +            'shrinkfaces','sign','sin','single','sinh','slice','smooth3','sort',
        +            'sortrows','sound','soundsc','spalloc','sparse','spconvert',
        +            'spdiags','specular','speye','spfun','sph2cart','sphere','spinmap',
        +            'spline','spones','spparms','sprand','sprandn','sprandsym','spring',
        +            'sprintf','sqrt','sqrtm','squeeze','sscanf','stairs','std','stem',
        +            'stem3','str2double','str2num','strcat','strcmp','strcmpi',
        +            'stream2','stream3','streamline','strings','strjust','strmatch',
        +            'strncmp','strrep','strtok','struct','struct2cell','strvcat',
        +            'sub2ind','subplot','subspace','subvolume','sum','summer',
        +            'superiorto','surf','surf2patch','surface','surfc','surfl',
        +            'surfnorm','svd','svds','symmmd','symrcm','symvar','tan','tanh',
        +            'texlabel','text Create','textread','textwrap','tic','title','toc',
        +            'toeplitz','trace','trapz','tril','trimesh','trisurf','triu',
        +            'tsearch','uicontext Create','uicontextmenu','uicontrol',
        +            'uigetfile','uimenu','uint32','uint8','uiputfile','uiresume',
        +            'uisetcolor','uisetfont','uiwait Used','union','unique','unwrap',
        +            'upper','var','varargin','varargout','vectorize','view','viewmtx',
        +            'voronoi','waitbar','waitforbuttonpress','warndlg','warning',
        +            'waterfall','wavread','wavwrite','weekday','whitebg','wilkinson',
        +            'winter','wk1read','wk1write','xlabel','xlim','ylabel','ylim',
        +            'zeros','zlabel','zlim','zoom',
        +            //'[Keywords 6]',
        +            'addpath','cd','clear','copyfile','delete','diary','dir','disp',
        +            'doc','docopt','echo','edit','fileparts','format','fullfile','help',
        +            'helpdesk','helpwin','home','inmem','lasterr','lastwarn','length',
        +            'load','lookfor','ls','matlabrc','matlabroot','mkdir','mlock',
        +            'more','munlock','open','openvar','pack','partialpath','path',
        +            'pathtool','profile','profreport','pwd','quit','rmpath','save',
        +            'saveas','size','tempdir','tempname','type','ver','version','web',
        +            'what','whatsnew','which','who','whos','workspace'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '...'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        //3 => false,
        +        //4 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000FF;',
        +            2 => 'color: #0000FF;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #228B22;',
        +            2 => 'color:#A020F0;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => ''
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #080;'
        +            ),
        +        'STRINGS' => array(
        +            //0 => 'color: #A020F0;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #33f;'
        +            ),
        +        'METHODS' => array(
        +            1 => '',
        +            2 => ''
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #080;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #33f;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => 'http://www.mathworks.com/access/helpdesk/help/techdoc/ref/{FNAMEL}.html'
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.',
        +        2 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        //Complex numbers
        +        0 => '(?html)'
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/mercury.php b/includes/geshi/mercury.php
        new file mode 100644
        index 0000000..69e6d12
        --- /dev/null
        +++ b/includes/geshi/mercury.php
        @@ -0,0 +1,130 @@
        + 'Mercury',
        +    'COMMENT_SINGLE' => array(1 => '%'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'HARDQUOTE' => array("'", "'"),
        +    'HARDESCAPE' => array('"', "\'"),
        +    'HARDCHAR' => '"',
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => '\\',
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'end_module', 'finalise', 'finalize', 'func', 'implementation',
        +            'include_module', 'initalisation', 'initialization',
        +            'instance', 'interface',
        +            'import_module', 'module', 'pragma', 'pred',
        +            'type', 'typeclass', 'use_module'
        +        ),
        +        2 => array(
        +            'atomic', 'foreign_code', 'foreign_export', 'foreign_type', 'memo'
        +        )
        +    ),
        +    'SYMBOLS' => array(
        +        0 => array('(', ')', '[', ']', '{', '}',),
        +        1 => array('?-', ':-', '=:='),
        +        2 => array('\-', '\+', '\*', '\/', '/\\'),
        +        3 => array('-', '+', '*', '/'),
        +        4 => array('.', ':', ',', ';'),
        +        5 => array('!', '@', '&', '|', '!.', '!:'),
        +        6 => array('<', '>', '=')
        +    ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false
        +    ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #990000;',
        +            2 => 'color: #99aa77;'
        +        ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +        ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            'HARD' => 'color: #000099; font-weight: bold;'
        +        ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +        ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;',
        +            'HARD' => 'color: #0000ff;'
        +        ),
        +        'NUMBERS' => array(
        +            0 => 'color: #800080;'
        +        ),
        +        'METHODS' => array(),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;',
        +            1 => 'color: #339933;',
        +            2 => 'color: #339933;',
        +            3 => 'color: #339933;',
        +            4 => 'color: #339933;',
        +            5 => 'color: #339933;',
        +            6 => 'color: #339933;'
        +        ),
        +        'REGEXPS' => array(
        +            0 => 'color: #008080;'
        +        ),
        +        'SCRIPT' => array()
        +    ),
        +    'URLS' => array(
        +        1 => 'http://www.mercurylang.org',
        +        2 => 'http://www.mercurylang.org'
        +    ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(
        +        //Variables
        +        0 => "(? GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/metapost.php b/includes/geshi/metapost.php
        new file mode 100644
        index 0000000..310df0d
        --- /dev/null
        +++ b/includes/geshi/metapost.php
        @@ -0,0 +1,399 @@
        + 'MetaPost',
        +    'COMMENT_SINGLE' => array(1 => '%'),
        +    'COMMENT_MULTI' => array(
        +        'verbatim'=>'etex', //TeX and LaTeX preambule
        +        'btex' => 'etex' //TeX invocation
        +    ),
        +    'COMMENT_REGEXP' => array(
        +    ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array( //type
        +            'boolean',
        +            'color', 'cmykcolor',
        +            'expr',
        +            'numeric',
        +            'pair', 'path', 'pen', 'picture',
        +            'string', 'suffix',
        +            'text', 'transform',
        +        ),
        +        2 => array( //file construction
        +            'beginfig', 'begingroup',
        +            'def',
        +            'end', 'enddef', 'endfig', 'endgroup',
        +            'hide',
        +            'image', 'input',
        +            'let',
        +            'makepen', 'makepath',
        +            'newinternal',
        +            'primary', 'primarydef',
        +            'save', 'secondarydef', 'shipout', 'special',
        +            'tertiarydef',
        +            'vardef'
        +        ),
        +        3 => array( //programmation structure
        +            'else', 'elseif', 'endfor', 'exitif', 'exitunless',
        +            'fi', 'for', 'forever', 'forsuffix',
        +            'if',
        +            'step',
        +            'until', 'upto',
        +        ),
        +        4 => array( //operations return pair
        +            'bot',
        +            'dir', 'direction of',
        +            'intersectionpoint', 'intiersectiontimes',
        +            'lft', 'llcorner', 'lrcorner',
        +            'penoffset of', 'point of', 'postcontrol of', 'precontrol of',
        +            'rt',
        +            'top',
        +            'ulcorner', 'unitvector', 'urcorner',
        +            'z',
        +        ),
        +        5 => array( //operations return path or picture or pen
        +            'bbox',
        +            'center', 'cutafter', 'cutbefore',
        +            'dashpart', 'dashpattern',
        +            'glyph of',
        +            'infont',
        +            'pathpart', 'penpart',
        +            'reverse',
        +            'subpath of',
        +        ),
        +        6 => array( //operations return string (or complementary)
        +            'closefrom',
        +            'fontpart',
        +            'readfrom',
        +            'str', 'substring of',
        +            'textpart'
        +        ),
        +        7 => array( // operations return numeric
        +            'abs', 'angle', 'arclength', 'arctime of', 'ASCII',
        +            'blackpart', 'bluepart',
        +            'ceiling', 'char', 'colormodel', 'cosd', 'cyanpart',
        +            'decimal', 'decr', 'directionpoint of', 'directiontime of',
        +            'div', 'dotprod',
        +            'floor', 'fontsize',
        +            'greenpart', 'greypart',
        +            'hex',
        +            'incr',
        +            'length',
        +            'magentapart', 'max', 'mexp', 'min', 'mlog', 'mod',
        +            'normaldeviate',
        +            'oct',
        +            'redpart', 'round',
        +            'sind', 'sqrt',
        +            'uniformdeviate',
        +            'xpart', 'xxpart', 'xypart',
        +            'yellowpart', 'ypart', 'yxpart', 'yypart',
        +        ),
        +        8 => array( // operations return boolean
        +            'and',
        +            'bounded',
        +            'clipped',
        +            'filled',
        +            'known',
        +            'not',
        +            'odd',
        +            'or',
        +            'rgbcolor',
        +            'stroked',
        +            'textual',
        +            'unknown'
        +        ),
        +        9 => array( //operations return color
        +            'colorpart'
        +        ),
        +        10 => array( //operations return transform
        +            'inverse'
        +        ),
        +        11 => array( //constructors
        +            'also',
        +            'buildcycle',
        +            'contour', 'controls', 'cycle',
        +            'doublepath',
        +            'setbounds',
        +            'to',
        +            'whatever'
        +        ),
        +        12 => array( //labels
        +            'label',
        +            'label.bot',
        +            'label.top',
        +            'label.llft',
        +            'label.lft',
        +            'label.ulft',
        +            'label.lrt',
        +            'label.rt',
        +            'label.urt',
        +
        +            'labels',
        +            'labels.bot',
        +            'labels.top',
        +            'labels.llft',
        +            'labels.lft',
        +            'labels.ulft',
        +            'labels.lrt',
        +            'labels.rt',
        +            'labels.urt',
        +
        +            'thelabel',
        +            'thelabel.bot',
        +            'thelabel.top',
        +            'thelabel.llft',
        +            'thelabel.lft',
        +            'thelabel.ulft',
        +            'thelabel.lrt',
        +            'thelabel.rt',
        +            'thelabel.urt',
        +
        +            'dotlabel',
        +            'dotlabel.bot',
        +            'dotlabel.top',
        +            'dotlabel.llft',
        +            'dotlabel.lft',
        +            'dotlabel.ulft',
        +            'dotlabel.lrt',
        +            'dotlabel.rt',
        +            'dotlabel.urt',
        +        ),
        +        13 => array( //general transformations
        +            'about',
        +            'reflected', 'reflectedaround',
        +            'rotated', 'rotatedabout', 'rotatedaround',
        +            'scaled', 'slanted', 'shifted',
        +            'transformed',
        +            'xscaled',
        +            'yscaled',
        +            'zscaled',
        +        ),
        +        14 => array( //draw instructions
        +            'addto',
        +            'clip', 'cutdraw',
        +            'draw', 'drawarrow', 'drawdblarrow', 'drawdot',
        +            'fill', 'filldraw',
        +            'undraw', 'unfill', 'unfilldraw'
        +        ),
        +        15 => array( //style of drawing
        +            'curl',
        +            'dashed', 'drawoptions',
        +            'pickup',
        +            'tension',
        +            'withcmykcolor', 'withcolor',
        +            'withgreyscale', 'withpen', 'withpostscript', 'withprescript',
        +            'withrgbcolor',
        +        ),
        +        16 => array( //read write show
        +            'errhelp', 'errmessage',
        +            'fontmapfile', 'fontmapline',
        +            'interim',
        +            'loggingall',
        +            'message',
        +            'scantokens', 'show', 'showdependencies', 'showtoken', 'showvariable',
        +            'tracingall', 'tracingnone',
        +            'write to',
        +        ),
        +        17 => array( //Internal variables with numeric values
        +            'ahangle', 'ahlength',
        +            'bboxmargin',
        +            'charcode',
        +            'day', 'defaultcolormodel', 'defaultpen', 'defaultscale',
        +            'dotlabeldiam',
        +            'hour',
        +            'labeloffset',
        +            'linecap', 'linejoin',
        +            'minute', 'miterlimit', 'month', 'mpprocset',
        +            'pausing', 'prologues',
        +            'restoreclipcolor',
        +            'showstopping',
        +            'time',
        +            'tracingcapsules', 'tracingchoices', 'tracingcommands',
        +            'tracingequations', 'tracinglostchars', 'tracingmacros',
        +            'tracingonline', 'tracingoutput', 'tracingrestores',
        +            'tracingspecs', 'tracingstats', 'tracingtitles',
        +            'troffmode', 'truecorners',
        +            'warningcheck',
        +            'year',
        +        ),
        +        18 => array( //Internal string variables
        +            'filenametemplate',
        +            'jobname',
        +            'outputformat', 'outputtemplate',
        +        ),
        +        19 => array( //other predefined variables
        +            'background',
        +            'currentpen', 'currentpicture', 'cuttings',
        +            'defaultfont',
        +            'extra_beginfig', 'extra_endfig',
        +        ),
        +        20 => array( //predefined constants
        +            'beveled', 'black', 'blue', 'bp', 'butt',
        +            'cc', 'cm',
        +            'dd', 'ditto', 'down',
        +            'epsilon', 'evenly', 'EOF',
        +            'false', 'fullcircle',
        +            'green',
        +            'halfcircle',
        +            'identity',
        +            'left',
        +            'mitered', 'mm', 'mpversion',
        +            'nullpen', 'nullpicture',
        +            'origin',
        +            'pc', 'pencircle', 'pensquare', 'pt',
        +            'quartercircle',
        +            'red', 'right', 'rounded',
        +            'squared',
        +            'true',
        +            'unitsquare', 'up',
        +            'white', 'withdots',
        +        )
        +    ),
        +    'SYMBOLS' => array(
        +        '&', ':=', '=', '+', '-',
        +        '*', '**', '/', '++', '+-+',
        +        '<', '>', '>=', '<=', '<>',
        +        '#@', '@', '@#'
        +    ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true,
        +        8 => true,
        +        9 => true,
        +        10 => true,
        +        11 => true,
        +        12 => true,
        +        13 => true,
        +        14 => true,
        +        15 => true,
        +        16 => true,
        +        17 => true,
        +        18 => true,
        +        19 => true,
        +        20 => true
        +    ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1  => 'color: #472;', //type
        +            2  => 'color: #35A;font-weight: bold;', //file construction
        +            3  => 'color: #A53;', //structure
        +            4  => 'color: #35A;', //operations return pair
        +            5  => 'color: #35A;', //operations return path or picture or pen
        +            6  => 'color: #35A;', //operations return string
        +            7  => 'color: #35A;', //operations return numeric
        +            8  => 'color: #35A;', //operations return boolean
        +            9  => 'color: #35A;', //operations return color
        +            10 => 'color: #35A;', //operations return transform
        +            11 => 'color: #35A;', //constructors
        +            12 => 'color: #35A;', //labels
        +            13 => 'color: #3B5;', //general transformations
        +            14 => 'color: #35A;', //draw instructions
        +            15 => 'color: #472;', //style of drawing
        +            16 => 'color: #000;', //read write show
        +            17 => 'color: #000;', //Internal variables with numeric values
        +            18 => 'color: #000;', //Internal string variables
        +            19 => 'color: #000;', //other predefined variables
        +            20 => 'color: #000;'  //predefined constants
        +        ),
        +        'COMMENTS' => array(
        +            1 => 'color: #777;',
        +            'MULTI' => 'color: #880;'
        +        ),
        +        'ESCAPE_CHAR' => array(
        +            0 => ''
        +        ),
        +        'BRACKETS' => array(
        +            0 => 'color: #820;'
        +        ),
        +        'STRINGS' => array(
        +            0 => 'color: #880;'
        +        ),
        +        'NUMBERS' => array(
        +            0 => 'color: #000;'
        +        ),
        +        'METHODS' => array(
        +            1 => '',
        +            2 => ''
        +        ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000;'
        +        ),
        +        'REGEXPS' => array(
        +        ),
        +        'SCRIPT' => array(
        +            0 => ''
        +        )
        +    ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => '',
        +        7 => '',
        +        8 => '',
        +        9 => '',
        +        10 => '',
        +        11 => '',
        +        12 => '',
        +        13 => '',
        +        14 => '',
        +        15 => '',
        +        16 => '',
        +        17 => '',
        +        18 => '',
        +        19 => '',
        +        20 => ''
        +    ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +    ),
        +    'REGEXPS' => array(
        +    ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +    ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +    )
        +);
        diff --git a/includes/geshi/mirc.php b/includes/geshi/mirc.php
        new file mode 100644
        index 0000000..140c004
        --- /dev/null
        +++ b/includes/geshi/mirc.php
        @@ -0,0 +1,169 @@
        + 'mIRC Scripting',
        +    'COMMENT_SINGLE' => array(1 => ';'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'alias', 'menu', 'dialog',
        +            ),
        +        2 => array(
        +            'if', 'elseif', 'else', 'while', 'return', 'goto', 'var'
        +            ),
        +        3 => array(
        +            'action','ajinvite','amsg','ame','anick','aop','auser',
        +            'avoice','auto','autojoin','away','background','ban','beep',
        +            'channel','clear','clearall','clipboard','close','closemsg','color',
        +            'copy','creq','ctcp','ctcpreply','ctcps','dcc','dde','ddeserver',
        +            'debug','describe','disable','disconnect','dlevel','dll','dns',
        +            'dqwindow','ebeeps','echo','editbox','emailaddr','enable','events',
        +            'exit','filter','findtext','finger','flash','flood','flush',
        +            'flushini','font','fsend','fserve','fullname','ghide','gload',
        +            'gmove','gopts','gplay','gpoint','gqreq','groups','gshow','gsize',
        +            'gstop','gtalk','gunload','guser','help','hop','ignore','invite',
        +            'join','kick','linesep','links','list','load','loadbuf','localinfo',
        +            'log','me','mdi','mkdir','mnick','mode','msg','names','nick','noop',
        +            'notice','notify','omsg','onotice','part','partall','pdcc',
        +            'perform','ping','play','pop','protect','pvoice','qmsg','qme',
        +            'query','queryrn','quit','raw','remini','remote','remove','rename',
        +            'enwin','resetidle','rlevel','rmdir','run','ruser','save','savebuf',
        +            'saveini','say','server','showmirc','sline','sound','speak','splay',
        +            'sreq','strip','time',
        +            //'timer[N/name]', //Handled as a regular expression below ...
        +            'timers','timestamp','titlebar','tnick','tokenize','topic','ulist',
        +            'unload','updatenl','url','uwho','window','winhelp','write',
        +            'writeini','who','whois','whowas'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '[', ']', '/'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #994444;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #990000; font-weight: bold;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #FF0000;',
        +            ),
        +        'STRINGS' => array(
        +            ),
        +        'NUMBERS' => array(
        +            0 => '',
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #008000;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #FF0000;',
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #000099;',
        +            1 => 'color: #990000;',
        +            2 => 'color: #000099;',
        +            3 => 'color: #888800;',
        +            4 => 'color: #888800;',
        +            5 => 'color: #000099;',
        +            6 => 'color: #990000; font-weight: bold;',
        +            7 => 'color: #990000; font-weight: bold;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => 'http://en.wikichip.org/wiki/mirc/commands/{FNAMEL}'
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array('.'),
        +    'REGEXPS' => array(
        +        //Variable names
        +        0 => '\$[a-zA-Z0-9]+',
        +        //Variable names
        +        1 => '(%|&)[\w\x80-\xFE]+',
        +        //Client to Client Protocol handling
        +        2 => '(on|ctcp) (!|@|&)?(\d|\*):[a-zA-Z]+:',
        +        /*4 => array(
        +            GESHI_SEARCH => '((on|ctcp) (!|@|&)?(\d|\*):(Action|Active|Agent|AppActive|Ban|Chat|Close|Connect|Ctcp|CtcpReply|DccServer|DeHelp|DeOp|DeVoice|Dialog|Dns|Error|Exit|FileRcvd|FileSent|GetFail|Help|Hotlink|Input|Invite|Join|KeyDown|KeyUp|Kick|Load|Logon|MidiEnd|Mode|Mp3End|Nick|NoSound|Notice|Notify|Op|Open|Part|Ping|Pong|PlayEnd|Quit|Raw|RawMode|SendFail|Serv|ServerMode|ServerOp|Signal|Snotice|Start|Text|Topic|UnBan|Unload|Unotify|User|Mode|Voice|Wallops|WaveEnd):)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => 'i',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),*/
        +        //Channel names
        +        3 => '(#|@)[a-zA-Z0-9]+',
        +        4 => '-[a-z\d]+',
        +        //Raw protocol handling
        +        5 => 'raw (\d|\*):',
        +        //Timer handling
        +        6 => '(?|:|\/)\/timer(?!s\b)[0-9a-zA-Z_]+',
        +        // /...
        +        7 => '(?|:|\/|\w)\/[a-zA-Z][a-zA-Z0-9]*(?!>)'
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'ENABLE_FLAGS' => array(
        +            'NUMBERS' => GESHI_NEVER
        +            ),
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => '(? 'МК-61/52',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(),
        +    'SYMBOLS' => array(),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false
        +    ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(),
        +        'COMMENTS' => array(),
        +        'ESCAPE_CHAR' => array(),
        +        'BRACKETS' => array(),
        +        'STRINGS' => array(),
        +        'NUMBERS' => array(),
        +        'METHODS' => array(),
        +        'SYMBOLS' => array(),
        +        'SCRIPT' => array(),
        +        'REGEXPS' => array(
        +            1 => 'color:#000000;',
        +            2 => 'color:#A0A000;',
        +            3 => 'color:#00A000;',
        +            4 => 'color:#A00000;',
        +            5 => 'color:#0000A0;',
        +            6 => 'text-decoration: underline; color: #A000A0;',
        +            7 => 'font-size: 75%; color: #A0A0A0;'
        +        )
        +    ),
        +    'URLS' => array(),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(
        +        1 => array(
        +            GESHI_SEARCH => '(\s|\t|^|\G|\.)((F|K|К)?(пи|π|СЧ|KСЧ|КСЧ|,|\.|\/\-\/|\+\/\-|ВП))(\s|\t|$)',
        +            GESHI_REPLACE => '\\4',
        +            GESHI_MODIFIERS => '', GESHI_BEFORE => '\\1\\3', GESHI_AFTER => '\\5'
        +        ),
        +        2 => array(
        +            GESHI_SEARCH => '(\s|\t|^|\G|\.)((F|K|К)?(ÐОП|<\->|XY|↔|X↔Y|\^|Ð’\^|↑|В↑|Ð’x|Ð’x|Сx|\->|↻|→))(\s|\t|$)',
        +            GESHI_REPLACE => '\\4',
        +            GESHI_MODIFIERS => '', GESHI_BEFORE => '\\1\\3', GESHI_AFTER => '\\5'
        +        ),
        +        3 => array(
        +            GESHI_SEARCH => '(\s|\t|^|\G|\.)((K|К)?(П|XП|ИП|ПX|Пx)(\d|[A-E]|[a-e]|(Ð|Ð’|С|Д|Е)))(\s|\t|$)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '', GESHI_BEFORE => '\\1', GESHI_AFTER => '\\7'
        +        ),
        +        4 => array(
        +            GESHI_SEARCH => '(\s|\t|^|\G|\.)((F|K|К)?(10\^x|10x|e\^x|ex|lg|ln|ЧМ|arcsin|x|arccos|ЗÐ|arctg|ГМ|sin|\[x\]|cos|\{x\}|\(x\)|tg|max|\+|\-|\*|x|Ñ…|×|â‹…|\/|\:|÷|МГ|КвКор|квкор|корень|√|x\^2|x2|x²|1\/x|x\^y|xy|МЧ|\x2F\x5C|â‹€|\x5C\x2F|â‹|\(\+\)|⊕|ИÐÐ’))(\s|\t|$)',
        +            GESHI_REPLACE => '\\4',
        +            GESHI_MODIFIERS => '', GESHI_BEFORE => '\\1\\3', GESHI_AFTER => '\\5'
        +        ),
        +        5 => array(
        +            GESHI_SEARCH => '(\s|\t|^|\G|\.)((F?)((K|К)?(В\/О|В\/0|С\/П|x>\=0|x≥0|x≥0|x⩾0|x\#0|x\!\=0|x<>0|x≠0|БП|ПП|L2|L3|x<0|x\=0|L0|L1)))(\s|\t|$)',
        +            GESHI_REPLACE => '\\4',
        +            GESHI_MODIFIERS => '', GESHI_BEFORE => '\\1\\3', GESHI_AFTER => '\\7'
        +        ),
        +        6 => array(
        +            GESHI_SEARCH => '(\s|\t|^|\G|\.)(\d{2})(\s|\t|$)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '', GESHI_BEFORE => '\\1', GESHI_AFTER => '\\3'
        +        ),
        +        7 => array(
        +            GESHI_SEARCH => '(\s|\t|^|\G|\.)([\d\-A]\d\.)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '', GESHI_BEFORE => '\\1', GESHI_AFTER => ''
        +        )
        +    ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(),
        +    'PARSER_CONTROL' => array()
        +);
        diff --git a/includes/geshi/mmix.php b/includes/geshi/mmix.php
        new file mode 100644
        index 0000000..b4dacdb
        --- /dev/null
        +++ b/includes/geshi/mmix.php
        @@ -0,0 +1,191 @@
        + 'MMIX',
        +    'COMMENT_SINGLE' => array(1 => ';', 2 => '%'),
        +    'COMMENT_MULTI' => array(),
        +    //Line address prefix suppression
        +    'COMMENT_REGEXP' => array(
        +        3 => "/^\s*(?!\s)[^\w].*$/m",
        +        4 => "/^\s*[0-9a-f]{12,16}+(?:\s+[0-9a-f]+(?:\.{3}[0-9a-f]{2,})?)?:/mi"
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'NUMBERS' => array(
        +        1 => '(? '#[\da-fA-F]+',
        +        3 => '\$\d+'
        +        ),
        +    'KEYWORDS' => array(
        +        /*CPU*/
        +        1 => array(
        +            '16ADDU','2ADDU','4ADDU','8ADDU','ADD','ADDU','AND','ANDN','ANDNH',
        +            'ANDNL','ANDNMH','ANDNML','BDIF','BEV','BN','BNN','BNP','BNZ','BOD',
        +            'BP','BZ','CMP','CMPU','CSEV','CSN','CSNN','CSNP','CSNZ','CSOD',
        +            'CSP','CSWAP','CSZ','DIV','DIVU','FADD','FCMP','FCMPE','FDIV',
        +            'FEQL','FEQLE','FINT','FIX','FIXU','FLOT','FLOTU','FMUL','FREM',
        +            'FSQRT','FSUB','FUN','FUNE','GET','GETA','GO','INCH','INCL','INCMH',
        +            'INCML','JMP','LDA','LDB','LDBU','LDHT','LDO','LDOU','LDSF','LDT',
        +            'LDTU','LDUNC','LDVTS','LDW','LDWU','MOR','MUL','MULU','MUX','MXOR',
        +            'NAND','NEG','NEGU','NOR','NXOR','ODIF','OR','ORH','ORL','ORMH',
        +            'ORML','ORN','PBEV','PBN','PBNN','PBNP','PBNZ','PBOD','PBP','PBZ',
        +            'POP','PREGO','PRELD','PREST','PUSHGO','PUSHJ','PUT','RESUME','SADD',
        +            'SAVE','SETH','SETL','SETMH','SETML','SFLOT','SFLOTU','SL','SLU',
        +            'SR','SRU','STB','STBU','STCO','STHT','STO','STOU','STSF','STT',
        +            'STTU','STUNC','STW','STWU','SUB','SUBU','SWYM','SYNC','SYNCD',
        +            'SYNCID','TDIF','TRAP','TRIP','UNSAVE','WDIF','XOR','ZSEV','ZSN',
        +            'ZSNN','ZSNP','ZSNZ','ZSOD','ZSP','ZSZ'
        +            ),
        +        2 => array(
        +            'BSPEC','BYTE','ESPEC','GREG','IS','LOC','LOCAL','OCTA',
        +            'PREFIX','SET','TETRA','WYDE'
        +            ),
        +        /*registers*/
        +        3 => array(
        +            'rA','rB','rC','rD','rE','rF','rG','rH','rI','rJ','rK','rL','rM',
        +            'rN','rO','rP','rQ','rR','rS','rT','rU','rV','rW','rX','rY','rZ',
        +            'rBB','rTT','rWW','rXX','rYY','rZZ'
        +            ),
        +//        /*Directive*/
        +//        4 => array(
        +//            ),
        +//        /*Operands*/
        +//        5 => array(
        +//            )
        +        ),
        +    'SYMBOLS' => array(
        +        '[', ']', '(', ')',
        +        '+', '-', '*', '/', '%',
        +        '.', ',', ';', ':',
        +        '<<','>>'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => false,
        +        3 => true,
        +//        4 => false,
        +//        5 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #00007f; font-weight: bold;',
        +            2 => 'color: #0000ff; font-weight: bold;',
        +            3 => 'color: #00007f;',
        +//            4 => 'color: #000000; font-weight: bold;',
        +//            5 => 'color: #000000; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            2 => 'color: #666666; font-style: italic;',
        +            3 => 'color: #666666; font-style: italic;',
        +            4 => 'color: #adadad; font-style: italic;',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900; font-weight: bold;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #7f007f;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #0000ff;',
        +            1 => 'color: #0000ff;',
        +            2 => 'color: #0000ff;',
        +            3 => 'color: #00007f;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(
        +//            0 => 'color: #0000ff;',
        +//            1 => 'color: #0000ff;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +//        4 => '',
        +//        5 => ''
        +        ),
        +/*
        +    'NUMBERS' =>
        +        GESHI_NUMBER_BIN_PREFIX_PERCENT |
        +        GESHI_NUMBER_BIN_SUFFIX |
        +        GESHI_NUMBER_HEX_PREFIX |
        +        GESHI_NUMBER_HEX_SUFFIX |
        +        GESHI_NUMBER_OCT_SUFFIX |
        +        GESHI_NUMBER_INT_BASIC |
        +        GESHI_NUMBER_FLT_NONSCI |
        +        GESHI_NUMBER_FLT_NONSCI_F |
        +        GESHI_NUMBER_FLT_SCI_ZERO,
        +*/
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        //Hex numbers
        +//        0 => /*  */ "(?<=([\\s\\(\\)\\[\\],;.:+\\-\\/*]))(?:[0-9][0-9a-fA-F]{0,31}[hH]|0x[0-9a-fA-F]{1,32})(?=([\\s\\(\\)\\[\\],;.:+\\-\\/*]))",
        +        //Binary numbers
        +//        1 => "(?<=([\\s\\(\\)\\[\\],;.:+\\-\\/*]))[01]{1,64}[bB](?=([\\s\\(\\)\\[\\],;.:+\\-\\/*]))"
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 8,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => "(?|^])",
        +            'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_<\|%])"
        +        )
        +    )
        +);
        diff --git a/includes/geshi/modula2.php b/includes/geshi/modula2.php
        new file mode 100644
        index 0000000..522f46c
        --- /dev/null
        +++ b/includes/geshi/modula2.php
        @@ -0,0 +1,134 @@
        + 'Modula-2',
        +    'COMMENT_MULTI' => array('(*' => '*)'),
        +    'COMMENT_SINGLE' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'HARDQUOTE' => array("'", "'"),
        +    'HARDESCAPE' => array("''"),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array( /* reserved words */
        +            'AND', 'ARRAY', 'BEGIN', 'BY', 'CASE', 'CONST', 'DEFINITION',
        +            'DIV', 'DO', 'ELSE', 'ELSIF', 'END', 'EXIT', 'EXPORT', 'FOR',
        +            'FROM', 'IF', 'IMPLEMENTATION', 'IMPORT', 'IN', 'LOOP', 'MOD',
        +            'MODULE', 'NOT', 'OF', 'OR', 'POINTER', 'PROCEDURE', 'QUALIFIED',
        +            'RECORD', 'REPEAT', 'RETURN', 'SET', 'THEN', 'TO', 'TYPE',
        +            'UNTIL', 'VAR', 'WHILE', 'WITH'
        +            ),
        +        2 => array( /* pervasive constants */
        +            'NIL', 'FALSE', 'TRUE',
        +            ),
        +        3 => array( /* pervasive types */
        +            'BITSET', 'CAP', 'CHR', 'DEC', 'DISPOSE', 'EXCL', 'FLOAT',
        +            'HALT', 'HIGH', 'INC', 'INCL', 'MAX', 'MIN', 'NEW', 'ODD', 'ORD',
        +            'SIZE', 'TRUNC', 'VAL'
        +            ),
        +        4 => array( /* pervasive functions and macros */
        +            'ABS', 'BOOLEAN', 'CARDINAL', 'CHAR', 'INTEGER',
        +            'LONGCARD', 'LONGINT', 'LONGREAL', 'PROC', 'REAL'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        ',', ':', '=', '+', '-', '*', '/', '#', '~'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000000; font-weight: bold;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #000066;',
        +            4 => 'color: #000066; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            'HARD' => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;',
        +            'HARD' => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #0066ee;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => ''
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/modula3.php b/includes/geshi/modula3.php
        new file mode 100644
        index 0000000..3b40a68
        --- /dev/null
        +++ b/includes/geshi/modula3.php
        @@ -0,0 +1,133 @@
        + 'Modula-3',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array('(*' => '*)'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'HARDQUOTE' => array("'", "'"),
        +    'HARDESCAPE' => array("''"),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'AND', 'ANY', 'ARRAY', 'AS', 'BEGIN', 'BITS', 'BRANDED', 'BY', 'CASE',
        +            'CONST', 'DIV', 'DO', 'ELSE', 'ELSIF', 'END', 'EVAL', 'EXCEPT', 'EXCEPTION',
        +            'EXIT', 'EXPORTS', 'FINALLY', 'FOR', 'FROM', 'GENERIC', 'IF', 'IMPORT', 'IN',
        +            'INTERFACE', 'LOCK', 'LOOP', 'METHODS', 'MOD', 'MODULE', 'NOT', 'OBJECT', 'OF',
        +            'OR', 'OVERRIDES', 'PROCEDURE', 'RAISE', 'RAISES', 'READONLY', 'RECORD', 'REF',
        +            'REPEAT', 'RETURN', 'REVEAL', 'ROOT', 'SET', 'THEN', 'TO', 'TRY', 'TYPE', 'TYPECASE',
        +            'UNSAFE', 'UNTIL', 'UNTRACED', 'VALUE', 'VAR', 'WHILE', 'WITH'
        +            ),
        +        2 => array(
        +            'NIL', 'NULL', 'FALSE', 'TRUE',
        +            ),
        +        3 => array(
        +            'ABS','ADR','ADRSIZE','BITSIZE','BYTESIZE','CEILING','DEC','DISPOSE',
        +            'EXTENDED','FIRST','FLOAT','FLOOR','INC','ISTYPE','LAST','LOOPHOLE','MAX','MIN',
        +            'NARROW','NEW','NUMBER','ORD','ROUND','SUBARRAY','TRUNC','TYPECODE', 'VAL'
        +            ),
        +        4 => array(
        +            'ADDRESS', 'BOOLEAN', 'CARDINAL', 'CHAR', 'INTEGER',
        +            'LONGREAL', 'MUTEX', 'REAL', 'REFANY', 'TEXT'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        ',', ':', '=', '+', '-', '*', '/', '#'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000000; font-weight: bold;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #000066;',
        +            4 => 'color: #000066; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            'HARD' => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;',
        +            'HARD' => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #0066ee;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/mpasm.php b/includes/geshi/mpasm.php
        new file mode 100644
        index 0000000..3bdc1a0
        --- /dev/null
        +++ b/includes/geshi/mpasm.php
        @@ -0,0 +1,162 @@
        + 'Microchip Assembler',
        +    'COMMENT_SINGLE' => array(1 => ';'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        /*Directive Language*/
        +        4 => array(
        +            'CONSTANT', '#DEFINE', 'END', 'EQU', 'ERROR', 'ERROR-LEVEL', '#INCLUDE', 'LIST',
        +            'MESSG', 'NOLIST', 'ORG', 'PAGE', 'PROCESSOR', 'RADIX', 'SET', 'SPACE', 'SUBTITLE',
        +            'TITLE', '#UNDEFINE', 'VARIABLE', 'ELSE', 'ENDIF', 'ENDW', 'IF', 'IFDEF', 'IFNDEF',
        +            'WHILE', '__BADRAM', 'CBLOCK', '__CONFIG', 'DA', 'DATA', 'DB', 'DE', 'DT', 'DW',
        +            'ENDC', 'FILL', '__IDLOCS', '__MAXRAM', 'RES', 'ENDM', 'EXITM', 'EXPAND', 'LOCAL',
        +            'MACRO', 'NOEXPAND', 'BANKISEL', 'BANKSEL', 'CODE', 'EXTERN', 'GLOBAL', 'IDATA',
        +            'PAGESEL', 'UDATA', 'UDATA_ACS', 'UDATA_OVR', 'UDATA_SHR'
        +            ),
        +        /* 12&14-bit Specific Instruction Set*/
        +        1 => array(
        +            'andlw', 'call', 'clrwdt', 'goto', 'iorlw', 'movlw', 'option', 'retlw', 'sleep',
        +            'tris', 'xorlw', 'addwf', 'andwf', 'clrf', 'clrw', 'comf', 'decf', 'decfsz', 'incf',
        +            'incfsz', 'iorwf', 'movf', 'nop', 'rlf', 'rrf', 'subwf', 'swapf', 'xorwf',
        +            'bcf', 'bsf', 'btfsc', 'btfss',
        +            'addlw', 'retfie', 'return', 'sublw', 'addcf', 'adddcf', 'b', 'bc', 'bdc',
        +            'bnc', 'bndc', 'bnz', 'bz', 'clrc', 'clrdc', 'clrz', 'lcall', 'lgoto', 'movfw',
        +            'negf', 'setc', 'setdc', 'setz', 'skpc', 'skpdc', 'skpnc', 'skpndc', 'skpnz', 'skpz',
        +            'subcf', 'subdcf', 'tstf'
        +            ),
        +        /* 16-bit Specific Instructiob Set */
        +        2 => array (
        +            'movfp', 'movlb', 'movlp', 'movpf', 'movwf', 'tablrd', 'tablwt', 'tlrd', 'tlwt',
        +            'addwfc', 'daw', 'mullw', 'negw', 'rlcf', 'rlncf', 'rrcf', 'rrncf', 'setf', 'subwfb',
        +            'btg', 'cpfseq', 'cpfsgt', 'cpfslt', 'dcfsnz', 'infsnz', 'tstfsz', 'lfsr', 'bnn',
        +            'bnov', 'bra', 'pop', 'push', 'rcall', 'reset'
        +            ),
        +        /* Registers */
        +        3 => array(
        +            'INDF', 'TMR0', 'PCL', 'STATUS', 'FSR', 'PORTA', 'PORTB', 'PORTC', 'PORTD', 'PORTE',
        +            'PCLATH', 'INTCON', 'PIR1', 'PIR2', 'TMR1L', 'TMR1H', 'T1CON', 'TMR2', 'T2CON', 'TMR2L',
        +            'TMR2H', 'TMR0H', 'TMR0L', 'SSPBUF', 'SSPCON', 'CCPR1L', 'CCPR1H', 'CCP1CON', 'RCSTA',
        +            'TXREG', 'RCREG', 'CCPR2L', 'CCPR2H', 'CCP2CON', 'OPTION', 'TRISA', 'TRISB', 'TRISC',
        +            'TRISD', 'TRISE', 'PIE2', 'PIE1', 'PR2', 'SSPADD', 'SSPSTAT', 'TXSTA', 'SPBRG'
        +            ),
        +        /*Operands*/
        +        5 => array(
        +            'high','low'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '[', ']', '(', ')'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #00007f;',
        +            2 => 'color: #0000ff;',
        +            3 => 'color: #007f00;',
        +            4 => 'color: #46aa03; font-weight:bold;',
        +            5 => 'color: #7f0000;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #adadad; font-style: italic;',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #7f007f;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #ff0000;',
        +            1 => 'color: #ff0000;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        //Hex numbers
        +        0 => '[0-9a-fA-F]{1,32}[hH]',
        +        //Binary numbers
        +        1 => '[01]{1,64}[bB]'
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/mxml.php b/includes/geshi/mxml.php
        new file mode 100644
        index 0000000..53945f9
        --- /dev/null
        +++ b/includes/geshi/mxml.php
        @@ -0,0 +1,143 @@
        + 'MXML',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(''),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        ),
        +    'SYMBOLS' => array(
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            ),
        +        'COMMENTS' => array(
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => 'color: #00bbdd;',
        +            1 => 'color: #ddbb00;',
        +            2 => 'color: #339933;',
        +            3 => 'color: #000000;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'font-weight: bold; color: black;',
        +            1 => 'color: #7400FF;',
        +            2 => 'color: #7400FF;'
        +            )
        +        ),
        +    'URLS' => array(
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        // xml declaration
        +        0 => array(
        +            GESHI_SEARCH => '(<[\/?|(\?xml)]?[a-z0-9_\-:]*(\?>))',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => 'i',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        // opening tags
        +        1 => array(
        +            GESHI_SEARCH => '(<\/?[a-z]+:[a-z]+)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => 'i',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        // closing tags
        +        2 => array(
        +            GESHI_SEARCH => '(\/?>)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => 'i',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            )
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
        +    'SCRIPT_DELIMITERS' => array(
        +        0 => array(
        +            ' '>'
        +            ),
        +        1 => array(
        +            '&' => ';'
        +            ),
        +        2 => array(
        +            //' ']]>'
        +            '' => ''
        +            ),
        +        3 => array(
        +            '<' => '>'
        +            )
        +    ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => false,
        +        1 => false,
        +        2 => false,
        +        3 => true
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/mysql.php b/includes/geshi/mysql.php
        new file mode 100644
        index 0000000..ff36cde
        --- /dev/null
        +++ b/includes/geshi/mysql.php
        @@ -0,0 +1,472 @@
        + 'MySQL',
        +    //'COMMENT_SINGLE' => array(1 =>'--', 2 => '#'),    // '--' MUST be folowed by whitespace,not necessarily a space
        +    'COMMENT_SINGLE' => array(
        +        1 =>'-- ',
        +        2 => '#'
        +        ),
        +    'COMMENT_REGEXP' => array(
        +        1 => "/(?:--\s).*?$/",                          // double dash followed by any whitespace
        +        ),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,            // @@@ would be nice if this could be defined per group!
        +    'QUOTEMARKS' => array("'", '"', '`'),
        +    'ESCAPE_CHAR' => '\\',                              // by default only, can be specified
        +    'ESCAPE_REGEXP' => array(
        +        1 => "/[_%]/",                                  // search wildcards
        +        ),
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC |
        +        GESHI_NUMBER_OCT_PREFIX |
        +        GESHI_NUMBER_HEX_PREFIX |
        +        GESHI_NUMBER_FLT_NONSCI |
        +        GESHI_NUMBER_FLT_SCI_SHORT |
        +        GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        1 => array(
        +            // Mix: statement keywords and keywords that don't fit in any other
        +            // category, or have multiple usage/meanings
        +            'ACTION','ADD','AFTER','ALGORITHM','ALL','ALTER','ANALYZE','ANY',
        +            'ASC','AS','BDB','BEGIN','BERKELEYDB','BINARY','BTREE','CALL',
        +            'CASCADED','CASCADE','CHAIN','CHANGE','CHECK','COLUMNS','COLUMN',
        +            'COMMENT','COMMIT','COMMITTED','CONSTRAINT','CONTAINS SQL',
        +            'CONSISTENT','CONVERT','CREATE','CROSS','DATA','DATABASES',
        +            'DECLARE','DEFINER','DELAYED','DELETE','DESCRIBE','DESC',
        +            'DETERMINISTIC','DISABLE','DISCARD','DISTINCTROW','DISTINCT','DO',
        +            'DROP','DUMPFILE','DUPLICATE KEY','ENABLE','ENCLOSED BY','ENGINE',
        +            'ERRORS','ESCAPED BY','EXISTS','EXPLAIN','EXTENDED','FIELDS',
        +            'FIRST','FOR EACH ROW','FORCE','FOREIGN KEY','FROM','FULL',
        +            'FUNCTION','GLOBAL','GRANT','GROUP BY','HANDLER','HASH','HAVING',
        +            'HELP','HIGH_PRIORITY','IF NOT EXISTS','IGNORE','IMPORT','INDEX',
        +            'INFILE','INNER','INNODB','INOUT','INTO','INVOKER',
        +            'ISOLATION LEVEL','JOIN','KEYS','KEY','KILL','LANGUAGE SQL','LAST',
        +            'LIMIT','LINES','LOAD','LOCAL','LOCK','LOW_PRIORITY',
        +            'MASTER_SERVER_ID','MATCH','MERGE','MIDDLEINT','MODIFIES SQL DATA',
        +            'MODIFY','MRG_MYISAM','NATURAL','NEXT','NO SQL','NO','ON',
        +            'OPTIMIZE','OPTIONALLY','OPTION','ORDER BY','OUTER','OUTFILE','OUT',
        +            'PARTIAL','PARTITION','PREV','PRIMARY KEY','PRIVILEGES','PROCEDURE',
        +            'PURGE','QUICK','READS SQL DATA','READ','REFERENCES','RELEASE',
        +            'RENAME','REORGANIZE','REPEATABLE','REQUIRE','RESTRICT','RETURNS',
        +            'REVOKE','ROLLBACK','ROUTINE','RTREE','SAVEPOINT','SELECT',
        +            'SERIALIZABLE','SESSION','SET','SHARE MODE','SHOW','SIMPLE',
        +            'SNAPSHOT','SOME','SONAME','SQL SECURITY','SQL_BIG_RESULT',
        +            'SQL_BUFFER_RESULT','SQL_CACHE','SQL_CALC_FOUND_ROWS',
        +            'SQL_NO_CACHE','SQL_SMALL_RESULT','SSL','START','STARTING BY',
        +            'STATUS','STRAIGHT_JOIN','STRIPED','TABLESPACE','TABLES','TABLE',
        +            'TEMPORARY','TEMPTABLE','TERMINATED BY','TO','TRANSACTIONS',
        +            'TRANSACTION','TRIGGER','TYPES','TYPE','UNCOMMITTED','UNDEFINED',
        +            'UNION','UNLOCK_TABLES','UPDATE','USAGE','USE','USER_RESOURCES',
        +            'USING','VALUES','VALUE','VIEW','WARNINGS','WHERE','WITH ROLLUP',
        +            'WITH','WORK','WRITE',
        +            ),
        +        2 => array(     //No ( must follow
        +            // Mix: statement keywords distinguished from functions by the same name
        +            "CURRENT_USER", "DATABASE", "IN", "INSERT", "DEFAULT", "REPLACE", "SCHEMA", "TRUNCATE"
        +            ),
        +        3 => array(
        +            // Values (Constants)
        +            'FALSE','NULL','TRUE',
        +            ),
        +        4 => array(
        +            // Column Data Types
        +            'BIGINT','BIT','BLOB','BOOLEAN','BOOL','CHARACTER VARYING',
        +            'CHAR VARYING','DATETIME','DECIMAL','DEC','DOUBLE PRECISION',
        +            'DOUBLE','ENUM','FIXED','FLOAT','GEOMETRYCOLLECTION','GEOMETRY',
        +            'INTEGER','INT','LINESTRING','LONGBLOB','LONGTEXT','MEDIUMBLOB',
        +            'MEDIUMINT','MEDIUMTEXT','MULTIPOINT','MULTILINESTRING',
        +            'MULTIPOLYGON','NATIONAL CHARACTER','NATIONAL CHARACTER VARYING',
        +            'NATIONAL CHAR VARYING','NATIONAL VARCHAR','NCHAR VARCHAR','NCHAR',
        +            'NUMERIC','POINT','POLYGON','REAL','SERIAL',
        +            'SMALLINT','TEXT','TIMESTAMP','TINYBLOB','TINYINT',
        +            'TINYTEXT','VARBINARY','VARCHARACTER','VARCHAR',
        +            ),
        +        5 => array(     //No ( must follow
        +            // Column data types distinguished from functions by the same name
        +            "CHAR", "DATE", "TIME"
        +            ),
        +        6 => array(
        +            // Table, Column & Index Attributes
        +            'AUTO_INCREMENT','AVG_ROW_LENGTH','BOTH','CHECKSUM','CONNECTION',
        +            'DATA DIRECTORY','DEFAULT NULL','DELAY_KEY_WRITE','FULLTEXT',
        +            'INDEX DIRECTORY','INSERT_METHOD','LEADING','MAX_ROWS','MIN_ROWS',
        +            'NOT NULL','PACK_KEYS','ROW_FORMAT','SERIAL DEFAULT VALUE','SIGNED',
        +            'SPATIAL','TRAILING','UNIQUE','UNSIGNED','ZEROFILL'
        +            ),
        +        7 => array(     //No ( must follow
        +            // Column attribute distinguished from function by the same name
        +            "CHARSET"
        +            ),
        +        8 => array(
        +            // Date and Time Unit Specifiers
        +            'DAY_HOUR','DAY_MICROSECOND','DAY_MINUTE','DAY_SECOND',
        +            'HOUR_MICROSECOND','HOUR_MINUTE','HOUR_SECOND',
        +            'MINUTE_MICROSECOND','MINUTE_SECOND',
        +            'SECOND_MICROSECOND','YEAR_MONTH'
        +            ),
        +        9 => array(     //No ( must follow
        +            // Date-time unit specifiers distinguished from functions by the same name
        +            "DAY", "HOUR", "MICROSECOND", "MINUTE", "MONTH", "QUARTER", "SECOND", "WEEK", "YEAR"
        +            ),
        +        10 => array(
        +            // Operators (see also Symbols)
        +            'AND','BETWEEN','CHARACTER SET','COLLATE','DIV','IS NOT NULL',
        +            'IS NOT','IS NULL','IS','LIKE','NOT','OFFSET','OR','REGEXP','RLIKE',
        +            'SOUNDS LIKE','XOR'
        +            ),
        +        11 => array(     //No ( must follow
        +            // Operator distinghuished from function by the same name
        +            "INTERVAL"
        +            ),
        +        12 => array(
        +            // Control Flow (functions)
        +            'CASE','ELSE','END','IFNULL','IF','NULLIF','THEN','WHEN',
        +            ),
        +        13 => array(
        +            // String Functions
        +            'ASCII','BIN','BIT_LENGTH','CHAR_LENGTH','CHARACTER_LENGTH',
        +            'CONCAT_WS','CONCAT','ELT','EXPORT_SET','FIELD',
        +            'FIND_IN_SET','FORMAT','HEX','INSTR','LCASE','LEFT','LENGTH',
        +            'LOAD_FILE','LOCATE','LOWER','LPAD','LTRIM','MAKE_SET','MID',
        +            'OCTET_LENGTH','ORD','POSITION','QUOTE','REPEAT','REVERSE',
        +            'RIGHT','RPAD','RTRIM','SOUNDEX','SPACE','STRCMP','SUBSTRING_INDEX',
        +            'SUBSTRING','TRIM','UCASE','UNHEX','UPPER',
        +            ),
        +        14 => array(     //A ( must follow
        +            // String functions distinguished from other keywords by the same name
        +            "INSERT", "REPLACE", "CHAR"
        +            ),
        +        15 => array(
        +            // Numeric Functions
        +            'ABS','ACOS','ASIN','ATAN2','ATAN','CEILING','CEIL',
        +            'CONV','COS','COT','CRC32','DEGREES','EXP','FLOOR','LN','LOG10',
        +            'LOG2','LOG','MOD','OCT','PI','POWER','POW','RADIANS','RAND',
        +            'ROUND','SIGN','SIN','SQRT','TAN',
        +            ),
        +        16 => array(     //A ( must follow
        +            // Numeric function distinguished from other keyword by the same name
        +            "TRUNCATE"
        +            ),
        +        17 => array(
        +            // Date and Time Functions
        +            'ADDDATE','ADDTIME','CONVERT_TZ','CURDATE','CURRENT_DATE',
        +            'CURRENT_TIME','CURRENT_TIMESTAMP','CURTIME','DATE_ADD',
        +            'DATE_FORMAT','DATE_SUB','DATEDIFF','DAYNAME','DAYOFMONTH',
        +            'DAYOFWEEK','DAYOFYEAR','EXTRACT','FROM_DAYS','FROM_UNIXTIME',
        +            'GET_FORMAT','LAST_DAY','LOCALTIME','LOCALTIMESTAMP','MAKEDATE',
        +            'MAKETIME','MONTHNAME','NOW','PERIOD_ADD',
        +            'PERIOD_DIFF','SEC_TO_TIME','STR_TO_DATE','SUBDATE','SUBTIME',
        +            'SYSDATE','TIME_FORMAT','TIME_TO_SEC',
        +            'TIMESTAMPADD','TIMESTAMPDIFF','TO_DAYS',
        +            'UNIX_TIMESTAMP','UTC_DATE','UTC_TIME','UTC_TIMESTAMP','WEEKDAY',
        +            'WEEKOFYEAR','YEARWEEK',
        +            ),
        +        18 => array(     //A ( must follow
        +            // Date-time functions distinguished from other keywords by the same name
        +            "DATE", "DAY", "HOUR", "MICROSECOND", "MINUTE", "MONTH", "QUARTER",
        +            "SECOND", "TIME", "WEEK", "YEAR"
        +            ),
        +        19 => array(
        +            // Comparison Functions
        +            'COALESCE','GREATEST','ISNULL','LEAST',
        +            ),
        +        20 => array(     //A ( must follow
        +            // Comparison functions distinguished from other keywords by the same name
        +            "IN", "INTERVAL"
        +            ),
        +        21 => array(
        +            // Encryption and Compression Functions
        +            'AES_DECRYPT','AES_ENCRYPT','COMPRESS','DECODE','DES_DECRYPT',
        +            'DES_ENCRYPT','ENCODE','ENCRYPT','MD5','OLD_PASSWORD','PASSWORD',
        +            'SHA1','SHA','UNCOMPRESS','UNCOMPRESSED_LENGTH',
        +            ),
        +        22 => array(
        +            // GROUP BY (aggregate) Functions
        +            'AVG','BIT_AND','BIT_OR','BIT_XOR','COUNT','GROUP_CONCAT',
        +            'MAX','MIN','STDDEV_POP','STDDEV_SAMP','STDDEV','STD','SUM',
        +            'VAR_POP','VAR_SAMP','VARIANCE',
        +            ),
        +        23 => array(
        +            // Information Functions
        +            'BENCHMARK','COERCIBILITY','COLLATION','CONNECTION_ID',
        +            'FOUND_ROWS','LAST_INSERT_ID','ROW_COUNT',
        +            'SESSION_USER','SYSTEM_USER','USER','VERSION',
        +            ),
        +        24 => array(     //A ( must follow
        +            // Information functions distinguished from other keywords by the same name
        +            "CURRENT_USER", "DATABASE", "SCHEMA", "CHARSET"
        +            ),
        +        25 => array(
        +            // Miscellaneous Functions
        +            'ExtractValue','BIT_COUNT','GET_LOCK','INET_ATON','INET_NTOA',
        +            'IS_FREE_LOCK','IS_USED_LOCK','MASTER_POS_WAIT','NAME_CONST',
        +            'RELEASE_LOCK','SLEEP','UpdateXML','UUID',
        +            ),
        +        26 => array(     //A ( must follow
        +            // Miscellaneous function distinguished from other keyword by the same name
        +            "DEFAULT"
        +            ),
        +        27 => array(
        +            // Geometry Functions
        +            'Area','AsBinary','AsText','AsWKB','AsWKT','Boundary','Buffer',
        +            'Centroid','Contains','ConvexHull','Crosses',
        +            'Difference','Dimension','Disjoint','Distance',
        +            'EndPoint','Envelope','Equals','ExteriorRing',
        +            'GLength','GeomCollFromText','GeomCollFromWKB','GeomFromText',
        +            'GeomFromWKB','GeometryCollectionFromText',
        +            'GeometryCollectionFromWKB','GeometryFromText','GeometryFromWKB',
        +            'GeometryN','GeometryType',
        +            'InteriorRingN','Intersection','Intersects','IsClosed','IsEmpty',
        +            'IsRing','IsSimple',
        +            'LineFromText','LineFromWKB','LineStringFromText',
        +            'LineStringFromWKB',
        +            'MBRContains','MBRDisjoint','MBREqual','MBRIntersects',
        +            'MBROverlaps','MBRTouches','MBRWithin','MLineFromText',
        +            'MLineFromWKB','MPointFromText','MPointFromWKB','MPolyFromText',
        +            'MPolyFromWKB','MultiLineStringFromText','MultiLineStringFromWKB',
        +            'MultiPointFromText','MultiPointFromWKB','MultiPolygonFromText',
        +            'MultiPolygonFromWKB',
        +            'NumGeometries','NumInteriorRings','NumPoints',
        +            'Overlaps',
        +            'PointFromText','PointFromWKB','PointN','PointOnSurface',
        +            'PolyFromText','PolyFromWKB','PolygonFromText','PolygonFromWKB',
        +            'Related','SRID','StartPoint','SymDifference',
        +            'Touches',
        +            'Union',
        +            'Within',
        +            'X',
        +            'Y',
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        1 => array(
        +            /* Operators */
        +            '=', ':=',                                      // assignment operators
        +            '||', '&&', '!',                                // locical operators
        +            '=', '<=>', '>=', '>', '<=', '<', '<>', '!=',   // comparison operators
        +            '|', '&', '^', '~', '<<', '>>',                 // bitwise operators
        +            '-', '+', '*', '/', '%',                        // numerical operators
        +            ),
        +        2 => array(
        +            /* Other syntactical symbols */
        +            '(', ')',
        +            ',', ';',
        +            ),
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        6 => false,
        +        7 => false,
        +        8 => false,
        +        9 => false,
        +        10 => false,
        +        11 => false,
        +        12 => false,
        +        13 => false,
        +        14 => false,
        +        15 => false,
        +        16 => false,
        +        17 => false,
        +        18 => false,
        +        19 => false,
        +        20 => false,
        +        21 => false,
        +        22 => false,
        +        23 => false,
        +        24 => false,
        +        25 => false,
        +        26 => false,
        +        27 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #990099; font-weight: bold;',      // mix
        +            2 => 'color: #990099; font-weight: bold;',      // mix
        +            3 => 'color: #9900FF; font-weight: bold;',      // constants
        +            4 => 'color: #999900; font-weight: bold;',      // column data types
        +            5 => 'color: #999900; font-weight: bold;',      // column data types
        +            6 => 'color: #FF9900; font-weight: bold;',      // attributes
        +            7 => 'color: #FF9900; font-weight: bold;',      // attributes
        +            8 => 'color: #9900FF; font-weight: bold;',      // date-time units
        +            9 => 'color: #9900FF; font-weight: bold;',      // date-time units
        +
        +            10 => 'color: #CC0099; font-weight: bold;',      // operators
        +            11 => 'color: #CC0099; font-weight: bold;',      // operators
        +
        +            12 => 'color: #009900;',     // control flow (functions)
        +            13 => 'color: #000099;',     // string functions
        +            14 => 'color: #000099;',     // string functions
        +            15 => 'color: #000099;',     // numeric functions
        +            16 => 'color: #000099;',     // numeric functions
        +            17 => 'color: #000099;',     // date-time functions
        +            18 => 'color: #000099;',     // date-time functions
        +            19 => 'color: #000099;',     // comparison functions
        +            20 => 'color: #000099;',     // comparison functions
        +            21 => 'color: #000099;',     // encryption functions
        +            22 => 'color: #000099;',     // aggregate functions
        +            23 => 'color: #000099;',     // information functions
        +            24 => 'color: #000099;',     // information functions
        +            25 => 'color: #000099;',     // miscellaneous functions
        +            26 => 'color: #000099;',     // miscellaneous functions
        +            27 => 'color: #00CC00;',     // geometry functions
        +            ),
        +        'COMMENTS' => array(
        +            'MULTI' => 'color: #808000; font-style: italic;',
        +            1 => 'color: #808080; font-style: italic;',
        +            2 => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #004000; font-weight: bold;',
        +            1 => 'color: #008080; font-weight: bold;'       // search wildcards
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #FF00FF;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #008000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #008080;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            1 => 'color: #CC0099;',         // operators
        +            2 => 'color: #000033;',         // syntax
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => 'http://search.oracle.com/search/search?group=MySQL&q={FNAME}',
        +        2 => 'http://search.oracle.com/search/search?group=MySQL&q={FNAME}',
        +        3 => 'http://search.oracle.com/search/search?group=MySQL&q={FNAME}',
        +        4 => 'http://search.oracle.com/search/search?group=MySQL&q={FNAME}',
        +        5 => 'http://search.oracle.com/search/search?group=MySQL&q={FNAME}',
        +        6 => 'http://search.oracle.com/search/search?group=MySQL&q={FNAME}',
        +        7 => 'http://search.oracle.com/search/search?group=MySQL&q={FNAME}',
        +        8 => 'http://search.oracle.com/search/search?group=MySQL&q={FNAME}',
        +        9 => 'http://search.oracle.com/search/search?group=MySQL&q={FNAME}',
        +
        +        10 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/non-typed-operators.html',
        +        11 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/non-typed-operators.html',
        +
        +        12 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/control-flow-functions.html',
        +        13 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/string-functions.html',
        +        14 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/string-functions.html',
        +        15 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/numeric-functions.html',
        +        16 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/numeric-functions.html',
        +        17 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/date-and-time-functions.html',
        +        18 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/date-and-time-functions.html',
        +        19 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/comparison-operators.html',
        +        20 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/comparison-operators.html',
        +        21 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/encryption-functions.html',
        +        22 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/group-by-functions-and-modifiers.html',
        +        23 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/information-functions.html',
        +        24 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/information-functions.html',
        +        25 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/func-op-summary-ref.html',
        +        26 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/func-op-summary-ref.html',
        +        27 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/analysing-spatial-information.html',
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            2 => array(
        +                'DISALLOWED_AFTER' => '(?![\(\w])'
        +                ),
        +            5 => array(
        +                'DISALLOWED_AFTER' => '(?![\(\w])'
        +                ),
        +            7 => array(
        +                'DISALLOWED_AFTER' => '(?![\(\w])'
        +                ),
        +            9 => array(
        +                'DISALLOWED_AFTER' => '(?![\(\w])'
        +                ),
        +            11 => array(
        +                'DISALLOWED_AFTER' => '(?![\(\w])'
        +                ),
        +
        +            14 => array(
        +                'DISALLOWED_AFTER' => '(?=\()'
        +                ),
        +            16 => array(
        +                'DISALLOWED_AFTER' => '(?=\()'
        +                ),
        +            18 => array(
        +                'DISALLOWED_AFTER' => '(?=\()'
        +                ),
        +            20 => array(
        +                'DISALLOWED_AFTER' => '(?=\()'
        +                ),
        +            24 => array(
        +                'DISALLOWED_AFTER' => '(?=\()'
        +                ),
        +            26 => array(
        +                'DISALLOWED_AFTER' => '(?=\()'
        +                )
        +            )
        +        )
        +);
        diff --git a/includes/geshi/nagios.php b/includes/geshi/nagios.php
        new file mode 100644
        index 0000000..6dec5df
        --- /dev/null
        +++ b/includes/geshi/nagios.php
        @@ -0,0 +1,223 @@
        +
        + * Copyright: (c) 2012 Albéric de Pertat (https://github.com/adepertat/geshi-nagios)
        + * Release Version: 1.0.8.12
        + * Date Started: 2012/01/19
        + *
        + * Nagios language file for GeSHi.
        + *
        + * CHANGES
        + * -------
        + * 2012/01/19 (1.0.0)
        + *  -  First Release
        + *
        + * TODO (updated 2012/01/19)
        + * -------------------------
        + *
        + *************************************************************************************
        + *
        + *     This file is part of GeSHi.
        + *
        + *   GeSHi is free software; you can redistribute it and/or modify
        + *   it under the terms of the GNU General Public License as published by
        + *   the Free Software Foundation; either version 2 of the License, or
        + *   (at your option) any later version.
        + *
        + *   GeSHi is distributed in the hope that it will be useful,
        + *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + *   GNU General Public License for more details.
        + *
        + *   You should have received a copy of the GNU General Public License
        + *   along with GeSHi; if not, write to the Free Software
        + *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        + *
        + ************************************************************************************/
        +
        +$language_data = array(
        +    'LANG_NAME' => 'Nagios',
        +    'COMMENT_SINGLE' => array(1 => ';', 2 => '#'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'HARDQUOTE' => array("'", "'"),
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\'',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'define'
        +            ),
        +        2 => array(
        +            'command', 'contact', 'contactgroup', 'host', 'hostdependency',
        +            'hostescalation', 'hostextinfo', 'hostgroup', 'service',
        +            'servicedependency', 'serviceescalation',
        +            'serviceextinfo', 'servicegroup', 'timeperiod'
        +            ),
        +        3 => array(
        +            'active_checks_enabled', 'passive_checks_enabled', 'alias',
        +            'display_name', 'host_name', 'address', 'hostgroups', 'parents',
        +            'hostgroup_members', 'members', 'service_description',
        +            'servicegroups', 'is_volatile', 'servicegroup_name',
        +            'servicegroup_members', 'contact_name', 'contactgroups', 'email',
        +            'pager', 'can_submit_commands', 'contactgroup_name',
        +            'contactgroup_members', 'host_notifications_enabled',
        +            'service_notifications_enabled', 'host_notification_period',
        +            'service_notification_period', 'host_notification_options',
        +            'service_notification_options', 'host_notification_commands',
        +            'service_notification_commands', 'check_command',
        +            'check_freshness', 'check_interval', 'check_period', 'contacts',
        +            'contact_groups', 'event_handler', 'event_handler_enabled',
        +            'flap_detection_enabled', 'flap_detection_options',
        +            'freshness_threshold', 'initial_state', 'low_flap_threshold',
        +            'high_flap_threshold', 'max_check_attempts',
        +            'notification_interval', 'first_notification_delay',
        +            'notification_period', 'notification_options',
        +            'notifications_enabled', 'stalking_options', 'notes', 'notes_url',
        +            'action_url', 'icon_image', 'icon_image_alt', 'vrml_image',
        +            'statusmap_image', '2d_coords', '3d_coords', 'obsess_over_host',
        +            'obsess_over_hostver_service', 'process_perf_data',
        +            'retain_status_information', 'retain_nonstatus_information',
        +            'retry_interval', 'register', 'use', 'name', 'timeperiod_name',
        +            'exclude', 'command_name', 'command_line', 'dependent_host_name',
        +            'dependent_hostgroup_name', 'dependent_service_description',
        +            'inherits_parent', 'execution_failure_criteria',
        +            'notification_failure_criteria', 'dependency_period',
        +            'first_notification', 'last_notification', 'escalation_period',
        +            'escalation_options'
        +            ),
        +        4 => array(
        +            'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday',
        +            'sunday', 'january', 'february', 'march', 'april', 'may', 'june',
        +            'july', 'august', 'september', 'october', 'november', 'december',
        +            'day'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array(
        +            '{', '}', ',', '+'
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'font-weight:bold;color:#FFDCA8;',
        +            2 => 'font-weight:bold;color #FFA858;',
        +            3 => 'font-weight:bold;color:#00C0C0;',
        +            4 => 'font-weight:bold;color:#C0C0FF;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'font-weight:bold;color:#000000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => ''
        +            ),
        +        'COMMENTS' => array(
        +            0 => 'color: #AAAAAA; font-style: italic;',
        +            1 => 'color: #AAAAAA; font-style: italic;',
        +            2 => 'color: #AAAAAA; font-style: italic;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #660066;',
        +            'HARD' => 'color: #660066;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'font-weight:bold;color:#808080;',
        +            1 => 'font-weight:bold;color:#000080;',
        +            2 => 'font-weight:bold;color:red;',
        +            3 => 'font-weight:bold;color:#808000;',
        +            4 => 'font-weight:bold;color:blue;',
        +            5 => 'font-weight:bold;color:#C0FFC0;',
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            )
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '\\'
        +        ),
        +    'REGEXPS' => array(
        +        // Custom macros
        +        0 => array(
        +            GESHI_SEARCH => '(\$[a-zA-Z_]+\$)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => '',
        +            ),
        +        // Custom macro definitions
        +        1 => array(
        +            GESHI_SEARCH => '(\A|\s)(_[a-zA-Z_]+)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '',
        +            ),
        +        // $USERxx$
        +        2 => array(
        +            GESHI_SEARCH => '(\$USER[0-9]+\$)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => '',
        +            ),
        +        // $ARGxx$
        +        3 => array(
        +            GESHI_SEARCH => '(\$ARG[1-9]\$)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => '',
        +            ),
        +        // register 0
        +        4 => array(
        +            GESHI_SEARCH => '(\bregister[\\x20\\t]+[01])',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => '',
        +            ),
        +        // use
        +        5 => array(
        +            GESHI_SEARCH => '(use[\\x20\\t]+[^\\x20\\t]+)([\\x20\\t]*[$;#])',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '',
        +            ),
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => false
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'ENABLE_FLAGS' => array(
        +            'NUMBERS' => GESHI_NEVER
        +            )
        +        )
        +);
        diff --git a/includes/geshi/netrexx.php b/includes/geshi/netrexx.php
        new file mode 100644
        index 0000000..0ef4be0
        --- /dev/null
        +++ b/includes/geshi/netrexx.php
        @@ -0,0 +1,161 @@
        + 'NetRexx',
        +    'COMMENT_SINGLE' => array(1 => '--'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'class', 'do', 'exit', 'if', 'import', 'iterate', 'leave',
        +            'loop', 'nop', 'numeric', 'package', 'parse', 'properties',
        +            'return', 'say', 'select', 'signal', 'trace'
        +            ),
        +        2 => array(
        +            'abstract', 'adapter', 'all', 'ask', 'binary', 'case',
        +            'constant', 'dependent', 'deprecated', 'extends', 'final',
        +            'implements', 'inheritable', 'interface', 'label', 'methods',
        +            'native', 'off', 'private', 'protect', 'public', 'results',
        +            'returns', 'shared', 'signals', 'source', 'static',
        +            'transient', 'unused', 'uses', 'version', 'volatile'
        +            ),
        +        3 => array(
        +            'catch', 'else', 'end', 'finally', 'otherwise', 'then', 'when'
        +            ),
        +        4 => array(
        +            'rc', 'result', 'self', 'sigl', 'super'
        +            ),
        +        5 => array(
        +            'placeholderforoorexxdirectives'
        +            ),
        +        6 => array(
        +            'abbrev', 'abs', 'b2x', 'c2d', 'c2x', 'center', 'centre',
        +            'changestr', 'compare', 'copies', 'copyindexed', 'countstr',
        +            'd2c', 'd2x', 'datatype', 'delstr', 'delword', 'exists',
        +            'formword', 'hashcode', 'insert', 'lastpos', 'left', 'lower',
        +            'max', 'min', 'noteq', 'noteqs', 'opadd', 'opand', 'opcc',
        +            'opccblank', 'opdiv', 'opdivi', 'opeq', 'opeqs', 'opgt',
        +            'opgteq', 'opgteqs', 'opgts', 'oplt', 'oplteq', 'oplteqs',
        +            'oplts', 'opminus', 'opmult', 'opnot', 'opor', 'opplus',
        +            'oppow', 'oprem', 'opsub', 'opxor', 'overlay', 'pos position',
        +            'reverse', 'right', 'sequence', 'setdigits', 'setform',
        +            'sign', 'space', 'strip', 'substr', 'subword', 'toboolean',
        +            'tobyte', 'tochar', 'todouble', 'tofloat', 'toint', 'tolong',
        +            'toshort', 'tostring', 'translate', 'trunc', 'upper',
        +            'verify', 'word', 'wordindex', 'wordlength', 'wordpos',
        +            'words', 'x2b', 'x2c', 'x2d'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '<', '>', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':',
        +        '<', '>'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => true,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        6 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #ff0000; font-weight: bold;',
        +            3 => 'color: #00ff00; font-weight: bold;',
        +            4 => 'color: #0000ff; font-weight: bold;',
        +            5 => 'color: #880088; font-weight: bold;',
        +            6 => 'color: #888800; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666;',
        +            'MULTI' => 'color: #808080;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #202020;',
        +            2 => 'color: #202020;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/newlisp.php b/includes/geshi/newlisp.php
        new file mode 100644
        index 0000000..134ccfc
        --- /dev/null
        +++ b/includes/geshi/newlisp.php
        @@ -0,0 +1,189 @@
        + 'newlisp',
        +    'COMMENT_SINGLE' => array(1 => ';', 2 => '#'),
        +    'COMMENT_MULTI' => array('[text]' => '[/text]', '{' => '}'), // also used for strings
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'NUMBERS' => GESHI_NUMBER_INT_BASIC |  GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'TAB_WIDTH' => 2,
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'NaN?','abort','abs','acos','acosh','add','address','amb','and',
        +            'append','append-file','apply','args','array','array-list','array?',
        +            'asin','asinh','assoc','atan','atan2','atanh','atom?','base64-dec',
        +            'base64-enc','bayes-query','bayes-train','begin','beta','betai',
        +            'bind','binomial','bits','callback','case','catch','ceil',
        +            'change-dir','char','chop','clean','close','command-event','cond',
        +            'cons','constant','context','context?','copy','copy-file','cos',
        +            'cosh','count','cpymem','crc32','crit-chi2','crit-z','current-line',
        +            'curry','date','date-value','debug','dec','def-new','default',
        +            'define','define-macro','delete','delete-file','delete-url',
        +            'destroy','det','device','difference','directory','directory?',
        +            'div','do-until','do-while','doargs','dolist','dostring','dotimes',
        +            'dotree','dump','dup','empty?','encrypt','ends-with','env','erf',
        +            'error-event','estack','eval','eval-string','exec','exists','exit',
        +            'exp','expand','explode','factor','fft','file-info','file?',
        +            'filter','find','find-all','first','flat','float','float?','floor',
        +            'flt','for','for-all','fork','format','fv','gammai','gammaln','gcd',
        +            'get-char','get-float','get-int','get-long','get-string','get-url',
        +            'global','global?','if','if-not','ifft','import','inc','index',
        +            'inf?','int','integer','integer?','intersect','invert','irr','join',
        +            'lambda','lambda?','last','last-error','legal?','length','let',
        +            'letex','letn','list','list?','load','local','log','lookup',
        +            'lower-case','macro?','main-args','make-dir','map','mat','match',
        +            'max','member','min','mod','mul','multiply','name','net-accept',
        +            'net-close','net-connect','net-error','net-eval','net-interface',
        +            'net-listen','net-local','net-lookup','net-peek','net-peer',
        +            'net-ping','net-receive','net-receive-from','net-receive-udp',
        +            'net-select','net-send','net-send-to','net-send-udp','net-service',
        +            'net-sessions','new','nil','nil?','normal','not','now','nper','npv',
        +            'nth','null?','number?','open','or','pack','parse','parse-date',
        +            'peek','pipe','pmt','pop','pop-assoc','post-url','pow',
        +            'pretty-print','primitive?','print','println','prob-chi2','prob-z',
        +            'process','prompt-event','protected?','push','put-url','pv','quote',
        +            'quote?','rand','random','randomize','read-buffer','read-char',
        +            'read-expr','read-file','read-key','read-line','read-utf8',
        +            'real-path','receive','ref','ref-all','regex','regex-comp',
        +            'remove-dir','rename-file','replace','reset','rest','reverse',
        +            'rotate','round','save','search','seed','seek','select','semaphore',
        +            'send','sequence','series','set','set-locale','set-ref',
        +            'set-ref-all','setf','setq','sgn','share','signal','silent','sin',
        +            'sinh','sleep','slice','sort','source','spawn','sqrt','starts-with',
        +            'string','string?','sub','swap','sym','symbol?','symbols','sync',
        +            'sys-error','sys-info','tan','tanh','throw','throw-error','time',
        +            'time-of-day','timer','title-case','trace','trace-highlight',
        +            'transpose','trim','true','true?','unicode','unify','unique',
        +            'unless','unpack','until','upper-case','utf8','utf8len','uuid',
        +            'wait-pid','when','while','write-buffer','write-char','write-file',
        +            'write-line','xfer-event','xml-error','xml-parse','xml-type-tags',
        +            'zero?'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array(
        +            '(', ')','\''
        +            ),
        +        1 => array(
        +            '!','!=','$','%','&','*','+','-','/',':',
        +            '<','<<','<=','=','>','>=','>>','^','|'
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000AA;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            2 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #00aa00; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #777700;'
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #000099;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #AA0000;',
        +            1 => 'color: #0000AA;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #00aa00;',
        +            1 => 'color: #00aa00;',
        +            2 => 'color: #00aa00;',
        +            3 => 'color: #00aa00;',
        +            4 => 'color: #00aa00;',
        +            5 => 'color: #AA0000;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => 'http://www.newlisp.org/downloads/newlisp_manual.html#{FNAME}'
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(':'),
        +    'REGEXPS' => array(
        +        // tags in newlispdoc
        +        0 => "\s+@\S*?\s+",
        +        // dollar sign symbols
        +        1 => "[\\$]\w*",
        +        // curly-braced string literals
        +        2 => "{[^{}]*?}",
        +        // [text] multi-line strings
        +        3 => "(?s)\[text\].*\[\/text\](?-s)",
        +        // [code] multi-line blocks
        +        4 => "(?s)\[code\].*\[\/code\](?-s)",
        +        // variable references
        +        5 => "'[\w\-]+"
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'OOLANG' => array(
        +            'MATCH_AFTER' => '[a-zA-Z][a-zA-Z0-9_\-]*'
        +            ),
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => '(?<=[^\w\-])',
        +            )
        +        ),
        +
        +);
        diff --git a/includes/geshi/nginx.php b/includes/geshi/nginx.php
        new file mode 100644
        index 0000000..0d4fe3b
        --- /dev/null
        +++ b/includes/geshi/nginx.php
        @@ -0,0 +1,868 @@
        + 'nginx',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array( // core module
        +            // http://wiki.nginx.org/CoreModule
        +            // http://nginx.org/en/docs/ngx_core_module.html
        +            'daemon',
        +            'debug_points',
        +            'env',
        +            'error_log',
        +            'events',
        +            'include',
        +            'lock_file',
        +            'master_process',
        +            'pcre_jit',
        +            'pid',
        +            'ssl_engine',
        +            'timer_resolution',
        +            'user',
        +            'worker_cpu_affinity',
        +            'worker_priority',
        +            'worker_processes',
        +            'worker_rlimit_core',
        +            'worker_rlimit_nofile',
        +            'worker_rlimit_sigpending',
        +            'working_directory',
        +            // see EventsModule due to organization of wiki
        +            //'accept_mutex',
        +            //'accept_mutex_delay',
        +            //'debug_connection',
        +            //'multi_accept',
        +            //'use',
        +            //'worker_connections',
        +            ),
        +        2 => array( // events module
        +            // http://wiki.nginx.org/EventsModule
        +            // http://nginx.org/en/docs/ngx_core_module.html
        +            'accept_mutex',
        +            'accept_mutex_delay',
        +            'debug_connection',
        +            'devpoll_changes',
        +            'devpoll_events',
        +            'kqueue_changes',
        +            'kqueue_events',
        +            'epoll_events',
        +            'multi_accept',
        +            'rtsig_signo',
        +            'rtsig_overflow_events',
        +            'rtsig_overflow_test',
        +            'rtsig_overflow_threshold',
        +            'use',
        +            'worker_connections',
        +            ),
        +        3 => array( // http module
        +            // http://wiki.nginx.org/HttpCoreModule
        +            // http://nginx.org/en/docs/http/ngx_http_core_module.html
        +            'aio',
        +            'alias',
        +            'chunked_transfer_encoding',
        +            'client_body_buffer_size',
        +            'client_body_in_file_only',
        +            'client_body_in_single_buffer',
        +            'client_body_temp_path',
        +            'client_body_timeout',
        +            'client_header_buffer_size',
        +            'client_header_timeout',
        +            'client_max_body_size',
        +            'connection_pool_size',
        +            'default_type',
        +            'directio',
        +            'directio_alignment',
        +            'disable_symlinks',
        +            'error_page',
        +            'etag',
        +            'http',
        +            'if_modified_since',
        +            'ignore_invalid_headers',
        +            'internal',
        +            'keepalive_disable',
        +            'keepalive_requests',
        +            'keepalive_timeout',
        +            'large_client_header_buffers',
        +            'limit_except',
        +            'limit_rate',
        +            'limit_rate_after',
        +            'lingering_close',
        +            'lingering_time',
        +            'lingering_timeout',
        +            'listen',
        +            'location',
        +            'log_not_found',
        +            'log_subrequest',
        +            'max_ranges',
        +            'merge_slashes',
        +            'msie_padding',
        +            'msie_refresh',
        +            'open_file_cache',
        +            'open_file_cache_errors',
        +            'open_file_cache_min_uses',
        +            'open_file_cache_valid',
        +            'optimize_server_names',
        +            'port_in_redirect',
        +            'postpone_output',
        +            'read_ahead',
        +            'recursive_error_pages',
        +            'request_pool_size',
        +            'reset_timedout_connection',
        +            'resolver',
        +            'resolver_timeout',
        +            'root',
        +            'satisfy',
        +            'satisfy_any',
        +            'send_lowat',
        +            'send_timeout',
        +            'sendfile',
        +            'sendfile_max_chunk',
        +            'server',
        +            'server_name',
        +            'server_name_in_redirect',
        +            'server_names_hash_bucket_size',
        +            'server_names_hash_max_size',
        +            'server_tokens',
        +            'tcp_nodelay',
        +            'tcp_nopush',
        +            'try_files',
        +            'types',
        +            'types_hash_bucket_size',
        +            'types_hash_max_size',
        +            'underscores_in_headers',
        +            'variables_hash_bucket_size',
        +            'variables_hash_max_size',
        +            ),
        +        4 => array( // upstream module
        +            // http://wiki.nginx.org/HttpUpstreamModule
        +            // http://nginx.org/en/docs/http/ngx_http_upstream_module.html
        +            'ip_hash',
        +            'keepalive',
        +            'least_conn',
        +            // Use the documentation from the core module since every conf will have at least one of those.
        +            //'server',
        +            'upstream',
        +            ),
        +        5 => array( // access module
        +            // http://wiki.nginx.org/HttpAccessModule
        +            // http://nginx.org/en/docs/http/ngx_http_access_module.html
        +            'deny',
        +            'allow',
        +            ),
        +        6 => array( // auth basic module
        +            // http://wiki.nginx.org/HttpAuthBasicModule
        +            // http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html
        +            'auth_basic',
        +            'auth_basic_user_file'
        +            ),
        +        7 => array( // auto index module
        +            // http://wiki.nginx.org/HttpAutoindexModule
        +            // http://nginx.org/en/docs/http/ngx_http_autoindex_module.html
        +            'autoindex',
        +            'autoindex_exact_size',
        +            'autoindex_localtime',
        +            ),
        +        8 => array( // browser module
        +            // http://wiki.nginx.org/HttpBrowserModule
        +            // http://nginx.org/en/docs/http/ngx_http_browser_module.html
        +            'ancient_browser',
        +            'ancient_browser_value',
        +            'modern_browser',
        +            'modern_browser_value',
        +            ),
        +        9 => array( // charset module
        +            // http://wiki.nginx.org/HttpCharsetModule
        +            // http://nginx.org/en/docs/http/ngx_http_charset_module.html
        +            'charset',
        +            'charset_map',
        +            'charset_types',
        +            'override_charset',
        +            'source_charset',
        +            ),
        +        10 => array( // empty gif module
        +            // http://wiki.nginx.org/HttpEmptyGifModule
        +            // http://nginx.org/en/docs/http/ngx_http_empty_gif_module.html
        +            'empty_gif',
        +            ),
        +        11 => array( // fastcgi module
        +            // http://wiki.nginx.org/HttpFastcgiModule
        +            // http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html
        +            'fastcgi_bind',
        +            'fastcgi_buffer_size',
        +            'fastcgi_buffers',
        +            'fastcgi_busy_buffers_size',
        +            'fastcgi_cache',
        +            'fastcgi_cache_bypass',
        +            'fastcgi_cache_key',
        +            'fastcgi_cache_lock',
        +            'fastcgi_cache_lock_timeout',
        +            'fastcgi_cache_methods',
        +            'fastcgi_cache_min_uses',
        +            'fastcgi_cache_path',
        +            'fastcgi_cache_use_stale',
        +            'fastcgi_cache_valid',
        +            'fastcgi_connect_timeout',
        +            'fastcgi_hide_header',
        +            'fastcgi_ignore_client_abort',
        +            'fastcgi_ignore_headers',
        +            'fastcgi_index',
        +            'fastcgi_intercept_errors',
        +            'fastcgi_keep_conn',
        +            'fastcgi_max_temp_file_size',
        +            'fastcgi_next_upstream',
        +            'fastcgi_no_cache',
        +            'fastcgi_param',
        +            'fastcgi_pass',
        +            'fastcgi_pass_header',
        +            'fastcgi_pass_request_body',
        +            'fastcgi_pass_request_headers',
        +            'fastcgi_read_timeout',
        +            'fastcgi_redirect_errors',
        +            'fastcgi_send_timeout',
        +            'fastcgi_split_path_info',
        +            'fastcgi_store',
        +            'fastcgi_store_access',
        +            'fastcgi_temp_file_write_size',
        +            'fastcgi_temp_path',
        +            ),
        +        12 => array( // geo module
        +            // http://wiki.nginx.org/HttpGeoModule
        +            // http://nginx.org/en/docs/http/ngx_http_geo_module.html
        +            'geo'
        +            ),
        +        13 => array( // gzip module
        +            // http://wiki.nginx.org/HttpGzipModule
        +            // http://nginx.org/en/docs/http/ngx_http_gzip_module.html
        +            'gzip',
        +            'gzip_buffers',
        +            'gzip_comp_level',
        +            'gzip_disable',
        +            'gzip_min_length',
        +            'gzip_http_version',
        +            'gzip_proxied',
        +            'gzip_types',
        +            'gzip_vary',
        +            ),
        +        14 => array( // headers module
        +            // http://wiki.nginx.org/HttpHeadersModule
        +            // http://nginx.org/en/docs/http/ngx_http_headers_module.html
        +            'add_header',
        +            'expires',
        +            ),
        +        15 => array( // index module
        +            // http://wiki.nginx.org/HttpIndexModule
        +            // http://nginx.org/en/docs/http/ngx_http_index_module.html
        +            'index',
        +            ),
        +        16 => array( // limit requests module
        +            // http://wiki.nginx.org/HttpLimitReqModule
        +            // http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
        +            'limit_req',
        +            'limit_req_log_level',
        +            'limit_req_zone',
        +            ),
        +        17 => array( // referer module
        +            // http://wiki.nginx.org/HttpRefererModule
        +            // http://nginx.org/en/docs/http/ngx_http_referer_module.html
        +            'referer_hash_bucket_size',
        +            'referer_hash_max_size',
        +            'valid_referers',
        +            ),
        +        18 => array( // limit zone module
        +            // deprecated in 1.1.8
        +            // http://wiki.nginx.org/HttpLimitZoneModule
        +            'limit_zone',
        +            // Covered by documentation for ngx_http_limit_conn_module
        +            //'limit_conn',
        +            ),
        +        19 => array( // limit connection module
        +            // http://wiki.nginx.org/HttpLimitConnModule
        +            // http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html
        +            'limit_conn',
        +            'limit_conn_zone',
        +            'limit_conn_log_level',
        +            ),
        +        20 => array( // log module
        +            // http://wiki.nginx.org/HttpLogModule
        +            // http://nginx.org/en/docs/http/ngx_http_log_module.html
        +            'access_log',
        +            'log_format',
        +            // Appears to be deprecated
        +            'log_format_combined',
        +            'open_log_file_cache',
        +            ),
        +        21 => array( // map module
        +            // http://wiki.nginx.org/HttpMapModule
        +            // http://nginx.org/en/docs/http/ngx_http_map_module.html
        +            'map',
        +            'map_hash_max_size',
        +            'map_hash_bucket_size',
        +            ),
        +        22 => array( // memcached module
        +            // http://wiki.nginx.org/HttpMemcachedModule
        +            // http://nginx.org/en/docs/http/ngx_http_memcached_module.html
        +            'memcached_buffer_size',
        +            'memcached_connect_timeout',
        +            'memcached_next_upstream',
        +            'memcached_pass',
        +            'memcached_read_timeout',
        +            'memcached_send_timeout',
        +            ),
        +        23 => array( // proxy module
        +            // http://wiki.nginx.org/HttpProxyModule
        +            // http://nginx.org/en/docs/http/ngx_http_proxy_module.html
        +            'proxy_bind',
        +            'proxy_buffer_size',
        +            'proxy_buffering',
        +            'proxy_buffers',
        +            'proxy_busy_buffers_size',
        +            'proxy_cache',
        +            'proxy_cache_bypass',
        +            'proxy_cache_key',
        +            'proxy_cache_lock',
        +            'proxy_cache_lock_timeout',
        +            'proxy_cache_methods',
        +            'proxy_cache_min_uses',
        +            'proxy_cache_path',
        +            'proxy_cache_use_stale',
        +            'proxy_cache_valid',
        +            'proxy_connect_timeout',
        +            'proxy_cookie_domain',
        +            'proxy_cookie_path',
        +            'proxy_headers_hash_bucket_size',
        +            'proxy_headers_hash_max_size',
        +            'proxy_hide_header',
        +            'proxy_http_version',
        +            'proxy_ignore_client_abort',
        +            'proxy_ignore_headers',
        +            'proxy_intercept_errors',
        +            'proxy_max_temp_file_size',
        +            'proxy_method',
        +            'proxy_next_upstream',
        +            'proxy_no_cache',
        +            'proxy_pass',
        +            'proxy_pass_header',
        +            'proxy_pass_request_body',
        +            'proxy_pass_request_headers',
        +            'proxy_redirect',
        +            'proxy_read_timeout',
        +            'proxy_redirect_errors',
        +            'proxy_send_lowat',
        +            'proxy_send_timeout',
        +            'proxy_set_body',
        +            'proxy_set_header',
        +            'proxy_ssl_session_reuse',
        +            'proxy_store',
        +            'proxy_store_access',
        +            'proxy_temp_file_write_size',
        +            'proxy_temp_path',
        +            'proxy_upstream_fail_timeout',
        +            'proxy_upstream_max_fails',
        +            ),
        +        24 => array( // rewrite module
        +            // http://wiki.nginx.org/HttpRewriteModule
        +            // http://nginx.org/en/docs/http/ngx_http_rewrite_module.html
        +            'break',
        +            'if',
        +            'return',
        +            'rewrite',
        +            'rewrite_log',
        +            'set',
        +            'uninitialized_variable_warn',
        +            ),
        +        25 => array( // ssi module
        +            // http://wiki.nginx.org/HttpSsiModule
        +            // http://nginx.org/en/docs/http/ngx_http_ssi_module.html
        +            'ssi',
        +            'ssi_silent_errors',
        +            'ssi_types',
        +            'ssi_value_length',
        +            ),
        +        26 => array( // user id module
        +            // http://wiki.nginx.org/HttpUseridModule
        +            // http://nginx.org/en/docs/http/ngx_http_userid_module.html
        +            'userid',
        +            'userid_domain',
        +            'userid_expires',
        +            'userid_name',
        +            'userid_p3p',
        +            'userid_path',
        +            'userid_service',
        +            ),
        +        27 => array( // addition module
        +            // http://wiki.nginx.org/HttpAdditionModule
        +            // http://nginx.org/en/docs/http/ngx_http_addition_module.html
        +            'add_before_body',
        +            'add_after_body',
        +            'addition_types',
        +            ),
        +        28 => array( // embedded Perl module
        +            // http://wiki.nginx.org/HttpPerlModule
        +            // http://nginx.org/en/docs/http/ngx_http_perl_module.html
        +            'perl',
        +            'perl_modules',
        +            'perl_require',
        +            'perl_set',
        +            ),
        +        29 => array( // flash video files module
        +            // http://wiki.nginx.org/HttpFlvModule
        +            // http://nginx.org/en/docs/http/ngx_http_flv_module.html
        +            'flv',
        +            ),
        +        30 => array( // gzip precompression module
        +            // http://wiki.nginx.org/HttpGzipStaticModule
        +            // http://nginx.org/en/docs/http/ngx_http_gzip_static_module.html
        +            'gzip_static',
        +            // Removed to remove duplication with ngx_http_gzip_module
        +            //'gzip_http_version',
        +            //'gzip_proxied',
        +            //'gzip_disable',
        +            //'gzip_vary',
        +            ),
        +        31 => array( // random index module
        +            // http://wiki.nginx.org/HttpRandomIndexModule
        +            // http://nginx.org/en/docs/http/ngx_http_random_index_module.html
        +            'random_index',
        +            ),
        +        32 => array( // real ip module
        +            // http://wiki.nginx.org/HttpRealipModule
        +            // http://nginx.org/en/docs/http/ngx_http_realip_module.html
        +            'set_real_ip_from',
        +            'real_ip_header',
        +            'real_ip_recursive',
        +            ),
        +        33 => array( // https module
        +            // http://wiki.nginx.org/HttpSslModule
        +            // http://nginx.org/en/docs/http/ngx_http_ssl_module.html
        +            'ssl',
        +            'ssl_certificate',
        +            'ssl_certificate_key',
        +            'ssl_ciphers',
        +            'ssl_client_certificate',
        +            'ssl_crl',
        +            'ssl_dhparam',
        +            // Use the documentation for the core module since it links to the
        +            // original properly
        +            //'ssl_engine',
        +            'ssl_prefer_server_ciphers',
        +            'ssl_protocols',
        +            'ssl_session_cache',
        +            'ssl_session_timeout',
        +            'ssl_verify_client',
        +            'ssl_verify_depth',
        +            ),
        +        34 => array( // status module
        +            // http://wiki.nginx.org/HttpStubStatusModule
        +            'stub_status',
        +            ),
        +        35 => array( // substitution module
        +            // http://wiki.nginx.org/HttpSubModule
        +            // http://nginx.org/en/docs/http/ngx_http_sub_module.html
        +            'sub_filter',
        +            'sub_filter_once',
        +            'sub_filter_types',
        +            ),
        +        36 => array( // NginxHttpDavModule
        +            // http://wiki.nginx.org/HttpDavModule
        +            // http://nginx.org/en/docs/http/ngx_http_dav_module.html
        +            'dav_access',
        +            'dav_methods',
        +            'create_full_put_path',
        +            'min_delete_depth',
        +            ),
        +        37 => array( // Google performance tools module
        +            // http://wiki.nginx.org/GooglePerftoolsModule
        +            'google_perftools_profiles',
        +            ),
        +        38 => array( // xslt module
        +            // http://wiki.nginx.org/HttpXsltModule
        +            // http://nginx.org/en/docs/http/ngx_http_xslt_module.html
        +            'xslt_entities',
        +            'xslt_param',
        +            'xslt_string_param',
        +            'xslt_stylesheet',
        +            'xslt_types',
        +            ),
        +        39 => array( // uWSGI module
        +            // http://wiki.nginx.org/HttpUwsgiModule
        +            'uwsgi_bind',
        +            'uwsgi_buffer_size',
        +            'uwsgi_buffering',
        +            'uwsgi_buffers',
        +            'uwsgi_busy_buffers_size',
        +            'uwsgi_cache',
        +            'uwsgi_cache_bypass',
        +            'uwsgi_cache_key',
        +            'uwsgi_cache_lock',
        +            'uwsgi_cache_lock_timeout',
        +            'uwsgi_cache_methods',
        +            'uwsgi_cache_min_uses',
        +            'uwsgi_cache_path',
        +            'uwsgi_cache_use_stale',
        +            'uwsgi_cache_valid',
        +            'uwsgi_connect_timeout',
        +            'uwsgi_hide_header',
        +            'uwsgi_ignore_client_abort',
        +            'uwsgi_ignore_headers',
        +            'uwsgi_intercept_errors',
        +            'uwsgi_max_temp_file_size',
        +            'uwsgi_modifier',
        +            'uwsgi_next_upstream',
        +            'uwsgi_no_cache',
        +            'uwsgi_param',
        +            'uwsgi_pass',
        +            'uwsgi_pass_header',
        +            'uwsgi_pass_request_body',
        +            'uwsgi_pass_request_headers',
        +            'uwsgi_read_timeout',
        +            'uwsgi_send_timeout',
        +            'uwsgi_store',
        +            'uwsgi_store_access',
        +            'uwsgi_string',
        +            'uwsgi_temp_file_write_size',
        +            'uwsgi_temp_path',
        +            ),
        +        40 => array( // SCGI module
        +            // http://wiki.nginx.org/HttpScgiModule
        +            // Note: These directives were pulled from nginx 1.2.3
        +            //       ngx_http_scgi_module.c source file.
        +            'scgi_bind',
        +            'scgi_buffering',
        +            'scgi_buffers',
        +            'scgi_buffer_size',
        +            'scgi_busy_buffers_size',
        +            'scgi_cache',
        +            'scgi_cache_bypass',
        +            'scgi_cache_key',
        +            'scgi_cache_lock',
        +            'scgi_cache_lock_timeout',
        +            'scgi_cache_methods',
        +            'scgi_cache_min_uses',
        +            'scgi_cache_path',
        +            'scgi_cache_use_stale',
        +            'scgi_cache_valid',
        +            'scgi_connect_timeout',
        +            'scgi_hide_header',
        +            'scgi_ignore_client_abort',
        +            'scgi_ignore_headers',
        +            'scgi_intercept_errors',
        +            'scgi_max_temp_file_size',
        +            'scgi_next_upstream',
        +            'scgi_no_cache',
        +            'scgi_param',
        +            'scgi_pass',
        +            'scgi_pass_header',
        +            'scgi_pass_request_body',
        +            'scgi_pass_request_headers',
        +            'scgi_read_timeout',
        +            'scgi_send_timeout',
        +            'scgi_store',
        +            'scgi_store_access',
        +            'scgi_temp_file_write_size',
        +            'scgi_temp_path',
        +            ),
        +        41 => array( // split clients module
        +            // http://wiki.nginx.org/HttpSplitClientsModule
        +            // http://nginx.org/en/docs/http/ngx_http_split_clients_module.html
        +            'split_clients',
        +            ),
        +        42 => array( // X-Accel module
        +            // http://wiki.nginx.org/X-accel
        +            'X-Accel-Redirect',
        +            'X-Accel-Buffering',
        +            'X-Accel-Charset',
        +            'X-Accel-Expires',
        +            'X-Accel-Limit-Rate',
        +            ),
        +        43 => array( // degradation module
        +            // http://wiki.nginx.org/HttpDegradationModule
        +            'degradation',
        +            'degrade',
        +            ),
        +        44 => array( // GeoIP module
        +            // http://wiki.nginx.org/HttpGeoipModule
        +            // http://nginx.org/en/docs/http/ngx_http_geoip_module.html
        +            'geoip_country',
        +            'geoip_city',
        +            'geoip_proxy',
        +            'geoip_proxy_recursive',
        +            ),
        +        45 => array( // Image filter module
        +            // http://wiki.nginx.org/HttpImageFilterModule
        +            // http://nginx.org/en/docs/http/ngx_http_image_filter_module.html
        +            'image_filter',
        +            'image_filter_buffer',
        +            'image_filter_jpeg_quality',
        +            'image_filter_sharpen',
        +            'image_filter_transparency',
        +            ),
        +        46 => array( // MP4 module
        +            // http://wiki.nginx.org/HttpMp4Module
        +            // http://nginx.org/en/docs/http/ngx_http_mp4_module.html
        +            'mp4',
        +            'mp4_buffer_size',
        +            'mp4_max_buffer_size',
        +            ),
        +        47 => array( // Secure Link module
        +            // http://wiki.nginx.org/HttpSecureLinkModule
        +            // http://nginx.org/en/docs/http/ngx_http_secure_link_module.html
        +            'secure_link',
        +            'secure_link_md',
        +            'secure_link_secret',
        +            ),
        +        48 => array( // Mail Core module
        +            // http://wiki.nginx.org/MailCoreModule
        +            'auth',
        +            'imap_capabilities',
        +            'imap_client_buffer',
        +            'pop_auth',
        +            'pop_capabilities',
        +            'protocol',
        +            'smtp_auth',
        +            'smtp_capabilities',
        +            'so_keepalive',
        +            'timeout',
        +            // Removed to prioritize documentation for core module
        +            //'listen',
        +            //'server',
        +            //'server_name',
        +            ),
        +        49 => array( // Mail Auth module
        +            // http://wiki.nginx.org/MailAuthModule
        +            'auth_http',
        +            'auth_http_header',
        +            'auth_http_timeout',
        +            ),
        +        50 => array( // Mail Proxy module
        +            // http://wiki.nginx.org/MailProxyModule
        +            'proxy',
        +            'proxy_buffer',
        +            'proxy_pass_error_message',
        +            'proxy_timeout',
        +            'xclient',
        +            ),
        +        51 => array( // Mail SSL module
        +            // http://wiki.nginx.org/MailSslModule
        +            // Removed to prioritize documentation for http
        +            //'ssl',
        +            //'ssl_certificate',
        +            //'ssl_certificate_key',
        +            //'ssl_ciphers',
        +            //'ssl_prefer_server_ciphers',
        +            //'ssl_protocols',
        +            //'ssl_session_cache',
        +            //'ssl_session_timeout',
        +            'starttls',
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '=', '~', ';'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => true,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true,
        +        8 => true,
        +        9 => true,
        +        10 => true,
        +        11 => true,
        +        12 => true,
        +        13 => true,
        +        14 => true,
        +        15 => true,
        +        16 => true,
        +        17 => true,
        +        18 => true,
        +        19 => true,
        +        20 => true,
        +        21 => true,
        +        22 => true,
        +        23 => true,
        +        24 => true,
        +        25 => true,
        +        26 => true,
        +        27 => true,
        +        28 => true,
        +        29 => true,
        +        30 => true,
        +        31 => true,
        +        32 => true,
        +        33 => true,
        +        34 => true,
        +        35 => true,
        +        36 => true,
        +        37 => true,
        +        38 => true,
        +        39 => true,
        +        40 => true,
        +        41 => true,
        +        42 => true,
        +        43 => true,
        +        44 => true,
        +        45 => true,
        +        46 => true,
        +        47 => true,
        +        48 => true,
        +        49 => true,
        +        50 => true,
        +        51 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #000066;',
        +            4 => 'color: #993333;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #202020;',
        +            2 => 'color: #202020;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #000066;',
        +            4 => 'color: #000000; font-weight: bold;',
        +        ),
        +        'SCRIPT' => array()
        +        ),
        +    'URLS' => array(
        +        1 => 'http://wiki.nginx.org/CoreModule#{FNAME}',
        +        2 => 'http://wiki.nginx.org/NginxHttpEventsModule#{FNAME}',
        +        3 => 'http://wiki.nginx.org/NginxHttpCoreModule#{FNAME}',
        +        4 => 'http://wiki.nginx.org/NginxHttpUpstreamModule#{FNAME}',
        +        5 => 'http://wiki.nginx.org/NginxHttpAccessModule#{FNAME}',
        +        6 => 'http://wiki.nginx.org/NginxHttpAuthBasicModule#{FNAME}',
        +        7 => 'http://wiki.nginx.org/NginxHttpAutoIndexModule#{FNAME}',
        +        8 => 'http://wiki.nginx.org/NginxHttpBrowserModule#{FNAME}',
        +        9 => 'http://wiki.nginx.org/NginxHttpCharsetModule#{FNAME}',
        +        10 => 'http://wiki.nginx.org/NginxHttpEmptyGifModule#{FNAME}',
        +        11 => 'http://wiki.nginx.org/NginxHttpFcgiModule#{FNAME}',
        +        12 => 'http://wiki.nginx.org/NginxHttpGeoModule#{FNAME}',
        +        13 => 'http://wiki.nginx.org/NginxHttpGzipModule#{FNAME}',
        +        14 => 'http://wiki.nginx.org/NginxHttpHeadersModule#{FNAME}',
        +        15 => 'http://wiki.nginx.org/NginxHttpIndexModule#{FNAME}',
        +        16 => 'http://wiki.nginx.org/HttpLimitReqModule#{FNAME}',
        +        17 => 'http://wiki.nginx.org/NginxHttpRefererModule#{FNAME}',
        +        18 => 'http://wiki.nginx.org/NginxHttpLimitZoneModule#{FNAME}',
        +        19 => 'http://wiki.nginx.org/HttpLimitConnModule#{FNAME}',
        +        20 => 'http://wiki.nginx.org/NginxHttpLogModule#{FNAME}',
        +        21 => 'http://wiki.nginx.org/NginxHttpMapModule#{FNAME}',
        +        22 => 'http://wiki.nginx.org/NginxHttpMemcachedModule#{FNAME}',
        +        23 => 'http://wiki.nginx.org/NginxHttpProxyModule#{FNAME}',
        +        24 => 'http://wiki.nginx.org/NginxHttpRewriteModule#{FNAME}',
        +        25 => 'http://wiki.nginx.org/NginxHttpSsiModule#{FNAME}',
        +        26 => 'http://wiki.nginx.org/NginxHttpUserIdModule#{FNAME}',
        +        27 => 'http://wiki.nginx.org/NginxHttpAdditionModule#{FNAME}',
        +        28 => 'http://wiki.nginx.org/NginxHttpEmbeddedPerlModule#{FNAME}',
        +        29 => 'http://wiki.nginx.org/NginxHttpFlvStreamModule#{FNAME}',
        +        30 => 'http://wiki.nginx.org/NginxHttpGzipStaticModule#{FNAME}',
        +        31 => 'http://wiki.nginx.org/NginxHttpRandomIndexModule#{FNAME}',
        +        32 => 'http://wiki.nginx.org/NginxHttpRealIpModule#{FNAME}',
        +        33 => 'http://wiki.nginx.org/NginxHttpSslModule#{FNAME}',
        +        34 => 'http://wiki.nginx.org/NginxHttpStubStatusModule#{FNAME}',
        +        35 => 'http://wiki.nginx.org/NginxHttpSubModule#{FNAME}',
        +        36 => 'http://wiki.nginx.org/NginxHttpDavModule#{FNAME}',
        +        37 => 'http://wiki.nginx.org/NginxHttpGooglePerfToolsModule#{FNAME}',
        +        38 => 'http://wiki.nginx.org/NginxHttpXsltModule#{FNAME}',
        +        39 => 'http://wiki.nginx.org/NginxHttpUwsgiModule#{FNAME}',
        +        40 => 'http://wiki.nginx.org/HttpScgiModule',
        +        41 => 'http://wiki.nginx.org/HttpSplitClientsModule#{FNAME}',
        +        42 => 'http://wiki.nginx.org/X-accel#{FNAME}',
        +        43 => 'http://wiki.nginx.org/HttpDegradationModule#{FNAME}',
        +        44 => 'http://wiki.nginx.org/HttpGeoipModule#{FNAME}',
        +        45 => 'http://wiki.nginx.org/HttpImageFilterModule#{FNAME}',
        +        46 => 'http://wiki.nginx.org/HttpMp4Module#{FNAME}',
        +        47 => 'http://wiki.nginx.org/HttpSecureLinkModule#{FNAME}',
        +        48 => 'http://wiki.nginx.org/MailCoreModule#{FNAME}',
        +        49 => 'http://wiki.nginx.org/MailAuthModule#{FNAME}',
        +        50 => 'http://wiki.nginx.org/MailProxyModule#{FNAME}',
        +        51 => 'http://wiki.nginx.org/MailSslModule#{FNAME}',
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(
        +        0 => '[\\$%@]+[a-zA-Z_][a-zA-Z0-9_]*',
        +        4 => '<[a-zA-Z_][a-zA-Z0-9_]*>',
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/nimrod.php b/includes/geshi/nimrod.php
        new file mode 100644
        index 0000000..b288ae0
        --- /dev/null
        +++ b/includes/geshi/nimrod.php
        @@ -0,0 +1,201 @@
        + 'Nimrod',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    //Longest quotemarks ALWAYS first
        +    'QUOTEMARKS' => array('"""', '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_BIN_PREFIX_0B |
        +        GESHI_NUMBER_OCT_PREFIX_0O | GESHI_NUMBER_HEX_PREFIX |
        +        GESHI_NUMBER_FLT_NONSCI | GESHI_NUMBER_FLT_NONSCI_F |
        +        GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +
        +        /*
        +        ** Set 1: reserved words
        +        ** http://nimrod-lang.org/manual.html#identifiers-keywords
        +        */
        +        1 => array(
        +            'addr', 'and', 'as', 'asm', 'atomic',
        +            'bind', 'block', 'break',
        +            'case', 'cast', 'const', 'continue', 'converter',
        +            'discard', 'distinct', 'div', 'do',
        +            'elif', 'else', 'end', 'enum', 'except', 'export',
        +            'finally', 'for', 'from',
        +            'generic',
        +            'if', 'import', 'in', 'include', 'interface', 'is', 'isnot', 'iterator',
        +            'lambda', 'let',
        +            'macro', 'method', 'mixin', 'mod',
        +            'nil', 'not', 'notin',
        +            'object', 'of', 'or', 'out',
        +            'proc',
        +            'raise', 'ref', 'return',
        +            'shl', 'shr', 'static',
        +            'template', 'try', 'tuple', 'type',
        +            'using',
        +            'var',
        +            'when', 'while', 'with', 'without',
        +            'xor',
        +            'yield'
        +            ),
        +
        +        2 => array(
        +            'true', 'false'
        +            ),
        +
        +        3 => array(
        +            /* system module */
        +            'abs', 'accumulateResult', 'add', 'addAndFetch', 'addQuitProc',
        +            'alloc', 'alloc0', 'allocCStringArray', 'allocShared',
        +            'allocShared0', 'assert', 'astToStr', 'atomicDec', 'atomicInc',
        +            'card', 'chr', 'clamp', 'close', 'cmp', 'compileOption',
        +            'compiles', 'contains', 'copy', 'copyMem', 'countdown', 'countup',
        +            'create', 'createShared', 'createSharedU', 'createU',
        +            'cstringArrayToSeq', 'currentSourcePath', 'dealloc',
        +            'deallocCStringArray', 'deallocShared', 'debugEcho', 'dec',
        +            'defined', 'definedInScope', 'del', 'delete', 'doAssert', 'each',
        +            'echo', 'endOfFile', 'equalMem', 'excl', 'failedAssertImpl',
        +            'fieldPairs', 'fields', 'fileHandle', 'find', 'finished',
        +            'flushFile', 'free', 'freeShared', 'GC_addCycleRoot', 'GC_disable',
        +            'GC_disableMarkAndSweep', 'GC_enable', 'GC_enableMarkAndSweep',
        +            'GC_fullCollect', 'GC_getStatistics', 'gcInvariant', 'GC_ref',
        +            'GC_setStrategy', 'GC_unref', 'getCurrentException',
        +            'getCurrentExceptionMsg', 'getFilePos', 'getFileSize',
        +            'getFreeMem', 'getOccupiedMem', 'getRefcount', 'getStackTrace',
        +            'getTotalMem', 'getTypeInfo', 'gorge', 'high', 'inc', 'incl',
        +            'insert', 'instantiationInfo', 'internalNew', 'isNil', 'isOnStack',
        +            'isStatic', 'items', 'len', 'likely', 'lines', 'locals', 'low',
        +            'map', 'max', 'min', 'moveMem', 'new', 'newException', 'newSeq',
        +            'newString', 'newStringOfCap', 'newWideCString', 'nimDestroyRange',
        +            'onFailedAssert', 'onRaise', 'open', 'ord', 'pairs', 'pop', 'pred',
        +            'quit', 'raiseAssert', 'rand', 'rawEnv', 'rawProc', 'readAll',
        +            'readBuffer', 'readBytes', 'readChar', 'readChars', 'readFile',
        +            'readLine', 'realloc', 'reallocShared', 'reopen', 'repr', 'reset',
        +            'resize', 'safeAdd', 'setControlCHook', 'setFilePos', 'setLen',
        +            'shallow', 'shallowCopy', 'sizeof', 'slurp', 'staticExec',
        +            'staticRead', 'stdmsg', 'substr', 'succ', 'swap', 'toBiggestFloat',
        +            'toBiggestInt', 'toFloat', 'toInt', 'toU16', 'toU32', 'toU8',
        +            'unlikely', 'unsafeNew', 'write', 'writeBuffer', 'writeBytes',
        +            'writeChars', 'writeFile', 'writeln', 'writeStackTrace', 'ze',
        +            'ze64', 'zeroMem'
        +            ),
        +
        +        4 => array(
        +            'auto', 'pointer', 'ptr', 'void', 'any', 'expr', 'stmt', 'typedesc',
        +            'int', 'int8', 'int16', 'int32', 'int64', 'float', 'float32', 'float64',
        +            'uint', 'uint8', 'uint16', 'uint32', 'uint64',
        +            'bool', 'char', 'range', 'array', 'seq', 'set', 'string', 'TSlice',
        +            'cstring', 'cint', 'clong', 'culong', 'cchar', 'cschar', 'cshort',
        +            'csize', 'clonglong', 'cfloat', 'cdouble', 'clongdouble', 'cuchar',
        +            'cushort', 'cuint', 'culonglong', 'cstringArray'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '*', '/', '%', '\\',
        +        '+', '-', '~', '|',
        +        '&',
        +        '..',
        +        '=', '<', '>', '!',
        +        '@', '?'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #ff7700;font-weight:bold;',    // Reserved
        +            2 => 'color: #008000;',                     // Built-ins + self
        +            3 => 'color: #dc143c;',                     // Standard lib
        +            4 => 'color: #0000cd;'                      // Special methods
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: black;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #483d8b;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #ff4500;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: black;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/nsis.php b/includes/geshi/nsis.php
        new file mode 100644
        index 0000000..02b1eb2
        --- /dev/null
        +++ b/includes/geshi/nsis.php
        @@ -0,0 +1,351 @@
        + 'NSIS',
        +    'COMMENT_SINGLE' => array(1 => ';', 2 => '#'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'",'"','`'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            '!addincludedir', '!addplugindir', '!appendfile', '!cd', '!define', '!delfile', '!echo', '!error',
        +            '!execute', '!finalize', '!getdllversion', '!include', '!insertmacro', '!macro', '!macroend', '!makensis', '!packhdr',
        +            '!searchparse', '!searchreplace', '!system', '!tempfile', '!undef', '!verbose', '!warning'
        +            ),
        +        2 => array(
        +            'AddBrandingImage', 'AllowRootDirInstall', 'AutoCloseWindow', 'BGFont',
        +            'BGGradient', 'BrandingText', 'Caption', 'ChangeUI', 'CheckBitmap', 'CompletedText', 'ComponentText',
        +            'CRCCheck', 'DetailsButtonText', 'DirText', 'DirVar', 'DirVerify', 'FileErrorText',
        +            'Function', 'FunctionEnd', 'Icon', 'InstallButtonText', 'InstallColors', 'InstallDir',
        +            'InstallDirRegKey', 'InstProgressFlags', 'InstType', 'LangString', 'LicenseBkColor',
        +            'LicenseData', 'LicenseForceSelection', 'LicenseLangString', 'LicenseText', 'LoadLanguageFile', 'ManifestDPIAware', 'ManifestSupportedOS',
        +            'MiscButtonText', 'Name', 'OutFile', 'Page', 'PageEx', 'PageExEnd', 'RequestExecutionLevel', 'Section',
        +            'SectionEnd', 'SectionGroup', 'SectionGroupEnd', 'SetCompressor', 'SetFont', 'ShowInstDetails',
        +            'ShowUninstDetails', 'SilentInstall', 'SilentUnInstall', 'SpaceTexts', 'SubCaption', 'SubSection',
        +            'SubSectionEnd', 'Unicode', 'UninstallButtonText', 'UninstallCaption', 'UninstallIcon', 'UninstallSubCaption',
        +            'UninstallText', 'UninstPage', 'Var', 'VIAddVersionKey', 'VIFileVersion', 'VIProductVersion', 'WindowIcon', 'XPStyle'
        +            ),
        +        3 => array(
        +            'AddSize', 'AllowSkipFiles', 'FileBufSize', 'GetInstDirError', 'PageCallbacks',
        +            'SectionIn', 'SetCompress', 'SetCompressorDictSize',
        +            'SetDatablockOptimize', 'SetDateSave', 'SetOverwrite', 'SetPluginUnload'
        +            ),
        +        4 => array(
        +            'Abort', 'BringToFront', 'Call', 'CallInstDLL', 'ClearErrors', 'CopyFiles','CreateDirectory',
        +            'CreateFont', 'CreateShortCut', 'Delete', 'DeleteINISec', 'DeleteINIStr', 'DeleteRegKey',
        +            'DeleteRegValue', 'DetailPrint', 'EnableWindow', 'EnumRegKey', 'EnumRegValue', 'Exch', 'Exec',
        +            'ExecShell', 'ExecWait', 'ExpandEnvStrings', 'File', 'FileClose', 'FileOpen', 'FileRead',
        +            'FileReadByte', 'FileReadUTF16LE', 'FileReadWord', 'FileSeek', 'FileWrite', 'FileWriteByte', 'FileWriteUTF16LE', 'FileWriteWord', 'FindClose', 'FindFirst', 'FindNext',
        +            'FindWindow', 'FlushINI', 'GetCurInstType', 'GetCurrentAddress', 'GetDlgItem', 'GetDLLVersion',
        +            'GetDLLVersionLocal', 'GetErrorLevel', 'GetFileTime', 'GetFileTimeLocal', 'GetFullPathName',
        +            'GetFunctionAddress', 'GetLabelAddress', 'GetTempFileName', 'Goto', 'HideWindow',
        +            'IfAbort', 'IfErrors', 'IfFileExists', 'IfRebootFlag', 'IfSilent', 'InitPluginsDir', 'InstTypeGetText',
        +            'InstTypeSetText', 'IntCmp', 'IntCmpU', 'IntFmt', 'IntOp', 'IsWindow', 'LockWindow', 'LogSet', 'LogText',
        +            'MessageBox', 'Nop', 'Pop', 'Push', 'Quit', 'ReadEnvStr', 'ReadINIStr', 'ReadRegDWORD', 'ReadRegStr',
        +            'Reboot', 'RegDLL', 'Rename', 'ReserveFile', 'Return', 'RMDir', 'SearchPath', 'SectionGetFlags',
        +            'SectionGetInstTypes', 'SectionGetSize', 'SectionGetText', 'SectionSetFlags', 'SectionSetInstTypes',
        +            'SectionSetSize', 'SectionSetText', 'SendMessage', 'SetAutoClose', 'SetBrandingImage', 'SetCtlColors',
        +            'SetCurInstType', 'SetDetailsPrint', 'SetDetailsView', 'SetErrorLevel', 'SetErrors', 'SetFileAttributes',
        +            'SetOutPath', 'SetRebootFlag', 'SetRegView', 'SetShellVarContext', 'SetSilent', 'ShowWindow', 'Sleep', 'StrCmp', 'StrCmpS',
        +            'StrCpy', 'StrLen', 'UnRegDLL', 'WriteINIStr', 'WriteRegBin', 'WriteRegDWORD', 'WriteRegExpandStr',
        +            'WriteRegStr', 'WriteUninstaller'
        +            ),
        +        5 => array(
        +            'all', 'alwaysoff', 'ARCHIVE', 'auto', 'both', 'bzip2', 'checkbox', 'components', 'current',
        +            'custom', 'directory', 'false', 'FILE_ATTRIBUTE_ARCHIVE', 'FILE_ATTRIBUTE_HIDDEN', 'FILE_ATTRIBUTE_NORMAL',
        +            'FILE_ATTRIBUTE_OFFLINE', 'FILE_ATTRIBUTE_READONLY', 'FILE_ATTRIBUTE_SYSTEM,TEMPORARY',
        +            'FILE_ATTRIBUTE_TEMPORARY', 'force', 'HIDDEN', 'hide', 'HKCC', 'HKCR', 'HKCU', 'HKDD', 'HKEY_CLASSES_ROOT',
        +            'HKEY_CURRENT_CONFIG', 'HKEY_CURRENT_USER', 'HKEY_DYN_DATA', 'HKEY_LOCAL_MACHINE', 'HKEY_PERFORMANCE_DATA',
        +            'HKEY_USERS', 'HKLM', 'HKPD', 'HKU', 'IDABORT', 'IDCANCEL', 'IDIGNORE', 'IDNO', 'IDOK', 'IDRETRY', 'IDYES',
        +            'ifdiff', 'ifnewer', 'instfiles', 'lastused', 'leave', 'license', 'listonly', 'lzma', 'manual',
        +            'MB_ABORTRETRYIGNORE', 'MB_DEFBUTTON1', 'MB_DEFBUTTON2', 'MB_DEFBUTTON3', 'MB_DEFBUTTON4',
        +            'MB_ICONEXCLAMATION', 'MB_ICONINFORMATION', 'MB_ICONQUESTION', 'MB_ICONSTOP', 'MB_OK', 'MB_OKCANCEL',
        +            'MB_RETRYCANCEL', 'MB_RIGHT', 'MB_SETFOREGROUND', 'MB_TOPMOST', 'MB_YESNO', 'MB_YESNOCANCEL', 'nevershow',
        +            'none', 'normal', 'off', 'OFFLINE', 'on', 'radiobuttons', 'READONLY', 'RO', 'SHCTX', 'SHELL_CONTEXT', 'show',
        +            'silent', 'silentlog', 'SW_HIDE', 'SW_SHOWMAXIMIZED', 'SW_SHOWMINIMIZED', 'SW_SHOWNORMAL', 'SYSTEM',
        +            'textonly', 'true', 'try', 'uninstConfirm', 'zlib'
        +            ),
        +        6 => array(
        +            '/a', '/components', '/COMPONENTSONLYONCUSTOM', '/CUSTOMSTRING', '/e', '/FILESONLY', '/FINAL', '/gray', '/GLOBAL',
        +            '/ifempty', '/IMGID', '/ITALIC', '/lang', '/NOCUSTOM', '/nonfatal', '/NOUNLOAD', '/oname', '/r', '/REBOOTOK',
        +            '/RESIZETOFIT', '/SOLID', '/SD', '/SHORT', '/silent', '/STRIKE', '/TIMEOUT', '/TRIMCENTER', '/TRIMLEFT',
        +            '/TRIMRIGHT', '/UNDERLINE', '/windows', '/x'
        +            ),
        +        7 => array(
        +            '.onGUIEnd', '.onGUIInit', '.onInit', '.onInstFailed', '.onInstSuccess', '.onMouseOverSection',
        +            '.onRebootFailed', '.onSelChange', '.onUserAbort', '.onVerifyInstDir', 'un.onGUIEnd', 'un.onGUIInit',
        +            'un.onInit', 'un.onRebootFailed', 'un.onUninstFailed', 'un.onUninstSuccess', 'un.onUserAbort'
        +            ),
        +        8 => array(
        +            'MUI.nsh', '"${NSISDIR}\Contrib\Modern UI\System.nsh"', 'MUI_SYSVERSION', 'MUI_ICON', 'MUI_UNICON',
        +            'MUI_HEADERIMAGE', 'MUI_HEADERIMAGE_BITMAP', 'MUI_HEADERIMAGE_BITMAP_NOSTRETCH', 'MUI_HEADERIMAGE_BITMAP_RTL',
        +            'MUI_HEADERIMAGE_BITMAP_RTL_NOSTRETCH', 'MUI_HEADERIMAGE_UNBITMAP', 'MUI_HEADERIMAGE_UNBITMAP_NOSTRETCH',
        +            'MUI_HEADERIMAGE_UNBITMAP_RTL', 'MUI_HEADERIMAGE_UNBITMAP_RTL_NOSTRETCH', 'MUI_HEADERIMAGE_RIGHT', 'MUI_BGCOLOR',
        +            'MUI_UI', 'MUI_UI_HEADERIMAGE', 'MUI_UI_HEADERIMAGE_RIGHT', 'MUI_UI_COMPONENTSPAGE_SMALLDESC',
        +            'MUI_UI_COMPONENTSPAGE_NODESC', 'MUI_WELCOMEFINISHPAGE_BITMAP', 'MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH',
        +            'MUI_WELCOMEFINISHPAGE_INI', 'MUI_UNWELCOMEFINISHPAGE_BITMAP', 'MUI_UNWELCOMEFINISHPAGE_BITMAP_NOSTRETCH',
        +            'MUI_UNWELCOMEFINISHPAGE_INI', 'MUI_LICENSEPAGE_BGCOLOR', 'MUI_COMPONENTSPAGE_CHECKBITMAP',
        +            'MUI_COMPONENTSPAGE_SMALLDESC', 'MUI_COMPONENTSPAGE_NODESC', 'MUI_INSTFILESPAGE_COLORS',
        +            'MUI_INSTFILESPAGE_PROGRESSBAR', 'MUI_FINISHPAGE_NOAUTOCLOSE', 'MUI_UNFINISHPAGE_NOAUTOCLOSE',
        +            'MUI_ABORTWARNING', 'MUI_ABORTWARNING_TEXT', 'MUI_UNABORTWARNING', 'MUI_UNABORTWARNING_TEXT',
        +            'MUI_PAGE_WELCOME', 'MUI_PAGE_LICENSE', 'MUI_PAGE_COMPONENTS', 'MUI_PAGE_DIRECTORY',
        +            'MUI_PAGE_STARTMENU', 'MUI_PAGE_INSTFILES', 'MUI_PAGE_FINISH', 'MUI_UNPAGE_WELCOME',
        +            'MUI_UNPAGE_CONFIRM', 'MUI_UNPAGE_LICENSE', 'MUI_UNPAGE_COMPONENTS', 'MUI_UNPAGE_DIRECTORY',
        +            'MUI_UNPAGE_INSTFILES', 'MUI_UNPAGE_FINISH', 'MUI_PAGE_HEADER_TEXT', 'MUI_PAGE_HEADER_SUBTEXT',
        +            'MUI_WELCOMEPAGE_TITLE', 'MUI_WELCOMEPAGE_TITLE_3LINES', 'MUI_WELCOMEPAGE_TEXT',
        +            'MUI_LICENSEPAGE_TEXT_TOP', 'MUI_LICENSEPAGE_TEXT_BOTTOM', 'MUI_LICENSEPAGE_BUTTON',
        +            'MUI_LICENSEPAGE_CHECKBOX', 'MUI_LICENSEPAGE_CHECKBOX_TEXT', 'MUI_LICENSEPAGE_RADIOBUTTONS',
        +            'MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT', 'MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE',
        +            'MUI_COMPONENTSPAGE_TEXT_TOP', 'MUI_COMPONENTSPAGE_TEXT_COMPLIST', 'MUI_COMPONENTSPAGE_TEXT_INSTTYPE',
        +            'MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE', 'MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO',
        +            'MUI_DIRECTORYPAGE_TEXT_TOP', 'MUI_DIRECTORYPAGE_TEXT_DESTINATION', 'MUI_DIRECTORYPAGE_VARIABLE',
        +            'MUI_DIRECTORYPAGE_VERIFYONLEAVE', 'MUI_STARTMENU_WRITE_BEGIN', 'MUI_STARTMENU_WRITE_END',
        +            'MUI_STARTMENUPAGE_TEXT_TOP', 'MUI_STARTMENUPAGE_TEXT_CHECKBOX', 'MUI_STARTMENUPAGE_DEFAULTFOLDER',
        +            'MUI_STARTMENUPAGE_NODISABLE', 'MUI_STARTMENUPAGE_REGISTRY_ROOT', 'MUI_STARTMENUPAGE_REGISTRY_KEY',
        +            'MUI_STARTMENUPAGE_REGISTRY_VALUENAME', 'MUI_INSTFILESPAGE_FINISHHEADER_TEXT',
        +            'MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT', 'MUI_INSTFILESPAGE_ABORTHEADER_TEXT',
        +            'MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT', 'MUI_FINISHPAGE_TITLE', 'MUI_FINISHPAGE_TITLE_3LINES',
        +            'MUI_FINISHPAGE_TEXT', 'MUI_FINISHPAGE_TEXT_LARGE', 'MUI_FINISHPAGE_BUTTON',
        +            'MUI_FINISHPAGE_TEXT_REBOOT', 'MUI_FINISHPAGE_TEXT_REBOOTNOW', 'MUI_FINISHPAGE_TEXT_REBOOTLATER',
        +            'MUI_FINISHPAGE_RUN', 'MUI_FINISHPAGE_RUN_TEXT', 'MUI_FINISHPAGE_RUN_PARAMETERS',
        +            'MUI_FINISHPAGE_RUN_NOTCHECKED', 'MUI_FINISHPAGE_RUN_FUNCTION', 'MUI_FINISHPAGE_SHOWREADME',
        +            'MUI_FINISHPAGE_SHOWREADME_TEXT', 'MUI_FINISHPAGE_SHOWREADME_NOTCHECKED',
        +            'MUI_FINISHPAGE_SHOWREADME_FUNCTION', 'MUI_FINISHPAGE_LINK', 'MUI_FINISHPAGE_LINK_LOCATION',
        +            'MUI_FINISHPAGE_LINK_COLOR', 'MUI_FINISHPAGE_NOREBOOTSUPPORT', 'MUI_UNCONFIRMPAGE_TEXT_TOP',
        +            'MUI_UNCONFIRMPAGE_TEXT_LOCATION', 'MUI_LANGUAGE', 'MUI_LANGDLL_DISPLAY',
        +            'MUI_LANGDLL_REGISTRY_ROOT', 'MUI_LANGDLL_REGISTRY_KEY', 'MUI_LANGDLL_REGISTRY_VALUENAME',
        +            'MUI_LANGDLL_WINDOWTITLE', 'MUI_LANGDLL_INFO', 'MUI_LANGDLL_ALWAYSSHOW',
        +            'MUI_RESERVEFILE_INSTALLOPTIONS', 'MUI_RESERVEFILE_LANGDLL', 'MUI_FUNCTION_DESCRIPTION_BEGIN',
        +            'MUI_DESCRIPTION_TEXT', 'MUI_FUNCTION_DESCRIPTION_END', 'MUI_INSTALLOPTIONS_EXTRACT',
        +            'MUI_INSTALLOPTIONS_EXTRACT_AS', 'MUI_HEADER_TEXT', 'MUI_INSTALLOPTIONS_DISPLAY',
        +            'MUI_INSTALLOPTIONS_INITDIALOG', 'MUI_INSTALLOPTIONS_SHOW',
        +            'MUI_INSTALLOPTIONS_DISPLAY_RETURN', 'MUI_INSTALLOPTIONS_SHOW_RETURN',
        +            'MUI_INSTALLOPTIONS_READ', 'MUI_INSTALLOPTIONS_WRITE',
        +            'MUI_CUSTOMFUNCTION_GUIINIT', 'MUI_CUSTOMFUNCTION_UNGUIINIT',
        +            'MUI_CUSTOMFUNCTION_ABORT', 'MUI_CUSTOMFUNCTION_UNABORT',
        +            'MUI_PAGE_CUSTOMFUNCTION_PRE', 'MUI_PAGE_CUSTOMFUNCTION_SHOW', 'MUI_PAGE_CUSTOMFUNCTION_LEAVE',
        +            'MUI_WELCOMEFINISHPAGE_CUSTOMFUNCTION_INIT'
        +            ),
        +        9 => array(
        +            'LogicLib.nsh', '${LOGICLIB}', 'LOGICLIB_STRCMP', 'LOGICLIB_INT64CMP', 'LOGICLIB_SECTIONCMP', '${If}', '${Unless}',
        +            '${ElseIf}', '${ElseUnless}', '${Else}', '${EndIf}', '${EndUnless}', '${AndIf}', '${AndUnless}',
        +            '${OrIf}', '${OrUnless}', '${IfThen}', '${IfCmd}', '${Select}', '${Case2}', '${Case3}',
        +            '${Case4}', '${Case5}', '${CaseElse}', '${Default}', '${EndSelect}', '${Switch}',
        +            '${Case}', '${EndSwitch}', '${Do}', '${DoWhile}', '${UntilWhile}', '${Continue}', '${Break}',
        +            '${Loop}', '${LoopWhile}', '${LoopUntil}', '${While}', '${ExitWhile}', '${EndWhile}', '${For}',
        +            '${ForEach}', '${ExitFor}', '${Next}', '${Abort}', '${Errors}', '${RebootFlag}', '${Silent}',
        +            '${FileExists}', '${Cmd}', '${SectionIsSelected}', '${SectionIsSectionGroup}',
        +            '${SectionIsSectionGroupEnd}', '${SectionIsBold}', '${SectionIsReadOnly}',
        +            '${SectionIsExpanded}', '${SectionIsPartiallySelected}'
        +            ),
        +        10 => array(
        +            'StrFunc.nsh', '${STRFUNC}', '${StrCase}', '${StrClb}', '${StrIOToNSIS}', '${StrLoc}', '${StrNSISToIO}', '${StrRep}',
        +            '${StrSort}', '${StrStr}', '${StrStrAdv}', '${StrTok}', '${StrTrimNewLines}'
        +            ),
        +        11 => array(
        +            'UpgradeDLL.nsh', 'UPGRADEDLL_INCLUDED', 'UpgradeDLL'
        +            ),
        +        12 => array(
        +            'Sections.nsh', 'SECTIONS_INCLUDED', '${SF_SELECTED}', '${SF_SECGRP}', '${SF_SUBSEC}', '${SF_SECGRPEND}',
        +            '${SF_SUBSECEND}', '${SF_BOLD}', '${SF_RO}', '${SF_EXPAND}', '${SF_PSELECTED}', '${SF_TOGGLED}',
        +            '${SF_NAMECHG}', '${SECTION_OFF}', 'SelectSection', 'UnselectSection', 'ReverseSection',
        +            'StartRadioButtons', 'RadioButton', 'EndRadioButtons', '${INSTTYPE_0}', '${INSTTYPE_1}', '${INSTTYPE_2}',
        +            '${INSTTYPE_3}', '${INSTTYPE_4}', '${INSTTYPE_5}', '${INSTTYPE_6}', '${INSTTYPE_7}', '${INSTTYPE_8}',
        +            '${INSTTYPE_9}', '${INSTTYPE_10}', '${INSTTYPE_11}', '${INSTTYPE_12}', '${INSTTYPE_13}', '${INSTTYPE_14}',
        +            '${INSTTYPE_15}', '${INSTTYPE_16}', '${INSTTYPE_17}', '${INSTTYPE_18}', '${INSTTYPE_19}', '${INSTTYPE_20}',
        +            '${INSTTYPE_21}', '${INSTTYPE_22}', '${INSTTYPE_23}', '${INSTTYPE_24}', '${INSTTYPE_25}', '${INSTTYPE_26}',
        +            '${INSTTYPE_27}', '${INSTTYPE_28}', '${INSTTYPE_29}', '${INSTTYPE_30}', '${INSTTYPE_31}', '${INSTTYPE_32}',
        +            'SetSectionInInstType', 'ClearSectionInInstType', 'SetSectionFlag', 'ClearSectionFlag', 'SectionFlagIsSet'
        +            ),
        +        13 => array(
        +            'Colors.nsh', 'WHITE', 'BLACK', 'YELLOW', 'RED', 'GREEN', 'BLUE', 'MAGENTA', 'CYAN', 'rgb2hex'
        +            ),
        +        14 => array(
        +            'FileFunc.nsh', '${Locate}', '${GetSize}', '${DriveSpace}', '${GetDrives}', '${GetTime}', '${GetFileAttributes}', '${GetFileVersion}', '${GetExeName}', '${GetExePath}', '${GetParameters}', '${GetOptions}', '${GetRoot}', '${GetParent}', '${GetFileName}', '${GetBaseName}', '${GetFileExt}', '${BannerTrimPath}', '${DirState}', '${RefreshShellIcons}'
        +            ),
        +        15 => array(
        +            'TextFunc.nsh', '${LineFind}', '${LineRead}', '${FileReadFromEnd}', '${LineSum}', '${FileJoin}', '${TextCompare}', '${ConfigRead}', '${ConfigWrite}', '${FileRecode}', '${TrimNewLines}'
        +            ),
        +        16 => array(
        +            'WordFunc.nsh', '${WordFind}', '${WordFind2X}', '${WordFind3X}', '${WordReplace}', '${WordAdd}', '${WordInsert}', '${StrFilter}', '${VersionCompare}', '${VersionConvert}'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        6 => false,
        +        7 => false,
        +        8 => false,
        +        9 => false,
        +        10 => false,
        +        11 => false,
        +        12 => false,
        +        13 => false,
        +        14 => false,
        +        15 => false,
        +        16 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000066; font-weight:bold;',
        +            2 => 'color: #000066;',
        +            3 => 'color: #003366;',
        +            4 => 'color: #000099;',
        +            5 => 'color: #ff6600;',
        +            6 => 'color: #ff6600;',
        +            7 => 'color: #006600;',
        +            8 => 'color: #006600;',
        +            9 => 'color: #006600;',
        +            10 => 'color: #006600;',
        +            11 => 'color: #006600;',
        +            12 => 'color: #006600;',
        +            13 => 'color: #006600;',
        +            14 => 'color: #006600;',
        +            15 => 'color: #006600;',
        +            16 => 'color: #006600;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            2 => 'color: #666666; font-style: italic;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #660066; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => ''
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #660066;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => ''
        +            ),
        +        'METHODS' => array(
        +            0 => ''
        +            ),
        +        'SYMBOLS' => array(
        +            0 => ''
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #660000;',
        +            1 => 'color: #660000;',
        +            2 => 'color: #660000;',
        +            3 => 'color: #660000;',
        +            4 => 'color: #660000;',
        +            5 => 'color: #660000;',
        +            6 => 'color: #660000;',
        +            7 => 'color: #000099;',
        +            8 => 'color: #003399;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => '',
        +        7 => '',
        +        8 => '',
        +        9 => '',
        +        10 => '',
        +        11 => '',
        +        12 => '',
        +        13 => '',
        +        14 => '',
        +        15 => '',
        +        16 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        0 => '\$\$',
        +        1 => '\$\\r',
        +        2 => '\$\\n',
        +        3 => '\$\\t',
        +        4 => '\$[a-zA-Z0-9_]+',
        +        5 => '\$\{.{1,256}\}',
        +        6 => '\$\\\(.{1,256}\\\)',
        +        7 => array(
        +            GESHI_SEARCH => '([^:\/\\\*\?\"\<\>(?:)\s]*?)(::)([^:\/\\\*\?\"\<\>(?:)\s]*?)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => '\\2\\3'
        +            ),
        +        8 => array(
        +            GESHI_SEARCH => '([^:\/\\\*\?\"\<\>(?:)\s]*?)(::)([^:\/\\\*\?\"\<\>(?:)]*?\s)',
        +            GESHI_REPLACE => '\\3',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1\\2',
        +            GESHI_AFTER => ''
        +            )
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/oberon2.php b/includes/geshi/oberon2.php
        new file mode 100644
        index 0000000..30869ff
        --- /dev/null
        +++ b/includes/geshi/oberon2.php
        @@ -0,0 +1,133 @@
        + 'Oberon-2',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array('(*' => '*)'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'HARDQUOTE' => array("'", "'"),
        +    'HARDESCAPE' => array("''"),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'ARRAY', 'BEGIN', 'BY', 'CASE',
        +            'CONST', 'DIV', 'DO', 'ELSE', 'ELSIF', 'END',
        +            'EXIT', 'FOR', 'IF', 'IMPORT', 'IN', 'IS',
        +            'LOOP', 'MOD', 'MODULE', 'OF',
        +            'OR', 'POINTER', 'PROCEDURE', 'RECORD',
        +            'REPEAT', 'RETURN', 'THEN', 'TO',
        +            'TYPE', 'UNTIL', 'VAR', 'WHILE', 'WITH'
        +            ),
        +        2 => array(
        +            'NIL', 'FALSE', 'TRUE',
        +            ),
        +        3 => array(
        +            'ABS', 'ASH', 'ASSERT', 'CAP', 'CHR', 'COPY', 'DEC',
        +            'ENTIER', 'EXCL', 'HALT', 'INC', 'INCL', 'LEN',
        +            'LONG', 'MAX', 'MIN', 'NEW', 'ODD', 'ORD', 'SHORT', 'SIZE'
        +            ),
        +        4 => array(
        +            'BOOLEAN', 'CHAR', 'SHORTINT', 'LONGINT',
        +            'INTEGER', 'LONGREAL', 'REAL', 'SET', 'PTR'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        ',', ':', '=', '+', '-', '*', '/', '#', '~'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000000; font-weight: bold;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #000066;',
        +            4 => 'color: #000066; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            'HARD' => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;',
        +            'HARD' => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #0066ee;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/objc.php b/includes/geshi/objc.php
        new file mode 100644
        index 0000000..4da05b6
        --- /dev/null
        +++ b/includes/geshi/objc.php
        @@ -0,0 +1,356 @@
        + 'Objective-C',
        +    'COMMENT_SINGLE' => array(
        +        //Compiler directives
        +        1 => '#',
        +        //Single line C-Comments
        +        2 => '//'
        +        ),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        //Multiline Continuation for single-line comment
        +        2 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m',
        +        //Pseudo-Highlighting of the @-sign before strings
        +        3 => "/@(?=\")/"
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"', "'"),
        +    'ESCAPE_CHAR' => '\\',
        +
        +    'KEYWORDS' => array(
        +        // Objective-C keywords
        +        1 => array(
        +            'while', 'switch', 'return', 'in', 'if', 'goto', 'foreach', 'for',
        +            'else', 'do', 'default', 'continue', 'case', '@try', '@throw',
        +            '@synthesize', '@synchronized', '@selector', '@public', '@protocol',
        +            '@protected', '@property', '@private', '@interface',
        +            '@implementation', '@finally', '@end', '@encode', '@defs', '@class',
        +            '@catch'
        +            ),
        +        // Macros and constants
        +        2 => array(
        +            'YES', 'USHRT_MAX', 'ULONG_MAX', 'UINT_MAX', 'UCHAR_MAX', 'true',
        +            'TMP_MAX', 'stdout', 'stdin', 'stderr', 'SIGTERM', 'SIGSEGV',
        +            'SIGINT', 'SIGILL', 'SIG_IGN', 'SIGFPE', 'SIG_ERR', 'SIG_DFL',
        +            'SIGABRT', 'SHRT_MIN', 'SHRT_MAX', 'SEEK_SET', 'SEEK_END',
        +            'SEEK_CUR', 'SCHAR_MIN', 'SCHAR_MAX', 'RAND_MAX', 'NULL',
        +            'NO', 'nil', 'Nil', 'L_tmpnam', 'LONG_MIN', 'LONG_MAX',
        +            'LDBL_MIN_EXP', 'LDBL_MIN', 'LDBL_MAX_EXP', 'LDBL_MAX',
        +            'LDBL_MANT_DIG', 'LDBL_EPSILON', 'LDBL_DIG', 'INT_MIN', 'INT_MAX',
        +            'HUGE_VAL', 'FOPEN_MAX', 'FLT_ROUNDS', 'FLT_RADIX', 'FLT_MIN_EXP',
        +            'FLT_MIN', 'FLT_MAX_EXP', 'FLT_MAX', 'FLT_MANT_DIG', 'FLT_EPSILON',
        +            'FLT_DIG', 'FILENAME_MAX', 'false', 'EXIT_SUCCESS', 'EXIT_FAILURE',
        +            'errno', 'ERANGE', 'EOF', 'enum', 'EDOM', 'DBL_MIN_EXP', 'DBL_MIN',
        +            'DBL_MAX_EXP', 'DBL_MAX', 'DBL_MANT_DIG', 'DBL_EPSILON', 'DBL_DIG',
        +            'CLOCKS_PER_SEC', 'CHAR_MIN', 'CHAR_MAX', 'CHAR_BIT', 'BUFSIZ',
        +            'break'
        +            ),
        +        // C standard library functions
        +        3 => array(
        +            'vsprintf', 'vprintf', 'vfprintf', 'va_start', 'va_end', 'va_arg',
        +            'ungetc', 'toupper', 'tolower', 'tmpname', 'tmpfile', 'time',
        +            'tanh', 'tan', 'system', 'strxfrm', 'strtoul', 'strtol', 'strtok',
        +            'strtod', 'strstr', 'strspn', 'strrchr', 'strpbrk', 'strncpy',
        +            'strncmp', 'strncat', 'strlen', 'strftime', 'strerror', 'strcspn',
        +            'strcpy', 'strcoll', 'strcmp', 'strchr', 'strcat', 'sscanf',
        +            'srand', 'sqrt', 'sprintf', 'snprintf', 'sizeof', 'sinh', 'sin',
        +            'setvbuf', 'setjmp', 'setbuf', 'scanf', 'rewind', 'rename',
        +            'remove', 'realloc', 'rand', 'qsort', 'puts', 'putchar', 'putc',
        +            'printf', 'pow', 'perror', 'offsetof', 'modf', 'mktime', 'memset',
        +            'memmove', 'memcpy', 'memcmp', 'memchr', 'malloc', 'longjmp',
        +            'log10', 'log', 'localtime', 'ldiv', 'ldexp', 'labs', 'isxdigit',
        +            'isupper', 'isspace', 'ispunct', 'isprint', 'islower',
        +            'isgraph', 'isdigit', 'iscntrl', 'isalpha', 'isalnum', 'gmtime',
        +            'gets', 'getenv', 'getchar', 'getc', 'fwrite', 'ftell', 'fsetpos',
        +            'fseek', 'fscanf', 'frexp', 'freopen', 'free', 'fread', 'fputs',
        +            'fputc', 'fprintf', 'fopen', 'fmod', 'floor', 'fgets', 'fgetpos',
        +            'fgetc', 'fflush', 'ferror', 'feof', 'fclose', 'fabs', 'exp',
        +            'exit', 'div', 'difftime', 'ctime', 'cosh', 'cos', 'clock',
        +            'clearerr', 'ceil', 'calloc', 'bsearch', 'atol', 'atoi', 'atof',
        +            'atexit', 'atan2', 'atan', 'assert', 'asin', 'asctime', 'acos',
        +            'abs', 'abort'
        +            ),
        +        // Data types (C, Objective-C, Cocoa)
        +        4 => array(
        +            'volatile', 'void', 'va_list', 'unsigned', 'union', 'typedef', 'tm',
        +            'time_t', 'struct', 'string', 'static', 'size_t',
        +            'signed', 'signal', 'short', 'SEL', 'register', 'raise',
        +            'ptrdiff_t', 'NSZone', 'NSRect', 'NSRange', 'NSPoint', 'long',
        +            'ldiv_t', 'jmp_buf', 'int', 'IMP', 'id', 'fpos_t', 'float', 'FILE',
        +            'extern', 'double', 'div_t', 'const', 'clock_t', 'Class', 'char',
        +            'BOOL', 'auto'
        +            ),
        +        // Foundation classes
        +        5 => array(
        +            'NSXMLParser', 'NSXMLNode', 'NSXMLElement', 'NSXMLDTDNode',
        +            'NSXMLDTD', 'NSXMLDocument', 'NSWhoseSpecifier',
        +            'NSValueTransformer', 'NSValue', 'NSUserDefaults', 'NSURLResponse',
        +            'NSURLRequest', 'NSURLProtocol', 'NSURLProtectionSpace',
        +            'NSURLHandle', 'NSURLDownload', 'NSURLCredentialStorage',
        +            'NSURLCredential', 'NSURLConnection', 'NSURLCache',
        +            'NSURLAuthenticationChallenge', 'NSURL', 'NSUniqueIDSpecifier',
        +            'NSUndoManager', 'NSUnarchiver', 'NSTimeZone', 'NSTimer',
        +            'NSThread', 'NSTask', 'NSString', 'NSStream', 'NSSpellServer',
        +            'NSSpecifierTest', 'NSSortDescriptor', 'NSSocketPortNameServer',
        +            'NSSocketPort', 'NSSetCommand', 'NSSet', 'NSSerializer',
        +            'NSScriptWhoseTest', 'NSScriptSuiteRegistry',
        +            'NSScriptObjectSpecifier', 'NSScriptExecutionContext',
        +            'NSScriptCommandDescription', 'NSScriptCommand',
        +            'NSScriptCoercionHandler', 'NSScriptClassDescription', 'NSScanner',
        +            'NSRunLoop', 'NSRelativeSpecifier', 'NSRecursiveLock',
        +            'NSRangeSpecifier', 'NSRandomSpecifier', 'NSQuitCommand', 'NSProxy',
        +            'NSProtocolChecker', 'NSPropertySpecifier',
        +            'NSPropertyListSerialization', 'NSProcessInfo', 'NSPredicate',
        +            'NSPositionalSpecifier', 'NSPortNameServer', 'NSPortMessage',
        +            'NSPortCoder', 'NSPort', 'NSPointerFunctions', 'NSPointerArray',
        +            'NSPipe', 'NSOutputStream', 'NSOperationQueue', 'NSOperation',
        +            'NSObject', 'NSNumberFormatter', 'NSNumber', 'NSNull',
        +            'NSNotificationQueue', 'NSNotificationCenter', 'NSNotification',
        +            'NSNetServiceBrowser', 'NSNetService', 'NSNameSpecifier',
        +            'NSMutableURLRequest', 'NSMutableString', 'NSMutableSet',
        +            'NSMutableIndexSet', 'NSMutableDictionary', 'NSMutableData',
        +            'NSMutableCharacterSet', 'NSMutableAttributedString',
        +            'NSMutableArray', 'NSMoveCommand', 'NSMiddleSpecifier',
        +            'NSMethodSignature', 'NSMetadataQueryResultGroup',
        +            'NSMetadataQueryAttributeValueTuple', 'NSMetadataQuery',
        +            'NSMetadataItem', 'NSMessagePortNameServer', 'NSMessagePort',
        +            'NSMapTable', 'NSMachPort', 'NSMachBootstrapServer',
        +            'NSLogicalTest', 'NSLock', 'NSLocale', 'NSKeyedUnarchiver',
        +            'NSKeyedArchiver', 'NSInvocationOperation', 'NSInvocation',
        +            'NSInputStream', 'NSIndexSpecifier', 'NSIndexSet', 'NSIndexPath',
        +            'NSHTTPURLResponse', 'NSHTTPCookieStorage', 'NSHTTPCookie',
        +            'NSHost', 'NSHashTable', 'NSGetCommand', 'NSGarbageCollector',
        +            'NSFormatter', 'NSFileManager', 'NSFileHandle', 'NSExpression',
        +            'NSExistsCommand', 'NSException', 'NSError', 'NSEnumerator',
        +            'NSDistributedNotificationCenter', 'NSDistributedLock',
        +            'NSDistantObjectRequest', 'NSDistantObject',
        +            'NSDirectoryEnumerator', 'NSDictionary', 'NSDeserializer',
        +            'NSDeleteCommand', 'NSDecimalNumberHandler', 'NSDecimalNumber',
        +            'NSDateFormatter', 'NSDateComponents', 'NSDate', 'NSData',
        +            'NSCreateCommand', 'NSCountedSet', 'NSCountCommand', 'NSConnection',
        +            'NSConditionLock', 'NSCondition', 'NSCompoundPredicate',
        +            'NSComparisonPredicate', 'NSCoder', 'NSCloseCommand',
        +            'NSCloneCommand', 'NSClassDescription', 'NSCharacterSet',
        +            'NSCalendarDate', 'NSCalendar', 'NSCachedURLResponse', 'NSBundle',
        +            'NSAutoreleasePool', 'NSAttributedString', 'NSAssertionHandler',
        +            'NSArray', 'NSArchiver', 'NSAppleScript', 'NSAppleEventManager',
        +            'NSAppleEventDescriptor', 'NSAffineTransform'
        +            ),
        +        // Foundation protocols
        +        6 => array(
        +            'NSURLProtocolClient', 'NSURLHandleClient', 'NSURLClient',
        +            'NSURLAuthenticationChallengeSender', 'NSScriptObjectSpecifiers',
        +            'NSScriptKeyValueCoding', 'NSScriptingComparisonMethods',
        +            'NSObjCTypeSerializationCallBack', 'NSMutableCopying',
        +            'NSLocking', 'NSKeyValueObserving', 'NSKeyValueCoding',
        +            'NSFastEnumeration', 'NSErrorRecoveryAttempting',
        +            'NSDecimalNumberBehaviors', 'NSCopying', 'NSComparisonMethods',
        +            'NSCoding'
        +            ),
        +        // AppKit classes
        +        7 => array(
        +            'NSWorkspace', 'NSWindowController', 'NSWindow', 'NSViewController',
        +            'NSViewAnimation', 'NSView', 'NSUserDefaultsController',
        +            'NSTypesetter', 'NSTreeNode', 'NSTreeController', 'NSTrackingArea',
        +            'NSToolbarItemGroup', 'NSToolbarItem', 'NSToolbar',
        +            'NSTokenFieldCell', 'NSTokenField', 'NSTextView',
        +            'NSTextTableBlock', 'NSTextTable', 'NSTextTab', 'NSTextStorage',
        +            'NSTextList', 'NSTextFieldCell', 'NSTextField', 'NSTextContainer',
        +            'NSTextBlock', 'NSTextAttachmentCell', 'NSTextAttachment', 'NSText',
        +            'NSTabViewItem', 'NSTabView', 'NSTableView', 'NSTableHeaderView',
        +            'NSTableHeaderCell', 'NSTableColumn', 'NSStepperCell', 'NSStepper',
        +            'NSStatusItem', 'NSStatusBar', 'NSSplitView', 'NSSpellChecker',
        +            'NSSpeechSynthesizer', 'NSSpeechRecognizer', 'NSSound',
        +            'NSSliderCell', 'NSSlider', 'NSSimpleHorizontalTypesetter',
        +            'NSShadow', 'NSSegmentedControl', 'NSSegmentedCell',
        +            'NSSecureTextFieldCell', 'NSSecureTextField', 'NSSearchFieldCell',
        +            'NSSearchField', 'NSScrollView', 'NSScroller', 'NSScreen',
        +            'NSSavePanel', 'NSRulerView', 'NSRulerMarker', 'NSRuleEditor',
        +            'NSResponder', 'NSQuickDrawView', 'NSProgressIndicator',
        +            'NSPrintPanel', 'NSPrintOperation', 'NSPrintInfo', 'NSPrinter',
        +            'NSPredicateEditorRowTemplate', 'NSPredicateEditor',
        +            'NSPopUpButtonCell', 'NSPopUpButton', 'NSPICTImageRep',
        +            'NSPersistentDocument', 'NSPDFImageRep', 'NSPathControl',
        +            'NSPathComponentCell', 'NSPathCell', 'NSPasteboard',
        +            'NSParagraphStyle', 'NSPanel', 'NSPageLayout', 'NSOutlineView',
        +            'NSOpenPanel', 'NSOpenGLView', 'NSOpenGLPixelFormat',
        +            'NSOpenGLPixelBuffer', 'NSOpenGLContext', 'NSObjectController',
        +            'NSNibOutletConnector', 'NSNibControlConnector', 'NSNibConnector',
        +            'NSNib', 'NSMutableParagraphStyle', 'NSMovieView', 'NSMovie',
        +            'NSMenuView', 'NSMenuItemCell', 'NSMenuItem', 'NSMenu', 'NSMatrix',
        +            'NSLevelIndicatorCell', 'NSLevelIndicator', 'NSLayoutManager',
        +            'NSInputServer', 'NSInputManager', 'NSImageView', 'NSImageRep',
        +            'NSImageCell', 'NSImage', 'NSHelpManager', 'NSGraphicsContext',
        +            'NSGradient', 'NSGlyphInfo', 'NSGlyphGenerator', 'NSFormCell',
        +            'NSForm', 'NSFontPanel', 'NSFontManager', 'NSFontDescriptor',
        +            'NSFont', 'NSFileWrapper', 'NSEvent', 'NSEPSImageRep', 'NSDrawer',
        +            'NSDocumentController', 'NSDocument', 'NSDockTile',
        +            'NSDictionaryController', 'NSDatePickerCell', 'NSDatePicker',
        +            'NSCustomImageRep', 'NSCursor', 'NSController', 'NSControl',
        +            'NSComboBoxCell', 'NSComboBox', 'NSColorWell', 'NSColorSpace',
        +            'NSColorPicker', 'NSColorPanel', 'NSColorList', 'NSColor',
        +            'NSCollectionViewItem', 'NSCollectionView', 'NSClipView',
        +            'NSCIImageRep', 'NSCell', 'NSCachedImageRep', 'NSButtonCell',
        +            'NSButton', 'NSBrowserCell', 'NSBrowser', 'NSBox',
        +            'NSBitmapImageRep', 'NSBezierPath', 'NSATSTypesetter',
        +            'NSArrayController', 'NSApplication', 'NSAnimationContext',
        +            'NSAnimation', 'NSAlert', 'NSActionCell'
        +            ),
        +        // AppKit protocols
        +        8 => array(
        +            'NSWindowScripting', 'NSValidatedUserInterfaceItem',
        +            'NSUserInterfaceValidations', 'NSToolTipOwner',
        +            'NSToolbarItemValidation', 'NSTextInput',
        +            'NSTableDataSource', 'NSServicesRequests',
        +            'NSPrintPanelAccessorizing', 'NSPlaceholders',
        +            'NSPathControlDelegate', 'NSPathCellDelegate',
        +            'NSOutlineViewDataSource', 'NSNibAwaking', 'NSMenuValidation',
        +            'NSKeyValueBindingCreation', 'NSInputServiceProvider',
        +            'NSInputServerMouseTracker', 'NSIgnoreMisspelledWords',
        +            'NSGlyphStorage', 'NSFontPanelValidation', 'NSEditorRegistration',
        +            'NSEditor', 'NSDraggingSource', 'NSDraggingInfo',
        +            'NSDraggingDestination', 'NSDictionaryControllerKeyValuePair',
        +            'NSComboBoxDataSource', 'NSComboBoxCellDataSource',
        +            'NSColorPickingDefault', 'NSColorPickingCustom', 'NSChangeSpelling',
        +            'NSAnimatablePropertyContainer', 'NSAccessibility'
        +            ),
        +        // CoreData classes
        +        9 => array(
        +            'NSRelationshipDescription', 'NSPropertyMapping',
        +            'NSPropertyDescription', 'NSPersistentStoreCoordinator',
        +            'NSPersistentStore', 'NSMigrationManager', 'NSMappingModel',
        +            'NSManagedObjectModel', 'NSManagedObjectID',
        +            'NSManagedObjectContext', 'NSManagedObject',
        +            'NSFetchRequestExpression', 'NSFetchRequest',
        +            'NSFetchedPropertyDescription', 'NSEntityMigrationPolicy',
        +            'NSEntityMapping', 'NSEntityDescription', 'NSAttributeDescription',
        +            'NSAtomicStoreCacheNode', 'NSAtomicStore'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => true,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true,
        +        8 => true,
        +        9 => true
        +        ),
        +    // Define the colors for the groups listed above
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #a61390;', // Objective-C keywords
        +            2 => 'color: #a61390;', // Macros and constants
        +            3 => 'color: #a61390;', // C standard library functions
        +            4 => 'color: #a61390;', // data types
        +            5 => 'color: #400080;', // Foundation classes
        +            6 => 'color: #2a6f76;', // Foundation protocols
        +            7 => 'color: #400080;', // AppKit classes
        +            8 => 'color: #2a6f76;', // AppKit protocols
        +            9 => 'color: #400080;' // CoreData classes
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #6e371a;', // Preprocessor directives
        +            2 => 'color: #11740a; font-style: italic;', // Normal C single-line comments
        +            3 => 'color: #bf1d1a;', // Q-sign in front of Strings
        +            'MULTI' => 'color: #11740a; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #2400d9;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #002200;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #bf1d1a;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #2400d9;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #002200;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAME}.html',
        +        4 => '',
        +        5 => 'http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/{FNAME}_Class/',
        +        6 => 'http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Protocols/{FNAME}_Protocol/',
        +        7 => 'http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/{FNAME}_Class/',
        +        8 => 'http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Protocols/{FNAME}_Protocol/',
        +        9 => 'http://developer.apple.com/documentation/Cocoa/Reference/CoreDataFramework/Classes/{FNAME}_Class/'
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/objeck.php b/includes/geshi/objeck.php
        new file mode 100644
        index 0000000..34dd091
        --- /dev/null
        +++ b/includes/geshi/objeck.php
        @@ -0,0 +1,114 @@
        + 'Objeck Programming Language',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array('#~' => '~#'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'virtual', 'if', 'else', 'do', 'while', 'use', 'bundle', 'native',
        +            'static', 'public', 'private', 'class', 'function', 'method',
        +            'select', 'other', 'enum', 'for', 'each', 'label', 'return', 'from'
        +            ),
        +        2 => array(
        +            'Byte', 'Int', 'Nil', 'Float', 'Char', 'Bool', 'String'
        +            ),
        +        3 => array(
        +            'true', 'false'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        1 => array(
        +            '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '%', '=', '<', '>', '&', '|', ':', ';', ',', '+=', '-=', '*=', '/=',
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #b1b100;',
        +            3 => 'color: #b1b100;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;',
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #004000;'
        +            ),
        +        'SYMBOLS' => array(
        +            1 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(),
        +        'SCRIPT' => array()
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '->'
        +        ),
        +    'REGEXPS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/ocaml-brief.php b/includes/geshi/ocaml-brief.php
        new file mode 100644
        index 0000000..84c74bf
        --- /dev/null
        +++ b/includes/geshi/ocaml-brief.php
        @@ -0,0 +1,110 @@
        + 'OCaml (brief)',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array('(*' => '*)'),
        +    'CASE_KEYWORDS' => 0,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => "",
        +    'KEYWORDS' => array(
        +        /* main OCaml keywords */
        +        1 => array(
        +            'and', 'as', 'asr', 'begin', 'class', 'closed', 'constraint', 'do', 'done', 'downto', 'else',
        +            'end', 'exception', 'external', 'failwith', 'false', 'flush', 'for', 'fun', 'function', 'functor',
        +            'if', 'in', 'include', 'inherit',  'incr', 'land', 'let', 'load', 'los', 'lsl', 'lsr', 'lxor',
        +            'match', 'method', 'mod', 'module', 'mutable', 'new', 'not', 'of', 'open', 'option', 'or', 'parser',
        +            'private', 'ref', 'rec', 'raise', 'regexp', 'sig', 'struct', 'stdout', 'stdin', 'stderr', 'then',
        +            'to', 'true', 'try', 'type', 'val', 'virtual', 'when', 'while', 'with'
        +            )
        +        ),
        +    /* highlighting symbols is really important in OCaml */
        +    'SYMBOLS' => array(
        +        ';', '!', ':', '.', '=', '%', '^', '*', '-', '/', '+',
        +        '>', '<', '(', ')', '[', ']', '&', '|', '#', "'"
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #06c; font-weight: bold;' /* nice blue */
        +            ),
        +        'COMMENTS' => array(
        +            'MULTI' => 'color: #5d478b; font-style: italic;' /* light purple */
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #6c6;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #3cb371;' /* nice green */
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #c6c;' /* pink */
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #060;' /* dark green */
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #a52a2a;' /* maroon */
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/ocaml.php b/includes/geshi/ocaml.php
        new file mode 100644
        index 0000000..364f556
        --- /dev/null
        +++ b/includes/geshi/ocaml.php
        @@ -0,0 +1,185 @@
        + 'OCaml',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array('(*' => '*)'),
        +    'COMMENT_REGEXP' => array(1 => '/\(\*(?:(?R)|.)+?\*\)/s'),
        +    'CASE_KEYWORDS' => 0,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => "",
        +    'KEYWORDS' => array(
        +        /* main OCaml keywords */
        +        1 => array(
        +            'and', 'as', 'asr', 'begin', 'class', 'closed', 'constraint', 'do', 'done', 'downto', 'else',
        +            'end', 'exception', 'external', 'failwith', 'false', 'for', 'fun', 'function', 'functor',
        +            'if', 'in', 'include', 'inherit',  'incr', 'land', 'let', 'load', 'los', 'lsl', 'lsr', 'lxor',
        +            'match', 'method', 'mod', 'module', 'mutable', 'new', 'not', 'of', 'open', 'option', 'or', 'parser',
        +            'private', 'ref', 'rec', 'raise', 'regexp', 'sig', 'struct', 'stdout', 'stdin', 'stderr', 'then',
        +            'to', 'true', 'try', 'type', 'val', 'virtual', 'when', 'while', 'with'
        +            ),
        +        /* define names of main librarys, so we can link to it */
        +        2 => array(
        +            'Arg', 'Arith_status', 'Array', //'Array1', 'Array2', 'Array3',
        +            'ArrayLabels', 'Big_int', 'Bigarray', 'Buffer', 'Callback',
        +            'CamlinternalLazy', 'CamlinternalMod', 'CamlinternalOO', 'Char',
        +            'Complex', 'Condition', 'Dbm', 'Digest', 'Dynlink', 'Event',
        +            'Filename', 'Format', 'Gc', 'Genlex', 'Graphics', 'GraphicsX11',
        +            'Hashtbl', 'Int32', 'Int64', 'Lazy', 'Lexing', 'List', 'ListLabels',
        +            'Map', 'Marshal', 'MoreLabels', 'Mutex', 'Nativeint', 'Num', 'Obj',
        +            'Oo', 'Parsing', 'Pervasives', 'Printexc', 'Printf', 'Queue',
        +            'Random', 'Scanf', 'Set', 'Sort', 'Stack', 'StdLabels', 'Str',
        +            'Stream', 'String', 'StringLabels', 'Sys', 'Thread', 'ThreadUnix',
        +            'Tk', 'Unix', 'UnixLabels', 'Weak'
        +            ),
        +        /* just link to the Pervasives functions library, cause it's the default opened library when starting OCaml */
        +        3 => array(
        +            'abs', 'abs_float', 'acos', 'asin', 'at_exit', 'atan', 'atan2',
        +            'bool_of_string', 'ceil', 'char_of_int', 'classify_float',
        +            'close_in', 'close_in_noerr', 'close_out', 'close_out_noerr',
        +            'compare', 'cos', 'cosh', 'decr', 'epsilon_float', 'exit', 'exp',
        +            'float', 'float_of_int', 'float_of_string', 'floor', 'flush',
        +            'flush_all', 'format_of_string', 'frexp', 'fst', 'ignore',
        +            'in_channel_length', 'infinity', 'input', 'input_binary_int',
        +            'input_byte', 'input_char', 'input_line', 'input_value',
        +            'int_of_char', 'int_of_float', 'int_of_string', 'invalid_arg',
        +            'ldexp', 'log', 'log10', 'max', 'max_float', 'max_int', 'min',
        +            'min_float', 'min_int', 'mod_float', 'modf', 'nan', 'open_in',
        +            'open_in_bin', 'open_in_gen', 'open_out', 'open_out_bin',
        +            'open_out_gen', 'out_channel_length', 'output', 'output_binary_int',
        +            'output_byte', 'output_char', 'output_string', 'output_value',
        +            'pos_in', 'pos_out',  'pred', 'prerr_char', 'prerr_endline',
        +            'prerr_float', 'prerr_int', 'prerr_newline', 'prerr_string',
        +            'print_char', 'print_endline', 'print_float', 'print_int',
        +            'print_newline', 'print_string', 'read_float', 'read_int',
        +            'read_line', 'really_input', 'seek_in', 'seek_out',
        +            'set_binary_mode_in', 'set_binary_mode_out', 'sin', 'sinh', 'snd',
        +            'sqrt', 'string_of_bool', 'string_of_float', 'string_of_format',
        +            'string_of_int', 'succ', 'tan', 'tanh', 'truncate'
        +            ),
        +        /* here Pervasives Types */
        +        4 => array (
        +            'array','bool','char','exn','file_descr','format','fpclass',
        +            'in_channel','int','int32','int64','list','nativeint','open_flag',
        +            'out_channel','string','Sys_error','unit'
        +            ),
        +        /* finally Pervasives Exceptions */
        +        5 => array (
        +            'Exit', 'Invalid_Argument', 'Failure', 'Division_by_zero'
        +            )
        +        ),
        +    /* highlighting symbols is really important in OCaml */
        +    'SYMBOLS' => array(
        +        '+.', '-.', '*.', '/.', '[<', '>]',
        +        ';', '!', ':', '.', '=', '%', '^', '*', '-', '/', '+',
        +        '>', '<', '(', ')', '[', ']', '&', '|', '#', "'",
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => true, /* functions name are case sensitive */
        +        3 => true, /* types name too */
        +        4 => true, /* pervasives types */
        +        5 => true  /* pervasives exceptions */
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #06c; font-weight: bold;', /* nice blue */
        +            2 => 'color: #06c; font-weight: bold;', /* nice blue */
        +            3 => 'color: #06c; font-weight: bold;', /* nice blue */
        +            4 => 'color: #06c; font-weight: bold;', /* nice blue */
        +            5 => 'color: #06c; font-weight: bold;' /* nice blue */
        +            ),
        +        'COMMENTS' => array(
        +            'MULTI' => 'color: #5d478b; font-style: italic;', /* light purple */
        +            1 => 'color: #5d478b; font-style: italic;' /* light purple */
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #a52a2a;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #3cb371;' /* nice green */
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #c6c;' /* pink */
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #060;' /* dark green */
        +            ),
        +        'REGEXPS' => array(
        +            1 => 'font-weight:bold; color:#339933;',
        +            2 => 'font-weight:bold; color:#993399;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #a52a2a;' /* maroon */
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        /* some of keywords are Pervasives functions (land, lxor, asr, ...) */
        +        1 => '',
        +        /* link to the wanted library */
        +        2 => 'http://caml.inria.fr/pub/docs/manual-ocaml/libref/{FNAME}.html',
        +        /* link to Pervasives functions */
        +        3 => 'http://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html#VAL{FNAME}',
        +        /* link to Pervasives type */
        +        4 => 'http://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html#TYPE{FNAME}',
        +        /* link to Pervasives exceptions */
        +        5 => 'http://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html#EXCEPTION{FNAME}'
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        1 => '~\w+',
        +        2 => '`(?=(?-i:[a-z]))\w*',
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/octave.php b/includes/geshi/octave.php
        new file mode 100644
        index 0000000..4f6677f
        --- /dev/null
        +++ b/includes/geshi/octave.php
        @@ -0,0 +1,513 @@
        + 'GNU/Octave',
        +    'COMMENT_SINGLE' => array(1 => '#', 2 => '%'),
        +    // we can't use COMMENT_MULTI since start and end of block comments need to
        +    // be alone on the line (optionally, with whitespace). See COMMENT_REGEXP
        +    'COMMENT_MULTI' => array(),
        +    // we can't use QUOTEMARKS, not even HARDQUOTE, see COMMENT_REGEXP
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => '',
        +    'COMMENT_REGEXP' => array(
        +        // Single quote strings: we can't use QUOTEMARKS here since new
        +        // lines will break the string. Plus, single quote strings do not even
        +        // allow for continuation markers, only double quote strings allow it.
        +        // Also, to do not misdetect the transpose operator ' as the start of a
        +        // string we assert to not follow a variable name (letters, digits and
        +        // underscores) or a closing bracket (round, square or curly) or a dot
        +        // (to form the array transpose operator ".'" ).
        +        3 => "/(? '/"(.|(\.\.\.|\\\)(\s)*?\n)*?(? "/^\s*?[%#]{\s*?$.*?^\s*?[%#]}\s*?$/ms",
        +        // Packaging system: comes here so that pkg can also be used in the
        +        // function form. The list of pkg commands is optional to the match so
        +        // that at least pkg is highlighted if new commands are implemented
        +        6 => "/\bpkg(?!\s*\()\s+((un)?install|update|(un)?load|list|(global|local)_list|describe|prefix|(re)?build)?\b/",
        +        // Function handles
        +        7 => "/@([a-z_][a-z1-9_]*)?/i",
        +        ),
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC |
        +        GESHI_NUMBER_OCT_PREFIX |
        +        GESHI_NUMBER_HEX_PREFIX |
        +        GESHI_NUMBER_FLT_SCI_ZERO,
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'KEYWORDS' => array(
        +        // Reserved words
        +        1 => array(
        +            'break', 'case', 'catch', 'continue', 'do', 'else', 'elseif', 'end',
        +            'end_try_catch', 'end_unwind_protect', 'endfor', 'endfunction',
        +            'endif', 'endparfor', 'endswitch', 'endwhile', 'for', 'function',
        +            'if', 'otherwise', 'parfor', 'return',
        +            'switch', 'try', 'until', 'unwind_protect',
        +            'unwind_protect_cleanup', 'varargin', 'varargout', 'while'
        +            ),
        +        // Storage type
        +        2 => array(
        +            'global', 'persistent', 'static'
        +            ),
        +        // Internal variable
        +        3 => array(
        +            'ans'
        +            ),
        +        // Data types
        +        4 => array(
        +            'cell', 'char', 'double', 'uint8', 'uint16', 'uint32', 'uint64',
        +            'int8','int16', 'int32', 'int64', 'logical', 'single', 'struct'
        +            ),
        +        // Built in
        +        5 => array(
        +            'P_tmpdir', 'abs', 'acos', 'acosh',
        +            'add_input_event_hook', 'addlistener', 'addpath', 'addproperty',
        +            'all', 'allow_noninteger_range_as_index', 'and', 'angle', 'any',
        +            'arg', 'argnames', 'argv', 'asin', 'asinh', 'assignin', 'atan',
        +            'atan2', 'atanh', 'atexit', 'autoload', 'available_graphics_toolkits',
        +            'beep_on_error', 'bitand', 'bitmax', 'bitor', 'bitshift', 'bitxor',
        +            'builtin', 'canonicalize_file_name', 'cat', 'cbrt', 'cd', 'ceil',
        +            'cell2struct', 'cellstr', 'chdir', 'class', 'clc',
        +            'clear', 'columns', 'command_line_path', 'completion_append_char',
        +            'completion_matches', 'complex', 'confirm_recursive_rmdir', 'conj',
        +            'cos', 'cosh', 'cputime', 'crash_dumps_octave_core', 'ctranspose',
        +            'cumprod', 'cumsum', 'dbclear', 'dbcont', 'dbdown', 'dbnext',
        +            'dbquit', 'dbstack', 'dbstatus', 'dbstep', 'dbstop', 'dbtype', 'dbup',
        +            'dbwhere', 'debug_on_error', 'debug_on_interrupt', 'debug_on_warning',
        +            'default_save_options', 'dellistener', 'diag', 'diary', 'diff',
        +            'disp', 'do_braindead_shortcircuit_evaluation', 'do_string_escapes',
        +            'doc_cache_file', 'drawnow', 'dup2', 'echo',
        +            'echo_executing_commands', 'edit_history','eq', 'erf', 'erfc',
        +            'erfcx', 'erfinv', 'errno', 'errno_list', 'error', 'eval', 'evalin',
        +            'exec', 'exist', 'exit', 'exp', 'expm1', 'eye', 'fclear',
        +            'fclose', 'fcntl', 'fdisp', 'feof', 'ferror', 'feval', 'fflush',
        +            'fgetl', 'fgets', 'fieldnames', 'file_in_loadpath', 'file_in_path',
        +            'filemarker', 'filesep', 'find_dir_in_path', 'finite', 'fix',
        +            'fixed_point_format', 'floor', 'fmod', 'fnmatch', 'fopen', 'fork',
        +            'format', 'formula', 'fprintf', 'fputs', 'fread', 'freport',
        +            'frewind', 'fscanf', 'fseek', 'fskipl', 'ftell', 'full', 'func2str',
        +            'functions', 'fwrite', 'gamma', 'gammaln', 'ge', 'genpath', 'get',
        +            'get_help_text', 'get_help_text_from_file', 'getegid', 'getenv',
        +            'geteuid', 'getgid', 'gethostname', 'getpgrp', 'getpid', 'getppid',
        +            'getuid', 'glob', 'gt', 'history', 'history_control', 'history_file',
        +            'history_size', 'history_timestamp_format_string', 'home', 'horzcat',
        +            'hypot', 'ifelse', 'ignore_function_time_stamp', 'imag',
        +            'inferiorto', 'info_file', 'info_program', 'inline', 'input',
        +            'intmax', 'intmin', 'ipermute',
        +            'is_absolute_filename', 'is_dq_string', 'is_function_handle',
        +            'is_rooted_relative_filename', 'is_sq_string', 'isalnum', 'isalpha',
        +            'isargout', 'isascii', 'isbool', 'iscell', 'iscellstr', 'ischar',
        +            'iscntrl', 'iscomplex', 'isdebugmode', 'isdigit', 'isempty',
        +            'isfield', 'isfinite', 'isfloat', 'isglobal', 'isgraph', 'ishandle',
        +            'isieee', 'isindex', 'isinf', 'isinteger', 'iskeyword', 'islogical',
        +            'islower', 'ismatrix', 'ismethod', 'isna', 'isnan', 'isnull',
        +            'isnumeric', 'isobject', 'isprint', 'ispunct', 'isreal', 'issorted',
        +            'isspace', 'issparse', 'isstruct', 'isupper', 'isvarname', 'isxdigit',
        +            'kbhit', 'keyboard', 'kill', 'lasterr', 'lasterror', 'lastwarn',
        +            'ldivide', 'le', 'length', 'lgamma', 'link', 'linspace',
        +            'list_in_columns', 'load', 'loaded_graphics_toolkits', 'log', 'log10',
        +            'log1p', 'log2', 'lower', 'lstat', 'lt',
        +            'make_absolute_filename', 'makeinfo_program', 'max_recursion_depth',
        +            'merge', 'methods', 'mfilename', 'minus', 'mislocked',
        +            'missing_function_hook', 'mkdir', 'mkfifo', 'mkstemp', 'mldivide',
        +            'mlock', 'mod', 'more', 'mpower', 'mrdivide', 'mtimes', 'munlock',
        +            'nargin', 'nargout', 'native_float_format', 'ndims', 'ne',
        +            'nfields', 'nnz', 'norm', 'not', 'nth_element', 'numel', 'nzmax',
        +            'octave_config_info', 'octave_core_file_limit',
        +            'octave_core_file_name', 'octave_core_file_options',
        +            'octave_tmp_file_name', 'onCleanup', 'ones',
        +            'optimize_subsasgn_calls', 'or', 'output_max_field_width',
        +            'output_precision', 'page_output_immediately', 'page_screen_output',
        +            'path', 'pathsep', 'pause', 'pclose', 'permute', 'pipe', 'plus',
        +            'popen', 'popen2', 'power', 'print_empty_dimensions',
        +            'print_struct_array_contents', 'printf', 'prod',
        +            'program_invocation_name', 'program_name', 'putenv', 'puts', 'pwd',
        +            'quit', 'rats', 'rdivide', 're_read_readline_init_file',
        +            'read_readline_init_file', 'readdir', 'readlink', 'real', 'realmax',
        +            'realmin', 'register_graphics_toolkit', 'rehash', 'rem',
        +            'remove_input_event_hook', 'rename', 'repelems', 'reset', 'reshape',
        +            'resize', 'restoredefaultpath', 'rethrow', 'rmdir', 'rmfield',
        +            'rmpath', 'round', 'roundb', 'rows', 'run_history', 'save',
        +            'save_header_format_string', 'save_precision', 'saving_history',
        +            'scanf', 'set', 'setenv', 'sighup_dumps_octave_core', 'sign',
        +            'sigterm_dumps_octave_core', 'silent_functions', 'sin',
        +            'sinh', 'size', 'size_equal', 'sizemax', 'sizeof', 'sleep', 'sort',
        +            'source', 'spalloc', 'sparse', 'sparse_auto_mutate',
        +            'split_long_rows', 'sprintf', 'sqrt', 'squeeze', 'sscanf', 'stat',
        +            'stderr', 'stdin', 'stdout', 'str2func', 'strcmp', 'strcmpi',
        +            'string_fill_char', 'strncmp', 'strncmpi', 'struct2cell',
        +            'struct_levels_to_print', 'strvcat', 'subsasgn', 'subsref', 'sum',
        +            'sumsq', 'superiorto', 'suppress_verbose_help_message', 'symlink',
        +            'system', 'tan', 'tanh', 'terminal_size', 'tic', 'tilde_expand',
        +            'times', 'tmpfile', 'tmpnam', 'toascii', 'toc', 'tolower', 'toupper',
        +            'transpose', 'typeinfo',
        +            'umask', 'uminus', 'uname', 'undo_string_escapes', 'unlink',
        +            'uplus', 'upper', 'usage', 'usleep', 'vec', 'vectorize', 'vertcat',
        +            'waitfor', 'waitpid', 'warning', 'warranty', 'who', 'whos',
        +            'whos_line_format', 'yes_or_no', 'zeros'
        +            ),
        +        // Octave functions
        +        6 => array(
        +            'accumarray', 'accumdim', 'acosd', 'acot', 'acotd', 'acoth', 'acsc',
        +            'acscd', 'acsch', 'addpref', 'addtodate', 'allchild', 'amd',
        +            'ancestor', 'anova', 'arch_fit', 'arch_rnd', 'arch_test',
        +            'area', 'arma_rnd', 'asctime', 'asec', 'asecd', 'asech', 'asind',
        +            'assert', 'atand', 'autoreg_matrix', 'autumn',
        +            'axes', 'axis', 'balance', 'bar', 'barh', 'bartlett', 'bartlett_test',
        +            'base2dec', 'beep', 'bessel', 'besselj', 'beta', 'betacdf',
        +            'betainc', 'betainv', 'betaln', 'betapdf', 'betarnd', 'bicg',
        +            'bicgstab', 'bicubic', 'bin2dec', 'bincoeff', 'binocdf', 'binoinv',
        +            'binopdf', 'binornd', 'bitcmp', 'bitget', 'bitset', 'blackman',
        +            'blanks', 'blkdiag', 'bone', 'box', 'brighten', 'bsxfun',
        +            'bug_report', 'bunzip2', 'bzip2', 'calendar', 'cart2pol', 'cart2sph',
        +            'cast', 'cauchy_cdf', 'cauchy_inv', 'cauchy_pdf', 'cauchy_rnd',
        +            'caxis', 'ccolamd', 'cell2mat', 'celldisp', 'cellfun',
        +            'center', 'cgs', 'chi2cdf', 'chi2inv', 'chi2pdf', 'chi2rnd',
        +            'chisquare_test_homogeneity', 'chisquare_test_independence', 'chol',
        +            'chop', 'circshift', 'cla', 'clabel', 'clf', 'clock',
        +            'cloglog', 'close', 'closereq', 'colamd', 'colloc', 'colon',
        +            'colorbar', 'colormap', 'colperm', 'colstyle', 'comet', 'comet3',
        +            'comma', 'common_size', 'commutation_matrix', 'compan',
        +            'compare_versions', 'compass', 'computer', 'cond', 'condest',
        +            'contour', 'contour3', 'contourc', 'contourf', 'contrast', 'conv',
        +            'conv2', 'convhull', 'convhulln', 'cool', 'copper', 'copyfile',
        +            'cor_test', 'corr', 'cosd', 'cot', 'cotd', 'coth', 'cov',
        +            'cplxpair', 'cross', 'csc', 'cscd', 'csch', 'cstrcat',
        +            'csvread', 'csvwrite', 'ctime', 'cumtrapz', 'curl', 'cylinder',
        +            'daspect', 'daspk', 'dasrt', 'dassl', 'date', 'datenum', 'datestr',
        +            'datetick', 'datevec', 'dblquad', 'deal', 'deblank', 'debug',
        +            'dec2base', 'dec2bin', 'dec2hex', 'deconv', 'del2', 'delaunay',
        +            'delaunay3', 'delaunayn', 'delete', 'demo', 'det', 'detrend',
        +            'diffpara', 'diffuse', 'dir', 'discrete_cdf', 'discrete_inv',
        +            'discrete_pdf', 'discrete_rnd', 'display', 'divergence',
        +            'dlmread', 'dlmwrite', 'dmperm', 'doc', 'dos', 'dot', 'dsearch',
        +            'dsearchn', 'dump_prefs', 'duplication_matrix', 'durbinlevinson',
        +            'edit', 'eig', 'eigs', 'ellipsoid', 'empirical_cdf', 'empirical_inv',
        +            'empirical_pdf', 'empirical_rnd', 'eomday', 'errorbar',
        +            'etime', 'etreeplot', 'example', 'expcdf', 'expinv', 'expm', 'exppdf',
        +            'exprnd', 'ezcontour', 'ezcontourf', 'ezmesh', 'ezmeshc', 'ezplot',
        +            'ezplot3', 'ezpolar', 'ezsurf', 'ezsurfc', 'f_test_regression',
        +            'fact', 'factor', 'factorial', 'fail', 'fcdf', 'feather', 'fft',
        +            'fft2', 'fftconv', 'fftfilt', 'fftn', 'fftshift', 'fftw', 'figure',
        +            'fileattrib', 'fileparts', 'fileread', 'fill', 'filter', 'filter2',
        +            'find', 'findall', 'findobj', 'findstr', 'finv', 'flag', 'flipdim',
        +            'fliplr', 'flipud', 'fminbnd', 'fminunc', 'fpdf', 'fplot',
        +            'fractdiff', 'freqz', 'freqz_plot', 'frnd', 'fsolve',
        +            'fullfile', 'fzero', 'gamcdf', 'gaminv', 'gammainc',
        +            'gampdf', 'gamrnd', 'gca', 'gcbf', 'gcbo', 'gcd', 'gcf',
        +            'gen_doc_cache', 'genvarname', 'geocdf', 'geoinv', 'geopdf', 'geornd',
        +            'get_first_help_sentence', 'getappdata', 'getfield', 'getgrent',
        +            'getpref', 'getpwent', 'getrusage', 'ginput', 'givens', 'glpk',
        +            'gls', 'gmap40', 'gmres', 'gnuplot_binary', 'gplot',
        +            'gradient', 'graphics_toolkit', 'gray', 'gray2ind', 'grid',
        +            'griddata', 'griddata3', 'griddatan', 'gtext', 'guidata',
        +            'guihandles', 'gunzip', 'gzip', 'hadamard', 'hamming', 'hankel',
        +            'hanning', 'help', 'hess', 'hex2dec', 'hex2num', 'hggroup', 'hidden',
        +            'hilb', 'hist', 'histc', 'hold', 'hot', 'hotelling_test',
        +            'hotelling_test_2', 'housh', 'hsv', 'hsv2rgb', 'hurst', 'hygecdf',
        +            'hygeinv', 'hygepdf', 'hygernd', 'idivide', 'ifftshift', 'image',
        +            'imagesc', 'imfinfo', 'imread', 'imshow', 'imwrite', 'ind2gray',
        +            'ind2rgb', 'index', 'info', 'inpolygon', 'inputname', 'int2str',
        +            'interp1', 'interp1q', 'interp2', 'interp3', 'interpft', 'interpn',
        +            'intersect', 'inv', 'invhilb', 'iqr',
        +            'is_leap_year', 'is_valid_file_id',
        +            'isa', 'isappdata', 'iscolumn', 'isdefinite', 'isdeployed', 'isdir',
        +            'isequal', 'isequalwithequalnans', 'isfigure', 'ishermitian',
        +            'ishghandle', 'ishold', 'isletter', 'ismac', 'ismember', 'isocolors',
        +            'isonormals', 'isosurface', 'ispc', 'ispref', 'isprime', 'isprop',
        +            'isrow', 'isscalar', 'issquare', 'isstrprop', 'issymmetric',
        +            'isunix', 'isvector', 'jet', 'kendall', 'kolmogorov_smirnov_cdf',
        +            'kolmogorov_smirnov_test', 'kolmogorov_smirnov_test_2', 'kron',
        +            'kruskal_wallis_test', 'krylov', 'kurtosis', 'laplace_cdf',
        +            'laplace_inv', 'laplace_pdf', 'laplace_rnd', 'lcm', 'legend',
        +            'legendre', 'license', 'lin2mu', 'line', 'linkprop', 'list_primes',
        +            'loadaudio', 'loadobj', 'logistic_cdf', 'logistic_inv',
        +            'logistic_pdf', 'logistic_regression', 'logistic_rnd', 'logit',
        +            'loglog', 'loglogerr', 'logm', 'logncdf', 'logninv', 'lognpdf',
        +            'lognrnd', 'logspace', 'lookfor', 'lookup', 'ls', 'ls_command',
        +            'lsode', 'lsqnonneg', 'lu', 'luinc', 'magic', 'mahalanobis', 'manova',
        +            'mat2str', 'matlabroot', 'matrix_type', 'max', 'mcnemar_test',
        +            'md5sum', 'mean', 'meansq', 'median', 'menu', 'mesh', 'meshc',
        +            'meshgrid', 'meshz', 'mex', 'mexext', 'mgorth', 'mkoctfile', 'mkpp',
        +            'mode', 'moment', 'movefile', 'mpoles', 'mu2lin', 'namelengthmax',
        +            'nargchk', 'narginchk', 'nargoutchk', 'nbincdf', 'nbininv', 'nbinpdf',
        +            'nbinrnd', 'nchoosek', 'ndgrid', 'newplot', 'news', 'nextpow2',
        +            'nonzeros', 'normcdf', 'normest', 'norminv', 'normpdf', 'normrnd',
        +            'now', 'nproc', 'nthargout', 'nthroot', 'ntsc2rgb', 'null', 'num2str',
        +            'ocean', 'ols', 'onenormest', 'optimget', 'optimset', 'orderfields',
        +            'orient', 'orth', 'pack', 'paren', 'pareto', 'parseparams', 'pascal',
        +            'patch', 'pathdef', 'pbaspect', 'pcg', 'pchip', 'pcolor', 'pcr',
        +            'peaks', 'periodogram', 'perl', 'perms', 'pie', 'pie3',
        +            'pink', 'pinv', 'pkg', 'planerot', 'playaudio', 'plot', 'plot3',
        +            'plotmatrix', 'plotyy', 'poisscdf', 'poissinv', 'poisspdf',
        +            'poissrnd', 'pol2cart', 'polar', 'poly', 'polyaffine', 'polyarea',
        +            'polyder', 'polyfit', 'polygcd', 'polyint', 'polyout',
        +            'polyreduce', 'polyval', 'polyvalm', 'postpad', 'pow2', 'powerset',
        +            'ppder', 'ppint', 'ppjumps', 'ppplot', 'ppval', 'pqpnonneg',
        +            'prctile', 'prepad', 'primes', 'print', 'printAllBuiltins',
        +            'print_usage', 'prism', 'probit', 'profexplore', 'profile',
        +            'profshow', 'prop_test_2', 'python', 'qp', 'qqplot', 'qr', 'quad',
        +            'quadcc', 'quadgk', 'quadl', 'quadv', 'quantile', 'quiver', 'quiver3',
        +            'qz', 'qzhess', 'rainbow', 'rand', 'randi', 'range', 'rank', 'ranks',
        +            'rat', 'rcond', 'reallog', 'realpow', 'realsqrt', 'record',
        +            'rectangle', 'rectint', 'recycle', 'refresh', 'refreshdata', 'regexp',
        +            'regexptranslate', 'repmat', 'residue', 'rgb2hsv',
        +            'rgb2ind', 'rgb2ntsc', 'ribbon', 'rindex', 'rmappdata', 'rmpref',
        +            'roots', 'rose', 'rosser', 'rot90', 'rotdim', 'rref', 'run',
        +            'run_count', 'run_test', 'rundemos', 'runlength', 'runtests',
        +            'saveas', 'saveaudio', 'saveobj', 'savepath', 'scatter',
        +            'scatter3', 'schur', 'sec', 'secd', 'sech', 'semicolon', 'semilogx',
        +            'semilogxerr', 'semilogy', 'semilogyerr', 'setappdata', 'setaudio',
        +            'setdiff', 'setfield', 'setpref', 'setxor', 'shading',
        +            'shg', 'shift', 'shiftdim', 'sign_test', 'sinc', 'sind',
        +            'sinetone', 'sinewave', 'skewness', 'slice', 'sombrero', 'sortrows',
        +            'spaugment', 'spconvert', 'spdiags', 'spearman', 'spectral_adf',
        +            'spectral_xdf', 'specular', 'speed', 'spencer', 'speye', 'spfun',
        +            'sph2cart', 'sphere', 'spinmap', 'spline', 'spones', 'spparms',
        +            'sprand', 'sprandn', 'sprandsym', 'spring', 'spstats', 'spy', 'sqp',
        +            'sqrtm', 'stairs', 'statistics', 'std', 'stdnormal_cdf',
        +            'stdnormal_inv', 'stdnormal_pdf', 'stdnormal_rnd', 'stem', 'stem3',
        +            'stft', 'str2double', 'str2num', 'strcat', 'strchr',
        +            'strfind', 'strjust', 'strmatch', 'strread', 'strsplit', 'strtok',
        +            'strtrim', 'strtrunc', 'structfun', 'sub2ind',
        +            'subplot', 'subsindex', 'subspace', 'substr', 'substruct', 'summer',
        +            'surf', 'surface', 'surfc', 'surfl', 'surfnorm', 'svd', 'svds',
        +            'swapbytes', 'syl', 'symbfact', 'symrcm',
        +            'symvar', 'synthesis', 't_test', 't_test_2', 't_test_regression',
        +            'table', 'tand', 'tar', 'tcdf', 'tempdir', 'tempname', 'test', 'text',
        +            'textread', 'textscan', 'time', 'tinv', 'title', 'toeplitz', 'tpdf',
        +            'trace', 'trapz', 'treelayout', 'treeplot', 'tril', 'trimesh',
        +            'triplequad', 'triplot', 'trisurf', 'trnd', 'tsearch', 'tsearchn',
        +            'type', 'typecast', 'u_test', 'uicontextmenu', 'uicontrol',
        +            'uigetdir', 'uigetfile', 'uimenu', 'uipanel', 'uipushtool',
        +            'uiputfile', 'uiresume', 'uitoggletool', 'uitoolbar', 'uiwait',
        +            'unidcdf', 'unidinv', 'unidpdf', 'unidrnd', 'unifcdf', 'unifinv',
        +            'unifpdf', 'unifrnd', 'unimplemented', 'union', 'unique', 'unix',
        +            'unmkpp', 'unpack', 'untabify', 'untar', 'unwrap', 'unzip',
        +            'urlwrite', 'usejava', 'validatestring', 'vander', 'var',
        +            'var_test', 'vech', 'ver', 'version', 'view', 'voronoi', 'voronoin',
        +            'waitbar', 'waitforbuttonpress', 'warning_ids', 'wavread', 'wavwrite',
        +            'wblcdf', 'wblinv', 'wblpdf', 'wblrnd', 'weekday',
        +            'welch_test', 'what', 'which',
        +            'white', 'whitebg', 'wienrnd', 'wilcoxon_test', 'wilkinson', 'winter',
        +            'xlabel', 'xlim', 'xor', 'ylabel', 'ylim', 'yulewalker', 'z_test',
        +            'z_test_2', 'zip', 'zlabel', 'zlim', 'zscore', 'airy', 'arrayfun',
        +            'besselh', 'besseli', 'besselk', 'bessely', 'bitpack', 'bitunpack',
        +            'blkmm', 'cellindexmat', 'cellslices', 'chol2inv', 'choldelete',
        +            'cholinsert', 'cholinv', 'cholshift', 'cholupdate', 'convn',
        +            'csymamd', 'cummax', 'cummin', 'daspk_options', 'dasrt_options',
        +            'dassl_options', 'endgrent', 'endpwent', 'etree', 'getgrgid',
        +            'getgrnam', 'getpwnam', 'getpwuid', 'gmtime', 'gui_mode', 'ifft',
        +            'ifft2', 'ifftn', 'ind2sub', 'inverse', 'localtime', 'lsode_options',
        +            'luupdate', 'mat2cell', 'min', 'mktime', 'mouse_wheel_zoom',
        +            'num2cell', 'num2hex', 'qrdelete', 'qrinsert', 'qrshift', 'qrupdate',
        +            'quad_options', 'rande', 'randg', 'randn', 'randp', 'randperm',
        +            'regexpi', 'regexprep', 'rsf2csf', 'setgrent', 'setpwent', 'sprank',
        +            'strftime', 'strptime', 'strrep', 'svd_driver', 'symamd', 'triu',
        +            'urlread'
        +            ),
        +        // Private builtin
        +        7 => array(
        +            '__accumarray_max__', '__accumarray_min__', '__accumarray_sum__',
        +            '__accumdim_sum__', '__builtins__', '__calc_dimensions__',
        +            '__current_scope__', '__display_tokens__', '__dump_symtab_info__',
        +            '__end__', '__get__', '__go_axes__', '__go_axes_init__',
        +            '__go_delete__', '__go_execute_callback__', '__go_figure__',
        +            '__go_figure_handles__', '__go_handles__', '__go_hggroup__',
        +            '__go_image__', '__go_line__', '__go_patch__', '__go_surface__',
        +            '__go_text__', '__go_uicontextmenu__', '__go_uicontrol__',
        +            '__go_uimenu__', '__go_uipanel__', '__go_uipushtool__',
        +            '__go_uitoggletool__', '__go_uitoolbar__', '__gud_mode__',
        +            '__image_pixel_size__', '__is_handle_visible__', '__isa_parent__',
        +            '__keywords__', '__lexer_debug_flag__', '__list_functions__',
        +            '__operators__', '__parent_classes__', '__parser_debug_flag__',
        +            '__pathorig__', '__profiler_data__', '__profiler_enable__',
        +            '__profiler_reset__', '__request_drawnow__', '__sort_rows_idx__',
        +            '__token_count__', '__varval__', '__version_info__', '__which__'
        +            ),
        +        // Private Octave functions
        +        8 => array(
        +            '__all_opts__', '__contourc__', '__delaunayn__', '__dispatch__',
        +            '__dsearchn__', '__finish__', '__fltk_uigetfile__',
        +            '__glpk__', '__gnuplot_drawnow__', '__init_fltk__',
        +            '__init_gnuplot__', '__lin_interpn__', '__magick_read__',
        +            '__makeinfo__', '__pchip_deriv__', '__plt_get_axis_arg__', '__qp__',
        +            '__voronoi__', '__fltk_maxtime__', '__fltk_redraw__', '__ftp__',
        +            '__ftp_ascii__', '__ftp_binary__', '__ftp_close__', '__ftp_cwd__',
        +            '__ftp_delete__', '__ftp_dir__', '__ftp_mget__', '__ftp_mkdir__',
        +            '__ftp_mode__', '__ftp_mput__', '__ftp_pwd__', '__ftp_rename__',
        +            '__ftp_rmdir__', '__magick_finfo__', '__magick_format_list__',
        +            '__magick_write__'
        +            ),
        +        // Builtin Global Variables
        +        9 => array(
        +            'EDITOR', 'EXEC_PATH', 'F_DUPFD', 'F_GETFD', 'F_GETFL', 'F_SETFD',
        +            'F_SETFL', 'IMAGE_PATH', 'OCTAVE_HOME',
        +            'OCTAVE_VERSION', 'O_APPEND', 'O_ASYNC', 'O_CREAT', 'O_EXCL',
        +            'O_NONBLOCK', 'O_RDONLY', 'O_RDWR', 'O_SYNC', 'O_TRUNC', 'O_WRONLY',
        +            'PAGER', 'PAGER_FLAGS', 'PS1', 'PS2', 'PS4', 'SEEK_CUR', 'SEEK_END',
        +            'SEEK_SET', 'SIG', 'S_ISBLK', 'S_ISCHR', 'S_ISDIR', 'S_ISFIFO',
        +            'S_ISLNK', 'S_ISREG', 'S_ISSOCK', 'WCONTINUE', 'WCOREDUMP',
        +            'WEXITSTATUS', 'WIFCONTINUED', 'WIFEXITED', 'WIFSIGNALED',
        +            'WIFSTOPPED', 'WNOHANG', 'WSTOPSIG', 'WTERMSIG', 'WUNTRACED'
        +            ),
        +        // Constant functions
        +        10 => array (
        +            'e', 'eps', 'inf', 'Inf', 'nan', 'NaN', 'NA', 'pi', 'i', 'I', 'j',
        +            'J', 'true', 'false'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        // Comparison & logical
        +        0 => array(
        +            '!', '!=', '&', '&&','|', '||', '~', '~=',
        +            '<', '<=', '==', '>', '>='
        +            ),
        +        // Aritmethical
        +        1 => array(
        +            '*', '**', '+', '++', '-', '--', '/', "\\","'"
        +            ),
        +        // Elementwise arithmetical
        +        2 => array(
        +            '.*', '.**','./', '.^', '^',".\\",".'"
        +            ),
        +        // Arithmetical & assignation
        +        3 => array(
        +            '*=','+=','-=','/=','\=','**=','^=',
        +            '.*=','.+=','.-=','./=','.\=','.**=','.^=','='
        +            ),
        +        // Indexer
        +        4 => array(
        +            ':'
        +            ),
        +        // Delimiters
        +        5 => array(
        +            ',', '...', ';'
        +            ),
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => true,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true,
        +        8 => true,
        +        9 => true,
        +        10 => true,
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => 'http://octave.sourceforge.net/octave/function/{FNAME}.html',
        +        5 => 'http://octave.sourceforge.net/octave/function/{FNAME}.html',
        +        6 => 'http://octave.sourceforge.net/octave/function/{FNAME}.html',
        +        7 => '',
        +        8 => '',
        +        9 => 'http://octave.sourceforge.net/octave/function/{FNAME}.html',
        +        10 => 'http://octave.sourceforge.net/octave/function/{FNAME}.html',
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.',
        +        ),
        +    'REGEXPS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(),
        +    'STYLES' => array(
        +        'COMMENTS' => array(
        +            1 => 'color: #0000FF; font-style: italic;', // comments with #
        +            2 => 'color: #0000FF; font-style: italic;', // comments with %
        +            3 => 'color: #FF00FF; font-style: italic;', // single quote strings
        +            4 => 'color: #FF00FF; font-style: italic;', // double quote strings
        +            5 => 'color: #0000FF; font-style: italic;', // block comments
        +            6 => 'color: #996600; font-weight:bold;',   // packaging system
        +            7 => 'color: #006600; font-weight:bold;',   // function handles
        +            'MULTI' => 'color: #0000FF; font-style: italic;',
        +            ),
        +        'KEYWORDS' => array(
        +            1 => 'color: #990000; font-weight:bold;',   // Reserved words
        +            2 => 'color: #2E8B57;',                     // Storage type
        +            3 => 'color: #0000FF; font-weight:bold;',   // Internal variable
        +            4 => 'color: #2E8B57; font-weight:bold;',   // Data types
        +            5 => 'color: #008A8C; font-weight:bold;',   // Built-in
        +            6 => 'color: #008A8C;',                     // Octave functions
        +            9 => 'color: #000000; font-weight:bold;',   // Builtin Global Variables
        +            10 => 'color: #008A8C; font-weight:bold;',  // Constant functions
        +            ),
        +        'ESCAPE_CHAR' => array(),
        +        'BRACKETS' => array(
        +            0 => 'color: #080;',
        +            ),
        +        'STRINGS' => array(
        +            // strings were specified on the COMMENT_REGEXP section
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;',
        +            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
        +            ),
        +        'METHODS' => array(),
        +        'SYMBOLS' => array(
        +            0 => 'color: #FF9696; font-weight:bold;',   // Comparison & logical
        +            1 => 'color: #CC0000; font-weight:bold;',   // Aritmethical
        +            2 => 'color: #993333; font-weight:bold;',   // Elementwise arithmetical
        +            3 => 'color: #FF0000; font-weight:bold;',   // Arithmetical & assignation
        +            4 => 'color: #33F;',                        // Indexer
        +            5 => 'color: #33F;',                        // Delimiters
        +            ),
        +        'REGEXPS' => array(),
        +        'SCRIPT' => array(),
        +        )
        +);
        diff --git a/includes/geshi/oobas.php b/includes/geshi/oobas.php
        new file mode 100644
        index 0000000..4a314df
        --- /dev/null
        +++ b/includes/geshi/oobas.php
        @@ -0,0 +1,133 @@
        + 'OpenOffice.org Basic',
        +    'COMMENT_SINGLE' => array(1 => "'"),
        +    'COMMENT_MULTI' => array(),
        +    //Single-Line comments using REM keyword
        +    'COMMENT_REGEXP' => array(2 => '/\bREM.*?$/i'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'dim','private','public','global','as','if','redim','true','set','byval',
        +            'false','bool','double','integer','long','object','single','variant',
        +            'msgbox','print','inputbox','green','blue','red','qbcolor',
        +            'rgb','open','close','reset','freefile','get','input','line',
        +            'put','write','loc','seek','eof','lof','chdir','chdrive',
        +            'curdir','dir','fileattr','filecopy','filedatetime','fileexists',
        +            'filelen','getattr','kill','mkdir','name','rmdir','setattr',
        +            'dateserial','datevalue','day','month','weekday','year','cdatetoiso',
        +            'cdatefromiso','hour','minute','second','timeserial','timevalue',
        +            'date','now','time','timer','erl','err','error','on','goto','resume',
        +            'and','eqv','imp','not','or','xor','mod','atn','cos','sin','tan','log',
        +            'exp','rnd','randomize','sqr','fix','int','abs','sgn','hex','oct',
        +            'it','then','else','select','case','iif','do','loop','for','next','to',
        +            'while','wend','gosub','return','call','choose','declare',
        +            'end','exit','freelibrary','function','rem','stop','sub','switch','with',
        +            'cbool','cdate','cdbl','cint','clng','const','csng','cstr','defbool',
        +            'defdate','defdbl','defint','deflng','asc','chr','str','val','cbyte',
        +            'space','string','format','lcase','left','lset','ltrim','mid','right',
        +            'rset','rtrim','trim','ucase','split','join','converttourl','convertfromurl',
        +            'instr','len','strcomp','beep','shell','wait','getsystemticks','environ',
        +            'getsolarversion','getguitype','twipsperpixelx','twipsperpixely',
        +            'createunostruct','createunoservice','getprocessservicemanager',
        +            'createunodialog','createunolistener','createunovalue','thiscomponent',
        +            'globalscope'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '='
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080;',
        +            2 => 'color: #808080;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/oorexx.php b/includes/geshi/oorexx.php
        new file mode 100644
        index 0000000..7eda35e
        --- /dev/null
        +++ b/includes/geshi/oorexx.php
        @@ -0,0 +1,169 @@
        + 'ooRexx',
        +    'COMMENT_SINGLE' => array(1 => '--'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'address', 'arg', 'attribute', 'call', 'constant', 'do',
        +            'drop', 'exit', 'if',
        +            'interpret', 'iterate', 'leave', 'loop', 'nop', 'numeric',
        +            'parse', 'procedure', 'pull', 'push', 'queue',
        +            'raise', 'reply', 'return', 'say', 'select', 'signal',
        +            'use'
        +            ),
        +        2 => array(
        +            'abstract', 'any', 'arguments', 'array', 'by',
        +            'continue', 'digits', 'engineering', 'error',
        +            'expose', 'external', 'failure', 'for', 'forever',
        +            'forward', 'get', 'guard', 'guarded', 'halt',
        +            'inherit', 'library', 'lostdigits', 'message',
        +            'metaclass', 'mixinclass', 'name', 'nomethod', 'nostring',
        +            'notready', 'novalue', 'off', 'on', 'options', 'over',
        +            'private', 'protected', 'public', 'scientific', 'set',
        +            'source', 'subclass', 'syntax', 'to', 'unguarded',
        +            'unprotected', 'until', 'user',
        +            'version', 'while', 'with'
        +            ),
        +        3 => array(
        +            'else', 'end', 'otherwise', 'then', 'when'
        +            ),
        +        4 => array(
        +            'rc', 'result', 'self', 'sigl', 'super'
        +            ),
        +        5 => array(
        +            '::attribute', '::class', '::constant', '::method',
        +            '::optins', '::requires', '::routine'
        +            ),
        +        6 => array(
        +            'abbrev', 'abs', 'beep', 'bitand', 'bitor',
        +            'bitxor', 'b2x', 'center', 'centre', 'changestr', 'charin',
        +            'charout', 'chars', 'compare', 'condition', 'copies',
        +            'countstr', 'c2d', 'c2x', 'datatype', 'date', 'delstr',
        +            'delword', 'directory', 'd2c', 'd2x', 'endlocal',
        +            'errortext', 'filespec', 'form', 'format', 'fuzz', 'insert',
        +            'lastpos', 'left', 'length', 'linein', 'lineout', 'lines',
        +            'lower', 'max', 'min', 'overlay', 'pos', 'qualify', 'queued',
        +            'random', 'reverse', 'right', 'rxfuncadd', 'rxfuncdrop',
        +            'rxfuncquery', 'rxqueue', 'setlocal', 'sign', 'sourceline',
        +            'space', 'stream', 'strip', 'substr', 'subword', 'symbol',
        +            'time', 'trace', 'translate', 'trunc', 'upper', 'userid',
        +            'value', 'var', 'verify', 'word', 'wordindex', 'wordlength',
        +            'wordpos', 'words', 'xrange', 'x2b', 'x2c', 'x2d'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '<', '>', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':',
        +        '<', '>'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => true,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        6 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #ff0000; font-weight: bold;',
        +            3 => 'color: #00ff00; font-weight: bold;',
        +            4 => 'color: #0000ff; font-weight: bold;',
        +            5 => 'color: #880088; font-weight: bold;',
        +            6 => 'color: #888800; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666;',
        +            'MULTI' => 'color: #808080;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #202020;',
        +            2 => 'color: #202020;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/oracle11.php b/includes/geshi/oracle11.php
        new file mode 100644
        index 0000000..8681236
        --- /dev/null
        +++ b/includes/geshi/oracle11.php
        @@ -0,0 +1,612 @@
        + 'Oracle 11 SQL',
        +    'COMMENT_SINGLE' => array(1 => '--'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
        +    'QUOTEMARKS' => array("'", '"', '`'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +//Put your package names here - e.g. select distinct ''''|| lower(name) || ''',' from user_source;
        +//        6 => array(
        +//            ),
        +
        +//Put your table names here - e.g. select distinct ''''|| lower(table_name) || ''',' from user_tables;
        +//        5 => array(
        +//            ),
        +
        +//Put your view names here - e.g. select distinct ''''|| lower(view_name) || ''',' from user_views;
        +//        4 => array(
        +//            ),
        +
        +//Put your table field names here - e.g. select distinct ''''|| lower(column_name) || ''',' from user_tab_columns;
        +//        3 => array(
        +//            ),
        +
        +        //Put ORACLE reserved keywords here (11i).  I like mine uppercase.
        +        1 => array(
        +            'ABS',
        +            'ACCESS',
        +            'ACOS',
        +            'ADD',
        +            'ADD_MONTHS',
        +            'ALL',
        +            'ALTER',
        +            'ANALYZE',
        +            'AND',
        +            'ANY',
        +            'APPENDCHILDXML',
        +            'ARRAY',
        +            'AS',
        +            'ASC',
        +            'ASCII',
        +            'ASCIISTR',
        +            'ASIN',
        +            'ASSOCIATE',
        +            'AT',
        +            'ATAN',
        +            'ATAN2',
        +            'AUDIT',
        +            'AUTHID',
        +            'AVG',
        +            'BEGIN',
        +            'BETWEEN',
        +            'BFILENAME',
        +            'BIN_TO_NUM',
        +            'BINARY_INTEGER',
        +            'BITAND',
        +            'BODY',
        +            'BOOLEAN',
        +            'BULK',
        +            'BY',
        +            'CALL',
        +            'CARDINALITY',
        +            'CASCADE',
        +            'CASE',
        +            'CAST',
        +            'CEIL',
        +            'CHAR',
        +            'CHAR_BASE',
        +            'CHARTOROWID',
        +            'CHECK',
        +            'CHR',
        +            'CLOSE',
        +            'CLUSTER',
        +            'CLUSTER_ID',
        +            'CLUSTER_PROBABILITY',
        +            'CLUSTER_SET',
        +            'COALESCE',
        +            'COLLECT',
        +            'COLUMN',
        +            'COMMENT',
        +            'COMMIT',
        +            'COMPOSE',
        +            'COMPRESS',
        +            'CONCAT',
        +            'CONNECT',
        +            'CONSTANT',
        +            'CONSTRAINT',
        +            'CONSTRAINTS',
        +            'CONTEXT',
        +            'CONTROLFILE',
        +            'CONVERT',
        +            'CORR',
        +            'CORR_K',
        +            'CORR_S',
        +            'COS',
        +            'COSH',
        +            'COST',
        +            'COUNT',
        +            'COVAR_POP',
        +            'COVAR_SAMP',
        +            'CREATE',
        +            'CUBE_TABLE',
        +            'CUME_DIST',
        +            'CURRENT',
        +            'CURRENT_DATE',
        +            'CURRENT_TIMESTAMP',
        +            'CURRVAL',
        +            'CURSOR',
        +            'CV',
        +            'DATABASE',
        +            'DATAOBJ_TO_PARTITION',
        +            'DATE',
        +            'DAY',
        +            'DBTIMEZONE',
        +            'DECIMAL',
        +            'DECLARE',
        +            'DECODE',
        +            'DECOMPOSE',
        +            'DEFAULT',
        +            'DELETE',
        +            'DELETEXML',
        +            'DENSE_RANK',
        +            'DEPTH',
        +            'DEREF',
        +            'DESC',
        +            'DIMENSION',
        +            'DIRECTORY',
        +            'DISASSOCIATE',
        +            'DISTINCT',
        +            'DO',
        +            'DROP',
        +            'DUMP',
        +            'ELSE',
        +            'ELSIF',
        +            'EMPTY_BLOB',
        +            'EMPTY_CLOB',
        +            'END',
        +            'EXCEPTION',
        +            'EXCLUSIVE',
        +            'EXEC',
        +            'EXECUTE',
        +            'EXISTS',
        +            'EXISTSNODE',
        +            'EXIT',
        +            'EXP',
        +            'EXPLAIN',
        +            'EXTENDS',
        +            'EXTRACT',
        +            'EXTRACTVALUE',
        +            'FALSE',
        +            'FEATURE_ID',
        +            'FEATURE_SET',
        +            'FEATURE_VALUE',
        +            'FETCH',
        +            'FILE',
        +            'FIRST',
        +            'FIRST_VALUE',
        +            'FLOAT',
        +            'FLOOR',
        +            'FOR',
        +            'FORALL',
        +            'FROM',
        +            'FROM_TZ',
        +            'FUNCTION',
        +            'GOTO',
        +            'GRANT',
        +            'GREATEST',
        +            'GROUP',
        +            'GROUP_ID',
        +            'GROUPING',
        +            'GROUPING_ID',
        +            'HAVING',
        +            'HEAP',
        +            'HEXTORAW',
        +            'HOUR',
        +            'IDENTIFIED',
        +            'IF',
        +            'IMMEDIATE',
        +            'IN',
        +            'INCREMENT',
        +            'INDEX',
        +            'INDEXTYPE',
        +            'INDICATOR',
        +            'INITCAP',
        +            'INITIAL',
        +            'INSERT',
        +            'INSERTCHILDXML',
        +            'INSERTXMLBEFORE',
        +            'INSTR',
        +            'INSTRB',
        +            'INTEGER',
        +            'INTERFACE',
        +            'INTERSECT',
        +            'INTERVAL',
        +            'INTO',
        +            'IS',
        +            'ISOLATION',
        +            'ITERATION_NUMBER',
        +            'JAVA',
        +            'KEY',
        +            'LAG',
        +            'LAST',
        +            'LAST_DAY',
        +            'LAST_VALUE',
        +            'LEAD',
        +            'LEAST',
        +            'LENGTH',
        +            'LENGTHB',
        +            'LEVEL',
        +            'LIBRARY',
        +            'LIKE',
        +            'LIMITED',
        +            'LINK',
        +            'LN',
        +            'LNNVL',
        +            'LOCALTIMESTAMP',
        +            'LOCK',
        +            'LOG',
        +            'LONG',
        +            'LOOP',
        +            'LOWER',
        +            'LPAD',
        +            'LTRIM',
        +            'MAKE_REF',
        +            'MATERIALIZED',
        +            'MAX',
        +            'MAXEXTENTS',
        +            'MEDIAN',
        +            'MIN',
        +            'MINUS',
        +            'MINUTE',
        +            'MLSLABEL',
        +            'MOD',
        +            'MODE',
        +            'MODIFY',
        +            'MONTH',
        +            'MONTHS_BETWEEN',
        +            'NANVL',
        +            'NATURAL',
        +            'NATURALN',
        +            'NCHR',
        +            'NEW',
        +            'NEW_TIME',
        +            'NEXT_DAY',
        +            'NEXTVAL',
        +            'NLS_CHARSET_DECL_LEN',
        +            'NLS_CHARSET_ID',
        +            'NLS_CHARSET_NAME',
        +            'NLS_INITCAP',
        +            'NLS_LOWER',
        +            'NLS_UPPER',
        +            'NLSSORT',
        +            'NOAUDIT',
        +            'NOCOMPRESS',
        +            'NOCOPY',
        +            'NOT',
        +            'NOWAIT',
        +            'NTILE',
        +            'NULL',
        +            'NULLIF',
        +            'NUMBER',
        +            'NUMBER_BASE',
        +            'NUMTODSINTERVAL',
        +            'NUMTOYMINTERVAL',
        +            'NVL',
        +            'NVL2',
        +            'OCIROWID',
        +            'OF',
        +            'OFFLINE',
        +            'ON',
        +            'ONLINE',
        +            'OPAQUE',
        +            'OPEN',
        +            'OPERATOR',
        +            'OPTION',
        +            'OR',
        +            'ORA_HASH',
        +            'ORDER',
        +            'ORGANIZATION',
        +            'OTHERS',
        +            'OUT',
        +            'OUTLINE',
        +            'PACKAGE',
        +            'PARTITION',
        +            'PATH',
        +            'PCTFREE',
        +            'PERCENT_RANK',
        +            'PERCENTILE_CONT',
        +            'PERCENTILE_DISC',
        +            'PLAN',
        +            'PLS_INTEGER',
        +            'POSITIVE',
        +            'POSITIVEN',
        +            'POWER',
        +            'POWERMULTISET',
        +            'POWERMULTISET_BY_CARDINALITY',
        +            'PRAGMA',
        +            'PREDICTION',
        +            'PREDICTION_BOUNDS',
        +            'PREDICTION_COST',
        +            'PREDICTION_DETAILS',
        +            'PREDICTION_PROBABILITY',
        +            'PREDICTION_SET',
        +            'PRESENTNNV',
        +            'PRESENTV',
        +            'PREVIOUS',
        +            'PRIMARY',
        +            'PRIOR',
        +            'PRIVATE',
        +            'PRIVILEGES',
        +            'PROCEDURE',
        +            'PROFILE',
        +            'PUBLIC',
        +            'RAISE',
        +            'RANGE',
        +            'RANK',
        +            'RATIO_TO_REPORT',
        +            'RAW',
        +            'RAWTOHEX',
        +            'RAWTONHEX',
        +            'REAL',
        +            'RECORD',
        +            'REF',
        +            'REFTOHEX',
        +            'REGEXP_COUNT',
        +            'REGEXP_INSTR',
        +            'REGEXP_REPLACE',
        +            'REGEXP_SUBSTR',
        +            'REGR_AVGX',
        +            'REGR_AVGY',
        +            'REGR_COUNT',
        +            'REGR_INTERCEPT',
        +            'REGR_R2',
        +            'REGR_SLOPE',
        +            'REGR_SXX',
        +            'REGR_SXY',
        +            'REGR_SYY',
        +            'RELEASE',
        +            'REMAINDER',
        +            'RENAME',
        +            'REPLACE',
        +            'RESOURCE',
        +            'RETURN',
        +            'RETURNING',
        +            'REVERSE',
        +            'REVOKE',
        +            'ROLE',
        +            'ROLLBACK',
        +            'ROUND',
        +            'ROW',
        +            'ROW_NUMBER',
        +            'ROWID',
        +            'ROWIDTOCHAR',
        +            'ROWIDTONCHAR',
        +            'ROWNUM',
        +            'ROWS',
        +            'ROWTYPE',
        +            'RPAD',
        +            'RTRIM',
        +            'SAVEPOINT',
        +            'SCHEMA',
        +            'SCN_TO_TIMESTAMP',
        +            'SECOND',
        +            'SEGMENT',
        +            'SELECT',
        +            'SEPERATE',
        +            'SEQUENCE',
        +            'SESSION',
        +            'SESSIONTIMEZONE',
        +            'SET',
        +            'SHARE',
        +            'SIGN',
        +            'SIN',
        +            'SINH',
        +            'SIZE',
        +            'SMALLINT',
        +            'SOUNDEX',
        +            'SPACE',
        +            'SQL',
        +            'SQLCODE',
        +            'SQLERRM',
        +            'SQRT',
        +            'START',
        +            'STATISTICS',
        +            'STATS_BINOMIAL_TEST',
        +            'STATS_CROSSTAB',
        +            'STATS_F_TEST',
        +            'STATS_KS_TEST',
        +            'STATS_MODE',
        +            'STATS_MW_TEST',
        +            'STATS_ONE_WAY_ANOVA',
        +            'STATS_T_TEST_INDEP',
        +            'STATS_T_TEST_INDEPU',
        +            'STATS_T_TEST_ONE',
        +            'STATS_T_TEST_PAIRED',
        +            'STATS_WSR_TEST',
        +            'STDDEV',
        +            'STDDEV_POP',
        +            'STDDEV_SAMP',
        +            'STOP',
        +            'SUBSTR',
        +            'SUBSTRB',
        +            'SUBTYPE',
        +            'SUCCESSFUL',
        +            'SUM',
        +            'SYNONYM',
        +            'SYS_CONNECT_BY_PATH',
        +            'SYS_CONTEXT',
        +            'SYS_DBURIGEN',
        +            'SYS_EXTRACT_UTC',
        +            'SYS_GUID',
        +            'SYS_TYPEID',
        +            'SYS_XMLAGG',
        +            'SYS_XMLGEN',
        +            'SYSDATE',
        +            'SYSTEM',
        +            'SYSTIMESTAMP',
        +            'TABLE',
        +            'TABLESPACE',
        +            'TAN',
        +            'TANH',
        +            'TEMPORARY',
        +            'THEN',
        +            'TIME',
        +            'TIMESTAMP',
        +            'TIMESTAMP_TO_SCN',
        +            'TIMEZONE_ABBR',
        +            'TIMEZONE_HOUR',
        +            'TIMEZONE_MINUTE',
        +            'TIMEZONE_REGION',
        +            'TIMING',
        +            'TO',
        +            'TO_BINARY_DOUBLE',
        +            'TO_BINARY_FLOAT',
        +            'TO_CHAR',
        +            'TO_CLOB',
        +            'TO_DATE',
        +            'TO_DSINTERVAL',
        +            'TO_LOB',
        +            'TO_MULTI_BYTE',
        +            'TO_NCHAR',
        +            'TO_NCLOB',
        +            'TO_NUMBER',
        +            'TO_SINGLE_BYTE',
        +            'TO_TIMESTAMP',
        +            'TO_TIMESTAMP_TZ',
        +            'TO_YMINTERVAL',
        +            'TRANSACTION',
        +            'TRANSLATE',
        +            'TREAT',
        +            'TRIGGER',
        +            'TRIM',
        +            'TRUE',
        +            'TRUNC',
        +            'TRUNCATE',
        +            'TYPE',
        +            'TZ_OFFSET',
        +            'UI',
        +            'UID',
        +            'UNION',
        +            'UNIQUE',
        +            'UNISTR',
        +            'UPDATE',
        +            'UPDATEXML',
        +            'UPPER',
        +            'USE',
        +            'USER',
        +            'USERENV',
        +            'USING',
        +            'VALIDATE',
        +            'VALUE',
        +            'VALUES',
        +            'VAR_POP',
        +            'VAR_SAMP',
        +            'VARCHAR',
        +            'VARCHAR2',
        +            'VARIANCE',
        +            'VIEW',
        +            'VSIZE',
        +            'WHEN',
        +            'WHENEVER',
        +            'WHERE',
        +            'WHILE',
        +            'WIDTH_BUCKET',
        +            'WITH',
        +            'WORK',
        +            'WRITE',
        +            'XMLAGG',
        +            'XMLCAST',
        +            'XMLCDATA',
        +            'XMLCOLATTVAL',
        +            'XMLCOMMENT',
        +            'XMLCONCAT',
        +            'XMLDIFF',
        +            'XMLELEMENT',
        +            'XMLEXISTS',
        +            'XMLFOREST',
        +            'XMLPARSE',
        +            'XMLPATCH',
        +            'XMLPI',
        +            'XMLQUERY',
        +            'XMLROOT',
        +            'XMLSEQUENCE',
        +            'XMLSERIALIZE',
        +            'XMLTABLE',
        +            'XMLTRANSFORM',
        +            'YEAR',
        +            'ZONE'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '=', '<', '>', '|', '+', '-', '*', '/', ','
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +//        3 => false,
        +//        4 => false,
        +//        5 => false,
        +//        6 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #993333; font-weight: bold; text-transform: uppercase;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #ff0000;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +//        3 => '',
        +//        4 => '',
        +//        5 => '',
        +//        6 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/oracle8.php b/includes/geshi/oracle8.php
        new file mode 100644
        index 0000000..acf6d99
        --- /dev/null
        +++ b/includes/geshi/oracle8.php
        @@ -0,0 +1,494 @@
        + 'Oracle 8 SQL',
        +    'COMMENT_SINGLE' => array(1 => '--'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
        +    'QUOTEMARKS' => array("'", '"', '`'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +//Put your package names here - e.g. select distinct ''''|| lower(name) || ''',' from user_source;
        +//        6 => array(
        +//            ),
        +
        +//Put your table names here - e.g. select distinct ''''|| lower(table_name) || ''',' from user_tables;
        +//        5 => array(
        +//            ),
        +
        +//Put your view names here - e.g. select distinct ''''|| lower(view_name) || ''',' from user_views;
        +//        4 => array(
        +//            ),
        +
        +//Put your table field names here - e.g. select distinct ''''|| lower(column_name) || ''',' from user_tab_columns;
        +//        3 => array(
        +//            ),
        +
        +//Put ORACLE reserved keywords here (8.1.7).  I like mine uppercase.
        +        1 => array(
        +            'ABS',
        +            'ACCESS',
        +            'ACOS',
        +            'ADD',
        +            'ADD_MONTHS',
        +            'ALL',
        +            'ALTER',
        +            'ANALYZE',
        +            'AND',
        +            'ANY',
        +            'ARRAY',
        +            'AS',
        +            'ASC',
        +            'ASCII',
        +            'ASIN',
        +            'ASSOCIATE',
        +            'AT',
        +            'ATAN',
        +            'ATAN2',
        +            'AUDIT',
        +            'AUTHID',
        +            'AVG',
        +            'BEGIN',
        +            'BETWEEN',
        +            'BFILENAME',
        +            'BINARY_INTEGER',
        +            'BITAND',
        +            'BODY',
        +            'BOOLEAN',
        +            'BULK',
        +            'BY',
        +            'CALL',
        +            'CASCADE',
        +            'CASE',
        +            'CEIL',
        +            'CHAR',
        +            'CHAR_BASE',
        +            'CHARTOROWID',
        +            'CHECK',
        +            'CHR',
        +            'CLOSE',
        +            'CLUSTER',
        +            'COALESCE',
        +            'COLLECT',
        +            'COLUMN',
        +            'COMMENT',
        +            'COMMIT',
        +            'COMPRESS',
        +            'CONCAT',
        +            'CONNECT',
        +            'CONSTANT',
        +            'CONSTRAINT',
        +            'CONSTRAINTS',
        +            'CONTEXT',
        +            'CONTROLFILE',
        +            'CONVERT',
        +            'CORR',
        +            'COS',
        +            'COSH',
        +            'COST',
        +            'COUNT',
        +            'COVAR_POP',
        +            'COVAR_SAMP',
        +            'CREATE',
        +            'CUME_DIST',
        +            'CURRENT',
        +            'CURRVAL',
        +            'CURSOR',
        +            'DATABASE',
        +            'DATE',
        +            'DAY',
        +            'DECIMAL',
        +            'DECLARE',
        +            'DECODE',
        +            'DEFAULT',
        +            'DELETE',
        +            'DENSE_RANK',
        +            'DEREF',
        +            'DESC',
        +            'DIMENSION',
        +            'DIRECTORY',
        +            'DISASSOCIATE',
        +            'DISTINCT',
        +            'DO',
        +            'DROP',
        +            'DUMP',
        +            'ELSE',
        +            'ELSIF',
        +            'EMPTY_BLOB',
        +            'EMPTY_CLOB',
        +            'END',
        +            'EXCEPTION',
        +            'EXCLUSIVE',
        +            'EXEC',
        +            'EXECUTE',
        +            'EXISTS',
        +            'EXIT',
        +            'EXP',
        +            'EXPLAIN',
        +            'EXTENDS',
        +            'EXTRACT',
        +            'FALSE',
        +            'FETCH',
        +            'FILE',
        +            'FIRST_VALUE',
        +            'FLOAT',
        +            'FLOOR',
        +            'FOR',
        +            'FORALL',
        +            'FROM',
        +            'FUNCTION',
        +            'GOTO',
        +            'GRANT',
        +            'GREATEST',
        +            'GROUP',
        +            'GROUPING',
        +            'HAVING',
        +            'HEAP',
        +            'HEXTORAW',
        +            'HOUR',
        +            'IDENTIFIED',
        +            'IF',
        +            'IMMEDIATE',
        +            'IN',
        +            'INCREMENT',
        +            'INDEX',
        +            'INDEXTYPE',
        +            'INDICATOR',
        +            'INITCAP',
        +            'INITIAL',
        +            'INSERT',
        +            'INSTR',
        +            'INSTRB',
        +            'INTEGER',
        +            'INTERFACE',
        +            'INTERSECT',
        +            'INTERVAL',
        +            'INTO',
        +            'IS',
        +            'ISOLATION',
        +            'JAVA',
        +            'KEY',
        +            'LAG',
        +            'LAST_DAY',
        +            'LAST_VALUE',
        +            'LEAD',
        +            'LEAST',
        +            'LENGTH',
        +            'LENGTHB',
        +            'LEVEL',
        +            'LIBRARY',
        +            'LIKE',
        +            'LIMITED',
        +            'LINK',
        +            'LN',
        +            'LOCK',
        +            'LOG',
        +            'LONG',
        +            'LOOP',
        +            'LOWER',
        +            'LPAD',
        +            'LTRIM',
        +            'MAKE_REF',
        +            'MATERIALIZED',
        +            'MAX',
        +            'MAXEXTENTS',
        +            'MIN',
        +            'MINUS',
        +            'MINUTE',
        +            'MLSLABEL',
        +            'MOD',
        +            'MODE',
        +            'MODIFY',
        +            'MONTH',
        +            'MONTHS_BETWEEN',
        +            'NATURAL',
        +            'NATURALN',
        +            'NEW',
        +            'NEW_TIME',
        +            'NEXT_DAY',
        +            'NEXTVAL',
        +            'NLS_CHARSET_DECL_LEN',
        +            'NLS_CHARSET_ID',
        +            'NLS_CHARSET_NAME',
        +            'NLS_INITCAP',
        +            'NLS_LOWER',
        +            'NLS_UPPER',
        +            'NLSSORT',
        +            'NOAUDIT',
        +            'NOCOMPRESS',
        +            'NOCOPY',
        +            'NOT',
        +            'NOWAIT',
        +            'NTILE',
        +            'NULL',
        +            'NULLIF',
        +            'NUMBER',
        +            'NUMBER_BASE',
        +            'NUMTODSINTERVAL',
        +            'NUMTOYMINTERVAL',
        +            'NVL',
        +            'NVL2',
        +            'OCIROWID',
        +            'OF',
        +            'OFFLINE',
        +            'ON',
        +            'ONLINE',
        +            'OPAQUE',
        +            'OPEN',
        +            'OPERATOR',
        +            'OPTION',
        +            'OR',
        +            'ORDER',
        +            'ORGANIZATION',
        +            'OTHERS',
        +            'OUT',
        +            'OUTLINE',
        +            'PACKAGE',
        +            'PARTITION',
        +            'PCTFREE',
        +            'PERCENT_RANK',
        +            'PLAN',
        +            'PLS_INTEGER',
        +            'POSITIVE',
        +            'POSITIVEN',
        +            'POWER',
        +            'PRAGMA',
        +            'PRIMARY',
        +            'PRIOR',
        +            'PRIVATE',
        +            'PRIVILEGES',
        +            'PROCEDURE',
        +            'PROFILE',
        +            'PUBLIC',
        +            'RAISE',
        +            'RANGE',
        +            'RANK',
        +            'RATIO_TO_REPORT',
        +            'RAW',
        +            'RAWTOHEX',
        +            'REAL',
        +            'RECORD',
        +            'REF',
        +            'REFTOHEX',
        +            'REGR_AVGX',
        +            'REGR_AVGY',
        +            'REGR_COUNT',
        +            'REGR_INTERCEPT',
        +            'REGR_R2',
        +            'REGR_SLOPE',
        +            'REGR_SXX',
        +            'REGR_SXY',
        +            'REGR_SYY',
        +            'RELEASE',
        +            'RENAME',
        +            'REPLACE',
        +            'RESOURCE',
        +            'RETURN',
        +            'RETURNING',
        +            'REVERSE',
        +            'REVOKE',
        +            'ROLE',
        +            'ROLLBACK',
        +            'ROUND',
        +            'ROW',
        +            'ROW_NUMBER',
        +            'ROWID',
        +            'ROWIDTOCHAR',
        +            'ROWNUM',
        +            'ROWS',
        +            'ROWTYPE',
        +            'RPAD',
        +            'RTRIM',
        +            'SAVEPOINT',
        +            'SCHEMA',
        +            'SECOND',
        +            'SEGMENT',
        +            'SELECT',
        +            'SEPERATE',
        +            'SEQUENCE',
        +            'SESSION',
        +            'SET',
        +            'SHARE',
        +            'SIGN',
        +            'SIN',
        +            'SINH',
        +            'SIZE',
        +            'SMALLINT',
        +            'SOUNDEX',
        +            'SPACE',
        +            'SQL',
        +            'SQLCODE',
        +            'SQLERRM',
        +            'SQRT',
        +            'START',
        +            'STATISTICS',
        +            'STDDEV',
        +            'STDDEV_POP',
        +            'STDDEV_SAMP',
        +            'STOP',
        +            'SUBSTR',
        +            'SUBSTRB',
        +            'SUBTYPE',
        +            'SUCCESSFUL',
        +            'SUM',
        +            'SYNONYM',
        +            'SYS_CONTEXT',
        +            'SYS_GUID',
        +            'SYSDATE',
        +            'SYSTEM',
        +            'TABLE',
        +            'TABLESPACE',
        +            'TAN',
        +            'TANH',
        +            'TEMPORARY',
        +            'THEN',
        +            'TIME',
        +            'TIMESTAMP',
        +            'TIMEZONE_ABBR',
        +            'TIMEZONE_HOUR',
        +            'TIMEZONE_MINUTE',
        +            'TIMEZONE_REGION',
        +            'TIMING',
        +            'TO',
        +            'TO_CHAR',
        +            'TO_DATE',
        +            'TO_LOB',
        +            'TO_MULTI_BYTE',
        +            'TO_NUMBER',
        +            'TO_SINGLE_BYTE',
        +            'TRANSACTION',
        +            'TRANSLATE',
        +            'TRIGGER',
        +            'TRIM',
        +            'TRUE',
        +            'TRUNC',
        +            'TRUNCATE',
        +            'TYPE',
        +            'UI',
        +            'UID',
        +            'UNION',
        +            'UNIQUE',
        +            'UPDATE',
        +            'UPPER',
        +            'USE',
        +            'USER',
        +            'USERENV',
        +            'USING',
        +            'VALIDATE',
        +            'VALUE',
        +            'VALUES',
        +            'VAR_POP',
        +            'VAR_SAMP',
        +            'VARCHAR',
        +            'VARCHAR2',
        +            'VARIANCE',
        +            'VIEW',
        +            'VSIZE',
        +            'WHEN',
        +            'WHENEVER',
        +            'WHERE',
        +            'WHILE',
        +            'WITH',
        +            'WORK',
        +            'WRITE',
        +            'YEAR',
        +            'ZONE'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '=', '<', '>', '|', '+', '-', '*', '/', ','
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +//        3 => false,
        +//        4 => false,
        +//        5 => false,
        +//        6 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #993333; font-weight: bold; text-transform: uppercase;'
        +//Add the styles for groups 3-6 here when used
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #ff0000;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +//        3 => '',
        +//        4 => '',
        +//        5 => '',
        +//        6 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/oxygene.php b/includes/geshi/oxygene.php
        new file mode 100644
        index 0000000..2ee1998
        --- /dev/null
        +++ b/includes/geshi/oxygene.php
        @@ -0,0 +1,155 @@
        + 'Oxygene',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('(*' => '*)', '{' => '}'),
        +    //Compiler directives
        +    'COMMENT_REGEXP' => array(2 => '/{\\$.*?}|\\(\\*\\$.*?\\*\\)/U'),
        +    'CASE_KEYWORDS' => 0,
        +    'QUOTEMARKS' => array("'"),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'and',   'begin', 'case', 'const',  'div', 'do', 'downto', 'else',
        +            'end',  'for',  'function', 'if', 'in', 'mod', 'not', 'of', 'or',
        +            'procedure', 'repeat', 'record', 'set', 'shl', 'shr', 'then', 'to',
        +            'type', 'until', 'uses', 'var','while', 'with', 'xor', 'exit', 'break',
        +            'class', 'constructor', 'inherited', 'private', 'public', 'protected',
        +            'property', 'As', 'Is', 'Unit', 'Continue', 'Try', 'Except', 'Forward',
        +            'Interface','Implementation', 'nil', 'out', 'loop', 'namespace', 'true',
        +            'false', 'new', 'ensure', 'require', 'on', 'event', 'delegate', 'method',
        +            'raise', 'assembly', 'module', 'using','locking', 'old', 'invariants', 'operator',
        +            'self', 'async', 'finalizer', 'where', 'yield', 'nullable', 'Future',
        +            'From',  'Finally', 'dynamic', 'mapped'
        +            ),
        +        2 => array(
        +            'override', 'virtual', 'External', 'read', 'add', 'remove','final', 'abstract',
        +            'empty', 'global', 'locked', 'sealed', 'reintroduce', 'implements', 'each',
        +            'default', 'partial', 'finalize', 'enum', 'flags', 'result', 'readonly', 'unsafe',
        +            'pinned', 'matching', 'static', 'has', 'step', 'iterator', 'inline', 'nested',
        +            'Implies', 'Select', 'Order', 'By', 'Desc', 'Asc', 'Group', 'Join', 'Take',
        +            'Skip', 'Concat', 'Union', 'Reverse', 'Distinct', 'Into', 'Equals', 'params',
        +            'sequence', 'index', 'notify', 'Parallel', 'create', 'array', 'Queryable', 'Aspect',
        +            'volatile', 'write', 'autoreleasepool', 'await', 'block', 'deprecated', 'extension',
        +            'optional', 'raises', 'selector', 'strong', 'weak', 'tuple', 'unretained'
        +            ),
        +        3 => array(
        +            'chr', 'ord', 'inc', 'dec', 'assert', 'iff', 'assigned','futureAssigned', 'length', 'low', 'high', 'typeOf', 'sizeOf', 'disposeAndNil', 'Coalesce', 'unquote'
        +            ),
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +//        4 => false,
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array('(', ')', '[', ']'),
        +        1 => array('.', ',', ':', ';'),
        +        2 => array('@', '^'),
        +        3 => array('=', '+', '-', '*', '/')
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000000; font-weight: bold;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #000066;',
        +//            4 => 'color: #000066; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            2 => 'color: #008000; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #ff0000; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000066;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #000000;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #9ac;',
        +            1 => 'color: #ff0000;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000066;',
        +            1 => 'color: #000066;',
        +            2 => 'color: #000066;',
        +            3 => 'color: #000066;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +//        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        //Hex numbers
        +        0 => '\$[0-9a-fA-F]+',
        +        //Characters
        +        1 => '\#\$?[0-9]{1,3}'
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 2
        +);
        diff --git a/includes/geshi/oz.php b/includes/geshi/oz.php
        new file mode 100644
        index 0000000..e31852d
        --- /dev/null
        +++ b/includes/geshi/oz.php
        @@ -0,0 +1,142 @@
        + 'OZ',
        +    'COMMENT_SINGLE' => array(1 => '%'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"','\''),
        +    'ESCAPE_CHAR' => '\\',
        +    'NUMBERS' => array(),
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'declare','local','in','end','proc','fun','functor','require','prepare',
        +            'import','export','define','at','case','then','else','of','elseof',
        +            'elsecase','if','elseif','class','from','prop','attr','feat','meth',
        +            'self','true','false','unit','div','mod','andthen','orelse','cond','or',
        +            'dis','choice','not','thread','try','catch','finally','raise','lock',
        +            'skip','fail','for','do'
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true
        +        ),
        +    'SYMBOLS' => array(
        +        '@', '!', '|', '<-', ':=', '<', '>', '=<', '>=', '<=', '#', '~', '.',
        +        '*', '-', '+', '/', '<:', '>:', '=:', '=<:', '>=:', '\\=', '\\=:', ',',
        +        '!!', '...', '==', '::', ':::'
        +        ),
        +    'STYLES' => array(
        +        'REGEXPS' => array(
        +            1 => 'color: #0000ff;',
        +            2 => 'color: #00a030;',
        +            3 => 'color: #bc8f8f;',
        +            4 => 'color: #0000ff;',
        +            5 => 'color: #a020f0;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #bc8f8f;'
        +            ),
        +        'KEYWORDS' => array(
        +            1 => 'color: #a020f0;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #B22222;',
        +            'MULTI' => 'color: #B22222;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #bc8f8f;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #a020f0;'
        +            ),
        +        'BRACKETS' => array(),
        +        'NUMBERS' => array(),
        +        'METHODS' => array(),
        +        'SCRIPT' => array()
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(),
        +    'URLS' => array(
        +        1 => ''
        +        ),
        +    'REGEXPS' => array(
        +        // function and procedure definition
        +        1 => array(
        +            GESHI_SEARCH => "(proc|fun)([^{}\n\)]*)(\\{)([\$A-Z\300-\326\330-\336][A-Z\300-\326\330-\336a-z\337-\366\370-\3770-9_.]*)",
        +            GESHI_REPLACE => '\4',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\1\2\3',
        +            GESHI_AFTER => ''
        +            ),
        +        // class definition
        +        2 => array(
        +            GESHI_SEARCH => "(class)([^A-Z\$]*)([\$A-Z\300-\326\330-\336][A-Z\300-\326\330-\336a-z\337-\366\370-\3770-9_.]*)",
        +            GESHI_REPLACE => '\3\4',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\1\2',
        +            GESHI_AFTER => ''
        +            ),
        +        // single character
        +        3 => array(
        +            GESHI_SEARCH => "&.",
        +            GESHI_REPLACE => '\0',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        // method definition
        +        4 => array(
        +            GESHI_SEARCH => "(meth)([^a-zA-Z]+)([a-zA-Z\300-\326\330-\336][A-Z\300-\326\330-\336a-z\337-\366\370-\3770-9]*)",
        +            GESHI_REPLACE => '\3',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\1\2',
        +            GESHI_AFTER => ''
        +            ),
        +        // highlight "[]"
        +        // ([] is actually a keyword, but that causes problems in validation; putting it into symbols doesn't work.)
        +        5 => array(
        +            GESHI_SEARCH => "\[\]",
        +            GESHI_REPLACE => '\0',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            )
        +        )
        +);
        diff --git a/includes/geshi/parasail.php b/includes/geshi/parasail.php
        new file mode 100644
        index 0000000..98e2ab8
        --- /dev/null
        +++ b/includes/geshi/parasail.php
        @@ -0,0 +1,128 @@
        + 'ParaSail',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('{' => '}'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'all', 'block', 'case', 'continue', 'each',
        +            'else', 'elsif', 'exit', 'for',
        +            'forward', 'if', 'loop', 'return', 'reverse', 'some',
        +            'then', 'until', 'while', 'with'
        +            ),
        +        2 => array(
        +            'abs', 'and','in', 'mod', 'not', 'null', 'or', 'rem', 'xor'
        +            ),
        +        3 => array(
        +            'abstract', 'class',
        +            'concurrent', 'const',
        +            'end', 'extends', 'exports',
        +            'func', 'global', 'implements', 'import',
        +            'interface', 'is', 'lambda', 'locked',
        +            'new', 'of', 'op', 'optional',
        +            'private', 'queued', 'ref',
        +            'separate', 'type', 'var',
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '<', '>'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #00007f;',
        +            2 => 'color: #0000ff;',
        +            3 => 'color: #46aa03; font-weight:bold;',
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #adadad; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #7f007f;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #202020;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/parigp.php b/includes/geshi/parigp.php
        new file mode 100644
        index 0000000..1a5d4a7
        --- /dev/null
        +++ b/includes/geshi/parigp.php
        @@ -0,0 +1,293 @@
        + 'PARI/GP',
        +    'COMMENT_SINGLE' => array(1 => '\\\\'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'NUMBERS' => array(
        +        # Integers
        +        1 => GESHI_NUMBER_INT_BASIC,
        +        # Reals
        +        2 => GESHI_NUMBER_FLT_SCI_ZERO
        +        ),
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'abs','acos','acosh','addhelp','addprimes','agm','alarm','algdep',
        +            'alias','allocatemem','apply','arg','asin','asinh','atan','atanh',
        +            'bernfrac','bernpol','bernreal','bernvec','besselh1','besselh2',
        +            'besseli','besselj','besseljh','besselk','besseln','bestappr',
        +            'bestapprPade','bezout','bezoutres','bigomega','binary','binomial',
        +            'bitand','bitneg','bitnegimply','bitor','bittest','bitxor',
        +            'bnfcertify','bnfcompress','bnfdecodemodule','bnfinit',
        +            'bnfisintnorm','bnfisnorm','bnfisprincipal','bnfissunit',
        +            'bnfisunit','bnfnarrow','bnfsignunit','bnfsunit','bnrclassno',
        +            'bnrclassnolist','bnrconductor','bnrconductorofchar','bnrdisc',
        +            'bnrdisclist','bnrinit','bnrisconductor','bnrisprincipal','bnrL1',
        +            'bnrrootnumber','bnrstark','break','breakpoint','Catalan','ceil',
        +            'centerlift','charpoly','chinese','cmp','Col','component','concat',
        +            'conj','conjvec','content','contfrac','contfracpnqn','core',
        +            'coredisc','cos','cosh','cotan','dbg_down','dbg_err','dbg_up',
        +            'dbg_x','default','denominator','deriv','derivnum','diffop',
        +            'digits','dilog','dirdiv','direuler','dirmul','dirzetak','divisors',
        +            'divrem','eint1','elladd','ellak','ellan','ellanalyticrank','ellap',
        +            'ellbil','ellcard','ellchangecurve','ellchangepoint',
        +            'ellconvertname','elldivpol','elleisnum','elleta','ellffinit',
        +            'ellfromj','ellgenerators','ellglobalred','ellgroup','ellheegner',
        +            'ellheight','ellheightmatrix','ellidentify','ellinit',
        +            'ellisoncurve','ellj','ellL1','elllocalred','elllog','elllseries',
        +            'ellminimalmodel','ellmodulareqn','ellmul','ellneg','ellorder',
        +            'ellordinate','ellpointtoz','ellrootno','ellsearch','ellsigma',
        +            'ellsub','elltaniyama','elltatepairing','elltors','ellweilpairing',
        +            'ellwp','ellzeta','ellztopoint','erfc','errname','error','eta','Euler',
        +            'eulerphi','eval','exp','extern','externstr','factor','factorback',
        +            'factorcantor','factorff','factorial','factorint','factormod',
        +            'factornf','factorpadic','ffgen','ffinit','fflog','ffnbirred',
        +            'fforder','ffprimroot','fibonacci','floor','for','forcomposite','fordiv','forell',
        +            'forprime','forqfvec','forstep','forsubgroup','forvec','frac','galoisexport',
        +            'galoisfixedfield','galoisgetpol','galoisidentify','galoisinit',
        +            'galoisisabelian','galoisisnormal','galoispermtopol',
        +            'galoissubcyclo','galoissubfields','galoissubgroups','gamma',
        +            'gammah','gcd','getenv','getheap','getrand','getstack','gettime',
        +            'global','hammingweight','hilbert','hyperu','I','idealadd',
        +            'idealaddtoone','idealappr','idealchinese','idealcoprime',
        +            'idealdiv','idealfactor','idealfactorback','idealfrobenius',
        +            'idealhnf','idealintersect','idealinv','ideallist','ideallistarch',
        +            'ideallog','idealmin','idealmul','idealnorm','idealnumden',
        +            'idealpow','idealprimedec','idealramgroups','idealred','idealstar',
        +            'idealtwoelt','idealval','if','iferr','iferrname','imag','incgam','incgamc','input',
        +            'install','intcirc','intformal','intfouriercos','intfourierexp',
        +            'intfouriersin','intfuncinit','intlaplaceinv','intmellininv',
        +            'intmellininvshort','intnum','intnuminit','intnuminitgen',
        +            'intnumromb','intnumstep','isfundamental','ispolygonal','ispower','ispowerful',
        +            'isprime','isprimepower','ispseudoprime','issquare','issquarefree','istotient',
        +            'kill','kronecker','lcm','length','lex','lift','lindep','List',
        +            'listcreate','listinsert','listkill','listpop','listput','listsort',
        +            'lngamma','local','log','Mat','matadjoint','matalgtobasis',
        +            'matbasistoalg','matcompanion','matconcat','matcontent','matdet','matdetint',
        +            'matdiagonal','mateigen','matfrobenius','mathess','mathilbert',
        +            'mathnf','mathnfmod','mathnfmodid','matid','matimage',
        +            'matimagecompl','matindexrank','matintersect','matinverseimage',
        +            'matisdiagonal','matker','matkerint','matmuldiagonal',
        +            'matmultodiagonal','matpascal','matrank','matrix','matrixqz',
        +            'matsize','matsnf','matsolve','matsolvemod','matsupplement',
        +            'mattranspose','max','min','minpoly','Mod','modreverse','moebius',
        +            'my','newtonpoly','next','nextprime','nfalgtobasis','nfbasis',
        +            'nfbasistoalg','nfdetint','nfdisc','nfeltadd','nfeltdiv',
        +            'nfeltdiveuc','nfeltdivmodpr','nfeltdivrem','nfeltmod','nfeltmul',
        +            'nfeltmulmodpr','nfeltnorm','nfeltpow','nfeltpowmodpr',
        +            'nfeltreduce','nfeltreducemodpr','nfelttrace','nfeltval','nffactor',
        +            'nffactorback','nffactormod','nfgaloisapply','nfgaloisconj',
        +            'nfhilbert','nfhnf','nfhnfmod','nfinit','nfisideal','nfisincl',
        +            'nfisisom','nfkermodpr','nfmodprinit','nfnewprec','nfroots',
        +            'nfrootsof1','nfsnf','nfsolvemodpr','nfsubfields','norm','norml2',
        +            'numbpart','numdiv','numerator','numtoperm','O','omega','padicappr',
        +            'padicfields','padicprec','partitions','permtonum','Pi','plot',
        +            'plotbox','plotclip','plotcolor','plotcopy','plotcursor','plotdraw',
        +            'ploth','plothraw','plothsizes','plotinit','plotkill','plotlines',
        +            'plotlinetype','plotmove','plotpoints','plotpointsize',
        +            'plotpointtype','plotrbox','plotrecth','plotrecthraw','plotrline',
        +            'plotrmove','plotrpoint','plotscale','plotstring','Pol',
        +            'polchebyshev','polcoeff','polcompositum','polcyclo','polcyclofactors','poldegree',
        +            'poldisc','poldiscreduced','polgalois','polgraeffe','polhensellift',
        +            'polhermite','polinterpolate','poliscyclo','poliscycloprod',
        +            'polisirreducible','pollead','pollegendre','polrecip','polred',
        +            'polredabs','polredbest','polredord','polresultant','Polrev','polroots',
        +            'polrootsff','polrootsmod','polrootspadic','polsturm','polsubcyclo',
        +            'polsylvestermatrix','polsym','poltchebi','poltschirnhaus',
        +            'polylog','polzagier','precision','precprime','prime','primepi',
        +            'primes','print','print1','printf','printsep','printtex','prod','prodeuler',
        +            'prodinf','psdraw','psi','psploth','psplothraw','Qfb','qfbclassno',
        +            'qfbcompraw','qfbhclassno','qfbnucomp','qfbnupow','qfbpowraw',
        +            'qfbprimeform','qfbred','qfbsolve','qfgaussred','qfjacobi','qflll',
        +            'qflllgram','qfminim','qfperfection','qfrep','qfsign',
        +            'quadclassunit','quaddisc','quadgen','quadhilbert','quadpoly',
        +            'quadray','quadregulator','quadunit','quit','random','randomprime','read',
        +            'readvec','real','removeprimes','return','rnfalgtobasis','rnfbasis',
        +            'rnfbasistoalg','rnfcharpoly','rnfconductor','rnfdedekind','rnfdet',
        +            'rnfdisc','rnfeltabstorel','rnfeltdown','rnfeltreltoabs','rnfeltup',
        +            'rnfequation','rnfhnfbasis','rnfidealabstorel','rnfidealdown',
        +            'rnfidealhnf','rnfidealmul','rnfidealnormabs','rnfidealnormrel',
        +            'rnfidealreltoabs','rnfidealtwoelt','rnfidealup','rnfinit',
        +            'rnfisabelian','rnfisfree','rnfisnorm','rnfisnorminit','rnfkummer',
        +            'rnflllgram','rnfnormgroup','rnfpolred','rnfpolredabs',
        +            'rnfpseudobasis','rnfsteinitz','round','select','Ser','serconvol',
        +            'serlaplace','serreverse','Set','setbinop','setintersect',
        +            'setisset','setminus','setrand','setsearch','setunion','shift',
        +            'shiftmul','sigma','sign','simplify','sin','sinh','sizebyte',
        +            'sizedigit','solve','sqr','sqrt','sqrtint','sqrtn','sqrtnint','stirling','Str',
        +            'Strchr','Strexpand','Strprintf','Strtex','subgrouplist','subst',
        +            'substpol','substvec','sum','sumalt','sumdedekind','sumdiv','sumdivmult','sumdigits',
        +            'sumformal','suminf','sumnum','sumnumalt','sumnuminit','sumpos','system','tan',
        +            'tanh','taylor','teichmuller','theta','thetanullk','thue',
        +            'thueinit','trace','trap','truncate','type','until','valuation',
        +            'variable','Vec','vecextract','vecmax','vecmin','Vecrev',
        +            'vecsearch','Vecsmall','vecsort','vector','vectorsmall','vectorv',
        +            'version','warning','weber','whatnow','while','write','write1',
        +            'writebin','writetex','zeta','zetak','zetakinit','zncoppersmith',
        +            'znlog','znorder','znprimroot','znstar'
        +            ),
        +
        +        2 => array(
        +            'void','bool','negbool','small','int',/*'real',*/'mp','var','lg','pol',
        +            'vecsmall','vec','list','str','genstr','gen','typ'
        +            ),
        +
        +        3 => array(
        +            'TeXstyle','breakloop','colors','compatible','datadir','debug',
        +            'debugfiles','debugmem','echo','factor_add_primes','factor_proven',
        +            'format','graphcolormap','graphcolors','help','histfile','histsize',
        +            'lines','linewrap',/*'log',*/'logfile','new_galois_format','output',
        +            'parisize','path','prettyprinter','primelimit','prompt_cont',
        +            'prompt','psfile','readline','realprecision','recover','secure',
        +            'seriesprecision',/*'simplify',*/'sopath','strictmatch','timer'
        +            ),
        +
        +        4 => array(
        +            '"e_ARCH"','"e_BUG"','"e_FILE"','"e_IMPL"','"e_PACKAGE"','"e_DIM"',
        +            '"e_FLAG"','"e_NOTFUNC"','"e_OP"','"e_TYPE"','"e_TYPE2"',
        +            '"e_PRIORITY"','"e_VAR"','"e_DOMAIN"','"e_MAXPRIME"','"e_MEM"',
        +            '"e_OVERFLOW"','"e_PREC"','"e_STACK"','"e_ALARM"','"e_USER"',
        +            '"e_CONSTPOL"','"e_COPRIME"','"e_INV"','"e_IRREDPOL"','"e_MISC"',
        +            '"e_MODULUS"','"e_NEGVAL"','"e_PRIME"','"e_ROOTS0"','"e_SQRTN"'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        1 => array(
        +            '(',')','{','}','[',']','+','-','*','/','%','=','<','>','!','^','&','|','?',';',':',',','\\','\''
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000ff;',
        +            2 => 'color: #e07022;',
        +            3 => 'color: #00d2d2;',
        +            4 => 'color: #00d2d2;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008000;',
        +            'MULTI' => 'color: #008000;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #111111; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #002222;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #800080;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #666666;',
        +            1 => 'color: #666666;',
        +            2 => 'color: #666666;'
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #004000;'
        +            ),
        +        'SYMBOLS' => array(
        +            1 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #e07022',    # Should be the same as keyword group 2
        +            1 => 'color: #555555',
        +            2 => 'color: #0000ff'     # Should be the same as keyword group 1
        +            ),
        +        'SCRIPT' => array()
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        0 => array( # types marked on variables
        +            GESHI_SEARCH => '(? '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '"',
        +            GESHI_AFTER => '"'
        +            ),
        +        1 => array( # literal variables
        +            GESHI_SEARCH => '(? '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        2 => array( # member functions
        +            GESHI_SEARCH => '(?<=[.])(a[1-6]|b[2-8]|c[4-6]|area|bid|bnf|clgp|cyc|diff|disc|[efjp]|fu|gen|index|mod|nf|no|omega|pol|reg|roots|sign|r[12]|t2|tate|tu|zk|zkst)\b',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            )
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        2 => array(
        +            '[a-zA-Z][a-zA-Z0-9_]*:' => ''
        +            ),
        +        3 => array(
        +            'default(' => ''
        +            ),
        +        4 => array(
        +            'iferrname(' => ''
        +            ),
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/pascal.php b/includes/geshi/pascal.php
        new file mode 100644
        index 0000000..5b9d986
        --- /dev/null
        +++ b/includes/geshi/pascal.php
        @@ -0,0 +1,163 @@
        + 'Pascal',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('(*' => '*)', '{' => '}'),
        +    //Compiler directives
        +    'COMMENT_REGEXP' => array(2 => '/\\{\\$.*?}|\\(\\*\\$.*?\\*\\)/U'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'"),
        +    'ESCAPE_CHAR' => '',
        +
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'absolute','asm','assembler','begin','break','case','catch','cdecl',
        +            'const','constructor','default','destructor','div','do','downto',
        +            'else','end','except','export','exports','external','far',
        +            'finalization','finally','for','forward','function','goto','if',
        +            'implementation','in','index','inherited','initialization','inline',
        +            'interface','interrupt','label','library','mod','name','not','of',
        +            'or','overload','override','private','procedure','program',
        +            'property','protected','public','published','raise','repeat',
        +            'resourcestring','shl','shr','stdcall','stored','switch','then',
        +            'to','try','type','unit','until','uses','var','while','with','xor'
        +            ),
        +        2 => array(
        +            'nil', 'false', 'true',
        +            ),
        +        3 => array(
        +            'abs','and','arc','arctan','blockread','blockwrite','chr','dispose',
        +            'cos','eof','eoln','exp','get','ln','new','odd','ord','ordinal',
        +            'pred','read','readln','sin','sqrt','succ','write','writeln'
        +            ),
        +        4 => array(
        +            'ansistring','array','boolean','byte','bytebool','char','file',
        +            'integer','longbool','longint','object','packed','pointer','real',
        +            'record','set','shortint','smallint','string','union','word'
        +            ),
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array('(', ')', '[', ']'),
        +        1 => array('.', ',', ':', ';'),
        +        2 => array('@', '^'),
        +        3 => array('=', '+', '-', '*', '/')
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000000; font-weight: bold;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #000066;',
        +            4 => 'color: #000066; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            2 => 'color: #008000; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #ff0000; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;',
        +            //'HARD' => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #0000cc;',
        +            1 => 'color: #ff0000;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000066;',
        +            1 => 'color: #000066;',
        +            2 => 'color: #000066;',
        +            3 => 'color: #000066;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        //Hex numbers
        +        0 => '\$[0-9a-fA-F]+',
        +        //Characters
        +        1 => '\#(?:\$[0-9a-fA-F]{1,2}|\d{1,3})'
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/pcre.php b/includes/geshi/pcre.php
        new file mode 100644
        index 0000000..29bbf47
        --- /dev/null
        +++ b/includes/geshi/pcre.php
        @@ -0,0 +1,186 @@
        + 'PCRE',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(
        +        ),
        +    'COMMENT_REGEXP' => array(
        +        // Non-matching groups
        +        1 => "/(?<=\()\?(?::|(?=\())/",
        +
        +        // Modifier groups
        +        2 => "/(?<=\()\?[cdegimopsuxUX\-]+(?::|(?=\)))/",
        +
        +        // Look-Aheads
        +        3 => "/(?<=\()\?[!=]/",
        +
        +        // Look-Behinds
        +        4 => "/(?<=\()\?<[!=]/",
        +
        +        // Forward Matching
        +        5 => "/(?<=\()\?>/",
        +
        +        // Recursive Matching
        +        6 => "/(?<=\()\?R(?=\))/",
        +
        +        // Named Subpattern
        +        7 => "/(?<=\()\?(?:P?<\w+>|\d+(?=\))|P[=>]\w+(?=\)))/",
        +
        +        // Back Reference
        +        8 => "/\\\\(?:[1-9]\d?|g\d+|g\{(?:-?\d+|\w+)\}|k<\w+>|k'\w+'|k\{\w+\})/",
        +
        +        // Byte sequence: Octal
        +        9 => "/\\\\[0-7]{2,3}/",
        +
        +        // Byte sequence: Hex
        +        10 => "/\\\\x[0-9a-fA-F]{2}/",
        +
        +        // Byte sequence: Hex
        +        11 => "/\\\\u[0-9a-fA-F]{4}/",
        +
        +        // Byte sequence: Hex
        +        12 => "/\\\\U[0-9a-fA-F]{8}/",
        +
        +        // Byte sequence: Unicode
        +        13 => "/\\\\[pP]\{[^}\n]+\}/",
        +
        +        // One-Char Escapes
        +        14 => "/\\\\[abdefnrstvwzABCDGSWXZ\\\\\\.\[\]\(\)\{\}\^\\\$\?\+\*]/",
        +
        +        // Byte sequence: Control-X sequence
        +        15 => "/\\\\c./",
        +
        +        // Quantifier
        +        16 => "/\{(?:\d+,?|\d*,\d+)\}/",
        +
        +        // Comment Subpattern
        +        17 => "/(?<=\()\?#[^\)]*/",
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array('.'),
        +        1 => array('(', ')'),
        +        2 => array('[', ']', '|'),
        +        3 => array('^', '$'),
        +        4 => array('?', '+', '*'),
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #993333; font-weight: bold;',
        +            2 => 'color: #cc3300; font-weight: bold;',
        +            3 => 'color: #cc0066; font-weight: bold;',
        +            4 => 'color: #cc0066; font-weight: bold;',
        +            5 => 'color: #cc6600; font-weight: bold;',
        +            6 => 'color: #cc00cc; font-weight: bold;',
        +            7 => 'color: #cc9900; font-weight: bold; font-style: italic;',
        +            8 => 'color: #cc9900; font-style: italic;',
        +            9 => 'color: #669933; font-style: italic;',
        +            10 => 'color: #339933; font-style: italic;',
        +            11 => 'color: #339966; font-style: italic;',
        +            12 => 'color: #339999; font-style: italic;',
        +            13 => 'color: #663399; font-style: italic;',
        +            14 => 'color: #999933; font-style: italic;',
        +            15 => 'color: #993399; font-style: italic;',
        +            16 => 'color: #333399; font-style: italic;',
        +            17 => 'color: #666666; font-style: italic;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            'HARD' => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;',
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;',
        +            2 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #333399; font-weight: bold;',
        +            1 => 'color: #993333; font-weight: bold;',
        +            2 => 'color: #339933; font-weight: bold;',
        +            3 => 'color: #333399; font-weight: bold;',
        +            4 => 'color: #333399; font-style: italic;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'ENABLE_FLAGS' => array(
        +            'BRACKETS' => GESHI_NEVER,
        +            'NUMBERS' => GESHI_NEVER
        +        )
        +    )
        +);
        diff --git a/includes/geshi/per.php b/includes/geshi/per.php
        new file mode 100644
        index 0000000..b9117a2
        --- /dev/null
        +++ b/includes/geshi/per.php
        @@ -0,0 +1,300 @@
        + 'per',
        +    'COMMENT_SINGLE' => array(1 => '--', 2 => '#'),
        +    'COMMENT_MULTI' => array('{' => '}'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            "ACCELERATOR",
        +            "ACCELERATOR2",
        +            "ACTION",
        +            "ALT",
        +            "AND",
        +            "AUTO",
        +            "AUTONEXT",
        +            "AUTOSCALE",
        +            "BETWEEN",
        +            "BOTH",
        +            "BUTTON",
        +            "BUTTONEDIT",
        +            "BUTTONTEXTHIDDEN",
        +            "BY",
        +            "BYTE",
        +            "CANVAS",
        +            "CENTER",
        +            "CHECKBOX",
        +            "CLASS",
        +            "COLOR",
        +            "COLUMNS",
        +            "COMBOBOX",
        +            "COMMAND",
        +            "COMMENT",
        +            "COMMENTS",
        +            "COMPACT",
        +            "COMPRESS",
        +            "CONFIG",
        +            "CONTROL",
        +            "CURRENT",
        +            "DATABASE",
        +            "DATEEDIT",
        +            "DEC",
        +            "DEFAULT",
        +            "DEFAULTS",
        +            "DELIMITERS",
        +            "DISPLAY",
        +            "DISPLAYONLY",
        +            "DOWNSHIFT",
        +            "DYNAMIC",
        +            "EDIT",
        +            "FIXED",
        +            "FOLDER",
        +            "FONTPITCH",
        +            "FORMAT",
        +            "FORMONLY",
        +            "GRID",
        +            "GRIDCHILDRENINPARENT",
        +            "GROUP",
        +            "HBOX",
        +            "HEIGHT",
        +            "HIDDEN",
        +            "HORIZONTAL",
        +            "INCLUDE",
        +            "INITIAL",
        +            "INITIALIZER",
        +            "INPUT",
        +            "INSTRUCTIONS",
        +            "INTERVAL",
        +            "INVISIBLE",
        +            "IS",
        +            "ITEM",
        +            "ITEMS",
        +            "JUSTIFY",
        +            "KEY",
        +            "KEYS",
        +            "LABEL",
        +            "LEFT",
        +            "LIKE",
        +            "LINES",
        +            "MATCHES",
        +            "NAME",
        +            "NOENTRY",
        +            "NONCOMPRESS",
        +            "NORMAL",
        +            "NOT",
        +            "NOUPDATE",
        +            "OPTIONS",
        +            "OR",
        +            "ORIENTATION",
        +            "PACKED",
        +            "PAGE",
        +            "PICTURE",
        +            "PIXELHEIGHT",
        +            "PIXELS",
        +            "PIXELWIDTH",
        +            "POINTS",
        +            "PROGRAM",
        +            "PROGRESSBAR",
        +            "QUERYCLEAR",
        +            "QUERYEDITABLE",
        +            "RADIOGROUP",
        +            "RECORD",
        +            "REQUIRED",
        +            "REVERSE",
        +            "RIGHT",
        +            "SAMPLE",
        +            "SCREEN",
        +            "SCROLL",
        +            "SCROLLBARS",
        +            "SCROLLGRID",
        +            "SECOND",
        +            "SEPARATOR",
        +            "SHIFT",
        +            "SIZE",
        +            "SIZEPOLICY",
        +            "SMALLFLOAT",
        +            "SMALLINT",
        +            "SPACING",
        +            "STRETCH",
        +            "STYLE",
        +            "TABINDEX",
        +            "TABLE",
        +            "TAG",
        +            "TEXT",
        +            "TEXTEDIT",
        +            "THROUGH",
        +            "THRU",
        +            "TITLE",
        +            "TO",
        +            "TOOLBAR",
        +            "TOPMENU",
        +            "TYPE",
        +            "UNHIDABLE",
        +            "UNHIDABLECOLUMNS",
        +            "UNMOVABLE",
        +            "UNMOVABLECOLUMNS",
        +            "UNSIZABLE",
        +            "UNSIZABLECOLUMNS",
        +            "UNSORTABLE",
        +            "UNSORTABLECOLUMNS",
        +            "UPSHIFT",
        +            "USER",
        +            "VALIDATE",
        +            "VALUECHECKED",
        +            "VALUEMAX",
        +            "VALUEMIN",
        +            "VALUEUNCHECKED",
        +            "VARCHAR",
        +            "VARIABLE",
        +            "VBOX",
        +            "VERIFY",
        +            "VERSION",
        +            "VERTICAL",
        +            "TIMESTAMP",
        +            "WANTCOLUMNSANCHORED", /* to be removed! */
        +            "WANTFIXEDPAGESIZE",
        +            "WANTNORETURNS",
        +            "WANTTABS",
        +            "WHERE",
        +            "WIDGET",
        +            "WIDTH",
        +            "WINDOWSTYLE",
        +            "WITHOUT",
        +            "WORDWRAP",
        +            "X",
        +            "Y",
        +            "ZEROFILL",
        +            "SCHEMA",
        +            "ATTRIBUTES",
        +            "TABLES",
        +            "LAYOUT",
        +            "END"
        +            ),
        +        2 => array(
        +            "YEAR",
        +            "BLACK",
        +            "BLINK",
        +            "BLUE",
        +            "YELLOW",
        +            "WHITE",
        +            "UNDERLINE",
        +            "CENTURY",
        +            "FRACTION",
        +            "CHAR",
        +            "CHARACTER",
        +            "CHARACTERS",
        +            "CYAN",
        +            "DATE",
        +            "DATETIME",
        +            "DAY",
        +            "DECIMAL",
        +            "FALSE",
        +            "FLOAT",
        +            "GREEN",
        +            "HOUR",
        +            "INT",
        +            "INTEGER",
        +            "MAGENTA",
        +            "MINUTE",
        +            "MONEY",
        +            "NONE",
        +            "NULL",
        +            "REAL",
        +            "RED",
        +            "TRUE",
        +            "TODAY",
        +            "MONTH",
        +            "IMAGE"
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '+', '-', '*', '?', '=', '/', '%', '>', '<', '^', '!', '|', ':',
        +        '(', ')', '[', ']'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0600FF;',
        +            2 => 'color: #0000FF; font-weight: bold;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008080; font-style: italic;',
        +            2 => 'color: #008080;',
        +            'MULTI' => 'color: green'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #008080; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #808080;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #FF0000;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #0000FF;',
        +            2 => 'color: #0000FF;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #008000;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/perl.php b/includes/geshi/perl.php
        new file mode 100644
        index 0000000..15ab836
        --- /dev/null
        +++ b/includes/geshi/perl.php
        @@ -0,0 +1,211 @@
        + 'Perl',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array(
        +        '=back' => '=cut',
        +        '=head' => '=cut',
        +        '=item' => '=cut',
        +        '=over' => '=cut',
        +        '=begin' => '=cut',
        +        '=end' => '=cut',
        +        '=for' => '=cut',
        +        '=encoding' => '=cut',
        +        '=pod' => '=cut'
        +        ),
        +    'COMMENT_REGEXP' => array(
        +        //Regular expressions
        +        2 => "/(?<=[\\s^])(s|tr|y)\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/(?:\\\\.|(?!\n)[^\\/\\\\])*\\/[msixpogcde]*(?=[\\s$\\.\\;])|(?<=[\\s^(=])(m|q[qrwx]?)?\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/[msixpogc]*(?=[\\s$\\.\\,\\;\\)])/iU",
        +        //Regular expression match variables
        +        3 => '/\$\d+/',
        +        //Heredoc
        +        4 => '/<<\s*?([\'"]?)([a-zA-Z0-9]+)\1;[^\n]*?\\n.*\\n\\2(?![a-zA-Z0-9])/siU',
        +        //Predefined variables
        +        5 => '/\$(\^[a-zA-Z]?|[\*\$`\'&_\.,+\-~:;\\\\\/"\|%=\?!@#<>\(\)\[\]])(?!\w)|@[_+\-]|%[!]|\$(?=\{)/',
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"','`'),
        +    'HARDQUOTE' => array("'", "'"),            // An optional 2-element array defining the beginning and end of a hard-quoted string
        +    'HARDESCAPE' => array('\\\'',),
        +        // Things that must still be escaped inside a hard-quoted string
        +        // If HARDQUOTE is defined, HARDESCAPE must be defined
        +        // This will not work unless the first character of each element is either in the
        +        // QUOTEMARKS array or is the ESCAPE_CHAR
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'case', 'do', 'else', 'elsif', 'for', 'if', 'then', 'until', 'while', 'foreach', 'my',
        +            'xor', 'or', 'and', 'unless', 'next', 'last', 'redo', 'not', 'our',
        +            'reset', 'continue', 'cmp', 'ne', 'eq', 'lt', 'gt', 'le', 'ge',
        +            ),
        +        2 => array(
        +            'use', 'sub', 'new', '__END__', '__DATA__', '__DIE__', '__WARN__', 'BEGIN',
        +            'STDIN', 'STDOUT', 'STDERR', 'ARGV', 'ARGVOUT'
        +            ),
        +        3 => array(
        +            'abs', 'accept', 'alarm', 'atan2', 'bind', 'binmode', 'bless',
        +            'caller', 'chdir', 'chmod', 'chomp', 'chop', 'chown', 'chr',
        +            'chroot', 'close', 'closedir', 'connect', 'cos',
        +            'crypt', 'dbmclose', 'dbmopen', 'defined', 'delete', 'die',
        +            'dump', 'each', 'endgrent', 'endhostent', 'endnetent', 'endprotoent',
        +            'endpwent', 'endservent', 'eof', 'eval', 'exec', 'exists', 'exit',
        +            'exp', 'fcntl', 'fileno', 'flock', 'fork', 'format', 'formline',
        +            'getc', 'getgrent', 'getgrgid', 'getgrnam', 'gethostbyaddr',
        +            'gethostbyname', 'gethostent', 'getlogin', 'getnetbyaddr', 'getnetbyname',
        +            'getnetent', 'getpeername', 'getpgrp', 'getppid', 'getpriority',
        +            'getprotobyname', 'getprotobynumber', 'getprotoent', 'getpwent',
        +            'getpwnam', 'getpwuid', 'getservbyname', 'getservbyport', 'getservent',
        +            'getsockname', 'getsockopt', 'glob', 'gmtime', 'goto', 'grep',
        +            'hex', 'import', 'index', 'int', 'ioctl', 'join', 'keys', 'kill',
        +            'lc', 'lcfirst', 'length', 'link', 'listen', 'local',
        +            'localtime', 'log', 'lstat', 'm', 'map', 'mkdir', 'msgctl', 'msgget',
        +            'msgrcv', 'msgsnd', 'no', 'oct', 'open', 'opendir',
        +            'ord', 'pack', 'package', 'pipe', 'pop', 'pos', 'print',
        +            'printf', 'prototype', 'push', 'qq', 'qr', 'quotemeta', 'qw',
        +            'qx', 'q', 'rand', 'read', 'readdir', 'readline', 'readlink', 'readpipe',
        +            'recv', 'ref', 'rename', 'require', 'return',
        +            'reverse', 'rewinddir', 'rindex', 'rmdir', 's', 'scalar', 'seek',
        +            'seekdir', 'select', 'semctl', 'semget', 'semop', 'send', 'setgrent',
        +            'sethostent', 'setnetent', 'setpgrp', 'setpriority', 'setprotoent',
        +            'setpwent', 'setservent', 'setsockopt', 'shift', 'shmctl', 'shmget',
        +            'shmread', 'shmwrite', 'shutdown', 'sin', 'sleep', 'socket', 'socketpair',
        +            'sort', 'splice', 'split', 'sprintf', 'sqrt', 'srand', 'stat',
        +            'study', 'substr', 'symlink', 'syscall', 'sysopen', 'sysread',
        +            'sysseek', 'system', 'syswrite', 'tell', 'telldir', 'tie', 'tied',
        +            'time', 'times', 'tr', 'truncate', 'uc', 'ucfirst', 'umask', 'undef',
        +            'unlink', 'unpack', 'unshift', 'untie', 'utime', 'values',
        +            'vec', 'wait', 'waitpid', 'wantarray', 'warn', 'write', 'y'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '<', '>', '=',
        +        '!', '@', '~', '&', '|', '^',
        +        '+','-', '*', '/', '%',
        +        ',', ';', '?', '.', ':'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #000066;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            2 => 'color: #009966; font-style: italic;',
        +            3 => 'color: #0000ff;',
        +            4 => 'color: #cc0000; font-style: italic;',
        +            5 => 'color: #0000ff;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            'HARD' => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;',
        +            'HARD' => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;',
        +            2 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #0000ff;',
        +            4 => 'color: #009999;',
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => 'http://perldoc.perl.org/functions/{FNAMEL}.html'
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '->',
        +        2 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        //Variable
        +        0 => '(?:\$[\$#]?|\\\\(?:[@%*]?|\\\\*\$|&)|%[$]?|@[$]?|\*[$]?|&[$]?)[a-zA-Z_][a-zA-Z0-9_]*',
        +        //File Descriptor
        +        4 => '<[a-zA-Z_][a-zA-Z0-9_]*>',
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'COMMENTS' => array(
        +            'DISALLOWED_BEFORE' => '$'
        +        )
        +    )
        +);
        diff --git a/includes/geshi/perl6.php b/includes/geshi/perl6.php
        new file mode 100644
        index 0000000..3bd5f0a
        --- /dev/null
        +++ b/includes/geshi/perl6.php
        @@ -0,0 +1,195 @@
        + 'Perl 6',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array('=begin' => '=end'),
        +    'COMMENT_REGEXP' => array(
        +        //Regular expressions
        +        2 => "/(?<=[\\s^])(s|tr|y)\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/(?:\\\\.|(?!\n)[^\\/\\\\])*\\/[msixpogcde]*(?=[\\s$\\.\\;])|(?<=[\\s^(=])(m|q[qrwx]?)?\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/[msixpogc]*(?=[\\s$\\.\\,\\;\\)])/iU",
        +        //Regular expression match variables
        +        3 => '/\$\d+/',
        +        //Heredoc
        +        4 => '/<<\s*?([\'"]?)([a-zA-Z0-9]+)\1;[^\n]*?\\n.*\\n\\2(?![a-zA-Z0-9])/siU',
        +        //Beastly hack to finish highlighting each POD block
        +        5 => '((?<==end) .+)'
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'HARDQUOTE' => array("'", "'"),            // An optional 2-element array defining the beginning and end of a hard-quoted string
        +    'HARDESCAPE' => array('\\\''),
        +        // Things that must still be escaped inside a hard-quoted string
        +        // If HARDQUOTE is defined, HARDESCAPE must be defined
        +        // This will not work unless the first character of each element is either in the
        +        // QUOTEMARKS array or is the ESCAPE_CHAR
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'do', 'else', 'elsif', 'for', 'if', 'then', 'until',
        +            'while', 'loop', 'repeat', 'my', 'xor', 'or', 'and',
        +            'unless', 'next', 'last', 'redo', 'not', 'our', 'let',
        +            'temp', 'state', 'enum', 'constant', 'continue', 'cmp',
        +            'ne', 'eq', 'lt', 'gt', 'le', 'ge', 'leg', 'div', 'X',
        +            'Z', 'x', 'xx', 'given', 'when', 'default', 'has',
        +            'returns', 'of', 'is', 'does', 'where', 'subset', 'but',
        +            'True', 'False', 'return', 'die', 'fail'
        +            ),
        +        2 => array(
        +            'use', 'sub', 'multi', 'method', 'submethod', 'proto',
        +            'class', 'role', 'grammar', 'regex', 'token', 'rule',
        +            'new', 'BEGIN', 'END', 'CHECK', 'INIT', 'START', 'FIRST',
        +            'ENTER', 'LEAVE', 'KEEP', 'UNDO', 'NEXT', 'LAST', 'PRE',
        +            'POST', 'CATCH', 'CONTROL', 'BUILD'
        +            ),
        +        3 => array(
        +            'all', 'any', 'cat', 'classify', 'defined', 'grep', 'first',
        +            'keys', 'kv', 'join', 'map', 'max', 'min', 'none', 'one', 'pairs',
        +            'print', 'printf', 'roundrobin', 'pick', 'reduce', 'reverse', 'say',
        +            'shape', 'sort', 'srand', 'undefine', 'uri', 'values', 'warn', 'zip',
        +
        +            # Container
        +            'rotate', 'comb', 'end', 'elems', 'delete',
        +            'exists', 'pop', 'push', 'shift', 'splice',
        +            'unshift', 'invert', 'decode',
        +
        +            # Numeric
        +            'succ', 'pred', 'abs', 'exp', 'log',
        +            'log10', 'rand', 'roots', 'cis', 'unpolar', 'i', 'floor',
        +            'ceiling', 'round', 'truncate', 'sign', 'sqrt',
        +            'polar', 're', 'im', 'I', 'atan2', 'nude',
        +            'denominator', 'numerator',
        +
        +            # Str
        +            'p5chop', 'chop', 'p5chomp', 'chomp', 'lc', 'lcfirst',
        +            'uc', 'ucfirst', 'normalize', 'samecase', 'sameaccent',
        +            'capitalize', 'length', 'chars', 'graphs', 'codes',
        +            'bytes', 'encode', 'index', 'pack', 'quotemeta', 'rindex',
        +            'split', 'words', 'flip', 'sprintf', 'fmt',
        +            'substr', 'trim', 'unpack', 'match', 'subst', 'trans'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '<', '>', '=',
        +        '!', '@', '~', '&', '|', '^',
        +        '+','-', '*', '/', '%',
        +        ',', ';', '?', '.', ':',
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #000066;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            2 => 'color: #009966; font-style: italic;',
        +            3 => 'color: #0000ff;',
        +            4 => 'color: #cc0000; font-style: italic;',
        +            5 => 'color: #666666; font-style: italic;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            'HARD' => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;',
        +            'HARD' => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;',
        +            2 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #0000ff;',
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.',
        +        2 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        //Variable
        +        0 => '(?:[$@%]|&)(?:(?:[\^:*?!~]|<)?[a-zA-Z_][a-zA-Z0-9_]*|(?=\.))'
        +        # We treat the . twigil specially so the name can be highlighted as an
        +        # object field (via OBJECT_SPLITTERS).
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'COMMENTS' => array(
        +            'DISALLOWED_BEFORE' => '$'
        +        )
        +    )
        +);
        diff --git a/includes/geshi/pf.php b/includes/geshi/pf.php
        new file mode 100644
        index 0000000..37b30fe
        --- /dev/null
        +++ b/includes/geshi/pf.php
        @@ -0,0 +1,176 @@
        + 'OpenBSD Packet Filter',
        +    'COMMENT_SINGLE' => array('#'),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(
        +        1 => "/\\$\\{[^\\n\\}]*?\\}/i",
        +        2 => '/<<-?\s*?(\'?)([a-zA-Z0-9]+)\1\\n.*\\n\\2(?![a-zA-Z0-9])/siU',
        +        3 => "/\\\\['\"]/siU"
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'HARDQUOTE' => array("'", "'"),
        +    'HARDESCAPE' => array("\'"),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        1 => "#\\\\[nfrtv\\$\\\"\n]#i",
        +        2 => "#\\$[a-z_][a-z0-9_]*#i",
        +        3 => "/\\$\\{[^\\n\\}]*?\\}/i",
        +        4 => "/\\$\\([^\\n\\)]*?\\)/i",
        +        5 => "/`[^`]*`/"
        +        ),
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'pass'
        +        ),
        +        2 => array(
        +            'block'
        +            ),
        +        3 => array(
        +            'quick','keep','state','antispoof','table','persist','file','scrub',
        +            'set','skip','flags','on'
        +            ),
        +        4 => array(
        +            'in','out','proto'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>', ';;', '`','='
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #009900; font-weight: bold;',
        +            2 => 'color: #990000; font-weight: bold;',
        +            3 => 'color: #7a0874;',
        +            4 => 'color: #336699;'
        +            ),
        +        'COMMENTS' => array(
        +            0 => 'color: #666666; font-style: italic;',
        +            1 => 'color: #800000;',
        +            2 => 'color: #cc0000; font-style: italic;',
        +            3 => 'color: #000000; font-weight: bold;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            1 => 'color: #000099; font-weight: bold;',
        +            2 => 'color: #007800;',
        +            3 => 'color: #007800;',
        +            4 => 'color: #007800;',
        +            5 => 'color: #780078;',
        +            'HARD' => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #7a0874; font-weight: bold;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #CC0000;',
        +            'HARD' => 'color: #CC0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #ff00cc;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000000; font-weight: bold;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #007800;',
        +            1 => 'color: #007800;',
        +            2 => 'color: #007800;',
        +            4 => 'color: #007800;',
        +            5 => 'color: #660033;',
        +            6 => 'color: #000099; font-weight: bold;',
        +            7 => 'color: #0000ff;',
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        //Variables (will be handled by comment_regexps)
        +        0 => "\\$\\{[a-zA-Z_][a-zA-Z0-9_]*?\\}",
        +        //Variables without braces
        +        1 => "\\$[a-zA-Z_][a-zA-Z0-9_]*",
        +        //Variable assignment
        +        2 => "(? "\\$[*#\$\\-\\?!]",
        +        //Parameters of commands
        +        5 => "(?<=\s)--?[0-9a-zA-Z\-]+(?=[\s=]|$)",
        +        //IPs
        +        6 => "([0-9]{1,3}\.){3}[0-9]{1,3}",
        +        //Tables
        +        7 => "(<(.*)>)"
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +    ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'COMMENTS' => array(
        +            'DISALLOWED_BEFORE' => '$'
        +        ),
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => "(?  "(?![\.\-a-zA-Z0-9_%\\/])"
        +        )
        +    )
        +);
        diff --git a/includes/geshi/phix.php b/includes/geshi/phix.php
        new file mode 100644
        index 0000000..293d15c
        --- /dev/null
        +++ b/includes/geshi/phix.php
        @@ -0,0 +1,439 @@
        + (1.0.8.9)
        + *  -  First Release
        + *
        + * TODO (updated )
        + * -------------------------
        + * seperate the funtions from the procedures, and have a slight color change for each.
        + *
        + *************************************************************************************
        + *
        + *     This file is part of GeSHi.
        + *
        + *   GeSHi is free software; you can redistribute it and/or modify
        + *   it under the terms of the GNU General Public License as published by
        + *   the Free Software Foundation; either version 2 of the License, or
        + *   (at your option) any later version.
        + *
        + *   GeSHi is distributed in the hope that it will be useful,
        + *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + *   GNU General Public License for more details.
        + *
        + *   You should have received a copy of the GNU General Public License
        + *   along with GeSHi; if not, write to the Free Software
        + *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        + *
        + ************************************************************************************/
        +
        +$language_data = array(
        +    'LANG_NAME' => 'Phix',
        +    'COMMENT_SINGLE' => array(1 => '--'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(2 => '/\/\*(?:(?R)|.)+?\*\//s'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"', '"""', '`'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array( // keywords
        +            'and', 'as',
        +            'break', 'by',
        +            'case', 'constant',
        +            'default', 'do',
        +            'else', 'elsif', 'end', 'enum', 'exit',
        +            'for', 'forward', 'function',
        +            'global',
        +            'if', 'include',
        +            'not',
        +            'or',
        +            'procedure',
        +            'return',
        +            'switch',
        +            'then', 'to', 'type',
        +            'while', 'with', 'without',
        +            'xor'
        +        ),
        +        2 => array( // directives
        +            'console',
        +            'debug',
        +            'fallthru',
        +            'fallthrough', 'format',
        +            'gui',
        +            'ilASM',
        +            'jump_table',
        +            'profile', 'profile_time',
        +            'trace', 'type_check',
        +            'warning'
        +        ),
        +        3 => array( // built-ins
        +            'abort',
        +            'abs',
        +            'adjust_timedate',
        +            'allocate',
        +            'allocate_string',
        +            'allocate_struct',
        +            'allow_break',
        +            'and_bits',
        +            'append',
        +            'arccos',
        +            'arcsin',
        +            'arctan',
        +            'atom',
        +            'atom_to_float32',
        +            'atom_to_float64',
        +            'atom_to_float80',
        +
        +            'bits_to_int',
        +            'bk_color',
        +            'bytes_to_int',
        +
        +            'call',
        +            'call_back',
        +            'call_func',
        +            'call_proc',
        +            'canonical_path',
        +            'ceil',
        +            'change_timezone',
        +            'chdir',
        +            'check_break',
        +            'clear_screen',
        +            'close',
        +            'columnize',
        +            'compare',
        +            'command_line',
        +            'cos',
        +            'crash_file',
        +            'crash_message',
        +            'crash_routine',
        +            'create_thread',
        +            'current_dir',
        +            'cursor',
        +            'custom_sort',
        +            'c_func',
        +            'c_proc',
        +
        +            'date',
        +            'day_of_week',
        +            'day_of_year',
        +            'db_close',
        +            'db_compress',
        +            'db_create',
        +            'db_create_table',
        +            'db_delete_record',
        +            'db_delete_table',
        +            'db_dump',
        +            'db_fatal_id',
        +            'db_find_key',
        +            'db_insert',
        +            'db_open',
        +            'db_record_data',
        +            'db_record_key',
        +            'db_replace_data',
        +            'db_select',
        +            'db_select_table',
        +            'db_table_list',
        +            'db_table_size',
        +            'define_c_func',
        +            'define_c_proc',
        +            'define_c_var',
        +            'define_cfunc',
        +            'define_cproc',
        +            'define_struct',
        +            'delete',
        +            'delete_cs',
        +            'delete_routine',
        +            'dir',
        +            'display_text_image',
        +
        +            'enter_cs',
        +            'equal',
        +            'exit_thread',
        +
        +            'factorial',
        +            'factors',
        +            'find',
        +            'flatten',
        +            'float32_to_atom',
        +            'float64_to_atom',
        +            'float80_to_atom',
        +            'floor',
        +            'flush',
        +            'format_timedate',
        +            'free',
        +            'free_console',
        +
        +            'gcd',
        +            'get',
        +            'getc',
        +            'getenv',
        +            'gets',
        +            'get_bytes',
        +            'get_field_details',
        +            'get_key',
        +            'get_position',
        +            'get_proper_path',
        +            'get_screen_char',
        +            'get_struct_field',
        +            'get_struct_size',
        +            'get_text',
        +            'get_thread_exitcode',
        +
        +            'iif',
        +            'iff',
        +            'include_paths',
        +            'init_cs',
        +            'instance',
        +            'integer',
        +            'int_to_bits',
        +            'int_to_bytes',
        +            'is_leap_year',
        +
        +            'join',
        +
        +            'leave_cs',
        +            'length',
        +            'lock_file',
        +            'log',
        +            'lower',
        +
        +            'machine_bits',
        +            'machine_func',
        +            'machine_proc',
        +            'match',
        +            'max',
        +            'mem_copy',
        +            'mem_set',
        +            'message_box',
        +            'min',
        +            'mod',
        +
        +            'not_bits',
        +
        +            'object',
        +            'open',
        +            'open_dll',
        +            'or_bits',
        +
        +            'parse_date_string',
        +            'peek',
        +            'peek1s',
        +            'peek1u',
        +            'peek2s',
        +            'peek2u',
        +            'peek4s',
        +            'peek4u',
        +            'peek8s',
        +            'peek8u',
        +            'peekNS',
        +            'peek_string',
        +            'permute',
        +            'platform',
        +            'poke',
        +            'poke1',
        +            'poke2',
        +            'poke4',
        +            'poke8',
        +            'pokeN',
        +            'position',
        +            'power',
        +            'prepend',
        +            'prime_factors',
        +            'print',
        +            'printf',
        +            'prompt_number',
        +            'prompt_string',
        +            'puts',
        +            'put_screen_char',
        +
        +            'rand',
        +            'read_bitmap',
        +            'remainder',
        +            'repeat',
        +            'resume_thread',
        +            'reverse',
        +            'rfind',
        +            'round',
        +            'routine_id',
        +
        +            'save_bitmap',
        +            'save_text_image',
        +            'scanf',
        +            'scroll',
        +            'seek',
        +            'sequence',
        +            'set_rand',
        +            'set_struct_field',
        +            'set_system_doevents',
        +            'set_timedate_formats',
        +            'set_timezone',
        +            'set_unicode',
        +            'sign',
        +            'sin',
        +            'sleep',
        +            'sort',
        +            'sprint',
        +            'sprintf',
        +            'sqrt',
        +            'sq_abs',
        +            'sq_add',
        +            'sq_and',
        +            'sq_and_bits',
        +            'sq_arccos',
        +            'sq_arcsin',
        +            'sq_arctan',
        +            'sq_atom',
        +            'sq_ceil',
        +            'sq_cos',
        +            'sq_div',
        +            'sq_eq',
        +            'sq_floor',
        +            'sq_floor_div',
        +            'sq_ge',
        +            'sq_gt',
        +            'sq_int',
        +            'sq_le',
        +            'sq_log',
        +            'sq_lower',
        +            'sq_lt',
        +            'sq_mod',
        +            'sq_mul',
        +            'sq_ne',
        +            'sq_not',
        +            'sq_not_bits',
        +            'sq_or',
        +            'sq_or_bits',
        +            'sq_power',
        +            'sq_rand',
        +            'sq_round',
        +            'sq_rmdr',
        +            'sq_seq',
        +            'sq_sign',
        +            'sq_sin',
        +            'sq_sqrt',
        +            'sq_str',
        +            'sq_sub',
        +            'sq_tan',
        +            'sq_trunc',
        +            'sq_uminus',
        +            'sq_upper',
        +            'sq_xor',
        +            'sq_xor_bits',
        +            'string',
        +            'substitute',
        +            'sum',
        +            'suspend_thread',
        +            'system',
        +            'system_exec',
        +            'system_open',
        +            'system_wait',
        +
        +            'tagset',
        +            'tan',
        +            'task_clock_stop',
        +            'task_clock_start',
        +            'task_create',
        +            'task_list',
        +            'task_schedule',
        +            'task_self',
        +            'task_status',
        +            'task_suspend',
        +            'task_yield',
        +            'text_color',
        +            'text_rows',
        +            'time',
        +            'timedate',
        +            'timedelta',
        +            'trunc',
        +            'try_cs',
        +
        +            'unlock_file',
        +            'upper',
        +
        +            'value',
        +            'video_config',
        +
        +            'wait_key',
        +            'wait_thread',
        +            'walk_dir',
        +            'where',
        +            'wildcard_file',
        +            'wildcard_match',
        +            'wrap',
        +
        +            'xor_bits'
        +        ),
        +    ),
        +    'SYMBOLS' => array(
        +        0 => array(
        +            '(', ')', '{', '}', '[', ']'
        +        ),
        +        1 => array(
        +            '+', '-', '*', '/', '=', '&', '^', '?', ',', ':'
        +        )
        +    ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true
        +    ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #008080;', // keywords
        +            2 => 'color: #008080;', // directives
        +            3 => 'color: #004080;'  // builtins
        +        ),
        +        'COMMENTS' => array(
        +            1 => 'color: #000080; font-style: italic;',
        +            2 => 'color: #000080; font-style: italic;',
        +            'MULTI' => 'color: #000080; font-style: italic;'
        +        ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #009900; font-weight: bold;'
        +        ),
        +        'BRACKETS' => array(
        +            0 => 'color: #0000FF;'
        +        ),
        +        'STRINGS' => array(
        +            0 => 'color: #008000;'
        +        ),
        +        'NUMBERS' => array(
        +            0 => 'color: #000000;'
        +        ),
        +        'METHODS' => array( // Do not exist in Phix)
        +            0 => ''
        +        ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #0000FF;', // brackets
        +            1 => 'color: #0000FF;'  // operators
        +        ),
        +        'REGEXPS' => array(),
        +        'SCRIPT' => array( // Never included in scripts.
        +        )
        +    ),
        +    'REGEXPS' => array(),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +    ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/php-brief.php b/includes/geshi/php-brief.php
        new file mode 100644
        index 0000000..36a960a
        --- /dev/null
        +++ b/includes/geshi/php-brief.php
        @@ -0,0 +1,220 @@
        + 'PHP (brief)',
        +    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    //Heredoc and Nowdoc syntax
        +    'COMMENT_REGEXP' => array(3 => '/<<<\s*?(\'?)([a-zA-Z0-9]+)\1[^\n]*?\\n.*\\n\\2(?![a-zA-Z0-9])/siU'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'HARDQUOTE' => array("'", "'"),
        +    'HARDESCAPE' => array("\'"),
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC |  GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX |
        +        GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'include', 'require', 'include_once', 'require_once',
        +            'for', 'as', 'foreach', 'if', 'elseif', 'else', 'while', 'do', 'endwhile', 'endif', 'switch', 'case', 'endswitch',
        +            'return', 'break'
        +            ),
        +        2 => array(
        +            'null', '__LINE__', '__FILE__',
        +            'false', '<?php',
        +            'true', 'var', 'default',
        +            'function', 'class', 'new', '&new', 'public', 'private', 'interface', 'extends',
        +            'const', 'self'
        +            ),
        +        3 => array(
        +            'func_num_args', 'func_get_arg', 'func_get_args', 'strlen', 'strcmp', 'strncmp', 'strcasecmp', 'strncasecmp', 'each', 'error_reporting', 'define', 'defined',
        +            'trigger_error', 'user_error', 'set_error_handler', 'restore_error_handler', 'get_declared_classes', 'get_loaded_extensions',
        +            'extension_loaded', 'get_extension_funcs', 'debug_backtrace',
        +            'constant', 'bin2hex', 'sleep', 'usleep', 'time', 'mktime', 'gmmktime', 'strftime', 'gmstrftime', 'strtotime', 'date', 'gmdate', 'getdate', 'localtime', 'checkdate', 'flush', 'wordwrap', 'htmlspecialchars', 'htmlentities', 'html_entity_decode', 'md5', 'md5_file', 'crc32', 'getimagesize', 'image_type_to_mime_type', 'phpinfo', 'phpversion', 'phpcredits', 'strnatcmp', 'strnatcasecmp', 'substr_count', 'strspn', 'strcspn', 'strtok', 'strtoupper', 'strtolower', 'strpos', 'strrpos', 'strrev', 'hebrev', 'hebrevc', 'nl2br', 'basename', 'dirname', 'pathinfo', 'stripslashes', 'stripcslashes', 'strstr', 'stristr', 'strrchr', 'str_shuffle', 'str_word_count', 'strcoll', 'substr', 'substr_replace', 'quotemeta', 'ucfirst', 'ucwords', 'strtr', 'addslashes', 'addcslashes', 'rtrim', 'str_replace', 'str_repeat', 'count_chars', 'chunk_split', 'trim', 'ltrim', 'strip_tags', 'similar_text', 'explode', 'implode', 'setlocale', 'localeconv',
        +            'parse_str', 'str_pad', 'chop', 'strchr', 'sprintf', 'printf', 'vprintf', 'vsprintf', 'sscanf', 'fscanf', 'parse_url', 'urlencode', 'urldecode', 'rawurlencode', 'rawurldecode', 'readlink', 'linkinfo', 'link', 'unlink', 'exec', 'system', 'escapeshellcmd', 'escapeshellarg', 'passthru', 'shell_exec', 'proc_open', 'proc_close', 'rand', 'srand', 'getrandmax', 'mt_rand', 'mt_srand', 'mt_getrandmax', 'base64_decode', 'base64_encode', 'abs', 'ceil', 'floor', 'round', 'is_finite', 'is_nan', 'is_infinite', 'bindec', 'hexdec', 'octdec', 'decbin', 'decoct', 'dechex', 'base_convert', 'number_format', 'fmod', 'ip2long', 'long2ip', 'getenv', 'putenv', 'getopt', 'microtime', 'gettimeofday', 'getrusage', 'uniqid', 'quoted_printable_decode', 'set_time_limit', 'get_cfg_var', 'magic_quotes_runtime', 'set_magic_quotes_runtime', 'get_magic_quotes_gpc', 'get_magic_quotes_runtime',
        +            'import_request_variables', 'error_log', 'serialize', 'unserialize', 'memory_get_usage', 'var_dump', 'var_export', 'debug_zval_dump', 'print_r','highlight_file', 'show_source', 'highlight_string', 'ini_get', 'ini_get_all', 'ini_set', 'ini_alter', 'ini_restore', 'get_include_path', 'set_include_path', 'restore_include_path', 'setcookie', 'header', 'headers_sent', 'connection_aborted', 'connection_status', 'ignore_user_abort', 'parse_ini_file', 'is_uploaded_file', 'move_uploaded_file', 'intval', 'floatval', 'doubleval', 'strval', 'gettype', 'settype', 'is_null', 'is_resource', 'is_bool', 'is_long', 'is_float', 'is_int', 'is_integer', 'is_double', 'is_real', 'is_numeric', 'is_string', 'is_array', 'is_object', 'is_scalar',
        +            'ereg', 'ereg_replace', 'eregi', 'eregi_replace', 'split', 'spliti', 'join', 'sql_regcase', 'dl', 'pclose', 'popen', 'readfile', 'rewind', 'rmdir', 'umask', 'fclose', 'feof', 'fgetc', 'fgets', 'fgetss', 'fread', 'fopen', 'fpassthru', 'ftruncate', 'fstat', 'fseek', 'ftell', 'fflush', 'fwrite', 'fputs', 'mkdir', 'rename', 'copy', 'tempnam', 'tmpfile', 'file', 'file_get_contents', 'stream_select', 'stream_context_create', 'stream_context_set_params', 'stream_context_set_option', 'stream_context_get_options', 'stream_filter_prepend', 'stream_filter_append', 'fgetcsv', 'flock', 'get_meta_tags', 'stream_set_write_buffer', 'set_file_buffer', 'set_socket_blocking', 'stream_set_blocking', 'socket_set_blocking', 'stream_get_meta_data', 'stream_register_wrapper', 'stream_wrapper_register', 'stream_set_timeout', 'socket_set_timeout', 'socket_get_status', 'realpath', 'fnmatch', 'fsockopen', 'pfsockopen', 'pack', 'unpack', 'get_browser', 'crypt', 'opendir', 'closedir', 'chdir', 'getcwd', 'rewinddir', 'readdir', 'dir', 'glob', 'fileatime', 'filectime', 'filegroup', 'fileinode', 'filemtime', 'fileowner', 'fileperms', 'filesize', 'filetype', 'file_exists', 'is_writable', 'is_writeable', 'is_readable', 'is_executable', 'is_file', 'is_dir', 'is_link', 'stat', 'lstat', 'chown',
        +            'touch', 'clearstatcache', 'mail', 'ob_start', 'ob_flush', 'ob_clean', 'ob_end_flush', 'ob_end_clean', 'ob_get_flush', 'ob_get_clean', 'ob_get_length', 'ob_get_level', 'ob_get_status', 'ob_get_contents', 'ob_implicit_flush', 'ob_list_handlers', 'ksort', 'krsort', 'natsort', 'natcasesort', 'asort', 'arsort', 'sort', 'rsort', 'usort', 'uasort', 'uksort', 'shuffle', 'array_walk', 'count', 'end', 'prev', 'next', 'reset', 'current', 'key', 'min', 'max', 'in_array', 'array_search', 'extract', 'compact', 'array_fill', 'range', 'array_multisort', 'array_push', 'array_pop', 'array_shift', 'array_unshift', 'array_splice', 'array_slice', 'array_merge', 'array_merge_recursive', 'array_keys', 'array_values', 'array_count_values', 'array_reverse', 'array_reduce', 'array_pad', 'array_flip', 'array_change_key_case', 'array_rand', 'array_unique', 'array_intersect', 'array_intersect_assoc', 'array_diff', 'array_diff_assoc', 'array_sum', 'array_filter', 'array_map', 'array_chunk', 'array_key_exists', 'pos', 'sizeof', 'key_exists', 'assert', 'assert_options', 'version_compare', 'ftok', 'str_rot13', 'aggregate',
        +            'session_name', 'session_module_name', 'session_save_path', 'session_id', 'session_regenerate_id', 'session_decode', 'session_register', 'session_unregister', 'session_is_registered', 'session_encode',
        +            'session_start', 'session_destroy', 'session_unset', 'session_set_save_handler', 'session_cache_limiter', 'session_cache_expire', 'session_set_cookie_params', 'session_get_cookie_params', 'session_write_close', 'preg_match', 'preg_match_all', 'preg_replace', 'preg_replace_callback', 'preg_split', 'preg_quote', 'preg_grep', 'overload', 'ctype_alnum', 'ctype_alpha', 'ctype_cntrl', 'ctype_digit', 'ctype_lower', 'ctype_graph', 'ctype_print', 'ctype_punct', 'ctype_space', 'ctype_upper', 'ctype_xdigit', 'virtual', 'apache_request_headers', 'apache_note', 'apache_lookup_uri', 'apache_child_terminate', 'apache_setenv', 'apache_response_headers', 'apache_get_version', 'getallheaders', 'mysql_connect', 'mysql_pconnect', 'mysql_close', 'mysql_select_db', 'mysql_create_db', 'mysql_drop_db', 'mysql_query', 'mysql_unbuffered_query', 'mysql_db_query', 'mysql_list_dbs', 'mysql_list_tables', 'mysql_list_fields', 'mysql_list_processes', 'mysql_error', 'mysql_errno', 'mysql_affected_rows', 'mysql_insert_id', 'mysql_result', 'mysql_num_rows', 'mysql_num_fields', 'mysql_fetch_row', 'mysql_fetch_array', 'mysql_fetch_assoc', 'mysql_fetch_object', 'mysql_data_seek', 'mysql_fetch_lengths', 'mysql_fetch_field', 'mysql_field_seek', 'mysql_free_result', 'mysql_field_name', 'mysql_field_table', 'mysql_field_len', 'mysql_field_type', 'mysql_field_flags', 'mysql_escape_string', 'mysql_real_escape_string', 'mysql_stat',
        +            'mysql_thread_id', 'mysql_client_encoding', 'mysql_get_client_info', 'mysql_get_host_info', 'mysql_get_proto_info', 'mysql_get_server_info', 'mysql_info', 'mysql', 'mysql_fieldname', 'mysql_fieldtable', 'mysql_fieldlen', 'mysql_fieldtype', 'mysql_fieldflags', 'mysql_selectdb', 'mysql_createdb', 'mysql_dropdb', 'mysql_freeresult', 'mysql_numfields', 'mysql_numrows', 'mysql_listdbs', 'mysql_listtables', 'mysql_listfields', 'mysql_db_name', 'mysql_dbname', 'mysql_tablename', 'mysql_table_name', 'pg_connect', 'pg_pconnect', 'pg_close', 'pg_connection_status', 'pg_connection_busy', 'pg_connection_reset', 'pg_host', 'pg_dbname', 'pg_port', 'pg_tty', 'pg_options', 'pg_ping', 'pg_query', 'pg_send_query', 'pg_cancel_query', 'pg_fetch_result', 'pg_fetch_row', 'pg_fetch_assoc', 'pg_fetch_array', 'pg_fetch_object', 'pg_fetch_all', 'pg_affected_rows', 'pg_get_result', 'pg_result_seek', 'pg_result_status', 'pg_free_result', 'pg_last_oid', 'pg_num_rows', 'pg_num_fields', 'pg_field_name', 'pg_field_num', 'pg_field_size', 'pg_field_type', 'pg_field_prtlen', 'pg_field_is_null', 'pg_get_notify', 'pg_get_pid', 'pg_result_error', 'pg_last_error', 'pg_last_notice', 'pg_put_line', 'pg_end_copy', 'pg_copy_to', 'pg_copy_from',
        +            'pg_trace', 'pg_untrace', 'pg_lo_create', 'pg_lo_unlink', 'pg_lo_open', 'pg_lo_close', 'pg_lo_read', 'pg_lo_write', 'pg_lo_read_all', 'pg_lo_import', 'pg_lo_export', 'pg_lo_seek', 'pg_lo_tell', 'pg_escape_string', 'pg_escape_bytea', 'pg_unescape_bytea', 'pg_client_encoding', 'pg_set_client_encoding', 'pg_meta_data', 'pg_convert', 'pg_insert', 'pg_update', 'pg_delete', 'pg_select', 'pg_exec', 'pg_getlastoid', 'pg_cmdtuples', 'pg_errormessage', 'pg_numrows', 'pg_numfields', 'pg_fieldname', 'pg_fieldsize', 'pg_fieldtype', 'pg_fieldnum', 'pg_fieldprtlen', 'pg_fieldisnull', 'pg_freeresult', 'pg_result', 'pg_loreadall', 'pg_locreate', 'pg_lounlink', 'pg_loopen', 'pg_loclose', 'pg_loread', 'pg_lowrite', 'pg_loimport', 'pg_loexport',
        +            'echo', 'print', 'global', 'static', 'exit', 'array', 'empty', 'eval', 'isset', 'unset', 'die'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        1 => array(
        +            '<%', '<%=', '%>', ''
        +            ),
        +        0 => array(
        +            '(', ')', '[', ']', '{', '}',
        +            '!', '@', '%', '&', '|', '/',
        +            '<', '>',
        +            '=', '-', '+', '*',
        +            '.', ':', ',', ';'
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #990000;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            2 => 'color: #666666; font-style: italic;',
        +            3 => 'color: #0000cc; font-style: italic;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            'HARD' => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;',
        +            'HARD' => 'color: #0000ff;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;',
        +            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #004000;',
        +            2 => 'color: #004000;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;',
        +            1 => 'color: #000000; font-weight: bold;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => '',
        +            2 => '',
        +            3 => '',
        +            4 => '',
        +            5 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => 'http://www.php.net/{FNAMEL}'
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '->',
        +        2 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        //Variables
        +        0 => "[\\$]+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*"
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
        +    'SCRIPT_DELIMITERS' => array(
        +        0 => array(
        +            ' '?>'
        +            ),
        +        1 => array(
        +            ' '?>'
        +            ),
        +        2 => array(
        +            '<%' => '%>'
        +            ),
        +        3 => array(
        +            ''
        +            ),
        +        4 => "/(?P<\\?(?>php\b)?)(?:".
        +            "(?>[^\"'?\\/<]+)|".
        +            "\\?(?!>)|".
        +            "(?>'(?>[^'\\\\]|\\\\'|\\\\\\\|\\\\)*')|".
        +            "(?>\"(?>[^\"\\\\]|\\\\\"|\\\\\\\\|\\\\)*\")|".
        +            "(?>\\/\\*(?>[^\\*]|(?!\\*\\/)\\*)*\\*\\/)|".
        +            "\\/\\/(?>.*?$)|".
        +            "\\/(?=[^*\\/])|".
        +            "<(?!<<)|".
        +            "<<<(?P\w+)\s.*?\s\k".
        +            ")*(?P\\?>|\Z)/sm",
        +        5 => "/(?P<%)(?:".
        +            "(?>[^\"'%\\/<]+)|".
        +            "%(?!>)|".
        +            "(?>'(?>[^'\\\\]|\\\\'|\\\\\\\|\\\\)*')|".
        +            "(?>\"(?>[^\\\"\\\\]|\\\\\"|\\\\\\\\|\\\\)*\")|".
        +            "(?>\\/\\*(?>[^\\*]|(?!\\*\\/)\\*)*\\*\\/)|".
        +            "\\/\\/(?>.*?$)|".
        +            "\\/(?=[^*\\/])|".
        +            "<(?!<<)|".
        +            "<<<(?P\w+)\s.*?\s\k".
        +            ")*(?P%>)/sm"
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => true,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/php.php b/includes/geshi/php.php
        new file mode 100644
        index 0000000..fa50ee8
        --- /dev/null
        +++ b/includes/geshi/php.php
        @@ -0,0 +1,1115 @@
        + 'PHP',
        +    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        //Heredoc and Nowdoc syntax
        +        3 => '/<<<\s*?(\'?)([a-zA-Z0-9]+?)\1[^\n]*?\\n.*\\n\\2(?![a-zA-Z0-9])/siU',
        +        // phpdoc comments
        +        4 => '#/\*\*(?![\*\/]).*\*/#sU',
        +        // Advanced # handling
        +        2 => "/#.*?(?:(?=\?\>)|^)/smi"
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        //Simple Single Char Escapes
        +        1 => "#\\\\[nfrtv\$\"\n\\\\]#i",
        +        //Hexadecimal Char Specs
        +        2 => "#\\\\x[\da-fA-F]{1,2}#i",
        +        //Octal Char Specs
        +        3 => "#\\\\[0-7]{1,3}#",
        +        //String Parsing of Variable Names
        +        4 => "#\\$[a-z0-9_]+(?:\\[[a-z0-9_]+\\]|->[a-z0-9_]+)?|(?:\\{\\$|\\$\\{)[a-z0-9_]+(?:\\[('?)[a-z0-9_]*\\1\\]|->[a-z0-9_]+)*\\}#i",
        +        //Experimental extension supporting cascaded {${$var}} syntax
        +        5 => "#\$[a-z0-9_]+(?:\[[a-z0-9_]+\]|->[a-z0-9_]+)?|(?:\{\$|\$\{)[a-z0-9_]+(?:\[('?)[a-z0-9_]*\\1\]|->[a-z0-9_]+)*\}|\{\$(?R)\}#i",
        +        //Format String support in ""-Strings
        +        6 => "#%(?:%|(?:\d+\\\\\\\$)?\\+?(?:\x20|0|'.)?-?(?:\d+|\\*)?(?:\.\d+)?[bcdefFosuxX])#"
        +        ),
        +    'HARDQUOTE' => array("'", "'"),
        +    'HARDESCAPE' => array("'", "\\"),
        +    'HARDCHAR' => "\\",
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX |
        +        GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'as','break','case','continue','default','do','else','elseif',
        +            'endfor','endforeach','endif','endswitch','endwhile','for',
        +            'foreach','if','include','include_once','require','require_once',
        +            'return','switch','throw','while', 'yield',
        +
        +            'echo','print'
        +            ),
        +        2 => array(
        +            '&new','</script>','<?php','<script language',
        +            'abstract','class','const','declare','extends','function','global',
        +            'implements', 'interface','namespace','new','private','protected',
        +            'public','self','trait','use','var'
        +            ),
        +        3 => array(
        +            'abs','acos','acosh','addcslashes','addslashes','aggregate',
        +            'aggregate_methods','aggregate_methods_by_list',
        +            'aggregate_methods_by_regexp','aggregate_properties',
        +            'aggregate_properties_by_list','aggregate_properties_by_regexp',
        +            'aggregation_info','apache_child_terminate','apache_get_modules',
        +            'apache_get_version','apache_getenv','apache_lookup_uri',
        +            'apache_note','apache_request_headers','apache_response_headers',
        +            'apache_setenv','array','array_change_key_case','array_chunk',
        +            'array_combine','array_count_values','array_diff',
        +            'array_diff_assoc','array_diff_key','array_diff_uassoc',
        +            'array_diff_ukey','array_fill','array_fill_keys','array_filter',
        +            'array_flip','array_intersect','array_intersect_assoc',
        +            'array_intersect_key','array_intersect_uassoc',
        +            'array_intersect_ukey','array_key_exists','array_keys','array_map',
        +            'array_merge','array_merge_recursive','array_multisort','array_pad',
        +            'array_pop','array_product','array_push','array_rand',
        +            'array_reduce','array_reverse','array_search','array_shift',
        +            'array_slice','array_splice','array_sum','array_udiff',
        +            'array_udiff_assoc','array_udiff_uassoc','array_uintersect',
        +            'array_uintersect_assoc','array_uintersect_uassoc','array_unique',
        +            'array_unshift','array_values','array_walk','array_walk_recursive',
        +            'arsort','asin','asinh','asort','assert','assert_options','atan',
        +            'atan2','atanh','base_convert','base64_decode','base64_encode',
        +            'basename','bcadd','bccomp','bcdiv','bcmod','bcmul',
        +            'bcompiler_load','bcompiler_load_exe','bcompiler_parse_class',
        +            'bcompiler_read','bcompiler_write_class','bcompiler_write_constant',
        +            'bcompiler_write_exe_footer','bcompiler_write_file',
        +            'bcompiler_write_footer','bcompiler_write_function',
        +            'bcompiler_write_functions_from_file','bcompiler_write_header',
        +            'bcompiler_write_included_filename','bcpow','bcpowmod','bcscale',
        +            'bcsqrt','bcsub','bin2hex','bindec','bindtextdomain',
        +            'bind_textdomain_codeset','bitset_empty','bitset_equal',
        +            'bitset_excl','bitset_fill','bitset_from_array','bitset_from_hash',
        +            'bitset_from_string','bitset_in','bitset_incl',
        +            'bitset_intersection','bitset_invert','bitset_is_empty',
        +            'bitset_subset','bitset_to_array','bitset_to_hash',
        +            'bitset_to_string','bitset_union','blenc_encrypt','bzclose',
        +            'bzcompress','bzdecompress','bzerrno','bzerror','bzerrstr',
        +            'bzflush','bzopen','bzread','bzwrite','cal_days_in_month',
        +            'cal_from_jd','cal_info','cal_to_jd','call_user_func',
        +            'call_user_func_array','call_user_method','call_user_method_array',
        +            'ceil','chdir','checkdate','checkdnsrr','chgrp','chmod','chop',
        +            'chown','chr','chunk_split','class_exists','class_implements',
        +            'class_parents','classkit_aggregate_methods',
        +            'classkit_doc_comments','classkit_import','classkit_method_add',
        +            'classkit_method_copy','classkit_method_redefine',
        +            'classkit_method_remove','classkit_method_rename','clearstatcache',
        +            'closedir','closelog','com_create_guid','com_event_sink',
        +            'com_get_active_object','com_load_typelib','com_message_pump',
        +            'com_print_typeinfo','compact','confirm_phpdoc_compiled',
        +            'connection_aborted','connection_status','constant',
        +            'convert_cyr_string','convert_uudecode','convert_uuencode','copy',
        +            'cos','cosh','count','count_chars','cpdf_add_annotation',
        +            'cpdf_add_outline','cpdf_arc','cpdf_begin_text','cpdf_circle',
        +            'cpdf_clip','cpdf_close','cpdf_closepath',
        +            'cpdf_closepath_fill_stroke','cpdf_closepath_stroke',
        +            'cpdf_continue_text','cpdf_curveto','cpdf_end_text','cpdf_fill',
        +            'cpdf_fill_stroke','cpdf_finalize','cpdf_finalize_page',
        +            'cpdf_global_set_document_limits','cpdf_import_jpeg','cpdf_lineto',
        +            'cpdf_moveto','cpdf_newpath','cpdf_open','cpdf_output_buffer',
        +            'cpdf_page_init','cpdf_rect','cpdf_restore','cpdf_rlineto',
        +            'cpdf_rmoveto','cpdf_rotate','cpdf_rotate_text','cpdf_save',
        +            'cpdf_save_to_file','cpdf_scale','cpdf_set_action_url',
        +            'cpdf_set_char_spacing','cpdf_set_creator','cpdf_set_current_page',
        +            'cpdf_set_font','cpdf_set_font_directories',
        +            'cpdf_set_font_map_file','cpdf_set_horiz_scaling',
        +            'cpdf_set_keywords','cpdf_set_leading','cpdf_set_page_animation',
        +            'cpdf_set_subject','cpdf_set_text_matrix','cpdf_set_text_pos',
        +            'cpdf_set_text_rendering','cpdf_set_text_rise','cpdf_set_title',
        +            'cpdf_set_viewer_preferences','cpdf_set_word_spacing',
        +            'cpdf_setdash','cpdf_setflat','cpdf_setgray','cpdf_setgray_fill',
        +            'cpdf_setgray_stroke','cpdf_setlinecap','cpdf_setlinejoin',
        +            'cpdf_setlinewidth','cpdf_setmiterlimit','cpdf_setrgbcolor',
        +            'cpdf_setrgbcolor_fill','cpdf_setrgbcolor_stroke','cpdf_show',
        +            'cpdf_show_xy','cpdf_stringwidth','cpdf_stroke','cpdf_text',
        +            'cpdf_translate','crack_check','crack_closedict',
        +            'crack_getlastmessage','crack_opendict','crc32','create_function',
        +            'crypt','ctype_alnum','ctype_alpha','ctype_cntrl','ctype_digit',
        +            'ctype_graph','ctype_lower','ctype_print','ctype_punct',
        +            'ctype_space','ctype_upper','ctype_xdigit','curl_close',
        +            'curl_copy_handle','curl_errno','curl_error','curl_exec',
        +            'curl_getinfo','curl_init','curl_multi_add_handle',
        +            'curl_multi_close','curl_multi_exec','curl_multi_getcontent',
        +            'curl_multi_info_read','curl_multi_init','curl_multi_remove_handle',
        +            'curl_multi_select','curl_setopt','curl_setopt_array',
        +            'curl_version','current','cvsclient_connect','cvsclient_log',
        +            'cvsclient_login','cvsclient_retrieve','date','date_create',
        +            'date_date_set','date_default_timezone_get',
        +            'date_default_timezone_set','date_format','date_isodate_set',
        +            'date_modify','date_offset_get','date_parse','date_sun_info',
        +            'date_sunrise','date_sunset','date_time_set','date_timezone_get',
        +            'date_timezone_set','db_id_list','dba_close','dba_delete',
        +            'dba_exists','dba_fetch','dba_firstkey','dba_handlers','dba_insert',
        +            'dba_key_split','dba_list','dba_nextkey','dba_open','dba_optimize',
        +            'dba_popen','dba_replace','dba_sync','dbase_add_record',
        +            'dbase_close','dbase_create','dbase_delete_record',
        +            'dbase_get_header_info','dbase_get_record',
        +            'dbase_get_record_with_names','dbase_numfields','dbase_numrecords',
        +            'dbase_open','dbase_pack','dbase_replace_record',
        +            'dbg_get_all_contexts','dbg_get_all_module_names',
        +            'dbg_get_all_source_lines','dbg_get_context_name',
        +            'dbg_get_module_name','dbg_get_profiler_results',
        +            'dbg_get_source_context','dblist','dbmclose','dbmdelete',
        +            'dbmexists','dbmfetch','dbmfirstkey','dbminsert','dbmnextkey',
        +            'dbmopen','dbmreplace','dbx_close','dbx_compare','dbx_connect',
        +            'dbx_error','dbx_escape_string','dbx_fetch_row','dbx_query',
        +            'dbx_sort','dcgettext','dcngettext','deaggregate','debug_backtrace',
        +            'debug_zval_dump','debugbreak','decbin','dechex','decoct','define',
        +            'defined','define_syslog_variables','deg2rad','dgettext','die',
        +            'dio_close','dio_open','dio_read','dio_seek','dio_stat','dio_write',
        +            'dir','dirname','disk_free_space','disk_total_space',
        +            'diskfreespace','dl','dngettext','docblock_token_name',
        +            'docblock_tokenize','dom_import_simplexml','domxml_add_root',
        +            'domxml_attributes','domxml_children','domxml_doc_add_root',
        +            'domxml_doc_document_element','domxml_doc_get_element_by_id',
        +            'domxml_doc_get_elements_by_tagname','domxml_doc_get_root',
        +            'domxml_doc_set_root','domxml_doc_validate','domxml_doc_xinclude',
        +            'domxml_dump_mem','domxml_dump_mem_file','domxml_dump_node',
        +            'domxml_dumpmem','domxml_elem_get_attribute',
        +            'domxml_elem_set_attribute','domxml_get_attribute','domxml_getattr',
        +            'domxml_html_dump_mem','domxml_new_child','domxml_new_doc',
        +            'domxml_new_xmldoc','domxml_node','domxml_node_add_namespace',
        +            'domxml_node_attributes','domxml_node_children',
        +            'domxml_node_get_content','domxml_node_has_attributes',
        +            'domxml_node_new_child','domxml_node_set_content',
        +            'domxml_node_set_namespace','domxml_node_unlink_node',
        +            'domxml_open_file','domxml_open_mem','domxml_parser',
        +            'domxml_parser_add_chunk','domxml_parser_cdata_section',
        +            'domxml_parser_characters','domxml_parser_comment',
        +            'domxml_parser_end','domxml_parser_end_document',
        +            'domxml_parser_end_element','domxml_parser_entity_reference',
        +            'domxml_parser_get_document','domxml_parser_namespace_decl',
        +            'domxml_parser_processing_instruction',
        +            'domxml_parser_start_document','domxml_parser_start_element',
        +            'domxml_root','domxml_set_attribute','domxml_setattr',
        +            'domxml_substitute_entities_default','domxml_unlink_node',
        +            'domxml_version','domxml_xmltree','doubleval','each','easter_date',
        +            'easter_days','empty','end','ereg','ereg_replace','eregi',
        +            'eregi_replace','error_get_last','error_log','error_reporting',
        +            'escapeshellarg','escapeshellcmd','eval','event_deschedule',
        +            'event_dispatch','event_free','event_handle_signal',
        +            'event_have_events','event_init','event_new','event_pending',
        +            'event_priority_set','event_schedule','event_set','event_timeout',
        +            'exec','exif_imagetype','exif_read_data','exif_tagname',
        +            'exif_thumbnail','exit','exp','explode','expm1','extension_loaded',
        +            'extract','ezmlm_hash','fbird_add_user','fbird_affected_rows',
        +            'fbird_backup','fbird_blob_add','fbird_blob_cancel',
        +            'fbird_blob_close','fbird_blob_create','fbird_blob_echo',
        +            'fbird_blob_get','fbird_blob_import','fbird_blob_info',
        +            'fbird_blob_open','fbird_close','fbird_commit','fbird_commit_ret',
        +            'fbird_connect','fbird_db_info','fbird_delete_user','fbird_drop_db',
        +            'fbird_errcode','fbird_errmsg','fbird_execute','fbird_fetch_assoc',
        +            'fbird_fetch_object','fbird_fetch_row','fbird_field_info',
        +            'fbird_free_event_handler','fbird_free_query','fbird_free_result',
        +            'fbird_gen_id','fbird_maintain_db','fbird_modify_user',
        +            'fbird_name_result','fbird_num_fields','fbird_num_params',
        +            'fbird_param_info','fbird_pconnect','fbird_prepare','fbird_query',
        +            'fbird_restore','fbird_rollback','fbird_rollback_ret',
        +            'fbird_server_info','fbird_service_attach','fbird_service_detach',
        +            'fbird_set_event_handler','fbird_trans','fbird_wait_event','fclose',
        +            'fdf_add_doc_javascript','fdf_add_template','fdf_close',
        +            'fdf_create','fdf_enum_values','fdf_errno','fdf_error','fdf_get_ap',
        +            'fdf_get_attachment','fdf_get_encoding','fdf_get_file',
        +            'fdf_get_flags','fdf_get_opt','fdf_get_status','fdf_get_value',
        +            'fdf_get_version','fdf_header','fdf_next_field_name','fdf_open',
        +            'fdf_open_string','fdf_remove_item','fdf_save','fdf_save_string',
        +            'fdf_set_ap','fdf_set_encoding','fdf_set_file','fdf_set_flags',
        +            'fdf_set_javascript_action','fdf_set_on_import_javascript',
        +            'fdf_set_opt','fdf_set_status','fdf_set_submit_form_action',
        +            'fdf_set_target_frame','fdf_set_value','fdf_set_version','feof',
        +            'fflush','fgetc','fgetcsv','fgets','fgetss','file','file_exists',
        +            'file_get_contents','file_put_contents','fileatime','filectime',
        +            'filegroup','fileinode','filemtime','fileowner','fileperms',
        +            'filepro','filepro_fieldcount','filepro_fieldname',
        +            'filepro_fieldtype','filepro_fieldwidth','filepro_retrieve',
        +            'filepro_rowcount','filesize','filetype','filter_has_var',
        +            'filter_id','filter_input','filter_input_array','filter_list',
        +            'filter_var','filter_var_array','finfo_buffer','finfo_close',
        +            'finfo_file','finfo_open','finfo_set_flags','floatval','flock',
        +            'floor','flush','fmod','fnmatch','fopen','fpassthru','fprintf',
        +            'fputcsv','fputs','fread','frenchtojd','fribidi_charset_info',
        +            'fribidi_get_charsets','fribidi_log2vis','fscanf','fseek',
        +            'fsockopen','fstat','ftell','ftok','ftp_alloc','ftp_cdup',
        +            'ftp_chdir','ftp_chmod','ftp_close','ftp_connect','ftp_delete',
        +            'ftp_exec','ftp_fget','ftp_fput','ftp_get','ftp_get_option',
        +            'ftp_login','ftp_mdtm','ftp_mkdir','ftp_nb_continue','ftp_nb_fget',
        +            'ftp_nb_fput','ftp_nb_get','ftp_nb_put','ftp_nlist','ftp_pasv',
        +            'ftp_put','ftp_pwd','ftp_quit','ftp_raw','ftp_rawlist','ftp_rename',
        +            'ftp_rmdir','ftp_set_option','ftp_site','ftp_size',
        +            'ftp_ssl_connect','ftp_systype','ftruncate','function_exists',
        +            'func_get_arg','func_get_args','func_num_args','fwrite','gd_info',
        +            'getallheaders','getcwd','getdate','getenv','gethostbyaddr',
        +            'gethostbyname','gethostbynamel','getimagesize','getlastmod',
        +            'getmxrr','getmygid','getmyinode','getmypid','getmyuid','getopt',
        +            'getprotobyname','getprotobynumber','getrandmax','getrusage',
        +            'getservbyname','getservbyport','gettext','gettimeofday','gettype',
        +            'get_browser','get_cfg_var','get_class','get_class_methods',
        +            'get_class_vars','get_current_user','get_declared_classes',
        +            'get_defined_constants','get_defined_functions','get_defined_vars',
        +            'get_extension_funcs','get_headers','get_html_translation_table',
        +            'get_included_files','get_include_path','get_loaded_extensions',
        +            'get_magic_quotes_gpc','get_magic_quotes_runtime','get_meta_tags',
        +            'get_object_vars','get_parent_class','get_required_files',
        +            'get_resource_type','glob','gmdate','gmmktime','gmp_abs','gmp_add',
        +            'gmp_and','gmp_clrbit','gmp_cmp','gmp_com','gmp_div','gmp_div_q',
        +            'gmp_div_qr','gmp_div_r','gmp_divexact','gmp_fact','gmp_gcd',
        +            'gmp_gcdext','gmp_hamdist','gmp_init','gmp_intval','gmp_invert',
        +            'gmp_jacobi','gmp_legendre','gmp_mod','gmp_mul','gmp_neg',
        +            'gmp_nextprime','gmp_or','gmp_perfect_square','gmp_popcount',
        +            'gmp_pow','gmp_powm','gmp_prob_prime','gmp_random','gmp_scan0',
        +            'gmp_scan1','gmp_setbit','gmp_sign','gmp_sqrt','gmp_sqrtrem',
        +            'gmp_strval','gmp_sub','gmp_xor','gmstrftime','gopher_parsedir',
        +            'gregoriantojd','gzclose','gzcompress','gzdeflate','gzencode',
        +            'gzeof','gzfile','gzgetc','gzgets','gzgetss','gzinflate','gzopen',
        +            'gzpassthru','gzputs','gzread','gzrewind','gzseek','gztell',
        +            'gzuncompress','gzwrite','hash','hash_algos','hash_file',
        +            'hash_final','hash_hmac','hash_hmac_file','hash_init','hash_update',
        +            'hash_update_file','hash_update_stream','header','headers_list',
        +            'headers_sent','hebrev','hebrevc','hexdec','highlight_file',
        +            'highlight_string','html_doc','html_doc_file','html_entity_decode',
        +            'htmlentities','htmlspecialchars','htmlspecialchars_decode',
        +            'http_build_cookie','http_build_query','http_build_str',
        +            'http_build_url','http_cache_etag','http_cache_last_modified',
        +            'http_chunked_decode','http_date','http_deflate','http_get',
        +            'http_get_request_body','http_get_request_body_stream',
        +            'http_get_request_headers','http_head','http_inflate',
        +            'http_match_etag','http_match_modified','http_match_request_header',
        +            'http_negotiate_charset','http_negotiate_content_type',
        +            'http_negotiate_language','http_parse_cookie','http_parse_headers',
        +            'http_parse_message','http_parse_params',
        +            'http_persistent_handles_clean','http_persistent_handles_count',
        +            'http_persistent_handles_ident','http_post_data','http_post_fields',
        +            'http_put_data','http_put_file','http_put_stream','http_redirect',
        +            'http_request','http_request_body_encode',
        +            'http_request_method_exists','http_request_method_name',
        +            'http_request_method_register','http_request_method_unregister',
        +            'http_send_content_disposition','http_send_content_type',
        +            'http_send_data','http_send_file','http_send_last_modified',
        +            'http_send_status','http_send_stream','http_support',
        +            'http_throttle','hypot','i18n_convert','i18n_discover_encoding',
        +            'i18n_http_input','i18n_http_output','i18n_internal_encoding',
        +            'i18n_ja_jp_hantozen','i18n_mime_header_decode',
        +            'i18n_mime_header_encode','ibase_add_user','ibase_affected_rows',
        +            'ibase_backup','ibase_blob_add','ibase_blob_cancel',
        +            'ibase_blob_close','ibase_blob_create','ibase_blob_echo',
        +            'ibase_blob_get','ibase_blob_import','ibase_blob_info',
        +            'ibase_blob_open','ibase_close','ibase_commit','ibase_commit_ret',
        +            'ibase_connect','ibase_db_info','ibase_delete_user','ibase_drop_db',
        +            'ibase_errcode','ibase_errmsg','ibase_execute','ibase_fetch_assoc',
        +            'ibase_fetch_object','ibase_fetch_row','ibase_field_info',
        +            'ibase_free_event_handler','ibase_free_query','ibase_free_result',
        +            'ibase_gen_id','ibase_maintain_db','ibase_modify_user',
        +            'ibase_name_result','ibase_num_fields','ibase_num_params',
        +            'ibase_param_info','ibase_pconnect','ibase_prepare','ibase_query',
        +            'ibase_restore','ibase_rollback','ibase_rollback_ret',
        +            'ibase_server_info','ibase_service_attach','ibase_service_detach',
        +            'ibase_set_event_handler','ibase_trans','ibase_wait_event','iconv',
        +            'iconv_get_encoding','iconv_mime_decode',
        +            'iconv_mime_decode_headers','iconv_mime_encode',
        +            'iconv_set_encoding','iconv_strlen','iconv_strpos','iconv_strrpos',
        +            'iconv_substr','id3_get_frame_long_name','id3_get_frame_short_name',
        +            'id3_get_genre_id','id3_get_genre_list','id3_get_genre_name',
        +            'id3_get_tag','id3_get_version','id3_remove_tag','id3_set_tag',
        +            'idate','ignore_user_abort','image_type_to_extension',
        +            'image_type_to_mime_type','image2wbmp','imagealphablending',
        +            'imageantialias','imagearc','imagechar','imagecharup',
        +            'imagecolorallocate','imagecolorallocatealpha','imagecolorat',
        +            'imagecolorclosest','imagecolorclosestalpha','imagecolordeallocate',
        +            'imagecolorexact','imagecolorexactalpha','imagecolormatch',
        +            'imagecolorresolve','imagecolorresolvealpha','imagecolorset',
        +            'imagecolorsforindex','imagecolorstotal','imagecolortransparent',
        +            'imageconvolution','imagecopy','imagecopymerge',
        +            'imagecopymergegray','imagecopyresampled','imagecopyresized',
        +            'imagecreate','imagecreatefromgd','imagecreatefromgd2',
        +            'imagecreatefromgd2part','imagecreatefromgif','imagecreatefromjpeg',
        +            'imagecreatefrompng','imagecreatefromstring','imagecreatefromwbmp',
        +            'imagecreatefromxbm','imagecreatetruecolor','imagedashedline',
        +            'imagedestroy','imageellipse','imagefill','imagefilledarc',
        +            'imagefilledellipse','imagefilledpolygon','imagefilledrectangle',
        +            'imagefilltoborder','imagefilter','imagefontheight',
        +            'imagefontwidth','imageftbbox','imagefttext','imagegammacorrect',
        +            'imagegd','imagegd2','imagegif','imagegrabscreen','imagegrabwindow',
        +            'imageinterlace','imageistruecolor','imagejpeg','imagelayereffect',
        +            'imageline','imageloadfont','imagepalettecopy','imagepng',
        +            'imagepolygon','imagepsbbox','imagepsencodefont',
        +            'imagepsextendfont','imagepsfreefont','imagepsloadfont',
        +            'imagepsslantfont','imagepstext','imagerectangle','imagerotate',
        +            'imagesavealpha','imagesetbrush','imagesetpixel','imagesetstyle',
        +            'imagesetthickness','imagesettile','imagestring','imagestringup',
        +            'imagesx','imagesy','imagetruecolortopalette','imagettfbbox',
        +            'imagettftext','imagetypes','imagewbmp','imagexbm','imap_8bit',
        +            'imap_alerts','imap_append','imap_base64','imap_binary','imap_body',
        +            'imap_bodystruct','imap_check','imap_clearflag_full','imap_close',
        +            'imap_create','imap_createmailbox','imap_delete',
        +            'imap_deletemailbox','imap_errors','imap_expunge',
        +            'imap_fetch_overview','imap_fetchbody','imap_fetchheader',
        +            'imap_fetchstructure','imap_fetchtext','imap_get_quota',
        +            'imap_get_quotaroot','imap_getacl','imap_getmailboxes',
        +            'imap_getsubscribed','imap_header','imap_headerinfo','imap_headers',
        +            'imap_last_error','imap_list','imap_listmailbox',
        +            'imap_listsubscribed','imap_lsub','imap_mail','imap_mail_compose',
        +            'imap_mail_copy','imap_mail_move','imap_mailboxmsginfo',
        +            'imap_mime_header_decode','imap_msgno','imap_num_msg',
        +            'imap_num_recent','imap_open','imap_ping','imap_qprint',
        +            'imap_rename','imap_renamemailbox','imap_reopen',
        +            'imap_rfc822_parse_adrlist','imap_rfc822_parse_headers',
        +            'imap_rfc822_write_address','imap_savebody','imap_scan',
        +            'imap_scanmailbox','imap_search','imap_set_quota','imap_setacl',
        +            'imap_setflag_full','imap_sort','imap_status','imap_subscribe',
        +            'imap_thread','imap_timeout','imap_uid','imap_undelete',
        +            'imap_unsubscribe','imap_utf7_decode','imap_utf7_encode',
        +            'imap_utf8','implode','import_request_variables','in_array',
        +            'ini_alter','ini_get','ini_get_all','ini_restore','ini_set',
        +            'intval','ip2long','iptcembed','iptcparse','isset','is_a',
        +            'is_array','is_bool','is_callable','is_dir','is_double',
        +            'is_executable','is_file','is_finite','is_float','is_infinite',
        +            'is_int','is_integer','is_link','is_long','is_nan','is_null',
        +            'is_numeric','is_object','is_readable','is_real','is_resource',
        +            'is_scalar','is_soap_fault','is_string','is_subclass_of',
        +            'is_uploaded_file','is_writable','is_writeable','iterator_apply',
        +            'iterator_count','iterator_to_array','java_last_exception_clear',
        +            'java_last_exception_get','jddayofweek','jdmonthname','jdtofrench',
        +            'jdtogregorian','jdtojewish','jdtojulian','jdtounix','jewishtojd',
        +            'join','jpeg2wbmp','json_decode','json_encode','juliantojd','key',
        +            'key_exists','krsort','ksort','lcg_value','ldap_add','ldap_bind',
        +            'ldap_close','ldap_compare','ldap_connect','ldap_count_entries',
        +            'ldap_delete','ldap_dn2ufn','ldap_err2str','ldap_errno',
        +            'ldap_error','ldap_explode_dn','ldap_first_attribute',
        +            'ldap_first_entry','ldap_first_reference','ldap_free_result',
        +            'ldap_get_attributes','ldap_get_dn','ldap_get_entries',
        +            'ldap_get_option','ldap_get_values','ldap_get_values_len',
        +            'ldap_list','ldap_mod_add','ldap_mod_del','ldap_mod_replace',
        +            'ldap_modify','ldap_next_attribute','ldap_next_entry',
        +            'ldap_next_reference','ldap_parse_reference','ldap_parse_result',
        +            'ldap_read','ldap_rename','ldap_search','ldap_set_option',
        +            'ldap_sort','ldap_start_tls','ldap_unbind','levenshtein',
        +            'libxml_clear_errors','libxml_get_errors','libxml_get_last_error',
        +            'libxml_set_streams_context','libxml_use_internal_errors','link',
        +            'linkinfo','list','localeconv','localtime','log','log1p','log10',
        +            'long2ip','lstat','ltrim','lzf_compress','lzf_decompress',
        +            'lzf_optimized_for','magic_quotes_runtime','mail','max','mbereg',
        +            'mberegi','mberegi_replace','mbereg_match','mbereg_replace',
        +            'mbereg_search','mbereg_search_getpos','mbereg_search_getregs',
        +            'mbereg_search_init','mbereg_search_pos','mbereg_search_regs',
        +            'mbereg_search_setpos','mbregex_encoding','mbsplit','mbstrcut',
        +            'mbstrlen','mbstrpos','mbstrrpos','mbsubstr','mb_check_encoding',
        +            'mb_convert_case','mb_convert_encoding','mb_convert_kana',
        +            'mb_convert_variables','mb_decode_mimeheader',
        +            'mb_decode_numericentity','mb_detect_encoding','mb_detect_order',
        +            'mb_encode_mimeheader','mb_encode_numericentity','mb_ereg',
        +            'mb_eregi','mb_eregi_replace','mb_ereg_match','mb_ereg_replace',
        +            'mb_ereg_search','mb_ereg_search_getpos','mb_ereg_search_getregs',
        +            'mb_ereg_search_init','mb_ereg_search_pos','mb_ereg_search_regs',
        +            'mb_ereg_search_setpos','mb_get_info','mb_http_input',
        +            'mb_http_output','mb_internal_encoding','mb_language',
        +            'mb_list_encodings','mb_output_handler','mb_parse_str',
        +            'mb_preferred_mime_name','mb_regex_encoding','mb_regex_set_options',
        +            'mb_send_mail','mb_split','mb_strcut','mb_strimwidth','mb_stripos',
        +            'mb_stristr','mb_strlen','mb_strpos','mb_strrchr','mb_strrichr',
        +            'mb_strripos','mb_strrpos','mb_strstr','mb_strtolower',
        +            'mb_strtoupper','mb_strwidth','mb_substitute_character','mb_substr',
        +            'mb_substr_count','mcrypt_cbc','mcrypt_cfb','mcrypt_create_iv',
        +            'mcrypt_decrypt','mcrypt_ecb','mcrypt_enc_get_algorithms_name',
        +            'mcrypt_enc_get_block_size','mcrypt_enc_get_iv_size',
        +            'mcrypt_enc_get_key_size','mcrypt_enc_get_modes_name',
        +            'mcrypt_enc_get_supported_key_sizes',
        +            'mcrypt_enc_is_block_algorithm',
        +            'mcrypt_enc_is_block_algorithm_mode','mcrypt_enc_is_block_mode',
        +            'mcrypt_enc_self_test','mcrypt_encrypt','mcrypt_generic',
        +            'mcrypt_generic_deinit','mcrypt_generic_end','mcrypt_generic_init',
        +            'mcrypt_get_block_size','mcrypt_get_cipher_name',
        +            'mcrypt_get_iv_size','mcrypt_get_key_size','mcrypt_list_algorithms',
        +            'mcrypt_list_modes','mcrypt_module_close',
        +            'mcrypt_module_get_algo_block_size',
        +            'mcrypt_module_get_algo_key_size',
        +            'mcrypt_module_get_supported_key_sizes',
        +            'mcrypt_module_is_block_algorithm',
        +            'mcrypt_module_is_block_algorithm_mode',
        +            'mcrypt_module_is_block_mode','mcrypt_module_open',
        +            'mcrypt_module_self_test','mcrypt_ofb','md5','md5_file',
        +            'mdecrypt_generic','memcache_add','memcache_add_server',
        +            'memcache_close','memcache_connect','memcache_debug',
        +            'memcache_decrement','memcache_delete','memcache_flush',
        +            'memcache_get','memcache_get_extended_stats',
        +            'memcache_get_server_status','memcache_get_stats',
        +            'memcache_get_version','memcache_increment','memcache_pconnect',
        +            'memcache_replace','memcache_set','memcache_set_compress_threshold',
        +            'memcache_set_server_params','memory_get_peak_usage',
        +            'memory_get_usage','metaphone','mhash','mhash_count',
        +            'mhash_get_block_size','mhash_get_hash_name','mhash_keygen_s2k',
        +            'method_exists','microtime','mime_content_type','min',
        +            'ming_keypress','ming_setcubicthreshold','ming_setscale',
        +            'ming_useconstants','ming_useswfversion','mkdir','mktime',
        +            'money_format','move_uploaded_file','msql','msql_affected_rows',
        +            'msql_close','msql_connect','msql_create_db','msql_createdb',
        +            'msql_data_seek','msql_db_query','msql_dbname','msql_drop_db',
        +            'msql_dropdb','msql_error','msql_fetch_array','msql_fetch_field',
        +            'msql_fetch_object','msql_fetch_row','msql_field_flags',
        +            'msql_field_len','msql_field_name','msql_field_seek',
        +            'msql_field_table','msql_field_type','msql_fieldflags',
        +            'msql_fieldlen','msql_fieldname','msql_fieldtable','msql_fieldtype',
        +            'msql_free_result','msql_freeresult','msql_list_dbs',
        +            'msql_list_fields','msql_list_tables','msql_listdbs',
        +            'msql_listfields','msql_listtables','msql_num_fields',
        +            'msql_num_rows','msql_numfields','msql_numrows','msql_pconnect',
        +            'msql_query','msql_regcase','msql_result','msql_select_db',
        +            'msql_selectdb','msql_tablename','mssql_bind','mssql_close',
        +            'mssql_connect','mssql_data_seek','mssql_execute',
        +            'mssql_fetch_array','mssql_fetch_assoc','mssql_fetch_batch',
        +            'mssql_fetch_field','mssql_fetch_object','mssql_fetch_row',
        +            'mssql_field_length','mssql_field_name','mssql_field_seek',
        +            'mssql_field_type','mssql_free_result','mssql_free_statement',
        +            'mssql_get_last_message','mssql_guid_string','mssql_init',
        +            'mssql_min_error_severity','mssql_min_message_severity',
        +            'mssql_next_result','mssql_num_fields','mssql_num_rows',
        +            'mssql_pconnect','mssql_query','mssql_result','mssql_rows_affected',
        +            'mssql_select_db','mt_getrandmax','mt_rand','mt_srand','mysql',
        +            'mysql_affected_rows','mysql_client_encoding','mysql_close',
        +            'mysql_connect','mysql_createdb','mysql_create_db',
        +            'mysql_data_seek','mysql_dbname','mysql_db_name','mysql_db_query',
        +            'mysql_dropdb','mysql_drop_db','mysql_errno','mysql_error',
        +            'mysql_escape_string','mysql_fetch_array','mysql_fetch_assoc',
        +            'mysql_fetch_field','mysql_fetch_lengths','mysql_fetch_object',
        +            'mysql_fetch_row','mysql_fieldflags','mysql_fieldlen',
        +            'mysql_fieldname','mysql_fieldtable','mysql_fieldtype',
        +            'mysql_field_flags','mysql_field_len','mysql_field_name',
        +            'mysql_field_seek','mysql_field_table','mysql_field_type',
        +            'mysql_freeresult','mysql_free_result','mysql_get_client_info',
        +            'mysql_get_host_info','mysql_get_proto_info',
        +            'mysql_get_server_info','mysql_info','mysql_insert_id',
        +            'mysql_listdbs','mysql_listfields','mysql_listtables',
        +            'mysql_list_dbs','mysql_list_fields','mysql_list_processes',
        +            'mysql_list_tables','mysql_numfields','mysql_numrows',
        +            'mysql_num_fields','mysql_num_rows','mysql_pconnect','mysql_ping',
        +            'mysql_query','mysql_real_escape_string','mysql_result',
        +            'mysql_selectdb','mysql_select_db','mysql_set_charset','mysql_stat',
        +            'mysql_tablename','mysql_table_name','mysql_thread_id',
        +            'mysql_unbuffered_query','mysqli_affected_rows','mysqli_autocommit',
        +            'mysqli_bind_param','mysqli_bind_result','mysqli_change_user',
        +            'mysqli_character_set_name','mysqli_client_encoding','mysqli_close',
        +            'mysqli_commit','mysqli_connect','mysqli_connect_errno',
        +            'mysqli_connect_error','mysqli_data_seek','mysqli_debug',
        +            'mysqli_disable_reads_from_master','mysqli_disable_rpl_parse',
        +            'mysqli_dump_debug_info','mysqli_embedded_server_end',
        +            'mysqli_embedded_server_start','mysqli_enable_reads_from_master',
        +            'mysqli_enable_rpl_parse','mysqli_errno','mysqli_error',
        +            'mysqli_escape_string','mysqli_execute','mysqli_fetch',
        +            'mysqli_fetch_array','mysqli_fetch_assoc','mysqli_fetch_field',
        +            'mysqli_fetch_field_direct','mysqli_fetch_fields',
        +            'mysqli_fetch_lengths','mysqli_fetch_object','mysqli_fetch_row',
        +            'mysqli_field_count','mysqli_field_seek','mysqli_field_tell',
        +            'mysqli_free_result','mysqli_get_charset','mysqli_get_client_info',
        +            'mysqli_get_client_version','mysqli_get_host_info',
        +            'mysqli_get_metadata','mysqli_get_proto_info',
        +            'mysqli_get_server_info','mysqli_get_server_version',
        +            'mysqli_get_warnings','mysqli_info','mysqli_init',
        +            'mysqli_insert_id','mysqli_kill','mysqli_master_query',
        +            'mysqli_more_results','mysqli_multi_query','mysqli_next_result',
        +            'mysqli_num_fields','mysqli_num_rows','mysqli_options',
        +            'mysqli_param_count','mysqli_ping','mysqli_prepare','mysqli_query',
        +            'mysqli_real_connect','mysqli_real_escape_string',
        +            'mysqli_real_query','mysqli_report','mysqli_rollback',
        +            'mysqli_rpl_parse_enabled','mysqli_rpl_probe',
        +            'mysqli_rpl_query_type','mysqli_select_db','mysqli_send_long_data',
        +            'mysqli_send_query','mysqli_set_charset',
        +            'mysqli_set_local_infile_default','mysqli_set_local_infile_handler',
        +            'mysqli_set_opt','mysqli_slave_query','mysqli_sqlstate',
        +            'mysqli_ssl_set','mysqli_stat','mysqli_stmt_affected_rows',
        +            'mysqli_stmt_attr_get','mysqli_stmt_attr_set',
        +            'mysqli_stmt_bind_param','mysqli_stmt_bind_result',
        +            'mysqli_stmt_close','mysqli_stmt_data_seek','mysqli_stmt_errno',
        +            'mysqli_stmt_error','mysqli_stmt_execute','mysqli_stmt_fetch',
        +            'mysqli_stmt_field_count','mysqli_stmt_free_result',
        +            'mysqli_stmt_get_warnings','mysqli_stmt_init',
        +            'mysqli_stmt_insert_id','mysqli_stmt_num_rows',
        +            'mysqli_stmt_param_count','mysqli_stmt_prepare','mysqli_stmt_reset',
        +            'mysqli_stmt_result_metadata','mysqli_stmt_send_long_data',
        +            'mysqli_stmt_sqlstate','mysqli_stmt_store_result',
        +            'mysqli_store_result','mysqli_thread_id','mysqli_thread_safe',
        +            'mysqli_use_result','mysqli_warning_count','natcasesort','natsort',
        +            'new_xmldoc','next','ngettext','nl2br','nl_langinfo',
        +            'ntuser_getdomaincontroller','ntuser_getusergroups',
        +            'ntuser_getuserinfo','ntuser_getuserlist','number_format',
        +            'ob_clean','ob_deflatehandler','ob_end_clean','ob_end_flush',
        +            'ob_etaghandler','ob_flush','ob_get_clean','ob_get_contents',
        +            'ob_get_flush','ob_get_length','ob_get_level','ob_get_status',
        +            'ob_gzhandler','ob_iconv_handler','ob_implicit_flush',
        +            'ob_inflatehandler','ob_list_handlers','ob_start','ob_tidyhandler',
        +            'octdec','odbc_autocommit','odbc_binmode','odbc_close',
        +            'odbc_close_all','odbc_columnprivileges','odbc_columns',
        +            'odbc_commit','odbc_connect','odbc_cursor','odbc_data_source',
        +            'odbc_do','odbc_error','odbc_errormsg','odbc_exec','odbc_execute',
        +            'odbc_fetch_array','odbc_fetch_into','odbc_fetch_object',
        +            'odbc_fetch_row','odbc_field_len','odbc_field_name',
        +            'odbc_field_num','odbc_field_precision','odbc_field_scale',
        +            'odbc_field_type','odbc_foreignkeys','odbc_free_result',
        +            'odbc_gettypeinfo','odbc_longreadlen','odbc_next_result',
        +            'odbc_num_fields','odbc_num_rows','odbc_pconnect','odbc_prepare',
        +            'odbc_primarykeys','odbc_procedurecolumns','odbc_procedures',
        +            'odbc_result','odbc_result_all','odbc_rollback','odbc_setoption',
        +            'odbc_specialcolumns','odbc_statistics','odbc_tableprivileges',
        +            'odbc_tables','opendir','openlog','openssl_csr_export',
        +            'openssl_csr_export_to_file','openssl_csr_get_public_key',
        +            'openssl_csr_get_subject','openssl_csr_new','openssl_csr_sign',
        +            'openssl_error_string','openssl_free_key','openssl_get_privatekey',
        +            'openssl_get_publickey','openssl_open','openssl_pkcs12_export',
        +            'openssl_pkcs12_export_to_file','openssl_pkcs12_read',
        +            'openssl_pkcs7_decrypt','openssl_pkcs7_encrypt',
        +            'openssl_pkcs7_sign','openssl_pkcs7_verify','openssl_pkey_export',
        +            'openssl_pkey_export_to_file','openssl_pkey_free',
        +            'openssl_pkey_get_details','openssl_pkey_get_private',
        +            'openssl_pkey_get_public','openssl_pkey_new',
        +            'openssl_private_decrypt','openssl_private_encrypt',
        +            'openssl_public_decrypt','openssl_public_encrypt','openssl_seal',
        +            'openssl_sign','openssl_verify','openssl_x509_checkpurpose',
        +            'openssl_x509_check_private_key','openssl_x509_export',
        +            'openssl_x509_export_to_file','openssl_x509_free',
        +            'openssl_x509_parse','openssl_x509_read','ord',
        +            'output_add_rewrite_var','output_reset_rewrite_vars','overload',
        +            'outputdebugstring','pack','parse_ini_file','parse_str','parse_url',
        +            'parsekit_compile_file','parsekit_compile_string',
        +            'parsekit_func_arginfo','parsekit_opcode_flags',
        +            'parsekit_opcode_name','passthru','pathinfo','pclose',
        +            'pdf_add_bookmark','pdf_add_launchlink','pdf_add_locallink',
        +            'pdf_add_nameddest','pdf_add_note','pdf_add_pdflink',
        +            'pdf_add_thumbnail','pdf_add_weblink','pdf_arc','pdf_arcn',
        +            'pdf_attach_file','pdf_begin_font','pdf_begin_glyph',
        +            'pdf_begin_page','pdf_begin_pattern','pdf_begin_template',
        +            'pdf_circle','pdf_clip','pdf_close','pdf_close_image',
        +            'pdf_close_pdi','pdf_close_pdi_page','pdf_closepath',
        +            'pdf_closepath_fill_stroke','pdf_closepath_stroke','pdf_concat',
        +            'pdf_continue_text','pdf_create_gstate','pdf_create_pvf',
        +            'pdf_curveto','pdf_delete','pdf_delete_pvf','pdf_encoding_set_char',
        +            'pdf_end_font','pdf_end_glyph','pdf_end_page','pdf_end_pattern',
        +            'pdf_end_template','pdf_endpath','pdf_fill','pdf_fill_imageblock',
        +            'pdf_fill_pdfblock','pdf_fill_stroke','pdf_fill_textblock',
        +            'pdf_findfont','pdf_fit_image','pdf_fit_pdi_page',
        +            'pdf_fit_textline','pdf_get_apiname','pdf_get_buffer',
        +            'pdf_get_errmsg','pdf_get_errnum','pdf_get_parameter',
        +            'pdf_get_pdi_parameter','pdf_get_pdi_value','pdf_get_value',
        +            'pdf_initgraphics','pdf_lineto','pdf_load_font',
        +            'pdf_load_iccprofile','pdf_load_image','pdf_makespotcolor',
        +            'pdf_moveto','pdf_new','pdf_open_ccitt','pdf_open_file',
        +            'pdf_open_image','pdf_open_image_file','pdf_open_pdi',
        +            'pdf_open_pdi_page','pdf_place_image','pdf_place_pdi_page',
        +            'pdf_process_pdi','pdf_rect','pdf_restore','pdf_rotate','pdf_save',
        +            'pdf_scale','pdf_set_border_color','pdf_set_border_dash',
        +            'pdf_set_border_style','pdf_set_gstate','pdf_set_info',
        +            'pdf_set_parameter','pdf_set_text_pos','pdf_set_value',
        +            'pdf_setcolor','pdf_setdash','pdf_setdashpattern','pdf_setflat',
        +            'pdf_setfont','pdf_setlinecap','pdf_setlinejoin','pdf_setlinewidth',
        +            'pdf_setmatrix','pdf_setmiterlimit','pdf_setpolydash','pdf_shading',
        +            'pdf_shading_pattern','pdf_shfill','pdf_show','pdf_show_boxed',
        +            'pdf_show_xy','pdf_skew','pdf_stringwidth','pdf_stroke',
        +            'pdf_translate','pdo_drivers','pfsockopen','pg_affected_rows',
        +            'pg_cancel_query','pg_clientencoding','pg_client_encoding',
        +            'pg_close','pg_cmdtuples','pg_connect','pg_connection_busy',
        +            'pg_connection_reset','pg_connection_status','pg_convert',
        +            'pg_copy_from','pg_copy_to','pg_dbname','pg_delete','pg_end_copy',
        +            'pg_errormessage','pg_escape_bytea','pg_escape_string','pg_exec',
        +            'pg_execute','pg_fetch_all','pg_fetch_all_columns','pg_fetch_array',
        +            'pg_fetch_assoc','pg_fetch_object','pg_fetch_result','pg_fetch_row',
        +            'pg_fieldisnull','pg_fieldname','pg_fieldnum','pg_fieldprtlen',
        +            'pg_fieldsize','pg_fieldtype','pg_field_is_null','pg_field_name',
        +            'pg_field_num','pg_field_prtlen','pg_field_size','pg_field_table',
        +            'pg_field_type','pg_field_type_oid','pg_free_result',
        +            'pg_freeresult','pg_get_notify','pg_get_pid','pg_get_result',
        +            'pg_getlastoid','pg_host','pg_insert','pg_last_error',
        +            'pg_last_notice','pg_last_oid','pg_loclose','pg_locreate',
        +            'pg_loexport','pg_loimport','pg_loopen','pg_loread','pg_loreadall',
        +            'pg_lounlink','pg_lowrite','pg_lo_close','pg_lo_create',
        +            'pg_lo_export','pg_lo_import','pg_lo_open','pg_lo_read',
        +            'pg_lo_read_all','pg_lo_seek','pg_lo_tell','pg_lo_unlink',
        +            'pg_lo_write','pg_meta_data','pg_numfields','pg_numrows',
        +            'pg_num_fields','pg_num_rows','pg_options','pg_parameter_status',
        +            'pg_pconnect','pg_ping','pg_port','pg_prepare','pg_put_line',
        +            'pg_query','pg_query_params','pg_result','pg_result_error',
        +            'pg_result_error_field','pg_result_seek','pg_result_status',
        +            'pg_select','pg_send_execute','pg_send_prepare','pg_send_query',
        +            'pg_send_query_params','pg_set_client_encoding',
        +            'pg_set_error_verbosity','pg_setclientencoding','pg_trace',
        +            'pg_transaction_status','pg_tty','pg_unescape_bytea','pg_untrace',
        +            'pg_update','pg_version','php_egg_logo_guid','php_ini_loaded_file',
        +            'php_ini_scanned_files','php_logo_guid','php_real_logo_guid',
        +            'php_sapi_name','php_strip_whitespace','php_uname','phpcredits',
        +            'phpdoc_xml_from_string','phpinfo','phpversion','pi','png2wbmp',
        +            'pop3_close','pop3_delete_message','pop3_get_account_size',
        +            'pop3_get_message','pop3_get_message_count',
        +            'pop3_get_message_header','pop3_get_message_ids',
        +            'pop3_get_message_size','pop3_get_message_sizes','pop3_open',
        +            'pop3_undelete','popen','pos','posix_ctermid','posix_errno',
        +            'posix_getcwd','posix_getegid','posix_geteuid','posix_getgid',
        +            'posix_getgrgid','posix_getgrnam','posix_getgroups',
        +            'posix_getlogin','posix_getpgid','posix_getpgrp','posix_getpid',
        +            'posix_getppid','posix_getpwnam','posix_getpwuid','posix_getrlimit',
        +            'posix_getsid','posix_getuid','posix_get_last_error','posix_isatty',
        +            'posix_kill','posix_mkfifo','posix_setegid','posix_seteuid',
        +            'posix_setgid','posix_setpgid','posix_setsid','posix_setuid',
        +            'posix_strerror','posix_times','posix_ttyname','posix_uname','pow',
        +            'preg_grep','preg_last_error','preg_match','preg_match_all',
        +            'preg_quote','preg_replace','preg_replace_callback','preg_split',
        +            'prev','print_r','printf','proc_close','proc_get_status',
        +            'proc_open','proc_terminate','putenv','quoted_printable_decode',
        +            'quotemeta','rad2deg','radius_acct_open','radius_add_server',
        +            'radius_auth_open','radius_close','radius_config',
        +            'radius_create_request','radius_cvt_addr','radius_cvt_int',
        +            'radius_cvt_string','radius_demangle','radius_demangle_mppe_key',
        +            'radius_get_attr','radius_get_vendor_attr','radius_put_addr',
        +            'radius_put_attr','radius_put_int','radius_put_string',
        +            'radius_put_vendor_addr','radius_put_vendor_attr',
        +            'radius_put_vendor_int','radius_put_vendor_string',
        +            'radius_request_authenticator','radius_send_request',
        +            'radius_server_secret','radius_strerror','rand','range',
        +            'rawurldecode','rawurlencode','read_exif_data','readdir','readfile',
        +            'readgzfile','readlink','realpath','reg_close_key','reg_create_key',
        +            'reg_enum_key','reg_enum_value','reg_get_value','reg_open_key',
        +            'reg_set_value','register_shutdown_function',
        +            'register_tick_function','rename','res_close','res_get','res_list',
        +            'res_list_type','res_open','res_set','reset',
        +            'restore_error_handler','restore_include_path','rewind','rewinddir',
        +            'rmdir','round','rsort','rtrim','runkit_class_adopt',
        +            'runkit_class_emancipate','runkit_constant_add',
        +            'runkit_constant_redefine','runkit_constant_remove',
        +            'runkit_default_property_add','runkit_function_add',
        +            'runkit_function_copy','runkit_function_redefine',
        +            'runkit_function_remove','runkit_function_rename','runkit_import',
        +            'runkit_lint','runkit_lint_file','runkit_method_add',
        +            'runkit_method_copy','runkit_method_redefine',
        +            'runkit_method_remove','runkit_method_rename','runkit_object_id',
        +            'runkit_return_value_used','runkit_sandbox_output_handler',
        +            'runkit_superglobals','runkit_zval_inspect','scandir','sem_acquire',
        +            'sem_get','sem_release','sem_remove','serialize',
        +            'session_cache_expire','session_cache_limiter','session_commit',
        +            'session_decode','session_destroy','session_encode',
        +            'session_get_cookie_params','session_id','session_is_registered',
        +            'session_module_name','session_name','session_regenerate_id',
        +            'session_register','session_save_path','session_set_cookie_params',
        +            'session_set_save_handler','session_start','session_unregister',
        +            'session_unset','session_write_close','set_content',
        +            'set_error_handler','set_file_buffer','set_include_path',
        +            'set_magic_quotes_runtime','set_socket_blocking','set_time_limit',
        +            'setcookie','setlocale','setrawcookie','settype','sha1','sha1_file',
        +            'shell_exec','shmop_close','shmop_delete','shmop_open','shmop_read',
        +            'shmop_size','shmop_write','shm_attach','shm_detach','shm_get_var',
        +            'shm_put_var','shm_remove','shm_remove_var','show_source','shuffle',
        +            'similar_text','simplexml_import_dom','simplexml_load_file',
        +            'simplexml_load_string','sin','sinh','sizeof','sleep','smtp_close',
        +            'smtp_cmd_data','smtp_cmd_mail','smtp_cmd_rcpt','smtp_connect',
        +            'snmp_get_quick_print','snmp_get_valueretrieval','snmp_read_mib',
        +            'snmp_set_quick_print','snmp_set_valueretrieval','snmp2_get',
        +            'snmp2_getnext','snmp2_real_walk','snmp2_set','snmp2_walk',
        +            'snmp3_get','snmp3_getnext','snmp3_real_walk','snmp3_set',
        +            'snmp3_walk','snmpget','snmpgetnext','snmprealwalk','snmpset',
        +            'snmpwalk','snmpwalkoid','socket_accept','socket_bind',
        +            'socket_clear_error','socket_close','socket_connect',
        +            'socket_create','socket_create_listen','socket_create_pair',
        +            'socket_getopt','socket_getpeername','socket_getsockname',
        +            'socket_get_option','socket_get_status','socket_iovec_add',
        +            'socket_iovec_alloc','socket_iovec_delete','socket_iovec_fetch',
        +            'socket_iovec_free','socket_iovec_set','socket_last_error',
        +            'socket_listen','socket_read','socket_readv','socket_recv',
        +            'socket_recvfrom','socket_recvmsg','socket_select','socket_send',
        +            'socket_sendmsg','socket_sendto','socket_setopt','socket_set_block',
        +            'socket_set_blocking','socket_set_nonblock','socket_set_option',
        +            'socket_set_timeout','socket_shutdown','socket_strerror',
        +            'socket_write','socket_writev','sort','soundex','spl_autoload',
        +            'spl_autoload_call','spl_autoload_extensions',
        +            'spl_autoload_functions','spl_autoload_register',
        +            'spl_autoload_unregister','spl_classes','spl_object_hash','split',
        +            'spliti','sprintf','sql_regcase','sqlite_array_query',
        +            'sqlite_busy_timeout','sqlite_changes','sqlite_close',
        +            'sqlite_column','sqlite_create_aggregate','sqlite_create_function',
        +            'sqlite_current','sqlite_error_string','sqlite_escape_string',
        +            'sqlite_exec','sqlite_factory','sqlite_fetch_all',
        +            'sqlite_fetch_array','sqlite_fetch_column_types',
        +            'sqlite_fetch_object','sqlite_fetch_single','sqlite_fetch_string',
        +            'sqlite_field_name','sqlite_has_more','sqlite_has_prev',
        +            'sqlite_last_error','sqlite_last_insert_rowid','sqlite_libencoding',
        +            'sqlite_libversion','sqlite_next','sqlite_num_fields',
        +            'sqlite_num_rows','sqlite_open','sqlite_popen','sqlite_prev',
        +            'sqlite_query','sqlite_rewind','sqlite_seek','sqlite_single_query',
        +            'sqlite_udf_decode_binary','sqlite_udf_encode_binary',
        +            'sqlite_unbuffered_query','sqlite_valid','sqrt','srand','sscanf',
        +            'ssh2_auth_hostbased_file','ssh2_auth_none','ssh2_auth_password',
        +            'ssh2_auth_pubkey_file','ssh2_connect','ssh2_exec',
        +            'ssh2_fetch_stream','ssh2_fingerprint','ssh2_forward_accept',
        +            'ssh2_forward_listen','ssh2_methods_negotiated','ssh2_poll',
        +            'ssh2_publickey_add','ssh2_publickey_init','ssh2_publickey_list',
        +            'ssh2_publickey_remove','ssh2_scp_recv','ssh2_scp_send','ssh2_sftp',
        +            'ssh2_sftp_lstat','ssh2_sftp_mkdir','ssh2_sftp_readlink',
        +            'ssh2_sftp_realpath','ssh2_sftp_rename','ssh2_sftp_rmdir',
        +            'ssh2_sftp_stat','ssh2_sftp_symlink','ssh2_sftp_unlink',
        +            'ssh2_shell','ssh2_tunnel','stat','stats_absolute_deviation',
        +            'stats_cdf_beta','stats_cdf_binomial','stats_cdf_cauchy',
        +            'stats_cdf_chisquare','stats_cdf_exponential','stats_cdf_f',
        +            'stats_cdf_gamma','stats_cdf_laplace','stats_cdf_logistic',
        +            'stats_cdf_negative_binomial','stats_cdf_noncentral_chisquare',
        +            'stats_cdf_noncentral_f','stats_cdf_noncentral_t',
        +            'stats_cdf_normal','stats_cdf_poisson','stats_cdf_t',
        +            'stats_cdf_uniform','stats_cdf_weibull','stats_covariance',
        +            'stats_dens_beta','stats_dens_cauchy','stats_dens_chisquare',
        +            'stats_dens_exponential','stats_dens_f','stats_dens_gamma',
        +            'stats_dens_laplace','stats_dens_logistic','stats_dens_normal',
        +            'stats_dens_pmf_binomial','stats_dens_pmf_hypergeometric',
        +            'stats_dens_pmf_negative_binomial','stats_dens_pmf_poisson',
        +            'stats_dens_t','stats_dens_uniform','stats_dens_weibull',
        +            'stats_harmonic_mean','stats_kurtosis','stats_rand_gen_beta',
        +            'stats_rand_gen_chisquare','stats_rand_gen_exponential',
        +            'stats_rand_gen_f','stats_rand_gen_funiform','stats_rand_gen_gamma',
        +            'stats_rand_gen_ipoisson','stats_rand_gen_iuniform',
        +            'stats_rand_gen_noncenral_f','stats_rand_gen_noncentral_chisquare',
        +            'stats_rand_gen_noncentral_t','stats_rand_gen_normal',
        +            'stats_rand_gen_t','stats_rand_getsd','stats_rand_ibinomial',
        +            'stats_rand_ibinomial_negative','stats_rand_ignlgi',
        +            'stats_rand_phrase_to_seeds','stats_rand_ranf','stats_rand_setall',
        +            'stats_skew','stats_standard_deviation','stats_stat_binomial_coef',
        +            'stats_stat_correlation','stats_stat_factorial',
        +            'stats_stat_independent_t','stats_stat_innerproduct',
        +            'stats_stat_paired_t','stats_stat_percentile','stats_stat_powersum',
        +            'stats_variance','strcasecmp','strchr','strcmp','strcoll','strcspn',
        +            'stream_bucket_append','stream_bucket_make_writeable',
        +            'stream_bucket_new','stream_bucket_prepend','stream_context_create',
        +            'stream_context_get_default','stream_context_get_options',
        +            'stream_context_set_default','stream_context_set_option',
        +            'stream_context_set_params','stream_copy_to_stream',
        +            'stream_encoding','stream_filter_append','stream_filter_prepend',
        +            'stream_filter_register','stream_filter_remove',
        +            'stream_get_contents','stream_get_filters','stream_get_line',
        +            'stream_get_meta_data','stream_get_transports',
        +            'stream_get_wrappers','stream_is_local',
        +            'stream_notification_callback','stream_register_wrapper',
        +            'stream_resolve_include_path','stream_select','stream_set_blocking',
        +            'stream_set_timeout','stream_set_write_buffer',
        +            'stream_socket_accept','stream_socket_client',
        +            'stream_socket_enable_crypto','stream_socket_get_name',
        +            'stream_socket_pair','stream_socket_recvfrom',
        +            'stream_socket_sendto','stream_socket_server',
        +            'stream_socket_shutdown','stream_supports_lock',
        +            'stream_wrapper_register','stream_wrapper_restore',
        +            'stream_wrapper_unregister','strftime','stripcslashes','stripos',
        +            'stripslashes','strip_tags','stristr','strlen','strnatcasecmp',
        +            'strnatcmp','strpbrk','strncasecmp','strncmp','strpos','strrchr',
        +            'strrev','strripos','strrpos','strspn','strstr','strtok',
        +            'strtolower','strtotime','strtoupper','strtr','strval',
        +            'str_ireplace','str_pad','str_repeat','str_replace','str_rot13',
        +            'str_split','str_shuffle','str_word_count','substr',
        +            'substr_compare','substr_count','substr_replace','svn_add',
        +            'svn_auth_get_parameter','svn_auth_set_parameter','svn_cat',
        +            'svn_checkout','svn_cleanup','svn_client_version','svn_commit',
        +            'svn_diff','svn_export','svn_fs_abort_txn','svn_fs_apply_text',
        +            'svn_fs_begin_txn2','svn_fs_change_node_prop','svn_fs_check_path',
        +            'svn_fs_contents_changed','svn_fs_copy','svn_fs_delete',
        +            'svn_fs_dir_entries','svn_fs_file_contents','svn_fs_file_length',
        +            'svn_fs_is_dir','svn_fs_is_file','svn_fs_make_dir',
        +            'svn_fs_make_file','svn_fs_node_created_rev','svn_fs_node_prop',
        +            'svn_fs_props_changed','svn_fs_revision_prop',
        +            'svn_fs_revision_root','svn_fs_txn_root','svn_fs_youngest_rev',
        +            'svn_import','svn_info','svn_log','svn_ls','svn_repos_create',
        +            'svn_repos_fs','svn_repos_fs_begin_txn_for_commit',
        +            'svn_repos_fs_commit_txn','svn_repos_hotcopy','svn_repos_open',
        +            'svn_repos_recover','svn_status','svn_update','symlink',
        +            'sys_get_temp_dir','syslog','system','tan','tanh','tempnam',
        +            'textdomain','thread_get','thread_include','thread_lock',
        +            'thread_lock_try','thread_mutex_destroy','thread_mutex_init',
        +            'thread_set','thread_start','thread_unlock','tidy_access_count',
        +            'tidy_clean_repair','tidy_config_count','tidy_diagnose',
        +            'tidy_error_count','tidy_get_body','tidy_get_config',
        +            'tidy_get_error_buffer','tidy_get_head','tidy_get_html',
        +            'tidy_get_html_ver','tidy_get_output','tidy_get_release',
        +            'tidy_get_root','tidy_get_status','tidy_getopt','tidy_is_xhtml',
        +            'tidy_is_xml','tidy_parse_file','tidy_parse_string',
        +            'tidy_repair_file','tidy_repair_string','tidy_warning_count','time',
        +            'timezone_abbreviations_list','timezone_identifiers_list',
        +            'timezone_name_from_abbr','timezone_name_get','timezone_offset_get',
        +            'timezone_open','timezone_transitions_get','tmpfile',
        +            'token_get_all','token_name','touch','trigger_error',
        +            'transliterate','transliterate_filters_get','trim','uasort',
        +            'ucfirst','ucwords','uksort','umask','uniqid','unixtojd','unlink',
        +            'unpack','unregister_tick_function','unserialize','unset',
        +            'urldecode','urlencode','user_error','use_soap_error_handler',
        +            'usleep','usort','utf8_decode','utf8_encode','var_dump',
        +            'var_export','variant_abs','variant_add','variant_and',
        +            'variant_cast','variant_cat','variant_cmp',
        +            'variant_date_from_timestamp','variant_date_to_timestamp',
        +            'variant_div','variant_eqv','variant_fix','variant_get_type',
        +            'variant_idiv','variant_imp','variant_int','variant_mod',
        +            'variant_mul','variant_neg','variant_not','variant_or',
        +            'variant_pow','variant_round','variant_set','variant_set_type',
        +            'variant_sub','variant_xor','version_compare','virtual','vfprintf',
        +            'vprintf','vsprintf','wddx_add_vars','wddx_deserialize',
        +            'wddx_packet_end','wddx_packet_start','wddx_serialize_value',
        +            'wddx_serialize_vars','win_beep','win_browse_file',
        +            'win_browse_folder','win_create_link','win_message_box',
        +            'win_play_wav','win_shell_execute','win32_create_service',
        +            'win32_delete_service','win32_get_last_control_message',
        +            'win32_ps_list_procs','win32_ps_stat_mem','win32_ps_stat_proc',
        +            'win32_query_service_status','win32_scheduler_delete_task',
        +            'win32_scheduler_enum_tasks','win32_scheduler_get_task_info',
        +            'win32_scheduler_run','win32_scheduler_set_task_info',
        +            'win32_set_service_status','win32_start_service',
        +            'win32_start_service_ctrl_dispatcher','win32_stop_service',
        +            'wordwrap','xml_error_string','xml_get_current_byte_index',
        +            'xml_get_current_column_number','xml_get_current_line_number',
        +            'xml_get_error_code','xml_parse','xml_parser_create',
        +            'xml_parser_create_ns','xml_parser_free','xml_parser_get_option',
        +            'xml_parser_set_option','xml_parse_into_struct',
        +            'xml_set_character_data_handler','xml_set_default_handler',
        +            'xml_set_element_handler','xml_set_end_namespace_decl_handler',
        +            'xml_set_external_entity_ref_handler',
        +            'xml_set_notation_decl_handler','xml_set_object',
        +            'xml_set_processing_instruction_handler',
        +            'xml_set_start_namespace_decl_handler',
        +            'xml_set_unparsed_entity_decl_handler','xmldoc','xmldocfile',
        +            'xmlrpc_decode','xmlrpc_decode_request','xmlrpc_encode',
        +            'xmlrpc_encode_request','xmlrpc_get_type','xmlrpc_is_fault',
        +            'xmlrpc_parse_method_descriptions',
        +            'xmlrpc_server_add_introspection_data','xmlrpc_server_call_method',
        +            'xmlrpc_server_create','xmlrpc_server_destroy',
        +            'xmlrpc_server_register_introspection_callback',
        +            'xmlrpc_server_register_method','xmlrpc_set_type','xmltree',
        +            'xmlwriter_end_attribute','xmlwriter_end_cdata',
        +            'xmlwriter_end_comment','xmlwriter_end_document',
        +            'xmlwriter_end_dtd','xmlwriter_end_dtd_attlist',
        +            'xmlwriter_end_dtd_element','xmlwriter_end_dtd_entity',
        +            'xmlwriter_end_element','xmlwriter_end_pi','xmlwriter_flush',
        +            'xmlwriter_full_end_element','xmlwriter_open_memory',
        +            'xmlwriter_open_uri','xmlwriter_output_memory',
        +            'xmlwriter_set_indent','xmlwriter_set_indent_string',
        +            'xmlwriter_start_attribute','xmlwriter_start_attribute_ns',
        +            'xmlwriter_start_cdata','xmlwriter_start_comment',
        +            'xmlwriter_start_document','xmlwriter_start_dtd',
        +            'xmlwriter_start_dtd_attlist','xmlwriter_start_dtd_element',
        +            'xmlwriter_start_dtd_entity','xmlwriter_start_element',
        +            'xmlwriter_start_element_ns','xmlwriter_start_pi','xmlwriter_text',
        +            'xmlwriter_write_attribute','xmlwriter_write_attribute_ns',
        +            'xmlwriter_write_cdata','xmlwriter_write_comment',
        +            'xmlwriter_write_dtd','xmlwriter_write_dtd_attlist',
        +            'xmlwriter_write_dtd_element','xmlwriter_write_dtd_entity',
        +            'xmlwriter_write_element','xmlwriter_write_element_ns',
        +            'xmlwriter_write_pi','xmlwriter_write_raw','xpath_eval',
        +            'xpath_eval_expression','xpath_new_context','xpath_register_ns',
        +            'xpath_register_ns_auto','xptr_eval','xptr_new_context','yp_all',
        +            'yp_cat','yp_errno','yp_err_string','yp_first',
        +            'yp_get_default_domain','yp_master','yp_match','yp_next','yp_order',
        +            'zend_current_obfuscation_level','zend_get_cfg_var','zend_get_id',
        +            'zend_loader_current_file','zend_loader_enabled',
        +            'zend_loader_file_encoded','zend_loader_file_licensed',
        +            'zend_loader_install_license','zend_loader_version',
        +            'zend_logo_guid','zend_match_hostmasks','zend_obfuscate_class_name',
        +            'zend_obfuscate_function_name','zend_optimizer_version',
        +            'zend_runtime_obfuscate','zend_version','zip_close',
        +            'zip_entry_close','zip_entry_compressedsize',
        +            'zip_entry_compressionmethod','zip_entry_filesize','zip_entry_name',
        +            'zip_entry_open','zip_entry_read','zip_open','zip_read',
        +            'zlib_get_coding_type'
        +            ),
        +        4 => array(
        +            'DEFAULT_INCLUDE_PATH', 'DIRECTORY_SEPARATOR', 'E_ALL',
        +            'E_COMPILE_ERROR', 'E_COMPILE_WARNING', 'E_CORE_ERROR',
        +            'E_CORE_WARNING', 'E_ERROR', 'E_NOTICE', 'E_PARSE', 'E_STRICT',
        +            'E_USER_ERROR', 'E_USER_NOTICE', 'E_USER_WARNING', 'E_WARNING',
        +            'ENT_COMPAT','ENT_QUOTES','ENT_NOQUOTES',
        +            'false', 'null', 'PEAR_EXTENSION_DIR', 'PEAR_INSTALL_DIR',
        +            'PHP_BINDIR', 'PHP_CONFIG_FILE_PATH', 'PHP_DATADIR',
        +            'PHP_EXTENSION_DIR', 'PHP_LIBDIR',
        +            'PHP_LOCALSTATEDIR', 'PHP_OS',
        +            'PHP_OUTPUT_HANDLER_CONT', 'PHP_OUTPUT_HANDLER_END',
        +            'PHP_OUTPUT_HANDLER_START', 'PHP_SYSCONFDIR',
        +            'PHP_VERSION', 'true', '__CLASS__', '__FILE__', '__FUNCTION__',
        +            '__LINE__', '__METHOD__'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        1 => array(
        +            '<'.'%', '<'.'%=', '%'.'>', '<'.'?', '<'.'?=', '?'.'>'
        +            ),
        +        0 => array(
        +            '(', ')', '[', ']', '{', '}',
        +            '!', '@', '%', '&', '|', '/',
        +            '<', '>',
        +            '=', '-', '+', '*',
        +            '.', ':', ',', ';'
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #990000;',
        +            4 => 'color: #009900; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            2 => 'color: #666666; font-style: italic;',
        +            3 => 'color: #0000cc; font-style: italic;',
        +            4 => 'color: #009933; font-style: italic;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            1 => 'color: #000099; font-weight: bold;',
        +            2 => 'color: #660099; font-weight: bold;',
        +            3 => 'color: #660099; font-weight: bold;',
        +            4 => 'color: #006699; font-weight: bold;',
        +            5 => 'color: #006699; font-weight: bold; font-style: italic;',
        +            6 => 'color: #009933; font-weight: bold;',
        +            'HARD' => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;',
        +            'HARD' => 'color: #0000ff;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;',
        +            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #004000;',
        +            2 => 'color: #004000;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;',
        +            1 => 'color: #000000; font-weight: bold;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #000088;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => '',
        +            2 => '',
        +            3 => '',
        +            4 => '',
        +            5 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => 'http://www.php.net/{FNAMEL}',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '->',
        +        2 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        //Variables
        +        0 => "[\\$]+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*"
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
        +    'SCRIPT_DELIMITERS' => array(
        +        0 => array(
        +            '<'.'?php' => '?'.'>'
        +            ),
        +        1 => array(
        +            '<'.'?' => '?'.'>'
        +            ),
        +        2 => array(
        +            '<'.'%' => '%'.'>'
        +            ),
        +        3 => array(
        +            ''
        +            ),
        +        4 => "/(?P<\\?(?>php\b)?)(?:".
        +            "(?>[^\"'?\\/<]+)|".
        +            "\\?(?!>)|".
        +            "(?>'(?>[^'\\\\]|\\\\'|\\\\\\\|\\\\)*')|".
        +            "(?>\"(?>[^\"\\\\]|\\\\\"|\\\\\\\\|\\\\)*\")|".
        +            "(?>\\/\\*(?>[^\\*]|(?!\\*\\/)\\*)*\\*\\/)|".
        +            "\\/\\/(?>.*?(?:\\?>|$))|".
        +            "#(?>.*?(?:\\?>|$))|".
        +            "\\/(?=[^*\\/])|".
        +            "<(?!<<)|".
        +            "<<<(?P\w+)\s.*?\s\k".
        +            ")*?(?P\\?>|\Z)/sm",
        +        5 => "/(?P<%)(?:".
        +            "(?>[^\"'%\\/<]+)|".
        +            "%(?!>)|".
        +            "(?>'(?>[^'\\\\]|\\\\'|\\\\\\\|\\\\)*')|".
        +            "(?>\"(?>[^\\\"\\\\]|\\\\\"|\\\\\\\\|\\\\)*\")|".
        +            "(?>\\/\\*(?>[^\\*]|(?!\\*\\/)\\*)*\\*\\/)|".
        +            "\\/\\/(?>.*?(?:%>|$))|".
        +            "#(?>.*?(?:%>|$))|".
        +            "\\/(?=[^*\\/])|".
        +            "<(?!<<)|".
        +            "<<<(?P\w+)\s.*?\s\k".
        +            ")*?(?P%>|\Z)/sm",
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => true,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/pic16.php b/includes/geshi/pic16.php
        new file mode 100644
        index 0000000..9058a86
        --- /dev/null
        +++ b/includes/geshi/pic16.php
        @@ -0,0 +1,139 @@
        + 'PIC16',
        +    'COMMENT_SINGLE' => array(1 => ';'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        /*Instructions*/
        +        1 => array(
        +            'addcf','adddcf','addlw','addwf','andlw','andwf','bc','bcf','bdc',
        +            'bnc','bndc','bnz','bsf','btfsc','btfss','bz','call','clrc','clrdc',
        +            'clrf','clrw','clrwdt','clrz','comf','decf','goto','incf','incfsz',
        +            'iorlw','iorwf','lcall','lgoto','movf','movfw','movlw','movwf',
        +            'option','negf','nop','retfie','retlw','return','rlf','rrf','setc',
        +            'setdc','setz','skpc','skpdc','skpnc','skpndc','skpnz','skpz',
        +            'sleep','subcf','subdcf','sublw','subwf','swapf','tris','tstf',
        +            'xorlw','xorwf'
        +            ),
        +        /*Registers*/
        +        2 => array(
        +            'INDF','TMR0','OPTION','PCL','STATUS','FSR','PORTA','PORTB','PORTC',
        +            'PORTD','PORTE','PORTF','TRISA','TRISB','TRISC','TRISD','TRISE',
        +            'TRISF','PCLATH','INTCON','PIR1','PIE1','PCON','CMCON','VRCON',
        +            'F','W'
        +            ),
        +        /*Directives*/
        +        3 => array(
        +            '_BADRAM','BANKISEL','BANKSEL','CBLOCK','CODE','_CONFIG','CONSTANT',
        +            'DA','DATA','DB','DE','#DEFINE','DT','DW','ELSE','END','ENDC',
        +            'ENDIF','ENDM','ENDW','EQU','ERROR','ERRORLEVEL','EXITM','EXPAND',
        +            'EXTERN','FILL','GLOBAL','IDATA','_IDLOCS','IF','IFDEF','IFNDEF',
        +            'INCLUDE','#INCLUDE','LIST','LOCAL','MACRO','_MAXRAM','MESSG',
        +            'NOEXPAND','NOLIST','ORG','PAGE','PAGESEL','PROCESSOR','RADIX',
        +            'RES','SET','SPACE','SUBTITLE','TITLE','UDATA','UDATA_ACS',
        +            'UDATA_OVR','UDATA_SHR','#UNDEFINE','VARIABLE','WHILE',
        +            'D','H','O','B','A'
        +            ),
        +        ),
        +    'SYMBOLS' => array('=','.',',',':'),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000a0; font-weight: bold;',
        +            2 => 'color: #aa3300; font-weight: bold;',
        +            3 => 'color: #0000ff;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #00a000;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff7700;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #ff7700;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #7777ff;'
        +            ),
        +        'REGEXPS' => array(),
        +        'SCRIPT' => array()
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC |
        +        GESHI_NUMBER_BIN_SUFFIX |
        +        GESHI_NUMBER_HEX_PREFIX |
        +        GESHI_NUMBER_HEX_SUFFIX,
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => "a-zA-Z0-9\$_\|\#>|^",
        +            'DISALLOWED_AFTER' => "a-zA-Z0-9_<\|%"
        +            )
        +        )
        +);
        diff --git a/includes/geshi/pike.php b/includes/geshi/pike.php
        new file mode 100644
        index 0000000..f5cc905
        --- /dev/null
        +++ b/includes/geshi/pike.php
        @@ -0,0 +1,101 @@
        + 'Pike',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'goto', 'break', 'continue', 'return', 'case', 'default', 'if',
        +            'else', 'switch', 'while', 'foreach', 'do', 'for', 'gauge',
        +            'destruct', 'lambda', 'inherit', 'import', 'typeof', 'catch',
        +            'inline', 'nomask', 'private', 'protected', 'public', 'static'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        1 => array(
        +            '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '%', '=', '!', '&', '|', '?', ';'
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;',
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #004000;'
        +            ),
        +        'SYMBOLS' => array(
        +            1 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(),
        +        'SCRIPT' => array()
        +        ),
        +    'URLS' => array(1 => ''),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(1 => '.'),
        +    'REGEXPS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/pixelbender.php b/includes/geshi/pixelbender.php
        new file mode 100644
        index 0000000..45afc17
        --- /dev/null
        +++ b/includes/geshi/pixelbender.php
        @@ -0,0 +1,173 @@
        + 'Pixel Bender 1.0',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'languageVersion', 'kernel'
        +            ),
        +        2 => array(
        +            'import', 'parameter', 'dependent', 'const', 'input', 'output',
        +            'evaluatePixel', 'evaluateDependents', 'needed', 'changed', 'generated'
        +            ),
        +        3 => array(
        +            'bool', 'bool2', 'bool3', 'bool4', 'int', 'int2', 'int3', 'int4',
        +            'float', 'float2', 'float3', 'float4', 'float2x2', 'float3x3', 'float4x4',
        +            'pixel2', 'pixel3', 'pixel4', 'region', 'image1', 'image2', 'image3', 'image4',
        +            'imageRef', 'void'
        +            ),
        +        4 => array(
        +            'in', 'out', 'inout', 'if', 'else', 'for', 'while', 'do', 'break',
        +            'continue', 'return'
        +            ),
        +        5 => array(
        +            'radians', 'degrees', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'pow',
        +            'exp', 'exp2', 'log', 'log2', 'sqrt', 'inverseSqrt', 'abs', 'sign', 'floor',
        +            'ceil', 'fract', 'mod', 'min', 'max', 'step', 'clamp', 'mix', 'smoothStep',
        +            'length', 'distance', 'dot', 'cross', 'normalize', 'matrixCompMult', 'lessThan',
        +            'lessThanEqual', 'greaterThan', 'greaterThanEqual', 'equal', 'notEqual', 'any',
        +            'all', 'not', 'nowhere', 'everywhere', 'transform', 'union', 'intersect',
        +            'outset', 'inset', 'bounds', 'isEmpty', 'sample', 'sampleLinear', 'sampleNearest',
        +            'outCoord', 'dod', 'pixelSize', 'pixelAspectRatio'
        +            ),
        +        6 => array(
        +            'namespace', 'vendor', 'version', 'minValue', 'maxValue', 'defaultValue', 'description'
        +            ),
        +        7 => array(
        +            '#if', '#endif', '#ifdef', '#elif', 'defined', '#define',
        +            'AIF_ATI', 'AIF_NVIDIA', 'AIF_FLASH_TARGET'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}', '!', '%', '&', '|', '+', '-', '*', '/', '=', '<', '>', '?', ':'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0033ff;',
        +            2 => 'color: #0033ff; font-weight: bold;',
        +            3 => 'color: #0033ff;',
        +            4 => 'color: #9900cc; font-weight: bold;',
        +            5 => 'color: #333333;',
        +            6 => 'color: #666666;',
        +            7 => 'color: #990000;',
        +        ),
        +        'COMMENTS' => array(
        +            1 => 'color: #009900;',
        +            'MULTI' => 'color: #3f5fbf;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => ''
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #990000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #000000; font-weight:bold;'
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #000000;',
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000000; font-weight: bold;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => '',
        +        7 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array('.'),
        +    'REGEXPS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/pli.php b/includes/geshi/pli.php
        new file mode 100644
        index 0000000..32a0cb7
        --- /dev/null
        +++ b/includes/geshi/pli.php
        @@ -0,0 +1,198 @@
        + 'PL/I',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"', '\''),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'abnormal', 'abs', 'acos', 'acosf', 'add', 'addbuff', 'addr',
        +            'addrdata', 'alias', 'aligned', 'all', 'alloc', 'allocate',
        +            'allocation', 'allocn', 'allocsize', 'any', 'anycondition', 'area',
        +            'ascii', 'asin', 'asinf', 'asm', 'asmtdli', 'assembler',
        +            'assignable', 'atan', 'atand', 'atanf', 'atanh', 'attach',
        +            'attention', 'attn', 'auto', 'automatic', 'availablearea',
        +            'backwards', 'based', 'begin', 'bigendian', 'bin', 'binary',
        +            'binaryvalue', 'bind', 'binvalue', 'bit', 'bitloc', 'bitlocation',
        +            'bkwd', 'blksize', 'bool', 'buf', 'buffered', 'buffers', 'bufnd',
        +            'bufni', 'bufoff', 'bufsp', 'builtin', 'bx', 'by', 'byaddr', 'byte',
        +            'byvalue', 'b4', 'call', 'cast', 'cds', 'ceil', 'center',
        +            'centerleft', 'centerright', 'centre', 'centreleft', 'centreright',
        +            'char', 'character', 'charg', 'chargraphic', 'charval', 'check',
        +            'checkstg', 'close', 'cmpat', 'cobol', 'col', 'collate', 'column',
        +            'comment', 'compare', 'compiledate', 'compiletime', 'completion',
        +            'complex', 'cond', 'condition', 'conjg', 'conn', 'connected',
        +            'consecutive', 'controlled', 'conv', 'conversion', 'copy', 'cos',
        +            'cosd', 'cosf', 'cosh', 'count', 'counter', 'cpln', 'cplx', 'cs',
        +            'cstg', 'ctl', 'ctlasa', 'ctl360', 'currentsize', 'currentstorage',
        +            'data', 'datafield', 'date', 'datetime', 'days', 'daystodate',
        +            'daystosecs', 'db', 'dcl', 'dec', 'decimal', 'declare', 'def',
        +            'default', 'define', 'defined', 'delay', 'delete', 'descriptor',
        +            'descriptors', 'detach', 'dft', 'dim', 'dimacross', 'dimension',
        +            'direct', 'display', 'divide', 'do', 'downthru', 'edit', 'else',
        +            'empty', 'end', 'endfile', 'endpage', 'entry', 'entryaddr', 'env',
        +            'environment', 'epsilon', 'erf', 'erfc', 'error', 'event', 'excl',
        +            'exclusive', 'exit', 'exp', 'expf', 'exponent', 'exports', 'ext',
        +            'external', 'fb', 'fbs', 'fetch', 'file', 'fileddint', 'fileddtest',
        +            'fileddword', 'fileid', 'fileopen', 'fileread', 'fileseek',
        +            'filetell', 'filewrite', 'finish', 'first', 'fixed', 'fixedbin',
        +            'fixeddec', 'fixedoverflow', 'float', 'floatbin', 'floatdec',
        +            'floor', 'flush', 'fofl', 'format', 'fortran', 'free', 'from',
        +            'fromalien', 'fs', 'gamma', 'generic', 'genkey', 'get', 'getenv',
        +            'go', 'goto', 'graphic', 'gx', 'handle', 'hbound', 'hex', 'hexadec',
        +            'heximage', 'high', 'huge', 'iand', 'ieee', 'ieor', 'if', 'ignore',
        +            'imag', 'in', 'index', 'indexarea', 'indexed', 'init', 'initial',
        +            'inline', 'inonly', 'inot', 'inout', 'input', 'int', 'inter',
        +            'internal', 'into', 'invalidop', 'ior', 'irred', 'irreducible',
        +            'isfinite', 'isigned', 'isinf', 'isll', 'ismain', 'isnan',
        +            'isnormal', 'isrl', 'iszero', 'iunsigned', 'key', 'keyed',
        +            'keyfrom', 'keylength', 'keyloc', 'keyto', 'label', 'last',
        +            'lbound', 'leave', 'left', 'length', 'like', 'limited', 'line',
        +            'lineno', 'linesize', 'linkage', 'list', 'littleendian', 'loc',
        +            'locate', 'location', 'log', 'logf', 'loggamma', 'log10', 'log10f',
        +            'log2', 'low', 'lowercase', 'lower2', 'maccol', 'maclmar',
        +            'macname', 'macrmar', 'main', 'max', 'maxexp', 'maxlength',
        +            'memconvert', 'memcu12', 'memcu14', 'memcu21', 'memcu24', 'memcu41',
        +            'memcu42', 'memindex', 'memsearch', 'memsearchr', 'memverify',
        +            'memverifyr', 'min', 'minexp', 'mod', 'mpstr', 'multiply', 'name',
        +            'native', 'ncp', 'new', 'nocharg', 'nochargraphic', 'nocheck',
        +            'nocmpat', 'noconv', 'noconversion', 'nodescriptor', 'noexecops',
        +            'nofixedoverflow', 'nofofl', 'noinline', 'nolock', 'nomap',
        +            'nomapin', 'nomapout', 'nonasgn', 'nonassignable', 'nonconnected',
        +            'nonnative', 'noofl', 'nooverflow', 'norescan', 'normal', 'nosize',
        +            'nostrg', 'nostringrange', 'nostringsize', 'nostrz', 'nosubrg',
        +            'nosubscriptrange', 'noufl', 'nounderflow', 'nowrite', 'nozdiv',
        +            'nozerodivide', 'null', 'offset', 'offsetadd', 'offsetdiff',
        +            'offsetsubtract', 'offsetvalue', 'ofl', 'omitted', 'on', 'onarea',
        +            'onchar', 'oncode', 'oncondcond', 'oncondid', 'oncount', 'onfile',
        +            'ongsource', 'onkey', 'online', 'onloc', 'onoffset', 'onsource',
        +            'onsubcode', 'onwchar', 'onwsource', 'open', 'optional', 'options',
        +            'order', 'ordinal', 'ordinalname', 'ordinalpred', 'ordinalsucc',
        +            'other', 'otherwise', 'outonly', 'output', 'overflow', 'package',
        +            'packagename', 'page', 'pageno', 'pagesize', 'parameter', 'parmset',
        +            'password', 'pending', 'pic', 'picspec', 'picture', 'places',
        +            'pliascii', 'plicanc', 'plickpt', 'plidelete', 'plidump',
        +            'pliebcdic', 'plifill', 'plifree', 'plimove', 'pliover', 'plirest',
        +            'pliretc', 'pliretv', 'plisaxa', 'plisaxb', 'plisaxc', 'plisaxd',
        +            'plisrta', 'plisrtb', 'plisrtc', 'plisrtd', 'plitdli', 'plitran11',
        +            'plitran12', 'plitran21', 'plitran22', 'pointer', 'pointeradd',
        +            'pointerdiff', 'pointersubtract', 'pointervalue', 'poly', 'pos',
        +            'position', 'prec', 'precision', 'pred', 'present', 'print',
        +            'priority', 'proc', 'procedure', 'procedurename', 'procname',
        +            'prod', 'ptr', 'ptradd', 'ptrdiff', 'ptrsubtract', 'ptrvalue',
        +            'put', 'putenv', 'quote', 'radix', 'raise2', 'random', 'range',
        +            'rank', 'read', 'real', 'record', 'recsize', 'recursive', 'red',
        +            'reducible', 'reentrant', 'refer', 'regional', 'reg12', 'release',
        +            'rem', 'reorder', 'repattern', 'repeat', 'replaceby2', 'reply',
        +            'reread', 'rescan', 'reserved', 'reserves', 'resignal', 'respec',
        +            'retcode', 'return', 'returns', 'reuse', 'reverse', 'revert',
        +            'rewrite', 'right', 'round', 'rounddec', 'samekey', 'scalarvarying',
        +            'scale', 'search', 'searchr', 'secs', 'secstodate', 'secstodays',
        +            'select', 'seql', 'sequential', 'serialize4', 'set', 'sign',
        +            'signal', 'signed', 'sin', 'sind', 'sinf', 'sinh', 'sis', 'size',
        +            'skip', 'snap', 'sourcefile', 'sourceline', 'sqrt', 'sqrtf',
        +            'stackaddr', 'statement', 'static', 'status', 'stg', 'stmt', 'stop',
        +            'storage', 'stream', 'strg', 'string', 'stringrange', 'stringsize',
        +            'structure', 'strz', 'subrg', 'subscriptrange', 'substr',
        +            'subtract', 'succ', 'sum', 'suppress', 'sysin', 'sysnull',
        +            'sysparm', 'sysprint', 'system', 'sysversion', 'tally', 'tan',
        +            'tand', 'tanf', 'tanh', 'task', 'then', 'thread', 'threadid',
        +            'time', 'tiny', 'title', 'to', 'total', 'tpk', 'tpm', 'transient',
        +            'translate', 'transmit', 'trim', 'trkofl', 'trunc', 'type', 'ufl',
        +            'ulength', 'ulength16', 'ulength8', 'unal', 'unaligned',
        +            'unallocated', 'unbuf', 'unbuffered', 'undefinedfile', 'underflow',
        +            'undf', 'unlock', 'unsigned', 'unspec', 'until', 'update', 'upos',
        +            'uppercase', 'upthru', 'usubstr', 'usurrogate', 'uvalid', 'uwidth',
        +            'valid', 'validdate', 'value', 'var', 'varglist', 'vargsize',
        +            'variable', 'varying', 'varyingz', 'vb', 'vbs', 'verify', 'verifyr',
        +            'vs', 'vsam', 'wait', 'wchar', 'wcharval', 'weekday', 'when',
        +            'whigh', 'while', 'widechar', 'wlow', 'write', 'xmlchar', 'y4date',
        +            'y4julian', 'y4year', 'zdiv', 'zerodivide'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        1 => array(
        +            '+', '-', '*', '/', '=', '<', '>', '&', '^', '|', ':', '(', ')', ';', ','
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;'
        +            ),
        +        'COMMENTS' => array(
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;',
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #004000;'
        +            ),
        +        'SYMBOLS' => array(
        +            1 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(),
        +        'SCRIPT' => array()
        +        ),
        +    'URLS' => array(1 => ''),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(1 => '.'),
        +    'REGEXPS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/plsql.php b/includes/geshi/plsql.php
        new file mode 100644
        index 0000000..1a9edea
        --- /dev/null
        +++ b/includes/geshi/plsql.php
        @@ -0,0 +1,254 @@
        +
        + * Copyright: (c) 2006 Victor Engmark (http://l0b0.net/)
        + * Release Version: 1.0.8.12
        + * Date Started: 2006/10/26
        + *
        + * Oracle 9.2 PL/SQL language file for GeSHi.
        + * Formatting is based on the default setup of TOAD 8.6.
        + *
        + * CHANGES
        + * -------
        + * 2006/10/27 (1.0.0)
        + *    -    First Release
        + *
        + * TODO (updated 2006/10/27)
        + * -------------------------
        + * * Add < and > to brackets
        + * * Remove symbols which are also comment delimiters / quote marks?
        + *
        + *************************************************************************************
        + *
        + *         This file is part of GeSHi.
        + *
        + *     GeSHi is free software; you can redistribute it and/or modify
        + *     it under the terms of the GNU General Public License as published by
        + *     the Free Software Foundation; either version 2 of the License, or
        + *     (at your option) any later version.
        + *
        + *     GeSHi is distributed in the hope that it will be useful,
        + *     but WITHOUT ANY WARRANTY; without even the implied warranty of
        + *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.    See the
        + *     GNU General Public License for more details.
        + *
        + *     You should have received a copy of the GNU General Public License
        + *     along with GeSHi; if not, write to the Free Software
        + *     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA    02111-1307    USA
        + *
        + ************************************************************************************/
        +
        +$language_data = array (
        +    'LANG_NAME' => 'PL/SQL',
        +    'COMMENT_SINGLE' => array(1 =>'--'), //http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/02_funds.htm#2930
        +    'COMMENT_MULTI' => array('/*' => '*/'), //http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/02_funds.htm#2950
        +    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
        +    'QUOTEMARKS' => array("'", '"'), //http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/02_funds.htm
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        //PL/SQL reserved keywords (http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/f_words.htm#LNPLS019)
        +        1 => array('ZONE', 'YEAR', 'WRITE', 'WORK', 'WITH', 'WHILE', 'WHERE',
        +        'WHENEVER', 'WHEN', 'VIEW', 'VARCHAR2', 'VARCHAR', 'VALUES',
        +        'VALIDATE', 'USE', 'UPDATE', 'UNIQUE', 'UNION', 'TYPE', 'TRUE',
        +        'TRIGGER', 'TO', 'TIMEZONE_REGION', 'TIMEZONE_MINUTE', 'TIMEZONE_HOUR',
        +        'TIMEZONE_ABBR', 'TIMESTAMP', 'TIME', 'THEN', 'TABLE', 'SYNONYM',
        +        'SUCCESSFUL', 'SUBTYPE', 'START', 'SQLERRM', 'SQLCODE', 'SQL', 'SPACE',
        +        'SMALLINT', 'SHARE', 'SET', 'SEPARATE', 'SELECT', 'SECOND',
        +        'SAVEPOINT', 'ROWTYPE', 'ROWNUM', 'ROWID', 'ROW', 'ROLLBACK',
        +        'REVERSE', 'RETURN', 'RELEASE', 'RECORD', 'REAL', 'RAW', 'RANGE',
        +        'RAISE', 'PUBLIC', 'PROCEDURE', 'PRIVATE', 'PRIOR', 'PRAGMA',
        +        'POSITIVEN', 'POSITIVE', 'PLS_INTEGER', 'PCTFREE', 'PARTITION',
        +        'PACKAGE', 'OUT', 'OTHERS', 'ORGANIZATION', 'ORDER', 'OR', 'OPTION',
        +        'OPERATOR', 'OPEN', 'OPAQUE', 'ON', 'OF', 'OCIROWID', 'NUMBER_BASE',
        +        'NUMBER', 'NULL', 'NOWAIT', 'NOT', 'NOCOPY', 'NEXTVAL', 'NEW',
        +        'NATURALN', 'NATURAL', 'MONTH', 'MODE', 'MLSLABEL', 'MINUTE', 'MINUS',
        +        'LOOP', 'LONG', 'LOCK', 'LIMITED', 'LIKE', 'LEVEL', 'JAVA',
        +        'ISOLATION', 'IS', 'INTO', 'INTERVAL', 'INTERSECT', 'INTERFACE',
        +        'INTEGER', 'INSERT', 'INDICATOR', 'INDEX', 'IN', 'IMMEDIATE', 'IF',
        +        'HOUR', 'HEAP', 'HAVING', 'GROUP', 'GOTO', 'FUNCTION', 'FROM',
        +        'FORALL', 'FOR', 'FLOAT', 'FETCH', 'FALSE', 'EXTENDS', 'EXIT',
        +        'EXISTS', 'EXECUTE', 'EXCLUSIVE', 'EXCEPTION', 'END', 'ELSIF', 'ELSE',
        +        'DROP', 'DO', 'DISTINCT', 'DESC', 'DELETE', 'DEFAULT', 'DECLARE',
        +        'DECIMAL', 'DAY', 'DATE', 'CURSOR', 'CURRVAL', 'CURRENT', 'CREATE',
        +        'CONSTANT', 'CONNECT', 'COMPRESS', 'COMMIT', 'COMMENT', 'COLLECT',
        +        'CLUSTER', 'CLOSE', 'CHECK', 'CHAR_BASE', 'CHAR', 'CASE', 'BY', 'BULK',
        +        'BOOLEAN', 'BODY', 'BINARY_INTEGER', 'BETWEEN', 'BEGIN', 'AUTHID',
        +        'AT', 'ASC', 'AS', 'ARRAY', 'ANY', 'AND', 'ALTER', 'ALL'),
        +        //SQL functions (http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96540/toc.htm & http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96540/functions101a.htm#85925)
        +        2 => array('XMLTRANSFORM', 'XMLSEQUENCE', 'XMLFOREST', 'XMLELEMENT',
        +        'XMLCONCAT', 'XMLCOLATTVAL', 'XMLAGG', 'WIDTH_BUCKET', 'VSIZE',
        +        'VARIANCE', 'VAR_SAMP', 'VAR_POP', 'VALUE', 'USERENV', 'USER', 'UPPER',
        +        'UPDATEXML', 'UNISTR', 'UID', 'TZ_OFFSET', 'TRUNC', 'TRIM', 'TREAT',
        +        'TRANSLATE', 'TO_YMINTERVAL', 'TO_TIMESTAMP_TZ', 'TO_TIMESTAMP',
        +        'TO_SINGLE_BYTE', 'TO_NUMBER', 'TO_NCLOB', 'TO_NCHAR', 'TO_MULTI_BYTE',
        +        'TO_LOB', 'TO_DSINTERVAL', 'TO_DATE', 'TO_CLOB', 'TO_CHAR', 'TANH',
        +        'TAN', 'SYSTIMESTAMP', 'SYSDATE', 'SYS_XMLGEN', 'SYS_XMLAGG',
        +        'SYS_TYPEID', 'SYS_GUID', 'SYS_EXTRACT_UTC', 'SYS_DBURIGEN',
        +        'SYS_CONTEXT', 'SYS_CONNECT_BY_PATH', 'SUM', 'SUBSTR', 'STDDEV_SAMP',
        +        'STDDEV_POP', 'STDDEV', 'SQRT', 'SOUNDEX', 'SINH', 'SIN', 'SIGN',
        +        'SESSIONTIMEZONE', 'RTRIM', 'RPAD', 'ROWIDTONCHAR', 'ROWIDTOCHAR',
        +        'ROW_NUMBER', 'ROUND', 'REPLACE', 'REGR_SYY', 'REGR_SXY', 'REGR_SXX',
        +        'REGR_SLOPE', 'REGR_R2', 'REGR_INTERCEPT', 'REGR_COUNT', 'REGR_AVGY',
        +        'REGR_AVGX', 'REFTOHEX', 'REF', 'RAWTONHEX', 'RAWTOHEX',
        +        'RATIO_TO_REPORT', 'RANK', 'POWER', 'PERCENTILE_DISC',
        +        'PERCENTILE_CONT', 'PERCENT_RANK', 'PATH', 'NVL2', 'NVL',
        +        'NUMTOYMINTERVAL', 'NUMTODSINTERVAL', 'NULLIF', 'NTILE', 'NLSSORT',
        +        'NLS_UPPER', 'NLS_LOWER', 'NLS_INITCAP', 'NLS_CHARSET_NAME',
        +        'NLS_CHARSET_ID', 'NLS_CHARSET_DECL_LEN', 'NEXT_DAY', 'NEW_TIME',
        +        'NCHR', 'MONTHS_BETWEEN', 'MOD', 'MIN', 'MAX', 'MAKE_REF', 'LTRIM',
        +        'LPAD', 'LOWER', 'LOG', 'LOCALTIMESTAMP', 'LN', 'LENGTH', 'LEAST',
        +        'LEAD', 'LAST_VALUE', 'LAST_DAY', 'LAST', 'LAG', 'INSTR', 'INITCAP',
        +        'HEXTORAW', 'GROUPING_ID', 'GROUPING', 'GROUP_ID', 'GREATEST',
        +        'FROM_TZ', 'FLOOR', 'FIRST_VALUE', 'FIRST', 'EXTRACTVALUE', 'EXTRACT',
        +        'EXP', 'EXISTSNODE', 'EMPTY_CLOB', 'EMPTY_BLOB', 'DUMP', 'DEREF',
        +        'DEPTH', 'DENSE_RANK', 'DECOMPOSE', 'DECODE', 'DBTIMEZONE',
        +        'CURRENT_TIMESTAMP', 'CURRENT_DATE', 'CUME_DIST', 'COVAR_SAMP',
        +        'COVAR_POP', 'COUNT', 'COSH', 'COS', 'CORR', 'CONVERT', 'CONCAT',
        +        'COMPOSE', 'COALESCE', 'CHR', 'CHARTOROWID', 'CEIL', 'CAST', 'BITAND',
        +        'BIN_TO_NUM', 'BFILENAME', 'AVG', 'ATAN2', 'ATAN', 'ASIN', 'ASCIISTR',
        +        'ASCII', 'ADD_MONTHS', 'ACOS', 'ABS'),
        +        //PL/SQL packages (http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96612/intro2.htm#1025672)
        +        3 => array('UTL_URL', 'UTL_TCP', 'UTL_SMTP', 'UTL_REF', 'UTL_RAW',
        +        'UTL_PG', 'UTL_INADDR', 'UTL_HTTP', 'UTL_FILE', 'UTL_ENCODE',
        +        'UTL_COLL', 'SDO_UTIL', 'SDO_TUNE', 'SDO_MIGRATE', 'SDO_LRS',
        +        'SDO_GEOM', 'SDO_CS', 'DMBS_XMLQUERY', 'DMBS_FLASHBACK',
        +        'DMBS_DEFER_SYS', 'DEBUG_EXTPROC', 'DBMS_XSLPROCESSOR', 'DBMS_XPLAN',
        +        'DBMS_XMLSCHEMA', 'DBMS_XMLSAVE', 'DBMS_XMLPARSER', 'DBMS_XMLGEN',
        +        'DBMS_XMLDOM', 'DBMS_XDBT', 'DBMS_XDB_VERSION', 'DBMS_XDB', 'DBMS_WM',
        +        'DBMS_UTILITY', 'DBMS_TYPES', 'DBMS_TTS', 'DBMS_TRANSFORM',
        +        'DBMS_TRANSACTION', 'DBMS_TRACE', 'DBMS_STRM_A', 'DBMS_STRM',
        +        'DBMS_STORAGE_MAP', 'DBMS_STATS', 'DBMS_SQL', 'DBMS_SPACE_ADMIN',
        +        'DBMS_SPACE', 'DBMS_SHARED_POOL', 'DBMS_SESSION', 'DBMS_RULE_ADM',
        +        'DBMS_RULE', 'DBMS_ROWID', 'DBMS_RLS', 'DBMS_RESUMABLE',
        +        'DBMS_RESOURCE_MANAGER_PRIVS', 'DBMS_RESOURCE_MANAGER', 'DBMS_REPUTIL',
        +        'DBMS_REPCAT_RGT', 'DBMS_REPCAT_INSTATIATE', 'DBMS_REPCAT_ADMIN',
        +        'DBMS_REPCAT', 'DBMS_REPAIR', 'DBMS_REFRESH', 'DBMS_REDEFINITION',
        +        'DBMS_RECTIFIER_DIFF', 'DBMS_RANDOM', 'DBMS_PROPAGATION_ADM',
        +        'DBMS_PROFILER', 'DBMS_PIPE', 'DBMS_PCLXUTIL', 'DBMS_OUTPUT',
        +        'DBMS_OUTLN_EDIT', 'DBMS_OUTLN', 'DBMS_ORACLE_TRACE_USER',
        +        'DBMS_ORACLE_TRACE_AGENT', 'DBMS_OLAP', 'DBMS_OFFLINE_SNAPSHOT',
        +        'DBMS_OFFLINE_OG', 'DBMS_ODCI', 'DBMS_OBFUSCATION_TOOLKIT',
        +        'DBMS_MVIEW', 'DBMS_MGWMSG', 'DBMS_MGWADM', 'DBMS_METADATA',
        +        'DBMS_LOGSTDBY', 'DBMS_LOGMNR_D', 'DBMS_LOGMNR_CDC_SUBSCRIBE',
        +        'DBMS_LOGMNR_CDC_PUBLISH', 'DBMS_LOGMNR', 'DBMS_LOCK', 'DBMS_LOB',
        +        'DBMS_LIBCACHE', 'DBMS_LDAP', 'DBMS_JOB', 'DBMS_IOT',
        +        'DBMS_HS_PASSTHROUGH', 'DBMS_FGA', 'DBMS_DISTRIBUTED_TRUST_ADMIN',
        +        'DBMS_DESCRIBE', 'DBMS_DEFER_QUERY', 'DBMS_DEFER', 'DBMS_DEBUG',
        +        'DBMS_DDL', 'DBMS_CAPTURE_ADM', 'DBMS_AW', 'DBMS_AQELM', 'DBMS_AQADM',
        +        'DBMS_AQ', 'DBMS_APPLY_ADM', 'DBMS_APPLICATION_INFO', 'DBMS_ALERT',
        +        'CWM2_OLAP_AW_ACCESS'),
        +        //PL/SQL predefined exceptions (http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/07_errs.htm#784)
        +        4 => array('ZERO_DIVIDE', 'VALUE_ERROR', 'TOO_MANY_ROWS',
        +        'TIMEOUT_ON_RESOURCE', 'SYS_INVALID_ROWID', 'SUBSCRIPT_OUTSIDE_LIMIT',
        +        'SUBSCRIPT_BEYOND_COUNT', 'STORAGE_ERROR', 'SELF_IS_NULL',
        +        'ROWTYPE_MISMATCH', 'PROGRAM_ERROR', 'NOT_LOGGED_ON', 'NO_DATA_FOUND',
        +        'LOGIN_DENIED', 'INVALID_NUMBER', 'INVALID_CURSOR', 'DUP_VAL_ON_INDEX',
        +        'CURSOR_ALREADY_OPEN', 'COLLECTION_IS_NULL', 'CASE_NOT_FOUND',
        +        'ACCESS_INTO_NULL'),
        +        //Static data dictionary views (http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96536/ch2.htm)
        +        5 => array('USER_REPSITES', 'USER_REPSCHEMA',
        +        'USER_REPRESOLUTION_STATISTICS', 'USER_REPRESOLUTION_METHOD',
        +        'USER_REPRESOLUTION', 'USER_REPRESOL_STATS_CONTROL', 'USER_REPPROP',
        +        'USER_REPPRIORITY_GROUP', 'USER_REPPRIORITY',
        +        'USER_REPPARAMETER_COLUMN', 'USER_REPOBJECT', 'USER_REPKEY_COLUMNS',
        +        'USER_REPGROUPED_COLUMN', 'USER_REPGROUP_PRIVILEGES', 'USER_REPGROUP',
        +        'USER_REPGENOBJECTS', 'USER_REPGENERATED', 'USER_REPFLAVORS',
        +        'USER_REPFLAVOR_OBJECTS', 'USER_REPFLAVOR_COLUMNS', 'USER_REPDDL',
        +        'USER_REPCONFLICT', 'USER_REPCOLUMN_GROUP', 'USER_REPCOLUMN',
        +        'USER_REPCATLOG', 'USER_REPCAT_USER_PARM_VALUES',
        +        'USER_REPCAT_USER_AUTHORIZATIONS', 'USER_REPCAT_TEMPLATE_SITES',
        +        'USER_REPCAT_TEMPLATE_PARMS', 'USER_REPCAT_TEMPLATE_OBJECTS',
        +        'USER_REPCAT_REFRESH_TEMPLATES', 'USER_REPCAT', 'USER_REPAUDIT_COLUMN',
        +        'USER_REPAUDIT_ATTRIBUTE', 'DBA_REPSITES_NEW', 'DBA_REPSITES',
        +        'DBA_REPSCHEMA', 'DBA_REPRESOLUTION_STATISTICS',
        +        'DBA_REPRESOLUTION_METHOD', 'DBA_REPRESOLUTION',
        +        'DBA_REPRESOL_STATS_CONTROL', 'DBA_REPPROP', 'DBA_REPPRIORITY_GROUP',
        +        'DBA_REPPRIORITY', 'DBA_REPPARAMETER_COLUMN', 'DBA_REPOBJECT',
        +        'DBA_REPKEY_COLUMNS', 'DBA_REPGROUPED_COLUMN',
        +        'DBA_REPGROUP_PRIVILEGES', 'DBA_REPGROUP', 'DBA_REPGENOBJECTS',
        +        'DBA_REPGENERATED', 'DBA_REPFLAVORS', 'DBA_REPFLAVOR_OBJECTS',
        +        'DBA_REPFLAVOR_COLUMNS', 'DBA_REPEXTENSIONS', 'DBA_REPDDL',
        +        'DBA_REPCONFLICT', 'DBA_REPCOLUMN_GROUP', 'DBA_REPCOLUMN',
        +        'DBA_REPCATLOG', 'DBA_REPCAT_USER_PARM_VALUES',
        +        'DBA_REPCAT_USER_AUTHORIZATIONS', 'DBA_REPCAT_TEMPLATE_SITES',
        +        'DBA_REPCAT_TEMPLATE_PARMS', 'DBA_REPCAT_TEMPLATE_OBJECTS',
        +        'DBA_REPCAT_REFRESH_TEMPLATES', 'DBA_REPCAT_EXCEPTIONS', 'DBA_REPCAT',
        +        'DBA_REPAUDIT_COLUMN', 'DBA_REPAUDIT_ATTRIBUTE', 'ALL_REPSITES',
        +        'ALL_REPSCHEMA', 'ALL_REPRESOLUTION_STATISTICS',
        +        'ALL_REPRESOLUTION_METHOD', 'ALL_REPRESOLUTION',
        +        'ALL_REPRESOL_STATS_CONTROL', 'ALL_REPPROP', 'ALL_REPPRIORITY_GROUP',
        +        'ALL_REPPRIORITY', 'ALL_REPPARAMETER_COLUMN', 'ALL_REPOBJECT',
        +        'ALL_REPKEY_COLUMNS', 'ALL_REPGROUPED_COLUMN',
        +        'ALL_REPGROUP_PRIVILEGES', 'ALL_REPGROUP', 'ALL_REPGENOBJECTS',
        +        'ALL_REPGENERATED', 'ALL_REPFLAVORS', 'ALL_REPFLAVOR_OBJECTS',
        +        'ALL_REPFLAVOR_COLUMNS', 'ALL_REPDDL', 'ALL_REPCONFLICT',
        +        'ALL_REPCOLUMN_GROUP', 'ALL_REPCOLUMN', 'ALL_REPCATLOG',
        +        'ALL_REPCAT_USER_PARM_VALUES', 'ALL_REPCAT_USER_AUTHORIZATIONS',
        +        'ALL_REPCAT_TEMPLATE_SITES', 'ALL_REPCAT_TEMPLATE_PARMS',
        +        'ALL_REPCAT_TEMPLATE_OBJECTS', 'ALL_REPCAT_REFRESH_TEMPLATES',
        +        'ALL_REPCAT', 'ALL_REPAUDIT_COLUMN', 'ALL_REPAUDIT_ATTRIBUTE')
        +        ),
        +    'SYMBOLS' => array(
        +        //PL/SQL delimiters (http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/02_funds.htm#2732)
        +        '+', '%', "'", '.', '/', '(', ')', ':', ',', '*', '"', '=', '<', '>', '@', ';', '-', ':=', '=>', '||', '**', '<<', '>>', '/*', '*/', '..', '<>', '!=', '~=', '^=', '<=', '>='
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #00F;',
        +            2 => 'color: #000;',
        +            3 => 'color: #00F;',
        +            4 => 'color: #F00;',
        +            5 => 'color: #800;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #080; font-style: italic;',
        +            'MULTI' => 'color: #080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #00F;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #F00;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #800;'
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #0F0;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #00F;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            0 => 'color: #0F0;'
        +            )
        +        ),
        +        'URLS' => array(
        +            1 => 'http://www.oracle.com/pls/db92/db92.drilldown?word={FNAMEU}',
        +            2 => 'http://www.oracle.com/pls/db92/db92.drilldown?word={FNAMEU}',
        +            3 => 'http://www.oracle.com/pls/db92/db92.drilldown?word={FNAMEU}',
        +            4 => 'http://www.oracle.com/pls/db92/db92.drilldown?word={FNAMEU}',
        +            5 => 'http://www.oracle.com/pls/db92/db92.drilldown?word={FNAMEU}'
        +            ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/postgresql.php b/includes/geshi/postgresql.php
        new file mode 100644
        index 0000000..1f9d9e5
        --- /dev/null
        +++ b/includes/geshi/postgresql.php
        @@ -0,0 +1,285 @@
        + 2010-05-03
        + * Copyright: (c) 2007 Christophe Chauvet (http://kryskool.org/), Nigel McNie (http://qbnz.com/highlighter)
        + * Release Version: 1.0.8.12
        + * Date Started: 2007/07/20
        + *
        + * PostgreSQL language file for GeSHi.
        + *
        + * CHANGES
        + * -------
        + * 2007/07/20 (1.0.0)
        + *  -  First Release
        + *
        + * TODO (updated 2007/07/20)
        + * -------------------------
        + *
        + *************************************************************************************
        + *
        + *     This file is part of GeSHi.
        + *
        + *   GeSHi is free software; you can redistribute it and/or modify
        + *   it under the terms of the GNU General Public License as published by
        + *   the Free Software Foundation; either version 2 of the License, or
        + *   (at your option) any later version.
        + *
        + *   GeSHi is distributed in the hope that it will be useful,
        + *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + *   GNU General Public License for more details.
        + *
        + *   You should have received a copy of the GNU General Public License
        + *   along with GeSHi; if not, write to the Free Software
        + *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        + *
        + ************************************************************************************/
        +
        +$language_data = array (
        +    'LANG_NAME' => 'PostgreSQL',
        +    'COMMENT_SINGLE' => array(1 => '--'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"', '`'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        //Put PostgreSQL reserved keywords here.  I like mine uppercase.
        +        1 => array(
        +            'ABORT','ABSOLUTE','ACCESS','ACTION','ADD','ADMIN','AFTER',
        +            'AGGREGATE','ALL','ALSO','ALTER','ALWAYS','ANALYSE','ANALYZE','AND',
        +            'ANY','AS','ASC,','ASSERTION','ASSIGNMENT','ASYMMETRIC','AT',
        +            'AUTHORIZATION','BACKWARD','BEFORE','BEGIN','BETWEEN','BOTH','BY',
        +            'CACHE','CALLED','CASCADE','CASCADED','CASE','CAST','CATALOG',
        +            'CHAIN','CHARACTERISTICS','CHECK','CHECKPOINT','CLASS','CLOSE',
        +            'CLUSTER','COALESCE','COLLATE','COLUMN','COMMENT','COMMIT',
        +            'COMMITTED','CONCURRENTLY','CONFIGURATION','CONNECTION',
        +            'CONSTRAINT','CONSTRAINTS','CONTENT','CONTINUE','CONVERSION','COPY',
        +            'COST','CREATE','CREATEDB','CREATEROLE','CREATEUSER','CROSS','CSV',
        +            'CURRENT','CURRENT_CATALOG','CURRENT_DATE','CURRENT_ROLE',
        +            'CURRENT_SCHEMA','CURRENT_TIME','CURRENT_TIMESTAMP','CURRENT_USER',
        +            'CURSOR','CYCLE','DATA','DATABASE','DAY','DEALLOCATE','DEC',
        +            'DECLARE','DEFAULT','DEFAULTS','DEFERRABLE','DEFERRED','DEFINER',
        +            'DELETE','DELIMITER','DELIMITERS','DESC','DICTIONARY','DISABLE',
        +            'DISCARD','DISTINCT','DO','DOCUMENT','DOMAIN','DOUBLE','DROP',
        +            'EACH','ELSE','ENABLE','ENCODING','ENCRYPTED','END','ESCAPE',
        +            'EXCEPT','EXCLUDING','EXCLUSIVE','EXECUTE','EXISTS','EXPLAIN',
        +            'EXTERNAL','EXTRACT','FALSE','FAMILY','FETCH','FIRST','FOLLOWING',
        +            'FOR','FORCE','FOREIGN','FORWARD','FREEZE','FROM','FULL','FUNCTION',
        +            'GLOBAL','GRANT','GRANTED','GREATEST','GROUP','HANDLER','HAVING',
        +            'HEADER','HOLD','HOUR','IDENTITY','IF','ILIKE','IMMEDIATE',
        +            'IMMUTABLE','IMPLICIT','IN','INCLUDING','INCREMENT','INDEX',
        +            'INDEXES','INHERIT','INHERITS','INITIALLY','INNER','INOUT','INPUT',
        +            'INSENSITIVE','INSERT','INSTEAD','INTERSECT','INTO','INVOKER','IS',
        +            'ISNULL','ISOLATION','JOIN','KEY','LANCOMPILER','LANGUAGE','LARGE',
        +            'LAST','LC_COLLATE','LC_CTYPE','LEADING','LEAST','LEFT','LEVEL',
        +            'LIKE','LIMIT','LISTEN','LOAD','LOCAL','LOCALTIME','LOCALTIMESTAMP',
        +            'LOCATION','LOCK','LOGIN','LOOP','MAPPING','MATCH','MAXVALUE',
        +            'MINUTE','MINVALUE','MODE','MONTH','MOVE','NAME','NAMES','NATIONAL',
        +            'NATURAL','NEW','NEXT','NO','NOCREATEDB','NOCREATEROLE',
        +            'NOCREATEUSER','NOINHERIT','NOLOGIN','NONE','NOSUPERUSER','NOT',
        +            'NOTHING','NOTIFY','NOTNULL','NOWAIT','NULL','NULLIF','NULLS',
        +            'NUMERIC','OBJECT','OF','OFF','OFFSET','OIDS','OLD','ON','ONLY',
        +            'OPERATOR','OPTION','OPTIONS','OR','ORDER','OUT','OUTER','OVER',
        +            'OVERLAPS','OVERLAY','OWNED','OWNER','PARSER','PARTIAL','PARTITION',
        +            'PASSWORD','PLACING','PLANS','POSITION','PRECEDING','PRECISION',
        +            'PREPARE','PREPARED','PRESERVE','PRIMARY','PRIOR','PRIVILEGES',
        +            'PROCEDURAL','PROCEDURE','QUOTE','RANGE','READ','REASSIGN',
        +            'RECHECK','RECURSIVE','REFERENCES','REINDEX','RELATIVE','RELEASE',
        +            'RENAME','REPEATABLE','REPLACE','REPLICA','RESET','RESTART',
        +            'RESTRICT','RETURN','RETURNING','RETURNS','REVOKE','RIGHT','ROLE',
        +            'ROLLBACK','ROW','ROWS','RULE','SAVEPOINT','SCHEMA','SCROLL',
        +            'SEARCH','SECOND',
        +            'SECURITY','SELECT','SEQUENCE','SERIALIZABLE','SERVER','SESSION',
        +            'SESSION_USER','SET','SETOF','SHARE','SHOW','SIMILAR','SIMPLE',
        +            'SOME','STABLE','STANDALONE','START','STATEMENT','STATISTICS',
        +            'STDIN','STDOUT','STORAGE','STRICT','STRIP','SUPERUSER',
        +            'SYMMETRIC','SYSID','SYSTEM','TABLE','TABLESPACE','TEMP','TEMPLATE',
        +            'TEMPORARY','THEN','TO','TRAILING','TRANSACTION','TREAT','TRIGGER',
        +            'TRUE','TRUNCATE','TRUSTED','TYPE','UNBOUNDED','UNCOMMITTED',
        +            'UNENCRYPTED','UNION','UNIQUE','UNKNOWN','UNLISTEN','UNTIL',
        +            'UPDATE','USER','USING','VACUUM','VALID','VALIDATOR','VALUE',
        +            'VALUES','VARIADIC','VERBOSE','VERSION','VIEW','VOLATILE','WHEN',
        +            'WHERE','WHILE','WHITESPACE','WINDOW','WITH','WITHOUT','WORK','WRAPPER',
        +            'WRITE','XMLATTRIBUTES','XMLCONCAT','XMLELEMENT','XMLFOREST',
        +            'XMLPARSE','XMLPI','XMLROOT','XMLSERIALIZE','YEAR','YES','ZONE'
        +            ),
        +
        +        //Put functions here
        +        3 => array(
        +            // mathematical functions
        +            'ABS','CBRT','CEIL','CEILING','DEGREES','DIV','EXP','FLOOR','LN',
        +            'LOG','MOD','PI','POWER','RADIANS','RANDOM','ROUND','SETSEED',
        +            'SIGN','SQRT','TRUNC','WIDTH_BUCKET',
        +            // trigonometric functions
        +            'ACOS','ASIN','ATAN','ATAN2','COS','COT','SIN','TAN',
        +            // string functions
        +            'BIT_LENGTH','CHAR_LENGTH','CHARACTER_LENGTH','LOWER',
        +            'OCTET_LENGTH','POSITION','SUBSTRING','TRIM','UPPER',
        +            // other string functions
        +            'ASCII','BTRIM','CHR','CONVERT','CONVERT_FROM','CONVERT_TO',
        +            'DECODE','ENCODE','INITCAP','LENGTH','LPAD','LTRIM','MD5',
        +            'PG_CLIENT_ENCODING','QUOTE_IDENT','QUOTE_LITERAL','QUOTE_NULLABLE',
        +            'REGEXP_MATCHES','REGEXP_REPLACE','REGEXP_SPLIT_TO_ARRAY',
        +            'REGEXP_SPLIT_TO_TABLE','REPEAT','RPAD','RTRIM','SPLIT_PART',
        +            'STRPOS','SUBSTR','TO_ASCII','TO_HEX','TRANSLATE',
        +            // binary string functions
        +            'GET_BIT','GET_BYTE','SET_BIT','SET_BYTE',
        +            // data type formatting functions
        +            'TO_CHAR','TO_DATE','TO_NUMBER','TO_TIMESTAMP',
        +            // date/time functions
        +            'AGE','CLOCK_TIMESTAMP','DATE_PART','DATE_TRUNC','EXTRACT',
        +            'ISFINITE','JUSTIFY_DAYS','JUSTIFY_HOURS','JUSTIFY_INTERVAL','NOW',
        +            'STATEMENT_TIMESTAMP','TIMEOFDAY','TRANSACTION_TIMESTAMP',
        +            // enum support functions
        +            'ENUM_FIRST','ENUM_LAST','ENUM_RANGE',
        +            // geometric functions
        +            'AREA','CENTER','DIAMETER','HEIGHT','ISCLOSED','ISOPEN','NPOINTS',
        +            'PCLOSE','POPEN','RADIUS','WIDTH',
        +            'BOX','CIRCLE','LSEG','PATH','POINT','POLYGON',
        +            // cidr and inet functions
        +            'ABBREV','BROADCAST','FAMILY','HOST','HOSTMASK','MASKLEN','NETMASK',
        +            'NETWORK','SET_MASKLEN',
        +            // text search functions
        +            'TO_TSVECTOR','SETWEIGHT','STRIP','TO_TSQUERY','PLAINTO_TSQUERY',
        +            'NUMNODE','QUERYTREE','TS_RANK','TS_RANK_CD','TS_HEADLINE',
        +            'TS_REWRITE','GET_CURRENT_TS_CONFIG','TSVECTOR_UPDATE_TRIGGER',
        +            'TSVECTOR_UPDATE_TRIGGER_COLUMN',
        +            'TS_DEBUG','TS_LEXISE','TS_PARSE','TS_TOKEN_TYPE','TS_STAT',
        +            // XML functions
        +            'XMLCOMMENT','XMLCONCAT','XMLELEMENT','XMLFOREST','XMLPI','XMLROOT',
        +            'XMLAGG','XPATH','TABLE_TO_XMLSCHEMA','QUERY_TO_XMLSCHEMA',
        +            'CURSOR_TO_XMLSCHEMA','TABLE_TO_XML_AND_XMLSCHEMA',
        +            'QUERY_TO_XML_AND_XMLSCHEMA','SCHEMA_TO_XML','SCHEMA_TO_XMLSCHEMA',
        +            'SCHEMA_TO_XML_AND_XMLSCHEMA','DATABASE_TO_XML',
        +            'DATABASE_TO_XMLSCHEMA','DATABASE_TO_XML_AND_XMLSCHEMA',
        +            // sequence manipulating functions
        +            'CURRVAL','LASTVAL','NEXTVAL','SETVAL',
        +            // conditional expressions
        +            'COALESCE','NULLIF','GREATEST','LEAST',
        +            // array functions
        +            'ARRAY_APPEND','ARRAY_CAT','ARRAY_NDIMS','ARRAY_DIMS','ARRAY_FILL',
        +            'ARRAY_LENGTH','ARRAY_LOWER','ARRAY_PREPEND','ARRAY_TO_STRING',
        +            'ARRAY_UPPER','STRING_TO_ARRAY','UNNEST',
        +            // aggregate functions
        +            'ARRAY_AGG','AVG','BIT_AND','BIT_OR','BOOL_AND','BOOL_OR','COUNT',
        +            'EVERY','MAX','MIN','STRING_AGG','SUM',
        +            // statistic aggregate functions
        +            'CORR','COVAR_POP','COVAR_SAMP','REGR_AVGX','REGR_AVGY',
        +            'REGR_COUNT','REGR_INTERCEPT','REGR_R2','REGR_SLOPE','REGR_SXX',
        +            'REGR_SXY','REGR_SYY','STDDEV','STDDEV_POP','STDDEV_SAMP',
        +            'VARIANCE','VAR_POP','VAR_SAMP',
        +            // window functions
        +            'ROW_NUMBER','RANK','DENSE_RANK','PERCENT_RANK','CUME_DIST','NTILE',
        +            'LAG','LEAD','FIRST_VALUE','LAST_VALUE','NTH_VALUE',
        +            // set returning functions
        +            'GENERATE_SERIES','GENERATE_SUBSCRIPTS'
        +            // system information functions not currently included
        +            ),
        +
        +        //Put your postgresql var
        +        4 => array(
        +            'client_encoding',
        +            'standard_conforming_strings'
        +            ),
        +
        +        //Put your data types here
        +        5 => array(
        +            'ARRAY','ABSTIME','BIGINT','BIGSERIAL','BINARY','BIT','BIT VARYING',
        +            'BOOLEAN','BOX','BYTEA','CHAR','CHARACTER','CHARACTER VARYING',
        +            'CIDR','CIRCLE','DATE','DECIMAL','DOUBLE PRECISION','ENUM','FLOAT',
        +            'INET','INT','INTEGER','INTERVAL','NCHAR','REAL','SMALLINT','TEXT',
        +            'TIME','TIMESTAMP','VARCHAR','XML',
        +            ),
        +
        +        //        //Put your package names here
        +        //        6 => array(
        +        //            ),
        +
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '=', '<', '>', '|'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            // regular keywords
        +            1 => 'color: #000000; font-weight: bold; text-transform: uppercase;',
        +            // inbuilt functions
        +            3 => 'color: #333399; font-weight: bold; text-transform: uppercase;',
        +            // postgresql var(?)
        +            4 => 'color: #993333; font-weight: bold; text-transform: uppercase;',
        +            // data types
        +            5 => 'color: #993333; font-weight: bold; text-transform: uppercase;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #ff0000;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        3 => '',
        +        4 => 'http://paste.postgresql.fr/wiki/desc.php?def={FNAME}',
        +        5 => '',
        +        ),
        +
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            1 => array(
        +                'DISALLOWED_AFTER' => '(?![\(\w])'
        +                ),
        +
        +            3 => array(
        +                'DISALLOWED_AFTER' => '(?=\()'
        +                ),
        +
        +            4 => array(
        +                'DISALLOWED_AFTER' => '(?![\(\w])'
        +                ),
        +
        +            5 => array(
        +                'DISALLOWED_AFTER' => '(?![\(\w])'
        +                ),
        +            )
        +        )
        +);
        diff --git a/includes/geshi/postscript.php b/includes/geshi/postscript.php
        new file mode 100644
        index 0000000..cbd10f6
        --- /dev/null
        +++ b/includes/geshi/postscript.php
        @@ -0,0 +1,217 @@
        + 'PostScript',
        +    'COMMENT_SINGLE' => array(0 => '%'),
        +    'COMMENT_MULTI' => array(), //array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        // Strings
        +        1 => "/\((?:\\\\[0-7]{3}|\\\\.|(?R)|[^)])*\)/s",
        +        // Hex Strings
        +        2 => "/<(?!<)[0-9a-f\s]*>/si",
        +        // ASCII-85 Strings
        +        3 => "/<~.*~>/si",
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        ),
        +    'NUMBERS' => array(
        +        0 => GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_FLT_NONSCI | GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
        +        1 => "\d+#[0-9a-zA-Z]+"
        +        ),
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'countexecstack', 'def', 'dup', 'exch', 'exec', 'execstack', 'exit',
        +            'for', 'if', 'ifelse', 'loop', 'pop', 'repeat',
        +
        +            'abs', 'add', 'atan', 'ceiling', 'cos', 'div', 'exp', 'floor',
        +            'idiv', 'ln', 'log', 'mul', 'mod', 'neg', 'rand', 'round', 'rrand',
        +            'sin', 'sqrt', 'srand', 'sub', 'truncate',
        +
        +            'and', 'bitshift', 'eq', 'ge', 'gt', 'le', 'lt', 'ne', 'not', 'or', 'xor',
        +            ),
        +        2 => array(
        +            'false', 'null', 'true', 'version'
        +            ),
        +        3 => array(
        +            'quit', 'start', 'stop', 'stopped',
        +
        +            'clear', 'cleartomark', 'copy', 'count', 'counttomark', 'index', 'roll',
        +
        +            'aload', 'astore', 'begin', 'countdictstack', 'currentdict',
        +            'dictstack', 'end', 'errordict', 'forall', 'get',
        +            'getinterval', 'known', 'length', 'load', 'maxlength', 'put',
        +            'putinterval', 'store', 'systemdict', 'userdict', 'where',
        +
        +            'anchorsearch', 'search', 'token',
        +
        +            'cvi', 'cvlit', 'cvn', 'cvr', 'cvrs', 'cvs', 'cvx', 'executeonly',
        +            'noaccess', 'rcheck', 'readonly', 'type', 'wcheck', 'xcheck',
        +
        +            'bytesavailable', 'closefile', 'currentfile', 'echo', 'file',
        +            'flush', 'flushfile', 'print', 'prompt', 'pstack', 'read',
        +            'readhexstring', 'readline', 'readstring', 'resetfile', 'restore',
        +            'run', 'save', 'stack', 'status', 'vmstatus', 'write',
        +            'writehexstring', 'writestring',
        +
        +            'bind', 'usertime',
        +
        +            'currentdash', 'currentflat', 'currentgray', 'currenthsbcolor',
        +            'currentlinecap', 'currentlinejoin', 'currentlinewidth',
        +            'currentmiterlimit', 'currentrgbcolor', 'currentscreen',
        +            'currenttransfer', 'grestore', 'grestoreall', 'gsave',
        +            'initgraphics', 'proc', 'setdash', 'setflat', 'setgray',
        +            'sethsbcolor', 'setlinecap', 'setlinejoin', 'setlinewidth',
        +            'setmiterlimit', 'setrgbcolor', 'setscreen', 'settransfer',
        +
        +            'concat', 'concatmatrix', 'currentmatrix', 'defaultmatrix',
        +            'dtransform', 'identmatrix', 'idtransform', 'initmatrix',
        +            'invertmatrix', 'itransform', 'rotate', 'scale', 'setmatrix',
        +            'transform', 'translate',
        +
        +            'arc', 'arcn', 'arcto', 'charpath', 'clip', 'clippath', 'closepath',
        +            'currentpoint', 'curveto', 'eoclip', 'eofill', 'erasepage', 'fill',
        +            'flattenpath', 'image', 'imagemask', 'initclip', 'lineto', 'moveto',
        +            'newpath', 'pathbbox', 'pathforall', 'rcurveto', 'reversepath',
        +            'rlineto', 'rmoveto', 'stroke', 'strokepath',
        +
        +            'banddevice', 'copypage', 'framedevice', 'nulldevice', 'renderbands',
        +            'showpage',
        +
        +            'ashow', 'awidthshow', 'currentfont', 'definefont', 'findfont',
        +            'fontdict', 'kshow', 'makefont', 'scalefont', 'setfont', 'show',
        +            'stringwidth', 'widthshow', 'FontDirectory', 'StandardEncoding',
        +
        +            'cachestatus', 'setcachedevice', 'setcachelimit', 'setcharwidth',
        +
        +            'dictfull', 'dictstackoverflow', 'dictstackunderflow',
        +            'execstackoverflow', 'handleerror', 'interrupt', 'invalidaccess',
        +            'invalidexit', 'invalidfileaccess', 'invalidfont', 'invalidrestore',
        +            'ioerror', 'limitcheck', 'nocurrentpoint', 'rangecheck',
        +            'stackoverflow', 'stackunderflow', 'syntaxerror', 'timeout',
        +            'typecheck', 'undefined', 'undefinedfilename', 'undefinedresult',
        +            'unmatchedmark', 'unregistered', 'VMerror'
        +            ),
        +        4 => array(
        +            'array', 'dict', 'mark', 'matrix', 'string'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array('==', '=', '/', '//'),
        +        1 => array('[', ']'),
        +        2 => array('{', '}'),
        +        3 => array('<<', '>>')
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000066; font-weight: bold;',
        +            2 => 'color: #0000ff; font-weight: bold;',
        +            3 => 'color: #000000; font-weight: bold;',
        +            4 => 'color: #993333; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            0 => 'color: #333333; font-style: italic;',
        +            1 => 'color: #339933;',
        +            2 => 'color: #006600;',
        +            3 => 'color: #666666;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            'HARD' => ''
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #0000dd;',
        +            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',
        +            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
        +            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;',
        +            1 => 'color: #009900;',
        +            2 => 'color: #009900;',
        +            3 => 'color: #009900;'
        +            ),
        +        'REGEXPS' => array(
        +            1 => 'color: #006600;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        1 => "#(?<=\\x2F)[\\w-]+#"
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/povray.php b/includes/geshi/povray.php
        new file mode 100644
        index 0000000..19d6c38
        --- /dev/null
        +++ b/includes/geshi/povray.php
        @@ -0,0 +1,198 @@
        + 'POVRAY',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'yes', 'wrinkles', 'wood', 'width', 'waves', 'water_level', 'warp', 'vturbulence',
        +            'vstr', 'vrotate', 'vnormalize', 'vlength', 'vcross', 'vaxis_rotate', 'variance', 'v_steps',
        +            'uv_mapping', 'utf8', 'use_index', 'use_colour', 'use_color', 'use_alpha', 'up', 'undef',
        +            'ultra_wide_angle', 'u_steps', 'type', 'turbulence', 'turb_depth', 'ttf', 'true', 'triangle_wave',
        +            'translate', 'transform', 'trace', 'toroidal', 'tolerance', 'tiles', 'tile2', 'tightness',
        +            'tiff', 'threshold', 'thickness', 'tga', 'texture_map', 'target', 'sys', 'sum',
        +            'substr', 'sturm', 'strupr', 'strlwr', 'strength', 'str', 'statistics', 'sqr',
        +            'spotted', 'spotlight', 'split_union', 'spline', 'spiral2', 'spiral1', 'spherical', 'specular',
        +            'spacing', 'solid', 'smooth', 'slope', 'slice', 'sky', 'size', 'sine_wave',
        +            'shadowless', 'scattering', 'scallop_wave', 'scale', 'save_file', 'samples', 'roughness', 'rotate',
        +            'ripples', 'right', 'rgbt', 'rgbft', 'rgbf', 'rgb', 'repeat', 'render',
        +            'refraction', 'reflection_exponent', 'recursion_limit', 'reciprocal', 'ratio', 'ramp_wave', 'radius', 'radial',
        +            'quilted', 'quick_colour', 'quick_color', 'quaternion', 'quadratic_spline', 'pwr', 'projected_through', 'prod',
        +            'pretrace_start', 'pretrace_end', 'precompute', 'precision', 'ppm', 'pow', 'pot', 'poly_wave',
        +            'point_at', 'png', 'planar', 'pigment_pattern', 'pi', 'phong_size', 'phong', 'phase',
        +            'pgm', 'perspective', 'pattern', 'pass_through', 'parallel', 'panoramic', 'orthographic', 'orientation',
        +            'orient', 'open', 'onion', 'once', 'on', 'omnimax', 'omega', 'offset',
        +            'off', 'octaves', 'number_of_waves', 'noise_generator', 'no_shadow', 'no_reflection', 'no_image', 'no_bump_scale',
        +            'no', 'nearest_count', 'natural_spline', 'mortar', 'minimum_reuse', 'min_extent', 'metric', 'method',
        +            'metallic', 'media_interaction', 'media_attenuation', 'media', 'max_trace_level', 'max_trace', 'max_sample', 'max_iteration',
        +            'max_intersections', 'max_gradient', 'max_extent', 'matrix', 'material_map', 'marble', 'map_type', 'mandel',
        +            'major_radius', 'magnet', 'low_error_factor', 'look_at', 'location', 'load_file', 'linear_sweep', 'linear_spline',
        +            'leopard', 'lambda', 'julia', 'jpeg', 'jitter', 'irid_wavelength', 'ior', 'inverse',
        +            'intervals', 'interpolate', 'internal', 'inside_vector', 'inside', 'initial_frame', 'initial_clock', 'image_width',
        +            'image_pattern', 'image_height', 'iff', 'hypercomplex', 'hollow', 'hierarchy', 'hf_gray_16', 'hexagon',
        +            'gray_threshold', 'granite', 'gradient', 'global_lights', 'gif', 'gather', 'fresnel', 'frequency',
        +            'frame_number', 'form', 'fog_type', 'fog_offset', 'fog_alt', 'focal_point', 'flip', 'flatness',
        +            'fisheye', 'final_frame', 'final_clock', 'false', 'falloff_angle', 'falloff', 'fade_power', 'fade_distance',
        +            'fade_colour', 'fade_color', 'facets', 'extinction', 'exterior', 'exponent', 'expand_thresholds', 'evaluate',
        +            'error_bound', 'emission', 'eccentricity', 'double_illuminate', 'distance', 'dist_exp', 'dispersion_samples', 'dispersion',
        +            'direction', 'diffuse', 'df3', 'dents', 'density_map', 'density_file', 'density', 'cylindrical',
        +            'cutaway_textures', 'cubic_wave', 'cubic_spline', 'cube', 'crand', 'crackle', 'count', 'coords',
        +            'control1', 'control0', 'conserve_energy', 'conic_sweep', 'confidence', 'concat', 'composite', 'component',
        +            'colour_map', 'colour', 'color', 'collect', 'clock_on', 'clock_delta', 'clock', 'circular',
        +            'chr', 'checker', 'charset', 'cells', 'caustics', 'bumps', 'bump_size', 'brilliance',
        +            'brightness', 'brick_size', 'brick', 'bozo', 'boxed', 'blur_samples', 'black_hole', 'bezier_spline',
        +            'b_spline', 'average', 'autostop', 'assumed_gamma', 'ascii', 'array', 'area_light', 'arc_angle',
        +            'append', 'aperture', 'angle', 'ambient_light', 'ambient', 'always_sample', 'altitude', 'alpha',
        +            'all_intersections', 'all', 'agate_turb', 'agate', 'adc_bailout', 'adaptive', 'accuracy', 'absorption',
        +            'aa_threshold', 'aa_level', 'reflection'
        +            ),
        +        2 => array(
        +            'abs', 'acos', 'acosh', 'asc', 'asin', 'asinh', 'atan', 'atanh',
        +            'atan2', 'ceil', 'cos', 'cosh', 'defined', 'degrees', 'dimensions', 'dimension_size',
        +            'div', 'exp', 'file_exists', 'floor', 'int', 'ln', 'log', 'max',
        +            'min', 'mod', 'pov', 'radians', 'rand', 'seed', 'select', 'sin',
        +            'sinh', 'sqrt', 'strcmp', 'strlen', 'tan', 'tanh', 'val', 'vdot',
        +            'vlenght',
        +            ),
        +        3 => array (
        +            'x', 'y', 'z', 't', 'u', 'v', 'red', 'blue',
        +            'green', 'filter', 'transmit', 'gray', 'e',
        +            ),
        +        4 => array (
        +            'camera', 'background', 'fog', 'sky_sphere', 'rainbow', 'global_settings', 'radiosity', 'photon',
        +            'object', 'blob', 'sphere', 'cylinder', 'box', 'cone', 'height_field', 'julia_fractal',
        +            'lathe', 'prism', 'sphere_sweep', 'superellipsoid', 'sor', 'text', 'torus', 'bicubic_patch',
        +            'disc', 'mesh', 'triangle', 'smooth_triangle', 'mesh2', 'vertex_vectors', 'normal_vectors', 'uv_vectors',
        +            'texture_list', 'face_indices', 'normal_indices', 'uv_indices', 'texture', 'polygon', 'plane', 'poly',
        +            'cubic', 'quartic', 'quadric', 'isosurface', 'function', 'contained_by', 'parametric', 'pigment',
        +            'union', 'intersection', 'difference', 'merge', 'light_source', 'looks_like', 'light_group', 'clipped_by',
        +            'bounded_by', 'interior', 'material', 'interior_texture', 'normal', 'finish', 'color_map', 'pigment_map',
        +            'image_map', 'bump_map', 'slope_map', 'normal_map', 'irid', 'photons',
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}', '!',
        +        '@', '%', '&', '*', '|', '/', '<',
        +        '>', '+', '-', '.', '=', '<=', '>=',
        +        '!=',
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #a63123;',
        +            2 => 'color: #2312bc;',
        +            3 => 'color: #cc1122; font-weight: bold;',
        +            4 => 'color: #116688; font-weight: bold;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +//            2 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66aa;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;',
        +            2 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #6666cc; font-weight: bold;',
        +            1 => 'color: #66cc66; font-weight: bold;',
        +            2 => 'color: #66cc66; font-weight: bold;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => '',
        +            2 => '',
        +            3 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        # normal hash lines
        +        0 => '\#(?!(include|declare|local|fopen|fclose|read|write|default|version|if|else|end|ifdef|ifndef|switch|case|range|break|while|debug|error|warning|macro) )[[:word:]]*',
        +        # syntax functions hash thingis
        +        1 => "\#(include|declare|local|fopen|fclose|read|write|default|version|if|else|end|ifdef|ifndef|switch|case|range|break|while|debug|error|warning|macro)",
        +        2 => array(
        +            GESHI_SEARCH  => "([a-zA-Z]+)(\n)(.*)(\n)(\\1;?)",
        +            GESHI_REPLACE => '\3',
        +            GESHI_BEFORE => '\1\2',
        +            GESHI_AFTER => '\4\5',
        +            GESHI_MODIFIERS => 'siU'
        +            )
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => true,
        +        1 => true,
        +        2 => true,
        +        3 => true
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/powerbuilder.php b/includes/geshi/powerbuilder.php
        new file mode 100644
        index 0000000..e2530b6
        --- /dev/null
        +++ b/includes/geshi/powerbuilder.php
        @@ -0,0 +1,417 @@
        + 'PowerBuilder',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '~',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'alias', 'and', 'autoinstantiate', 'call',
        +            'case', 'catch', 'choose', 'close', 'commit', 'connect',
        +            'constant', 'continue', 'create', 'cursor', 'declare',
        +            'delete', 'describe', 'descriptor', 'destroy', 'disconnect',
        +            'do', 'dynamic', 'else', 'elseif', 'end', 'enumerated',
        +            'event', 'execute', 'exit', 'external', 'false', 'fetch',
        +            'first', 'for', 'forward', 'from', 'function', 'global',
        +            'goto', 'halt', 'if', 'immediate', 'indirect', 'insert',
        +            'into', 'intrinsic', 'is', 'last', 'library', 'loop', 'next',
        +            'not', 'of', 'on', 'open', 'or', 'parent', 'post', 'prepare',
        +            'prior', 'private', 'privateread', 'privatewrite', 'procedure',
        +            'protected', 'protectedread', 'protectedwrite', 'prototypes',
        +            'public', 'readonly', 'ref', 'return', 'rollback', 'rpcfunc',
        +            'select', 'selectblob', 'shared', 'static', 'step', 'subroutine',
        +            'super', 'system', 'systemread', 'systemwrite', 'then', 'this',
        +            'to', 'trigger', 'true', 'try', 'type', 'until', 'update', 'updateblob',
        +            'using', 'variables', 'where', 'while', 'with', 'within'
        +            ),
        +        2 => array (
        +            'blob', 'boolean', 'char', 'character', 'date', 'datetime',
        +            'dec', 'decimal',
        +            'double', 'int', 'integer', 'long', 'real', 'string', 'time',
        +            'uint', 'ulong', 'unsignedint', 'unsignedinteger', 'unsignedlong'
        +            ),
        +        3 => array (
        +            'abortretryignore!', 'actbegin!', 'acterror!', 'actesql!',
        +            'actgarbagecollect!', 'activate!', 'activatemanually!',
        +            'activateondoubleclick!',
        +            'activateongetfocus!', 'actline!', 'actobjectcreate!', 'actobjectdestroy!',
        +            'actprofile!', 'actroutine!', 'acttrace!', 'actual!',
        +            'actuser!', 'adoresultset!', 'adtdate!', 'adtdatetime!',
        +            'adtdefault!', 'adtdouble!', 'adttext!', 'adttime!',
        +            'aix!', 'alignatbottom!', 'alignatleft!', 'alignatright!',
        +            'alignattop!', 'all!', 'allowpartialchanges!', 'alpha!',
        +            'ansi!', 'any!', 'anycase!', 'anyfont!',
        +            'append!', 'application!', 'arabiccharset!', 'area3d!',
        +            'areagraph!', 'arraybounds!', 'arrow!', 'ascending!',
        +            'asstatement!', 'atbottom!', 'atleft!', 'atright!',
        +            'attop!', 'autosize!', 'background!', 'balticcharset!',
        +            'bar3dgraph!', 'bar3dobjgraph!', 'bargraph!', 'barstack3dobjgraph!',
        +            'barstackgraph!', 'bdiagonal!', 'beam!', 'begin!',
        +            'begindrag!', 'beginlabeledit!', 'beginrightdrag!', 'behind!',
        +            'blob!', 'bold!', 'boolean!', 'bottom!',
        +            'boundedarray!', 'box!', 'byreferenceargument!', 'byvalueargument!',
        +            'cancel!', 'cascade!', 'cascaded!', 'category!',
        +            'center!', 'character!', 'charsetansi!', 'charsetansiarabic!',
        +            'charsetansihebrew!', 'charsetdbcsjapanese!', 'charsetunicode!', 'checkbox!',
        +            'child!', 'childtreeitem!', 'chinesebig5!', 'classdefinition!',
        +            'classdefinitionobject!', 'classorstructuretype!', 'clicked!', 'clip!',
        +            'clipboard!', 'clipformatbitmap!', 'clipformatdib!', 'clipformatdif!',
        +            'clipformatenhmetafile!', 'clipformathdrop!', 'clipformatlocale!',
        +            'clipformatmetafilepict!',
        +            'clipformatoemtext!', 'clipformatpalette!', 'clipformatpendata!', 'clipformatriff!',
        +            'clipformatsylk!', 'clipformattext!', 'clipformattiff!', 'clipformatunicodetext!',
        +            'clipformatwave!', 'clock!', 'close!', 'closequery!',
        +            'col3dgraph!', 'col3dobjgraph!', 'colgraph!',
        +            'colstack3dobjgraph!', 'colstackgraph!', 'columnclick!', 'commandbutton!',
        +            'connection!', 'connectioninfo!', 'connectobject!', 'connectprivilege!',
        +            'connectwithadminprivilege!', 'constructor!', 'containsany!', 'containsembeddedonly!',
        +            'containslinkedonly!', 'contextinformation!', 'contextkeyword!', 'continuous!',
        +            'corbaobject!', 'corbaunion!', 'cplusplus!', 'cross!',
        +            'csv!', 'cumulative!', 'cumulativepercent!', 'currenttreeitem!',
        +            'customvisual!', 'dash!', 'dashdot!', 'dashdotdot!',
        +            'data!', 'datachange!', 'datamodified!', 'datastore!',
        +            'datawindow!', 'datawindowchild!', 'date!', 'datemask!',
        +            'datetime!', 'datetimemask!', 'dbase2!', 'dbase3!',
        +            'dberror!', 'deactivate!', 'decimal!', 'decimalmask!',
        +            'decorative!', 'default!', 'defaultcharset!', 'delete!',
        +            'deleteallitems!', 'deleteitem!', 'descending!', 'desktop!',
        +            'destructor!', 'detail!', 'diamond!', 'dif!',
        +            'dirall!', 'dirapplication!', 'dirdatawindow!', 'directionall!',
        +            'directiondown!', 'directionleft!', 'directionright!', 'directionup!',
        +            'dirfunction!', 'dirmenu!', 'dirpipeline!', 'dirproject!',
        +            'dirquery!', 'dirstructure!', 'diruserobject!', 'dirwindow!',
        +            'displayasactivexdocument!', 'displayascontent!', 'displayasicon!', 'dot!',
        +            'double!', 'doubleclicked!', 'dragdrop!', 'dragenter!',
        +            'dragleave!', 'dragobject!', 'dragwithin!', 'drawobject!',
        +            'dropdownlistbox!', 'dropdownpicturelistbox!', 'drophighlighttreeitem!', 'dwobject!',
        +            'dynamicdescriptionarea!', 'dynamicstagingarea!', 'easteuropecharset!', 'editchanged!',
        +            'editmask!', 'editmenu!', 'encodingansi!', 'encodingutf8!',
        +            'encodingutf16le!', 'encodingutf16be!', 'end!', 'endlabeledit!',
        +            'enterprise!', 'enterpriseonlyfeature!', 'enumeratedtype!', 'enumerationdefinition!',
        +            'enumerationitemdefinition!', 'environment!', 'error!', 'errorlogging!',
        +            'eventnotexisterror!', 'eventwrongprototypeerror!', 'excel!', 'excel5!',
        +            'exceptionfail!', 'exceptionignore!', 'exceptionretry!',
        +            'exceptionsubstitutereturnvalue!',
        +            'exclamation!', 'exclude!', 'exportapplication!', 'exportdatawindow!',
        +            'exportfunction!', 'exportmenu!', 'exportpipeline!', 'exportproject!',
        +            'exportquery!', 'exportstructure!', 'exportuserobject!', 'exportwindow!',
        +            'externalvisual!', 'extobject!', 'failonanyconflict!', 'fdiagonal!',
        +            'featurenotsupportederror!', 'filealreadyopenerror!', 'filecloseerror!',
        +            'fileexists!',
        +            'fileinvalidformaterror!', 'filemenu!', 'filenotopenerror!', 'filenotseterror!',
        +            'filereaderror!', 'filetyperichtext!', 'filetypetext!', 'filewriteerror!',
        +            'filter!', 'first!', 'firstvisibletreeitem!', 'fixed!',
        +            'floating!', 'focusrect!', 'footer!', 'foreground!',
        +            'frombeginning!', 'fromcurrent!', 'fromend!', 'functionobject!',
        +            'gb231charset!', 'getfocus!', 'graph!', 'graphicobject!',
        +            'graxis!', 'grdispattr!', 'greekcharset!', 'groupbox!',
        +            'hand!', 'hangeul!', 'header!', 'hebrewcharset!',
        +            'helpmenu!', 'hide!', 'horizontal!', 'hotlinkalarm!',
        +            'hourglass!', 'hppa!', 'hprogressbar!', 'hpux!',
        +            'hscrollbar!', 'hticksonboth!', 'hticksonbottom!', 'hticksonneither!',
        +            'hticksontop!', 'htmltable!', 'htrackbar!', 'i286!',
        +            'i386!', 'i486!', 'icon!', 'icons!',
        +            'idle!', 'importdatawindow!', 'indent!', 'index!',
        +            'inet!', 'information!', 'inplace!', 'inputfieldselected!',
        +            'insertitem!', 'inside!', 'integer!', 'internetresult!',
        +            'italic!', 'itemchanged!', 'itemchanging!', 'itemcollapsed!',
        +            'itemcollapsing!', 'itemerror!', 'itemexpanded!', 'itemexpanding!',
        +            'itemfocuschanged!', 'itempopulate!', 'jaguarorb!', 'johabcharset!',
        +            'justify!', 'key!', 'key0!', 'key1!',
        +            'key2!', 'key3!', 'key4!', 'key5!',
        +            'key6!', 'key7!', 'key8!', 'key9!',
        +            'keya!', 'keyadd!', 'keyalt!', 'keyapps!',
        +            'keyb!', 'keyback!', 'keybackquote!', 'keybackslash!',
        +            'keyc!', 'keycapslock!', 'keycomma!', 'keycontrol!',
        +            'keyd!', 'keydash!', 'keydecimal!', 'keydelete!',
        +            'keydivide!', 'keydownarrow!', 'keye!', 'keyend!',
        +            'keyenter!', 'keyequal!', 'keyescape!', 'keyf!',
        +            'keyf1!', 'keyf10!', 'keyf11!', 'keyf12!',
        +            'keyf2!', 'keyf3!', 'keyf4!', 'keyf5!',
        +            'keyf6!', 'keyf7!', 'keyf8!', 'keyf9!',
        +            'keyg!', 'keyh!', 'keyhome!', 'keyi!',
        +            'keyinsert!', 'keyj!', 'keyk!', 'keyl!',
        +            'keyleftarrow!', 'keyleftbracket!', 'keyleftbutton!', 'keyleftwindows!',
        +            'keym!', 'keymiddlebutton!', 'keymultiply!', 'keyn!',
        +            'keynull!', 'keynumlock!', 'keynumpad0!', 'keynumpad1!',
        +            'keynumpad2!', 'keynumpad3!', 'keynumpad4!', 'keynumpad5!',
        +            'keynumpad6!', 'keynumpad7!', 'keynumpad8!', 'keynumpad9!',
        +            'keyo!', 'keyp!', 'keypagedown!', 'keypageup!',
        +            'keypause!', 'keyperiod!', 'keyprintscreen!', 'keyq!',
        +            'keyquote!', 'keyr!', 'keyrightarrow!', 'keyrightbracket!',
        +            'keyrightbutton!', 'keyrightwindows!', 'keys!', 'keyscrolllock!',
        +            'keysemicolon!', 'keyshift!', 'keyslash!', 'keyspacebar!',
        +            'keysubtract!', 'keyt!', 'keytab!', 'keyu!',
        +            'keyuparrow!', 'keyv!', 'keyw!', 'keyword!',
        +            'keyx!', 'keyy!', 'keyz!', 'languageafrikaans!',
        +            'languagealbanian!', 'languagearabicalgeria!', 'languagearabicbahrain!',
        +            'languagearabicegypt!',
        +            'languagearabiciraq!', 'languagearabicjordan!', 'languagearabickuwait!',
        +            'languagearabiclebanon!',
        +            'languagearabiclibya!', 'languagearabicmorocco!', 'languagearabicoman!',
        +            'languagearabicqatar!',
        +            'languagearabicsaudiarabia!', 'languagearabicsyria!', 'languagearabictunisia!',
        +            'languagearabicuae!',
        +            'languagearabicyemen!', 'languagebasque!', 'languagebulgarian!', 'languagebyelorussian!',
        +            'languagecatalan!', 'languagechinese!', 'languagechinesehongkong!', 'languagechinesesimplified!',
        +            'languagechinesesingapore!', 'languagechinesetraditional!', 'languagecroatian!', 'languageczech!',
        +            'languagedanish!', 'languagedutch!', 'languagedutchbelgian!', 'languagedutchneutral!',
        +            'languageenglish!', 'languageenglishaustralian!', 'languageenglishcanadian!',
        +            'languageenglishirish!',
        +            'languageenglishnewzealand!', 'languageenglishsouthafrica!', 'languageenglishuk!',
        +            'languageenglishus!',
        +            'languageestonian!', 'languagefaeroese!', 'languagefarsi!', 'languagefinnish!',
        +            'languagefrench!', 'languagefrenchbelgian!', 'languagefrenchcanadian!', 'languagefrenchluxembourg!',
        +            'languagefrenchneutral!', 'languagefrenchswiss!', 'languagegerman!', 'languagegermanaustrian!',
        +            'languagegermanliechtenstein!', 'languagegermanluxembourg!', 'languagegermanneutral!',
        +            'languagegermanswiss!',
        +            'languagegreek!', 'languagehebrew!', 'languagehindi!', 'languagehungarian!',
        +            'languageicelandic!', 'languageindonesian!', 'languageitalian!', 'languageitalianneutral!',
        +            'languageitalianswiss!', 'languagejapanese!', 'languagekorean!', 'languagekoreanjohab!',
        +            'languagelatvian!', 'languagelithuanian!', 'languagemacedonian!', 'languagemaltese!',
        +            'languageneutral!', 'languagenorwegian!', 'languagenorwegianbokmal!', 'languagenorwegiannynorsk!',
        +            'languagepolish!', 'languageportuguese!', 'languageportuguese_brazilian!',
        +            'languageportugueseneutral!',
        +            'languagerhaetoromanic!', 'languageromanian!', 'languageromanianmoldavia!', 'languagerussian!',
        +            'languagerussianmoldavia!', 'languagesami!', 'languageserbian!', 'languageslovak!',
        +            'languageslovenian!', 'languagesorbian!', 'languagesortnative!', 'languagesortunicode!',
        +            'languagespanish!', 'languagespanishcastilian!', 'languagespanishmexican!', 'languagespanishmodern!',
        +            'languagesutu!', 'languageswedish!', 'languagesystemdefault!', 'languagethai!',
        +            'languagetsonga!', 'languagetswana!', 'languageturkish!', 'languageukrainian!',
        +            'languageurdu!', 'languageuserdefault!', 'languagevenda!', 'languagexhosa!',
        +            'languagezulu!', 'last!', 'layer!', 'layered!',
        +            'Left!', 'leftmargin!', 'line!', 'line3d!',
        +            'linear!', 'linecolor!', 'linedown!', 'linegraph!',
        +            'lineleft!', 'linemode!', 'lineright!', 'lineup!',
        +            'linkupdateautomatic!', 'linkupdatemanual!', 'listbox!', 'listview!',
        +            'listviewitem!', 'listviewlargeicon!', 'listviewlist!', 'listviewreport!',
        +            'listviewsmallicon!', 'lockread!', 'lockreadwrite!', 'lockwrite!',
        +            'log10!', 'loge!', 'long!', 'losefocus!',
        +            'lower!', 'lowered!', 'm68000!', 'm68020!',
        +            'm68030!', 'm68040!', 'maccharset!', 'macintosh!',
        +            'mailattach!', 'mailbcc!', 'mailbodyasfile!', 'mailcc!',
        +            'maildownload!', 'mailentiremessage!', 'mailenvelopeonly!', 'mailfiledescription!',
        +            'mailmessage!', 'mailnewsession!', 'mailnewsessionwithdownload!', 'mailole!',
        +            'mailolestatic!', 'mailoriginator!', 'mailrecipient!', 'mailreturnaccessdenied!',
        +            'mailreturnattachmentnotfound!', 'mailreturnattachmentopenfailure!',
        +            'mailreturnattachmentwritefailure!', 'mailreturndiskfull!',
        +            'mailreturnfailure!', 'mailreturninsufficientmemory!', 'mailreturninvalidmessage!',
        +            'mailreturnloginfailure!',
        +            'mailreturnmessageinuse!', 'mailreturnnomessages!', 'mailreturnsuccess!', 'mailreturntexttoolarge!',
        +            'mailreturntoomanyfiles!', 'mailreturntoomanyrecipients!', 'mailreturntoomanysessions!',
        +            'mailreturnunknownrecipient!',
        +            'mailreturnuserabort!', 'mailsession!', 'mailsuppressattachments!', 'mailto!',
        +            'main!', 'maximized!', 'mdi!', 'mdiclient!',
        +            'mdihelp!', 'menu!', 'menucascade!', 'menuitemtypeabout!',
        +            'menuitemtypeexit!', 'menuitemtypehelp!', 'menuitemtypenormal!', 'merge!',
        +            'message!', 'minimized!', 'mips!', 'modelexistserror!',
        +            'modelnotexistserror!', 'modern!', 'modified!', 'mousedown!',
        +            'mousemove!', 'mouseup!', 'moved!', 'multiline!',
        +            'multilineedit!', 'mutexcreateerror!', 'new!', 'newmodified!',
        +            'next!', 'nexttreeitem!', 'nextvisibletreeitem!', 'noborder!',
        +            'noconnectprivilege!', 'nolegend!', 'none!', 'nonvisualobject!',
        +            'normal!', 'nosymbol!', 'notic!', 'notmodified!',
        +            'notopmost!', 'notype!', 'numericmask!', 'objhandle!',
        +            'oem!', 'off!', 'offsite!', 'ok!',
        +            'okcancel!', 'olecontrol!', 'olecustomcontrol!', 'oleobject!',
        +            'olestorage!', 'olestream!', 'oletxnobject!', 'omcontrol!',
        +            'omcustomcontrol!', 'omembeddedcontrol!', 'omobject!', 'omstorage!',
        +            'omstream!', 'open!', 'orb!', 'original!',
        +            'osf1!', 'other!', 'outside!', 'oval!',
        +            'pagedown!', 'pageleft!', 'pageright!', 'pageup!',
        +            'parenttreeitem!', 'pbtocppobject!', 'pentium!', 'percentage!',
        +            'picture!', 'picturebutton!', 'picturehyperlink!', 'picturelistbox!',
        +            'pictureselected!', 'pie3d!', 'piegraph!', 'pipeend!',
        +            'pipeline!', 'pipemeter!', 'pipestart!', 'popup!',
        +            'powerobject!', 'powerpc!', 'powerrs!', 'ppc601!',
        +            'ppc603!', 'ppc604!', 'previewdelete!', 'previewfunctionreselectrow!',
        +            'previewfunctionretrieve!', 'previewfunctionupdate!', 'previewinsert!', 'previewselect!',
        +            'previewupdate!', 'previoustreeitem!', 'previousvisibletreeitem!', 'primary!',
        +            'printend!', 'printfooter!', 'printheader!', 'printpage!',
        +            'printstart!', 'prior!', 'private!', 'process!',
        +            'profilecall!', 'profileclass!', 'profileline!', 'profileroutine!',
        +            'profiling!', 'protected!', 'psreport!', 'public!',
        +            'question!', 'radiobutton!', 'raised!', 'rbuttondown!',
        +            'rbuttonup!', 'read!', 'readonlyargument!', 'real!',
        +            'rectangle!', 'regbinary!', 'regexpandstring!', 'reglink!',
        +            'regmultistring!', 'regstring!', 'regulong!', 'regulongbigendian!',
        +            'remoteexec!', 'remotehotlinkstart!', 'remotehotlinkstop!', 'remoteobject!',
        +            'remoterequest!', 'remotesend!', 'rename!', 'replace!',
        +            'resize!', 'resizeborder!', 'response!', 'resultset!',
        +            'resultsets!', 'retrieveend!', 'retrieverow!', 'retrievestart!',
        +            'retrycancel!', 'richtextedit!', 'Right!', 'rightclicked!',
        +            'rightdoubleclicked!', 'rightmargin!', 'rnddays!', 'rnddefault!',
        +            'rndhours!', 'rndmicroseconds!', 'rndminutes!', 'rndmonths!',
        +            'rndnumber!', 'rndseconds!', 'rndyears!', 'roman!',
        +            'roottreeitem!', 'roundrectangle!', 'routineesql!', 'routineevent!',
        +            'routinefunction!', 'routinegarbagecollection!', 'routineobjectcreation!',
        +            'routineobjectdestruction!',
        +            'routineroot!', 'rowfocuschanged!', 'russiancharset!', 'save!',
        +            'scalartype!', 'scattergraph!', 'script!', 'scriptdefinition!',
        +            'scriptevent!', 'scriptfunction!', 'scrollhorizontal!', 'scrollvertical!',
        +            'selected!', 'selectionchanged!', 'selectionchanging!', 'series!',
        +            'service!', 'shade!', 'shadowbox!', 'shared!',
        +            'sharedobjectcreateinstanceerror!', 'sharedobjectcreatepbsessionerror!',
        +            'sharedobjectexistserror!', 'sharedobjectnotexistserror!',
        +            'shiftjis!', 'show!', 'simpletype!', 'simpletypedefinition!',
        +            'singlelineedit!', 'size!', 'sizenesw!', 'sizens!',
        +            'sizenwse!', 'sizewe!', 'sol2!', 'solid!',
        +            'sort!', 'sourcepblerror!', 'spacing1!', 'spacing15!',
        +            'spacing2!', 'sparc!', 'sqlinsert!', 'sqlpreview!',
        +            'square!', 'sslcallback!', 'sslserviceprovider!', 'statichyperlink!',
        +            'statictext!', 'stgdenynone!', 'stgdenyread!', 'stgdenywrite!',
        +            'stgexclusive!', 'stgread!', 'stgreadwrite!', 'stgwrite!',
        +            'stopsign!', 'straddle!', 'streammode!', 'stretch!',
        +            'strikeout!', 'string!', 'stringmask!', 'structure!',
        +            'stylebox!', 'stylelowered!', 'styleraised!', 'styleshadowbox!',
        +            'subscript!', 'success!', 'superscript!', 'swiss!',
        +            'sylk!', 'symbol!', 'symbolhollowbox!', 'symbolhollowcircle!',
        +            'symbolhollowdiamond!', 'symbolhollowdownarrow!', 'symbolhollowuparrow!', 'symbolplus!',
        +            'symbolsolidbox!', 'symbolsolidcircle!', 'symbolsoliddiamond!', 'symbolsoliddownarrow!',
        +            'symbolsoliduparrow!', 'symbolstar!', 'symbolx!', 'system!',
        +            'systemerror!', 'systemfunctions!', 'systemkey!', 'tab!',
        +            'tabsonbottom!', 'tabsonbottomandtop!', 'tabsonleft!', 'tabsonleftandright!',
        +            'tabsonright!', 'tabsonrightandleft!', 'tabsontop!', 'tabsontopandbottom!',
        +            'text!', 'thaicharset!', 'thread!', 'tile!',
        +            'tilehorizontal!', 'time!', 'timemask!', 'timer!',
        +            'timernone!', 'timing!', 'tobottom!', 'toolbarmoved!',
        +            'top!', 'topic!', 'topmost!', 'totop!',
        +            'traceactivitynode!', 'traceatomic!', 'tracebeginend!', 'traceerror!',
        +            'traceesql!', 'tracefile!', 'tracegarbagecollect!', 'tracegeneralerror!',
        +            'tracein!', 'traceline!', 'tracenomorenodes!', 'tracenotstartederror!',
        +            'traceobject!', 'traceout!', 'traceroutine!', 'tracestartederror!',
        +            'tracetree!', 'tracetreeerror!', 'tracetreeesql!', 'tracetreegarbagecollect!',
        +            'tracetreeline!', 'tracetreenode!', 'tracetreeobject!', 'tracetreeroutine!',
        +            'tracetreeuser!', 'traceuser!', 'transaction!', 'transactionserver!',
        +            'transparent!', 'transport!', 'treeview!', 'treeviewitem!',
        +            'turkishcharset!', 'typeboolean!', 'typecategory!', 'typecategoryaxis!',
        +            'typecategorylabel!', 'typedata!', 'typedate!', 'typedatetime!',
        +            'typedecimal!', 'typedefinition!', 'typedouble!', 'typegraph!',
        +            'typeinteger!', 'typelegend!', 'typelong!', 'typereal!',
        +            'typeseries!', 'typeseriesaxis!', 'typeserieslabel!', 'typestring!',
        +            'typetime!', 'typetitle!', 'typeuint!', 'typeulong!',
        +            'typeunknown!', 'typevalueaxis!', 'typevaluelabel!', 'ultrasparc!',
        +            'unboundedarray!', 'underline!', 'underlined!', 'unsignedinteger!',
        +            'unsignedlong!', 'unsorted!', 'uparrow!', 'updateend!',
        +            'updatestart!', 'upper!', 'userdefinedsort!', 'userobject!',
        +            'variable!', 'variableargument!', 'variablecardinalitydefinition!', 'variabledefinition!',
        +            'variableglobal!', 'variableinstance!', 'variablelocal!', 'variableshared!',
        +            'varlistargument!', 'vbxvisual!', 'vcenter!', 'vertical!',
        +            'vietnamesecharset!', 'viewchange!', 'vprogressbar!', 'vscrollbar!',
        +            'vticksonboth!', 'vticksonleft!', 'vticksonneither!', 'vticksonright!',
        +            'vtrackbar!', 'window!', 'windowmenu!', 'windowobject!',
        +            'windows!', 'windowsnt!', 'wk1!', 'wks!',
        +            'wmf!', 'write!', 'xpixelstounits!', 'xunitstopixels!',
        +            'xvalue!', 'yesno!', 'yesnocancel!', 'ypixelstounits!',
        +            'yunitstopixels!',
        +            'yvalue!',
        +            'zoom!'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +            0 => array('(', ')', '[', ']', '{', '}'),
        +            1 => array('|'),
        +            2 => array('+', '-', '*', '/'),
        +            3 => array('=', '<', '>', '^')
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #008000; font-weight: bold;',
        +            2 => 'color: #990099; font-weight: bold;',
        +            3 => 'color: #330099; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #0000ff; font-weight: bold;',
        +            'MULTI' => 'color: #0000ff; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #800000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #330099; font-weight: bold;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000000;',
        +            1 => 'color: #ffff00; background-color:#993300; font-weight: bold',
        +            2 => 'color: #000000;',
        +            3 => 'color: #000000;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #800000; font-weight: bold;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/powershell.php b/includes/geshi/powershell.php
        new file mode 100644
        index 0000000..2900abd
        --- /dev/null
        +++ b/includes/geshi/powershell.php
        @@ -0,0 +1,275 @@
        + 'PowerShell',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array('<#' => '#>'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '`',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            // Cmdlets
        +            'Add-Content', 'Add-History', 'Add-Member', 'Add-PSSnapin', 'Clear-Content', 'Clear-Item',
        +            'Clear-ItemProperty', 'Clear-Variable', 'Compare-Object', 'ConvertFrom-SecureString',
        +            'Convert-Path', 'ConvertTo-Html', 'ConvertTo-SecureString', 'Copy-Item', 'Copy-ItemProperty',
        +            'Export-Alias', 'Export-Clixml', 'Export-Console', 'Export-Csv', 'ForEach-Object',
        +            'Format-Custom', 'Format-List', 'Format-Table', 'Format-Wide', 'Get-Acl', 'Get-Alias',
        +            'Get-AuthenticodeSignature', 'Get-ChildItem', 'Get-Command', 'Get-Content', 'Get-Credential',
        +            'Get-Culture', 'Get-Date', 'Get-EventLog', 'Get-ExecutionPolicy', 'Get-Help', 'Get-History',
        +            'Get-Host', 'Get-Item', 'Get-ItemProperty', 'Get-Location', 'Get-Member',
        +            'Get-PfxCertificate', 'Get-Process', 'Get-PSDrive', 'Get-PSProvider', 'Get-PSSnapin',
        +            'Get-Service', 'Get-TraceSource', 'Get-UICulture', 'Get-Unique', 'Get-Variable',
        +            'Get-WmiObject', 'Group-Object', 'Import-Alias', 'Import-Clixml', 'Import-Csv',
        +            'Invoke-Expression', 'Invoke-History', 'Invoke-Item', 'Join-Path', 'Measure-Command',
        +            'Measure-Object', 'Move-Item', 'Move-ItemProperty', 'New-Alias', 'New-Item',
        +            'New-ItemProperty', 'New-Object', 'New-PSDrive', 'New-Service', 'New-TimeSpan',
        +            'New-Variable', 'Out-Default', 'Out-File', 'Out-Host', 'Out-Null', 'Out-Printer',
        +            'Out-String', 'Pop-Location', 'Push-Location', 'Read-Host', 'Remove-Item',
        +            'Remove-ItemProperty', 'Remove-PSDrive', 'Remove-PSSnapin', 'Remove-Variable', 'Rename-Item',
        +            'Rename-ItemProperty', 'Resolve-Path', 'Restart-Service', 'Resume-Service', 'Select-Object',
        +            'Select-String', 'Set-Acl', 'Set-Alias', 'Set-AuthenticodeSignature', 'Set-Content',
        +            'Set-Date', 'Set-ExecutionPolicy', 'Set-Item', 'Set-ItemProperty', 'Set-Location',
        +            'Set-PSDebug', 'Set-Service', 'Set-TraceSource', 'Set-Variable', 'Sort-Object', 'Split-Path',
        +            'Start-Service', 'Start-Sleep', 'Start-Transcript', 'Stop-Process', 'Stop-Service',
        +            'Stop-Transcript', 'Suspend-Service', 'Tee-Object', 'Test-Path', 'Trace-Command',
        +            'Update-FormatData', 'Update-TypeData', 'Where-Object', 'Write-Debug', 'Write-Error',
        +            'Write-Host', 'Write-Output', 'Write-Progress', 'Write-Verbose', 'Write-Warning'
        +            ),
        +        2 => array(
        +            // Aliases
        +            'ac', 'asnp', 'clc', 'cli', 'clp', 'clv', 'cpi', 'cpp', 'cvpa', 'diff', 'epal', 'epcsv', 'fc',
        +            'fl', 'ft', 'fw', 'gal', 'gc', 'gci', 'gcm', 'gdr', 'ghy', 'gi', 'gl', 'gm',
        +            'gp', 'gps', 'group', 'gsv', 'gsnp', 'gu', 'gv', 'gwmi', 'iex', 'ihy', 'ii', 'ipal', 'ipcsv',
        +            'mi', 'mp', 'nal', 'ndr', 'ni', 'nv', 'oh', 'rdr', 'ri', 'rni', 'rnp', 'rp', 'rsnp', 'rv',
        +            'rvpa', 'sal', 'sasv', 'sc', 'select', 'si', 'sl', 'sleep', 'sort', 'sp', 'spps', 'spsv', 'sv',
        +            'tee', 'write', 'cat', 'cd', 'clear', 'cp', 'h', 'history', 'kill', 'lp', 'ls',
        +            'mount', 'mv', 'popd', 'ps', 'pushd', 'pwd', 'r', 'rm', 'rmdir', 'echo', 'cls', 'chdir',
        +            'copy', 'del', 'dir', 'erase', 'move', 'rd', 'ren', 'set', 'type'
        +            ),
        +        3 => array(
        +            // Reserved words
        +            'break', 'continue', 'do', 'for', 'foreach', 'while', 'if', 'switch', 'until', 'where',
        +            'function', 'filter', 'else', 'elseif', 'in', 'return', 'param', 'throw', 'trap'
        +            ),
        +        4 => array(
        +            // Operators
        +            '-eq', '-ne', '-gt', '-ge', '-lt', '-le', '-ieq', '-ine', '-igt', '-ige', '-ilt', '-ile',
        +            '-ceq', '-cne', '-cgt', '-cge', '-clt', '-cle', '-like', '-notlike', '-match', '-notmatch',
        +            '-ilike', '-inotlike', '-imatch', '-inotmatch', '-clike', '-cnotlike', '-cmatch', '-cnotmatch',
        +            '-contains', '-notcontains', '-icontains', '-inotcontains', '-ccontains', '-cnotcontains',
        +            '-isnot', '-is', '-as', '-replace', '-ireplace', '-creplace', '-and', '-or', '-band', '-bor',
        +            '-not', '-bnot', '-f', '-casesensitive', '-exact', '-file', '-regex', '-wildcard'
        +            ),
        +        5 => array(
        +            // Options
        +            '-Year', '-Wrap', '-Word', '-Width', '-WhatIf', '-Wait', '-View', '-Verbose', '-Verb',
        +            '-Variable', '-ValueOnly', '-Value', '-Unique', '-UFormat', '-TypeName', '-Trace', '-TotalCount',
        +            '-Title', '-TimestampServer', '-TargetObject', '-Syntax', '-SyncWindow', '-Sum', '-String',
        +            '-Strict', '-Stream', '-Step', '-Status', '-Static', '-StartupType', '-Start', '-StackName',
        +            '-Stack', '-SourceId', '-SimpleMatch', '-ShowError', '-Separator', '-SecureString', '-SecureKey',
        +            '-SecondValue', '-SecondsRemaining', '-Seconds', '-Second', '-Scope', '-Root', '-Role',
        +            '-Resolve', '-RemoveListener', '-RemoveFileListener', '-Registered', '-ReferenceObject',
        +            '-Recurse', '-RecommendedAction', '-ReadCount', '-Quiet', '-Query', '-Qualifier', '-PSSnapin',
        +            '-PSProvider', '-PSHost', '-PSDrive', '-PropertyType', '-Property', '-Prompt', '-Process',
        +            '-PrependPath', '-PercentComplete', '-Pattern', '-PathType', '-Path', '-PassThru', '-ParentId',
        +            '-Parent', '-Parameter', '-Paging', '-OutVariable', '-OutBuffer', '-Option', '-OnType', '-Off',
        +            '-Object', '-Noun', '-NoTypeInformation', '-NoQualifier', '-NoNewline', '-NoElement',
        +            '-NoClobber', '-NewName', '-Newest', '-Namespace', '-Name', '-Month', '-Minutes', '-Minute',
        +            '-Minimum', '-Milliseconds', '-Message', '-MemberType', '-Maximum', '-LogName', '-LiteralPath',
        +            '-LiteralName', '-ListenerOption', '-List', '-Line', '-Leaf', '-Last', '-Key', '-ItemType',
        +            '-IsValid', '-IsAbsolute', '-InputObject', '-IncludeEqual', '-IncludeChain', '-Include',
        +            '-IgnoreWhiteSpace', '-Id', '-Hours', '-Hour', '-HideTableHeaders', '-Head', '-GroupBy',
        +            '-Functionality', '-Full', '-Format', '-ForegroundColor', '-Force', '-First', '-FilterScript',
        +            '-Filter', '-FilePath', '-Expression', '-ExpandProperty', '-Expand', '-ExecutionPolicy',
        +            '-ExcludeProperty', '-ExcludeDifferent', '-Exclude', '-Exception', '-Examples', '-ErrorVariable',
        +            '-ErrorRecord', '-ErrorId', '-ErrorAction', '-End', '-Encoding', '-DisplayName', '-DisplayHint',
        +            '-DisplayError', '-DifferenceObject', '-Detailed', '-Destination', '-Description', '-Descending',
        +            '-Depth', '-DependsOn', '-Delimiter', '-Debugger', '-Debug', '-Days', '-Day', '-Date',
        +            '-CurrentOperation', '-Culture', '-Credential', '-Count', '-Container', '-Confirm',
        +            '-ComputerName', '-Component', '-Completed', '-ComObject', '-CommandType', '-Command',
        +            '-Column', '-Class', '-ChildPath', '-Character', '-Certificate', '-CategoryTargetType',
        +            '-CategoryTargetName', '-CategoryReason', '-CategoryActivity', '-Category', '-CaseSensitive',
        +            '-Body', '-BinaryPathName', '-Begin', '-BackgroundColor', '-Average', '-AutoSize', '-Audit',
        +            '-AsString', '-AsSecureString', '-AsPlainText', '-As', '-ArgumentList', '-AppendPath', '-Append',
        +            '-Adjust', '-Activity', '-AclObject'
        +            ),
        +        6 => array(
        +            '_','args','DebugPreference','Error','ErrorActionPreference',
        +            'foreach','Home','Host','Input','LASTEXITCODE','MaximumAliasCount',
        +            'MaximumDriveCount','MaximumFunctionCount','MaximumHistoryCount',
        +            'MaximumVariableCount','OFS','PsHome',
        +            'ReportErrorShowExceptionClass','ReportErrorShowInnerException',
        +            'ReportErrorShowSource','ReportErrorShowStackTrace',
        +            'ShouldProcessPreference','ShouldProcessReturnPreference',
        +            'StackTrace','VerbosePreference','WarningPreference','PWD'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}', '=', '<', '>', '@', '|', '&', ',', '?',
        +        '+=', '-=', '*=', '/=', '%=', '*', '/', '%', '!', '+', '-', '++', '--'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        6 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #008080; font-weight: bold;',
        +            2 => 'color: #008080; font-weight: bold;',
        +            3 => 'color: #0000FF;',
        +            4 => 'color: #FF0000;',
        +            5 => 'color: #008080; font-style: italic;',
        +            6 => 'color: #000080;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008000;',
        +            'MULTI' => 'color: #008000;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #008080; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #800000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #804000;'
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: pink;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: pink;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #800080;',
        +            3 => 'color: #008080;',
        +            4 => 'color: #008080;',
        +            5 => 'color: #800000;',
        +            6 => 'color: #000080;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => 'about:blank',
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        // special after pipe
        +        3 => array(
        +            GESHI_SEARCH => '(\[)(int|long|string|char|bool|byte|double|decimal|float|single|regex|array|xml|scriptblock|switch|hashtable|type|ref|psobject|wmi|wmisearcher|wmiclass|object)((\[.*\])?\])',
        +            GESHI_REPLACE => '\2',
        +            GESHI_MODIFIERS => 'si',
        +            GESHI_BEFORE => '\1',
        +            GESHI_AFTER => '\3'
        +            ),
        +        // Classes
        +        4 => array(
        +            GESHI_SEARCH => '(\[)(System\.Reflection\.Assembly|System\.Net\.CredentialCache|Microsoft\.SharePoint\.SPFileLevel|Microsoft\.SharePoint\.Publishing\.PublishingWeb|Microsoft\.SharePoint\.Publishing|Microsoft\.SharePoint\.SPWeb)(\])',
        +            GESHI_REPLACE => '\2',
        +            GESHI_MODIFIERS => 'i',
        +            GESHI_BEFORE => '\1',
        +            GESHI_AFTER => '\3'
        +            ),
        +        // Members
        +        // There's about a hundred million of these, add the ones you need as you need them
        +        5 => array (
        +            GESHI_SEARCH => '(::)(ReflectionOnlyLoadFrom|ReflectionOnlyLoad|ReferenceEquals|LoadWithPartialName|LoadFrom|LoadFile|Load|GetExecutingAssembly|GetEntryAssembly|GetCallingAssembly|GetAssembly|Equals|DefaultNetworkCredentials|DefaultCredentials|CreateQualifiedName|Checkout|Draft|Published|IsPublishingWeb)',
        +            GESHI_REPLACE => '\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\1',
        +            GESHI_AFTER => ''
        +            ),
        +        // Special variables
        +        6 => array(
        +            GESHI_SEARCH => '(\$)(\$[_\^]?|\?)(?!\w)',
        +            GESHI_REPLACE => '\1\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        // variables
        +        //BenBE: Please note that changes here and in Keyword group 6 have to be synchronized in order to work properly.
        +        //This Regexp must only match, if keyword group 6 doesn't. If this assumption fails
        +        //Highlighting of the keywords will be incomplete or incorrect!
        +        0 => "(?)[\\\$](\w+)(?=[^|\w])",
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            4 => array(
        +                'DISALLOWED_AFTER' => '(?![a-zA-Z])',
        +                'DISALLOWED_BEFORE' => ''
        +                ),
        +            6 => array(
        +                'DISALLOWED_BEFORE' => '(?)\$'
        +                )
        +            )
        +        )
        +);
        diff --git a/includes/geshi/proftpd.php b/includes/geshi/proftpd.php
        new file mode 100644
        index 0000000..0668eec
        --- /dev/null
        +++ b/includes/geshi/proftpd.php
        @@ -0,0 +1,372 @@
        + 'ProFTPd configuration',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        /*keywords*/
        +        1 => array(
        +            //mod_auth
        +            'AccessDenyMsg', 'AccessGrantMsg', 'AnonRejectePasswords',
        +            'AnonRequirePassword', 'AuthAliasOnly', 'AuthUsingAlias',
        +            'CreateHome', 'DefaultChdir', 'DefaultRoot', 'GroupPassword',
        +            'LoginPasswordPrompt', 'MaxClients', 'MaxClientsPerClass',
        +            'MaxClientsPerHost', 'MaxClientsPerUser', 'MaxConnectionsPerHost',
        +            'MaxHostsPerUser', 'MaxLoginAttempts', 'RequireValidShell',
        +            'RootLogin', 'RootRevoke', 'TimeoutLogin', 'TimeoutSession',
        +            'UseFtpUsers', 'UserAlias', 'UserDirRoot', 'UserPassword',
        +
        +            //mod_auth_file
        +            'AuthGroupFile', 'AuthUserFile',
        +
        +            //mod_auth_pam
        +            'AuthPAM', 'AuthPAMConfig',
        +
        +            //mod_auth_unix
        +            'PersistentPasswd',
        +
        +            //mod_ban
        +            'BanControlsACLs', 'BanEngine', 'BanLog', 'BanMessage', 'BanOnEvent',
        +            'BanTable',
        +
        +            //mod_cap
        +            'CapabilitiesEngine', 'CapabilitiesSet',
        +
        +            //mod_core
        +            'Allow', 'AllowAll', 'AllowClass', 'AllowFilter',
        +            'AllowForeignAddress', 'AllowGroup', 'AllowOverride',
        +            'AllowRetrieveRestart', 'AllowStoreRestart', 'AllowUser',
        +            'AnonymousGroup', 'AuthOrder', 'Bind', 'CDPath', 'Class', 'Classes',
        +            'CommandBufferSize', 'DebugLevel', 'DefaultAddress',
        +            'DefaultServer', 'DefaultTransferMode', 'DeferWelcome', 'Define',
        +            'Deny', 'DenyAll', 'DenyClass', 'DenyFilter', 'DenyGroup',
        +            'DenyUser', 'DisplayChdir', 'DisplayConnect', 'DisplayFirstChdir',
        +            'DisplayGoAway', 'DisplayLogin', 'DisplayQuit', 'From', 'Group',
        +            'GroupOwner', 'HideFiles', 'HideGroup', 'HideNoAccess', 'HideUser',
        +            'IdentLookups', 'IgnoreHidden', 'Include', 'MasqueradeAddress',
        +            'MaxConnectionRate', 'MaxInstances', 'MultilineRFC2228', 'Order',
        +            'PassivePorts', 'PathAllowFilter', 'PathDenyFilter', 'PidFile',
        +            'Port', 'RLimitCPU', 'RLimitMemory', 'RLimitOpenFiles', 'Satisfy',
        +            'ScoreboardFile', 'ServerAdmin', 'ServerIdent', 'ServerName',
        +            'ServerType', 'SetEnv', 'SocketBindTight', 'SocketOptions',
        +            'SyslogFacility', 'SyslogLevel', 'tcpBackLog', 'tcpNoDelay',
        +            'TimeoutIdle', 'TimeoutLinger', 'TimesGMT', 'TransferLog', 'Umask',
        +            'UnsetEnv', 'UseIPv6', 'User', 'UseReverseDNS', 'UserOwner',
        +            'UseUTF8', 'WtmpLog',
        +
        +            //mod_ctrls_admin
        +            'AdminControlsACLs', 'AdminControlsEngine',
        +
        +            //mod_delay
        +            'DelayEngine', 'DelayTable',
        +
        +            //mod_dynmasq
        +            'DynMasqRefresh',
        +
        +            //mod_exec
        +            'ExecBeforeCommand', 'ExecEngine', 'ExecEnviron', 'ExecLog',
        +            'ExecOnCommand', 'ExecOnConnect', 'ExecOnError', 'ExecOnEvent',
        +            'ExecOnExit', 'ExecOnRestart', 'ExecOptions', 'ExecTimeout',
        +
        +            //mod_ldap
        +            'LDAPAliasDereference', 'LDAPAttr', 'LDAPAuthBinds',
        +            'LDAPDefaultAuthScheme', 'LDAPDefaultGID', 'LDAPDefaultUID',
        +            'LDAPDNInfo', 'LDAPDoAuth', 'LDAPDoGIDLookups',
        +            'LDAPDoQuotaLookups', 'LDAPDoUIDLookups',
        +            'LDAPForceGeneratedHomedir', 'LDAPForceHomedirOnDemand',
        +            'LDAPGenerateHomedir', 'LDAPGenerateHomedirPrefix',
        +            'LDAPGenerateHomedirPrefixNoUsername', 'LDAPHomedirOnDemand',
        +            'LDAPHomedirOnDemandPrefix', 'LDAPHomedirOnDemandPrefixNoUsername',
        +            'LDAPHomedirOnDemandSuffix', 'LDAPNegativeCache',
        +            'LDAPProtocolVersion', 'LDAPQueryTimeout', 'LDAPSearchScope',
        +            'LDAPServer',
        +
        +            //mod_load
        +            'MaxLoad',
        +
        +            //mod_log
        +            'AllowLogSymlinks', 'ExtendedLog', 'LogFormat', 'ServerLog',
        +            'SystemLog',
        +
        +            //mod_ls'
        +            'DirFakeGroup', 'DirFakeMode', 'DirFakeUser', 'ListOptions',
        +            'ShowSymlinks', 'UseGlobbing',
        +
        +            //mod_quotatab
        +            'QuotaDirectoryTally', 'QuotaDisplayUnits', 'QuotaEngine',
        +            'QuotaExcludeFilter', 'QuotaLimitTable', 'QuotaLock', 'QuotaLog',
        +            'QuotaOptions', 'QuotaShowQuotas', 'QuotaTallyTable',
        +
        +            //mod_quotatab_file
        +
        +            //mod_quotatab_ldap
        +
        +            //mod_quotatab_sql
        +
        +            //mod_radius
        +            'RadiusAcctServer', 'RadiusAuthServer', 'RadiusEngine',
        +            'RadiusGroupInfo', 'RadiusLog', 'RadiusNASIdentifier',
        +            'RadiusQuotaInfo', 'RadiusRealm', 'RadiusUserInfo', 'RadiusVendor',
        +
        +            //mod_ratio
        +            'AnonRatio', 'ByteRatioErrMsg', 'CwdRatioMsg', 'FileRatioErrMsg',
        +            'GroupRatio', 'HostRatio', 'LeechRatioMsg', 'RatioFile', 'Ratios',
        +            'RatioTempFile', 'SaveRatios', 'UserRatio',
        +
        +            //mod_readme
        +            'DisplayReadme',
        +
        +            //mod_rewrite
        +            'RewriteCondition', 'RewriteEngine', 'RewriteLock', 'RewriteLog',
        +            'RewriteMap', 'RewriteRule',
        +
        +            //mod_sftp
        +            'SFTPAcceptEnv', 'SFTPAuthMethods', 'SFTPAuthorizedHostKeys',
        +            'SFTPAuthorizedUserKeys', 'SFTPCiphers', 'SFTPClientMatch',
        +            'SFTPCompression', 'SFTPCryptoDevice', 'SFTPDHParamFile',
        +            'SFTPDigests', 'SFTPDisplayBanner', 'SFTPEngine', 'SFTPExtensions',
        +            'SFTPHostKey', 'SFTPKeyBlacklist', 'SFTPKeyExchanges', 'SFTPLog',
        +            'SFTPMaxChannels', 'SFTPOptions', 'SFTPPassPhraseProvider',
        +            'SFTPRekey', 'SFTPTrafficPolicy',
        +
        +            //mod_sftp_pam
        +            'SFTPPAMEngine', 'SFTPPAMOptions', 'SFTPPAMServiceName',
        +
        +            //mod_sftp_sql
        +
        +            //mod_shaper
        +            'ShaperAll', 'ShaperControlsACLs', 'ShaperEngine', 'ShaperLog',
        +            'ShaperSession', 'ShaperTable',
        +
        +            //mod_sql
        +            'SQLAuthenticate', 'SQLAuthTypes', 'SQLBackend', 'SQLConnectInfo',
        +            'SQLDefaultGID', 'SQLDefaultHomedir', 'SQLDefaultUID', 'SQLEngine',
        +            'SQLGroupInfo', 'SQLGroupWhereClause', 'SQLHomedirOnDemand',
        +            'SQLLog', 'SQLLogFile', 'SQLMinID', 'SQLMinUserGID',
        +            'SQLMinUserUID', 'SQLNamedQuery', 'SQLNegativeCache', 'SQLOptions',
        +            'SQLRatios', 'SQLRatioStats', 'SQLShowInfo', 'SQLUserInfo',
        +            'SQLUserWhereClause',
        +
        +            //mod_sql_passwd
        +            'SQLPasswordEncoding', 'SQLPasswordEngine', 'SQLPasswordSaltFile',
        +            'SQLPasswordUserSalt',
        +
        +            //mod_tls
        +            'TLSCACertificateFile', 'TLSCACertificatePath',
        +            'TLSCARevocationFile', 'TLSCARevocationPath',
        +            'TLSCertificateChainFile', 'TLSCipherSuite', 'TLSControlsACLs',
        +            'TLSCryptoDevice', 'TLSDHParamFile', 'TLSDSACertificateFile',
        +            'TLSDSACertificateKeyFile', 'TLSEngine', 'TLSLog', 'TLSOptions',
        +            'TLSPKCS12File', 'TLSPassPhraseProvider', 'TLSProtocol',
        +            'TLSRandomSeed', 'TLSRenegotiate', 'TLSRequired',
        +            'TLSRSACertificateFile', 'TLSRSACertificateKeyFile',
        +            'TLSSessionCache', 'TLSTimeoutHandshake', 'TLSVerifyClient',
        +            'TLSVerifyDepth', 'TLSVerifyOrder',
        +
        +            //mod_tls_shmcache
        +
        +            //mod_unique_id
        +            'UniqueIDEngine',
        +
        +            //mod_wrap
        +            'TCPAccessFiles', 'TCPAccessSyslogLevels', 'TCPGroupAccessFiles',
        +            'TCPServiceName', 'TCPUserAccessFiles',
        +
        +            //mod_wrap2
        +            'WrapAllowMsg', 'WrapDenyMsg', 'WrapEngine', 'WrapGroupTables',
        +            'WrapLog', 'WrapServiceName', 'WrapTables', 'WrapUserTables',
        +
        +            //mod_wrap2_file
        +
        +            //mod_wrap2_sql
        +
        +            //mod_xfer
        +            'AllowOverwrite', 'DeleteAbortedStores', 'DisplayFileTransfer',
        +            'HiddenStor', 'HiddenStores', 'MaxRetrieveFileSize',
        +            'MaxStoreFileSize', 'StoreUniquePrefix', 'TimeoutNoTransfer',
        +            'TimeoutStalled', 'TransferRate', 'UseSendfile',
        +
        +            //unknown
        +            'ScoreboardPath', 'ScoreboardScrub'
        +            ),
        +        /*keywords 3*/
        +        3 => array(
        +            //mod_core
        +            'Anonymous',
        +            'Class',
        +            'Directory',
        +            'IfDefine',
        +            'IfModule',
        +            'Limit',
        +            'VirtualHost',
        +
        +            //mod_ifsession
        +            'IfClass', 'IfGroup', 'IfUser',
        +
        +            //mod_version
        +            'IfVersion'
        +            ),
        +        /*permissions*/
        +        4 => array(
        +            //mod_core
        +            'ALL',
        +            'CDUP',
        +            'CMD',
        +            'CWD',
        +            'DELE',
        +            'DIRS',
        +            'LOGIN',
        +            'MKD',
        +            'READ',
        +            'RETR',
        +            'RMD',
        +            'RNFR',
        +            'RNTO',
        +            'STOR',
        +            'WRITE',
        +            'XCWD',
        +            'XMKD',
        +            'XRMD',
        +
        +            //mod_copy
        +            'SITE_CPFR', 'SITE_CPTO',
        +
        +            //mod_quotatab
        +            'SITE_QUOTA',
        +
        +            //mod_site
        +            'SITE_HELP', 'SITE_CHMOD', 'SITE_CHGRP',
        +
        +            //mod_site_misc
        +            'SITE_MKDIR', 'SITE_RMDIR', 'SITE_SYMLINK', 'SITE_UTIME',
        +            ),
        +        /*keywords 2*/
        +        2 => array(
        +            'all','on','off','yes','no',
        +            'standalone', 'inetd',
        +            'default', 'auth', 'write',
        +            'internet', 'local', 'limit', 'ip',
        +            'from'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '+', '-'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #00007f;',
        +            2 => 'color: #0000ff;',
        +            3 => 'color: #000000; font-weight:bold;',
        +            4 => 'color: #000080; font-weight:bold;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #adadad; font-style: italic;',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #339933;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #7f007f;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #008000;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => 'http://www.google.com/search?hl=en&q={FNAMEL}+site:www.proftpd.org+inurl:docs&btnI=I%27m%20Feeling%20Lucky',
        +        2 => '',
        +        3 => 'http://www.google.com/search?hl=en&q={FNAMEL}+site:www.proftpd.org+inurl:docs&btnI=I%27m%20Feeling%20Lucky',
        +        4 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'ENABLE_FLAGS' => array(
        +            'BRACKETS' => GESHI_NEVER,
        +            'SYMBOLS' => GESHI_NEVER
        +            ),
        +        'KEYWORDS' => array(
        +            2 => array(
        +                'DISALLOWED_BEFORE' => '(?<=\s)(? '(?!\+)(?!\w)',
        +                ),
        +            3 => array(
        +                'DISALLOWED_BEFORE' => '(?<=<|<\/)',
        +                'DISALLOWED_AFTER' => '(?=\s|\/|>)',
        +                ),
        +            4 => array(
        +                'DISALLOWED_BEFORE' => '(?<=\s)(? '(?!\+)(?=\/|(?:\s+\w+)*\s*>)',
        +                )
        +            )
        +        )
        +);
        diff --git a/includes/geshi/progress.php b/includes/geshi/progress.php
        new file mode 100644
        index 0000000..dc99dbf
        --- /dev/null
        +++ b/includes/geshi/progress.php
        @@ -0,0 +1,483 @@
        + 'Progress',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array (
        +        1 => array(
        +            'ACCUMULATE','APPLY','ASSIGN','BELL','QUERY',
        +            'BUFFER-COMPARE','BUFFER-COPY','CALL','CASE',
        +            'CHOOSE','CLASS','CLOSE QUERY','each','WHERE',
        +            'CLOSE STORED-PROCEDURE','COLOR','COMPILE','CONNECT',
        +            'CONSTRUCTOR','COPY-LOB','CREATE','CREATE ALIAS',
        +            'CREATE BROWSE','CREATE BUFFER','CREATE CALL','CREATE CLIENT-PRINCIPAL',
        +            'CREATE DATABASE','CREATE DATASET','CREATE DATA-SOURCE','CREATE QUERY',
        +            'CREATE SAX-attributeS','CREATE SAX-READER','CREATE SAX-WRITER','CREATE SERVER',
        +            'CREATE SERVER-SOCKET','CREATE SOAP-HEADER','CREATE SOAP-HEADER-ENTRYREF','CREATE SOCKET',
        +            'CREATE TEMP-TABLE','CREATE WIDGET','CREATE widget-POOL','CREATE X-DOCUMENT',
        +            'CREATE X-NODEREF','CURRENT-LANGUAGE','CURRENT-VALUE','DDE ADVISE',
        +            'DDE EXECUTE','DDE GET','DDE INITIATE','DDE REQUEST',
        +            'DDE SEND','DDE TERMINATE','DEFINE BROWSE','DEFINE BUFFER','DEFINE',
        +            'DEFINE BUTTON','DEFINE DATASET','DEFINE DATA-SOURCE','DEFINE FRAME','DEF','VAR',
        +            'DEFINE IMAGE','DEFINE MENU','DEFINE PARAMETER','DEFINE property','PARAM',
        +            'DEFINE QUERY','DEFINE RECTANGLE','DEFINE STREAM','DEFINE SUB-MENU',
        +            'DEFINE TEMP-TABLE','DEFINE WORKFILE','DEFINE WORK-TABLE',
        +            'DELETE','DELETE ALIAS','DELETE object','DELETE PROCEDURE',
        +            'DELETE widget','DELETE widget-POOL','DESTRUCTOR','DICTIONARY',
        +            'DISABLE','DISABLE TRIGGERS','DISCONNECT','DISPLAY',
        +            'DO','DOS','DOWN','DYNAMIC-CURRENT-VALUE',
        +            'ELSE','EMPTY TEMP-TABLE','ENABLE','END',
        +            'ENTRY','FIND','AND',
        +            'FIX-CODEPAGE','FOR','FORM','FRAME-VALUE',
        +            'GET','GET-KEY-VALUE','HIDE','IF',
        +            'IMPORT','INPUT CLEAR','INPUT CLOSE','INPUT FROM','input',
        +            'INPUT THROUGH','INPUT-OUTPUT CLOSE','INPUT-OUTPUT THROUGH',
        +            'INTERFACE','LEAVE','BREAK',
        +            'LOAD-PICTURE','MESSAGE','method','NEXT','prev',
        +            'NEXT-PROMPT','ON','OPEN QUERY','OS-APPEND',
        +            'OS-COMMAND','OS-COPY','OS-CREATE-DIR','OS-DELETE',
        +            'OS-RENAME','OUTPUT CLOSE','OUTPUT THROUGH','OUTPUT TO',
        +            'OVERLAY','PAGE','PAUSE','PROCEDURE',
        +            'PROCESS EVENTS','PROMPT-FOR','PROMSGS','PROPATH',
        +            'PUBLISH','PUT','PUT CURSOR','PUT SCREEN',
        +            'PUT-BITS','PUT-BYTE','PUT-BYTES','PUT-DOUBLE',
        +            'PUT-FLOAT','PUT-INT64','PUT-KEY-VALUE','PUT-LONG',
        +            'PUT-SHORT','PUT-STRING','PUT-UNSIGNED-LONG','PUT-UNSIGNED-SHORT',
        +            'QUIT','RAW-TRANSFER','READKEY','RELEASE',
        +            'RELEASE EXTERNAL','RELEASE object','REPEAT','REPOSITION',
        +            'RUN','RUN STORED-PROCEDURE','RUN SUPER',
        +            'SAVE CACHE','SCROLL','SEEK','SET',
        +            'SET-BYTE-ORDER','SET-POINTER-VALUE','SET-SIZE','SHOW-STATS',
        +            'STATUS','STOP','SUBSCRIBE','SUBSTRING',
        +            'system-DIALOG COLOR','system-DIALOG FONT','system-DIALOG GET-DIR','system-DIALOG GET-FILE',
        +            'system-DIALOG PRINTER-SETUP','system-HELP','THEN','THIS-object',
        +            'TRANSACTION-MODE AUTOMATIC','TRIGGER PROCEDURE','UNDERLINE','UNDO',
        +            'UNIX','UNLOAD','UNSUBSCRIBE','UP','STRING',
        +            'UPDATE','USE','USING','substr','SKIP','CLOSE',
        +            'VIEW','WAIT-FOR','MODULO','NE','AVAIL',
        +            'NOT','OR','&GLOBAL-DEFINE','&IF','UNFORMATTED','NO-PAUSE',
        +            '&THEN','&ELSEIF','&ELSE','&ENDIF','OPEN','NO-WAIT',
        +            '&MESSAGE','&SCOPED-DEFINE','&UNDEFINE','DEFINED',
        +            'BROWSE','BUTTON','COMBO-BOX','CONTROL-FRAME',
        +            'DIALOG-BOX','EDITOR','FIELD-GROUP','FILL-IN',
        +            'FRAME','IMAGE','LITERAL','MENU',
        +            'MENU-ITEM','RADIO-SET','RECTANGLE','SELECTION-LIST',
        +            'SLIDER','SUB-MENU','TEXT','TOGGLE-BOX',
        +            'WINDOW','WITH','AT','OF','EDITING','ON ENDKEY','output',
        +            'ON ERROR','ON QUIT','ON STOP','PRESELECT',
        +            'QUERY-TUNING','SIZE','Trigger','VIEW-AS','ALERT-BOX',
        +            'Buffer','Data-relation','ProDataSet','SAX-attributes',
        +            'SAX-reader','SAX-writer','Server socket','SOAP-fault',
        +            'SOAP-header','SOAP-header-entryref','Socket','Temp-table',
        +            'X-noderef','Height','Left','Top','TO',
        +            'Width','ACTIVE-WINDOW','AUDIT-CONTROL','FIRST','LAST',
        +            'AUDIT-POLICY','CLIPBOARD','CODEBASE-LOCATOR','COLOR-TABLE',
        +            'COMPILER','COM-SELF','DEBUGGER','DEFAULT-WINDOW',
        +            'ERROR-STATUS','FILE-INFO','FOCUS','FONT-TABLE',
        +            'LAST-EVENT','LOG-MANAGER','RCODE-INFO','SECURITY-POLICY',
        +            'SELF','SESSION','SOURCE-PROCEDURE','TARGET-PROCEDURE','NO-LOCK','NO-error',
        +            'THIS-PROCEDURE','WEB-CONTEXT','FUNCTION','RETURNS','NO-UNDO'
        +            ),
        +        2 => array(
        +            'ACCEPT-CHANGES','ACCEPT-ROW-CHANGES','ADD-BUFFER','ADD-CALC-COLUMN',
        +            'ADD-COLUMNS-FROM','ADD-EVENTS-PROCEDURE','ADD-FIELDS-FROM','ADD-FIRST',
        +            'ADD-HEADER-ENTRY','ADD-INDEX-FIELD','ADD-LAST','ADD-LIKE-COLUMN',
        +            'ADD-LIKE-FIELD','ADD-LIKE-INDEX','ADD-NEW-FIELD','ADD-NEW-INDEX',
        +            'ADD-RELATION','ADD-SCHEMA-LOCATION','ADD-SOURCE-BUFFER','ADD-SUPER-PROCEDURE',
        +            'APPEND-CHILD','APPLY-CALLBACK','ATTACH-DATA-SOURCE','AUTHENTICATION-FAILED',
        +            'BEGIN-EVENT-GROUP','BUFFER-CREATE',
        +            'BUFFER-DELETE','BUFFER-RELEASE','BUFFER-VALIDATE',
        +            'CANCEL-BREAK','CANCEL-REQUESTS','CLEAR','CLEAR-APPL-CONTEXT',
        +            'CLEAR-LOG','CLEAR-SELECTION','CLEAR-SORT-ARROWS','CLONE-NODE',
        +            'CLOSE-LOG','CONNECTED','CONVERT-TO-OFFSET',
        +            'COPY-DATASET','COPY-SAX-attributeS','COPY-TEMP-TABLE','CREATE-LIKE',
        +            'CREATE-NODE','CREATE-NODE-NAMESPACE','CREATE-RESULT-LIST-ENTRY','DEBUG',
        +            'DECLARE-NAMESPACE','DELETE-CHAR','DELETE-CURRENT-ROW',
        +            'DELETE-HEADER-ENTRY','DELETE-LINE','DELETE-NODE','DELETE-RESULT-LIST-ENTRY',
        +            'DELETE-SELECTED-ROW','DELETE-SELECTED-ROWS','DESELECT-FOCUSED-ROW','DESELECT-ROWS',
        +            'DESELECT-SELECTED-ROW','DETACH-DATA-SOURCE','DISABLE-CONNECTIONS',
        +            'DISABLE-DUMP-TRIGGERS','DISABLE-LOAD-TRIGGERS','DISPLAY-MESSAGE',
        +            'DUMP-LOGGING-NOW','EDIT-CLEAR','EDIT-COPY','EDIT-CUT',
        +            'EDIT-PASTE','EDIT-UNDO','EMPTY-DATASET','EMPTY-TEMP-TABLE',
        +            'ENABLE-CONNECTIONS','ENABLE-EVENTS','ENCRYPT-AUDIT-MAC-KEY',
        +            'END-DOCUMENT','END-ELEMENT','END-EVENT-GROUP','END-FILE-DROP',
        +            'EXPORT','EXPORT-PRINCIPAL','FETCH-SELECTED-ROW',
        +            'FILL','FIND-BY-ROWID','FIND-CURRENT','FIND-FIRST',
        +            'FIND-LAST','FIND-UNIQUE','GET-attribute','GET-attribute-NODE',
        +            'GET-BINARY-DATA','GET-BLUE-VALUE','GET-BROWSE-COLUMN','GET-BUFFER-HANDLE',
        +            'GET-BYTES-AVAILABLE','GET-CALLBACK-PROC-CONTEXT','GET-CALLBACK-PROC-NAME','GET-CGI-LIST',
        +            'GET-CGI-LONG-VALUE','GET-CGI-VALUE','GET-CHANGES','GET-CHILD',
        +            'GET-CHILD-RELATION','GET-CONFIG-VALUE','GET-CURRENT','GET-DATASET-BUFFER',
        +            'GET-DOCUMENT-ELEMENT','GET-DROPPED-FILE','GET-DYNAMIC','GET-ERROR-COLUMN ',
        +            'GET-ERROR-ROW ','GET-FILE-NAME ','GET-FILE-OFFSET ','GET-FIRST',
        +            'GET-GREEN-VALUE','GET-HEADER-ENTRY','GET-INDEX-BY-NAMESPACE-NAME','GET-INDEX-BY-QNAME',
        +            'GET-ITERATION','GET-LAST','GET-LOCALNAME-BY-INDEX','GET-MESSAGE',
        +            'GET-NEXT','GET-NODE','GET-NUMBER','GET-PARENT',
        +            'GET-PREV','GET-PRINTERS','GET-property','GET-QNAME-BY-INDEX',
        +            'GET-RED-VALUE','GET-RELATION','GET-REPOSITIONED-ROW','GET-RGB-VALUE',
        +            'GET-SELECTED-widget','GET-SERIALIZED','GET-SIGNATURE','GET-SOCKET-OPTION',
        +            'GET-SOURCE-BUFFER','GET-TAB-ITEM','GET-TEXT-HEIGHT-CHARS','GET-TEXT-HEIGHT-PIXELS',
        +            'GET-TEXT-WIDTH-CHARS','GET-TEXT-WIDTH-PIXELS','GET-TOP-BUFFER','GET-TYPE-BY-INDEX',
        +            'GET-TYPE-BY-NAMESPACE-NAME','GET-TYPE-BY-QNAME','GET-URI-BY-INDEX','GET-VALUE-BY-INDEX',
        +            'GET-VALUE-BY-NAMESPACE-NAME','GET-VALUE-BY-QNAME','GET-WAIT-STATE','IMPORT-NODE',
        +            'IMPORT-PRINCIPAL','INCREMENT-EXCLUSIVE-ID','INITIALIZE-DOCUMENT-TYPE',
        +            'INITIATE','INSERT','INSERT-attribute','INSERT-BACKTAB',
        +            'INSERT-BEFORE','INSERT-FILE','INSERT-ROW','INSERT-STRING',
        +            'INSERT-TAB','INVOKE','IS-ROW-SELECTED','IS-SELECTED',
        +            'LIST-property-NAMES','LOAD','LoadControls','LOAD-DOMAINS',
        +            'LOAD-ICON','LOAD-IMAGE','LOAD-IMAGE-DOWN','LOAD-IMAGE-INSENSITIVE',
        +            'LOAD-IMAGE-UP','LOAD-MOUSE-POINTER','LOAD-SMALL-ICON','LOCK-REGISTRATION',
        +            'LOG-AUDIT-EVENT','LOGOUT','LONGCHAR-TO-NODE-VALUE','LOOKUP',
        +            'MEMPTR-TO-NODE-VALUE','MERGE-CHANGES','MERGE-ROW-CHANGES','MOVE-AFTER-TAB-ITEM',
        +            'MOVE-BEFORE-TAB-ITEM','MOVE-COLUMN','MOVE-TO-BOTTOM','MOVE-TO-EOF',
        +            'MOVE-TO-TOP','NODE-VALUE-TO-LONGCHAR','NODE-VALUE-TO-MEMPTR','NORMALIZE',
        +            'QUERY-CLOSE','QUERY-OPEN','QUERY-PREPARE',
        +            'READ','READ-FILE','READ-XML','READ-XMLSCHEMA',
        +            'REFRESH','REFRESH-AUDIT-POLICY','REGISTER-DOMAIN','REJECT-CHANGES',
        +            'REJECT-ROW-CHANGES','REMOVE-attribute','REMOVE-CHILD','REMOVE-EVENTS-PROCEDURE',
        +            'REMOVE-SUPER-PROCEDURE','REPLACE','REPLACE-CHILD','REPLACE-SELECTION-TEXT',
        +            'REPOSITION-BACKWARD','REPOSITION-FORWARD','REPOSITION-TO-ROW','REPOSITION-TO-ROWID',
        +            'RESET','SAVE','SAVE-FILE','SAVE-ROW-CHANGES',
        +            'SAX-PARSE','SAX-PARSE-FIRST','SAX-PARSE-NEXT','SCROLL-TO-CURRENT-ROW',
        +            'SCROLL-TO-ITEM','SCROLL-TO-SELECTED-ROW','SEAL','SEARCH',
        +            'SELECT-ALL','SELECT-FOCUSED-ROW','SELECT-NEXT-ROW','SELECT-PREV-ROW',
        +            'SELECT-ROW','SET-ACTOR','SET-APPL-CONTEXT','SET-attribute',
        +            'SET-attribute-NODE','SET-BLUE-VALUE','SET-BREAK','SET-BUFFERS',
        +            'SET-CALLBACK','SET-CALLBACK-PROCEDURE','SET-CLIENT','SET-COMMIT',
        +            'SET-CONNECT-PROCEDURE','SET-DYNAMIC','SET-GREEN-VALUE','SET-INPUT-SOURCE',
        +            'SET-MUST-UNDERSTAND','SET-NODE','SET-NUMERIC-FORMAT','SET-OUTPUT-DESTINATION',
        +            'SET-PARAMETER','SET-property','SET-READ-RESPONSE-PROCEDURE','SET-RED-VALUE',
        +            'SET-REPOSITIONED-ROW','SET-RGB-VALUE','SET-ROLLBACK','SET-SELECTION',
        +            'SET-SERIALIZED','SET-SOCKET-OPTION','SET-SORT-ARROW','SET-WAIT-STATE',
        +            'START-DOCUMENT','START-ELEMENT','STOP-PARSING','SYNCHRONIZE',
        +            'TEMP-TABLE-PREPARE','UPDATE-attribute','URL-DECODE','URL-ENCODE',
        +            'VALIDATE','VALIDATE-SEAL','WRITE','WRITE-CDATA','USE-INDEX',
        +            'WRITE-CHARACTERS','WRITE-COMMENT','WRITE-DATA-ELEMENT','WRITE-EMPTY-ELEMENT',
        +            'WRITE-ENTITY-REF','WRITE-EXTERNAL-DTD','WRITE-FRAGMENT','WRITE-MESSAGE',
        +            'WRITE-PROCESSING-INSTRUCTION','WRITE-XML','WRITE-XMLSCHEMA','FALSE','true'
        +            ),
        +        3 => array(
        +            'ABSOLUTE','ACCUM','ADD-INTERVAL','ALIAS','mod',
        +            'AMBIGUOUS','ASC','AUDIT-ENABLED','AVAILABLE',
        +            'BASE64-DECODE','BASE64-ENCODE','CAN-DO','CAN-FIND',
        +            'CAN-QUERY','CAN-SET','CAPS','CAST','OS-DIR',
        +            'CHR','CODEPAGE-CONVERT','COMPARE',
        +            'COUNT-OF','CURRENT-CHANGED','CURRENT-RESULT-ROW','DATASERVERS',
        +            'DATA-SOURCE-MODIFIED','DATETIME','DATETIME-TZ',
        +            'DAY','DBCODEPAGE','DBCOLLATION','DBNAME',
        +            'DBPARAM','DBRESTRICTIONS','DBTASKID','DBTYPE',
        +            'DBVERSION','DECIMAL','DECRYPT','DYNAMIC-function',
        +            'DYNAMIC-NEXT-VALUE','ENCODE','ENCRYPT','ENTERED',
        +            'ERROR','ETIME','EXP','ENDKEY','END-error',
        +            'FIRST-OF','FRAME-DB','FRAME-DOWN',
        +            'FRAME-FIELD','FRAME-FILE','FRAME-INDEX','FRAME-LINE',
        +            'GATEWAYS','GENERATE-PBE-KEY','GENERATE-PBE-SALT','GENERATE-RANDOM-KEY',
        +            'GENERATE-UUID','GET-BITS','GET-BYTE','GET-BYTE-ORDER',
        +            'GET-BYTES','GET-CODEPAGE','GET-CODEPAGES','GET-COLLATION',
        +            'GET-COLLATIONS','GET-DOUBLE','GET-FLOAT','GET-INT64',
        +            'GET-LONG','GET-POINTER-VALUE','GET-SHORT','GET-SIZE',
        +            'GET-STRING','GET-UNSIGNED-LONG','GET-UNSIGNED-SHORT','GO-PENDING',
        +            'GUID','HEX-DECODE','INDEX',
        +            'INT64','INTEGER','INTERVAL','IS-ATTR-SPACE',
        +            'IS-CODEPAGE-FIXED','IS-COLUMN-CODEPAGE','IS-LEAD-BYTE','ISO-DATE',
        +            'KBLABEL','KEYCODE','KEYFUNCTION','KEYLABEL',
        +            'KEYWORD','KEYWORD-ALL','LASTKEY',
        +            'LAST-OF','LC','LDBNAME','LEFT-TRIM',
        +            'LIBRARY','LINE-COUNTER','LIST-EVENTS','LIST-QUERY-ATTRS',
        +            'LIST-SET-ATTRS','LIST-widgetS','LOCKED',
        +            'LOGICAL','MAXIMUM','MD5-DIGEST',
        +            'MEMBER','MESSAGE-LINES','MINIMUM','MONTH',
        +            'MTIME','NEW','NEXT-VALUE','SHARED',
        +            'NOT ENTERED','NOW','NUM-ALIASES','NUM-DBS',
        +            'NUM-ENTRIES','NUM-RESULTS','OPSYS','OS-DRIVES',
        +            'OS-ERROR','OS-GETENV','PAGE-NUMBER','PAGE-SIZE',
        +            'PDBNAME','PROC-HANDLE','PROC-STATUS','PROGRAM-NAME',
        +            'PROGRESS','PROVERSION','QUERY-OFF-END','QUOTER',
        +            'RANDOM','RAW','RECID','REJECTED',
        +            'RETRY','RETURN-VALUE','RGB-VALUE',
        +            'RIGHT-TRIM','R-INDEX','ROUND','ROWID','LENGTH',
        +            'SDBNAME','SET-DB-CLIENT','SETUSERID',
        +            'SHA1-DIGEST','SQRT','SUBSTITUTE','VARIABLE',
        +            'SUPER','TERMINAL','TIME','TIMEZONE','external',
        +            'TODAY','TO-ROWID','TRIM','TRUNCATE','return',
        +            'TYPE-OF','USERID','VALID-EVENT','VALID-HANDLE',
        +            'VALID-object','WEEKDAY','YEAR','BEGINS','VALUE',
        +            'EQ','GE','GT','LE','LT','MATCHES','AS','BY','LIKE'
        +            ),
        +        4 => array(
        +            'ACCELERATOR','ACTIVE','ACTOR','ADM-DATA',
        +            'AFTER-BUFFER','AFTER-ROWID','AFTER-TABLE','ALLOW-COLUMN-SEARCHING',
        +            'ALWAYS-ON-TOP','APPL-ALERT-BOXES','APPL-CONTEXT-ID','APPSERVER-INFO',
        +            'APPSERVER-PASSWORD','APPSERVER-USERID','ASYNCHRONOUS','ASYNC-REQUEST-COUNT',
        +            'ASYNC-REQUEST-HANDLE','ATTACHED-PAIRLIST','attribute-NAMES','ATTR-SPACE',
        +            'AUDIT-EVENT-CONTEXT','AUTO-COMPLETION','AUTO-DELETE','AUTO-DELETE-XML',
        +            'AUTO-END-KEY','AUTO-GO','AUTO-INDENT','AUTO-RESIZE',
        +            'AUTO-RETURN','AUTO-SYNCHRONIZE','AUTO-VALIDATE','AUTO-ZAP',
        +            'AVAILABLE-FORMATS','BACKGROUND','BASE-ADE','BASIC-LOGGING',
        +            'BATCH-MODE','BATCH-SIZE','BEFORE-BUFFER','BEFORE-ROWID',
        +            'BEFORE-TABLE','BGCOLOR','BLANK','BLOCK-ITERATION-DISPLAY',
        +            'BORDER-BOTTOM-CHARS','BORDER-BOTTOM-PIXELS','BORDER-LEFT-CHARS','BORDER-LEFT-PIXELS',
        +            'BORDER-RIGHT-CHARS','BORDER-RIGHT-PIXELS','BORDER-TOP-CHARS','BORDER-TOP-PIXELS',
        +            'BOX','BOX-SELECTABLE','BUFFER-CHARS','BUFFER-FIELD',
        +            'BUFFER-HANDLE','BUFFER-LINES','BUFFER-NAME','BUFFER-VALUE',
        +            'BYTES-READ','BYTES-WRITTEN','CACHE','CALL-NAME',
        +            'CALL-TYPE','CANCEL-BUTTON','CANCELLED','CAN-CREATE',
        +            'CAN-DELETE','CAN-READ','CAN-WRITE','CAREFUL-PAINT',
        +            'CASE-SENSITIVE','CENTERED','CHARSET','CHECKED',
        +            'CHILD-BUFFER','CHILD-NUM','CLASS-TYPE','CLIENT-CONNECTION-ID',
        +            'CLIENT-TTY','CLIENT-TYPE','CLIENT-WORKSTATION','CODE',
        +            'CODEPAGE','COLUMN','COLUMN-BGCOLOR','COLUMN-DCOLOR',
        +            'COLUMN-FGCOLOR','COLUMN-FONT','COLUMN-LABEL','COLUMN-MOVABLE',
        +            'COLUMN-PFCOLOR','COLUMN-READ-ONLY','COLUMN-RESIZABLE','COLUMN-SCROLLING',
        +            'COM-HANDLE','COMPLETE','CONFIG-NAME','CONTEXT-HELP',
        +            'CONTEXT-HELP-FILE','CONTEXT-HELP-ID','CONTROL-BOX','CONVERT-3D-COLORS',
        +            'CPCASE','CPCOLL','CPINTERNAL','CPLOG',
        +            'CPPRINT','CPRCODEIN','CPRCODEOUT','CPSTREAM',
        +            'CPTERM','CRC-VALUE','CURRENT-COLUMN','CURRENT-ENVIRONMENT',
        +            'CURRENT-ITERATION','CURRENT-ROW-MODIFIED','CURRENT-WINDOW','CURSOR-CHAR',
        +            'CURSOR-LINE','CURSOR-OFFSET','DATA-ENTRY-RETURN','DATASET',
        +            'DATA-SOURCE','DATA-SOURCE-COMPLETE-MAP','DATA-TYPE','DATE-FORMAT',
        +            'DB-REFERENCES','DCOLOR','DDE-ERROR','DDE-ID',
        +            'DDE-ITEM','DDE-NAME','DDE-TOPIC','DEBLANK',
        +            'DEBUG-ALERT','DECIMALS','DEFAULT','DEFAULT-BUFFER-HANDLE',
        +            'DEFAULT-BUTTON','DEFAULT-COMMIT','DELIMITER','DISABLE-AUTO-ZAP',
        +            'DISPLAY-TIMEZONE','DISPLAY-TYPE','DOMAIN-DESCRIPTION','DOMAIN-NAME',
        +            'DOMAIN-TYPE','DRAG-ENABLED','DROP-TARGET','DYNAMIC',
        +            'EDGE-CHARS','EDGE-PIXELS','EDIT-CAN-PASTE','EDIT-CAN-UNDO',
        +            'EMPTY','ENCODING','ENCRYPTION-SALT','END-USER-PROMPT',
        +            'ENTRY-TYPES-LIST','ERROR-COLUMN','ERROR-object-DETAIL','ERROR-ROW',
        +            'ERROR-STRING','EVENT-GROUP-ID','EVENT-PROCEDURE','EVENT-PROCEDURE-CONTEXT',
        +            'EVENT-TYPE','EXCLUSIVE-ID','EXECUTION-LOG','EXPAND',
        +            'EXPANDABLE','FGCOLOR','FILE-CREATE-DATE','FILE-CREATE-TIME',
        +            'FILE-MOD-DATE','FILE-MOD-TIME','FILE-NAME','FILE-OFFSET',
        +            'FILE-SIZE','FILE-TYPE','FILLED','FILL-MODE',
        +            'FILL-WHERE-STRING','FIRST-ASYNC-REQUEST','FIRST-BUFFER','FIRST-CHILD',
        +            'FIRST-COLUMN','FIRST-DATASET','FIRST-DATA-SOURCE','FIRST-object',
        +            'FIRST-PROCEDURE','FIRST-QUERY','FIRST-SERVER','FIRST-SERVER-SOCKET',
        +            'FIRST-SOCKET','FIRST-TAB-ITEM','FIT-LAST-COLUMN','FLAT-BUTTON',
        +            'FOCUSED-ROW','FOCUSED-ROW-SELECTED','FONT','FOREGROUND',
        +            'FORMAT','FORMATTED','FORM-INPUT','FORM-LONG-INPUT',
        +            'FORWARD-ONLY','FRAGMENT','FRAME-COL','FRAME-NAME',
        +            'FRAME-ROW','FRAME-SPACING','FRAME-X','FRAME-Y',
        +            'FREQUENCY','FULL-HEIGHT-CHARS','FULL-HEIGHT-PIXELS','FULL-PATHNAME',
        +            'FULL-WIDTH-CHARS','FULL-WIDTH-PIXELS','GRAPHIC-EDGE',
        +            'GRID-FACTOR-HORIZONTAL','GRID-FACTOR-VERTICAL','GRID-SNAP','GRID-UNIT-HEIGHT-CHARS',
        +            'GRID-UNIT-HEIGHT-PIXELS','GRID-UNIT-WIDTH-CHARS','GRID-UNIT-WIDTH-PIXELS','GRID-VISIBLE',
        +            'GROUP-BOX','HANDLE','HANDLER','HAS-LOBS',
        +            'HAS-RECORDS','HEIGHT-CHARS','HEIGHT-PIXELS','HELP',
        +            'HIDDEN','HORIZONTAL','HTML-CHARSET','HTML-END-OF-LINE',
        +            'HTML-END-OF-PAGE','HTML-FRAME-BEGIN','HTML-FRAME-END','HTML-HEADER-BEGIN',
        +            'HTML-HEADER-END','HTML-TITLE-BEGIN','HTML-TITLE-END','HWND',
        +            'ICFPARAMETER','ICON','IGNORE-CURRENT-MODIFIED','IMAGE-DOWN',
        +            'IMAGE-INSENSITIVE','IMAGE-UP','IMMEDIATE-DISPLAY','INDEX-INFORMATION',
        +            'IN-HANDLE','INHERIT-BGCOLOR','INHERIT-FGCOLOR','INITIAL','INIT',
        +            'INNER-CHARS','INNER-LINES','INPUT-VALUE','INSTANTIATING-PROCEDURE',
        +            'INTERNAL-ENTRIES','IS-CLASS','IS-OPEN','IS-PARAMETER-SET',
        +            'IS-XML','ITEMS-PER-ROW','KEEP-CONNECTION-OPEN','KEEP-FRAME-Z-ORDER',
        +            'KEEP-SECURITY-CACHE','KEY','KEYS','LABEL',
        +            'LABEL-BGCOLOR','LABEL-DCOLOR','LABEL-FGCOLOR','LABEL-FONT',
        +            'LABELS','LANGUAGES','LARGE','LARGE-TO-SMALL',
        +            'LAST-ASYNC-REQUEST','LAST-BATCH','LAST-CHILD','LAST-object',
        +            'LAST-PROCEDURE','LAST-SERVER','LAST-SERVER-SOCKET','LAST-SOCKET',
        +            'LAST-TAB-ITEM','LINE','LIST-ITEM-PAIRS','LIST-ITEMS',
        +            'LITERAL-QUESTION','LOCAL-HOST','LOCAL-NAME','LOCAL-PORT',
        +            'LOCATOR-COLUMN-NUMBER','LOCATOR-LINE-NUMBER','LOCATOR-PUBLIC-ID','LOCATOR-system-ID',
        +            'LOCATOR-TYPE','LOG-ENTRY-TYPES','LOGFILE-NAME','LOGGING-LEVEL',
        +            'LOGIN-EXPIRATION-TIMESTAMP','LOGIN-HOST','LOGIN-STATE','LOG-THRESHOLD',
        +            'MANDATORY','MANUAL-HIGHLIGHT','MAX-BUTTON','MAX-CHARS',
        +            'MAX-DATA-GUESS','MAX-HEIGHT-CHARS','MAX-HEIGHT-PIXELS','MAX-VALUE',
        +            'MAX-WIDTH-CHARS','MAX-WIDTH-PIXELS','MD5-VALUE','MENU-BAR',
        +            'MENU-KEY','MENU-MOUSE','MERGE-BY-FIELD','MESSAGE-AREA',
        +            'MESSAGE-AREA-FONT','MIN-BUTTON','MIN-COLUMN-WIDTH-CHARS','MIN-COLUMN-WIDTH-PIXELS',
        +            'MIN-HEIGHT-CHARS','MIN-HEIGHT-PIXELS','MIN-SCHEMA-MARSHAL','MIN-VALUE',
        +            'MIN-WIDTH-CHARS','MIN-WIDTH-PIXELS','MODIFIED','MOUSE-POINTER',
        +            'MOVABLE','MULTI-COMPILE','MULTIPLE','MULTITASKING-INTERVAL',
        +            'MUST-UNDERSTAND','NAME','NAMESPACE-PREFIX','NAMESPACE-URI',
        +            'NEEDS-APPSERVER-PROMPT','NEEDS-PROMPT','NESTED','NEW-ROW',
        +            'NEXT-COLUMN','NEXT-ROWID','NEXT-SIBLING','NEXT-TAB-ITEM', 'NO-BOX',
        +            'NO-CURRENT-VALUE','NODE-VALUE','NO-EMPTY-SPACE','NO-FOCUS',
        +            'NONAMESPACE-SCHEMA-LOCATION','NO-SCHEMA-MARSHAL','NO-VALIDATE','NUM-BUFFERS',
        +            'NUM-BUTTONS','NUM-CHILD-RELATIONS','NUM-CHILDREN','NUM-COLUMNS',
        +            'NUM-DROPPED-FILES','NUMERIC-DECIMAL-POINT','NUMERIC-FORMAT','NUMERIC-SEPARATOR',
        +            'NUM-FIELDS','NUM-FORMATS','NUM-HEADER-ENTRIES','NUM-ITEMS',
        +            'NUM-ITERATIONS','NUM-LINES','NUM-LOCKED-COLUMNS','NUM-LOG-FILES',
        +            'NUM-MESSAGES','NUM-PARAMETERS','NUM-REFERENCES','NUM-RELATIONS',
        +            'NUM-REPLACED','NUM-SELECTED-ROWS','NUM-SELECTED-WIDGETS','NUM-SOURCE-BUFFERS',
        +            'NUM-TABS','NUM-TOP-BUFFERS','NUM-TO-RETAIN','NUM-VISIBLE-COLUMNS',
        +            'ON-FRAME-BORDER','ORIGIN-HANDLE','ORIGIN-ROWID','OWNER',
        +            'OWNER-DOCUMENT','PAGE-BOTTOM','PAGE-TOP','PARAMETER',
        +            'PARENT','PARENT-BUFFER','PARENT-RELATION','PARSE-STATUS',
        +            'PASSWORD-FIELD','PATHNAME','PBE-HASH-ALGORITHM','PBE-KEY-ROUNDS',
        +            'PERSISTENT','PERSISTENT-CACHE-DISABLED','PERSISTENT-PROCEDURE','PFCOLOR',
        +            'PIXELS-PER-COLUMN','PIXELS-PER-ROW','POPUP-MENU','POPUP-ONLY',
        +            'POSITION','PREFER-DATASET','PREPARED','PREPARE-STRING',
        +            'PREV-COLUMN','PREV-SIBLING','PREV-TAB-ITEM','PRIMARY',
        +            'PRINTER-CONTROL-HANDLE','PRINTER-HDC','PRINTER-NAME','PRINTER-PORT',
        +            'PRIVATE-DATA','PROCEDURE-NAME','PROGRESS-SOURCE','PROXY',
        +            'PROXY-PASSWORD','PROXY-USERID','PUBLIC-ID','PUBLISHED-EVENTS',
        +            'RADIO-BUTTONS','READ-ONLY','RECORD-LENGTH',
        +            'REFRESHABLE','RELATION-FIELDS','RELATIONS-ACTIVE','REMOTE',
        +            'REMOTE-HOST','REMOTE-PORT','RESIZABLE','RESIZE',
        +            'RESTART-ROWID','RETAIN-SHAPE','RETURN-INSERTED','RETURN-VALUE-DATA-TYPE',
        +            'ROLES','ROUNDED','COL','ROW','ROW-HEIGHT-CHARS',
        +            'ROW-HEIGHT-PIXELS','ROW-MARKERS','ROW-RESIZABLE','ROW-STATE',
        +            'SAVE-WHERE-STRING','SCHEMA-CHANGE','SCHEMA-LOCATION','SCHEMA-MARSHAL',
        +            'SCHEMA-PATH','SCREEN-LINES','SCREEN-VALUE','SCROLLABLE',
        +            'SCROLLBAR-HORIZONTAL','SCROLL-BARS','SCROLLBAR-VERTICAL','SEAL-TIMESTAMP',
        +            'SELECTABLE','SELECTED','SELECTION-END','SELECTION-START',
        +            'SELECTION-TEXT','SENSITIVE','SEPARATOR-FGCOLOR','SEPARATORS',
        +            'SERVER','SERVER-CONNECTION-BOUND','SERVER-CONNECTION-BOUND-REQUEST','SERVER-CONNECTION-CONTEXT',
        +            'SERVER-CONNECTION-ID','SERVER-OPERATING-MODE','SESSION-END','SESSION-ID',
        +            'SHOW-IN-TASKBAR','SIDE-LABEL-HANDLE','SIDE-LABELS','SKIP-DELETED-RECORD',
        +            'SMALL-ICON','SMALL-TITLE','SOAP-FAULT-ACTOR','SOAP-FAULT-CODE',
        +            'SOAP-FAULT-DETAIL','SOAP-FAULT-STRING','SORT','SORT-ASCENDING',
        +            'SORT-NUMBER','SSL-SERVER-NAME','STANDALONE','STARTUP-PARAMETERS',
        +            'STATE-DETAIL','STATUS-AREA','STATUS-AREA-FONT','STOPPED',
        +            'STREAM','STRETCH-TO-FIT','STRICT','STRING-VALUE',
        +            'SUBTYPE','SUPER-PROCEDURES','SUPPRESS-NAMESPACE-PROCESSING','SUPPRESS-WARNINGS',
        +            'SYMMETRIC-ENCRYPTION-ALGORITHM','SYMMETRIC-ENCRYPTION-IV','SYMMETRIC-ENCRYPTION-KEY','SYMMETRIC-SUPPORT',
        +            'system-ALERT-BOXES','system-ID','TABLE','TABLE-CRC-LIST',
        +            'TABLE-HANDLE','TABLE-LIST','TABLE-NUMBER','TAB-POSITION',
        +            'TAB-STOP','TEMP-DIRECTORY','TEXT-SELECTED','THREE-D',
        +            'TIC-MARKS','TIME-SOURCE','TITLE','TITLE-BGCOLOR','FIELD',
        +            'TITLE-DCOLOR','TITLE-FGCOLOR','TITLE-FONT','TOOLTIP',
        +            'TOOLTIPS','TOP-ONLY','TRACKING-CHANGES','TRANSACTION',
        +            'TRANS-INIT-PROCEDURE','TRANSPARENT','TYPE','UNIQUE-ID',
        +            'UNIQUE-MATCH','URL','URL-PASSWORD','URL-USERID','EXTENT',
        +            'USER-ID','V6DISPLAY','VALIDATE-EXPRESSION','VALIDATE-MESSAGE',
        +            'VALIDATE-XML','VALIDATION-ENABLED','VIEW-FIRST-COLUMN-ON-REOPEN',
        +            'VIRTUAL-HEIGHT-CHARS','VIRTUAL-HEIGHT-PIXELS','VIRTUAL-WIDTH-CHARS','VIRTUAL-WIDTH-PIXELS',
        +            'VISIBLE','WARNING','WHERE-STRING','widget-ENTER','DATE',
        +            'widget-LEAVE','WIDTH-CHARS','WIDTH-PIXELS','WINDOW-STATE',
        +            'WINDOW-system','WORD-WRAP','WORK-AREA-HEIGHT-PIXELS','WORK-AREA-WIDTH-PIXELS',
        +            'WORK-AREA-X','WORK-AREA-Y','WRITE-STATUS','X','widget-Handle',
        +            'X-DOCUMENT','XML-DATA-TYPE','XML-NODE-TYPE','XML-SCHEMA-PATH',
        +            'XML-SUPPRESS-NAMESPACE-PROCESSING','Y','YEAR-OFFSET','CHARACTER',
        +            'LONGCHAR','MEMPTR','CHAR','DEC','INT','LOG','DECI','INTE','LOGI','long'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}',
        +        '<', '>', '=',
        +        '+', '-', '*', '/',
        +        '!', '@', '%', '|', '$',
        +        ':', '.', ';', ',',
        +        '?', '<=','<>','>=', '\\'
        +        ),
        +    'CASE_SENSITIVE' => array (
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false
        +        ),
        +    'STYLES' => array (
        +        'KEYWORDS' => array (
        +            1 => 'color: #0000ff; font-weight: bold;',
        +            2 => 'color: #1D16B2;',
        +            3 => 'color: #993333;',
        +            4 => 'color: #0000ff;'
        +            ),
        +        'COMMENTS' => array (
        +//            1 => 'color: #808080; font-style: italic;',
        +//            2 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array (
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array (
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array (
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array (
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array (
        +            0 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array (
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array (
        +            ),
        +        'SCRIPT' => array (
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        0 => ':'
        +        ),
        +    'REGEXPS' => array (
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array (
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array (
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => "(?  "(?![\-a-zA-Z0-9_%])",
        +            1 => array(
        +                'SPACE_AS_WHITESPACE' => true
        +                ),
        +            2 => array(
        +                'SPACE_AS_WHITESPACE' => true
        +                )
        +            )
        +        )
        +);
        diff --git a/includes/geshi/prolog.php b/includes/geshi/prolog.php
        new file mode 100644
        index 0000000..e8b5df0
        --- /dev/null
        +++ b/includes/geshi/prolog.php
        @@ -0,0 +1,141 @@
        + 'Prolog',
        +    'COMMENT_SINGLE' => array(1 => '%'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'HARDQUOTE' => array("'", "'"),
        +    'HARDESCAPE' => array("\'"),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => '',
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'abolish','abs','arg','asserta','assertz','at_end_of_stream','atan',
        +            'atom','atom_chars','atom_codes','atom_concat','atom_length',
        +            'atomic','bagof','call','catch','ceiling','char_code',
        +            'char_conversion','clause','close','compound','consult','copy_term',
        +            'cos','current_char_conversion','current_input','current_op',
        +            'current_output','current_predicate','current_prolog_flag',
        +            'discontiguous','dynamic','ensure_loaded','exp','fail','findall',
        +            'float','float_fractional_part','float_integer_part','floor',
        +            'flush_output','functor','get_byte','get_char','get_code','halt',
        +            'include','initialization','integer','is','listing','log','mod',
        +            'multifile','nl','nonvar','notrace','number','number_chars',
        +            'number_codes','once','op','open','peek_byte','peek_char',
        +            'peek_code','put_byte','put_char','put_code','read','read_term',
        +            'rem','repeat','retract','round','set_input','set_output',
        +            'set_prolog_flag','set_stream_position','setof','sign','sin','sqrt',
        +            'stream_property','sub_atom','throw','trace','true','truncate',
        +            'unify_with_occurs_check','univ','var','write','write_canonical',
        +            'write_term','writeq'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array('(', ')', '[', ']', '{', '}',),
        +        1 => array('?-', ':-', '=:='),
        +        2 => array('\-', '\+', '\*', '\/'),
        +        3 => array('-', '+', '*', '/'),
        +        4 => array('.', ':', ',', ';'),
        +        5 => array('!', '@', '&', '|'),
        +        6 => array('<', '>', '=')
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #990000;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            'HARD' => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;',
        +            'HARD' => 'color: #0000ff;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #800080;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;',
        +            1 => 'color: #339933;',
        +            2 => 'color: #339933;',
        +            3 => 'color: #339933;',
        +            4 => 'color: #339933;',
        +            5 => 'color: #339933;',
        +            6 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #008080;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => 'http://pauillac.inria.fr/~deransar/prolog/bips.html'
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        //Variables
        +        0 => "(? GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/properties.php b/includes/geshi/properties.php
        new file mode 100644
        index 0000000..b716018
        --- /dev/null
        +++ b/includes/geshi/properties.php
        @@ -0,0 +1,125 @@
        + 'PROPERTIES',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        /* Common used variables */
        +        1 => array(
        +            '${user.home}'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '[', ']', '='
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'font-weight: bold;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => ''
        +            ),
        +        'BRACKETS' => array(
        +            0 => ''
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #933;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => ''
        +            ),
        +        'METHODS' => array(
        +            0 => ''
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #000080; font-weight:bold;',
        +            1 => 'color: #008000; font-weight:bold;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        //Entry names
        +        0 => array(
        +            GESHI_SEARCH => '^(\s*)([.a-zA-Z0-9_\-]+)(\s*=)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3'
        +            ),
        +        //Entry values
        +        1 => array(
        +            // Evil hackery to get around GeSHi bug: <>" and ; are added so s can be matched
        +            // Explicit match on variable names because if a comment is before the first < of the span
        +            // gets chewed up...
        +            GESHI_SEARCH => '([<>";a-zA-Z0-9_]+\s*)=(.*)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1=',
        +            GESHI_AFTER => ''
        +            )
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/providex.php b/includes/geshi/providex.php
        new file mode 100644
        index 0000000..e2ab4a5
        --- /dev/null
        +++ b/includes/geshi/providex.php
        @@ -0,0 +1,297 @@
        + 'ProvideX',
        +    'COMMENT_SINGLE' => array(1 => '!'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        // Single-Line Comments using REM command
        +        2 => "/\bREM\b.*?$/i"
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            // Directives
        +            '*break', '*continue', '*end', '*escape', '*next', '*proceed',
        +            '*retry', '*return', '*same', 'accept', 'add index', 'addr',
        +            'auto', 'begin', 'break', 'button', 'bye', 'call', 'case',
        +            'chart', 'check_box', 'class', 'clear', 'clip_board', 'close',
        +            'continue', 'control', 'create required', 'create table',
        +            'cwdir', 'data', 'day_format', 'def', 'default', 'defctl',
        +            'defprt', 'deftty', 'delete required', 'dictionary', 'dim', 'direct',
        +            'directory', 'disable', 'drop', 'drop_box', 'dump', 'edit',
        +            'else', 'enable', 'end switch', 'end', 'end_if', 'endtrace',
        +            'enter', 'erase', 'error_handler', 'escape', 'event', 'execute',
        +            'exit', 'exitto', 'extract', 'file', 'find', 'floating point',
        +            'for', 'function', 'get_file_box', 'gosub', 'goto', 'grid',
        +            'h_scrollbar', 'hide', 'if', 'index', 'indexed', 'input',
        +            'insert', 'invoke', 'iolist', 'keyed', 'let', 'like',
        +            'line_switch', 'list', 'list_box', 'load', 'local', 'lock',
        +            'long_form', 'menu_bar', 'merge', 'message_lib', 'mnemonic',
        +            'msgbox', 'multi_line', 'multi_media', 'next', 'object', 'obtain',
        +            'on', 'open', 'password', 'perform', 'pop', 'popup_menu',
        +            'precision', 'prefix', 'preinput', 'print', 'process', 'program',
        +            'property', 'purge', 'quit', 'radio_button', 'randomize',
        +            'read', 'record', 'redim', 'refile', 'release', 'rem', 'remove',
        +            'rename', 'renumber', 'repeat', 'reset', 'restore', 'retry',
        +            'return', 'round', 'run', 'save', 'select', 'serial', 'server',
        +            'set_focus', 'set_nbf', 'set_param', 'setctl', 'setday', 'setdev',
        +            'setdrive', 'seterr', 'setesc', 'setfid', 'setmouse', 'settime',
        +            'settrace', 'short_form', 'show', 'sort', 'start', 'static',
        +            'step', 'stop', 'switch', 'system_help', 'system_jrnl', 'table',
        +            'then', 'to', 'translate', 'tristate_box', 'unlock', 'until',
        +            'update', 'user_lex', 'v_scrollbar', 'vardrop_box', 'varlist_box',
        +            'via', 'video_palette', 'wait', 'wend', 'while', 'winprt_setup',
        +            'with', 'write'
        +            ),
        +        2 => array(
        +            // System Functions
        +            '@x', '@y', 'abs', 'acs', 'and', 'arg', 'asc', 'asn', 'ath',
        +            'atn', 'bin', 'bsz', 'chg', 'chr', 'cmp', 'cos', 'cpl',
        +            'crc', 'cse', 'ctl', 'cvs', 'dec', 'dir', 'dll', 'dsk',
        +            'dte', 'env', 'ept', 'err', 'evn', 'evs', 'exp', 'ffn',
        +            'fib', 'fid', 'fin', 'fpt', 'gap', 'gbl', 'gep', 'hsa',
        +            'hsh', 'hta', 'hwn', 'i3e', 'ind', 'int', 'iol', 'ior',
        +            'jul', 'jst', 'kec', 'kef', 'kel', 'ken', 'kep', 'key',
        +            'kgn', 'lcs', 'len', 'lno', 'log', 'lrc', 'lst', 'max',
        +            'mem', 'mid', 'min', 'mnm', 'mod', 'msg', 'msk', 'mxc',
        +            'mxl', 'new', 'not', 'nul', 'num', 'obj', 'opt', 'pad',
        +            'pck', 'pfx', 'pgm', 'pos', 'prc', 'prm', 'pth', 'pub',
        +            'rcd', 'rdx', 'rec', 'ref', 'rnd', 'rno', 'sep', 'sgn',
        +            'sin', 'sqr', 'srt', 'ssz', 'stk', 'stp', 'str', 'sub',
        +            'swp', 'sys', 'tan', 'tbl', 'tcb', 'tmr', 'trx', 'tsk',
        +            'txh', 'txw', 'ucp', 'ucs', 'upk', 'vin', 'vis', 'xeq',
        +            'xfa', 'xor', '_obj'
        +            ),
        +        3 => array(
        +            // System Variables
        +            // Vars that are duplicates of functions
        +            // 'ctl', 'err', 'pfx', 'prm', 'rnd', 'sep', 'sys',
        +            'bkg', 'chn', 'day', 'dlm', 'dsz', 'eom', 'ers', 'esc',
        +            'gfn', 'gid', 'hfn', 'hlp', 'hwd', 'lfa', 'lfo', 'lip',
        +            'lpg', 'lwd', 'mse', 'msl', 'nar', 'nid', 'pgn', 'psz',
        +            'quo', 'ret', 'sid', 'ssn', 'tim', 'tme', 'tms', 'tsm',
        +            'uid', 'unt', 'who'
        +
        +            ),
        +        4 => array(
        +            // Nomads Variables
        +            '%Flmaint_Lib$', '%Flmaint_Msg$', '%Nomads_Activation_Ok',
        +            '%Nomads_Auto_Qry', '%Nomads_Disable_Debug',
        +            '%Nomads_Disable_Trace', '%Nomads_Fkey_Handler$',
        +            '%Nomads_Fkey_Tbl$', '%Nomads_Notest', '%Nomads_Onexit$',
        +            '%Nomads_Post_Display', '%Nomads_Pre_Display$',
        +            '%Nomads_Process$', '%Nomads_Trace_File$',
        +            '%Nomad_Actv_Folder_Colors$', '%Nomad_Automation_Enabled',
        +            '%Nomad_Auto_Close', '%Nomad_Center_Wdw', '%Nomad_Concurrent_Wdw',
        +            '%Nomad_Custom_Define', '%Nomad_Custom_Dir$',
        +            '%Nomad_Custom_Genmtc', '%Nomad_Custom_Skip_Definition',
        +            '%Nomad_Def_Sfx$', '%Nomad_Enter_Tab', '%Nomad_Esc_Sel',
        +            '%Nomad_Isjavx', '%Nomad_Iswindx', '%Nomad_Iswindx$',
        +            '%Nomad_Menu$', '%Nomad_Menu_Leftedge_Clr$',
        +            '%Nomad_Menu_Textbackground_Clr$', '%Nomad_Mln_Sep$',
        +            '%Nomad_Msgmnt$', '%Nomad_Noplusw', '%Nomad_No_Customize',
        +            '%Nomad_Object_Persistence', '%Nomad_Object_Resize',
        +            '%Nomad_Open_Load', '%Nomad_Override_Font$',
        +            '%Nomad_Palette_Loaded', '%Nomad_Panel_Info_Force',
        +            '%Nomad_Panel_Info_Prog$', '%Nomad_Pnl_Def_Colour$',
        +            '%Nomad_Pnl_Def_Font$', '%Nomad_Prg_Cache', '%Nomad_Qry_Attr$',
        +            '%Nomad_Qry_Btn$', '%Nomad_Qry_Clear_Start', '%Nomad_Qry_Tip$',
        +            '%Nomad_Qry_Wide', '%Nomad_Query_Clear_Status', '%Nomad_Query_Kno',
        +            '%Nomad_Query_No_Gray', '%Nomad_Query_Odb_Ignore',
        +            '%Nomad_Query_Retkno', '%Nomad_Query_Sbar_Max',
        +            '%Nomad_Relative_Wdw', '%Nomad_Save_Qry_Path', '%Nomad_Script_Fn',
        +            '%Nomad_Script_Log', '%Nomad_Script_Wdw',
        +            '%Nomad_Skip_Change_Logic', '%Nomad_Skip_Onselect_Logic',
        +            '%Nomad_Stk$', '%Nomad_Tab_Dir', '%Nomad_Timeout',
        +            '%Nomad_Turbo_Off', '%Nomad_Visual_Effect',
        +            '%Nomad_Visual_Override', '%Nomad_Win_Ver', '%Nomad_Xchar',
        +            '%Nomad_Xmax', '%Nomad_Ychar', '%Nomad_Ymax', '%Scr_Def_Attr$',
        +            '%Scr_Def_H_Fl$', '%Scr_Def_H_Id$', '%Scr_Lib', '%Scr_Lib$',
        +            '%Z__Usr_Sec$', 'Alternate_Panel$', 'Alternate_Panel_Type$',
        +            'Arg_1$', 'Arg_10$', 'Arg_11$', 'Arg_12$', 'Arg_13$', 'Arg_14$',
        +            'Arg_15$', 'Arg_16$', 'Arg_17$', 'Arg_18$', 'Arg_19$', 'Arg_2$',
        +            'Arg_20$', 'Arg_3$', 'Arg_4$', 'Arg_5$', 'Arg_6$', 'Arg_7$',
        +            'Arg_8$', 'Arg_9$', 'Change_Flg', 'Cmd_Str$', 'Default_Prog$',
        +            'Disp_Cmd$', 'Entire_Record$', 'Exit_Cmd$', 'Fldr_Default_Prog$',
        +            'Folder_Id$', 'Id', 'Id$', 'Ignore_Exit', 'Initialize_Flg',
        +            'Init_Text$', 'Init_Val$', 'Main_Scrn_K$', 'Mnu_Ln$',
        +            'Next_Folder', 'Next_Id', 'Next_Id$', 'No_Flush', 'Prime_Key$',
        +            'Prior_Val', 'Prior_Val$', 'Qry_Val$', 'Refresh_Flg',
        +            'Replacement_Folder$', 'Replacement_Lib$', 'Replacement_Scrn$',
        +            'Scrn_Id$', 'Scrn_K$', 'Scrn_Lib$', 'Tab_Table$', '_Eom$'
        +            ),
        +        5 => array(
        +            // Mnemonics
        +            "'!w'", "'*c'", "'*h'", "'*i'", "'*o'", "'*r'", "'*x'",
        +            "'+b'", "'+d'", "'+e'", "'+f'", "'+i'", "'+n'",
        +            "'+p'", "'+s'", "'+t'", "'+u'", "'+v'", "'+w'", "'+x'",
        +            "'+z'", "'-b'", "'-d'", "'-e'", "'-f'", "'-i'",
        +            "'-n'", "'-p'", "'-s'", "'-t'", "'-u'", "'-v'", "'-w'",
        +            "'-x'", "'-z'", "'2d'", "'3d'", "'4d'", "'@@'", "'ab'",
        +            "'arc'", "'at'", "'backgr'", "'bb'", "'be'", "'beep'",
        +            "'bg'", "'bi'", "'bj'", "'bk'", "'black'", "'blue'",
        +            "'bm'", "'bo'", "'box'", "'br'", "'bs'", "'bt'", "'bu'",
        +            "'bw'", "'bx'", "'caption'", "'ce'", "'cf'", "'ch'",
        +            "'ci'", "'circle'", "'cl'", "'colour'", "'cp'", "'cpi'",
        +            "'cr'", "'cs'", "'cursor'", "'cyan''_cyan'", "'dc'",
        +            "'default'", "'df'", "'dialogue'", "'dn'", "'do'",
        +            "'drop'", "'eb'", "'ee'", "'ef'", "'eg'", "'ei'", "'ej'",
        +            "'el'", "'em'", "'eo'", "'ep'", "'er'", "'es'", "'et'",
        +            "'eu'", "'ew'", "'ff'", "'fill'", "'fl'", "'font'",
        +            "'frame'", "'gd'", "'ge'", "'gf'", "'goto'", "'green'",
        +            "'gs'", "'hide'", "'ic'", "'image'", "'jc'",
        +            "'jd'", "'jl'", "'jn'", "'jr'", "'js'", "'l6'", "'l8'",
        +            "'lc'", "'ld'", "'lf'", "'li'", "'line'", "'lm'",
        +            "'lpi'", "'lt'", "'magenta'", "'maxsize'", "'me'",
        +            "'message'", "'minsize'", "'mn'", "'mode'",
        +            "'move'", "'mp'", "'ms'", "'ni'", "'offset'", "'option'",
        +            "'pe'", "'pen'", "'picture'", "'pie'", "'pm'", "'polygon'",
        +            "'pop'", "'ps'", "'push'", "'rb'", "'rc'", "'rectangle'",
        +            "'red'", "'rl'", "'rm'", "'rp'", "'rs'", "'rt'", "'sb'",
        +            "'scroll'", "'sd'", "'se'", "'sf'", "'show'", "'size'",
        +            "'sl'", "'sn'", "'sp'", "'sr'", "'swap'", "'sx'", "'text'",
        +            "'textwdw'", "'tr'", "'tw'", "'uc'", "'up'", "'vt'", "'wa'",
        +            "'wc'", "'wd'", "'wg'", "'white'", "'window'", "'wm'",
        +            "'wp'", "'wr'", "'wrap'", "'ws'", "'wx'", "'xp'", "'yellow'",
        +            "'zx'", "'_black'", "'_blue'", "'_colour'", "'_green'",
        +            "'_magenta'", "'_red'", "'_white'", "'_yellow'"
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array('+', '-', '*', '/', '^', '|'),
        +        1 => array('++', '--', '+=', '-=', '*=', '/=', '^=', '|='),
        +        2 => array('<', '>', '='),
        +        3 => array('(', ')', '[', ']', '{', '}'),
        +        4 => array(',', '@', ';', '\\')
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: navy;', // Directives
        +            2 => 'color: blue;', // System Functions
        +            3 => 'color: blue;', // System Variables
        +            4 => 'color: #6A5ACD; font-style: italic;', // Nomads Global Variables
        +            5 => 'color: #BDB76B;', // Mnemonics
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008080; font-style: italic;',
        +            2 => 'color: #008080;',
        +            'MULTI' => 'color: #008080; font-style: italic;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000066;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: green;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #00008B;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #008000;',
        +            1 => 'color: #000099;',
        +            2 => 'color: #000099;',
        +            3 => 'color: #0000C9;',
        +            4 => 'color: #000099;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            1 => 'color: #006400; font-weight: bold',
        +            2 => 'color: #6A5ACD;'
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => 'http://www.allbasic.info./wiki/index.php/PX:Directive_{FNAME}',
        +        2 => 'http://www.allbasic.info./wiki/index.php/PX:System_function_{FNAME}',
        +        3 => 'http://www.allbasic.info./wiki/index.php/PX:System_variable_{FNAME}',
        +        4 => 'http://www.allbasic.info./wiki/index.php/PX:Nomads_{FNAME}',
        +        5 => 'http://www.allbasic.info./wiki/index.php/PX:Mnemonic_{FNAMEU}'
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => "'"
        +        ),
        +    'REGEXPS' => array(
        +        1 => array(
        +            // Line Labels
        +            GESHI_SEARCH => '([[:space:]])([a-zA-Z_][a-zA-Z0-9_]+)(:)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3'
        +            ),
        +        2 => array(
        +            // Global String Variables
        +            GESHI_SEARCH => '(\%)([a-zA-Z_][a-zA-Z0-9_]+)(\$)',
        +            GESHI_REPLACE => '\\1\\2\\3',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            )
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'ENABLE_FLAGS' => array(
        +            'NUMBERS' => GESHI_NEVER
        +            )
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/purebasic.php b/includes/geshi/purebasic.php
        new file mode 100644
        index 0000000..f685dd0
        --- /dev/null
        +++ b/includes/geshi/purebasic.php
        @@ -0,0 +1,301 @@
        + 'PureBasic',
        +    'COMMENT_SINGLE' => array( 1 => ";"  ),
        +    'COMMENT_MULTI' => array( ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            // Keywords
        +            'And', 'As', 'Break', 'CallDebugger', 'Case', 'CompilerCase', 'CompilerDefault', 'CompilerElse', 'CompilerEndIf', 'CompilerEndSelect',
        +            'CompilerError', 'CompilerIf', 'CompilerSelect', 'Continue', 'Data', 'DataSection', 'EndDataSection', 'Debug', 'DebugLevel', 'Declare',
        +            'DeclareCDLL', 'DeclareDLL', 'Default', 'Define', 'Dim', 'DisableASM', 'DisableDebugger', 'DisableExplicit', 'Else', 'ElseIf', 'EnableASM',
        +            'EnableDebugger', 'EnableExplicit', 'End', 'EndEnumeration', 'EndIf', 'EndImport', 'EndInterface', 'EndMacro', 'EndProcedure',
        +            'EndSelect', 'EndStructure', 'EndStructureUnion', 'EndWith', 'Enumeration', 'Extends', 'FakeReturn', 'For', 'Next', 'ForEach',
        +            'ForEver', 'Global', 'Gosub', 'Goto', 'If', 'Import', 'ImportC', 'IncludeBinary', 'IncludeFile', 'IncludePath', 'Interface', 'Macro',
        +            'NewList', 'Not', 'Or', 'Procedure', 'ProcedureC', 'ProcedureCDLL', 'ProcedureDLL', 'ProcedureReturn', 'Protected', 'Prototype',
        +            'PrototypeC', 'Read', 'ReDim', 'Repeat', 'Until', 'Restore', 'Return', 'Select', 'Shared', 'Static', 'Step', 'Structure', 'StructureUnion',
        +            'Swap', 'To', 'Wend', 'While', 'With', 'XIncludeFile', 'XOr'
        +            ),
        +        2 => array(
        +            // All Functions
        +            'Abs', 'ACos', 'Add3DArchive', 'AddBillboard', 'AddDate', 'AddElement', 'AddGadgetColumn', 'AddGadgetItem',
        +            'AddKeyboardShortcut', 'AddMaterialLayer', 'AddPackFile', 'AddPackMemory', 'AddStatusBarField', 'AddSysTrayIcon',
        +            'AllocateMemory', 'AmbientColor', 'AnimateEntity', 'Asc', 'ASin', 'ATan', 'AudioCDLength', 'AudioCDName', 'AudioCDStatus',
        +            'AudioCDTrackLength', 'AudioCDTracks', 'AudioCDTrackSeconds', 'AvailableProgramOutput', 'AvailableScreenMemory',
        +            'BackColor', 'Base64Decoder', 'Base64Encoder', 'BillboardGroupLocate', 'BillboardGroupMaterial', 'BillboardGroupX',
        +            'BillboardGroupY', 'BillboardGroupZ', 'BillboardHeight', 'BillboardLocate', 'BillboardWidth', 'BillboardX', 'BillboardY', 'BillboardZ',
        +            'Bin', 'BinQ', 'Blue', 'Box', 'ButtonGadget', 'ButtonImageGadget', 'CalendarGadget', 'CallCFunction', 'CallCFunctionFast',
        +            'CallFunction', 'CallFunctionFast', 'CameraBackColor', 'CameraFOV', 'CameraLocate', 'CameraLookAt', 'CameraProjection',
        +            'CameraRange', 'CameraRenderMode', 'CameraX', 'CameraY', 'CameraZ', 'CatchImage', 'CatchSound', 'CatchSprite',
        +            'CatchXML', 'ChangeAlphaIntensity', 'ChangeCurrentElement', 'ChangeGamma', 'ChangeListIconGadgetDisplay',
        +            'ChangeSysTrayIcon', 'CheckBoxGadget', 'CheckEntityCollision', 'CheckFilename', 'ChildXMLNode', 'Chr', 'Circle',
        +            'ClearBillboards', 'ClearClipboard', 'ClearConsole', 'ClearError', 'ClearGadgetItemList', 'ClearList', 'ClearScreen', 'ClipSprite',
        +            'CloseConsole', 'CloseDatabase', 'CloseFile', 'CloseGadgetList', 'CloseHelp', 'CloseLibrary', 'CloseNetworkConnection',
        +            'CloseNetworkServer', 'ClosePack', 'ClosePreferences', 'CloseProgram', 'CloseScreen', 'CloseSubMenu', 'CloseWindow',
        +            'ColorRequester', 'ComboBoxGadget', 'CompareMemory', 'CompareMemoryString', 'ConnectionID', 'ConsoleColor',
        +            'ConsoleCursor', 'ConsoleError', 'ConsoleLocate', 'ConsoleTitle', 'ContainerGadget', 'CopyDirectory', 'CopyEntity',
        +            'CopyFile', 'CopyImage', 'CopyLight', 'CopyMaterial', 'CopyMemory', 'CopyMemoryString', 'CopyMesh', 'CopySprite',
        +            'CopyTexture', 'CopyXMLNode', 'Cos', 'CountBillboards', 'CountGadgetItems', 'CountLibraryFunctions', 'CountList',
        +            'CountMaterialLayers', 'CountProgramParameters', 'CountRenderedTriangles', 'CountString', 'CRC32Fingerprint',
        +            'CreateBillboardGroup', 'CreateCamera', 'CreateDirectory', 'CreateEntity', 'CreateFile', 'CreateGadgetList',
        +            'CreateImage', 'CreateLight', 'CreateMaterial', 'CreateMenu', 'CreateMesh', 'CreateMutex', 'CreateNetworkServer',
        +            'CreatePack', 'CreatePalette', 'CreateParticleEmitter', 'CreatePopupMenu', 'CreatePreferences', 'CreateSprite',
        +            'CreateSprite3D', 'CreateStatusBar', 'CreateTerrain', 'CreateTexture', 'CreateThread', 'CreateToolBar', 'CreateXML',
        +            'CreateXMLNode', 'DatabaseColumnName', 'DatabaseColumns', 'DatabaseColumnType', 'DatabaseDriverDescription',
        +            'DatabaseDriverName', 'DatabaseError', 'DatabaseQuery', 'DatabaseUpdate', 'Date', 'DateGadget', 'Day', 'DayOfWeek',
        +            'DayOfYear', 'DefaultPrinter', 'Defined', 'Delay', 'DeleteDirectory', 'DeleteElement', 'DeleteFile', 'DeleteXMLNode',
        +            'DESFingerprint', 'DesktopDepth', 'DesktopFrequency', 'DesktopHeight', 'DesktopMouseX', 'DesktopMouseY', 'DesktopName',
        +            'DesktopWidth', 'DirectoryEntryAttributes', 'DirectoryEntryDate', 'DirectoryEntryName', 'DirectoryEntrySize',
        +            'DirectoryEntryType', 'DisableGadget', 'DisableMaterialLighting', 'DisableMenuItem', 'DisableToolBarButton', 'DisableWindow',
        +            'DisASMCommand', 'DisplayAlphaSprite', 'DisplayPalette', 'DisplayPopupMenu', 'DisplayRGBFilter', 'DisplayShadowSprite',
        +            'DisplaySolidSprite', 'DisplaySprite', 'DisplaySprite3D', 'DisplayTranslucentSprite', 'DisplayTransparentSprite', 'DragFiles',
        +            'DragImage', 'DragOSFormats', 'DragPrivate', 'DragText', 'DrawAlphaImage', 'DrawImage', 'DrawingBuffer',
        +            'DrawingBufferPitch', 'DrawingBufferPixelFormat', 'DrawingFont', 'DrawingMode', 'DrawText', 'EditorGadget',
        +            'egrid_AddColumn', 'egrid_AddRows', 'egrid_AppendCells', 'egrid_ClearRows', 'egrid_CopyCells',
        +            'egrid_CreateCellCallback', 'egrid_CreateGrid', 'egrid_DeleteCells', 'egrid_FastDeleteCells', 'egrid_FreeGrid',
        +            'egrid_GetCellSelection', 'egrid_GetCellText', 'egrid_GetColumnOrderArray', 'egrid_HasSelectedCellChanged', 'egrid_Height',
        +            'egrid_HideEdit', 'egrid_HideGrid', 'egrid_MakeCellVisible', 'egrid_NumberOfColumns', 'egrid_NumberOfRows',
        +            'egrid_PasteCells', 'egrid_Register', 'egrid_RemoveCellCallback', 'egrid_RemoveColumn', 'egrid_RemoveRow', 'egrid_Resize',
        +            'egrid_SelectCell', 'egrid_SelectedColumn', 'egrid_SelectedRow', 'egrid_SetCellSelection', 'egrid_SetCellText',
        +            'egrid_SetColumnOrderArray', 'egrid_SetHeaderFont', 'egrid_SetHeaderHeight', 'egrid_SetOption', 'egrid_Width', 'egrid_x',
        +            'egrid_y', 'EjectAudioCD', 'ElapsedMilliseconds', 'Ellipse', 'EnableGadgetDrop', 'EnableGraphicalConsole',
        +            'EnableWindowDrop', 'EnableWorldCollisions', 'EnableWorldPhysics', 'Engine3DFrameRate', 'EntityAngleX',
        +            'EntityAnimationLength', 'EntityLocate', 'EntityMaterial', 'EntityMesh', 'EntityPhysicBody', 'EntityRenderMode',
        +            'EntityX', 'EntityY', 'EntityZ', 'EnvironmentVariableName', 'EnvironmentVariableValue', 'Eof', 'EventClient',
        +            'EventDropAction', 'EventDropBuffer', 'EventDropFiles', 'EventDropImage', 'EventDropPrivate', 'EventDropSize',
        +            'EventDropText', 'EventDropType', 'EventDropX', 'EventDropY', 'EventGadget', 'EventlParam', 'EventMenu', 'EventServer',
        +            'EventType', 'EventWindow', 'EventwParam', 'ExamineDatabaseDrivers', 'ExamineDesktops', 'ExamineDirectory',
        +            'ExamineEnvironmentVariables', 'ExamineIPAddresses', 'ExamineJoystick', 'ExamineKeyboard', 'ExamineLibraryFunctions',
        +            'ExamineMouse', 'ExaminePreferenceGroups', 'ExaminePreferenceKeys', 'ExamineScreenModes', 'ExamineWorldCollisions',
        +            'ExamineXMLAttributes', 'ExplorerComboGadget', 'ExplorerListGadget', 'ExplorerTreeGadget', 'ExportXML',
        +            'ExportXMLSize', 'FileBuffersSize', 'FileID', 'FileSeek', 'FileSize', 'FillArea', 'FindString', 'FinishDirectory',
        +            'FirstDatabaseRow', 'FirstElement', 'FirstWorldCollisionEntity', 'FlipBuffers', 'FlushFileBuffers', 'Fog', 'FontID',
        +            'FontRequester', 'FormatDate', 'FormatXML', 'Frame3DGadget', 'FreeBillboardGroup', 'FreeCamera', 'FreeEntity',
        +            'FreeFont', 'FreeGadget', 'FreeImage', 'FreeLight', 'FreeMaterial', 'FreeMemory', 'FreeMenu', 'FreeMesh',
        +            'FreeModule', 'FreeMovie', 'FreeMutex', 'FreePalette', 'FreeParticleEmitter', 'FreeSound', 'FreeSprite',
        +            'FreeSprite3D', 'FreeStatusBar', 'FreeTexture', 'FreeToolBar', 'FreeXML', 'FrontColor', 'GadgetHeight', 'GadgetID',
        +            'GadgetItemID', 'GadgetToolTip', 'GadgetType', 'GadgetWidth', 'GadgetX', 'GadgetY', 'GetActiveGadget',
        +            'GetActiveWindow', 'GetClientIP', 'GetClientPort', 'GetClipboardImage', 'GetClipboardText', 'GetCurrentDirectory',
        +            'GetCurrentEIP', 'GetDatabaseDouble', 'GetDatabaseFloat', 'GetDatabaseLong', 'GetDatabaseQuad', 'GetDatabaseString',
        +            'GetDisASMString', 'GetEntityAnimationTime', 'GetEntityFriction', 'GetEntityMass', 'GetEnvironmentVariable',
        +            'GetErrorAddress', 'GetErrorCounter', 'GetErrorDescription', 'GetErrorDLL', 'GetErrorLineNR', 'GetErrorModuleName',
        +            'GetErrorNumber', 'GetErrorRegister', 'GetExtensionPart', 'GetFileAttributes', 'GetFileDate', 'GetFilePart', 'GetFunction',
        +            'GetFunctionEntry', 'GetGadgetAttribute', 'GetGadgetColor', 'GetGadgetData', 'GetGadgetFont',
        +            'GetGadgetItemAttribute', 'GetGadgetItemColor', 'GetGadgetItemData', 'GetGadgetItemState', 'GetGadgetItemText',
        +            'GetGadgetState', 'GetGadgetText', 'GetHomeDirectory', 'GetMenuItemState', 'GetMenuItemText', 'GetMenuTitleText',
        +            'GetModulePosition', 'GetModuleRow', 'GetPaletteColor', 'GetPathPart', 'GetTemporaryDirectory',
        +            'GetToolBarButtonState', 'GetWindowColor', 'GetWindowState', 'GetWindowTitle', 'GetXMLAttribute', 'GetXMLEncoding',
        +            'GetXMLNodeName', 'GetXMLNodeOffset', 'GetXMLNodeText', 'GetXMLStandalone', 'GoToEIP', 'GrabImage', 'GrabSprite',
        +            'Green', 'Hex', 'HexQ', 'HideBillboardGroup', 'HideEntity', 'HideGadget', 'HideLight', 'HideMenu', 'HideParticleEmitter',
        +            'HideWindow', 'Hostname', 'Hour', 'HyperLinkGadget', 'ImageDepth', 'ImageGadget', 'ImageHeight', 'ImageID',
        +            'ImageOutput', 'ImageWidth', 'InitAudioCD', 'InitEngine3D', 'InitJoystick', 'InitKeyboard', 'InitMouse', 'InitMovie',
        +            'InitNetwork', 'InitPalette', 'InitScintilla', 'InitSound', 'InitSprite', 'InitSprite3D', 'Inkey', 'Input', 'InputRequester',
        +            'InsertElement', 'Int', 'IntQ', 'IPAddressField', 'IPAddressGadget', 'IPString', 'IsBillboardGroup', 'IsCamera', 'IsDatabase',
        +            'IsDirectory', 'IsEntity', 'IsFile', 'IsFont', 'IsGadget', 'IsImage', 'IsLibrary', 'IsLight', 'IsMaterial', 'IsMenu', 'IsMesh',
        +            'IsModule', 'IsMovie', 'IsPalette', 'IsParticleEmitter', 'IsProgram', 'IsScreenActive', 'IsSound', 'IsSprite', 'IsSprite3D',
        +            'IsStatusBar', 'IsSysTrayIcon', 'IsTexture', 'IsThread', 'IsToolBar', 'IsWindow', 'IsXML', 'JoystickAxisX', 'JoystickAxisY',
        +            'JoystickButton', 'KeyboardInkey', 'KeyboardMode', 'KeyboardPushed', 'KeyboardReleased', 'KillProgram', 'KillThread',
        +            'LastElement', 'LCase', 'Left', 'Len', 'LibraryFunctionAddress', 'LibraryFunctionName', 'LibraryID', 'LightColor',
        +            'LightLocate', 'LightSpecularColor', 'Line', 'LineXY', 'ListIconGadget', 'ListIndex', 'ListViewGadget', 'LoadFont',
        +            'LoadImage', 'LoadMesh', 'LoadModule', 'LoadMovie', 'LoadPalette', 'LoadSound', 'LoadSprite', 'LoadTexture',
        +            'LoadWorld', 'LoadXML', 'Loc', 'LockMutex', 'Lof', 'Log', 'Log10', 'LSet', 'LTrim', 'MainXMLNode', 'MakeIPAddress',
        +            'MaterialAmbientColor', 'MaterialBlendingMode', 'MaterialDiffuseColor', 'MaterialFilteringMode', 'MaterialID',
        +            'MaterialShadingMode', 'MaterialSpecularColor', 'MD5FileFingerprint', 'MD5Fingerprint', 'MDIGadget', 'MemorySize',
        +            'MemoryStringLength', 'MenuBar', 'MenuHeight', 'MenuID', 'MenuItem', 'MenuTitle', 'MeshID', 'MessageRequester',
        +            'Mid', 'Minute', 'ModuleVolume', 'Month', 'MouseButton', 'MouseDeltaX', 'MouseDeltaY', 'MouseLocate', 'MouseWheel',
        +            'MouseX', 'MouseY', 'MoveBillboard', 'MoveBillboardGroup', 'MoveCamera', 'MoveEntity', 'MoveLight', 'MoveMemory',
        +            'MoveParticleEmitter', 'MoveXMLNode', 'MovieAudio', 'MovieHeight', 'MovieInfo', 'MovieLength', 'MovieSeek',
        +            'MovieStatus', 'MovieWidth', 'NetworkClientEvent', 'NetworkServerEvent', 'NewPrinterPage', 'NextDatabaseDriver',
        +            'NextDatabaseRow', 'NextDirectoryEntry', 'NextElement', 'NextEnvironmentVariable', 'NextIPAddress',
        +            'NextLibraryFunction', 'NextPackFile', 'NextPreferenceGroup', 'NextPreferenceKey', 'NextScreenMode',
        +            'NextSelectedFileName', 'NextWorldCollision', 'NextXMLAttribute', 'NextXMLNode', 'OffsetOf', 'OnErrorExit',
        +            'OnErrorGosub', 'OnErrorGoto', 'OnErrorResume', 'OpenComPort', 'OpenConsole', 'OpenDatabase',
        +            'OpenDatabaseRequester', 'OpenFile', 'OpenFileRequester', 'OpenGadgetList', 'OpenHelp', 'OpenLibrary',
        +            'OpenNetworkConnection', 'OpenPack', 'OpenPreferences', 'OpenScreen', 'OpenSubMenu', 'OpenWindow',
        +            'OpenWindowedScreen', 'OptionGadget', 'OSVersion', 'PackerCallback', 'PackFileSize', 'PackMemory', 'PanelGadget',
        +            'ParentXMLNode', 'Parse3DScripts', 'ParseDate', 'ParticleColorFader', 'ParticleColorRange', 'ParticleEmissionRate',
        +            'ParticleEmitterDirection', 'ParticleEmitterLocate', 'ParticleEmitterX', 'ParticleEmitterY', 'ParticleEmitterZ',
        +            'ParticleMaterial', 'ParticleSize', 'ParticleTimeToLive', 'ParticleVelocity', 'PathRequester', 'PauseAudioCD',
        +            'PauseMovie', 'PauseThread', 'PeekB', 'PeekC', 'PeekD', 'PeekF', 'PeekL', 'PeekQ', 'PeekS', 'PeekW', 'PlayAudioCD',
        +            'PlayModule', 'PlayMovie', 'PlaySound', 'Plot', 'Point', 'PokeB', 'PokeC', 'PokeD', 'PokeF', 'PokeL', 'PokeQ', 'PokeS',
        +            'PokeW', 'Pow', 'PreferenceComment', 'PreferenceGroup', 'PreferenceGroupName', 'PreferenceKeyName',
        +            'PreferenceKeyValue', 'PreviousDatabaseRow', 'PreviousElement', 'PreviousXMLNode', 'Print', 'PrinterOutput',
        +            'PrinterPageHeight', 'PrinterPageWidth', 'PrintN', 'PrintRequester', 'ProgramExitCode', 'ProgramFilename',
        +            'ProgramID', 'ProgramParameter', 'ProgramRunning', 'ProgressBarGadget', 'Random', 'RandomSeed', 'RawKey',
        +            'ReadByte', 'ReadCharacter', 'ReadConsoleData', 'ReadData', 'ReadDouble', 'ReadFile', 'ReadFloat', 'ReadLong',
        +            'ReadPreferenceDouble', 'ReadPreferenceFloat', 'ReadPreferenceLong', 'ReadPreferenceQuad',
        +            'ReadPreferenceString', 'ReadProgramData', 'ReadProgramError', 'ReadProgramString', 'ReadQuad', 'ReadString',
        +            'ReadStringFormat', 'ReadWord', 'ReAllocateMemory', 'ReceiveNetworkData', 'ReceiveNetworkFile', 'Red',
        +            'Reg_DeleteEmptyKey', 'Reg_DeleteKey', 'Reg_DeleteValue', 'Reg_GetErrorMsg', 'Reg_GetErrorNr',
        +            'Reg_GetValueTyp', 'Reg_ListSubKey', 'Reg_ListSubValue', 'Reg_ReadBinary', 'Reg_ReadExpandString',
        +            'Reg_ReadLong', 'Reg_ReadMultiLineString', 'Reg_ReadQuad', 'Reg_ReadString', 'Reg_WriteBinary',
        +            'Reg_WriteExpandString', 'Reg_WriteLong', 'Reg_WriteMultiLineString', 'Reg_WriteQuad', 'Reg_WriteString',
        +            'ReleaseMouse', 'RemoveBillboard', 'RemoveEnvironmentVariable', 'RemoveGadgetColumn', 'RemoveGadgetItem',
        +            'RemoveKeyboardShortcut', 'RemoveMaterialLayer', 'RemovePreferenceGroup', 'RemovePreferenceKey',
        +            'RemoveString', 'RemoveSysTrayIcon', 'RemoveXMLAttribute', 'RenameFile', 'RenderMovieFrame', 'RenderWorld',
        +            'ReplaceString', 'ResetList', 'ResizeBillboard', 'ResizeEntity', 'ResizeGadget', 'ResizeImage', 'ResizeMovie',
        +            'ResizeParticleEmitter', 'ResizeWindow', 'ResolveXMLAttributeName', 'ResolveXMLNodeName', 'ResumeAudioCD',
        +            'ResumeMovie', 'ResumeThread', 'RGB', 'Right', 'RootXMLNode', 'RotateBillboardGroup', 'RotateCamera',
        +            'RotateEntity', 'RotateMaterial', 'RotateSprite3D', 'Round', 'RSet', 'RTrim', 'RunProgram', 'SaveFileRequester',
        +            'SaveImage', 'SaveSprite', 'SaveXML', 'ScaleEntity', 'ScaleMaterial', 'ScintillaGadget', 'ScintillaSendMessage',
        +            'ScreenID', 'ScreenModeDepth', 'ScreenModeHeight', 'ScreenModeRefreshRate', 'ScreenModeWidth',
        +            'ScreenOutput', 'ScrollAreaGadget', 'ScrollBarGadget', 'ScrollMaterial', 'Second', 'SecondWorldCollisionEntity',
        +            'SelectedFilePattern', 'SelectedFontColor', 'SelectedFontName', 'SelectedFontSize', 'SelectedFontStyle',
        +            'SelectElement', 'SendNetworkData', 'SendNetworkFile', 'SendNetworkString', 'SetActiveGadget',
        +            'SetActiveWindow', 'SetClipboardImage', 'SetClipboardText', 'SetCurrentDirectory', 'SetDragCallback',
        +            'SetDropCallback', 'SetEntityAnimationTime', 'SetEntityFriction', 'SetEntityMass', 'SetEnvironmentVariable',
        +            'SetErrorNumber', 'SetFileAttributes', 'SetFileDate', 'SetFrameRate', 'SetGadgetAttribute', 'SetGadgetColor',
        +            'SetGadgetData', 'SetGadgetFont', 'SetGadgetItemAttribute', 'SetGadgetItemColor', 'SetGadgetItemData',
        +            'SetGadgetItemState', 'SetGadgetItemText', 'SetGadgetState', 'SetGadgetText', 'SetMenuItemState',
        +            'SetMenuItemText', 'SetMenuTitleText', 'SetMeshData', 'SetModulePosition', 'SetPaletteColor', 'SetRefreshRate',
        +            'SetToolBarButtonState', 'SetWindowCallback', 'SetWindowColor', 'SetWindowState', 'SetWindowTitle',
        +            'SetXMLAttribute', 'SetXMLEncoding', 'SetXMLNodeName', 'SetXMLNodeOffset', 'SetXMLNodeText',
        +            'SetXMLStandalone', 'Sin', 'SizeOf', 'SkyBox', 'SkyDome', 'SmartWindowRefresh', 'SortArray', 'SortList',
        +            'SortStructuredArray', 'SortStructuredList', 'SoundFrequency', 'SoundPan', 'SoundVolume', 'Space',
        +            'SpinGadget', 'SplitterGadget', 'Sprite3DBlendingMode', 'Sprite3DQuality', 'SpriteCollision', 'SpriteDepth',
        +            'SpriteHeight', 'SpriteID', 'SpriteOutput', 'SpritePixelCollision', 'SpriteWidth', 'Sqr', 'Start3D', 'StartDrawing',
        +            'StartPrinting', 'StartSpecialFX', 'StatusBarHeight', 'StatusBarIcon', 'StatusBarID', 'StatusBarText',
        +            'StickyWindow', 'Stop3D', 'StopAudioCD', 'StopDrawing', 'StopModule', 'StopMovie', 'StopPrinting',
        +            'StopSound', 'StopSpecialFX', 'Str', 'StrD', 'StrF', 'StringByteLength', 'StringField', 'StringGadget', 'StrQ',
        +            'StrU', 'Subsystem', 'SwapElements', 'SysTrayIconToolTip', 'Tan', 'TerrainHeight', 'TextGadget', 'TextHeight',
        +            'TextureHeight', 'TextureID', 'TextureOutput', 'TextureWidth', 'TextWidth', 'ThreadID', 'ThreadPriority',
        +            'ToolBarHeight', 'ToolBarID', 'ToolBarImageButton', 'ToolBarSeparator', 'ToolBarStandardButton',
        +            'ToolBarToolTip', 'TrackBarGadget', 'TransformSprite3D', 'TransparentSpriteColor', 'TreeGadget', 'Trim',
        +            'TruncateFile', 'TryLockMutex', 'UCase', 'UnlockMutex', 'UnpackMemory', 'UseAudioCD', 'UseBuffer',
        +            'UseGadgetList', 'UseJPEGImageDecoder', 'UseJPEGImageEncoder', 'UseODBCDatabase', 'UseOGGSoundDecoder',
        +            'UsePNGImageDecoder', 'UsePNGImageEncoder', 'UseTGAImageDecoder', 'UseTIFFImageDecoder', 'Val', 'ValD',
        +            'ValF', 'ValQ', 'WaitProgram', 'WaitThread', 'WaitWindowEvent', 'WebGadget', 'WebGadgetPath', 'WindowEvent',
        +            'WindowHeight', 'WindowID', 'WindowMouseX', 'WindowMouseY', 'WindowOutput', 'WindowWidth', 'WindowX',
        +            'WindowY', 'WorldGravity', 'WorldShadows', 'WriteByte', 'WriteCharacter', 'WriteConsoleData', 'WriteData',
        +            'WriteDouble', 'WriteFloat', 'WriteLong', 'WritePreferenceDouble', 'WritePreferenceFloat', 'WritePreferenceLong',
        +            'WritePreferenceQuad', 'WritePreferenceString', 'WriteProgramData', 'WriteProgramString', 'WriteProgramStringN',
        +            'WriteQuad', 'WriteString', 'WriteStringFormat', 'WriteStringN', 'WriteWord', 'XMLAttributeName', 'XMLAttributeValue',
        +            'XMLChildCount', 'XMLError', 'XMLErrorLine', 'XMLErrorPosition', 'XMLNodeFromID', 'XMLNodeFromPath', 'XMLNodePath',
        +            'XMLNodeType', 'XMLStatus', 'Year', 'ZoomSprite3D'
        +            ),
        +        3 => array(
        +            // some ASM instructions
        +            'AAA', 'AAD', 'AAM', 'AAS', 'ADC', 'ADD', 'AND', 'ARPL', 'BOUND', 'BSF', 'BSR', 'BSWAP', 'BT', 'BTC', 'BTR',
        +            'BTS', 'CALL', 'CBW', 'CDQ', 'CLC', 'CLD', 'CLI', 'CLTS', 'CMC', 'CMP', 'CMPS', 'CMPXCHG', 'CWD', 'CWDE',
        +            'DAA', 'DAS', 'DB', 'DD', 'DEC', 'DIV', 'DW', 'ENTER', 'ESC', 'F2XM1', 'FABS', 'FADD', 'FCHS', 'FCLEX',
        +            'FCOM', 'FDIV', 'FDIVR', 'FFREE', 'FINCSTP', 'FINIT', 'FLD', 'FLD1', 'FLDCW', 'FMUL', 'FNOP', 'FPATAN',
        +            'FPREM', 'FRNDINT', 'FSAVE', 'FSCALE', 'FSETPM', 'FSIN', 'FSQRT', 'FST', 'FSTENV', 'FSTSW', 'FSUB',
        +            'FSUBR', 'FTST', 'FUCOM', 'FWAIT', 'FXAM', 'FXCH', 'FXTRACT', 'FYL2X', 'FYL2XP1', 'HLT', 'IDIV', 'IMUL',
        +            'IN', 'INC', 'INS', 'INT', 'INTO', 'INVLPG', 'IRET', 'IRETD', 'JA', 'JAE', 'JB', 'JBE', 'JC', 'JCXZ', 'JE', 'JECXZ',
        +            'JG', 'JGE', 'JL', 'JLE', 'JMP', 'JNA', 'JNAE', 'JNB', 'JNBE', 'JNC', 'JNE', 'JNG', 'JNGE', 'JNL', 'JNLE', 'JNO', 'JNP',
        +            'JNS', 'JNZ', 'JO', 'JP', 'JPE', 'JPO', 'JS', 'JZ', 'LAHF', 'LAR', 'LDS', 'LEA', 'LEAVE', 'LES', 'LFS', 'LGDT', 'LGS',
        +            'LIDT', 'LLDT', 'LMSW', 'LOCK', 'LODS', 'LOOP', 'LOOPE', 'LOOPNE', 'LOOPNZ', 'LOOPZ', 'LSL', 'LSS', 'LTR',
        +            'MOV', 'MOVS', 'MOVSX', 'MOVZX', 'MUL', 'NEG', 'NOP', 'NOT', 'OR', 'OUT', 'OUTS', 'POP', 'POPA', 'POPAD',
        +            'POPF', 'POPFD', 'PUSH', 'PUSHA', 'PUSHAD', 'PUSHF', 'PUSHFD', 'RCL', 'RCR', 'REP', 'REPE', 'REPNE',
        +            'REPNZ', 'REPZ', 'RET', 'RETF', 'ROL', 'ROR', 'SAHF', 'SAL', 'SAR', 'SBB', 'SCAS', 'SETAE', 'SETB', 'SETBE',
        +            'SETC', 'SETE', 'SETG', 'SETGE', 'SETL', 'SETLE', 'SETNA', 'SETNAE', 'SETNB', 'SETNC', 'SETNE', 'SETNG',
        +            'SETNGE', 'SETNL', 'SETNLE', 'SETNO', 'SETNP', 'SETNS', 'SETNZ', 'SETO', 'SETP', 'SETPE', 'SETPO',
        +            'SETS', 'SETZ', 'SGDT', 'SHL', 'SHLD', 'SHR', 'SHRD', 'SIDT', 'SLDT', 'SMSW', 'STC', 'STD', 'STI',
        +            'STOS', 'STR', 'SUB', 'TEST', 'VERR', 'VERW', 'WAIT', 'WBINVD', 'XCHG', 'XLAT', 'XLATB', 'XOR'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '+', '-', '*', '/', '\\', '>', '<', '=', '<=', '>=', '&', '|', '!', '~', '<>', '>>', '<<', '%'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000066; font-weight: bold;',
        +            2 => 'color: #0000ff;',
        +            3 => 'color: #000fff;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #ff0000; font-style: italic;',
        +            'MULTI' => 'color: #ff0000; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000066;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #CC0000;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000066;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => '',
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '\\'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => false,
        +        1 => false
        +        )
        +);
        diff --git a/includes/geshi/pycon.php b/includes/geshi/pycon.php
        new file mode 100644
        index 0000000..f6fd44b
        --- /dev/null
        +++ b/includes/geshi/pycon.php
        @@ -0,0 +1,62 @@
        +>>).*?$(?:\n\.\.\..*?$)*($)/m';
        +$language_data['HIGHLIGHT_STRICT_BLOCK'][-1] = true;
        +
        +$language_data['STYLES']['SCRIPT'][-1] = 'color: #222222;';
        +
        +if(!isset($language_data['COMMENT_REGEXP'])) {
        +    $language_data['COMMENT_REGEXP'] = array();
        +}
        +
        +$language_data['COMMENT_REGEXP'][-1] = '/(?:^|\A\s)(?:>>>|\.\.\.)/m';
        +$language_data['STYLES']['COMMENTS'][-1] = 'color: #444444;';
        diff --git a/includes/geshi/pys60.php b/includes/geshi/pys60.php
        new file mode 100644
        index 0000000..9b83c74
        --- /dev/null
        +++ b/includes/geshi/pys60.php
        @@ -0,0 +1,271 @@
        + 'Python for S60',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"', "'", '"""',"'''",'""','""'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +
        +        /*
        +         ** Set 1: reserved words
        +         ** http://python.org/doc/current/ref/keywords.html
        +         */
        +        1 => array(
        +            'and', 'del', 'for', 'is', 'raise', 'assert', 'elif', 'from', 'lambda', 'return', 'break',
        +            'else', 'global', 'not', 'try', 'class', 'except', 'if', 'or', 'while', 'continue', 'exec',
        +            'import', 'pass', 'yield', 'def', 'finally', 'in', 'print', "<<", ">>", "as"
        +            ),
        +
        +        /*
        +         ** Set 2: builtins
        +         ** http://python.org/doc/current/lib/built-in-funcs.html
        +         */
        +        2 => array(
        +            '__import__', 'abs', 'basestring', 'bool', 'callable', 'chr', 'classmethod', 'cmp',
        +            'compile', 'complex', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile',
        +            'file', 'filter', 'float', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help',
        +            'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'list', 'locals',
        +            'long', 'map', 'max', 'min', 'object', 'oct', 'open', 'ord', 'pow', 'property', 'range',
        +            'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice',
        +            'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode',
        +            'vars', 'xrange', 'zip',
        +            // Built-in constants: http://python.org/doc/current/lib/node35.html
        +            'False', 'True', 'None', 'NotImplemented', 'Ellipsis',
        +            // Built-in Exceptions: http://python.org/doc/current/lib/module-exceptions.html
        +            'Exception', 'StandardError', 'ArithmeticError', 'LookupError', 'EnvironmentError',
        +            'AssertionError', 'AttributeError', 'EOFError', 'FloatingPointError', 'IOError',
        +            'ImportError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'MemoryError', 'NameError',
        +            'NotImplementedError', 'OSError', 'OverflowError', 'ReferenceError', 'RuntimeError',
        +            'StopIteration', 'SyntaxError', 'SystemError', 'SystemExit', 'TypeError',
        +            'UnboundlocalError', 'UnicodeError', 'UnicodeEncodeError', 'UnicodeDecodeError',
        +            'UnicodeTranslateError', 'ValueError', 'WindowsError', 'ZeroDivisionError', 'Warning',
        +            'UserWarning', 'DeprecationWarning', 'PendingDeprecationWarning', 'SyntaxWarning',
        +            'RuntimeWarning', 'FutureWarning',
        +            //Symbian Errors
        +            "SymbianError", "KernelError",
        +            // self: this is a common python convention (but not a reserved word)
        +            'self'
        +            ),
        +
        +        /*
        +         ** Set 3: standard library
        +         ** http://python.org/doc/current/lib/modindex.html
        +         */
        +        3 => array(
        +            '__builtin__', '__future__', '__main__', '_winreg', 'aifc', 'AL', 'al', 'anydbm',
        +            'array', 'asynchat', 'asyncore', 'atexit', 'audioop', 'base64', 'BaseHTTPServer',
        +            'Bastion', 'binascii', 'binhex', 'bisect', 'bsddb', 'bz2', 'calendar', 'cd', 'cgi',
        +            'CGIHTTPServer', 'cgitb', 'chunk', 'cmath', 'cmd', 'code', 'codecs', 'codeop',
        +            'collections', 'colorsys', 'commands', 'compileall', 'compiler',
        +            'ConfigParser', 'Cookie', 'cookielib', 'copy', 'copy_reg', 'cPickle', 'crypt',
        +            'cStringIO', 'csv', 'curses', 'datetime', 'dbhash', 'dbm', 'decimal', 'DEVICE',
        +            'difflib', 'dircache', 'dis', 'distutils', 'dl', 'doctest', 'DocXMLRPCServer', 'dumbdbm',
        +            'dummy_thread', 'dummy_threading', 'email', 'encodings', 'errno', 'exceptions', 'fcntl',
        +            'filecmp', 'fileinput', 'FL', 'fl', 'flp', 'fm', 'fnmatch', 'formatter', 'fpectl',
        +            'fpformat', 'ftplib', 'gc', 'gdbm', 'getopt', 'getpass', 'gettext', 'GL', 'gl', 'glob',
        +            'gopherlib', 'grp', 'gzip', 'heapq', 'hmac', 'hotshot', 'htmlentitydefs', 'htmllib',
        +            'HTMLParser', 'httplib', 'imageop', 'imaplib', 'imgfile', 'imghdr', 'imp', 'inspect',
        +            'itertools', 'jpeg', 'keyword', 'linecache', 'locale', 'logging', 'mailbox', 'mailcap',
        +            'marshal', 'math', 'md5', 'mhlib', 'mimetools', 'mimetypes', 'MimeWriter', 'mimify',
        +            'mmap', 'msvcrt', 'multifile', 'mutex', 'netrc', 'new', 'nis', 'nntplib', 'operator',
        +            'optparse', 'os', 'ossaudiodev', 'parser', 'pdb', 'pickle', 'pickletools', 'pipes',
        +            'pkgutil', 'platform', 'popen2', 'poplib', 'posix', 'posixfile', 'pprint', 'profile',
        +            'pstats', 'pty', 'pwd', 'py_compile', 'pyclbr', 'pydoc', 'Queue', 'quopri', 'random',
        +            're', 'readline', 'resource', 'rexec', 'rgbimg', 'rlcompleter',
        +            'robotparser', 'sched', 'ScrolledText', 'select', 'sets', 'sgmllib', 'sha', 'shelve',
        +            'shlex', 'shutil', 'signal', 'SimpleHTTPServer', 'SimpleXMLRPCServer', 'site', 'smtpd',
        +            'smtplib', 'sndhdr', 'socket', 'SocketServer', 'stat', 'statcache', 'statvfs', 'string',
        +            'StringIO', 'stringprep', 'struct', 'subprocess', 'sunau', 'SUNAUDIODEV', 'sunaudiodev',
        +            'symbol', 'sys', 'syslog', 'tabnanny', 'tarfile', 'telnetlib', 'tempfile', 'termios',
        +            'test', 'textwrap', 'thread', 'threading', 'time', 'timeit', 'Tix', 'Tkinter', 'token',
        +            'tokenize', 'traceback', 'tty', 'turtle', 'types', 'unicodedata', 'unittest', 'urllib2',
        +            'urllib', 'urlparse', 'user', 'UserDict', 'UserList', 'UserString', 'uu', 'warnings',
        +            'wave', 'weakref', 'webbrowser', 'whichdb', 'whrandom', 'winsound', 'xdrlib', 'xml',
        +            'xmllib', 'xmlrpclib', 'zipfile', 'zipimport', 'zlib', "os.path", "sys.path",
        +
        +            //PythonS60 Standard Library
        +            //http://pys60.garage.maemo.org/doc/s60/
        +            //These are the standard modules in the archive
        +
        +            "appuifw", "globalui","e32", "telephone", "aosocket", "btsocket",
        +            "sysinfo","camera","graphics","keycapture","key_codes","topwindow", "gles",
        +            "glcanvas","sensor", "audio","messaging", "inbox","location","positioning",
        +            "contacts", "e32calendar", "e32db","e32dbm","logs","scriptext",
        +            "series60_console",
        +
        +            //These are external but very often usable modules
        +
        +            "appuifw2","ArchetypeUI","elementtree","lightblue",
        +            "activaprofile","Adjustor","akntextutils","aosocketnativenew",
        +            "appreciation","applicationmanager","appswitch","atextit","bt_teror","btconsole",
        +            "btswitch","cElementTree","cenrep","cerealizer","cl_gui","clipboard",
        +            "clipboard_CHN","debugger","decompile2",
        +            "dir_iter","download","easydb","ECenrep","Edit_find","efeature","elocation","envy",
        +            "EProfile","erestart","error","esyagent","Execwap","exprofile","fastcamera",
        +            "feature","fgimage","filebrowser","firmware","fold","fonts","fraction","FTP",
        +            "ftplibnew","fy_manager","fy_menu","gles_utils","gps_location","hack",
        +            "HTML2TXT","iapconnect","icon_image","image_decoder",
        +            "ini","interactive_console","inting","key_modifiers","key_tricks","keypress",
        +            "landmarks","lite_fm","locationacq","locationrequestor",
        +            "logo","markupbase","mbm","mbm2","minidb","miniinfo","MISC",
        +            "misty","Msg","ntpath","odict","Paintbox","pathinfo","pexif","pickcolor",
        +            "powlite_fm","powlite_fm2","powlite_fm3","powlite_fme","prgbar","prodb",
        +            "profileengine","progressbar","progressbartw","progressnotes",
        +            "ProgressBarTW2","proshivka","py_upload","pyConnection","PyFileMan",
        +            "pykeylock","PyPyc","pyqq","pys60crypto","pys60usb","rfc822",
        +            "RUSOS","scmk","scrollpage","SISFIELDS","SISFIELD","sisfile",
        +            "SISINFO","sisreader","Sistools","smidi","smsreject","speechy","sre_compile",
        +            "sre_constants","sre_parse","sre","sysagent","syslang","TextMan",
        +            "textrenderer","TextWrap","topwind","tsocket","uikludge","uikludges","uitricks",
        +            "walkfile","wallpaper","wfm_lite",
        +            "wif_keys","wif","window","wlanmgmt","wlantools","wt_color","wt_requesters",
        +            "zhkey",
        +
        +            //These are recent additions
        +            "miffile"
        +            ),
        +
        +        /*
        +         ** Set 4: special methods
        +         ** http://python.org/doc/current/ref/specialnames.html
        +         */
        +        4 => array(
        +            ///*
        +            //// Iterator types: http://python.org/doc/current/lib/typeiter.html
        +            //'__iter__', 'next',
        +            //// String types: http://python.org/doc/current/lib/string-methods.html
        +            //'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs',
        +            //'find', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle',
        +            //'isupper', 'join', 'ljust', 'lower', 'lstrip', 'replace', 'rfind', 'rindex', 'rjust',
        +            //'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title',
        +            //'translate', 'upper', 'zfill',
        +            // */
        +
        +            // Basic customization: http://python.org/doc/current/ref/customization.html
        +            '__new__', '__init__', '__del__', '__repr__', '__str__',
        +            '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__cmp__', '__rcmp__',
        +            '__hash__', '__nonzero__', '__unicode__', '__dict__',
        +            // Attribute access: http://python.org/doc/current/ref/attribute-access.html
        +            '__setattr__', '__delattr__', '__getattr__', '__getattribute__', '__get__', '__set__',
        +            '__delete__', '__slots__',
        +            // Class creation, callable objects
        +            '__metaclass__', '__call__',
        +            // Container types: http://python.org/doc/current/ref/sequence-types.html
        +            '__len__', '__getitem__', '__setitem__', '__delitem__', '__iter__', '__contains__',
        +            '__getslice__', '__setslice__', '__delslice__',
        +            // Numeric types: http://python.org/doc/current/ref/numeric-types.html
        +            '__abs__','__add__','__and__','__coerce__','__div__','__divmod__','__float__',
        +            '__hex__','__iadd__','__isub__','__imod__','__idiv__','__ipow__','__iand__',
        +            '__ior__','__ixor__', '__ilshift__','__irshift__','__invert__','__int__',
        +            '__long__','__lshift__',
        +            '__mod__','__mul__','__neg__','__oct__','__or__','__pos__','__pow__',
        +            '__radd__','__rdiv__','__rdivmod__','__rmod__','__rpow__','__rlshift__','__rrshift__',
        +            '__rshift__','__rsub__','__rmul__','__rand__','__rxor__','__ror__',
        +            '__sub__','__xor__'
        +            )
        +
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', '>', '?', '`'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => true,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #006000;font-weight:bold;',   // Reserved
        +            2 => 'color: #800950;font-size:105%',                  // Built-ins + self
        +            3 => 'color: #003399;font-size:106%',                  // Standard lib
        +            4 => 'color: #0000cd;'                  // Special methods
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style:italic;font-size:92%',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #930; font-weight: bold;font-size:105%'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: maroon;font-size:102%;padding:2px'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #666;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #2356F8;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: navy;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66ccFF;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/python.php b/includes/geshi/python.php
        new file mode 100644
        index 0000000..2c52484
        --- /dev/null
        +++ b/includes/geshi/python.php
        @@ -0,0 +1,242 @@
        + 'Python',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    //Longest quotemarks ALWAYS first
        +    'QUOTEMARKS' => array('"""', "'''", '"', "'"),
        +    'ESCAPE_CHAR' => '\\',
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_BIN_PREFIX_0B |
        +        GESHI_NUMBER_OCT_PREFIX_0O | GESHI_NUMBER_HEX_PREFIX |
        +        GESHI_NUMBER_FLT_NONSCI | GESHI_NUMBER_FLT_NONSCI_F |
        +        GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +
        +        /*
        +        ** Set 1: reserved words
        +        ** http://python.org/doc/current/ref/keywords.html
        +        */
        +        1 => array(
        +            'and', 'del', 'for', 'is', 'raise', 'assert', 'elif', 'from', 'lambda', 'return', 'break',
        +            'else', 'global', 'not', 'try', 'class', 'except', 'if', 'or', 'while', 'continue', 'exec',
        +            'import', 'pass', 'yield', 'def', 'finally', 'in', 'print', 'with', 'as', 'nonlocal'
        +            ),
        +
        +        /*
        +        ** Set 2: builtins
        +        ** http://python.org/doc/current/lib/built-in-funcs.html
        +        */
        +        2 => array(
        +            '__import__', 'abs', 'basestring', 'bool', 'callable', 'chr', 'classmethod', 'cmp',
        +            'compile', 'complex', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile',
        +            'file', 'filter', 'float', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help',
        +            'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'list', 'locals',
        +            'long', 'map', 'max', 'min', 'object', 'oct', 'open', 'ord', 'pow', 'property', 'range',
        +            'raw_input', 'reduce', 'reload', 'reversed', 'round', 'set', 'setattr', 'slice',
        +            'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode',
        +            'vars', 'xrange', 'zip',
        +            // Built-in constants: http://python.org/doc/current/lib/node35.html
        +            'False', 'True', 'None', 'NotImplemented', 'Ellipsis',
        +            // Built-in Exceptions: http://python.org/doc/current/lib/module-exceptions.html
        +            'Exception', 'StandardError', 'ArithmeticError', 'LookupError', 'EnvironmentError',
        +            'AssertionError', 'AttributeError', 'EOFError', 'FloatingPointError', 'IOError',
        +            'ImportError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'MemoryError', 'NameError',
        +            'NotImplementedError', 'OSError', 'OverflowError', 'ReferenceError', 'RuntimeError',
        +            'StopIteration', 'SyntaxError', 'SystemError', 'SystemExit', 'TypeError',
        +            'UnboundlocalError', 'UnicodeError', 'UnicodeEncodeError', 'UnicodeDecodeError',
        +            'UnicodeTranslateError', 'ValueError', 'WindowsError', 'ZeroDivisionError', 'Warning',
        +            'UserWarning', 'DeprecationWarning', 'PendingDeprecationWarning', 'SyntaxWarning',
        +            'RuntimeWarning', 'FutureWarning',
        +            // self: this is a common python convention (but not a reserved word)
        +            'self',
        +            // other
        +            'any', 'all'
        +            ),
        +
        +        /*
        +        ** Set 3: standard library
        +        ** http://python.org/doc/current/lib/modindex.html
        +        */
        +        3 => array(
        +            '__builtin__', '__future__', '__main__', '_winreg', 'aifc', 'AL', 'al', 'anydbm',
        +            'array', 'asynchat', 'asyncore', 'atexit', 'audioop', 'base64', 'BaseHTTPServer',
        +            'Bastion', 'binascii', 'binhex', 'bisect', 'bsddb', 'bz2', 'calendar', 'cd', 'cgi',
        +            'CGIHTTPServer', 'cgitb', 'chunk', 'cmath', 'cmd', 'code', 'codecs', 'codeop',
        +            'collections', 'colorsys', 'commands', 'compileall', 'compiler',
        +            'ConfigParser', 'Cookie', 'cookielib', 'copy', 'copy_reg', 'cPickle', 'crypt',
        +            'cStringIO', 'csv', 'curses', 'datetime', 'dbhash', 'dbm', 'decimal', 'DEVICE',
        +            'difflib', 'dircache', 'dis', 'distutils', 'dl', 'doctest', 'DocXMLRPCServer', 'dumbdbm',
        +            'dummy_thread', 'dummy_threading', 'email', 'encodings', 'errno', 'exceptions', 'fcntl',
        +            'filecmp', 'fileinput', 'FL', 'fl', 'flp', 'fm', 'fnmatch', 'formatter', 'fpectl',
        +            'fpformat', 'ftplib', 'gc', 'gdbm', 'getopt', 'getpass', 'gettext', 'GL', 'gl', 'glob',
        +            'gopherlib', 'grp', 'gzip', 'heapq', 'hmac', 'hotshot', 'htmlentitydefs', 'htmllib',
        +            'HTMLParser', 'httplib', 'imageop', 'imaplib', 'imgfile', 'imghdr', 'imp', 'inspect',
        +            'itertools', 'jpeg', 'keyword', 'linecache', 'locale', 'logging', 'mailbox', 'mailcap',
        +            'marshal', 'math', 'md5', 'mhlib', 'mimetools', 'mimetypes', 'MimeWriter', 'mimify',
        +            'mmap', 'msvcrt', 'multifile', 'mutex', 'netrc', 'new', 'nis', 'nntplib', 'operator',
        +            'optparse', 'os', 'ossaudiodev', 'parser', 'pdb', 'pickle', 'pickletools', 'pipes',
        +            'pkgutil', 'platform', 'popen2', 'poplib', 'posix', 'posixfile', 'pprint', 'profile',
        +            'pstats', 'pty', 'pwd', 'py_compile', 'pyclbr', 'pydoc', 'Queue', 'quopri', 'random',
        +            're', 'readline', 'repr', 'resource', 'rexec', 'rfc822', 'rgbimg', 'rlcompleter',
        +            'robotparser', 'sched', 'ScrolledText', 'select', 'sets', 'sgmllib', 'sha', 'shelve',
        +            'shlex', 'shutil', 'signal', 'SimpleHTTPServer', 'SimpleXMLRPCServer', 'site', 'smtpd',
        +            'smtplib', 'sndhdr', 'socket', 'SocketServer', 'stat', 'statcache', 'statvfs', 'string',
        +            'StringIO', 'stringprep', 'struct', 'subprocess', 'sunau', 'SUNAUDIODEV', 'sunaudiodev',
        +            'symbol', 'sys', 'syslog', 'tabnanny', 'tarfile', 'telnetlib', 'tempfile', 'termios',
        +            'test', 'textwrap', 'thread', 'threading', 'time', 'timeit', 'Tix', 'Tkinter', 'token',
        +            'tokenize', 'traceback', 'tty', 'turtle', 'types', 'unicodedata', 'unittest', 'urllib2',
        +            'urllib', 'urlparse', 'user', 'UserDict', 'UserList', 'UserString', 'uu', 'warnings',
        +            'wave', 'weakref', 'webbrowser', 'whichdb', 'whrandom', 'winsound', 'xdrlib', 'xml',
        +            'xmllib', 'xmlrpclib', 'zipfile', 'zipimport', 'zlib',
        +            // Python 3.0
        +            'bytes', 'bytearray'
        +            ),
        +
        +        /*
        +        ** Set 4: special methods
        +        ** http://python.org/doc/current/ref/specialnames.html
        +        */
        +        4 => array(
        +            /*
        +            // Iterator types: http://python.org/doc/current/lib/typeiter.html
        +            '__iter__', 'next',
        +            // String types: http://python.org/doc/current/lib/string-methods.html
        +            'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs',
        +            'find', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle',
        +            'isupper', 'join', 'ljust', 'lower', 'lstrip', 'replace', 'rfind', 'rindex', 'rjust',
        +            'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title',
        +            'translate', 'upper', 'zfill',
        +            */
        +            // Basic customization: http://python.org/doc/current/ref/customization.html
        +            '__new__', '__init__', '__del__', '__repr__', '__str__',
        +            '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__cmp__', '__rcmp__',
        +            '__hash__', '__nonzero__', '__unicode__', '__dict__',
        +            // Attribute access: http://python.org/doc/current/ref/attribute-access.html
        +            '__setattr__', '__delattr__', '__getattr__', '__getattribute__', '__get__', '__set__',
        +            '__delete__', '__slots__',
        +            // Class creation, callable objects
        +            '__metaclass__', '__call__',
        +            // Container types: http://python.org/doc/current/ref/sequence-types.html
        +            '__len__', '__getitem__', '__setitem__', '__delitem__', '__iter__', '__contains__',
        +            '__getslice__', '__setslice__', '__delslice__',
        +            // Numeric types: http://python.org/doc/current/ref/numeric-types.html
        +            '__abs__','__add__','__and__','__coerce__','__div__','__divmod__','__float__',
        +            '__hex__','__iadd__','__isub__','__imod__','__idiv__','__ipow__','__iand__',
        +            '__ior__','__ixor__', '__ilshift__','__irshift__','__invert__','__int__',
        +            '__long__','__lshift__',
        +            '__mod__','__mul__','__neg__','__oct__','__or__','__pos__','__pow__',
        +            '__radd__','__rdiv__','__rdivmod__','__rmod__','__rpow__','__rlshift__','__rrshift__',
        +            '__rshift__','__rsub__','__rmul__','__rand__','__rxor__','__ror__',
        +            '__sub__','__xor__'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '<', '>', '=', '!', '<=', '>=',             //·comparison·operators
        +        '~', '@',                                   //·unary·operators
        +        ';', ','                                    //·statement·separator
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #ff7700;font-weight:bold;',    // Reserved
        +            2 => 'color: #008000;',                        // Built-ins + self
        +            3 => 'color: #dc143c;',                        // Standard lib
        +            4 => 'color: #0000cd;'                        // Special methods
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: black;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #483d8b;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #ff4500;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: black;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/q.php b/includes/geshi/q.php
        new file mode 100644
        index 0000000..5840b58
        --- /dev/null
        +++ b/includes/geshi/q.php
        @@ -0,0 +1,147 @@
        +)
        + * -------------------------
        + *  - Fix the handling of single line comments
        + *
        + *************************************************************************************
        + *
        + *     This file is part of GeSHi.
        + *
        + *   GeSHi is free software; you can redistribute it and/or modify
        + *   it under the terms of the GNU General Public License as published by
        + *   the Free Software Foundation; either version 2 of the License, or
        + *   (at your option) any later version.
        + *
        + *   GeSHi is distributed in the hope that it will be useful,
        + *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + *   GNU General Public License for more details.
        + *
        + *   You should have received a copy of the GNU General Public License
        + *   along with GeSHi; if not, write to the Free Software
        + *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        + *
        + ************************************************************************************/
        +
        +$language_data = array (
        +    'LANG_NAME'                 => 'q/kdb+',
        +    'COMMENT_SINGLE'            => array(1 => '//'),
        +    'COMMENT_MULTI'             => array(),
        +    'COMMENT_REGEXP'            => array(
        +        2 => '/ \s\/.*/',         # This needs to get fixed up, since it won't catch some instances
        +        # Multi line comments (Moved from REGEXPS)
        +        3 => '/^\/\s*?\n.*?\n\\\s*?\n/smi'
        +        ),
        +    'CASE_KEYWORDS'             => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS'                => array('"'),
        +    'ESCAPE_CHAR'               => '\\',
        +    'OOLANG'                    => false,
        +    'OBJECT_SPLITTERS'          => array(),
        +    'STRICT_MODE_APPLIES'       => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS'         => array(),
        +    'HIGHLIGHT_STRICT_BLOCK'    => array(),
        +    'TAB_WIDTH'                 => 4,
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'abs', 'acos', 'all', 'and', 'any', 'asc', 'asin', 'asof', 'atan', 'attr', 'avg', 'avgs', 'bin', 'ceiling',
        +            'cols', 'cor', 'cos', 'count', 'cov', 'cross', 'cut', 'deltas', 'desc', 'dev', 'differ', 'distinct',
        +            'div', 'each', 'enlist', 'eval', 'except', 'exec', 'exit', 'exp', 'fills', 'first', 'flip', 'floor',
        +            'fkeys', 'get', 'getenv', 'group', 'gtime', 'hclose', 'hcount', 'hdel', 'hopen', 'hsym', 'iasc', 'idesc',
        +            'in', 'insert', 'inter', 'inv', 'joins', 'key', 'keys', 'last', 'like', 'load', 'log', 'lower',
        +            'lsq', 'ltime', 'ltrim', 'mavg', 'max', 'maxs', 'mcount', 'md5', 'mdev', 'med', 'meta', 'min', 'mins',
        +            'mmax', 'mmin', 'mmu', 'mod', 'msum', 'neg', 'next', 'not', 'null', 'or', 'over', 'parse', 'peach',
        +            'plist', 'prd', 'prds', 'prev', 'rand', 'rank', 'ratios', 'raze', 'read0', 'read1', 'reciprocal',
        +            'reverse', 'rload', 'rotate', 'rsave', 'rtrim', 'save', 'scan', 'set', 'setenv', 'show', 'signum',
        +            'sin', 'sqrt', 'ss', 'ssr', 'string', 'sublist', 'sum', 'sums', 'sv', 'system', 'tables', 'tan', 'til', 'trim',
        +            'txf', 'type', 'ungroup', 'union', 'upper', 'upsert', 'value', 'var', 'view', 'views', 'vs',
        +            'wavg', 'within', 'wsum', 'xasc', 'xbar', 'xcol', 'xcols', 'xdesc', 'xexp', 'xgroup', 'xkey',
        +            'xlog', 'xprev', 'xrank'
        +            ),
        +        # kdb database template keywords
        +        2 => array(
        +            'aj', 'by', 'delete', 'fby', 'from', 'ij', 'lj', 'pj', 'select', 'uj', 'update', 'where', 'wj',
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '?', '#', ',', '_', '@', '.', '^', '~', '$', '!', '\\', '\\', '/:', '\:', "'", "':", '::', '+', '-', '%', '*'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000099; font-weight: bold;',
        +            2 => 'color: #009900; font-weight: bold;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            2 => 'color: #666666; font-style: italic;',
        +            3 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            1 => 'color: #000099; font-weight: bold;',
        +            2 => 'color: #660099; font-weight: bold;',
        +            3 => 'color: #660099; font-weight: bold;',
        +            4 => 'color: #660099; font-weight: bold;',
        +            5 => 'color: #006699; font-weight: bold;',
        +            'HARD' => '',
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #990000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #0000dd;',
        +            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',
        +            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
        +            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #202020;',
        +            2 => 'color: #202020;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(
        +            2   => 'color: #999900;',
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'REGEXPS' => array(
        +        # Symbols
        +        2 => '`[^\s"]*',
        +        ),
        +    'URLS'  => array(
        +        1   => '',
        +        2   => '',
        +        ),
        +);
        diff --git a/includes/geshi/qbasic.php b/includes/geshi/qbasic.php
        new file mode 100644
        index 0000000..f4f898e
        --- /dev/null
        +++ b/includes/geshi/qbasic.php
        @@ -0,0 +1,160 @@
        + 'QBasic/QuickBASIC',
        +    'COMMENT_SINGLE' => array(1 => "'"),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(
        +        //Single-Line Comments using REM command
        +        2 => "/\bREM.*?$/i",
        +        //Line numbers
        +        3 => "/^\s*\d+/im"
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_FLT_NONSCI |
        +        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT |
        +        GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'DO', 'LOOP', 'WHILE', 'WEND', 'THEN', 'ELSE', 'ELSEIF', 'IF',
        +            'FOR', 'TO', 'NEXT', 'STEP', 'GOTO', 'GOSUB', 'CALL', 'CALLS',
        +            'SUB', 'FUNCTION', 'RETURN', 'RESUME', 'SELECT', 'CASE', 'UNTIL'
        +            ),
        +        3 => array(
        +            'ABS', 'ABSOLUTE', 'ACCESS', 'ALIAS', 'AND', 'ANY', 'APPEND', 'AS', 'ASC', 'ATN',
        +            'BASE', 'BEEP', 'BINARY', 'BLOAD', 'BSAVE', 'BYVAL',
        +            'CDBL', 'CDECL', 'CHAIN', 'CHDIR', 'CHR$', 'CINT', 'CIRCLE', 'CLEAR',
        +            'CLNG', 'CLOSE', 'CLS', 'COM', 'COMMAND$', 'COMMON', 'CONST', 'COS', 'CSNG',
        +            'CSRLIN', 'CVD', 'CVDMBF', 'CVI', 'CVL', 'CVS', 'CVSMDF', 'DATA', 'DATE$',
        +            'DECLARE', 'DEF', 'FN', 'SEG', 'DEFDBL', 'DEFINT', 'DEFLNG', 'DEFSNG', 'DEFSTR',
        +            'DIM', 'DOUBLE', 'DRAW', 'END', 'ENVIRON', 'ENVIRON$', 'EOF', 'EQV', 'ERASE',
        +            'ERDEV', 'ERDEV$', 'ERL', 'ERR', 'ERROR', 'EXIT', 'EXP', 'FIELD', 'FILEATTR',
        +            'FILES', 'FIX', 'FRE', 'FREEFILE', 'GET', 'HEX$', 'IMP', 'INKEY$',
        +            'INP', 'INPUT', 'INPUT$', 'INSTR', 'INT', 'INTEGER', 'IOCTL', 'IOCTL$', 'IS',
        +            'KEY', 'KILL', 'LBOUND', 'LCASE$', 'LEFT$', 'LEN', 'LET', 'LINE', 'LIST', 'LOC',
        +            'LOCAL', 'LOCATE', 'LOCK', 'LOF', 'LOG', 'LONG', 'LPOS', 'LPRINT',
        +            'LSET', 'LTRIM$', 'MID$', 'MKD$', 'MKDIR', 'MKDMBF$', 'MKI$', 'MKL$',
        +            'MKS$', 'MKSMBF$', 'MOD', 'NAME', 'NOT', 'OCT$', 'OFF', 'ON', 'PEN', 'PLAY',
        +            'OPEN', 'OPTION', 'OR', 'OUT', 'OUTPUT',
        +            'PAINT', 'PALETTE', 'PCOPY', 'PEEK', 'PMAP', 'POINT', 'POKE', 'POS', 'PRESET',
        +            'PRINT', 'PSET', 'PUT', 'RANDOM', 'RANDOMIZE', 'READ', 'REDIM', 'RESET',
        +            'RESTORE', 'RIGHT$', 'RMDIR', 'RND', 'RSET', 'RTRIM$', 'RUN', 'SADD', 'SCREEN',
        +            'SEEK', 'SETMEM', 'SGN', 'SHARED', 'SHELL', 'SIGNAL', 'SIN', 'SINGLE', 'SLEEP',
        +            'SOUND', 'SPACE$', 'SPC', 'SQR', 'STATIC', 'STICK', 'STOP', 'STR$', 'STRIG',
        +            'STRING', 'STRING$', 'SWAP', 'SYSTEM', 'TAB', 'TAN', 'TIME$', 'TIMER',
        +            'TROFF', 'TRON', 'TYPE', 'UBOUND', 'UCASE$', 'UEVENT', 'UNLOCK', 'USING', 'VAL',
        +            'VARPTR', 'VARPTR$', 'VARSEG', 'VIEW', 'WAIT', 'WIDTH', 'WINDOW', 'WRITE', 'XOR'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', ',', '+', '-', '*', '/', '=', '<', '>', '^'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        3 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #a1a100;',
        +            3 => 'color: #000066;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080;',
        +            2 => 'color: #808080;',
        +            3 => 'color: #8080C0;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            1 => 'color: #cc66cc;',
        +            2 => 'color: #339933;'
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        3 => 'http://www.qbasicnews.com/qboho/qck{FNAMEL}.shtml'
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        1 => '&(?:H[0-9a-fA-F]+|O[0-7]+)(?!\w)',
        +        2 => '#[0-9]+(?!\w)'
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 8
        +);
        diff --git a/includes/geshi/qml.php b/includes/geshi/qml.php
        new file mode 100644
        index 0000000..6835721
        --- /dev/null
        +++ b/includes/geshi/qml.php
        @@ -0,0 +1,351 @@
        +
        + * Copyright: (c) 2012-2014 J-P Nurmi 
        + * Release Version: 1.0.8.12
        + * Date Started: 2012/08/19
        + *
        + * QML language file for GeSHi.
        + *
        + * CHANGES
        + * -------
        + * 2014/06/29 (1.0.8.12)
        + *  - Synced QML types from Qt 5.3:
        + *    http://qt-project.org/doc/qt-5/modules-qml.html
        + * 2012/08/19
        + *  - First version based on Qt 4
        + *
        + * TODO (updated 2014/06/29)
        + * -------------------------
        + *
        + *************************************************************************************
        + *
        + *     This file is part of GeSHi.
        + *
        + *   GeSHi is free software; you can redistribute it and/or modify
        + *   it under the terms of the GNU General Public License as published by
        + *   the Free Software Foundation; either version 2 of the License, or
        + *   (at your option) any later version.
        + *
        + *   GeSHi is distributed in the hope that it will be useful,
        + *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + *   GNU General Public License for more details.
        + *
        + *   You should have received a copy of the GNU General Public License
        + *   along with GeSHi; if not, write to the Free Software
        + *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        + *
        + ************************************************************************************/
        +
        +$language_data = array (
        +    'LANG_NAME' => 'QML',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        // comments
        +        2 => "/(?<=[\\s^])(s|tr|y)\\/(?!\*)(?!\s)(?:\\\\.|(?!\n)[^\\/\\\\])+(? "/([a-z][\\w\\.]*)(?=:)/",
        +        // TODO: property name (fixed length lookbehind assertion?)
        +        4 => "/(?<=property\\s+\\w+\\s+)(\\w+)/"
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'as','alias','break','case','catch','continue','const','debugger',
        +            'default','delete','do','else','finally','for','function',
        +            'if','import','in','instanceof','new','on','public','property',
        +            'readonly','return','signal','switch','this','throw','try',
        +            'typeof','while','with'
        +            ),
        +        2 => array(
        +            'action','bool','color','date','double','enumeration','font',
        +            'int','list','matrix4x4','point','quaternion','real','rect',
        +            'size','string','time','url','var','variant','vector2d',
        +            'vector3d','vector4d','void'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qtbluetooth-qmlmodule.html
        +        3 => array(
        +            'BluetoothDiscoveryModel','BluetoothService','BluetoothSocket'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qtgraphicaleffects-qmlmodule.html
        +        4 => array(
        +            'Blend','BrightnessContrast','ColorOverlay','Colorize',
        +            'ConicalGradient','Desaturate','DirectionalBlur','Displace',
        +            'DropShadow','FastBlur','GammaAdjust','GaussianBlur','Glow',
        +            'HueSaturation','InnerShadow','LevelAdjust','LinearGradient',
        +            'MaskedBlur','OpacityMask','RadialBlur','RadialGradient',
        +            'RectangularGlow','RecursiveBlur','ThresholdMask','ZoomBlur'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qtaudioengine-qmlmodule.html
        +        5 => array(
        +            'AttenuationModelLinear','AttenuationModelInverse','AudioCategory',
        +            'AudioEngine','AudioListener','AudioSample','PlayVariation',
        +            'Sound','SoundInstance'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qtmultimedia-qmlmodule.html
        +        6 => array(
        +            'Video','Audio','MediaPlayer','Camera','CameraCapture',
        +            'CameraExposure','CameraFlash','CameraFocus','CameraImageProcessing',
        +            'CameraRecorder','Radio','RadioData','Torch','SoundEffect','VideoOutput'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qtnfc-qmlmodule.html
        +        7 => array(
        +            'NdefFilter','NdefMimeRecord','NdefTextRecord','NdefUriRecord',
        +            'NearField','NdefRecord'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qtpositioning-qmlmodule.html
        +        8 => array(
        +            'QtPositioning','CoordinateAnimation','Position','PositionSource',
        +            'Address','Location'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qtqml-models-qmlmodule.html
        +        9 => array(
        +            'DelegateModel','DelegateModelGroup','ListModel','ListElement','ObjectModel'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qtqml-qmlmodule.html
        +        10 => array(
        +            'Binding','Component','Connections','Date','Instantiator',
        +            'Locale','Number','Qt','QtObject','String','Timer'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qt-labs-folderlistmodel-qmlmodule.html
        +        11 => array(
        +            'FolderListModel'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qtquick-localstorage-qmlmodule.html
        +        12 => array(
        +            'openDatabaseSync'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qt-labs-settings-qmlmodule.html
        +        13 => array(
        +            'Settings'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qtquick-window-qmlmodule.html
        +        14 => array(
        +            'Screen','Window','CloseEvent'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qtquick-xmllistmodel-qmlmodule.html
        +        15 => array(
        +            'XmlRole','XmlListModel'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qtquick-particles-qmlmodule.html
        +        16 => array(
        +            'Age','AngleDirection','CumulativeDirection','CustomParticle',
        +            'Direction','EllipseShape','Friction','Gravity','GroupGoal',
        +            'ImageParticle','ItemParticle','LineShape','MaskShape','Affector',
        +            'Emitter','Shape','ParticleGroup','ParticlePainter','ParticleSystem',
        +            'Attractor','PointDirection','RectangleShape','SpriteGoal',
        +            'TargetDirection','TrailEmitter','Turbulence','Particle','Wander'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qttest-qmlmodule.html
        +        17 => array(
        +            'SignalSpy','TestCase'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qtquick-qmltypereference.html
        +        18 => array(
        +            'Item','Rectangle','Image','BorderImage','AnimatedImage','AnimatedSprite',
        +            'SpriteSequence','Text','Accessible','Gradient','GradientStop','SystemPalette',
        +            'Sprite','FontLoader','Repeater','Loader','Visual Item Transformations','Transform',
        +            'Scale','Rotation','Translate','MouseArea','Keys','KeyNavigation','FocusScope',
        +            'Flickable','PinchArea','MultiPointTouchArea','Drag','DropArea','TextInput',
        +            'TextEdit','IntValidator','DoubleValidator','RegExpValidator','TouchPoint',
        +            'PinchEvent','WheelEvent','MouseEvent','KeyEvent','DragEvent','Positioner',
        +            'Column','Row','Grid','Flow','LayoutMirroring','State','PropertyChanges',
        +            'StateGroup','StateChangeScript','ParentChange','AnchorChanges','Transition',
        +            'ViewTransition','SequentialAnimation','ParallelAnimation','Behavior','PropertyAction',
        +            'PauseAnimation','SmoothedAnimation','SpringAnimation','ScriptAction','PropertyAnimation',
        +            'NumberAnimation','Vector3dAnimation','ColorAnimation','RotationAnimation','ParentAnimation',
        +            'AnchorAnimation','PathAnimation','XAnimator','YAnimator','ScaleAnimator','RotationAnimator',
        +            'OpacityAnimator','UniformAnimator','Lower-level Animation Types','PathInterpolator',
        +            'AnimationController','Path','PathLine','PathQuad','PathCubic','PathArc','PathCurve',
        +            'PathSvg','PathAttribute','PathPercent','VisualItemModel','VisualDataModel','VisualDataGroup',
        +            'ListView','GridView','PathView','Package','Flipable','ShaderEffect','ShaderEffectSource',
        +            'GridMesh','WorkerScript','Canvas','Context2D','CanvasGradient','CanvasPixelArray',
        +            'CanvasImageData','TextMetrics',
        +            ),
        +        // http://qt-project.org/doc/qt-5/qtquick-controls-qmlmodule.html
        +        19 => array(
        +            'ApplicationWindow','BusyIndicator','Button','Calendar',
        +            'CheckBox','ComboBox','GroupBox','Label','Menu','MenuBar',
        +            'ProgressBar','RadioButton','ScrollView','Slider','SpinBox',
        +            'SplitView','StackView','StackViewDelegate','StatusBar',
        +            'Switch','Tab','TabView','TableView','TableViewColumn',
        +            'TextArea','TextField','ToolBar','ToolButton','Action',
        +            'ExclusiveGroup','MenuSeparator','MenuItem','Stack'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qtquick-dialogs-qmlmodule.html
        +        20 => array(
        +            'Dialog','ColorDialog','FileDialog','FontDialog','MessageDialog'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qtquick-layouts-qmlmodule.html
        +        21 => array(
        +            'Layout','RowLayout','ColumnLayout','GridLayout'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qtsensors-qmlmodule.html
        +        22 => array(
        +            'Accelerometer','AccelerometerReading','Altimeter','AltimeterReading',
        +            'AmbientLightReading','AmbientLightSensor','AmbientTemperatureReading',
        +            'AmbientTemperatureSensor','Compass','CompassReading','Gyroscope',
        +            'GyroscopeReading','HolsterReading','HolsterSensor','IRProximityReading',
        +            'IRProximitySensor','LightReading','LightSensor','Magnetometer',
        +            'MagnetometerReading','OrientationReading','OrientationSensor',
        +            'PressureReading','PressureSensor','ProximityReading','ProximitySensor',
        +            'RotationReading','RotationSensor','SensorGesture','SensorGlobal',
        +            'SensorReading','TapReading','TapSensor','TiltReading','TiltSensor'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qtwinextras-qmlmodule.html
        +        23 => array(
        +            'JumpListDestination','JumpListLink','JumpListSeparator','DwmFeatures',
        +            'JumpList','JumpListCategory','TaskbarButton','ThumbnailToolBar','ThumbnailToolButton'
        +            ),
        +        // http://qt-project.org/doc/qt-5/qtwebkit-qmlmodule.html
        +        24 => array(
        +            'WebView','WebLoadRequest'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}',
        +        '+', '-', '*', '/', '%',
        +        '!', '@', '&', '|', '^',
        +        '<', '>', '=',
        +        ',', ';', '?', ':'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true,
        +        8 => true,
        +        9 => true,
        +        10 => true,
        +        11 => true,
        +        12 => true,
        +        13 => true,
        +        14 => true,
        +        15 => true,
        +        16 => true,
        +        17 => true,
        +        18 => true,
        +        19 => true,
        +        20 => true,
        +        21 => true,
        +        22 => true,
        +        23 => true,
        +        24 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #808041;',
        +            2 => 'color: #808041;',
        +            3 => 'color: #800780;',
        +            4 => 'color: #800780;',
        +            5 => 'color: #800780;',
        +            6 => 'color: #800780;',
        +            7 => 'color: #800780;',
        +            8 => 'color: #800780;',
        +            9 => 'color: #800780;',
        +            10 => 'color: #800780;',
        +            11 => 'color: #800780;',
        +            12 => 'color: #800780;',
        +            13 => 'color: #800780;',
        +            14 => 'color: #800780;',
        +            15 => 'color: #800780;',
        +            16 => 'color: #800780;',
        +            17 => 'color: #800780;',
        +            18 => 'color: #800780;',
        +            19 => 'color: #800780;',
        +            20 => 'color: #800780;',
        +            21 => 'color: #800780;',
        +            22 => 'color: #800780;',
        +            23 => 'color: #800780;',
        +            24 => 'color: #800780;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008025;',
        +            2 => 'color: #008025;',
        +            3 => 'color: #970009;',
        +            4 => 'color: #970009;',
        +            'MULTI' => 'color: #008025;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #008025;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #000000;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => '',
        +            2 => '',
        +            3 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => 'http://qt-project.org/doc/qt-5/qml-qtbluetooth-{FNAMEL}.html',
        +        4 => 'http://qt-project.org/doc/qt-5/qml-qtgraphicaleffects-{FNAMEL}.html',
        +        5 => 'http://qt-project.org/doc/qt-5/qml-qtaudioengine-{FNAMEL}.html',
        +        6 => 'http://qt-project.org/doc/qt-5/qml-qtmultimedia-{FNAMEL}.html',
        +        7 => 'http://qt-project.org/doc/qt-5/qml-qtnfc-{FNAMEL}.html',
        +        8 => 'http://qt-project.org/doc/qt-5/qml-qtpositioning-{FNAMEL}.html',
        +        9 => 'http://qt-project.org/doc/qt-5/qml-qtqml-models-{FNAMEL}.html',
        +        10 => 'http://qt-project.org/doc/qt-5/qml-qtqml-{FNAMEL}.html',
        +        11 => 'http://qt-project.org/doc/qt-5/qml-qt-labs-folderlistmodel-{FNAMEL}.html',
        +        12 => 'http://qt-project.org/doc/qt-5/qtquick-localstorage-qmlmodule.html',
        +        13 => 'http://qt-project.org/doc/qt-5/qml-qt-labs-settings-{FNAMEL}.html',
        +        14 => 'http://qt-project.org/doc/qt-5/qml-qtquick-window-{FNAMEL}.html',
        +        15 => 'http://qt-project.org/doc/qt-5/qml-qtquick-xmllistmodel-{FNAMEL}.html',
        +        16 => 'http://qt-project.org/doc/qt-5/qml-qtquick-particles-{FNAMEL}.html',
        +        17 => 'http://qt-project.org/doc/qt-5/qml-qttest-{FNAMEL}.html',
        +        18 => 'http://qt-project.org/doc/qt-5/qml-qtquick-{FNAMEL}.html',
        +        19 => 'http://qt-project.org/doc/qt-5/qml-qtquick-controls-{FNAMEL}.html',
        +        20 => 'http://qt-project.org/doc/qt-5/qml-qtquick-dialogs-{FNAMEL}.html',
        +        21 => 'http://qt-project.org/doc/qt-5/qml-qtquick-layouts-{FNAMEL}.html',
        +        22 => 'http://qt-project.org/doc/qt-5/qml-qtsensors-{FNAMEL}.html',
        +        23 => 'http://qt-project.org/doc/qt-5/qml-qtwinextras-{FNAMEL}.html',
        +        24 => 'http://qt-project.org/doc/qt-5/qml-qtwebkit-{FNAMEL}.html'
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
        +    'SCRIPT_DELIMITERS' => array(
        +        0 => array(
        +            ''
        +            ),
        +        1 => array(
        +            ''
        +            )
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => true,
        +        1 => true
        +        )
        +);
        diff --git a/includes/geshi/racket.php b/includes/geshi/racket.php
        new file mode 100644
        index 0000000..09d6bb8
        --- /dev/null
        +++ b/includes/geshi/racket.php
        @@ -0,0 +1,964 @@
        + 'Racket',
        +    'COMMENT_SINGLE' => array(
        +        1 => ';',
        +        ),
        +    'COMMENT_MULTI' => array(
        +        '#|' => '|#',
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"',
        +        ),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'abort-current-continuation', 'abs', 'absolute-path?', 'acos', 'add1',
        +            'alarm-evt', 'always-evt', 'andmap', 'angle', 'append',
        +            'arithmetic-shift', 'arity-at-least-value', 'arity-at-least?',
        +            'asin', 'assf', 'assoc', 'assq', 'assv', 'atan', 'banner',
        +            'bitwise-and', 'bitwise-bit-field', 'bitwise-bit-set?',
        +            'bitwise-ior', 'bitwise-not', 'bitwise-xor', 'boolean?',
        +            'bound-identifier=?', 'box', 'box-cas!', 'box-immutable', 'box?',
        +            'break-enabled', 'break-thread', 'build-list', 'build-path',
        +            'build-path/convention-type', 'build-string', 'build-vector',
        +            'byte-pregexp', 'byte-pregexp?', 'byte-ready?', 'byte-regexp',
        +            'byte-regexp?', 'byte?', 'bytes', 'bytes>?', 'bytes<?',
        +            'bytes->immutable-bytes', 'bytes->list', 'bytes->path',
        +            'bytes->path-element', 'bytes->string/latin-1',
        +            'bytes->string/locale', 'bytes->string/utf-8',
        +            'bytes-append', 'bytes-close-converter', 'bytes-convert',
        +            'bytes-convert-end', 'bytes-converter?', 'bytes-copy',
        +            'bytes-copy!', 'bytes-fill!', 'bytes-length',
        +            'bytes-open-converter', 'bytes-ref', 'bytes-set!',
        +            'bytes-utf-8-index', 'bytes-utf-8-length', 'bytes-utf-8-ref',
        +            'bytes=?', 'bytes?', 'caaaar', 'caaadr', 'caaar', 'caadar',
        +            'caaddr', 'caadr', 'caar', 'cadaar', 'cadadr', 'cadar', 'caddar',
        +            'cadddr', 'caddr', 'cadr', 'call-in-nested-thread',
        +            'call-with-break-parameterization',
        +            'call-with-composable-continuation',
        +            'call-with-continuation-barrier', 'call-with-continuation-prompt',
        +            'call-with-current-continuation', 'call-with-escape-continuation',
        +            'call-with-exception-handler',
        +            'call-with-immediate-continuation-mark',
        +            'call-with-parameterization', 'call-with-semaphore',
        +            'call-with-semaphore/enable-break', 'call-with-values', 'call/cc',
        +            'call/ec', 'car', 'cdaaar', 'cdaadr', 'cdaar', 'cdadar', 'cdaddr',
        +            'cdadr', 'cdar', 'cddaar', 'cddadr', 'cddar', 'cdddar', 'cddddr',
        +            'cdddr', 'cddr', 'cdr', 'ceiling', 'channel-get', 'channel-put',
        +            'channel-put-evt', 'channel-put-evt?', 'channel-try-get',
        +            'channel?', 'chaperone-box', 'chaperone-continuation-mark-key',
        +            'chaperone-evt', 'chaperone-hash', 'chaperone-of?',
        +            'chaperone-procedure', 'chaperone-prompt-tag', 'chaperone-struct',
        +            'chaperone-struct-type', 'chaperone-vector', 'chaperone?',
        +            'char>=?', 'char>?', 'char<=?', 'char<?',
        +            'char->integer', 'char-alphabetic?', 'char-blank?',
        +            'char-ci>=?', 'char-ci>?', 'char-ci<=?', 'char-ci<?',
        +            'char-ci=?', 'char-downcase', 'char-foldcase',
        +            'char-general-category', 'char-graphic?', 'char-iso-control?',
        +            'char-lower-case?', 'char-numeric?', 'char-punctuation?',
        +            'char-ready?', 'char-symbolic?', 'char-title-case?',
        +            'char-titlecase', 'char-upcase', 'char-upper-case?',
        +            'char-utf-8-length', 'char-whitespace?', 'char=?', 'char?',
        +            'check-duplicate-identifier',
        +            'checked-procedure-check-and-extract', 'choice-evt',
        +            'cleanse-path', 'close-input-port', 'close-output-port',
        +            'collect-garbage', 'collection-file-path', 'collection-path',
        +            'compile', 'compile-allow-set!-undefined',
        +            'compile-context-preservation-enabled',
        +            'compile-enforce-module-constants', 'compile-syntax',
        +            'compiled-expression?', 'compiled-module-expression?',
        +            'complete-path?', 'complex?', 'compose', 'compose1', 'cons',
        +            'continuation-mark-key?', 'continuation-mark-set->context',
        +            'continuation-mark-set->list',
        +            'continuation-mark-set->list*', 'continuation-mark-set-first',
        +            'continuation-mark-set?', 'continuation-marks',
        +            'continuation-prompt-available?', 'continuation-prompt-tag?',
        +            'continuation?', 'copy-file', 'cos',
        +            'current-break-parameterization', 'current-code-inspector',
        +            'current-command-line-arguments', 'current-compile',
        +            'current-compiled-file-roots', 'current-continuation-marks',
        +            'current-custodian', 'current-directory', 'current-drive',
        +            'current-error-port', 'current-eval',
        +            'current-evt-pseudo-random-generator', 'current-gc-milliseconds',
        +            'current-get-interaction-input-port',
        +            'current-inexact-milliseconds', 'current-input-port',
        +            'current-inspector', 'current-library-collection-paths',
        +            'current-load', 'current-load-extension',
        +            'current-load-relative-directory', 'current-load/use-compiled',
        +            'current-locale', 'current-logger', 'current-memory-use',
        +            'current-milliseconds', 'current-module-declare-name',
        +            'current-module-declare-source', 'current-module-name-resolver',
        +            'current-namespace', 'current-output-port',
        +            'current-parameterization', 'current-preserved-thread-cell-values',
        +            'current-print', 'current-process-milliseconds',
        +            'current-prompt-read', 'current-pseudo-random-generator',
        +            'current-read-interaction', 'current-reader-guard',
        +            'current-readtable', 'current-seconds', 'current-security-guard',
        +            'current-subprocess-custodian-mode', 'current-thread',
        +            'current-thread-group', 'current-thread-initial-stack-size',
        +            'current-write-relative-directory', 'custodian-box-value',
        +            'custodian-box?', 'custodian-limit-memory',
        +            'custodian-managed-list', 'custodian-memory-accounting-available?',
        +            'custodian-require-memory', 'custodian-shutdown-all', 'custodian?',
        +            'custom-print-quotable-accessor', 'custom-print-quotable?',
        +            'custom-write-accessor', 'custom-write?', 'date*-nanosecond',
        +            'date*-time-zone-name', 'date*?', 'date-day', 'date-dst?',
        +            'date-hour', 'date-minute', 'date-month', 'date-second',
        +            'date-time-zone-offset', 'date-week-day', 'date-year',
        +            'date-year-day', 'date?', 'datum->syntax',
        +            'datum-intern-literal', 'default-continuation-prompt-tag',
        +            'delete-directory', 'delete-file', 'denominator',
        +            'directory-exists?', 'directory-list', 'display', 'displayln',
        +            'double-flonum?', 'dump-memory-stats', 'dynamic-require',
        +            'dynamic-require-for-syntax', 'dynamic-wind', 'eof', 'eof-object?',
        +            'ephemeron-value', 'ephemeron?', 'eprintf', 'eq-hash-code', 'eq?',
        +            'equal-hash-code', 'equal-secondary-hash-code', 'equal?',
        +            'equal?/recur', 'eqv-hash-code', 'eqv?', 'error',
        +            'error-display-handler', 'error-escape-handler',
        +            'error-print-context-length', 'error-print-source-location',
        +            'error-print-width', 'error-value->string-handler', 'eval',
        +            'eval-jit-enabled', 'eval-syntax', 'even?', 'evt?',
        +            'exact->inexact', 'exact-integer?',
        +            'exact-nonnegative-integer?', 'exact-positive-integer?', 'exact?',
        +            'executable-yield-handler', 'exit', 'exit-handler',
        +            'exn-continuation-marks', 'exn-message', 'exn:break-continuation',
        +            'exn:break:hang-up?', 'exn:break:terminate?', 'exn:break?',
        +            'exn:fail:contract:arity?', 'exn:fail:contract:continuation?',
        +            'exn:fail:contract:divide-by-zero?',
        +            'exn:fail:contract:non-fixnum-result?',
        +            'exn:fail:contract:variable-id', 'exn:fail:contract:variable?',
        +            'exn:fail:contract?', 'exn:fail:filesystem:errno-errno',
        +            'exn:fail:filesystem:errno?', 'exn:fail:filesystem:exists?',
        +            'exn:fail:filesystem:version?', 'exn:fail:filesystem?',
        +            'exn:fail:network:errno-errno', 'exn:fail:network:errno?',
        +            'exn:fail:network?', 'exn:fail:out-of-memory?',
        +            'exn:fail:read-srclocs', 'exn:fail:read:eof?',
        +            'exn:fail:read:non-char?', 'exn:fail:read?',
        +            'exn:fail:syntax-exprs', 'exn:fail:syntax:unbound?',
        +            'exn:fail:syntax?', 'exn:fail:unsupported?', 'exn:fail:user?',
        +            'exn:fail?', 'exn:srclocs-accessor', 'exn:srclocs?', 'exn?', 'exp',
        +            'expand', 'expand-once', 'expand-syntax', 'expand-syntax-once',
        +            'expand-syntax-to-top-form', 'expand-to-top-form',
        +            'expand-user-path', 'expt', 'file-exists?',
        +            'file-or-directory-identity', 'file-or-directory-modify-seconds',
        +            'file-or-directory-permissions', 'file-position', 'file-position*',
        +            'file-size', 'file-stream-buffer-mode', 'file-stream-port?',
        +            'filesystem-root-list', 'filter', 'find-executable-path',
        +            'find-library-collection-paths', 'find-system-path', 'findf',
        +            'fixnum?', 'floating-point-bytes->real', 'flonum?', 'floor',
        +            'flush-output', 'foldl', 'foldr', 'for-each', 'format', 'fprintf',
        +            'free-identifier=?', 'free-label-identifier=?',
        +            'free-template-identifier=?', 'free-transformer-identifier=?',
        +            'gcd', 'generate-temporaries', 'gensym', 'get-output-bytes',
        +            'get-output-string', 'getenv', 'global-port-print-handler',
        +            'guard-evt', 'handle-evt', 'handle-evt?', 'hash', 'hash->list',
        +            'hash-copy', 'hash-count', 'hash-eq?', 'hash-equal?', 'hash-eqv?',
        +            'hash-for-each', 'hash-has-key?', 'hash-iterate-first',
        +            'hash-iterate-key', 'hash-iterate-next', 'hash-iterate-value',
        +            'hash-keys', 'hash-map', 'hash-placeholder?', 'hash-ref',
        +            'hash-ref!', 'hash-remove', 'hash-remove!', 'hash-set',
        +            'hash-set!', 'hash-set*', 'hash-set*!', 'hash-update',
        +            'hash-update!', 'hash-values', 'hash-weak?', 'hash?', 'hasheq',
        +            'hasheqv', 'identifier-binding', 'identifier-label-binding',
        +            'identifier-prune-lexical-context',
        +            'identifier-prune-to-source-module',
        +            'identifier-remove-from-definition-context',
        +            'identifier-template-binding', 'identifier-transformer-binding',
        +            'identifier?', 'imag-part', 'immutable?', 'impersonate-box',
        +            'impersonate-continuation-mark-key', 'impersonate-hash',
        +            'impersonate-procedure', 'impersonate-prompt-tag',
        +            'impersonate-struct', 'impersonate-vector', 'impersonator-of?',
        +            'impersonator-prop:application-mark',
        +            'impersonator-property-accessor-procedure?',
        +            'impersonator-property?', 'impersonator?', 'in-cycle',
        +            'in-directory', 'in-hash', 'in-hash-keys', 'in-hash-pairs',
        +            'in-hash-values', 'in-parallel', 'in-sequences',
        +            'in-values*-sequence', 'in-values-sequence', 'inexact->exact',
        +            'inexact-real?', 'inexact?', 'input-port?', 'inspector?',
        +            'integer->char', 'integer->integer-bytes',
        +            'integer-bytes->integer', 'integer-length', 'integer-sqrt',
        +            'integer-sqrt/remainder', 'integer?',
        +            'internal-definition-context-seal', 'internal-definition-context?',
        +            'keyword<?', 'keyword->string', 'keyword-apply', 'keyword?',
        +            'kill-thread', 'lcm', 'length', 'liberal-define-context?',
        +            'link-exists?', 'list', 'list*', 'list->bytes',
        +            'list->string', 'list->vector', 'list-ref', 'list-tail',
        +            'list?', 'load', 'load-extension', 'load-on-demand-enabled',
        +            'load-relative', 'load-relative-extension', 'load/cd',
        +            'load/use-compiled', 'local-expand', 'local-expand/capture-lifts',
        +            'local-transformer-expand',
        +            'local-transformer-expand/capture-lifts', 'locale-string-encoding',
        +            'log', 'log-level?', 'log-max-level', 'log-message',
        +            'log-receiver?', 'logger-name', 'logger?', 'magnitude',
        +            'make-arity-at-least', 'make-base-empty-namespace',
        +            'make-base-namespace', 'make-bytes', 'make-channel',
        +            'make-continuation-mark-key', 'make-continuation-prompt-tag',
        +            'make-custodian', 'make-custodian-box', 'make-date', 'make-date*',
        +            'make-derived-parameter', 'make-directory', 'make-do-sequence',
        +            'make-empty-namespace', 'make-ephemeron', 'make-exn',
        +            'make-exn:break', 'make-exn:break:hang-up',
        +            'make-exn:break:terminate', 'make-exn:fail',
        +            'make-exn:fail:contract', 'make-exn:fail:contract:arity',
        +            'make-exn:fail:contract:continuation',
        +            'make-exn:fail:contract:divide-by-zero',
        +            'make-exn:fail:contract:non-fixnum-result',
        +            'make-exn:fail:contract:variable', 'make-exn:fail:filesystem',
        +            'make-exn:fail:filesystem:errno',
        +            'make-exn:fail:filesystem:exists',
        +            'make-exn:fail:filesystem:version', 'make-exn:fail:network',
        +            'make-exn:fail:network:errno', 'make-exn:fail:out-of-memory',
        +            'make-exn:fail:read', 'make-exn:fail:read:eof',
        +            'make-exn:fail:read:non-char', 'make-exn:fail:syntax',
        +            'make-exn:fail:syntax:unbound', 'make-exn:fail:unsupported',
        +            'make-exn:fail:user', 'make-file-or-directory-link', 'make-hash',
        +            'make-hash-placeholder', 'make-hasheq', 'make-hasheq-placeholder',
        +            'make-hasheqv', 'make-hasheqv-placeholder', 'make-immutable-hash',
        +            'make-immutable-hasheq', 'make-immutable-hasheqv',
        +            'make-impersonator-property', 'make-input-port', 'make-inspector',
        +            'make-keyword-procedure', 'make-known-char-range-list',
        +            'make-log-receiver', 'make-logger', 'make-output-port',
        +            'make-parameter', 'make-phantom-bytes', 'make-pipe',
        +            'make-placeholder', 'make-polar', 'make-prefab-struct',
        +            'make-pseudo-random-generator', 'make-reader-graph',
        +            'make-readtable', 'make-rectangular', 'make-rename-transformer',
        +            'make-resolved-module-path', 'make-security-guard',
        +            'make-semaphore', 'make-set!-transformer', 'make-shared-bytes',
        +            'make-sibling-inspector', 'make-special-comment', 'make-srcloc',
        +            'make-string', 'make-struct-field-accessor',
        +            'make-struct-field-mutator', 'make-struct-type',
        +            'make-struct-type-property', 'make-syntax-delta-introducer',
        +            'make-syntax-introducer', 'make-thread-cell', 'make-thread-group',
        +            'make-vector', 'make-weak-box', 'make-weak-hash',
        +            'make-weak-hasheq', 'make-weak-hasheqv', 'make-will-executor',
        +            'map', 'max', 'mcar', 'mcdr', 'mcons', 'member', 'memf', 'memq',
        +            'memv', 'min', 'module->exports', 'module->imports',
        +            'module->language-info', 'module->namespace',
        +            'module-compiled-exports', 'module-compiled-imports',
        +            'module-compiled-language-info', 'module-compiled-name',
        +            'module-compiled-submodules', 'module-declared?',
        +            'module-path-index-join', 'module-path-index-resolve',
        +            'module-path-index-split', 'module-path-index-submodule',
        +            'module-path-index?', 'module-path?', 'module-predefined?',
        +            'module-provide-protected?', 'modulo', 'mpair?', 'nack-guard-evt',
        +            'namespace-anchor->empty-namespace',
        +            'namespace-anchor->namespace', 'namespace-anchor?',
        +            'namespace-attach-module', 'namespace-attach-module-declaration',
        +            'namespace-base-phase', 'namespace-mapped-symbols',
        +            'namespace-module-identifier', 'namespace-module-registry',
        +            'namespace-require', 'namespace-require/constant',
        +            'namespace-require/copy', 'namespace-require/expansion-time',
        +            'namespace-set-variable-value!', 'namespace-symbol->identifier',
        +            'namespace-syntax-introduce', 'namespace-undefine-variable!',
        +            'namespace-unprotect-module', 'namespace-variable-value',
        +            'namespace?', 'negative?', 'never-evt', 'newline',
        +            'normal-case-path', 'not', 'null', 'null?', 'number->string',
        +            'number?', 'numerator', 'object-name', 'odd?', 'open-input-bytes',
        +            'open-input-string', 'open-output-bytes', 'open-output-string',
        +            'ormap', 'output-port?', 'pair?', 'parameter-procedure=?',
        +            'parameter?', 'parameterization?', 'path->bytes',
        +            'path->complete-path', 'path->directory-path',
        +            'path->string', 'path-add-suffix', 'path-convention-type',
        +            'path-element->bytes', 'path-element->string',
        +            'path-for-some-system?', 'path-list-string->path-list',
        +            'path-replace-suffix', 'path-string?', 'path?', 'peek-byte',
        +            'peek-byte-or-special', 'peek-bytes', 'peek-bytes!',
        +            'peek-bytes-avail!', 'peek-bytes-avail!*',
        +            'peek-bytes-avail!/enable-break', 'peek-char',
        +            'peek-char-or-special', 'peek-string', 'peek-string!',
        +            'phantom-bytes?', 'pipe-content-length', 'placeholder-get',
        +            'placeholder-set!', 'placeholder?', 'poll-guard-evt',
        +            'port-closed-evt', 'port-closed?', 'port-commit-peeked',
        +            'port-count-lines!', 'port-count-lines-enabled',
        +            'port-display-handler', 'port-file-identity', 'port-file-unlock',
        +            'port-next-location', 'port-print-handler', 'port-progress-evt',
        +            'port-provides-progress-evts?', 'port-read-handler',
        +            'port-try-file-lock?', 'port-write-handler', 'port-writes-atomic?',
        +            'port-writes-special?', 'port?', 'positive?',
        +            'prefab-key->struct-type', 'prefab-key?', 'prefab-struct-key',
        +            'pregexp', 'pregexp?', 'primitive-closure?',
        +            'primitive-result-arity', 'primitive?', 'print',
        +            'print-as-expression', 'print-boolean-long-form', 'print-box',
        +            'print-graph', 'print-hash-table', 'print-mpair-curly-braces',
        +            'print-pair-curly-braces', 'print-reader-abbreviations',
        +            'print-struct', 'print-syntax-width', 'print-unreadable',
        +            'print-vector-length', 'printf', 'procedure->method',
        +            'procedure-arity', 'procedure-arity-includes?', 'procedure-arity?',
        +            'procedure-closure-contents-eq?', 'procedure-extract-target',
        +            'procedure-keywords', 'procedure-reduce-arity',
        +            'procedure-reduce-keyword-arity', 'procedure-rename',
        +            'procedure-struct-type?', 'procedure?', 'progress-evt?',
        +            'prop:arity-string', 'prop:checked-procedure',
        +            'prop:custom-print-quotable', 'prop:custom-write',
        +            'prop:equal+hash', 'prop:evt', 'prop:exn:srclocs',
        +            'prop:impersonator-of', 'prop:input-port',
        +            'prop:liberal-define-context', 'prop:output-port',
        +            'prop:procedure', 'prop:rename-transformer', 'prop:sequence',
        +            'prop:set!-transformer', 'pseudo-random-generator->vector',
        +            'pseudo-random-generator-vector?', 'pseudo-random-generator?',
        +            'putenv', 'quotient', 'quotient/remainder', 'raise',
        +            'raise-argument-error', 'raise-arguments-error',
        +            'raise-arity-error', 'raise-mismatch-error', 'raise-range-error',
        +            'raise-result-error', 'raise-syntax-error', 'raise-type-error',
        +            'raise-user-error', 'random', 'random-seed', 'rational?',
        +            'rationalize', 'read', 'read-accept-bar-quote', 'read-accept-box',
        +            'read-accept-compiled', 'read-accept-dot', 'read-accept-graph',
        +            'read-accept-infix-dot', 'read-accept-lang',
        +            'read-accept-quasiquote', 'read-accept-reader', 'read-byte',
        +            'read-byte-or-special', 'read-bytes', 'read-bytes!',
        +            'read-bytes-avail!', 'read-bytes-avail!*',
        +            'read-bytes-avail!/enable-break', 'read-bytes-line',
        +            'read-case-sensitive', 'read-char', 'read-char-or-special',
        +            'read-curly-brace-as-paren', 'read-decimal-as-inexact',
        +            'read-eval-print-loop', 'read-language', 'read-line',
        +            'read-on-demand-source', 'read-square-bracket-as-paren',
        +            'read-string', 'read-string!', 'read-syntax',
        +            'read-syntax/recursive', 'read/recursive', 'readtable-mapping',
        +            'readtable?', 'real->decimal-string', 'real->double-flonum',
        +            'real->floating-point-bytes', 'real->single-flonum',
        +            'real-part', 'real?', 'regexp', 'regexp-match',
        +            'regexp-match-exact?', 'regexp-match-peek',
        +            'regexp-match-peek-immediate', 'regexp-match-peek-positions',
        +            'regexp-match-peek-positions-immediate',
        +            'regexp-match-peek-positions-immediate/end',
        +            'regexp-match-peek-positions/end', 'regexp-match-positions',
        +            'regexp-match-positions/end', 'regexp-match/end', 'regexp-match?',
        +            'regexp-max-lookbehind', 'regexp-quote', 'regexp-replace',
        +            'regexp-replace*', 'regexp-replace-quote', 'regexp-replaces',
        +            'regexp-split', 'regexp-try-match', 'regexp?', 'relative-path?',
        +            'remainder', 'remove', 'remove*', 'remq', 'remq*', 'remv', 'remv*',
        +            'rename-file-or-directory', 'rename-transformer-target',
        +            'rename-transformer?', 'reroot-path', 'resolve-path',
        +            'resolved-module-path-name', 'resolved-module-path?', 'reverse',
        +            'round', 'seconds->date', 'security-guard?',
        +            'semaphore-peek-evt', 'semaphore-peek-evt?', 'semaphore-post',
        +            'semaphore-try-wait?', 'semaphore-wait',
        +            'semaphore-wait/enable-break', 'semaphore?', 'sequence->stream',
        +            'sequence-generate', 'sequence-generate*', 'sequence?',
        +            'set!-transformer-procedure', 'set!-transformer?', 'set-box!',
        +            'set-mcar!', 'set-mcdr!', 'set-phantom-bytes!',
        +            'set-port-next-location!', 'shared-bytes', 'shell-execute',
        +            'simplify-path', 'sin', 'single-flonum?', 'sleep',
        +            'special-comment-value', 'special-comment?', 'split-path', 'sqrt',
        +            'srcloc-column', 'srcloc-line', 'srcloc-position', 'srcloc-source',
        +            'srcloc-span', 'srcloc?', 'stop-after', 'stop-before', 'string',
        +            'string>=?', 'string>?', 'string<=?', 'string<?',
        +            'string->bytes/latin-1', 'string->bytes/locale',
        +            'string->bytes/utf-8', 'string->immutable-string',
        +            'string->keyword', 'string->list', 'string->number',
        +            'string->path', 'string->path-element', 'string->symbol',
        +            'string->uninterned-symbol', 'string->unreadable-symbol',
        +            'string-append', 'string-ci>=?', 'string-ci>?',
        +            'string-ci<=?', 'string-ci<?', 'string-ci=?', 'string-copy',
        +            'string-copy!', 'string-downcase', 'string-fill!',
        +            'string-foldcase', 'string-length', 'string-locale>?',
        +            'string-locale<?', 'string-locale-ci>?',
        +            'string-locale-ci<?', 'string-locale-ci=?',
        +            'string-locale-downcase', 'string-locale-upcase',
        +            'string-locale=?', 'string-normalize-nfc', 'string-normalize-nfd',
        +            'string-normalize-nfkc', 'string-normalize-nfkd', 'string-ref',
        +            'string-set!', 'string-titlecase', 'string-upcase',
        +            'string-utf-8-length', 'string=?', 'string?', 'struct->vector',
        +            'struct-accessor-procedure?', 'struct-constructor-procedure?',
        +            'struct-info', 'struct-mutator-procedure?',
        +            'struct-predicate-procedure?', 'struct-type-info',
        +            'struct-type-make-constructor', 'struct-type-make-predicate',
        +            'struct-type-property-accessor-procedure?',
        +            'struct-type-property?', 'struct-type?', 'struct:arity-at-least',
        +            'struct:date', 'struct:date*', 'struct:exn', 'struct:exn:break',
        +            'struct:exn:break:hang-up', 'struct:exn:break:terminate',
        +            'struct:exn:fail', 'struct:exn:fail:contract',
        +            'struct:exn:fail:contract:arity',
        +            'struct:exn:fail:contract:continuation',
        +            'struct:exn:fail:contract:divide-by-zero',
        +            'struct:exn:fail:contract:non-fixnum-result',
        +            'struct:exn:fail:contract:variable', 'struct:exn:fail:filesystem',
        +            'struct:exn:fail:filesystem:errno',
        +            'struct:exn:fail:filesystem:exists',
        +            'struct:exn:fail:filesystem:version', 'struct:exn:fail:network',
        +            'struct:exn:fail:network:errno', 'struct:exn:fail:out-of-memory',
        +            'struct:exn:fail:read', 'struct:exn:fail:read:eof',
        +            'struct:exn:fail:read:non-char', 'struct:exn:fail:syntax',
        +            'struct:exn:fail:syntax:unbound', 'struct:exn:fail:unsupported',
        +            'struct:exn:fail:user', 'struct:srcloc', 'struct?', 'sub1',
        +            'subbytes', 'subprocess', 'subprocess-group-enabled',
        +            'subprocess-kill', 'subprocess-pid', 'subprocess-status',
        +            'subprocess-wait', 'subprocess?', 'substring', 'symbol->string',
        +            'symbol-interned?', 'symbol-unreadable?', 'symbol?', 'sync',
        +            'sync/enable-break', 'sync/timeout', 'sync/timeout/enable-break',
        +            'syntax->datum', 'syntax->list', 'syntax-arm',
        +            'syntax-column', 'syntax-disarm', 'syntax-e', 'syntax-line',
        +            'syntax-local-bind-syntaxes', 'syntax-local-certifier',
        +            'syntax-local-context', 'syntax-local-expand-expression',
        +            'syntax-local-get-shadower', 'syntax-local-introduce',
        +            'syntax-local-lift-context', 'syntax-local-lift-expression',
        +            'syntax-local-lift-module-end-declaration',
        +            'syntax-local-lift-provide', 'syntax-local-lift-require',
        +            'syntax-local-lift-values-expression',
        +            'syntax-local-make-definition-context',
        +            'syntax-local-make-delta-introducer',
        +            'syntax-local-module-defined-identifiers',
        +            'syntax-local-module-exports',
        +            'syntax-local-module-required-identifiers', 'syntax-local-name',
        +            'syntax-local-phase-level', 'syntax-local-submodules',
        +            'syntax-local-transforming-module-provides?', 'syntax-local-value',
        +            'syntax-local-value/immediate', 'syntax-original?',
        +            'syntax-position', 'syntax-property',
        +            'syntax-property-symbol-keys', 'syntax-protect', 'syntax-rearm',
        +            'syntax-recertify', 'syntax-shift-phase-level', 'syntax-source',
        +            'syntax-source-module', 'syntax-span', 'syntax-taint',
        +            'syntax-tainted?', 'syntax-track-origin',
        +            'syntax-transforming-module-expression?', 'syntax-transforming?',
        +            'syntax?', 'system-big-endian?', 'system-idle-evt',
        +            'system-language+country', 'system-library-subpath',
        +            'system-path-convention-type', 'system-type', 'tan',
        +            'terminal-port?', 'thread', 'thread-cell-ref', 'thread-cell-set!',
        +            'thread-cell-values?', 'thread-cell?', 'thread-dead-evt',
        +            'thread-dead?', 'thread-group?', 'thread-receive',
        +            'thread-receive-evt', 'thread-resume', 'thread-resume-evt',
        +            'thread-rewind-receive', 'thread-running?', 'thread-send',
        +            'thread-suspend', 'thread-suspend-evt', 'thread-try-receive',
        +            'thread-wait', 'thread/suspend-to-kill', 'thread?', 'time-apply',
        +            'truncate', 'unbox', 'uncaught-exception-handler',
        +            'use-collection-link-paths', 'use-compiled-file-paths',
        +            'use-user-specific-search-paths', 'values',
        +            'variable-reference->empty-namespace',
        +            'variable-reference->module-base-phase',
        +            'variable-reference->module-declaration-inspector',
        +            'variable-reference->module-path-index',
        +            'variable-reference->module-source',
        +            'variable-reference->namespace', 'variable-reference->phase',
        +            'variable-reference->resolved-module-path',
        +            'variable-reference-constant?', 'variable-reference?', 'vector',
        +            'vector->immutable-vector', 'vector->list',
        +            'vector->pseudo-random-generator',
        +            'vector->pseudo-random-generator!', 'vector->values',
        +            'vector-copy!', 'vector-fill!', 'vector-immutable',
        +            'vector-length', 'vector-ref', 'vector-set!',
        +            'vector-set-performance-stats!', 'vector?', 'version', 'void',
        +            'void?', 'weak-box-value', 'weak-box?', 'will-execute',
        +            'will-executor?', 'will-register', 'will-try-execute', 'wrap-evt',
        +            'write', 'write-byte', 'write-bytes', 'write-bytes-avail',
        +            'write-bytes-avail*', 'write-bytes-avail-evt',
        +            'write-bytes-avail/enable-break', 'write-char', 'write-special',
        +            'write-special-avail*', 'write-special-evt', 'write-string',
        +            'zero?',
        +            ),
        +
        +        2 => array(
        +            '#%app', '#%datum', '#%expression', '#%module-begin', '#%plain-app',
        +            '#%plain-lambda', '#%plain-module-begin', '#%provide', '#%require',
        +            '#%stratified-body', '#%top', '#%top-interaction',
        +            '#%variable-reference', ':do-in', 'all-defined-out',
        +            'all-from-out', 'and', 'apply', 'arity-at-least', 'begin',
        +            'begin-for-syntax', 'begin0', 'call-with-input-file',
        +            'call-with-input-file*', 'call-with-output-file',
        +            'call-with-output-file*', 'case', 'case-lambda', 'combine-in',
        +            'combine-out', 'cond', 'date', 'date*', 'define',
        +            'define-for-syntax', 'define-logger', 'define-namespace-anchor',
        +            'define-sequence-syntax', 'define-struct', 'define-struct/derived',
        +            'define-syntax', 'define-syntax-rule', 'define-syntaxes',
        +            'define-values', 'define-values-for-syntax', 'do', 'else',
        +            'except-in', 'except-out', 'exn', 'exn:break', 'exn:break:hang-up',
        +            'exn:break:terminate', 'exn:fail', 'exn:fail:contract',
        +            'exn:fail:contract:arity', 'exn:fail:contract:continuation',
        +            'exn:fail:contract:divide-by-zero',
        +            'exn:fail:contract:non-fixnum-result',
        +            'exn:fail:contract:variable', 'exn:fail:filesystem',
        +            'exn:fail:filesystem:errno', 'exn:fail:filesystem:exists',
        +            'exn:fail:filesystem:version', 'exn:fail:network',
        +            'exn:fail:network:errno', 'exn:fail:out-of-memory',
        +            'exn:fail:read', 'exn:fail:read:eof', 'exn:fail:read:non-char',
        +            'exn:fail:syntax', 'exn:fail:syntax:unbound',
        +            'exn:fail:unsupported', 'exn:fail:user', 'file', 'for', 'for*',
        +            'for*/and', 'for*/first', 'for*/fold', 'for*/fold/derived',
        +            'for*/hash', 'for*/hasheq', 'for*/hasheqv', 'for*/last',
        +            'for*/list', 'for*/lists', 'for*/or', 'for*/product', 'for*/sum',
        +            'for*/vector', 'for-label', 'for-meta', 'for-syntax',
        +            'for-template', 'for/and', 'for/first', 'for/fold',
        +            'for/fold/derived', 'for/hash', 'for/hasheq', 'for/hasheqv',
        +            'for/last', 'for/list', 'for/lists', 'for/or', 'for/product',
        +            'for/sum', 'for/vector', 'gen:custom-write', 'gen:equal+hash',
        +            'if', 'in-bytes', 'in-bytes-lines', 'in-indexed',
        +            'in-input-port-bytes', 'in-input-port-chars', 'in-lines',
        +            'in-list', 'in-mlist', 'in-naturals', 'in-port', 'in-producer',
        +            'in-range', 'in-string', 'in-value', 'in-vector', 'lambda', 'let',
        +            'let*', 'let*-values', 'let-syntax', 'let-syntaxes', 'let-values',
        +            'let/cc', 'let/ec', 'letrec', 'letrec-syntax', 'letrec-syntaxes',
        +            'letrec-syntaxes+values', 'letrec-values', 'lib', 'local-require',
        +            'log-debug', 'log-error', 'log-fatal', 'log-info', 'log-warning',
        +            'module', 'module*', 'module+', 'only-in', 'only-meta-in',
        +            'open-input-file', 'open-input-output-file', 'open-output-file',
        +            'or', 'parameterize', 'parameterize*', 'parameterize-break',
        +            'planet', 'prefix-in', 'prefix-out', 'protect-out', 'provide',
        +            'quasiquote', 'quasisyntax', 'quasisyntax/loc', 'quote',
        +            'quote-syntax', 'quote-syntax/prune', 'regexp-match*',
        +            'regexp-match-peek-positions*', 'regexp-match-positions*',
        +            'relative-in', 'rename-in', 'rename-out', 'require', 'set!',
        +            'set!-values', 'sort', 'srcloc', 'struct', 'struct-copy',
        +            'struct-field-index', 'struct-out', 'submod', 'syntax',
        +            'syntax-case', 'syntax-case*', 'syntax-id-rules', 'syntax-rules',
        +            'syntax/loc', 'time', 'unless', 'unquote', 'unquote-splicing',
        +            'unsyntax', 'unsyntax-splicing', 'when', 'with-continuation-mark',
        +            'with-handlers', 'with-handlers*', 'with-input-from-file',
        +            'with-output-to-file', 'with-syntax', 'λ',
        +            ),
        +
        +        3 => array(
        +            '>/c', '</c', 'append*', 'append-map', 'argmax', 'argmin',
        +            'bad-number-of-results', 'base->-doms/c', 'base->-rngs/c',
        +            'base->?', 'blame-add-unknown-context', 'blame-context',
        +            'blame-contract', 'blame-fmt->-string', 'blame-negative',
        +            'blame-original?', 'blame-positive', 'blame-replace-negative',
        +            'blame-source', 'blame-swap', 'blame-swapped?', 'blame-value',
        +            'blame?', 'boolean=?', 'build-chaperone-contract-property',
        +            'build-compound-type-name', 'build-contract-property',
        +            'build-flat-contract-property', 'bytes-append*', 'bytes-join',
        +            'bytes-no-nuls?', 'call-with-input-bytes',
        +            'call-with-input-string', 'call-with-output-bytes',
        +            'call-with-output-string', 'chaperone-contract-property?',
        +            'chaperone-contract?', 'class->interface', 'class-info',
        +            'class?', 'coerce-chaperone-contract',
        +            'coerce-chaperone-contracts', 'coerce-contract',
        +            'coerce-contract/f', 'coerce-contracts', 'coerce-flat-contract',
        +            'coerce-flat-contracts', 'conjugate', 'cons?', 'const',
        +            'contract-first-order', 'contract-first-order-passes?',
        +            'contract-name', 'contract-proc', 'contract-projection',
        +            'contract-property?', 'contract-random-generate',
        +            'contract-stronger?', 'contract-struct-exercise',
        +            'contract-struct-generate', 'contract?', 'convert-stream',
        +            'copy-directory/files', 'copy-port', 'cosh', 'count',
        +            'current-blame-format', 'current-future', 'curry', 'curryr',
        +            'degrees->radians', 'delete-directory/files',
        +            'deserialize-info:set-v0', 'dict-iter-contract',
        +            'dict-key-contract', 'dict-value-contract', 'drop', 'drop-right',
        +            'dup-input-port', 'dup-output-port', 'dynamic-get-field',
        +            'dynamic-send', 'dynamic-set-field!', 'eighth', 'empty',
        +            'empty-sequence', 'empty-stream', 'empty?', 'env-stash',
        +            'eq-contract-val', 'eq-contract?', 'equal<%>',
        +            'equal-contract-val', 'equal-contract?', 'exact-ceiling',
        +            'exact-floor', 'exact-round', 'exact-truncate',
        +            'exn:fail:contract:blame-object', 'exn:fail:contract:blame?',
        +            'exn:fail:object?', 'exn:misc:match?', 'explode-path',
        +            'externalizable<%>', 'false', 'false/c', 'false?',
        +            'field-names', 'fifth', 'file-name-from-path',
        +            'filename-extension', 'filter-map', 'filter-not',
        +            'filter-read-input-port', 'find-files', 'first', 'flat-contract',
        +            'flat-contract-predicate', 'flat-contract-property?',
        +            'flat-contract?', 'flat-named-contract', 'flatten', 'fold-files',
        +            'force', 'fourth', 'fsemaphore-count', 'fsemaphore-post',
        +            'fsemaphore-try-wait?', 'fsemaphore-wait', 'fsemaphore?', 'future',
        +            'future?', 'futures-enabled?', 'generate-ctc-fail?',
        +            'generate-env', 'generate-member-key', 'generate/choose',
        +            'generate/direct', 'generic?', 'group-execute-bit',
        +            'group-read-bit', 'group-write-bit', 'has-contract?', 'identity',
        +            'impersonator-contract?', 'impersonator-prop:contracted',
        +            'implementation?', 'implementation?/c', 'in-dict', 'in-dict-keys',
        +            'in-dict-pairs', 'in-dict-values', 'infinite?',
        +            'input-port-append', 'instanceof/c', 'interface->method-names',
        +            'interface-extension?', 'interface?', 'is-a?', 'is-a?/c', 'last',
        +            'last-pair', 'list->set', 'list->seteq', 'list->seteqv',
        +            'make-chaperone-contract', 'make-contract', 'make-custom-hash',
        +            'make-directory*', 'make-exn:fail:contract:blame',
        +            'make-exn:fail:object', 'make-flat-contract', 'make-fsemaphore',
        +            'make-generate-ctc-fail', 'make-generic',
        +            'make-immutable-custom-hash', 'make-input-port/read-to-peek',
        +            'make-limited-input-port', 'make-list', 'make-lock-file-name',
        +            'make-mixin-contract', 'make-none/c', 'make-pipe-with-specials',
        +            'make-primitive-class', 'make-proj-contract',
        +            'make-tentative-pretty-print-output-port', 'make-weak-custom-hash',
        +            'match-equality-test', 'matches-arity-exactly?',
        +            'member-name-key-hash-code', 'member-name-key=?',
        +            'member-name-key?', 'merge-input', 'method-in-interface?',
        +            'mixin-contract', 'n->th', 'nan?', 'natural-number/c', 'negate',
        +            'new-∀/c', 'new-∃/c', 'ninth', 'normalize-path', 'object%',
        +            'object->vector', 'object-info', 'object-interface',
        +            'object-method-arity-includes?', 'object=?', 'object?',
        +            'open-output-nowhere', 'order-of-magnitude', 'other-execute-bit',
        +            'other-read-bit', 'other-write-bit', 'parse-command-line',
        +            'partition', 'path-element?', 'path-only', 'pathlist-closure',
        +            'pi', 'pi.f', 'place-break', 'place-channel', 'place-channel-get',
        +            'place-channel-put', 'place-channel-put/get', 'place-channel?',
        +            'place-dead-evt', 'place-enabled?', 'place-kill',
        +            'place-message-allowed?', 'place-sleep', 'place-wait', 'place?',
        +            'port->bytes', 'port->list', 'port->string',
        +            'predicate/c', 'preferences-lock-file-mode', 'pretty-display',
        +            'pretty-format', 'pretty-print',
        +            'pretty-print-.-symbol-without-bars',
        +            'pretty-print-abbreviate-read-macros', 'pretty-print-columns',
        +            'pretty-print-current-style-table', 'pretty-print-depth',
        +            'pretty-print-exact-as-decimal', 'pretty-print-extend-style-table',
        +            'pretty-print-handler', 'pretty-print-newline',
        +            'pretty-print-post-print-hook', 'pretty-print-pre-print-hook',
        +            'pretty-print-print-hook', 'pretty-print-print-line',
        +            'pretty-print-remap-stylable', 'pretty-print-show-inexactness',
        +            'pretty-print-size-hook', 'pretty-print-style-table?',
        +            'pretty-printing', 'pretty-write', 'printable<%>',
        +            'printable/c', 'process', 'process*', 'process*/ports',
        +            'process/ports', 'processor-count', 'promise-forced?',
        +            'promise-running?', 'promise?', 'prop:chaperone-contract',
        +            'prop:contract', 'prop:contracted', 'prop:dict',
        +            'prop:flat-contract', 'prop:opt-chaperone-contract',
        +            'prop:opt-chaperone-contract-get-test',
        +            'prop:opt-chaperone-contract?', 'prop:stream', 'proper-subset?',
        +            'put-preferences', 'radians->degrees', 'raise-blame-error',
        +            'raise-contract-error', 'range', 'reencode-input-port',
        +            'reencode-output-port', 'relocate-input-port',
        +            'relocate-output-port', 'rest', 'second', 'sequence->list',
        +            'sequence-add-between', 'sequence-andmap', 'sequence-append',
        +            'sequence-count', 'sequence-filter', 'sequence-fold',
        +            'sequence-for-each', 'sequence-length', 'sequence-map',
        +            'sequence-ormap', 'sequence-ref', 'sequence-tail', 'set',
        +            'set->list', 'set-add', 'set-count', 'set-empty?', 'set-eq?',
        +            'set-equal?', 'set-eqv?', 'set-first', 'set-for-each',
        +            'set-intersect', 'set-map', 'set-member?', 'set-remove',
        +            'set-rest', 'set-subtract', 'set-symmetric-difference',
        +            'set-union', 'set/c', 'set=?', 'set?', 'seteq', 'seteqv',
        +            'seventh', 'sgn', 'shuffle', 'simple-form-path', 'sinh', 'sixth',
        +            'skip-projection-wrapper?', 'some-system-path->string',
        +            'special-filter-input-port', 'split-at', 'split-at-right', 'sqr',
        +            'stream->list', 'stream-add-between', 'stream-andmap',
        +            'stream-append', 'stream-count', 'stream-empty?', 'stream-filter',
        +            'stream-first', 'stream-fold', 'stream-for-each', 'stream-length',
        +            'stream-map', 'stream-ormap', 'stream-ref', 'stream-rest',
        +            'stream-tail', 'stream?', 'string->some-system-path',
        +            'string-append*', 'string-no-nuls?', 'struct-type-property/c',
        +            'struct:exn:fail:contract:blame', 'struct:exn:fail:object',
        +            'subclass?', 'subclass?/c', 'subset?', 'symbol=?', 'system',
        +            'system*', 'system*/exit-code', 'system/exit-code', 'take',
        +            'take-right', 'tanh', 'tcp-abandon-port', 'tcp-accept',
        +            'tcp-accept-evt', 'tcp-accept-ready?', 'tcp-accept/enable-break',
        +            'tcp-addresses', 'tcp-close', 'tcp-connect',
        +            'tcp-connect/enable-break', 'tcp-listen', 'tcp-listener?',
        +            'tcp-port?', 'tentative-pretty-print-port-cancel',
        +            'tentative-pretty-print-port-transfer', 'tenth',
        +            'the-unsupplied-arg', 'third', 'touch', 'transplant-input-port',
        +            'transplant-output-port', 'true', 'udp-addresses', 'udp-bind!',
        +            'udp-bound?', 'udp-close', 'udp-connect!', 'udp-connected?',
        +            'udp-open-socket', 'udp-receive!', 'udp-receive!*',
        +            'udp-receive!-evt', 'udp-receive!/enable-break',
        +            'udp-receive-ready-evt', 'udp-send', 'udp-send*', 'udp-send-evt',
        +            'udp-send-ready-evt', 'udp-send-to', 'udp-send-to*',
        +            'udp-send-to-evt', 'udp-send-to/enable-break',
        +            'udp-send/enable-break', 'udp?', 'unit?', 'unsupplied-arg?',
        +            'user-execute-bit', 'user-read-bit', 'user-write-bit',
        +            'value-contract', 'vector-append', 'vector-argmax',
        +            'vector-argmin', 'vector-copy', 'vector-count', 'vector-drop',
        +            'vector-drop-right', 'vector-filter', 'vector-filter-not',
        +            'vector-map', 'vector-map!', 'vector-member', 'vector-memq',
        +            'vector-memv', 'vector-set*!', 'vector-split-at',
        +            'vector-split-at-right', 'vector-take', 'vector-take-right',
        +            'with-input-from-bytes', 'with-input-from-string',
        +            'with-output-to-bytes', 'with-output-to-string', 'would-be-future',
        +            'writable<%>', 'xor',
        +            ),
        +        4 => array(
        +            '>=/c', '<=/c', '->*m', '->d', '->dm', '->i', '->m',
        +            '=/c', 'absent', 'abstract', 'add-between', 'and/c', 'any',
        +            'any/c', 'augment', 'augment*', 'augment-final', 'augment-final*',
        +            'augride', 'augride*', 'between/c', 'blame-add-context',
        +            'box-immutable/c', 'box/c', 'call-with-file-lock/timeout',
        +            'case->', 'case->m', 'class', 'class*',
        +            'class-field-accessor', 'class-field-mutator', 'class/c',
        +            'class/derived', 'command-line', 'compound-unit',
        +            'compound-unit/infer', 'cons/c', 'continuation-mark-key/c',
        +            'contract', 'contract-out', 'contract-struct', 'contracted',
        +            'current-contract-region', 'define-compound-unit',
        +            'define-compound-unit/infer', 'define-contract-struct',
        +            'define-local-member-name', 'define-match-expander',
        +            'define-member-name', 'define-opt/c', 'define-serializable-class',
        +            'define-serializable-class*', 'define-signature',
        +            'define-signature-form', 'define-struct/contract', 'define-unit',
        +            'define-unit-binding', 'define-unit-from-context',
        +            'define-unit/contract', 'define-unit/new-import-export',
        +            'define-unit/s', 'define-values-for-export',
        +            'define-values/invoke-unit', 'define-values/invoke-unit/infer',
        +            'define/augment', 'define/augment-final', 'define/augride',
        +            'define/contract', 'define/final-prop', 'define/match',
        +            'define/overment', 'define/override', 'define/override-final',
        +            'define/private', 'define/public', 'define/public-final',
        +            'define/pubment', 'define/subexpression-pos-prop', 'delay',
        +            'delay/idle', 'delay/name', 'delay/strict', 'delay/sync',
        +            'delay/thread', 'dict->list', 'dict-can-functional-set?',
        +            'dict-can-remove-keys?', 'dict-count', 'dict-for-each',
        +            'dict-has-key?', 'dict-iterate-first', 'dict-iterate-key',
        +            'dict-iterate-next', 'dict-iterate-value', 'dict-keys', 'dict-map',
        +            'dict-mutable?', 'dict-ref', 'dict-ref!', 'dict-remove',
        +            'dict-remove!', 'dict-set', 'dict-set!', 'dict-set*', 'dict-set*!',
        +            'dict-update', 'dict-update!', 'dict-values', 'dict?',
        +            'display-lines', 'display-lines-to-file', 'display-to-file',
        +            'dynamic-place', 'dynamic-place*', 'eof-evt', 'except',
        +            'exn:fail:contract:blame', 'exn:fail:object', 'export', 'extends',
        +            'field', 'field-bound?', 'file->bytes', 'file->bytes-lines',
        +            'file->lines', 'file->list', 'file->string',
        +            'file->value', 'find-relative-path', 'flat-murec-contract',
        +            'flat-rec-contract', 'for*/set', 'for*/seteq', 'for*/seteqv',
        +            'for/set', 'for/seteq', 'for/seteqv', 'gen:dict', 'gen:stream',
        +            'generic', 'get-field', 'get-preference', 'hash/c', 'implies',
        +            'import', 'in-set', 'in-stream', 'include',
        +            'include-at/relative-to', 'include-at/relative-to/reader',
        +            'include/reader', 'inherit', 'inherit-field', 'inherit/inner',
        +            'inherit/super', 'init', 'init-depend', 'init-field', 'init-rest',
        +            'inner', 'inspect', 'instantiate', 'integer-in', 'interface',
        +            'interface*', 'invoke-unit', 'invoke-unit/infer', 'lazy', 'link',
        +            'list/c', 'listof', 'local', 'make-handle-get-preference-locked',
        +            'make-object', 'make-temporary-file', 'match', 'match*',
        +            'match*/derived', 'match-define', 'match-define-values',
        +            'match-lambda', 'match-lambda*', 'match-lambda**', 'match-let',
        +            'match-let*', 'match-let*-values', 'match-let-values',
        +            'match-letrec', 'match/derived', 'match/values', 'member-name-key',
        +            'method-contract?', 'mixin', 'nand', 'new', 'non-empty-listof',
        +            'none/c', 'nor', 'not/c', 'object-contract', 'object/c',
        +            'one-of/c', 'only', 'open', 'opt/c', 'or/c', 'overment',
        +            'overment*', 'override', 'override*', 'override-final',
        +            'override-final*', 'parameter/c', 'parametric->/c',
        +            'peek-bytes!-evt', 'peek-bytes-avail!-evt', 'peek-bytes-evt',
        +            'peek-string!-evt', 'peek-string-evt', 'peeking-input-port',
        +            'place', 'place*', 'port->bytes-lines', 'port->lines',
        +            'prefix', 'private', 'private*', 'procedure-arity-includes/c',
        +            'promise/c', 'prompt-tag/c', 'prop:dict/contract',
        +            'provide-signature-elements', 'provide/contract', 'public',
        +            'public*', 'public-final', 'public-final*', 'pubment', 'pubment*',
        +            'read-bytes!-evt', 'read-bytes-avail!-evt', 'read-bytes-evt',
        +            'read-bytes-line-evt', 'read-line-evt', 'read-string!-evt',
        +            'read-string-evt', 'real-in', 'recursive-contract',
        +            'regexp-match-evt', 'remove-duplicates', 'rename', 'rename-inner',
        +            'rename-super', 'send', 'send*', 'send+', 'send-generic',
        +            'send/apply', 'send/keyword-apply', 'set-field!', 'shared',
        +            'stream', 'stream-cons', 'string-join', 'string-len/c',
        +            'string-normalize-spaces', 'string-replace', 'string-split',
        +            'string-trim', 'struct*', 'struct/c', 'struct/ctc', 'struct/dc',
        +            'super', 'super-instantiate', 'super-make-object', 'super-new',
        +            'symbols', 'syntax/c', 'tag', 'this', 'this%', 'thunk', 'thunk*',
        +            'unconstrained-domain->', 'unit', 'unit-from-context', 'unit/c',
        +            'unit/new-import-export', 'unit/s', 'vector-immutable/c',
        +            'vector-immutableof', 'vector/c', 'vectorof', 'with-contract',
        +            'with-method', 'write-to-file', '~.a', '~.s', '~.v', '~a', '~e',
        +            '~r', '~s', '~v',
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array(
        +            '>', '>=', '<', '<=', '*', '+', '-', '->', '->*', '...', '/',
        +            '=', '=>', '==', '_', '#fl', '#fx', '#s', '#', '#f', '#F',
        +            '#false', '#t', '#T', '#true', '#lang', '#reader', '.', '\'', '#`',
        +            '#,@', '#,', '#\'', '`', '@', ',', '#%', '#$', '#&', '#~', '#rx',
        +            '#px', '#<<', '#;', '#hash', '#',
        +            ),
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        ),
        +    'NUMBERS' => array(
        +        1 => '(((#x#e)|(#e#x)|(#x#i)|(#i#x)|(#x))((((((((((((-)|(\+)))?(((('.
        +            '(([0-9])+)?(\.)?(([0-9a-fA-F])+(#)*)))|(((([0-9a-fA-F])+(#)*)'.
        +            '(\.)?(#)*))|(((([0-9a-fA-F])+(#)*)\\/(([0-9a-fA-F])+(#)*))))('.
        +            '([sl]((((-)|(\+)))?([0-9])+)))?)))|((((-)|(\+))(((inf\.)|(nan'.
        +            '\.))[0f])))))?((-)|(\+))(((((((([0-9])+)?(\.)?(([0-9a-fA-F])+'.
        +            '(#)*)))|(((([0-9a-fA-F])+(#)*)(\.)?(#)*))|(((([0-9a-fA-F])+(#'.
        +            ')*)\\/(([0-9a-fA-F])+(#)*))))(([sl]((((-)|(\+)))?([0-9])+)))?'.
        +            '))|((((inf\.)|(nan\.))[0f])))i))|((((((((-)|(\+)))?(((((([0-9'.
        +            '])+)?(\.)?(([0-9a-fA-F])+(#)*)))|(((([0-9a-fA-F])+(#)*)(\.)?('.
        +            '#)*))|(((([0-9a-fA-F])+(#)*)\\/(([0-9a-fA-F])+(#)*))))(([sl]('.
        +            '(((-)|(\+)))?([0-9])+)))?)))|((((-)|(\+))(((inf\.)|(nan\.))[0'.
        +            'f]))))@((((((-)|(\+)))?(((((([0-9])+)?(\.)?(([0-9a-fA-F])+(#)'.
        +            '*)))|(((([0-9a-fA-F])+(#)*)(\.)?(#)*))|(((([0-9a-fA-F])+(#)*)'.
        +            '\\/(([0-9a-fA-F])+(#)*))))(([sl]((((-)|(\+)))?([0-9])+)))?)))'.
        +            '|((((-)|(\+))(((inf\.)|(nan\.))[0f]))))))))|((((((-)|(\+)))?('.
        +            '([0-9])+\\/([0-9])+))((-)|(\+))(([0-9])+\\/([0-9])+)i))|((((('.
        +            '-)|(\+)))?(([0-9])+\\/([0-9])+)))|(((((((-)|(\+)))?(((((([0-9'.
        +            '])+)?(\.)?(([0-9a-fA-F])+(#)*)))|(((([0-9a-fA-F])+(#)*)(\.)?('.
        +            '#)*))|(((([0-9a-fA-F])+(#)*)\\/(([0-9a-fA-F])+(#)*))))(([sl]('.
        +            '(((-)|(\+)))?([0-9])+)))?)))|((((-)|(\+))(((inf\.)|(nan\.))[0'.
        +            'f])))))|(((((-)|(\+)))?([0-9])+))))',
        +        2 => '(((#o#e)|(#e#o)|(#o#i)|(#i#o)|(#o))((((((((((((-)|(\+)))?(((('.
        +            '(([0-9])+)?(\.)?(([0-7])+(#)*)))|(((([0-7])+(#)*)(\.)?(#)*))|'.
        +            '(((([0-7])+(#)*)\\/(([0-7])+(#)*))))(((([sl])|([def]))((((-)|'.
        +            '(\+)))?([0-9])+)))?)))|((((-)|(\+))(((inf\.)|(nan\.))[0f]))))'.
        +            ')?((-)|(\+))(((((((([0-9])+)?(\.)?(([0-7])+(#)*)))|(((([0-7])'.
        +            '+(#)*)(\.)?(#)*))|(((([0-7])+(#)*)\\/(([0-7])+(#)*))))(((([sl'.
        +            '])|([def]))((((-)|(\+)))?([0-9])+)))?))|((((inf\.)|(nan\.))[0'.
        +            'f])))i))|((((((((-)|(\+)))?(((((([0-9])+)?(\.)?(([0-7])+(#)*)'.
        +            '))|(((([0-7])+(#)*)(\.)?(#)*))|(((([0-7])+(#)*)\\/(([0-7])+(#'.
        +            ')*))))(((([sl])|([def]))((((-)|(\+)))?([0-9])+)))?)))|((((-)|'.
        +            '(\+))(((inf\.)|(nan\.))[0f]))))@((((((-)|(\+)))?(((((([0-9])+'.
        +            ')?(\.)?(([0-7])+(#)*)))|(((([0-7])+(#)*)(\.)?(#)*))|(((([0-7]'.
        +            ')+(#)*)\\/(([0-7])+(#)*))))(((([sl])|([def]))((((-)|(\+)))?(['.
        +            '0-9])+)))?)))|((((-)|(\+))(((inf\.)|(nan\.))[0f]))))))))|(((('.
        +            '((-)|(\+)))?(([0-9])+\\/([0-9])+))((-)|(\+))(([0-9])+\\/([0-9'.
        +            '])+)i))|(((((-)|(\+)))?(([0-9])+\\/([0-9])+)))|(((((((-)|(\+)'.
        +            '))?(((((([0-9])+)?(\.)?(([0-7])+(#)*)))|(((([0-7])+(#)*)(\.)?'.
        +            '(#)*))|(((([0-7])+(#)*)\\/(([0-7])+(#)*))))(((([sl])|([def]))'.
        +            '((((-)|(\+)))?([0-9])+)))?)))|((((-)|(\+))(((inf\.)|(nan\.))['.
        +            '0f])))))|(((((-)|(\+)))?([0-9])+))))',
        +        3 => '(((#b#e)|(#e#b)|(#b#i)|(#i#b)|(#b))((((((((((((-)|(\+)))?(((('.
        +            '(([0-9])+)?(\.)?(([0-1])+(#)*)))|(((([0-1])+(#)*)(\.)?(#)*))|'.
        +            '(((([0-1])+(#)*)\\/(([0-1])+(#)*))))(((([sl])|([def]))((((-)|'.
        +            '(\+)))?([0-9])+)))?)))|((((-)|(\+))(((inf\.)|(nan\.))[0f]))))'.
        +            ')?((-)|(\+))(((((((([0-9])+)?(\.)?(([0-1])+(#)*)))|(((([0-1])'.
        +            '+(#)*)(\.)?(#)*))|(((([0-1])+(#)*)\\/(([0-1])+(#)*))))(((([sl'.
        +            '])|([def]))((((-)|(\+)))?([0-9])+)))?))|((((inf\.)|(nan\.))[0'.
        +            'f])))i))|((((((((-)|(\+)))?(((((([0-9])+)?(\.)?(([0-1])+(#)*)'.
        +            '))|(((([0-1])+(#)*)(\.)?(#)*))|(((([0-1])+(#)*)\\/(([0-1])+(#'.
        +            ')*))))(((([sl])|([def]))((((-)|(\+)))?([0-9])+)))?)))|((((-)|'.
        +            '(\+))(((inf\.)|(nan\.))[0f]))))@((((((-)|(\+)))?(((((([0-9])+'.
        +            ')?(\.)?(([0-1])+(#)*)))|(((([0-1])+(#)*)(\.)?(#)*))|(((([0-1]'.
        +            ')+(#)*)\\/(([0-1])+(#)*))))(((([sl])|([def]))((((-)|(\+)))?(['.
        +            '0-9])+)))?)))|((((-)|(\+))(((inf\.)|(nan\.))[0f]))))))))|(((('.
        +            '((-)|(\+)))?(([0-9])+\\/([0-9])+))((-)|(\+))(([0-9])+\\/([0-9'.
        +            '])+)i))|(((((-)|(\+)))?(([0-9])+\\/([0-9])+)))|(((((((-)|(\+)'.
        +            '))?(((((([0-9])+)?(\.)?(([0-1])+(#)*)))|(((([0-1])+(#)*)(\.)?'.
        +            '(#)*))|(((([0-1])+(#)*)\\/(([0-1])+(#)*))))(((([sl])|([def]))'.
        +            '((((-)|(\+)))?([0-9])+)))?)))|((((-)|(\+))(((inf\.)|(nan\.))['.
        +            '0f])))))|(((((-)|(\+)))?([0-9])+))))',
        +        4 => '((((#d#e)|(#e#d)|(#d#i)|(#i#d)|(#e)|(#i)|(#d)))?((((((((((((-'.
        +            ')|(\+)))?(((((([0-9])+)?(\.)?(([0-9])+(#)*)))|(((([0-9])+(#)*'.
        +            ')(\.)?(#)*))|(((([0-9])+(#)*)\\/(([0-9])+(#)*))))(((([sl])|(['.
        +            'def]))((((-)|(\+)))?([0-9])+)))?)))|((((-)|(\+))(((inf\.)|(na'.
        +            'n\.))[0f])))))?((-)|(\+))(((((((([0-9])+)?(\.)?(([0-9])+(#)*)'.
        +            '))|(((([0-9])+(#)*)(\.)?(#)*))|(((([0-9])+(#)*)\\/(([0-9])+(#'.
        +            ')*))))(((([sl])|([def]))((((-)|(\+)))?([0-9])+)))?))|((((inf'.
        +            '\.)|(nan\.))[0f])))i))|((((((((-)|(\+)))?(((((([0-9])+)?(\.)?'.
        +            '(([0-9])+(#)*)))|(((([0-9])+(#)*)(\.)?(#)*))|(((([0-9])+(#)*)'.
        +            '\\/(([0-9])+(#)*))))(((([sl])|([def]))((((-)|(\+)))?([0-9])+)'.
        +            '))?)))|((((-)|(\+))(((inf\.)|(nan\.))[0f]))))@((((((-)|(\+)))'.
        +            '?(((((([0-9])+)?(\.)?(([0-9])+(#)*)))|(((([0-9])+(#)*)(\.)?(#'.
        +            ')*))|(((([0-9])+(#)*)\\/(([0-9])+(#)*))))(((([sl])|([def]))(('.
        +            '((-)|(\+)))?([0-9])+)))?)))|((((-)|(\+))(((inf\.)|(nan\.))[0f'.
        +            ']))))))))|((((((-)|(\+)))?(([0-9])+\\/([0-9])+))((-)|(\+))((['.
        +            '0-9])+\\/([0-9])+)i))|(((((-)|(\+)))?(([0-9])+\\/([0-9])+)))|'.
        +            '(((((((-)|(\+)))?(((((([0-9])+)?(\.)?(([0-9])+(#)*)))|(((([0-'.
        +            '9])+(#)*)(\.)?(#)*))|(((([0-9])+(#)*)\\/(([0-9])+(#)*))))(((('.
        +            '[sl])|([def]))((((-)|(\+)))?([0-9])+)))?)))|((((-)|(\+))(((in'.
        +            'f\.)|(nan\.))[0f])))))|(((((-)|(\+)))?([0-9])+))))',
        +            ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: blue;',
        +            2 => 'color: rgb(34, 34, 139);',
        +            3 => 'color: blue;',
        +            4 => 'color: rgb(34, 34, 139);',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: rgb(194, 116, 31);',
        +            'MULTI' => 'color: rgb(194, 116, 31);',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => '',
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: rgb(132, 60,36);',
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: rgb(34, 139, 34);',
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: rgb(34, 139, 34);',
        +            1 => 'color: rgb(34, 139, 34);',
        +            2 => 'color: rgb(34, 139, 34);',
        +            3 => 'color: rgb(34, 139, 34);',
        +            4 => 'color: rgb(34, 139, 34);',
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #202020;',
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: rgb(132, 60,36);',
        +            ),
        +        'REGEXPS' => array(
        +            1 => 'color: rgb(34, 139, 34);',
        +            2 => 'color: rgb(132, 60,36);',
        +            3 => 'color: rgb(34, 139, 34);',
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        ),
        +    'URLS' => array(
        +        1 => 'http://docs.racket-lang.org/reference/',
        +        2 => 'http://docs.racket-lang.org/reference/',
        +        3 => 'http://docs.racket-lang.org/reference/',
        +        4 => 'http://docs.racket-lang.org/reference/',
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        1 => '#\\\\(nul|null|backspace|tab|newline|linefeed|vtab|page|retur'.
        +            'n|space|rubout|([0-7]{1,3})|(u[[:xdigit:]]{1,4})|(U[[:xdigit:'.
        +            ']]{1,6})|[a-z])',
        +        2 => '#:[^[:space:]()[\\]{}",\']+',
        +        3 => '\'((\\\\ )|([^[:space:]()[\\]{}",\']))+',
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => '[[:space:]()[\\]{}",\']',
        +            ),
        +        'ENABLE_FLAGS' => array(
        +            'SYMBOLS' => GESHI_MAYBE,
        +            'BRACKETS' => GESHI_MAYBE,
        +            'REGEXPS' => GESHI_MAYBE,
        +            'ESCAPE_CHAR' => GESHI_MAYBE,
        +            )
        +        )
        +);
        diff --git a/includes/geshi/rails.php b/includes/geshi/rails.php
        new file mode 100644
        index 0000000..2838719
        --- /dev/null
        +++ b/includes/geshi/rails.php
        @@ -0,0 +1,404 @@
        + 'Rails',
        +    'COMMENT_SINGLE' => array(1 => "#"),
        +    'COMMENT_MULTI' => array("=begin" => "=end"),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"', '`','\''),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'alias', 'and', 'begin', 'break', 'case', 'class',
        +            'def', 'defined', 'do', 'else', 'elsif', 'end',
        +            'ensure', 'for', 'if', 'in', 'module', 'while',
        +            'next', 'not', 'or', 'redo', 'rescue', 'yield',
        +            'retry', 'super', 'then', 'undef', 'unless',
        +            'until', 'when', 'BEGIN', 'END', 'include'
        +            ),
        +        2 => array(
        +            '__FILE__', '__LINE__', 'false', 'nil', 'self', 'true',
        +            'return'
        +            ),
        +        3 => array(
        +            'Array', 'Float', 'Integer', 'String', 'at_exit',
        +            'autoload', 'binding', 'caller', 'catch', 'chop', 'chop!',
        +            'chomp', 'chomp!', 'eval', 'exec', 'exit', 'exit!', 'fail',
        +            'fork', 'format', 'gets', 'global_variables', 'gsub', 'gsub!',
        +            'iterator?', 'lambda', 'load', 'local_variables', 'loop',
        +            'open', 'p', 'print', 'printf', 'proc', 'putc', 'puts',
        +            'raise', 'rand', 'readline', 'readlines', 'require', 'select',
        +            'sleep', 'split', 'sprintf', 'srand', 'sub', 'sub!', 'syscall',
        +            'system', 'trace_var', 'trap', 'untrace_var'
        +            ),
        +        4 => array(
        +            'Abbrev', 'ArgumentError', 'Base64', 'Benchmark',
        +            'Benchmark::Tms', 'Bignum', 'Binding', 'CGI', 'CGI::Cookie',
        +            'CGI::HtmlExtension', 'CGI::QueryExtension',
        +            'CGI::Session', 'CGI::Session::FileStore',
        +            'CGI::Session::MemoryStore', 'Class', 'Comparable', 'Complex',
        +            'ConditionVariable', 'Continuation', 'Data',
        +            'Date', 'DateTime', 'Delegator', 'Dir', 'EOFError', 'ERB',
        +            'ERB::Util', 'Enumerable', 'Enumerable::Enumerator', 'Errno',
        +            'Exception', 'FalseClass', 'File',
        +            'File::Constants', 'File::Stat', 'FileTest', 'FileUtils',
        +            'FileUtils::DryRun', 'FileUtils::NoWrite',
        +            'FileUtils::StreamUtils_', 'FileUtils::Verbose', 'Find',
        +            'Fixnum', 'FloatDomainError', 'Forwardable', 'GC', 'Generator',
        +            'Hash', 'IO', 'IOError', 'Iconv', 'Iconv::BrokenLibrary',
        +            'Iconv::Failure', 'Iconv::IllegalSequence',
        +            'Iconv::InvalidCharacter', 'Iconv::InvalidEncoding',
        +            'Iconv::OutOfRange', 'IndexError', 'Interrupt', 'Kernel',
        +            'LoadError', 'LocalJumpError', 'Logger', 'Logger::Application',
        +            'Logger::Error', 'Logger::Formatter', 'Logger::LogDevice',
        +            'Logger::LogDevice::LogDeviceMutex', 'Logger::Severity',
        +            'Logger::ShiftingError', 'Marshal', 'MatchData',
        +            'Math', 'Matrix', 'Method', 'Module', 'Mutex', 'NameError',
        +            'NameError::message', 'NilClass', 'NoMemoryError',
        +            'NoMethodError', 'NotImplementedError', 'Numeric', 'Object',
        +            'ObjectSpace', 'Observable', 'PStore', 'PStore::Error',
        +            'Pathname', 'Precision', 'Proc', 'Process', 'Process::GID',
        +            'Process::Status', 'Process::Sys', 'Process::UID', 'Queue',
        +            'Range', 'RangeError', 'Rational', 'Regexp', 'RegexpError',
        +            'RuntimeError', 'ScriptError', 'SecurityError', 'Set',
        +            'Shellwords', 'Signal', 'SignalException', 'SimpleDelegator',
        +            'SingleForwardable', 'Singleton', 'SingletonClassMethods',
        +            'SizedQueue', 'SortedSet', 'StandardError', 'StringIO',
        +            'StringScanner', 'StringScanner::Error', 'Struct', 'Symbol',
        +            'SyncEnumerator', 'SyntaxError', 'SystemCallError',
        +            'SystemExit', 'SystemStackError', 'Tempfile',
        +            'Test::Unit::TestCase', 'Test::Unit', 'Test', 'Thread',
        +            'ThreadError', 'ThreadGroup',
        +            'ThreadsWait', 'Time', 'TrueClass', 'TypeError', 'URI',
        +            'URI::BadURIError', 'URI::Error', 'URI::Escape', 'URI::FTP',
        +            'URI::Generic', 'URI::HTTP', 'URI::HTTPS',
        +            'URI::InvalidComponentError', 'URI::InvalidURIError',
        +            'URI::LDAP', 'URI::MailTo', 'URI::REGEXP',
        +            'URI::REGEXP::PATTERN', 'UnboundMethod', 'Vector', 'YAML',
        +            'ZeroDivisionError', 'Zlib',
        +            'Zlib::BufError', 'Zlib::DataError', 'Zlib::Deflate',
        +            'Zlib::Error', 'Zlib::GzipFile', 'Zlib::GzipFile::CRCError',
        +            'Zlib::GzipFile::Error', 'Zlib::GzipFile::LengthError',
        +            'Zlib::GzipFile::NoFooter', 'Zlib::GzipReader',
        +            'Zlib::GzipWriter', 'Zlib::Inflate', 'Zlib::MemError',
        +            'Zlib::NeedDict', 'Zlib::StreamEnd', 'Zlib::StreamError',
        +            'Zlib::VersionError',
        +            'Zlib::ZStream',
        +            'ActionController::AbstractRequest',
        +            'ActionController::Assertions::DomAssertions',
        +            'ActionController::Assertions::ModelAssertions',
        +            'ActionController::Assertions::ResponseAssertions',
        +            'ActionController::Assertions::RoutingAssertions',
        +            'ActionController::Assertions::SelectorAssertions',
        +            'ActionController::Assertions::TagAssertions',
        +            'ActionController::Base',
        +            'ActionController::Benchmarking::ClassMethods',
        +            'ActionController::Caching',
        +            'ActionController::Caching::Actions',
        +            'ActionController::Caching::Actions::ActionCachePath',
        +            'ActionController::Caching::Fragments',
        +            'ActionController::Caching::Pages',
        +            'ActionController::Caching::Pages::ClassMethods',
        +            'ActionController::Caching::Sweeping',
        +            'ActionController::Components',
        +            'ActionController::Components::ClassMethods',
        +            'ActionController::Components::InstanceMethods',
        +            'ActionController::Cookies',
        +            'ActionController::Filters::ClassMethods',
        +            'ActionController::Flash',
        +            'ActionController::Flash::FlashHash',
        +            'ActionController::Helpers::ClassMethods',
        +            'ActionController::Integration::Session',
        +            'ActionController::IntegrationTest',
        +            'ActionController::Layout::ClassMethods',
        +            'ActionController::Macros',
        +            'ActionController::Macros::AutoComplete::ClassMethods',
        +            'ActionController::Macros::InPlaceEditing::ClassMethods',
        +            'ActionController::MimeResponds::InstanceMethods',
        +            'ActionController::Pagination',
        +            'ActionController::Pagination::ClassMethods',
        +            'ActionController::Pagination::Paginator',
        +            'ActionController::Pagination::Paginator::Page',
        +            'ActionController::Pagination::Paginator::Window',
        +            'ActionController::Rescue', 'ActionController::Resources',
        +            'ActionController::Routing',
        +            'ActionController::Scaffolding::ClassMethods',
        +            'ActionController::SessionManagement::ClassMethods',
        +            'ActionController::Streaming', 'ActionController::TestProcess',
        +            'ActionController::TestUploadedFile',
        +            'ActionController::UrlWriter',
        +            'ActionController::Verification::ClassMethods',
        +            'ActionMailer::Base', 'ActionView::Base',
        +            'ActionView::Helpers::ActiveRecordHelper',
        +            'ActionView::Helpers::AssetTagHelper',
        +            'ActionView::Helpers::BenchmarkHelper',
        +            'ActionView::Helpers::CacheHelper',
        +            'ActionView::Helpers::CaptureHelper',
        +            'ActionView::Helpers::DateHelper',
        +            'ActionView::Helpers::DebugHelper',
        +            'ActionView::Helpers::FormHelper',
        +            'ActionView::Helpers::FormOptionsHelper',
        +            'ActionView::Helpers::FormTagHelper',
        +            'ActionView::Helpers::JavaScriptHelper',
        +            'ActionView::Helpers::JavaScriptMacrosHelper',
        +            'ActionView::Helpers::NumberHelper',
        +            'ActionView::Helpers::PaginationHelper',
        +            'ActionView::Helpers::PrototypeHelper',
        +            'ActionView::Helpers::PrototypeHelper::JavaScriptGenerator::GeneratorMethods',
        +            'ActionView::Helpers::ScriptaculousHelper',
        +            'ActionView::Helpers::TagHelper',
        +            'ActionView::Helpers::TextHelper',
        +            'ActionView::Helpers::UrlHelper', 'ActionView::Partials',
        +            'ActionWebService::API::Method', 'ActionWebService::Base',
        +            'ActionWebService::Client::Soap',
        +            'ActionWebService::Client::XmlRpc',
        +            'ActionWebService::Container::ActionController::ClassMethods',
        +            'ActionWebService::Container::Delegated::ClassMethods',
        +            'ActionWebService::Container::Direct::ClassMethods',
        +            'ActionWebService::Invocation::ClassMethods',
        +            'ActionWebService::Scaffolding::ClassMethods',
        +            'ActionWebService::SignatureTypes', 'ActionWebService::Struct',
        +            'ActiveRecord::Acts::List::ClassMethods',
        +            'ActiveRecord::Acts::List::InstanceMethods',
        +            'ActiveRecord::Acts::NestedSet::ClassMethods',
        +            'ActiveRecord::Acts::NestedSet::InstanceMethods',
        +            'ActiveRecord::Acts::Tree::ClassMethods',
        +            'ActiveRecord::Acts::Tree::InstanceMethods',
        +            'ActiveRecord::Aggregations::ClassMethods',
        +            'ActiveRecord::Associations::ClassMethods',
        +            'ActiveRecord::AttributeMethods::ClassMethods',
        +            'ActiveRecord::Base',
        +            'ActiveRecord::Calculations::ClassMethods',
        +            'ActiveRecord::Callbacks',
        +            'ActiveRecord::ConnectionAdapters::AbstractAdapter',
        +            'ActiveRecord::ConnectionAdapters::Column',
        +            'ActiveRecord::ConnectionAdapters::DB2Adapter',
        +            'ActiveRecord::ConnectionAdapters::DatabaseStatements',
        +            'ActiveRecord::ConnectionAdapters::FirebirdAdapter',
        +            'ActiveRecord::ConnectionAdapters::FrontBaseAdapter',
        +            'ActiveRecord::ConnectionAdapters::MysqlAdapter',
        +            'ActiveRecord::ConnectionAdapters::OpenBaseAdapter',
        +            'ActiveRecord::ConnectionAdapters::OracleAdapter',
        +            'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter',
        +            'ActiveRecord::ConnectionAdapters::Quoting',
        +            'ActiveRecord::ConnectionAdapters::SQLServerAdapter',
        +            'ActiveRecord::ConnectionAdapters::SQLiteAdapter',
        +            'ActiveRecord::ConnectionAdapters::SchemaStatements',
        +            'ActiveRecord::ConnectionAdapters::SybaseAdapter::ColumnWithIdentity',
        +            'ActiveRecord::ConnectionAdapters::SybaseAdapterContext',
        +            'ActiveRecord::ConnectionAdapters::TableDefinition',
        +            'ActiveRecord::Errors', 'ActiveRecord::Locking',
        +            'ActiveRecord::Locking::Optimistic',
        +            'ActiveRecord::Locking::Optimistic::ClassMethods',
        +            'ActiveRecord::Locking::Pessimistic',
        +            'ActiveRecord::Migration', 'ActiveRecord::Observer',
        +            'ActiveRecord::Observing::ClassMethods',
        +            'ActiveRecord::Reflection::ClassMethods',
        +            'ActiveRecord::Reflection::MacroReflection',
        +            'ActiveRecord::Schema', 'ActiveRecord::Timestamp',
        +            'ActiveRecord::Transactions::ClassMethods',
        +            'ActiveRecord::Validations',
        +            'ActiveRecord::Validations::ClassMethods',
        +            'ActiveRecord::XmlSerialization',
        +            'ActiveSupport::CachingTools::HashCaching',
        +            'ActiveSupport::CoreExtensions::Array::Conversions',
        +            'ActiveSupport::CoreExtensions::Array::Grouping',
        +            'ActiveSupport::CoreExtensions::Date::Conversions',
        +            'ActiveSupport::CoreExtensions::Hash::Conversions',
        +            'ActiveSupport::CoreExtensions::Hash::Conversions::ClassMethods',
        +            'ActiveSupport::CoreExtensions::Hash::Diff',
        +            'ActiveSupport::CoreExtensions::Hash::Keys',
        +            'ActiveSupport::CoreExtensions::Hash::ReverseMerge',
        +            'ActiveSupport::CoreExtensions::Integer::EvenOdd',
        +            'ActiveSupport::CoreExtensions::Integer::Inflections',
        +            'ActiveSupport::CoreExtensions::Numeric::Bytes',
        +            'ActiveSupport::CoreExtensions::Numeric::Time',
        +            'ActiveSupport::CoreExtensions::Pathname::CleanWithin',
        +            'ActiveSupport::CoreExtensions::Range::Conversions',
        +            'ActiveSupport::CoreExtensions::String::Access',
        +            'ActiveSupport::CoreExtensions::String::Conversions',
        +            'ActiveSupport::CoreExtensions::String::Inflections',
        +            'ActiveSupport::CoreExtensions::String::Iterators',
        +            'ActiveSupport::CoreExtensions::String::StartsEndsWith',
        +            'ActiveSupport::CoreExtensions::String::Unicode',
        +            'ActiveSupport::CoreExtensions::Time::Calculations',
        +            'ActiveSupport::CoreExtensions::Time::Calculations::ClassMethods',
        +            'ActiveSupport::CoreExtensions::Time::Conversions',
        +            'ActiveSupport::Multibyte::Chars',
        +            'ActiveSupport::Multibyte::Handlers::UTF8Handler',
        +            'Breakpoint', 'Builder::BlankSlate', 'Builder::XmlMarkup',
        +            'Fixtures',
        +            'HTML::Selector', 'HashWithIndifferentAccess', 'Inflector',
        +            'Inflector::Inflections', 'Mime', 'Mime::Type',
        +            'OCI8AutoRecover', 'TimeZone', 'XmlSimple'
        +            ),
        +        5 => array(
        +            'image_tag', 'link_to', 'link_to_remote', 'javascript_include_tag',
        +            'assert_equal', 'assert_not_equal', 'before_filter',
        +            'after_filter', 'render', 'redirect_to', 'hide_action',
        +            'render_to_string', 'url_for', 'controller_name',
        +            'controller_class_name', 'controller_path', 'session',
        +            'render_component', 'render_component_as_string', 'cookie',
        +            'layout', 'flash', 'auto_complete_for', 'in_place_editor_for',
        +            'respond_to', 'paginate', 'current_page', 'each', 'first',
        +            'first_page', 'last_page', 'last', 'length', 'new', 'page_count',
        +            'previous', 'scaffold', 'send_data',
        +            'send_file', 'deliver', 'receive', 'error_messages_for',
        +            'error_message_on', 'form', 'input', 'stylesheet_link_tag',
        +            'stylesheet_path', 'content_for', 'select_date', 'ago',
        +            'month', 'day', 'check_box', 'fields_for', 'file_field',
        +            'form_for', 'hidden_field', 'text_area', 'password_field',
        +            'collection_select', 'options_for_select',
        +            'options_from_collection_for_select', 'file_field_tag',
        +            'form_for_tag', 'hidden_field_tag', 'text_area_tag',
        +            'password_field_tag', 'link_to_function', 'javascript_tag',
        +            'human_size', 'number_to_currency', 'pagination_links',
        +            'form_remote_tag', 'form_remote_for',
        +            'submit_to_remote', 'remote_function', 'observe_form',
        +            'observe_field', 'remote_form_for', 'options_for_ajax', 'alert',
        +            'call', 'assign', 'show', 'hide', 'insert_html', 'sortable',
        +            'toggle', 'visual_effect', 'replace', 'replace_html', 'remove',
        +            'save', 'save!', 'draggable', 'drop_receiving', 'literal',
        +            'draggable_element', 'drop_receiving_element', 'sortable_element',
        +            'content_tag', 'tag', 'link_to_image', 'link_to_if',
        +            'link_to_unless', 'mail_to', 'link_image_to', 'button_to',
        +            'current_page?', 'act_as_list', 'act_as_nested', 'act_as_tree',
        +            'has_many', 'has_one', 'belongs_to', 'has_many_and_belogns_to',
        +            'delete', 'destroy', 'destroy_all', 'clone', 'deep_clone', 'copy',
        +            'update', 'table_name', 'primary_key', 'sum', 'maximun', 'minimum',
        +            'count', 'size', 'after_save', 'after_create', 'before_save',
        +            'before_create', 'add_to_base', 'errors', 'add', 'validate',
        +            'validates_presence_of', 'validates_numericality_of',
        +            'validates_uniqueness_of', 'validates_length_of',
        +            'validates_format_of', 'validates_size_of', 'to_a', 'to_s',
        +            'to_xml', 'to_i'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}', '%', '&', '*', '|', '/', '<', '>',
        +        '+', '-', '=>', '<<'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color:#9966CC; font-weight:bold;',
        +            2 => 'color:#0000FF; font-weight:bold;',
        +            3 => 'color:#CC0066; font-weight:bold;',
        +            4 => 'color:#CC00FF; font-weight:bold;',
        +            5 => 'color:#5A0A0A; font-weight:bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color:#008000; font-style:italic;',
        +                    'MULTI' => 'color:#000080; font-style:italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color:#000099;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color:#006600; font-weight:bold;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color:#996600;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color:#006666;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color:#9900CC;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color:#006600; font-weight:bold;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color:#ff6633; font-weight:bold;',
        +            1 => 'color:#0066ff; font-weight:bold;',
        +            2 => 'color:#6666ff; font-weight:bold;',
        +            3 => 'color:#ff3333; font-weight:bold;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => '',
        +            2 => '',
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        0 => array(
        +            GESHI_SEARCH => "([[:space:]])(\\$[a-zA-Z_][a-zA-Z0-9_]*)",
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +            ),
        +        1 => array(
        +            GESHI_SEARCH => "([[:space:]])(@[a-zA-Z_][a-zA-Z0-9_]*)",
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +            ),
        +        2 => "([A-Z][a-zA-Z0-9_]*::)+[A-Z][a-zA-Z0-9_]*", //Static OOP References
        +        3 => array(
        +            GESHI_SEARCH => "([[:space:]]|\[|\()(:[a-zA-Z_][a-zA-Z0-9_]*)",
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +            )
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
        +    'SCRIPT_DELIMITERS' => array(
        +        0 => array(
        +            '<%' => '%>'
        +            )
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => true
        +        )
        +);
        diff --git a/includes/geshi/rbs.php b/includes/geshi/rbs.php
        new file mode 100644
        index 0000000..02c2fcf
        --- /dev/null
        +++ b/includes/geshi/rbs.php
        @@ -0,0 +1,224 @@
        + 'RBScript',
        +    'COMMENT_SINGLE' => array( 1 => '//', 2 => "'" ),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(
        +        3 => '/REM\s.*$/im',
        +        4 => '/&b[01]+/',
        +        5 => '/&o[0-7]+/',
        +        6 => '/&h[a-f0-9]+/i',
        +        7 => '/&c[a-f0-9]+/i',
        +        8 => '/&u[a-f0-9]+/i',
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'Int8', 'Int16', 'Int32', 'Int64', 'Uint8', 'Uint16', 'Uint32', 'Uint64', 'Byte', 'Integer',
        +            'Single', 'Double', 'Boolean', 'String', 'Color', 'Object', 'Variant'
        +            ),
        +        2 => array(
        +            'Private', 'Public', 'Protected',
        +            'Sub', 'Function', 'Delegate', 'Exception',
        +            ),
        +        3 => array(
        +            'IsA',
        +            'And', 'Or', 'Not', 'Xor',
        +            'If', 'Then', 'Else', 'ElseIf',
        +            'Select', 'Case',
        +            'For', 'Each', 'In', 'To', 'Step', 'Next',
        +            'Do', 'Loop', 'Until',
        +            'While', 'Wend',
        +            'Continue', 'Exit', 'Goto', 'End',
        +            ),
        +        4 => array(
        +            'Const', 'Static',
        +            'Dim', 'As', 'Redim',
        +            'Me', 'Self', 'Super', 'Extends', 'Implements',
        +            'ByRef', 'ByVal', 'Assigns', 'ParamArray',
        +            'Mod',
        +            'Raise',
        +            ),
        +        5 => array(
        +            'False', 'True', 'Nil'
        +            ),
        +        6 => array(
        +            'Abs',
        +            'Acos',
        +            'Asc',
        +            'AscB',
        +            'Asin',
        +            'Atan',
        +            'Atan2',
        +            'CDbl',
        +            'Ceil',
        +            'Chr',
        +            'ChrB',
        +            'CMY',
        +            'Cos',
        +            'CountFields',
        +            'CStr',
        +            'Exp',
        +            'Floor',
        +            'Format',
        +            'Hex',
        +            'HSV',
        +            'InStr',
        +            'InStrB',
        +            'Left',
        +            'LeftB',
        +            'Len',
        +            'LenB',
        +            'Log',
        +            'Lowercase',
        +            'LTrim',
        +            'Max',
        +            'Microseconds',
        +            'Mid',
        +            'MidB',
        +            'Min',
        +            'NthField',
        +            'Oct',
        +            'Pow',
        +            'Replace',
        +            'ReplaceB',
        +            'ReplaceAll',
        +            'ReplaceAllB',
        +            'RGB',
        +            'Right',
        +            'RightB',
        +            'Rnd',
        +            'Round',
        +            'RTrim',
        +            'Sin',
        +            'Sqrt',
        +            'Str',
        +            'StrComp',
        +            'Tan',
        +            'Ticks',
        +            'Titlecase',
        +            'Trim',
        +            'UBound',
        +            'Uppercase',
        +            'Val',
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +            '+', '-', '*', '/', '\\', '^', '<', '>', '=', '<>', '&'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        6 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #F660AB; font-weight: bold;',
        +            2 => 'color: #E56717; font-weight: bold;',
        +            3 => 'color: #8D38C9; font-weight: bold;',
        +            4 => 'color: #151B8D; font-weight: bold;',
        +            5 => 'color: #00C2FF; font-weight: bold;',
        +            6 => 'color: #3EA99F; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008000;',
        +            2 => 'color: #008000;',
        +            3 => 'color: #008000;',
        +
        +            4 => 'color: #800000;',
        +            5 => 'color: #800000;',
        +            6 => 'color: #800000;',
        +            7 => 'color: #800000;',
        +            8 => 'color: #800000;',
        +            ),
        +        'BRACKETS' => array(
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #800000;'
        +            ),
        +        'NUMBERS' => array(
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #800000; font-weight: bold;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'ENABLE_FLAGS' => array(
        +            'BRACKETS' => GESHI_NEVER,
        +            'SYMBOLS' => GESHI_NEVER,
        +            'NUMBERS' => GESHI_NEVER
        +            )
        +        )
        +);
        diff --git a/includes/geshi/rebol.php b/includes/geshi/rebol.php
        new file mode 100644
        index 0000000..7acb736
        --- /dev/null
        +++ b/includes/geshi/rebol.php
        @@ -0,0 +1,194 @@
        + 'REBOL',
        +    'COMMENT_SINGLE' => array(1 => ';'),
        +    'COMMENT_MULTI' => array('rebol [' => ']', 'comment [' => ']'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'binary!','block!','char!','date!','decimal!','email!','file!',
        +            'hash!','integer!','issue!','list!','logic!','money!','none!',
        +            'object!','paren!','pair!','path!','string!','tag!','time!',
        +            'tuple!','url!',
        +            ),
        +        2 => array(
        +            'all','any','attempt','break','catch','compose','disarm','dispatch',
        +            'do','do-events','does','either','else','exit','for','forall',
        +            'foreach','forever','forskip','func','function','halt','has','if',
        +            'launch','loop','next','quit','reduce','remove-each','repeat',
        +            'return','secure','switch','throw','try','until','wait','while',
        +            ),
        +        3 => array(
        +            'about','abs','absolute','add','alert','alias','alter','and',
        +            'any-block?','any-function?','any-string?','any-type?','any-word?',
        +            'append','arccosine','arcsine','arctangent','array','as-pair',
        +            'ask','at','back','binary?','bind','bitset?','block?','brightness?',
        +            'browse','build-tag','caret-to-offset','center-face','change',
        +            'change-dir','char?','charset','checksum','choose','clean-path',
        +            'clear','clear-fields','close','comment','complement','component?',
        +            'compress','confirm','connected?','construct','context','copy',
        +            'cosine','datatype?','date?','debase','decimal?','decode-cgi',
        +            'decompress','dehex','delete','detab','difference','dir?','dirize',
        +            'divide','dump-face','dump-obj','echo','email?','empty?','enbase',
        +            'entab','equal?','error?','even?','event?','exclude','exists?',
        +            'exp','extract','fifth','file?','find','first','flash','focus',
        +            'form','found?','fourth','free','function?','get','get-modes',
        +            'get-word?','greater-or-equal?','greater?','hash?','head','head?',
        +            'help','hide','hide-popup','image?','import-email','in',
        +            'in-window?','index?','info?','inform','input','input?','insert',
        +            'integer?','intersect','issue?','join','last','layout','length?',
        +            'lesser-or-equal?','lesser?','library?','license','link?',
        +            'list-dir','list?','lit-path?','lit-word?','load','load-image',
        +            'log-10','log-2','log-e','logic?','lowercase','make','make-dir',
        +            'make-face','max','maximum','maximum-of','min','minimum',
        +            'minimum-of','modified?','mold','money?','multiply','native?',
        +            'negate','negative?','none?','not','not-equal?','now','number?',
        +            'object?','odd?','offset-to-caret','offset?','op?','open','or',
        +            'pair?','paren?','parse','parse-xml','path?','pick','poke','port?',
        +            'positive?','power','prin','print','probe','protect',
        +            'protect-system','query','random','read','read-io','recycle',
        +            'refinement?','reform','rejoin','remainder','remold','remove',
        +            'rename',
        +            //'repeat',
        +            'repend','replace','request','request-color','request-date',
        +            'request-download','request-file','request-list','request-pass',
        +            'request-text','resend','reverse','routine?','same?','save',
        +            'script?','second','select','send','series?','set','set-modes',
        +            'set-net','set-path?','set-word?','show','show-popup','sign?',
        +            'sine','size-text','size?','skip','sort','source','span?',
        +            'split-path','square-root','strict-equal?','strict-not-equal?',
        +            'string?','struct?','stylize','subtract','suffix?','tag?','tail',
        +            'tail?','tangent','third','time?','to','to-binary','to-bitset',
        +            'to-block','to-char','to-date','to-decimal','to-email','to-file',
        +            'to-get-word','to-hash','to-hex','to-idate','to-image','to-integer',
        +            'to-issue','to-list','to-lit-path','to-lit-word','to-local-file',
        +            'to-logic','to-money','to-pair','to-paren','to-path',
        +            'to-rebol-file','to-refinement','to-set-path','to-set-word',
        +            'to-string','to-tag','to-time','to-tuple','to-url','to-word',
        +            'trace','trim','tuple?','type?','unfocus','union','unique',
        +            'unprotect','unset','unset?','unview','update','upgrade',
        +            'uppercase','url?','usage','use','value?','view','viewed?','what',
        +            'what-dir','within?','word?','write','write-io','xor','zero?',
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #000066;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +//            2 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;',
        +            2 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => '',
        +            2 => '',
        +            3 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +//        2 => 'includes/dico_rebol.php?word={FNAME}',
        +//        3 => 'includes/dico_rebol.php?word={FNAME}'
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        0 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*",
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/reg.php b/includes/geshi/reg.php
        new file mode 100644
        index 0000000..f297839
        --- /dev/null
        +++ b/includes/geshi/reg.php
        @@ -0,0 +1,231 @@
        + 'Microsoft Registry',
        +    'COMMENT_SINGLE' => array(1 =>';'),
        +    'COMMENT_MULTI' => array( ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +//        1 => array(),
        +//        2 => array(),
        +        /* Registry Key Constants Not Used */
        +        3 => array(
        +            'HKEY_LOCAL_MACHINE',
        +            'HKEY_CLASSES_ROOT',
        +            'HKEY_CURRENT_USER',
        +            'HKEY_USERS',
        +            'HKEY_CURRENT_CONFIG',
        +            'HKEY_DYN_DATA',
        +            'HKLM', 'HKCR', 'HKCU', 'HKU', 'HKCC', 'HKDD'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '='
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +//        1 => false,
        +//        2 => false,
        +        3 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +//            1 => 'color: #00CCFF;',
        +//            2 => 'color: #0000FF;',
        +            3 => 'color: #800000;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #009900;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'NUMBERS' => array(
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #00CCFF;',
        +            1 => 'color: #0000FF;',
        +            2 => '',
        +            3 => 'color: #0000FF;',
        +            4 => 'color: #0000FF;',
        +            5 => '',
        +            6 => '',
        +            7 => '',
        +            8 => 'color: #FF6600;',
        +            )
        +        ),
        +    'URLS' => array(
        +//        1 => '',
        +//        2 => '',
        +        3 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        // Highlight Key Delimiters
        +        0 => array(
        +            GESHI_SEARCH => '((^|\\n)\\s*)(\\\\\\[(.*)\\\\\\])(\\s*(\\n|$))',
        +            GESHI_REPLACE => '\\3',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\5'
        +//            GESHI_CLASS => 'kw1'
        +            ),
        +        // Highlight File Format Header Version 5
        +        1 => array(
        +            GESHI_SEARCH => '(^\s*)(Windows Registry Editor Version \d+\.\d+)(\s*$)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3',
        +            GESHI_CLASS => 'geshi_registry_header'
        +            ),
        +        // Highlight File Format Header Version 4
        +        2 => array(
        +            GESHI_SEARCH => '(^\\s*)(REGEDIT\s?\d+)(\s*$)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3',
        +            GESHI_CLASS => 'geshi_registry_header'
        +            ),
        +        // Highlight dword: 32 bit integer values
        +        3 => array(
        +            GESHI_SEARCH => '(=\s*)(dword:[0-9a-fA-F]{8})(\s*$)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3'
        +//            GESHI_CLASS => 'kw2'
        +            ),
        +        // Highlight variable names
        +        4 => array(
        +            GESHI_SEARCH => '(^\s*)(\".*?\")(\s*=)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3',
        +            GESHI_CLASS => 'geshi_variable'
        +            ),
        +        // Highlight String Values
        +        5 => array(
        +            GESHI_SEARCH => '(=\s*)(\".*?\")(\s*$)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3',
        +            GESHI_CLASS => 'st0'
        +            ),
        +        // Highlight Hexadecimal Values (Single-Line and Multi-Line)
        +        6 => array(
        +            GESHI_SEARCH => '(=\s*\n?\s*)(hex:[0-9a-fA-F]{2}(,(\\\s*\n\s*)?[0-9a-fA-F]{2})*)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '',
        +            GESHI_CLASS => 'kw2'
        +            ),
        +        // Highlight Default Variable
        +        7 => array(
        +            GESHI_SEARCH => '(^\s*)(@)(\s*=)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'm',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3',
        +            GESHI_CLASS => 'geshi_variable'
        +            ),
        +        // Highlight GUID's found anywhere.
        +        8 => array(
        +            GESHI_SEARCH => '(\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\})',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => 'i',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => '',
        +            GESHI_CLASS => 'geshi_guid'
        +            )
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'ENABLE_FLAGS' => array(
        +            'NUMBERS' => GESHI_NEVER,
        +        )
        +    )
        +);
        diff --git a/includes/geshi/rexx.php b/includes/geshi/rexx.php
        new file mode 100644
        index 0000000..86f44a2
        --- /dev/null
        +++ b/includes/geshi/rexx.php
        @@ -0,0 +1,160 @@
        + 'rexx',
        +    'COMMENT_SINGLE' => array(1 => '--'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'address', 'arg', 'attribute', 'call', 'constant', 'do',
        +            'drop', 'exit', 'forward', 'if',
        +            'interpret', 'iterate', 'leave', 'loop', 'nop', 'numeric',
        +            'options', 'parse', 'procedure', 'pull', 'push', 'queue',
        +            'raise', 'return', 'say', 'select', 'signal', 'trace'
        +            ),
        +        2 => array(
        +            'by', 'digits', 'engineering', 'error', 'expose',
        +            'failure', 'for', 'forever', 'form', 'fuzz', 'halt',
        +            'name', 'novalue', 'off', 'on', 'over', 'scientific', 'source',
        +            'syntax', 'to', 'until', 'upper', 'version',
        +            'while', 'with'
        +            ),
        +        3 => array(
        +            'else', 'end', 'otherwise', 'then', 'when'
        +            ),
        +        4 => array(
        +            'rc', 'result', 'sigl'
        +            ),
        +        5 => array(
        +            'placeholderforoorexxdirectives'
        +            ),
        +        6 => array(
        +            'abbrev', 'abs', 'beep', 'bitand', 'bitor',
        +            'bitxor', 'b2x', 'center', 'centre', 'changestr', 'charin',
        +            'charout', 'chars', 'compare', 'condition', 'copies',
        +            'countstr', 'c2d', 'c2x', 'datatype', 'date', 'delstr',
        +            'delword', 'directory', 'd2c', 'd2x', 'endlocal',
        +            'errortext', 'filespec', 'format', 'insert',
        +            'lastpos', 'left', 'length', 'linein', 'lineout', 'lines',
        +            'lower', 'max', 'min', 'overlay', 'pos', 'queued', 'random',
        +            'reverse', 'right', 'rxfuncadd', 'rxfuncdrop', 'rxfuncquery',
        +            'rxqueue', 'setlocal', 'sign', 'sourceline', 'space',
        +            'stream', 'strip', 'substr', 'subword', 'symbol', 'time',
        +            'translate', 'trunc', 'userid', 'value',
        +            'var', 'verify', 'word', 'wordindex', 'wordlength', 'wordpos',
        +            'words', 'xrange', 'x2b', 'x2c', 'x2d'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '<', '>', '=', '+', '-', '*', '**', '/', '|', '%', '^', '&', ':'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => true,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        6 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #ff0000; font-weight: bold;',
        +            3 => 'color: #00ff00; font-weight: bold;',
        +            4 => 'color: #0000ff; font-weight: bold;',
        +            5 => 'color: #880088; font-weight: bold;',
        +            6 => 'color: #888800; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666;',
        +            'MULTI' => 'color: #808080;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #202020;',
        +            2 => 'color: #202020;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/robots.php b/includes/geshi/robots.php
        new file mode 100644
        index 0000000..8b1fb23
        --- /dev/null
        +++ b/includes/geshi/robots.php
        @@ -0,0 +1,98 @@
        + 'robots.txt',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(1 => "/^Comment:.*?/m"),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'Allow', 'Crawl-delay', 'Disallow', 'Request-rate', 'Robot-version',
        +            'Sitemap', 'User-agent', 'Visit-time'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        ':'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => 'http://www.robotstxt.org/wc/norobots.html'
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/rpmspec.php b/includes/geshi/rpmspec.php
        new file mode 100644
        index 0000000..3ef70e6
        --- /dev/null
        +++ b/includes/geshi/rpmspec.php
        @@ -0,0 +1,131 @@
        + 'RPM Specification File',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array(),
        +    'QUOTEMARKS' => array('"','`'),
        +    'ESCAPE_CHAR' => '\\',
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        ),
        +    'KEYWORDS' => array(
        +        ),
        +    'SYMBOLS' => array(
        +        '<', '>', '=',
        +        '!', '@', '~', '&', '|', '^',
        +        '+','-', '*', '/', '%',
        +        ',', ';', '?', '.', ':'
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            'HARD' => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;',
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;',
        +            2 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(
        +            1 => 'color: #0000ff;',
        +            2 => 'color: #009999;',
        +            3 => 'color: #000000; font-weight: bold;',
        +            4 => 'color: #ff6600; font-style: italic;',
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'REGEXPS' => array(
        +        1 => array(
        +            // search for generic macros
        +            GESHI_SEARCH => '(%{?[a-zA-Z0-9_]+}?)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => '',
        +            ),
        +        2 => array(
        +            // search for special macros
        +            GESHI_SEARCH => '(%(?:define|patch\d*|mklibname|mkrel|configure\S+|makeinstall\S+|make_session|make|defattr|config|doc|setup))',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => 'i',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => '',
        +            ),
        +        3 => array (
        +            // special definitions
        +            GESHI_SEARCH => '((?:summary|license|buildroot|buildrequires|provides|version|release|source\d*|group|buildarch|autoreqprov|provides|obsoletes|vendor|distribution|suggests|autoreq|autoprov|conflicts|name|url|requires|patch\d*):)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => 'i',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => '',
        +            ),
        +        4 => array (
        +            // section delimiting words
        +            GESHI_SEARCH => '(%(?:description|package|prep|build|install|clean|postun|preun|post|pre|files|changelog))',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => 'i',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => '',
        +            ),
        +        ),
        +    'URLS' => array(),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +);
        diff --git a/includes/geshi/rsplus.php b/includes/geshi/rsplus.php
        new file mode 100644
        index 0000000..7b15f51
        --- /dev/null
        +++ b/includes/geshi/rsplus.php
        @@ -0,0 +1,481 @@
        + 'R / S+',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"', "'"),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'else','global','in', 'otherwise','persistent',
        +            ),
        +        2 => array( // base package
        +            '$.package_version', '$<-', '$<-.data.frame', 'abbreviate', 'abs', 'acos', 'acosh', 'addNA', 'addTaskCallback',
        +            'agrep', 'alist', 'all', 'all.equal', 'all.equal.character', 'all.equal.default', 'all.equal.factor',
        +            'all.equal.formula', 'all.equal.language', 'all.equal.list', 'all.equal.numeric', 'all.equal.POSIXct',
        +            'all.equal.raw', 'all.names', 'all.vars', 'any', 'aperm', 'append', 'apply', 'Arg', 'args', 'array', 'as.array',
        +            'as.array.default', 'as.call', 'as.character', 'as.character.condition', 'as.character.Date', 'as.character.default',
        +            'as.character.error', 'as.character.factor', 'as.character.hexmode', 'as.character.numeric_version', 'as.character.octmode',
        +            'as.character.POSIXt', 'as.character.srcref', 'as.complex', 'as.data.frame', 'as.data.frame.array', 'as.data.frame.AsIs',
        +            'as.data.frame.character', 'as.data.frame.complex', 'as.data.frame.data.frame', 'as.data.frame.Date', 'as.data.frame.default',
        +            'as.data.frame.difftime', 'as.data.frame.factor', 'as.data.frame.integer', 'as.data.frame.list', 'as.data.frame.logical',
        +            'as.data.frame.matrix', 'as.data.frame.model.matrix', 'as.data.frame.numeric', 'as.data.frame.numeric_version',
        +            'as.data.frame.ordered', 'as.data.frame.POSIXct', 'as.data.frame.POSIXlt', 'as.data.frame.raw', 'as.data.frame.table',
        +            'as.data.frame.ts', 'as.data.frame.vector', 'as.Date', 'as.Date.character', 'as.Date.date', 'as.Date.dates',
        +            'as.Date.default', 'as.Date.factor', 'as.Date.numeric', 'as.Date.POSIXct', 'as.Date.POSIXlt', 'as.difftime', 'as.double',
        +            'as.double.difftime', 'as.double.POSIXlt', 'as.environment', 'as.expression', 'as.expression.default', 'as.factor',
        +            'as.function', 'as.function.default', 'as.hexmode', 'as.integer', 'as.list', 'as.list.data.frame', 'as.list.default',
        +            'as.list.environment', 'as.list.factor', 'as.list.function', 'as.list.numeric_version', 'as.logical', 'as.matrix',
        +            'as.matrix.data.frame', 'as.matrix.default', 'as.matrix.noquote', 'as.matrix.POSIXlt', 'as.name', 'as.null', 'as.null.default',
        +            'as.numeric', 'as.numeric_version', 'as.octmode', 'as.ordered', 'as.package_version', 'as.pairlist', 'as.POSIXct',
        +            'as.POSIXct.date', 'as.POSIXct.Date', 'as.POSIXct.dates', 'as.POSIXct.default', 'as.POSIXct.numeric', 'as.POSIXct.POSIXlt',
        +            'as.POSIXlt', 'as.POSIXlt.character', 'as.POSIXlt.date', 'as.POSIXlt.Date', 'as.POSIXlt.dates', 'as.POSIXlt.default',
        +            'as.POSIXlt.factor', 'as.POSIXlt.numeric', 'as.POSIXlt.POSIXct', 'as.qr', 'as.raw', 'as.real', 'as.single',
        +            'as.single.default', 'as.symbol', 'as.table', 'as.table.default', 'as.vector', 'as.vector.factor', 'asin', 'asinh',
        +            'asNamespace', 'asS4', 'assign', 'atan', 'atan2', 'atanh', 'attach', 'attachNamespace', 'attr', 'attr.all.equal',
        +            'attr<-', 'attributes', 'attributes<-', 'autoload', 'autoloader', 'backsolve', 'baseenv', 'basename', 'besselI',
        +            'besselJ', 'besselK', 'besselY', 'beta', 'bindingIsActive', 'bindingIsLocked', 'bindtextdomain', 'body', 'body<-',
        +            'bquote', 'break', 'browser', 'builtins', 'by', 'by.data.frame', 'by.default', 'bzfile', 'c', 'c.Date', 'c.noquote',
        +            'c.numeric_version', 'c.POSIXct', 'c.POSIXlt', 'call', 'callCC', 'capabilities', 'casefold', 'cat', 'category',
        +            'cbind', 'cbind.data.frame', 'ceiling', 'char.expand', 'character', 'charmatch', 'charToRaw', 'chartr', 'check_tzones',
        +            'chol', 'chol.default', 'chol2inv', 'choose', 'class', 'class<-', 'close', 'close.connection', 'close.srcfile',
        +            'closeAllConnections', 'codes', 'codes.factor', 'codes.ordered', 'codes<-', 'col', 'colMeans', 'colnames',
        +            'colnames<-', 'colSums', 'commandArgs', 'comment', 'comment<-', 'complex', 'computeRestarts', 'conditionCall',
        +            'conditionCall.condition', 'conditionMessage', 'conditionMessage.condition', 'conflicts', 'Conj', 'contributors',
        +            'cos', 'cosh', 'crossprod', 'Cstack_info', 'cummax', 'cummin', 'cumprod', 'cumsum', 'cut', 'cut.Date', 'cut.default',
        +            'cut.POSIXt', 'data.class', 'data.frame', 'data.matrix', 'date', 'debug', 'default.stringsAsFactors', 'delay',
        +            'delayedAssign', 'deparse', 'det', 'detach', 'determinant', 'determinant.matrix', 'dget', 'diag', 'diag<-', 'diff',
        +            'diff.Date', 'diff.default', 'diff.POSIXt', 'difftime', 'digamma', 'dim', 'dim.data.frame', 'dim<-', 'dimnames',
        +            'dimnames.data.frame', 'dimnames<-', 'dimnames<-.data.frame', 'dir', 'dir.create', 'dirname', 'do.call', 'double',
        +            'dput', 'dQuote', 'drop', 'dump', 'duplicated', 'duplicated.array', 'duplicated.data.frame', 'duplicated.default',
        +            'duplicated.matrix', 'duplicated.numeric_version', 'duplicated.POSIXlt', 'dyn.load', 'dyn.unload', 'eapply', 'eigen',
        +            'emptyenv', 'encodeString', 'Encoding', 'Encoding<-', 'env.profile', 'environment', 'environment<-', 'environmentIsLocked',
        +            'environmentName', 'eval', 'eval.parent', 'evalq', 'exists', 'exp', 'expand.grid', 'expm1', 'expression', 'F', 'factor',
        +            'factorial', 'fifo', 'file', 'file.access', 'file.append', 'file.choose', 'file.copy', 'file.create', 'file.exists',
        +            'file.info', 'file.path', 'file.remove', 'file.rename', 'file.show', 'file.symlink', 'Filter', 'Find', 'findInterval',
        +            'findPackageEnv', 'findRestart', 'floor', 'flush', 'flush.connection', 'for', 'force', 'formals', 'formals<-',
        +            'format', 'format.AsIs', 'format.char', 'format.data.frame', 'format.Date', 'format.default', 'format.difftime',
        +            'format.factor', 'format.hexmode', 'format.info', 'format.octmode', 'format.POSIXct', 'format.POSIXlt',
        +            'format.pval', 'formatC', 'formatDL', 'forwardsolve', 'function', 'gamma', 'gammaCody', 'gc', 'gc.time',
        +            'gcinfo', 'gctorture', 'get', 'getAllConnections', 'getCallingDLL', 'getCallingDLLe', 'getCConverterDescriptions',
        +            'getCConverterStatus', 'getConnection', 'getDLLRegisteredRoutines', 'getDLLRegisteredRoutines.character',
        +            'getDLLRegisteredRoutines.DLLInfo', 'getenv', 'geterrmessage', 'getExportedValue', 'getHook', 'getLoadedDLLs',
        +            'getNamespace', 'getNamespaceExports', 'getNamespaceImports', 'getNamespaceInfo', 'getNamespaceName',
        +            'getNamespaceUsers', 'getNamespaceVersion', 'getNativeSymbolInfo', 'getNumCConverters', 'getOption', 'getRversion',
        +            'getSrcLines', 'getTaskCallbackNames', 'gettext', 'gettextf', 'getwd', 'gl', 'globalenv', 'gregexpr', 'grep',
        +            'grepl', 'gsub', 'gzcon', 'gzfile', 'httpclient', 'I', 'iconv', 'iconvlist', 'icuSetCollate', 'identical', 'identity',
        +            'if', 'ifelse', 'Im', 'importIntoEnv', 'inherits', 'integer', 'interaction', 'interactive', 'intersect', 'intToBits',
        +            'intToUtf8', 'inverse.rle', 'invisible', 'invokeRestart', 'invokeRestartInteractively', 'is.array', 'is.atomic',
        +            'is.call', 'is.character', 'is.complex', 'is.data.frame', 'is.double', 'is.element', 'is.environment',
        +            'is.expression', 'is.factor', 'is.finite', 'is.function', 'is.infinite', 'is.integer', 'is.language',
        +            'is.list', 'is.loaded', 'is.logical', 'is.matrix', 'is.na', 'is.na.data.frame', 'is.na.POSIXlt', 'is.na<-',
        +            'is.na<-.default', 'is.na<-.factor', 'is.name', 'is.nan', 'is.null', 'is.numeric', 'is.numeric_version',
        +            'is.numeric.Date', 'is.numeric.POSIXt', 'is.object', 'is.ordered', 'is.package_version', 'is.pairlist', 'is.primitive',
        +            'is.qr', 'is.R', 'is.raw', 'is.real', 'is.recursive', 'is.single', 'is.symbol', 'is.table', 'is.unsorted', 'is.vector',
        +            'isBaseNamespace', 'isdebugged', 'isIncomplete', 'isNamespace', 'ISOdate', 'ISOdatetime', 'isOpen', 'isRestart', 'isS4',
        +            'isSeekable', 'isSymmetric', 'isSymmetric.matrix', 'isTRUE', 'jitter', 'julian', 'julian.Date', 'julian.POSIXt', 'kappa',
        +            'kappa.default', 'kappa.lm', 'kappa.qr', 'kappa.tri', 'kronecker', 'l10n_info', 'La.chol', 'La.chol2inv', 'La.eigen',
        +            'La.svd', 'labels', 'labels.default', 'lapply', 'lazyLoad', 'lazyLoadDBfetch', 'lbeta', 'lchoose', 'length', 'length<-',
        +            'length<-.factor', 'letters', 'LETTERS', 'levels', 'levels.default', 'levels<-', 'levels<-.factor', 'lfactorial', 'lgamma',
        +            'library', 'library.dynam', 'library.dynam.unload', 'licence', 'license', 'list', 'list.files', 'load', 'loadedNamespaces',
        +            'loadingNamespaceInfo', 'loadNamespace', 'loadURL', 'local', 'lockBinding', 'lockEnvironment', 'log', 'log10', 'log1p', 'log2',
        +            'logb', 'logical', 'lower.tri', 'ls', 'machine', 'Machine', 'make.names', 'make.unique', 'makeActiveBinding', 'manglePackageName',
        +            'Map', 'mapply', 'margin.table', 'mat.or.vec', 'match', 'match.arg', 'match.call', 'match.fun', 'Math.data.frame', 'Math.Date',
        +            'Math.difftime', 'Math.factor', 'Math.POSIXt', 'matrix', 'max', 'max.col', 'mean', 'mean.data.frame', 'mean.Date', 'mean.default',
        +            'mean.difftime', 'mean.POSIXct', 'mean.POSIXlt', 'mem.limits', 'memory.profile', 'merge', 'merge.data.frame', 'merge.default',
        +            'message', 'mget', 'min', 'missing', 'Mod', 'mode', 'mode<-', 'month.abb', 'month.name', 'months', 'months.Date',
        +            'months.POSIXt', 'mostattributes<-', 'names', 'names<-', 'namespaceExport', 'namespaceImport', 'namespaceImportClasses',
        +            'namespaceImportFrom', 'namespaceImportMethods', 'nargs', 'nchar', 'ncol', 'NCOL', 'Negate', 'new.env', 'next', 'NextMethod',
        +            'ngettext', 'nlevels', 'noquote', 'nrow', 'NROW', 'numeric', 'numeric_version', 'nzchar', 'objects', 'oldClass',
        +            'oldClass<-', 'on.exit', 'open', 'open.connection', 'open.srcfile', 'open.srcfilecopy', 'Ops.data.frame', 'Ops.Date',
        +            'Ops.difftime', 'Ops.factor', 'Ops.numeric_version', 'Ops.ordered', 'Ops.POSIXt', 'options', 'order', 'ordered',
        +            'outer', 'package_version', 'package.description', 'packageEvent', 'packageHasNamespace', 'packageStartupMessage',
        +            'packBits', 'pairlist', 'parent.env', 'parent.env<-', 'parent.frame', 'parse', 'parse.dcf', 'parseNamespaceFile',
        +            'paste', 'path.expand', 'pentagamma', 'pi', 'pipe', 'Platform', 'pmatch', 'pmax', 'pmax.int', 'pmin', 'pmin.int',
        +            'polyroot', 'pos.to.env', 'Position', 'pretty', 'prettyNum', 'print', 'print.AsIs', 'print.atomic', 'print.by',
        +            'print.condition', 'print.connection', 'print.data.frame', 'print.Date', 'print.default', 'print.difftime',
        +            'print.DLLInfo', 'print.DLLInfoList', 'print.DLLRegisteredRoutines', 'print.factor', 'print.hexmode', 'print.libraryIQR',
        +            'print.listof', 'print.NativeRoutineList', 'print.noquote', 'print.numeric_version', 'print.octmode', 'print.packageInfo',
        +            'print.POSIXct', 'print.POSIXlt', 'print.proc_time', 'print.restart', 'print.rle', 'print.simple.list',
        +            'print.srcfile', 'print.srcref', 'print.summary.table', 'print.table', 'print.warnings', 'printNoClass',
        +            'prmatrix', 'proc.time', 'prod', 'prop.table', 'provide', 'psigamma', 'pushBack', 'pushBackLength', 'q', 'qr',
        +            'qr.coef', 'qr.default', 'qr.fitted', 'qr.Q', 'qr.qty', 'qr.qy', 'qr.R', 'qr.resid', 'qr.solve', 'qr.X', 'quarters',
        +            'quarters.Date', 'quarters.POSIXt', 'quit', 'quote', 'R_system_version', 'R.home', 'R.version', 'R.Version',
        +            'R.version.string', 'range', 'range.default', 'rank', 'rapply', 'raw', 'rawConnection', 'rawConnectionValue',
        +            'rawShift', 'rawToBits', 'rawToChar', 'rbind', 'rbind.data.frame', 'rcond', 'Re', 'read.dcf', 'read.table.url',
        +            'readBin', 'readChar', 'readline', 'readLines', 'real', 'Recall', 'Reduce', 'reg.finalizer', 'regexpr',
        +            'registerS3method', 'registerS3methods', 'remove', 'removeCConverter', 'removeTaskCallback', 'rep', 'rep.Date',
        +            'rep.factor', 'rep.int', 'rep.numeric_version', 'rep.POSIXct', 'rep.POSIXlt', 'repeat', 'replace', 'replicate',
        +            'require', 'restart', 'restartDescription', 'restartFormals', 'retracemem', 'return', 'rev', 'rev.default', 'rle',
        +            'rm', 'RNGkind', 'RNGversion', 'round', 'round.Date', 'round.difftime', 'round.POSIXt', 'row', 'row.names',
        +            'row.names.data.frame', 'row.names.default', 'row.names<-', 'row.names<-.data.frame', 'row.names<-.default',
        +            'rowMeans', 'rownames', 'rownames<-', 'rowsum', 'rowsum.data.frame', 'rowsum.default', 'rowSums', 'sample',
        +            'sample.int', 'sapply', 'save', 'save.image', 'saveNamespaceImage', 'scale', 'scale.default', 'scan', 'scan.url',
        +            'search', 'searchpaths', 'seek', 'seek.connection', 'seq', 'seq_along', 'seq_len', 'seq.Date', 'seq.default',
        +            'seq.int', 'seq.POSIXt', 'sequence', 'serialize', 'set.seed', 'setCConverterStatus', 'setdiff', 'setequal',
        +            'setHook', 'setNamespaceInfo', 'setSessionTimeLimit', 'setTimeLimit', 'setwd', 'showConnections', 'shQuote',
        +            'sign', 'signalCondition', 'signif', 'simpleCondition', 'simpleError', 'simpleMessage', 'simpleWarning', 'sin',
        +            'single', 'sinh', 'sink', 'sink.number', 'slice.index', 'socketConnection', 'socketSelect', 'solve', 'solve.default',
        +            'solve.qr', 'sort', 'sort.default', 'sort.int', 'sort.list', 'sort.POSIXlt', 'source', 'source.url', 'split',
        +            'split.data.frame', 'split.Date', 'split.default', 'split.POSIXct', 'split<-', 'split<-.data.frame', 'split<-.default',
        +            'sprintf', 'sqrt', 'sQuote', 'srcfile', 'srcfilecopy', 'srcref', 'standardGeneric', 'stderr', 'stdin', 'stdout',
        +            'stop', 'stopifnot', 'storage.mode', 'storage.mode<-', 'strftime', 'strptime', 'strsplit', 'strtrim', 'structure',
        +            'strwrap', 'sub', 'subset', 'subset.data.frame', 'subset.default', 'subset.matrix', 'substitute', 'substr',
        +            'substr<-', 'substring', 'substring<-', 'sum', 'summary', 'summary.connection', 'summary.data.frame',
        +            'Summary.data.frame', 'summary.Date', 'Summary.Date', 'summary.default', 'Summary.difftime',
        +            'summary.factor', 'Summary.factor', 'summary.matrix', 'Summary.numeric_version', 'summary.POSIXct',
        +            'Summary.POSIXct', 'summary.POSIXlt', 'Summary.POSIXlt', 'summary.table', 'suppressMessages',
        +            'suppressPackageStartupMessages', 'suppressWarnings', 'svd', 'sweep', 'switch', 'symbol.C',
        +            'symbol.For', 'sys.call', 'sys.calls', 'Sys.chmod', 'Sys.Date', 'sys.frame', 'sys.frames',
        +            'sys.function', 'Sys.getenv', 'Sys.getlocale', 'Sys.getpid', 'Sys.glob', 'Sys.info', 'sys.load.image',
        +            'Sys.localeconv', 'sys.nframe', 'sys.on.exit', 'sys.parent', 'sys.parents', 'Sys.putenv',
        +            'sys.save.image', 'Sys.setenv', 'Sys.setlocale', 'Sys.sleep', 'sys.source', 'sys.status',
        +            'Sys.time', 'Sys.timezone', 'Sys.umask', 'Sys.unsetenv', 'Sys.which', 'system', 'system.file',
        +            'system.time', 't', 'T', 't.data.frame', 't.default', 'table', 'tabulate', 'tan', 'tanh', 'tapply',
        +            'taskCallbackManager', 'tcrossprod', 'tempdir', 'tempfile', 'testPlatformEquivalence', 'tetragamma',
        +            'textConnection', 'textConnectionValue', 'tolower', 'topenv', 'toString', 'toString.default', 'toupper',
        +            'trace', 'traceback', 'tracemem', 'tracingState', 'transform', 'transform.data.frame', 'transform.default',
        +            'trigamma', 'trunc', 'trunc.Date', 'trunc.POSIXt', 'truncate', 'truncate.connection', 'try', 'tryCatch',
        +            'typeof', 'unclass', 'undebug', 'union', 'unique', 'unique.array', 'unique.data.frame', 'unique.default',
        +            'unique.matrix', 'unique.numeric_version', 'unique.POSIXlt', 'units', 'units.difftime', 'units<-',
        +            'units<-.difftime', 'unix', 'unix.time', 'unlink', 'unlist', 'unloadNamespace', 'unlockBinding',
        +            'unname', 'unserialize', 'unsplit', 'untrace', 'untracemem', 'unz', 'upper.tri', 'url', 'UseMethod',
        +            'utf8ToInt', 'vector', 'Vectorize', 'version', 'Version', 'warning', 'warnings', 'weekdays',
        +            'weekdays.Date', 'weekdays.POSIXt', 'which', 'which.max', 'which.min', 'while', 'with',
        +            'with.default', 'withCallingHandlers', 'within', 'within.data.frame', 'within.list', 'withRestarts',
        +            'withVisible', 'write', 'write.dcf', 'write.table0', 'writeBin', 'writeChar', 'writeLines', 'xor',
        +            'xpdrows.data.frame', 'xtfrm', 'xtfrm.Date', 'xtfrm.default', 'xtfrm.factor', 'xtfrm.numeric_version',
        +            'xtfrm.POSIXct', 'xtfrm.POSIXlt', 'xtfrm.Surv', 'zapsmall',
        +            ),
        +        3 => array( // Datasets
        +            'ability.cov', 'airmiles', 'AirPassengers', 'airquality',
        +            'anscombe', 'attenu', 'attitude', 'austres', 'beaver1',
        +            'beaver2', 'BJsales', 'BJsales.lead', 'BOD', 'cars',
        +            'ChickWeight', 'chickwts', 'co2', 'crimtab',
        +            'discoveries', 'DNase', 'esoph', 'euro', 'euro.cross',
        +            'eurodist', 'EuStockMarkets', 'faithful', 'fdeaths',
        +            'Formaldehyde', 'freeny', 'freeny.x', 'freeny.y',
        +            'HairEyeColor', 'Harman23.cor', 'Harman74.cor', 'Indometh',
        +            'infert', 'InsectSprays', 'iris', 'iris3', 'islands',
        +            'JohnsonJohnson', 'LakeHuron', 'ldeaths', 'lh', 'LifeCycleSavings',
        +            'Loblolly', 'longley', 'lynx', 'mdeaths', 'morley', 'mtcars',
        +            'nhtemp', 'Nile', 'nottem', 'occupationalStatus', 'Orange',
        +            'OrchardSprays', 'PlantGrowth', 'precip', 'presidents',
        +            'pressure', 'Puromycin', 'quakes', 'randu', 'rivers', 'rock',
        +            'Seatbelts', 'sleep', 'stack.loss', 'stack.x', 'stackloss',
        +            'state.abb', 'state.area', 'state.center', 'state.division',
        +            'state.name', 'state.region', 'state.x77', 'sunspot.month',
        +            'sunspot.year', 'sunspots', 'swiss', 'Theoph', 'Titanic', 'ToothGrowth',
        +            'treering', 'trees', 'UCBAdmissions', 'UKDriverDeaths', 'UKgas',
        +            'USAccDeaths', 'USArrests', 'USJudgeRatings', 'USPersonalExpenditure',
        +            'uspop', 'VADeaths', 'volcano', 'warpbreaks', 'women', 'WorldPhones',
        +            'WWWusage',
        +            ),
        +        4 => array( // graphics package
        +            'abline', 'arrows', 'assocplot', 'axis', 'Axis', 'axis.Date', 'axis.POSIXct',
        +            'axTicks', 'barplot', 'barplot.default', 'box', 'boxplot', 'boxplot.default',
        +            'boxplot.matrix', 'bxp', 'cdplot', 'clip', 'close.screen', 'co.intervals',
        +            'contour', 'contour.default', 'coplot', 'curve', 'dotchart', 'erase.screen',
        +            'filled.contour', 'fourfoldplot', 'frame', 'grconvertX', 'grconvertY', 'grid',
        +            'hist', 'hist.default', 'identify', 'image', 'image.default', 'layout',
        +            'layout.show', 'lcm', 'legend', 'lines', 'lines.default', 'locator', 'matlines',
        +            'matplot', 'matpoints', 'mosaicplot', 'mtext', 'pairs', 'pairs.default',
        +            'panel.smooth', 'par', 'persp', 'pie', 'piechart', 'plot', 'plot.default',
        +            'plot.design', 'plot.new', 'plot.window', 'plot.xy', 'points', 'points.default',
        +            'polygon', 'rect', 'rug', 'screen', 'segments', 'smoothScatter', 'spineplot',
        +            'split.screen', 'stars', 'stem', 'strheight', 'stripchart', 'strwidth', 'sunflowerplot',
        +            'symbols', 'text', 'text.default', 'title', 'xinch', 'xspline', 'xyinch', 'yinch',
        +            ),
        +        5 => array( // grDevices pkg
        +            'as.graphicsAnnot', 'bitmap', 'blues9', 'bmp', 'boxplot.stats', 'cairo_pdf', 'cairo_ps', 'check.options',
        +            'chull', 'CIDFont', 'cm', 'cm.colors', 'col2rgb', 'colorConverter', 'colorRamp', 'colorRampPalette',
        +            'colors', 'colorspaces', 'colours', 'contourLines', 'convertColor', 'densCols', 'dev.control', 'dev.copy',
        +            'dev.copy2eps', 'dev.copy2pdf', 'dev.cur', 'dev.interactive', 'dev.list', 'dev.new', 'dev.next', 'dev.off',
        +            'dev.prev', 'dev.print', 'dev.set', 'dev.size', 'dev2bitmap', 'devAskNewPage', 'deviceIsInteractive',
        +            'embedFonts', 'extendrange', 'getGraphicsEvent', 'graphics.off', 'gray', 'gray.colors', 'grey', 'grey.colors',
        +            'hcl', 'heat.colors', 'Hershey', 'hsv', 'jpeg', 'make.rgb', 'n2mfrow', 'nclass.FD', 'nclass.scott',
        +            'nclass.Sturges', 'palette', 'pdf', 'pdf.options', 'pdfFonts', 'pictex', 'png', 'postscript', 'postscriptFont',
        +            'postscriptFonts', 'ps.options', 'quartz', 'quartz.options', 'quartzFont', 'quartzFonts', 'rainbow',
        +            'recordGraphics', 'recordPlot', 'replayPlot', 'rgb', 'rgb2hsv', 'savePlot', 'setEPS', 'setPS', 'svg',
        +            'terrain.colors', 'tiff', 'topo.colors', 'trans3d', 'Type1Font', 'x11', 'X11', 'X11.options', 'X11Font',
        +            'X11Fonts', 'xfig', 'xy.coords', 'xyTable', 'xyz.coords',
        +            ),
        +        6 => array( // methods package
        +            'addNextMethod', 'allGenerics', 'allNames', 'Arith', 'as', 'as<-',
        +            'asMethodDefinition', 'assignClassDef', 'assignMethodsMetaData', 'balanceMethodsList',
        +            'cacheGenericsMetaData', 'cacheMetaData', 'cacheMethod', 'callGeneric',
        +            'callNextMethod', 'canCoerce', 'cbind2', 'checkSlotAssignment', 'classesToAM',
        +            'classMetaName', 'coerce', 'coerce<-', 'Compare', 'completeClassDefinition',
        +            'completeExtends', 'completeSubclasses', 'Complex', 'conformMethod', 'defaultDumpName',
        +            'defaultPrototype', 'doPrimitiveMethod', 'dumpMethod', 'dumpMethods', 'el', 'el<-',
        +            'elNamed', 'elNamed<-', 'empty.dump', 'emptyMethodsList', 'existsFunction', 'existsMethod',
        +            'extends', 'finalDefaultMethod', 'findClass', 'findFunction', 'findMethod', 'findMethods',
        +            'findMethodSignatures', 'findUnique', 'fixPre1.8', 'formalArgs', 'functionBody',
        +            'functionBody<-', 'generic.skeleton', 'getAccess', 'getAllMethods', 'getAllSuperClasses',
        +            'getClass', 'getClassDef', 'getClasses', 'getClassName', 'getClassPackage', 'getDataPart',
        +            'getExtends', 'getFunction', 'getGeneric', 'getGenerics', 'getGroup', 'getGroupMembers',
        +            'getMethod', 'getMethods', 'getMethodsForDispatch', 'getMethodsMetaData', 'getPackageName',
        +            'getProperties', 'getPrototype', 'getSlots', 'getSubclasses', 'getValidity', 'getVirtual',
        +            'hasArg', 'hasMethod', 'hasMethods', 'implicitGeneric', 'initialize', 'insertMethod', 'is',
        +            'isClass', 'isClassDef', 'isClassUnion', 'isGeneric', 'isGrammarSymbol', 'isGroup',
        +            'isSealedClass', 'isSealedMethod', 'isVirtualClass', 'isXS3Class', 'languageEl', 'languageEl<-',
        +            'linearizeMlist', 'listFromMethods', 'listFromMlist', 'loadMethod', 'Logic',
        +            'makeClassRepresentation', 'makeExtends', 'makeGeneric', 'makeMethodsList',
        +            'makePrototypeFromClassDef', 'makeStandardGeneric', 'matchSignature', 'Math', 'Math2', 'mergeMethods',
        +            'metaNameUndo', 'method.skeleton', 'MethodAddCoerce', 'methodSignatureMatrix', 'MethodsList',
        +            'MethodsListSelect', 'methodsPackageMetaName', 'missingArg', 'mlistMetaName', 'new', 'newBasic',
        +            'newClassRepresentation', 'newEmptyObject', 'Ops', 'packageSlot', 'packageSlot<-', 'possibleExtends',
        +            'prohibitGeneric', 'promptClass', 'promptMethods', 'prototype', 'Quote', 'rbind2',
        +            'reconcilePropertiesAndPrototype', 'registerImplicitGenerics', 'rematchDefinition',
        +            'removeClass', 'removeGeneric', 'removeMethod', 'removeMethods', 'removeMethodsObject', 'representation',
        +            'requireMethods', 'resetClass', 'resetGeneric', 'S3Class', 'S3Class<-', 'S3Part', 'S3Part<-', 'sealClass',
        +            'seemsS4Object', 'selectMethod', 'selectSuperClasses', 'sessionData', 'setAs', 'setClass', 'setClassUnion',
        +            'setDataPart', 'setGeneric', 'setGenericImplicit', 'setGroupGeneric', 'setIs', 'setMethod', 'setOldClass',
        +            'setPackageName', 'setPrimitiveMethods', 'setReplaceMethod', 'setValidity', 'show', 'showClass', 'showDefault',
        +            'showExtends', 'showMethods', 'showMlist', 'signature', 'SignatureMethod', 'sigToEnv', 'slot', 'slot<-',
        +            'slotNames', 'slotsFromS3', 'substituteDirect', 'substituteFunctionArgs', 'Summary', 'superClassDepth',
        +            'testInheritedMethods', 'testVirtual', 'traceOff', 'traceOn', 'tryNew', 'trySilent', 'unRematchDefinition',
        +            'validObject', 'validSlotNames',
        +            ),
        +        7 => array( // stats pkg
        +            'acf', 'acf2AR', 'add.scope', 'add1', 'addmargins', 'aggregate',
        +            'aggregate.data.frame', 'aggregate.default', 'aggregate.ts', 'AIC',
        +            'alias', 'anova', 'anova.glm', 'anova.glmlist', 'anova.lm', 'anova.lmlist',
        +            'anova.mlm', 'anovalist.lm', 'ansari.test', 'aov', 'approx', 'approxfun',
        +            'ar', 'ar.burg', 'ar.mle', 'ar.ols', 'ar.yw', 'arima', 'arima.sim',
        +            'arima0', 'arima0.diag', 'ARMAacf', 'ARMAtoMA', 'as.dendrogram', 'as.dist',
        +            'as.formula', 'as.hclust', 'as.stepfun', 'as.ts', 'asOneSidedFormula', 'ave',
        +            'bandwidth.kernel', 'bartlett.test', 'binom.test', 'binomial', 'biplot',
        +            'Box.test', 'bw.bcv', 'bw.nrd', 'bw.nrd0', 'bw.SJ', 'bw.ucv', 'C', 'cancor',
        +            'case.names', 'ccf', 'chisq.test', 'clearNames', 'cmdscale', 'coef', 'coefficients',
        +            'complete.cases', 'confint', 'confint.default', 'constrOptim', 'contr.helmert',
        +            'contr.poly', 'contr.SAS', 'contr.sum', 'contr.treatment', 'contrasts', 'contrasts<-',
        +            'convolve', 'cooks.distance', 'cophenetic', 'cor', 'cor.test', 'cov', 'cov.wt',
        +            'cov2cor', 'covratio', 'cpgram', 'cutree', 'cycle', 'D', 'dbeta', 'dbinom', 'dcauchy',
        +            'dchisq', 'decompose', 'delete.response', 'deltat', 'dendrapply', 'density', 'density.default',
        +            'deriv', 'deriv.default', 'deriv.formula', 'deriv3', 'deriv3.default', 'deriv3.formula',
        +            'deviance', 'dexp', 'df', 'df.kernel', 'df.residual', 'dfbeta', 'dfbetas', 'dffits',
        +            'dgamma', 'dgeom', 'dhyper', 'diff.ts', 'diffinv', 'dist', 'dlnorm', 'dlogis',
        +            'dmultinom', 'dnbinom', 'dnorm', 'dpois', 'drop.scope', 'drop.terms', 'drop1',
        +            'dsignrank', 'dt', 'dummy.coef', 'dunif', 'dweibull', 'dwilcox', 'ecdf', 'eff.aovlist',
        +            'effects', 'embed', 'end', 'estVar', 'expand.model.frame', 'extractAIC', 'factanal',
        +            'factor.scope', 'family', 'fft', 'filter', 'fisher.test', 'fitted', 'fitted.values',
        +            'fivenum', 'fligner.test', 'formula', 'frequency', 'friedman.test', 'ftable', 'Gamma',
        +            'gaussian', 'get_all_vars', 'getInitial', 'glm', 'glm.control', 'glm.fit', 'glm.fit.null',
        +            'hasTsp', 'hat', 'hatvalues', 'hatvalues.lm', 'hclust', 'heatmap', 'HoltWinters', 'influence',
        +            'influence.measures', 'integrate', 'interaction.plot', 'inverse.gaussian', 'IQR',
        +            'is.empty.model', 'is.leaf', 'is.mts', 'is.stepfun', 'is.ts', 'is.tskernel', 'isoreg',
        +            'KalmanForecast', 'KalmanLike', 'KalmanRun', 'KalmanSmooth', 'kernapply', 'kernel', 'kmeans',
        +            'knots', 'kruskal.test', 'ks.test', 'ksmooth', 'lag', 'lag.plot', 'line', 'lines.ts', 'lm',
        +            'lm.fit', 'lm.fit.null', 'lm.influence', 'lm.wfit', 'lm.wfit.null', 'loadings', 'loess',
        +            'loess.control', 'loess.smooth', 'logLik', 'loglin', 'lowess', 'ls.diag', 'ls.print', 'lsfit',
        +            'mad', 'mahalanobis', 'make.link', 'makeARIMA', 'makepredictcall', 'manova', 'mantelhaen.test',
        +            'mauchley.test', 'mauchly.test', 'mcnemar.test', 'median', 'median.default', 'medpolish',
        +            'model.extract', 'model.frame', 'model.frame.aovlist', 'model.frame.default', 'model.frame.glm',
        +            'model.frame.lm', 'model.matrix', 'model.matrix.default', 'model.matrix.lm', 'model.offset',
        +            'model.response', 'model.tables', 'model.weights', 'monthplot', 'mood.test', 'mvfft', 'na.action',
        +            'na.contiguous', 'na.exclude', 'na.fail', 'na.omit', 'na.pass', 'napredict', 'naprint', 'naresid',
        +            'nextn', 'nlm', 'nlminb', 'nls', 'nls.control', 'NLSstAsymptotic', 'NLSstClosestX', 'NLSstLfAsymptote',
        +            'NLSstRtAsymptote', 'numericDeriv', 'offset', 'oneway.test', 'optim', 'optimise', 'optimize',
        +            'order.dendrogram', 'p.adjust', 'p.adjust.methods', 'pacf', 'pairwise.prop.test', 'pairwise.t.test',
        +            'pairwise.table', 'pairwise.wilcox.test', 'pbeta', 'pbinom', 'pbirthday', 'pcauchy', 'pchisq', 'pexp',
        +            'pf', 'pgamma', 'pgeom', 'phyper', 'plclust', 'plnorm', 'plogis', 'plot.density', 'plot.ecdf', 'plot.lm',
        +            'plot.mlm', 'plot.spec', 'plot.spec.coherency', 'plot.spec.phase', 'plot.stepfun', 'plot.ts', 'plot.TukeyHSD',
        +            'pnbinom', 'pnorm', 'poisson', 'poisson.test', 'poly', 'polym', 'power', 'power.anova.test', 'power.prop.test',
        +            'power.t.test', 'PP.test', 'ppoints', 'ppois', 'ppr', 'prcomp', 'predict', 'predict.glm', 'predict.lm',
        +            'predict.mlm', 'predict.poly', 'preplot', 'princomp', 'print.anova', 'print.coefmat', 'print.density',
        +            'print.family', 'print.formula', 'print.ftable', 'print.glm', 'print.infl', 'print.integrate', 'print.lm',
        +            'print.logLik', 'print.terms', 'print.ts', 'printCoefmat', 'profile', 'proj', 'promax', 'prop.test',
        +            'prop.trend.test', 'psignrank', 'pt', 'ptukey', 'punif', 'pweibull', 'pwilcox', 'qbeta', 'qbinom',
        +            'qbirthday', 'qcauchy', 'qchisq', 'qexp', 'qf', 'qgamma', 'qgeom', 'qhyper', 'qlnorm', 'qlogis',
        +            'qnbinom', 'qnorm', 'qpois', 'qqline', 'qqnorm', 'qqnorm.default', 'qqplot', 'qsignrank', 'qt',
        +            'qtukey', 'quade.test', 'quantile', 'quantile.default', 'quasi', 'quasibinomial', 'quasipoisson',
        +            'qunif', 'qweibull', 'qwilcox', 'r2dtable', 'rbeta', 'rbinom', 'rcauchy', 'rchisq', 'read.ftable',
        +            'rect.hclust', 'reformulate', 'relevel', 'reorder', 'replications', 'reshape', 'reshapeLong', 'reshapeWide',
        +            'resid', 'residuals', 'residuals.default', 'residuals.glm', 'residuals.lm', 'rexp', 'rf', 'rgamma', 'rgeom',
        +            'rhyper', 'rlnorm', 'rlogis', 'rmultinom', 'rnbinom', 'rnorm', 'rpois', 'rsignrank', 'rstandard', 'rstandard.glm',
        +            'rstandard.lm', 'rstudent', 'rstudent.glm', 'rstudent.lm', 'rt', 'runif', 'runmed', 'rweibull', 'rwilcox',
        +            'scatter.smooth', 'screeplot', 'sd', 'se.contrast', 'selfStart', 'setNames', 'shapiro.test', 'simulate',
        +            'smooth', 'smooth.spline', 'smoothEnds', 'sortedXyData', 'spec.ar', 'spec.pgram', 'spec.taper', 'spectrum',
        +            'spline', 'splinefun', 'splinefunH', 'SSasymp', 'SSasympOff', 'SSasympOrig', 'SSbiexp', 'SSD', 'SSfol',
        +            'SSfpl', 'SSgompertz', 'SSlogis', 'SSmicmen', 'SSweibull', 'start', 'stat.anova', 'step', 'stepfun', 'stl',
        +            'StructTS', 'summary.aov', 'summary.aovlist', 'summary.glm', 'summary.infl', 'summary.lm', 'summary.manova',
        +            'summary.mlm', 'summary.stepfun', 'supsmu', 'symnum', 't.test', 'termplot', 'terms', 'terms.aovlist',
        +            'terms.default', 'terms.formula', 'terms.terms', 'time', 'toeplitz', 'ts', 'ts.intersect', 'ts.plot',
        +            'ts.union', 'tsdiag', 'tsp', 'tsp<-', 'tsSmooth', 'TukeyHSD', 'TukeyHSD.aov', 'uniroot', 'update',
        +            'update.default', 'update.formula', 'var', 'var.test', 'variable.names', 'varimax', 'vcov', 'weighted.mean',
        +            'weighted.residuals', 'weights', 'wilcox.test', 'window', 'window<-', 'write.ftable', 'xtabs',
        +            ),
        +        8 => array( // utils pkg
        +            'alarm', 'apropos', 'argsAnywhere', 'as.person', 'as.personList', 'as.relistable', 'as.roman',
        +            'assignInNamespace', 'available.packages', 'browseEnv', 'browseURL', 'browseVignettes', 'bug.report',
        +            'capture.output', 'checkCRAN', 'chooseCRANmirror', 'citation', 'citEntry', 'citFooter', 'citHeader',
        +            'close.socket', 'combn', 'compareVersion', 'contrib.url', 'count.fields', 'CRAN.packages', 'data',
        +            'data.entry', 'dataentry', 'de', 'de.ncols', 'de.restore', 'de.setup', 'debugger', 'demo', 'download.file',
        +            'download.packages', 'dump.frames', 'edit', 'emacs', 'example', 'file_test', 'file.edit', 'find', 'fix',
        +            'fixInNamespace', 'flush.console', 'formatOL', 'formatUL', 'getAnywhere', 'getCRANmirrors', 'getFromNamespace',
        +            'getS3method', 'getTxtProgressBar', 'glob2rx', 'head', 'head.matrix', 'help', 'help.request', 'help.search',
        +            'help.start', 'history', 'index.search', 'install.packages', 'installed.packages', 'is.relistable',
        +            'limitedLabels', 'loadhistory', 'localeToCharset', 'ls.str', 'lsf.str', 'make.packages.html', 'make.socket',
        +            'makeRweaveLatexCodeRunner', 'memory.limit', 'memory.size', 'menu', 'methods', 'mirror2html', 'modifyList',
        +            'new.packages', 'normalizePath', 'nsl', 'object.size', 'old.packages', 'package.contents', 'package.skeleton',
        +            'packageDescription', 'packageStatus', 'page', 'person', 'personList', 'pico', 'prompt', 'promptData',
        +            'promptPackage', 'rc.getOption', 'rc.options', 'rc.settings', 'rc.status', 'read.csv', 'read.csv2', 'read.delim',
        +            'read.delim2', 'read.DIF', 'read.fortran', 'read.fwf', 'read.socket', 'read.table', 'readCitationFile', 'recover',
        +            'relist', 'remove.packages', 'Rprof', 'Rprofmem', 'RShowDoc', 'RSiteSearch', 'rtags', 'Rtangle', 'RtangleSetup',
        +            'RtangleWritedoc', 'RweaveChunkPrefix', 'RweaveEvalWithOpt', 'RweaveLatex', 'RweaveLatexFinish', 'RweaveLatexOptions',
        +            'RweaveLatexSetup', 'RweaveLatexWritedoc', 'RweaveTryStop', 'savehistory', 'select.list', 'sessionInfo',
        +            'setRepositories', 'setTxtProgressBar', 'stack', 'Stangle', 'str', 'strOptions', 'summaryRprof', 'Sweave',
        +            'SweaveHooks', 'SweaveSyntaxLatex', 'SweaveSyntaxNoweb', 'SweaveSyntConv', 'tail', 'tail.matrix', 'timestamp',
        +            'toBibtex', 'toLatex', 'txtProgressBar', 'type.convert', 'unstack', 'unzip', 'update.packages', 'update.packageStatus',
        +            'upgrade', 'url.show', 'URLdecode', 'URLencode', 'vi', 'View', 'vignette', 'write.csv', 'write.csv2', 'write.socket',
        +            'write.table', 'wsbrowser', 'xedit', 'xemacs', 'zip.file.extract',
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '[', ']', '!', '%', '^', '&', '/','+','-','*','=','<','>',';','|','<-','->',
        +        '^', '-', ':', '::', ':::', '!', '!=', '*', '?',
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => true,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true,
        +        8 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000FF; font-weight: bold;',
        +            2 => 'color: #0000FF; font-weight: bold;',
        +            3 => 'color: #CC9900; font-weight: bold;',
        +            4 => 'color: #0000FF; font-weight: bold;',
        +            5 => 'color: #0000FF; font-weight: bold;',
        +            6 => 'color: #0000FF; font-weight: bold;',
        +            7 => 'color: #0000FF; font-weight: bold;',
        +            8 => 'color: #0000FF; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #228B22;',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #080;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'METHODS' => array(
        +            1 => '',
        +            2 => ''
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #080;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color:#A020F0;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => ''            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => 'http://stat.ethz.ch/R-manual/R-devel/library/base/html/{FNAME}.html', // Base Package
        +        3 => 'http://stat.ethz.ch/R-manual/R-devel/library/datasets/html/{FNAME}.html', // Datasets
        +        4 => 'http://stat.ethz.ch/R-manual/R-devel/library/graphics/html/{FNAME}.html', // Graphics Package
        +        5 => 'http://stat.ethz.ch/R-manual/R-devel/library/grDevices/html/{FNAME}.html', // grDevices
        +        6 => 'http://stat.ethz.ch/R-manual/R-devel/library/methods/html/{FNAME}.html', // methods
        +        7 => 'http://stat.ethz.ch/R-manual/R-devel/library/stats/html/{FNAME}.html', // stats
        +        8 => 'http://stat.ethz.ch/R-manual/R-devel/library/utils/html/{FNAME}.html' // utils
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.',
        +        2 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        0 => array(
        +            GESHI_SEARCH => "([^\w])'([^\\n\\r']*)'",
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => "\\1'",
        +            GESHI_AFTER => "'"
        +            )
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => "(?|^&\\.])(? "(?![a-zA-Z0-9_\|%\\-&;\\.])"
        +            )
        +        )
        +);
        diff --git a/includes/geshi/ruby.php b/includes/geshi/ruby.php
        new file mode 100644
        index 0000000..8c96a23
        --- /dev/null
        +++ b/includes/geshi/ruby.php
        @@ -0,0 +1,229 @@
        + 'Ruby',
        +    'COMMENT_SINGLE' => array(1 => "#"),
        +    'COMMENT_MULTI' => array("=begin" => "=end"),
        +    'COMMENT_REGEXP' => array(
        +        //Heredoc
        +        4 => '/<<\s*?(\w+)\\n.*?\\n\\1(?![a-zA-Z0-9])/si',
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"', '`','\''),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +                'alias', 'and', 'begin', 'break', 'case', 'class',
        +                'def', 'defined', 'do', 'else', 'elsif', 'end',
        +                'ensure', 'for', 'if', 'in', 'module', 'while',
        +                'next', 'not', 'or', 'redo', 'rescue', 'yield',
        +                'retry', 'super', 'then', 'undef', 'unless',
        +                'until', 'when', 'include'
        +            ),
        +        2 => array(
        +                '__FILE__', '__LINE__', 'false', 'nil', 'self', 'true',
        +                'return'
        +            ),
        +        3 => array(
        +                'Array', 'Float', 'Integer', 'String', 'at_exit',
        +                'autoload', 'binding', 'caller', 'catch', 'chop', 'chop!',
        +                'chomp', 'chomp!', 'eval', 'exec', 'exit', 'exit!', 'fail',
        +                'fork', 'format', 'gets', 'global_variables', 'gsub', 'gsub!',
        +                'iterator?', 'lambda', 'load', 'local_variables', 'loop',
        +                'open', 'p', 'print', 'printf', 'proc', 'putc', 'puts',
        +                'raise', 'rand', 'readline', 'readlines', 'require', 'select',
        +                'sleep', 'split', 'sprintf', 'srand', 'sub', 'sub!', 'syscall',
        +                'system', 'trace_var', 'trap', 'untrace_var'
        +            ),
        +        4 => array(
        +                'Abbrev', 'ArgumentError', 'Base64', 'Benchmark',
        +                'Benchmark::Tms', 'Bignum', 'Binding', 'CGI', 'CGI::Cookie',
        +                'CGI::HtmlExtension', 'CGI::QueryExtension',
        +                'CGI::Session', 'CGI::Session::FileStore',
        +                'CGI::Session::MemoryStore', 'Class', 'Comparable', 'Complex',
        +                'ConditionVariable', 'Continuation', 'Data',
        +                'Date', 'DateTime', 'Delegator', 'Dir', 'EOFError', 'ERB',
        +                'ERB::Util', 'Enumerable', 'Enumerable::Enumerator', 'Errno',
        +                'Exception', 'FalseClass', 'File',
        +                'File::Constants', 'File::Stat', 'FileTest', 'FileUtils',
        +                'FileUtils::DryRun', 'FileUtils::NoWrite',
        +                'FileUtils::StreamUtils_', 'FileUtils::Verbose', 'Find',
        +                'Fixnum', 'FloatDomainError', 'Forwardable', 'GC', 'Generator',
        +                'Hash', 'IO', 'IOError', 'Iconv', 'Iconv::BrokenLibrary',
        +                'Iconv::Failure', 'Iconv::IllegalSequence',
        +                'Iconv::InvalidCharacter', 'Iconv::InvalidEncoding',
        +                'Iconv::OutOfRange', 'IndexError', 'Interrupt', 'Kernel',
        +                'LoadError', 'LocalJumpError', 'Logger', 'Logger::Application',
        +                'Logger::Error', 'Logger::Formatter', 'Logger::LogDevice',
        +                'Logger::LogDevice::LogDeviceMutex', 'Logger::Severity',
        +                'Logger::ShiftingError', 'Marshal', 'MatchData',
        +                'Math', 'Matrix', 'Method', 'Module', 'Mutex', 'NameError',
        +                'NameError::message', 'NilClass', 'NoMemoryError',
        +                'NoMethodError', 'NotImplementedError', 'Numeric', 'Object',
        +                'ObjectSpace', 'Observable', 'PStore', 'PStore::Error',
        +                'Pathname', 'Precision', 'Proc', 'Process', 'Process::GID',
        +                'Process::Status', 'Process::Sys', 'Process::UID', 'Queue',
        +                'Range', 'RangeError', 'Rational', 'Regexp', 'RegexpError',
        +                'RuntimeError', 'ScriptError', 'SecurityError', 'Set',
        +                'Shellwords', 'Signal', 'SignalException', 'SimpleDelegator',
        +                'SingleForwardable', 'Singleton', 'SingletonClassMethods',
        +                'SizedQueue', 'SortedSet', 'StandardError', 'StringIO',
        +                'StringScanner', 'StringScanner::Error', 'Struct', 'Symbol',
        +                'SyncEnumerator', 'SyntaxError', 'SystemCallError',
        +                'SystemExit', 'SystemStackError', 'Tempfile',
        +                'Test::Unit::TestCase', 'Test::Unit', 'Test', 'Thread',
        +                'ThreadError', 'ThreadGroup',
        +                'ThreadsWait', 'Time', 'TrueClass', 'TypeError', 'URI',
        +                'URI::BadURIError', 'URI::Error', 'URI::Escape', 'URI::FTP',
        +                'URI::Generic', 'URI::HTTP', 'URI::HTTPS',
        +                'URI::InvalidComponentError', 'URI::InvalidURIError',
        +                'URI::LDAP', 'URI::MailTo', 'URI::REGEXP',
        +                'URI::REGEXP::PATTERN', 'UnboundMethod', 'Vector', 'YAML',
        +                'ZeroDivisionError', 'Zlib',
        +                'Zlib::BufError', 'Zlib::DataError', 'Zlib::Deflate',
        +                'Zlib::Error', 'Zlib::GzipFile', 'Zlib::GzipFile::CRCError',
        +                'Zlib::GzipFile::Error', 'Zlib::GzipFile::LengthError',
        +                'Zlib::GzipFile::NoFooter', 'Zlib::GzipReader',
        +                'Zlib::GzipWriter', 'Zlib::Inflate', 'Zlib::MemError',
        +                'Zlib::NeedDict', 'Zlib::StreamEnd', 'Zlib::StreamError',
        +                'Zlib::VersionError',
        +                'Zlib::ZStream',
        +                'HTML::Selector', 'HashWithIndifferentAccess', 'Inflector',
        +                'Inflector::Inflections', 'Mime', 'Mime::Type',
        +                'OCI8AutoRecover', 'TimeZone', 'XmlSimple'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}', '%', '&', '*', '|', '/', '<', '>',
        +        '+', '-', '=>', '<<'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color:#9966CC; font-weight:bold;',
        +            2 => 'color:#0000FF; font-weight:bold;',
        +            3 => 'color:#CC0066; font-weight:bold;',
        +            4 => 'color:#CC00FF; font-weight:bold;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color:#008000; font-style:italic;',
        +            4 => 'color: #cc0000; font-style: italic;',
        +            'MULTI' => 'color:#000080; font-style:italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color:#000099;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color:#006600; font-weight:bold;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color:#996600;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color:#006666;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color:#9900CC;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color:#006600; font-weight:bold;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color:#ff6633; font-weight:bold;',
        +            1 => 'color:#0066ff; font-weight:bold;',
        +            2 => 'color:#6666ff; font-weight:bold;',
        +            3 => 'color:#ff3333; font-weight:bold;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => '',
        +            2 => '',
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        0 => array(//Variables
        +            GESHI_SEARCH => "([[:space:]])(\\$[a-zA-Z_][a-zA-Z0-9_]*)",
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +            ),
        +        1 => array(//Arrays
        +            GESHI_SEARCH => "([[:space:]])(@[a-zA-Z_][a-zA-Z0-9_]*)",
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +            ),
        +        2 => "([A-Z][a-zA-Z0-9_]*::)+[A-Z][a-zA-Z0-9_]*",//Static OOP symbols
        +        3 => array(
        +            GESHI_SEARCH => "([[:space:]]|\[|\()(:[a-zA-Z_][a-zA-Z0-9_]*)",
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +            )
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
        +    'SCRIPT_DELIMITERS' => array(
        +        0 => array(
        +            '<%' => '%>'
        +            )
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => true,
        +        ),
        +    'TAB_WIDTH' => 2
        +);
        diff --git a/includes/geshi/rust.php b/includes/geshi/rust.php
        new file mode 100644
        index 0000000..c213ab4
        --- /dev/null
        +++ b/includes/geshi/rust.php
        @@ -0,0 +1,235 @@
        + 'Rust',
        +
        +    'COMMENT_SINGLE' => array('//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        // Raw strings
        +        1 => '/\\br(\\#*)".*?"\\1/'
        +        ),
        +
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        //Simple Single Char Escapes
        +        1 => "#\\\\[\\\\nrt\'\"?\n]#i",
        +        //Hexadecimal Char Specs
        +        2 => "#\\\\x[\da-fA-F]{2}#",
        +        //Hexadecimal Char Specs
        +        3 => "#\\\\u[\da-fA-F]{4}#",
        +        //Hexadecimal Char Specs
        +        4 => "#\\\\U[\da-fA-F]{8}#",
        +        //Octal Char Specs
        +        5 => "#\\\\[0-7]{1,3}#"
        +        ),
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |
        +        GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
        +        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
        +
        +    'KEYWORDS' => array(
        +        // Keywords
        +        1 => array(
        +            'alt', 'as', 'assert', 'break', 'const', 'continue', 'copy', 'do',
        +            'else', 'enum', 'extern', 'fn', 'for', 'if',
        +            'impl', 'in', 'let', 'log', 'loop', 'match', 'mod', 'mut', 'of',
        +            'priv', 'pub', 'ref', 'return', 'self', 'static', 'struct', 'super',
        +            'to', 'trait', 'type', 'unsafe', 'use', 'with', 'while'
        +            ),
        +        // Boolean values
        +        2 => array( 'true', 'false' ),
        +        // Structs and built-in types
        +        3 => array(
        +            'u8', 'i8',
        +            'u16', 'i16',
        +            'u32', 'i32',
        +            'u64', 'i64',
        +            'f32', 'f64',
        +            'int', 'uint',
        +            'float',
        +            'bool',
        +            'str', 'char',
        +            'Argument', 'AsyncWatcher', 'BorrowRecord', 'BufReader',
        +            'BufWriter', 'BufferedReader', 'BufferedStream', 'BufferedWriter',
        +            'ByRef', 'ByteIterator', 'CFile', 'CString', 'CStringIterator',
        +            'Cell', 'Chain', 'Chan', 'ChanOne', 'CharIterator',
        +            'CharOffsetIterator', 'CharRange', 'CharSplitIterator',
        +            'CharSplitNIterator', 'ChunkIter', 'Condition', 'ConnectRequest',
        +            'Coroutine', 'Counter', 'CrateMap', 'Cycle', 'DeflateWriter',
        +            'Display', 'ElementSwaps', 'Enumerate', 'Exp', 'Exp1', 'FileDesc',
        +            'FileReader', 'FileStat', 'FileStream', 'FileWriter', 'Filter',
        +            'FilterMap', 'FlatMap', 'FormatSpec', 'Formatter', 'FsRequest',
        +            'Fuse', 'GarbageCollector', 'GetAddrInfoRequest', 'Handle',
        +            'HashMap', 'HashMapIterator', 'HashMapMoveIterator',
        +            'HashMapMutIterator', 'HashSet', 'HashSetIterator',
        +            'HashSetMoveIterator', 'Hint', 'IdleWatcher', 'InflateReader',
        +            'Info', 'Inspect', 'Invert', 'IoError', 'Isaac64Rng', 'IsaacRng',
        +            'LineBufferedWriter', 'Listener', 'LocalHeap', 'LocalStorage',
        +            'Loop', 'Map', 'MatchesIndexIterator', 'MemReader', 'MemWriter',
        +            'MemoryMap', 'ModEntry', 'MoveIterator', 'MovePtrAdaptor',
        +            'MoveRevIterator', 'NoOpRunnable', 'NonCopyable', 'Normal',
        +            'OSRng', 'OptionIterator', 'Parser', 'Path', 'Peekable',
        +            'Permutations', 'Pipe', 'PipeStream', 'PluralArm', 'Port',
        +            'PortOne', 'Process', 'ProcessConfig', 'ProcessOptions',
        +            'ProcessOutput', 'RC', 'RSplitIterator', 'RandSample', 'Range',
        +            'RangeInclusive', 'RangeStep', 'RangeStepInclusive', 'Rc', 'RcMut',
        +            'ReaderRng', 'Repeat', 'ReprVisitor', 'RequestData',
        +            'ReseedWithDefault', 'ReseedingRng', 'Scan', 'SchedOpts',
        +            'SelectArm', 'SharedChan', 'SharedPort', 'SignalWatcher',
        +            'SipState', 'Skip', 'SkipWhile', 'SocketAddr', 'SplitIterator',
        +            'StackPool', 'StackSegment', 'StandardNormal', 'StdErrLogger',
        +            'StdIn', 'StdOut', 'StdReader', 'StdRng', 'StdWriter',
        +            'StrSplitIterator', 'StreamWatcher', 'TTY', 'Take', 'TakeWhile',
        +            'Task', 'TaskBuilder', 'TaskOpts', 'TcpAcceptor', 'TcpListener',
        +            'TcpStream', 'TcpWatcher', 'Timer', 'TimerWatcher', 'TrieMap',
        +            'TrieMapIterator', 'TrieSet', 'TrieSetIterator', 'Tube',
        +            'UdpSendRequest', 'UdpSocket', 'UdpStream', 'UdpWatcher', 'Unfold',
        +            'UnixAcceptor', 'UnixListener', 'UnixStream', 'Unwinder',
        +            'UvAddrInfo', 'UvError', 'UvEventLoop', 'UvFileStream',
        +            'UvIoFactory', 'UvPausibleIdleCallback', 'UvPipeStream',
        +            'UvProcess', 'UvRemoteCallback', 'UvSignal', 'UvTTY',
        +            'UvTcpAcceptor', 'UvTcpListener', 'UvTcpStream', 'UvTimer',
        +            'UvUdpSocket', 'UvUnboundPipe', 'UvUnixAcceptor', 'UvUnixListener',
        +            'VecIterator', 'VecMutIterator', 'Weighted', 'WeightedChoice',
        +            'WindowIter', 'WriteRequest', 'XorShiftRng', 'Zip', 'addrinfo',
        +            'uv_buf_t', 'uv_err_data', 'uv_process_options_t', 'uv_stat_t',
        +            'uv_stdio_container_t', 'uv_timespec_t'
        +            ),
        +        // Enums
        +        4 => array(
        +            'Alignment', 'Count', 'Either', 'ExponentFormat', 'FPCategory',
        +            'FileAccess', 'FileMode', 'Flag', 'IoErrorKind', 'IpAddr',
        +            'KeyValue', 'MapError', 'MapOption', 'MemoryMapKind', 'Method',
        +            'NullByteResolution', 'Option', 'Ordering', 'PathPrefix', 'Piece',
        +            'PluralKeyword', 'Position', 'Protocol', 'Result', 'SchedHome',
        +            'SchedMode', 'SeekStyle', 'SendStr', 'SignFormat',
        +            'SignificantDigits', 'Signum', 'SocketType', 'StdioContainer',
        +            'TaskResult', 'TaskType', 'UvSocketAddr', 'Void', 'uv_handle_type',
        +            'uv_membership', 'uv_req_type'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '[', ']',
        +        '+', '-', '*', '/', '%',
        +        '&', '|', '^', '!', '<', '>', '~', '@',
        +        ':',
        +        ';', ',',
        +        '='
        +        ),
        +
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true
        +        ),
        +
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #708;',
        +            2 => 'color: #219;',
        +            3 => 'color: #05a;',
        +            4 => 'color: #800;'
        +            ),
        +        'COMMENTS' => array(
        +            0 => 'color: #a50; font-style: italic;',
        +            1 => 'color: #a11;',
        +            'MULTI' => 'color: #a50; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            1 => 'color: #000099; font-weight: bold;',
        +            2 => 'color: #660099; font-weight: bold;',
        +            3 => 'color: #660099; font-weight: bold;',
        +            4 => 'color: #660099; font-weight: bold;',
        +            5 => 'color: #006699; font-weight: bold;',
        +            'HARD' => ''
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #a11;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #0000dd;',
        +            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',
        +            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
        +            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
        +            ),
        +        'BRACKETS' => array(''),
        +        'METHODS' => array(
        +            1 => 'color: #164;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/sas.php b/includes/geshi/sas.php
        new file mode 100644
        index 0000000..a5f463c
        --- /dev/null
        +++ b/includes/geshi/sas.php
        @@ -0,0 +1,288 @@
        + 'SAS',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array('/*' => '*/', '*' => ';'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            '_ALL_','_CHARACTER_','_INFILE_','_N_','_NULL_','_NUMERIC_',
        +            '_WEBOUT_'
        +            ),
        +        2 => array(
        +            '%BQUOTE','%CMPRES','%COMPSTOR','%DATATYP','%DISPLAY','%DO','%ELSE',
        +            '%END','%EVAL','%GLOBAL','%GOTO','%IF','%INDEX','%INPUT','%KEYDEF',
        +            '%LABEL','%LEFT','%LENGTH','%LET','%LOCAL','%LOWCASE','%MACRO',
        +            '%MEND','%NRBQUOTE','%NRQUOTE','%NRSTR','%PUT','%QCMPRES','%QLEFT',
        +            '%QLOWCASE','%QSCAN','%QSUBSTR','%QSYSFUNC','%QTRIM','%QUOTE',
        +            '%QUPCASE','%SCAN','%STR','%SUBSTR','%SUPERQ','%SYSCALL',
        +            '%SYSEVALF','%SYSEXEC','%SYSFUNC','%SYSGET','%SYSLPUT','%SYSPROD',
        +            '%SYSRC','%SYSRPUT','%THEN','%TO','%TRIM','%UNQUOTE','%UNTIL',
        +            '%UPCASE','%VERIFY','%WHILE','%WINDOW'
        +            ),
        +        3 => array(
        +            'ABS','ADDR','AIRY','ARCOS','ARSIN','ATAN','ATTRC','ATTRN','BAND',
        +            'BETAINV','BLSHIFT','BNOT','BOR','BRSHIFT','BXOR','BYTE','CDF',
        +            'CEIL','CEXIST','CINV','CLOSE','CNONCT','COLLATE','COMPBL',
        +            'COMPOUND','COMPRESS','COSH','COS','CSS','CUROBS','CV','DACCDBSL',
        +            'DACCDB','DACCSL','DACCSYD','DACCTAB','DAIRY','DATETIME','DATEJUL',
        +            'DATEPART','DATE','DAY','DCLOSE','DEPDBSL','DEPDB','DEPSL','DEPSYD',
        +            'DEPTAB','DEQUOTE','DHMS','DIF','DIGAMMA','DIM','DINFO','DNUM',
        +            'DOPEN','DOPTNAME','DOPTNUM','DREAD','DROPNOTE','DSNAME','ERFC',
        +            'ERF','EXIST','EXP','FAPPEND','FCLOSE','FCOL','FDELETE','FETCHOBS',
        +            'FETCH','FEXIST','FGET','FILEEXIST','FILENAME','FILEREF','FINFO',
        +            'FINV','FIPNAMEL','FIPNAME','FIPSTATE','FLOOR','FNONCT','FNOTE',
        +            'FOPEN','FOPTNAME','FOPTNUM','FPOINT','FPOS','FPUT','FREAD',
        +            'FREWIND','FRLEN','FSEP','FUZZ','FWRITE','GAMINV','GAMMA',
        +            'GETOPTION','GETVARC','GETVARN','HBOUND','HMS','HOSTHELP','HOUR',
        +            'IBESSEL','INDEXW','INDEXC','INDEX','INPUTN','INPUTC','INPUT',
        +            'INTRR','INTCK','INTNX','INT','IRR','JBESSEL','JULDATE','KURTOSIS',
        +            'LAG','LBOUND','LEFT','LENGTH','LGAMMA','LIBNAME','LIBREF','LOG10',
        +            'LOG2','LOGPDF','LOGPMF','LOGSDF','LOG','LOWCASE','MAX','MDY',
        +            'MEAN','MINUTE','MIN','MOD','MONTH','MOPEN','MORT','NETPV','NMISS',
        +            'NORMAL','NPV','N','OPEN','ORDINAL','PATHNAME','PDF','PEEKC','PEEK',
        +            'PMF','POINT','POISSON','POKE','PROBBETA','PROBBNML','PROBCHI',
        +            'PROBF','PROBGAM','PROBHYPR','PROBIT','PROBNEGB','PROBNORM','PROBT',
        +            'PUTN','PUTC','PUT','QTR','QUOTE','RANBIN','RANCAU','RANEXP',
        +            'RANGAM','RANGE','RANK','RANNOR','RANPOI','RANTBL','RANTRI',
        +            'RANUNI','REPEAT','RESOLVE','REVERSE','REWIND','RIGHT','ROUND',
        +            'SAVING','SCAN','SDF','SECOND','SIGN','SINH','SIN','SKEWNESS',
        +            'SOUNDEX','SPEDIS','SQRT','STDERR','STD','STFIPS','STNAME',
        +            'STNAMEL','SUBSTR','SUM','SYMGET','SYSGET','SYSMSG','SYSPROD',
        +            'SYSRC','SYSTEM','TANH','TAN','TIMEPART','TIME','TINV','TNONCT',
        +            'TODAY','TRANSLATE','TRANWRD','TRIGAMMA','TRIMN','TRIM','TRUNC',
        +            'UNIFORM','UPCASE','USS','VARFMT','VARINFMT','VARLABEL','VARLEN',
        +            'VARNAME','VARNUM','VARRAYX','VARRAY','VARTYPE','VAR','VERIFY',
        +            'VFORMATX','VFORMATDX','VFORMATD','VFORMATNX','VFORMATN',
        +            'VFORMATWX','VFORMATW','VFORMAT','VINARRAYX','VINARRAY',
        +            'VINFORMATX','VINFORMATDX','VINFORMATD','VINFORMATNX','VINFORMATN',
        +            'VINFORMATWX','VINFORMATW','VINFORMAT','VLABELX','VLABEL',
        +            'VLENGTHX','VLENGTH','VNAMEX','VNAME','VTYPEX','VTYPE','WEEKDAY',
        +            'YEAR','YYQ','ZIPFIPS','ZIPNAME','ZIPNAMEL','ZIPSTATE'
        +            ),
        +        4 => array(
        +            'ABORT','ADD','ALTER','AND','ARRAY','AS','ATTRIB','BY','CALL',
        +            'CARDS4','CASCADE','CATNAME','CHECK','CONTINUE','CREATE',
        +            'DATALINES4','DELETE','DESCRIBE','DISPLAY','DISTINCT','DM','DROP',
        +            'ENDSAS','FILE','FOOTNOTE','FOREIGN','FORMAT','FROM',
        +            'GOTO','GROUP','HAVING','IN','INFILE','INFORMAT',
        +            'INSERT','INTO','KEEP','KEY','LABEL','LEAVE',
        +            'LIKE','LINK','LIST','LOSTCARD','MERGE','MESSAGE','MISSING',
        +            'MODIFY','MSGTYPE','NOT','NULL','ON','OPTIONS','OR','ORDER',
        +            'OUTPUT','PAGE','PRIMARY','REDIRECT','REFERENCES','REMOVE',
        +            'RENAME','REPLACE','RESET','RESTRICT','RETAIN','RETURN','SELECT',
        +            'SET','SKIP','STARTSAS','STOP','SYSTASK','TABLE','TITLE','UNIQUE',
        +            'UPDATE','VALIDATE','VIEW','WAITSAS','WHERE','WINDOW','X'
        +            ),
        +        5 => array(
        +            'DO','ELSE','END','IF','THEN','UNTIL','WHILE'
        +            ),
        +        6 => array(
        +            'RUN','QUIT','DATA'
        +            ),
        +        7 => array(
        +            'ERROR'
        +            ),
        +        8 => array(
        +            'WARNING'
        +            ),
        +        9 => array(
        +            'NOTE'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        6 => false,
        +        7 => false,
        +        8 => false,
        +        9 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000ff;',
        +            2 => 'color: #0000ff;',
        +            3 => 'color: #0000ff;',
        +            4 => 'color: #0000ff;',
        +            5 => 'color: #0000ff;',
        +            6 => 'color: #000080; font-weight: bold;',
        +            7 => 'color: #ff0000;',
        +            8 => 'color: #00ff00;',
        +            9 => 'color: #0000ff;'
        +            ),
        +        'COMMENTS' => array(
        +//            1 => 'color: #006400; font-style: italic;',
        +            'MULTI' => 'color: #006400; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #a020f0;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #2e8b57; font-weight: bold;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => '',
        +            2 => '',
        +            3 => ''
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #0000ff; font-weight: bold;',
        +            1 => 'color: #000080; font-weight: bold;',
        +            2 => 'color: #006400; font-style: italic;',
        +            3 => 'color: #006400; font-style: italic;',
        +            4 => 'color: #006400; font-style: italic;',
        +            5 => 'color: #ff0000; font-weight: bold;',
        +            6 => 'color: #00ff00; font-style: italic;',
        +            7 => 'color: #0000ff; font-style: normal;',
        +            8 => 'color: #b218b2; font-weight: bold;',
        +            9 => 'color: #b218b2; font-weight: bold;'
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => '',
        +        7 => '',
        +        8 => '',
        +        9 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        0 => "&[a-zA-Z_][a-zA-Z0-9_]*",
        +        1 => array(//Procedures
        +            GESHI_SEARCH => '(^\\s*)(PROC \\w+)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'im',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +            ),
        +        2 => array(
        +            GESHI_SEARCH => '(^\\s*)(\\*.*;)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'im',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +            ),
        +        3 => array(
        +            GESHI_SEARCH => '(.*;\\s*)(\\*.*;)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'im',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +            ),
        +        4 => array(
        +            GESHI_SEARCH => '(^\\s*)(%\\*.*;)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'im',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +            ),
        +        5 => array(//Error messages
        +            GESHI_SEARCH => '(^ERROR.*)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => 'im',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        6 => array(//Warning messages
        +            GESHI_SEARCH => '(^WARNING.*)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => 'im',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        7 => array(//Notice messages
        +            GESHI_SEARCH => '(^NOTE.*)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => 'im',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        8 => array(
        +            GESHI_SEARCH => '(^\\s*)(CARDS.*)(^\\s*;\\s*$)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'sim',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3'
        +            ),
        +        9 => array(
        +            GESHI_SEARCH => '(^\\s*)(DATALINES.*)(^\\s*;\\s*$)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'sim',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3'
        +            )
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/sass.php b/includes/geshi/sass.php
        new file mode 100644
        index 0000000..0974f84
        --- /dev/null
        +++ b/includes/geshi/sass.php
        @@ -0,0 +1,590 @@
        + 'Sass',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"', "'"),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(),
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        // properties
        +        1 => array(
        +            'azimuth',
        +            'background-attachment',
        +            'background-color',
        +            'background-image',
        +            'background-position',
        +            'background-repeat',
        +            'background',
        +            'border-bottom-color',
        +            'border-radius',
        +            'border-top-left-radius',
        +            'border-top-right-radius',
        +            'border-bottom-right-radius',
        +            'border-bottom-left-radius',
        +            'border-bottom-style',
        +            'border-bottom-width',
        +            'border-left-color',
        +            'border-left-style',
        +            'border-left-width',
        +            'border-right',
        +            'border-right-color',
        +            'border-right-style',
        +            'border-right-width',
        +            'border-top-color',
        +            'border-top-style',
        +            'border-top-width',
        +            'border-bottom',
        +            'border-collapse',
        +            'border-left',
        +            'border-width',
        +            'border-color',
        +            'border-spacing',
        +            'border-style',
        +            'border-top',
        +            'border',
        +            'box-shadow',
        +            'caption-side',
        +            'clear',
        +            'clip',
        +            'color',
        +            'content',
        +            'counter-increment',
        +            'counter-reset',
        +            'cue-after',
        +            'cue-before',
        +            'cue',
        +            'cursor',
        +            'direction',
        +            'display',
        +            'elevation',
        +            'empty-cells',
        +            'float',
        +            'font-family',
        +            'font-size',
        +            'font-size-adjust',
        +            'font-stretch',
        +            'font-style',
        +            'font-variant',
        +            'font-weight',
        +            'font',
        +            'line-height',
        +            'letter-spacing',
        +            'list-style',
        +            'list-style-image',
        +            'list-style-position',
        +            'list-style-type',
        +            'margin-bottom',
        +            'margin-left',
        +            'margin-right',
        +            'margin-top',
        +            'margin',
        +            'marker-offset',
        +            'marks',
        +            'max-height',
        +            'max-width',
        +            'min-height',
        +            'min-width',
        +            'orphans',
        +            'outline',
        +            'outline-color',
        +            'outline-style',
        +            'outline-width',
        +            'overflow',
        +            'padding-bottom',
        +            'padding-left',
        +            'padding-right',
        +            'padding-top',
        +            'padding',
        +            'page',
        +            'page-break-after',
        +            'page-break-before',
        +            'page-break-inside',
        +            'pause-after',
        +            'pause-before',
        +            'pause',
        +            'pitch',
        +            'pitch-range',
        +            'play-during',
        +            'position',
        +            'quotes',
        +            'richness',
        +            'right',
        +            'size',
        +            'speak-header',
        +            'speak-numeral',
        +            'speak-punctuation',
        +            'speak',
        +            'speech-rate',
        +            'stress',
        +            'table-layout',
        +            'text-align',
        +            'text-decoration',
        +            'text-indent',
        +            'text-shadow',
        +            'text-transform',
        +            'top',
        +            'unicode-bidi',
        +            'vertical-align',
        +            'visibility',
        +            'voice-family',
        +            'volume',
        +            'white-space',
        +            'widows',
        +            'width',
        +            'word-spacing',
        +            'z-index',
        +            'bottom',
        +            'left',
        +            'height',
        +            // media queries
        +            'screen',
        +            'orientation',
        +            'min-device-width',
        +            'max-device-width',
        +        ),
        +        // reserved words for values
        +        2 => array(
        +            // colors
        +            'aqua',
        +            'black',
        +            'blue',
        +            'fuchsia',
        +            'gray',
        +            'green',
        +            'lime',
        +            'maroon',
        +            'navy',
        +            'olive',
        +            'orange',
        +            'purple',
        +            'red',
        +            'silver',
        +            'teal',
        +            'white',
        +            'yellow',
        +            // media queries
        +            'landscape',
        +            'portrait',
        +            // other
        +            'above',
        +            'absolute',
        +            'always',
        +            'armenian',
        +            'aural',
        +            'auto',
        +            'avoid',
        +            'baseline',
        +            'behind',
        +            'below',
        +            'bidi-override',
        +            'blink',
        +            'block',
        +            'bold',
        +            'bolder',
        +            'both',
        +            'capitalize',
        +            'center-left',
        +            'center-right',
        +            'center',
        +            'circle',
        +            'cjk-ideographic',
        +            'close-quote',
        +            'collapse',
        +            'condensed',
        +            'continuous',
        +            'crop',
        +            'crosshair',
        +            'cross',
        +            'cursive',
        +            'dashed',
        +            'decimal-leading-zero',
        +            'decimal',
        +            'default',
        +            'digits',
        +            'disc',
        +            'dotted',
        +            'double',
        +            'e-resize',
        +            'embed',
        +            'extra-condensed',
        +            'extra-expanded',
        +            'expanded',
        +            'fantasy',
        +            'far-left',
        +            'far-right',
        +            'faster',
        +            'fast',
        +            'fixed',
        +            'georgian',
        +            'groove',
        +            'hebrew',
        +            'help',
        +            'hidden',
        +            'hide',
        +            'higher',
        +            'high',
        +            'hiragana-iroha',
        +            'hiragana',
        +            'icon',
        +            'inherit',
        +            'inline-table',
        +            'inline',
        +            'inline-block',
        +            'inset',
        +            'inside',
        +            'italic',
        +            'justify',
        +            'katakana-iroha',
        +            'katakana',
        +            'larger',
        +            'large',
        +            'left-side',
        +            'leftwards',
        +            'level',
        +            'lighter',
        +            'line-through',
        +            'list-item',
        +            'loud',
        +            'lower-alpha',
        +            'lower-greek',
        +            'lower-roman',
        +            'lowercase',
        +            'ltr',
        +            'lower',
        +            'low',
        +            'medium',
        +            'message-box',
        +            'middle',
        +            'monospace',
        +            'n-resize',
        +            'narrower',
        +            'ne-resize',
        +            'no-close-quote',
        +            'no-open-quote',
        +            'no-repeat',
        +            'none',
        +            'normal',
        +            'nowrap',
        +            'nw-resize',
        +            'oblique',
        +            'once',
        +            'open-quote',
        +            'outset',
        +            'outside',
        +            'overline',
        +            'pointer',
        +            'px',
        +            'relative',
        +            'repeat-x',
        +            'repeat-y',
        +            'repeat',
        +            'ridge',
        +            'right-side',
        +            'rightwards',
        +            's-resize',
        +            'sans-serif',
        +            'scroll',
        +            'se-resize',
        +            'semi-condensed',
        +            'semi-expanded',
        +            'separate',
        +            'serif',
        +            'show',
        +            'silent',
        +            'slow',
        +            'slower',
        +            'small-caps',
        +            'small-caption',
        +            'smaller',
        +            'soft',
        +            'solid',
        +            'spell-out',
        +            'square',
        +            'static',
        +            'status-bar',
        +            'super',
        +            'sw-resize',
        +            'table-caption',
        +            'table-cell',
        +            'table-column',
        +            'table-column-group',
        +            'table-footer-group',
        +            'table-header-group',
        +            'table-row',
        +            'table-row-group',
        +            'text',
        +            'text-bottom',
        +            'text-top',
        +            'thick',
        +            'thin',
        +            'transparent',
        +            'ultra-condensed',
        +            'ultra-expanded',
        +            'underline',
        +            'upper-alpha',
        +            'upper-latin',
        +            'upper-roman',
        +            'uppercase',
        +            'url',
        +            'visible',
        +            'w-resize',
        +            'wait',
        +            'wider',
        +            'x-fast',
        +            'x-high',
        +            'x-large',
        +            'x-loud',
        +            'x-low',
        +            'x-small',
        +            'x-soft',
        +            'xx-large',
        +            'xx-small',
        +            'yes'
        +        ),
        +        // directives
        +        3 => array(
        +            '@at-root',
        +            '@charset',
        +            '@content',
        +            '@debug',
        +            '@each',
        +            '@else',
        +            '@elseif',
        +            '@else if',
        +            '@extend',
        +            '@font-face',
        +            '@for',
        +            '@function',
        +            '@if',
        +            '@import',
        +            '@include',
        +            '@media',
        +            '@mixin',
        +            '@namespace',
        +            '@page',
        +            '@return',
        +            '@warn',
        +            '@while',
        +        ),
        +        // built-in Sass functions
        +        4 => array(
        +            'rgb',
        +            'rgba',
        +            'mix',
        +            'hsl',
        +            'hsla',
        +            'hue',
        +            'saturation',
        +            'lightness',
        +            'adjust-hue',
        +            'lighten',
        +            'darken',
        +            'saturate',
        +            'desaturate',
        +            'grayscale',
        +            'complement',
        +            'invert',
        +            'alpha',
        +            'opacify',
        +            'transparentize',
        +            'adjust-color',
        +            'scale-color',
        +            'change-color',
        +            'ie-hex-str',
        +            'unquote',
        +            'quote',
        +            'str-length',
        +            'str-insert',
        +            'str-index',
        +            'str-slice',
        +            'to-upper-case',
        +            'to-lower-case',
        +            'percentage',
        +            'round',
        +            'ceil',
        +            'floor',
        +            'abs',
        +            'min',
        +            'max',
        +            'random',
        +            'length',
        +            'nth',
        +            'join',
        +            'append',
        +            'zip',
        +            'index',
        +            'list-separator',
        +            'map-get',
        +            'map-merge',
        +            'map-remove',
        +            'map-keys',
        +            'map-values',
        +            'map-has-key',
        +            'keywords',
        +            'feature-exists',
        +            'variable-exists',
        +            'global-variable-exists',
        +            'function-exists',
        +            'mixin-exists',
        +            'inspect',
        +            'type-of',
        +            'unit',
        +            'unitless',
        +            'comparable',
        +            'call',
        +            'if',
        +            'unique-id',
        +        ),
        +        // reserved words
        +        5 => array(
        +            '!important',
        +            '!default',
        +            '!optional',
        +            'true',
        +            'false',
        +            'with',
        +            'without',
        +            'null',
        +            'from',
        +            'through',
        +            'to',
        +            'in',
        +            'and',
        +            'or',
        +            'only',
        +            'not',
        +        ),
        +    ),
        +    'SYMBOLS' => array(
        +        '(',
        +        ')',
        +        '{',
        +        '}',
        +        ':',
        +        ';',
        +        '>',
        +        '+',
        +        '*',
        +        ',',
        +        '^',
        +        '=',
        +        '&',
        +        '~',
        +        '!',
        +        '%',
        +        '?',
        +        '...',
        +    ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +    ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000000; font-weight: bold;',
        +            2 => 'color: #993333;',
        +            3 => 'color: #990000;',
        +            4 => 'color: #000000; font-weight: bold;',
        +            5 => 'color: #009900;',
        +        ),
        +        'COMMENTS' => array(
        +            1 => 'color: #006600; font-style: italic;',
        +            'MULTI' => 'color: #006600; font-style: italic;'
        +        ),
        +        'ESCAPE_CHAR' => array(),
        +        'BRACKETS' => array(
        +            0 => 'color: #00AA00;'
        +        ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +        ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +        ),
        +        'METHODS' => array(),
        +        'SYMBOLS' => array(
        +            0 => 'color: #00AA00;'
        +        ),
        +        'SCRIPT' => array(),
        +        'REGEXPS' => array(
        +            0 => 'color: #cc00cc;',
        +            1 => 'color: #6666ff;',
        +            2 => 'color: #3333ff;',
        +            3 => 'color: #933;',
        +            4 => 'color: #ff6633;',
        +            5 => 'color: #0066ff;',
        +        )
        +    ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +    ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(
        +        // Variables
        +        0 => "[$][a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*",
        +        // Hexadecimal colors
        +        1 => "\#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})",
        +        // CSS Pseudo classes
        +        // note: & is needed for > (i.e. > )
        +        2 => "(? "[+\-]?(\d+|(\d*\.\d+))(em|ex|pt|px|cm|in|%)",
        +        // Interpolation
        +        4 => "(\#\{.*\})",
        +        // Browser prefixed properties
        +        5 => "(\-(moz|ms|o|webkit)\-[a-z\-]*)",
        +    ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(),
        +    'TAB_WIDTH' => 2,
        +);
        diff --git a/includes/geshi/scala.php b/includes/geshi/scala.php
        new file mode 100644
        index 0000000..dcfb277
        --- /dev/null
        +++ b/includes/geshi/scala.php
        @@ -0,0 +1,136 @@
        + 'Scala',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(2 => "/\\'(?!\w\\'|\\\\)\w+(?=\s)/"),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'",'"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'ESCAPE_REGEXP' => array(
        +        //Simple Single Char Escapes
        +        1 => "#\\\\[nfrtv\$\"\n\\\\]#i",
        +        //Hexadecimal Char Specs
        +        2 => "#\\\\x[\da-fA-F]{1,2}#i",
        +        //Hexadecimal Char Specs (unicode)
        +        3 => "#\\\\u[\da-fA-F]{1,4}#",
        +        //Hexadecimal Char Specs (Extended Unicode)
        +        4 => "#\\\\U[\da-fA-F]{1,8}#",
        +        ),
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'abstract', 'case', 'catch', 'class', 'def',
        +            'do', 'else', 'extends', 'false', 'final',
        +            'finally', 'for', 'forSome', 'if', 'implicit',
        +            'import', 'match', 'new', 'null', 'object',
        +            'override', 'package', 'private', 'protected', 'requires',
        +            'return', 'sealed', 'super', 'this', 'throw',
        +            'trait', 'try', 'true', 'type', 'val',
        +            'var', 'while', 'with', 'yield'
        +            ),
        +        2 => array(
        +            'void', 'double', 'int', 'boolean', 'byte', 'short', 'long', 'char', 'float'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', '>', '?',
        +        '_', ':', '=', '=>', '<<:',
        +        '<%', '>:', '#', '@'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000ff; font-weight: bold;',
        +            2 => 'color: #9999cc; font-weight: bold;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008000; font-style: italic;',
        +            2 => 'color: #CC66FF;',
        +            'MULTI' => 'color: #00ff00; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #6666ff; font-weight: bold;',
        +            1 => 'color: #6666ff; font-weight: bold;',
        +            2 => 'color: #5555ff; font-weight: bold;',
        +            3 => 'color: #4444ff; font-weight: bold;',
        +            4 => 'color: #3333ff; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #F78811;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #6666FF;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #F78811;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #000000;',
        +            2 => 'color: #000000;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000080;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => 'http://scala-lang.org',
        +        2 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/scheme.php b/includes/geshi/scheme.php
        new file mode 100644
        index 0000000..2a6c972
        --- /dev/null
        +++ b/includes/geshi/scheme.php
        @@ -0,0 +1,168 @@
        + 'Scheme',
        +    'COMMENT_SINGLE' => array(1 => ';'),
        +    'COMMENT_MULTI' => array('#|' => '|#'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'abs', 'acos', 'and', 'angle', 'append', 'appply', 'approximate',
        +            'asin', 'assoc', 'assq', 'assv', 'atan',
        +
        +            'begin', 'boolean?', 'bound-identifier=?',
        +
        +            'caar', 'caddr', 'cadr', 'call-with-current-continuation',
        +            'call-with-input-file', 'call-with-output-file', 'call/cc', 'car',
        +            'case', 'catch', 'cdddar', 'cddddr', 'cdr', 'ceiling', 'char->integer',
        +            'char-alphabetic?', 'char-ci<=?', 'char-ci=?',
        +            'char-ci>?', 'char-ci=?', 'char-downcase', 'char-lower-case?',
        +            'char-numeric', 'char-ready', 'char-ready?', 'char-upcase',
        +            'char-upper-case?', 'char-whitespace?', 'char<=?', 'char=?', 'char>?', 'char?', 'close-input-port', 'close-output-port',
        +            'complex?', 'cond', 'cons', 'construct-identifier', 'cos',
        +            'current-input-port', 'current-output-port',
        +
        +            'd', 'define', 'define-syntax', 'delay', 'denominator', 'display', 'do',
        +
        +            'e', 'eof-object?', 'eq?', 'equal?', 'eqv?', 'even?', 'exact->inexact',
        +            'exact?', 'exp', 'expt', 'else',
        +
        +            'f', 'floor', 'for-each', 'force', 'free-identifer=?',
        +
        +            'gcd', 'gen-counter', 'gen-loser', 'generate-identifier',
        +
        +            'identifier->symbol', 'identifier', 'if', 'imag-part', 'inexact->exact',
        +            'inexact?', 'input-port?', 'integer->char', 'integer?', 'integrate-system',
        +
        +            'l', 'lambda', 'last-pair', 'lcm', 'length', 'let', 'let*', 'letrec',
        +            'list', 'list->string', 'list->vector', 'list-ref', 'list-tail', 'list?',
        +            'load', 'log',
        +
        +            'magnitude', 'make-polar', 'make-promise', 'make-rectangular',
        +            'make-string', 'make-vector', 'map', 'map-streams', 'max', 'member',
        +            'memq', 'memv', 'min', 'modulo',
        +
        +            'negative', 'newline', 'nil', 'not', 'null?', 'number->string', 'number?',
        +            'numerator',
        +
        +            'odd?', 'open-input-file', 'open-output-file', 'or', 'output-port',
        +
        +            'pair?', 'peek-char', 'positive?', 'procedure?',
        +
        +            'quasiquote', 'quote', 'quotient',
        +
        +            'rational', 'rationalize', 'read', 'read-char', 'real-part', 'real?',
        +            'remainder', 'return', 'reverse',
        +
        +            's', 'sequence', 'set!', 'set-char!', 'set-cdr!', 'sin', 'sqrt', 'string',
        +            'string->list', 'string->number', 'string->symbol', 'string-append',
        +            'string-ci<=?', 'string-ci=?',
        +            'string-ci>?', 'string-copy', 'string-fill!', 'string-length',
        +            'string-ref', 'string-set!', 'string<=?', 'string=?', 'string>?', 'string?', 'substring', 'symbol->string',
        +            'symbol?', 'syntax', 'syntax-rules',
        +
        +            't', 'tan', 'template', 'transcript-off', 'transcript-on', 'truncate',
        +
        +            'unquote', 'unquote-splicing', 'unwrap-syntax',
        +
        +            'vector', 'vector->list', 'vector-fill!', 'vector-length', 'vector-ref',
        +            'vector-set!', 'vector?',
        +
        +            'with-input-from-file', 'with-output-to-file', 'write', 'write-char',
        +
        +            'zero?'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '[', ']', '!', '%', '^', '&', '/','+','-','*','=','<','>',';','|'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #202020;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/scilab.php b/includes/geshi/scilab.php
        new file mode 100644
        index 0000000..b0951d9
        --- /dev/null
        +++ b/includes/geshi/scilab.php
        @@ -0,0 +1,293 @@
        + 'SciLab',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(
        +        2 => "/(?<=\)|\]|\w)'/"
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'HARDQUOTE' => array("'", "'"),
        +    'HARDESCAPE' => array(),
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'if', 'else', 'elseif', 'end', 'select', 'case', 'for', 'while', 'break'
        +            ),
        +        2 => array(
        +            'STDIN', 'STDOUT', 'STDERR',
        +            '%i', '%pi', '%e', '%eps', '%nan', '%inf', '%s', '%t', '%f',
        +            'usual', 'polynomial', 'boolean', 'character', 'function', 'rational', 'state-space',
        +            'sparse', 'boolean sparse', 'list', 'tlist', 'library', 'endfunction'
        +            ),
        +        3 => array(
        +            '%asn', '%helps', '%k', '%sn', 'abcd', 'abinv', 'abort', 'about', 'About_M2SCI_tools',
        +            'abs', 'acos', 'acosh', 'acoshm', 'acosm', 'AdCommunications', 'add_demo', 'add_edge',
        +            'add_help_chapter', 'add_node', 'add_palette', 'addcolor', 'addf', 'addinter', 'addmenu',
        +            'adj_lists', 'adj2sp', 'aff2ab', 'alufunctions', 'amell', 'analpf', 'analyze', 'and',
        +            'ans', 'apropos', 'arc_graph', 'arc_number', 'arc_properties', 'argn', 'arhnk', 'arl2',
        +            'arma', 'arma2p', 'armac', 'armax', 'armax1', 'arsimul', 'artest', 'articul', 'ascii',
        +            'asciimat', 'asin', 'asinh', 'asinhm', 'asinm', 'assignation', 'atan', 'atanh', 'atanhm',
        +            'atanm', 'augment', 'auread', 'auwrite', 'axes_properties', 'axis_properties', 'backslash',
        +            'balanc', 'balreal', 'bandwr', 'banner','bar', 'barh', 'barhomogenize', 'basename', 'bdiag',
        +            'beep', 'besselh', 'besseli', 'besselj', 'besselk', 'bessely', 'best_match', 'beta','bezout',
        +            'bifish', 'bilin', 'binomial', 'black', 'bloc2exp', 'bloc2ss', 'bode', 'bool2s',
        +            'boucle', 'brackets', 'browsevar', 'bsplin3val', 'bstap', 'buttmag', 'buttondialog',
        +            'bvode', 'bvodeS', 'c_link', 'cainv', 'calendar', 'calerf', 'calfrq', 'call', 'canon', 'casc',
        +            'cat', 'catch', 'ccontrg', 'cd', 'cdfbet', 'cdfbin', 'cdfchi', 'cdfchn', 'cdff', 'cdffnc',
        +            'cdfgam', 'cdfnbn', 'cdfnor', 'cdfpoi', 'cdft', 'ceil', 'cell', 'cell2mat', 'cellstr', 'center',
        +            'cepstrum', 'chain_struct', 'chaintest', 'champ', 'champ_properties', 'champ1', 'char', 'chart',
        +            'chartooem', 'chdir', 'cheb1mag', 'cheb2mag', 'check_graph', 'chepol', 'chfact', 'chol', 'chsolve',
        +            'circuit', 'classmarkov', 'clc', 'clean', 'clear', 'clear_pixmap', 'clearfun', 'clearglobal','clf',
        +            'clipboard', 'close', 'cls2dls', 'cmb_lin', 'cmndred', 'cmoment', 'code2str', 'coeff', 'coff', 'coffg',
        +            'colcomp', 'colcompr', 'colinout', 'colon', 'color', 'color_list', 'colorbar', 'colordef', 'colormap',
        +            'colregul', 'comma', 'comments', 'comp', 'companion', 'comparison', 'Compound_properties', 'con_nodes',
        +            'cond', 'config', 'configure_msvc', 'conj', 'connex', 'console', 'cont_frm', 'cont_mat', 'Contents',
        +            'continue', 'contour', 'contour2d', 'contour2di', 'contourf', 'contr', 'contract_edge', 'contrss',
        +            'convex_hull', 'convol', 'convstr', 'copfac', 'copy', 'corr', 'correl', 'cos', 'cosh', 'coshm',
        +            'cosm', 'cotg', 'coth', 'cothm', 'covar', 'create_palette', 'cshep2d', 'csim', 'cspect', 'Cste',
        +            'ctr_gram', 'cumprod', 'cumsum', 'cycle_basis', 'czt', 'dasrt', 'dassl', 'datafit', 'date', 'datenum',
        +            'datevec', 'dbphi', 'dcf', 'ddp', 'debug', 'dec2hex', 'deff', 'definedfields', 'degree', 'delbpt',
        +            'delete', 'delete_arcs', 'delete_nodes', 'delip', 'delmenu', 'demoplay', 'denom', 'derivat', 'derivative',
        +            'des2ss', 'des2tf', 'det', 'determ', 'detr', 'detrend', 'dft', 'dhinf', 'dhnorm', 'diag', 'diary',
        +            'diff', 'diophant', 'dir', 'dirname', 'disp', 'dispbpt', 'dispfiles', 'dlgamma', 'dnaupd', 'do', 'dot',
        +            'double', 'dragrect', 'draw', 'drawaxis', 'drawlater', 'drawnow', 'driver', 'dsaupd', 'dscr',
        +            'dsearch', 'dsimul', 'dt_ility', 'dtsi', 'edge_number', 'edit', 'edit_curv', 'edit_error',
        +            'edit_graph', 'edit_graph_menus', 'editvar', 'eigenmarkov', 'ell1mag',
        +            'empty', 'emptystr', 'eqfir', 'eqiir', 'equal', 'Equal', 'equil', 'equil1',
        +            'ereduc', 'erf', 'erfc', 'erfcx', 'errbar', 'errcatch', 'errclear', 'error', 'error_table', 'etime',
        +            'eval', 'eval_cshep2d', 'eval3d', 'eval3dp', 'evans', 'evstr', 'excel2sci', 'exec', 'execstr', 'exists',
        +            'exit', 'exp', 'expm', 'external', 'extraction', 'eye', 'fac3d', 'factorial', 'factors', 'faurre', 'fchamp',
        +            'fcontour', 'fcontour2d', 'fec', 'fec_properties', 'feedback', 'feval', 'ffilt', 'fft', 'fft2', 'fftshift',
        +            'fgrayplot', 'figure', 'figure_properties', 'figure_style', 'file', 'fileinfo', 'fileparts', 'filter', 'find',
        +            'find_freq', 'find_path', 'findABCD', 'findAC', 'findBD', 'findBDK', 'findm', 'findmsvccompiler', 'findobj',
        +            'findR', 'findx0BD', 'firstnonsingleton', 'fit_dat', 'fix', 'floor', 'flts', 'foo', 'format',
        +            'formatman', 'fort', 'fourplan', 'fplot2d', 'fplot3d', 'fplot3d1', 'fprintf', 'fprintfMat', 'frep2tf',
        +            'freq', 'freson', 'frexp', 'frfit', 'frmag', 'fscanf', 'fscanfMat', 'fsfirlin', 'fsolve', 'fspecg',
        +            'fstabst', 'fstair', 'ftest', 'ftuneq', 'full', 'fullfile', 'fullrf', 'fullrfk', 'fun2string', 'Funcall',
        +            'funcprot', 'functions', 'funptr', 'fusee', 'G_make', 'g_margin', 'gainplot', 'gamitg',
        +            'gamma', 'gammaln', 'gca', 'gcare', 'gcd', 'gce', 'gcf', 'gda', 'gdf', 'gen_net', 'genfac3d', 'genlib',
        +            'genmarkov', 'geom3d', 'geomean', 'get', 'get_contents_infer', 'get_function_path', 'getcolor', 'getcwd',
        +            'getd', 'getdate', 'getenv', 'getf', 'getfield', 'getfont', 'gethistory', 'getio', 'getlinestyle',
        +            'getlongpathname', 'getmark', 'getmemory', 'getos', 'getpid', 'getscilabkeywords', 'getshell',
        +            'getshortpathname', 'getsymbol', 'getvalue', 'getversion', 'gfare', 'gfrancis', 'girth', 'givens',
        +            'glever', 'glist', 'global', 'GlobalProperty', 'glue', 'gmres', 'gpeche', 'gr_menu', 'graduate', 'grand',
        +            'graph_2_mat', 'graph_center', 'graph_complement', 'graph_diameter', 'graph_power', 'graph_simp', 'graph_sum',
        +            'graph_union', 'graphic', 'Graphics', 'graphics_entities', 'graph-list', 'graycolormap', 'grayplot',
        +            'grayplot_properties', 'graypolarplot', 'great', 'grep', 'group', 'gschur', 'gsort', 'gspec', 'gstacksize',
        +            'gtild', 'h_cl', 'h_inf', 'h_inf_st', 'h_norm', 'h2norm', 'halt', 'hamilton', 'hank', 'hankelsv', 'harmean',
        +            'hat', 'havewindow', 'head_comments', 'help', 'help_skeleton', 'hermit', 'hess', 'hex2dec', 'hilb', 'hinf',
        +            'hist3d', 'histplot', 'horner', 'host', 'hotcolormap', 'householder', 'hrmt', 'hsv2rgb', 'hsvcolormap',
        +            'htrianr', 'hypermat', 'hypermatrices', 'iconvert', 'ieee', 'ifft', 'iir', 'iirgroup', 'iirlp',
        +            'ilib_build', 'ilib_compile', 'ilib_for_link', 'ilib_gen_gateway', 'ilib_gen_loader', 'ilib_gen_Make',
        +            'im_inv', 'imag', 'impl', 'imrep2ss', 'imult', 'ind2sub', 'Infer', 'inistate', 'input', 'insertion', 'int',
        +            'int16', 'int2d', 'int32', 'int3d', 'int8', 'intc', 'intdec', 'integrate', 'interp', 'interp1', 'interp2d',
        +            'interp3d', 'interpln', 'intersci', 'intersect', 'intg', 'intl', 'intppty', 'intsplin', 'inttrap', 'inttype',
        +            'inv', 'inv_coeff', 'invr', 'invsyslin', 'iqr', 'is_connex', 'iscellstr', 'isdef', 'isdir', 'isempty',
        +            'isequal', 'isequalbitwise', 'iserror', 'isglobal', 'isinf', 'isnan', 'isoview', 'isreal', 'javasci',
        +            'jetcolormap', 'jmat', 'justify', 'kalm', 'karmarkar', 'kernel', 'keyboard', 'knapsack', 'kpure', 'krac2',
        +            'kron', 'kroneck', 'label_properties', 'labostat', 'LANGUAGE', 'lasterror', 'lattn', 'lattp', 'lcf', 'lcm',
        +            'lcmdiag', 'ldiv', 'ldivf', 'leastsq', 'left', 'legend', 'legend_properties', 'legendre', 'legends', 'length',
        +            'leqr', 'less', 'lev', 'levin', 'lex_sort', 'lft', 'lgfft', 'lib', 'lin', 'lin2mu', 'lindquist',
        +            'line_graph', 'linear_interpn', 'lines', 'LineSpec', 'linf', 'linfn', 'link', 'linmeq', 'linpro', 'linsolve',
        +            'linspace', 'listfiles', 'listvarinfile', 'lmisolver', 'lmitool', 'load', 'load_graph', 'loadhistory',
        +            'loadmatfile', 'loadplots', 'loadwave', 'locate', 'log', 'log10', 'log1p', 'log2', 'logm', 'logspace',
        +            'lotest', 'lqe', 'lqg', 'lqg_ltr', 'lqg2stan', 'lqr', 'ls', 'lsq', 'lsq_splin', 'lsqrsolve', 'lsslist',
        +            'lstcat', 'lstsize', 'ltitr', 'lu', 'ludel', 'lufact', 'luget', 'lusolve', 'lyap', 'm_circle', 'm2scideclare',
        +            'macglov', 'macr2lst', 'macr2tree', 'macro', 'macrovar', 'mad', 'make_graph', 'make_index', 'makecell', 'man',
        +            'manedit', 'mapsound', 'markp2ss', 'mat_2_graph', 'matfile2sci', 'Matlab-Scilab_character_strings', 'Matplot',
        +            'Matplot_properties', 'Matplot1', 'matrices', 'matrix', 'max', 'max_cap_path', 'max_clique', 'max_flow',
        +            'maxi', 'mcisendstring', 'mclearerr', 'mclose', 'mdelete', 'mean', 'meanf', 'median', 'menus', 'meof',
        +            'merror', 'mese', 'mesh', 'mesh2d', 'meshgrid', 'mfft', 'mfile2sci', 'mfprintf', 'mfscanf', 'mget', 'mgeti',
        +            'mgetl', 'mgetstr', 'milk_drop', 'min', 'min_lcost_cflow', 'min_lcost_flow1', 'min_lcost_flow2',
        +            'min_qcost_flow', 'min_weight_tree', 'mine', 'mini', 'minreal', 'minss', 'minus', 'mkdir', 'mlist', 'mode',
        +            'modulo', 'moment', 'mopen', 'move', 'mprintf', 'mps2linpro', 'mput', 'mputl', 'mputstr', 'mrfit', 'mscanf',
        +            'msd', 'mseek', 'msprintf', 'msscanf', 'mstr2sci', 'mtell', 'mtlb_0', 'mtlb_a', 'mtlb_all', 'mtlb_any',
        +            'mtlb_axis', 'mtlb_beta', 'mtlb_box', 'mtlb_close', 'mtlb_colordef', 'mtlb_conv', 'mtlb_cumprod', 'mtlb_cumsum',
        +            'mtlb_dec2hex', 'mtlb_delete', 'mtlb_diag', 'mtlb_diff', 'mtlb_dir', 'mtlb_double', 'mtlb_e', 'mtlb_echo',
        +            'mtlb_eig', 'mtlb_eval', 'mtlb_exist', 'mtlb_eye', 'mtlb_false', 'mtlb_fft', 'mtlb_fftshift', 'mtlb_find',
        +            'mtlb_findstr', 'mtlb_fliplr', 'mtlb_fopen', 'mtlb_format', 'mtlb_fprintf', 'mtlb_fread', 'mtlb_fscanf',
        +            'mtlb_full', 'mtlb_fwrite', 'mtlb_grid', 'mtlb_hold', 'mtlb_i', 'mtlb_ifft', 'mtlb_imp', 'mtlb_int16',
        +            'mtlb_int32', 'mtlb_int8', 'mtlb_is', 'mtlb_isa', 'mtlb_isfield', 'mtlb_isletter', 'mtlb_isspace', 'mtlb_l',
        +            'mtlb_legendre', 'mtlb_linspace', 'mtlb_load', 'mtlb_logic', 'mtlb_logical', 'mtlb_lower', 'mtlb_max',
        +            'mtlb_min', 'mtlb_mode', 'mtlb_more', 'mtlb_num2str', 'mtlb_ones', 'mtlb_plot', 'mtlb_prod', 'mtlb_rand',
        +            'mtlb_randn', 'mtlb_rcond', 'mtlb_realmax', 'mtlb_realmin', 'mtlb_repmat', 'mtlb_s', 'mtlb_save',
        +            'mtlb_setstr', 'mtlb_size', 'mtlb_sort', 'mtlb_sparse', 'mtlb_strcmp', 'mtlb_strcmpi', 'mtlb_strfind',
        +            'mtlb_strrep', 'mtlb_sum', 'mtlb_t', 'mtlb_toeplitz', 'mtlb_tril', 'mtlb_triu', 'mtlb_true', 'mtlb_uint16',
        +            'mtlb_uint32', 'mtlb_uint8', 'mtlb_upper', 'mtlb_zeros', 'mu2lin', 'mucomp', 'mulf', 'mvvacov', 'name2rgb',
        +            'names', 'nancumsum', 'nand2mean', 'nanmax', 'nanmean', 'nanmeanf', 'nanmedian', 'nanmin', 'nanstdev',
        +            'nansum', 'narsimul', 'NDcost', 'ndgrid', 'ndims', 'nearfloat', 'nehari', 'neighbors', 'netclose', 'netwindow',
        +            'netwindows', 'new', 'newaxes', 'newest', 'newfun', 'nextpow2', 'nf3d', 'nfreq', 'nlev', 'nnz', 'node_number',
        +            'nodes_2_path', 'nodes_degrees', 'noisegen', 'norm', 'not', 'null', 'number_properties', 'numdiff', 'numer',
        +            'nyquist', 'object_editor', 'obs_gram', 'obscont', 'obscont1', 'observer', 'obsv_mat', 'obsvss', 'ode',
        +            'ode_discrete', 'ode_optional_output', 'ode_root', 'odedc', 'odeoptions', 'oemtochar', 'old_style',
        +            'oldbesseli', 'oldbesselj', 'oldbesselk', 'oldbessely', 'oldload', 'oldplot', 'oldsave', 'ones',
        +            'Operation', 'optim', 'or', 'orth', 'overloading', 'p_margin', 'param3d', 'param3d_properties',
        +            'param3d1', 'paramfplot2d', 'parents', 'parrot', 'part', 'path_2_nodes', 'pathconvert', 'pause', 'pbig',
        +            'pca', 'pcg', 'pdiv', 'pen2ea', 'pencan', 'penlaur', 'percent', 'perctl', 'perfect_match', 'perl',
        +            'perms', 'permute', 'pertrans', 'pfss', 'phasemag', 'phc', 'pie', 'pinv', 'pipe_network', 'playsnd', 'plot',
        +            'plot_graph', 'plot2d', 'plot2d_old_version', 'plot2d1', 'plot2d2', 'plot2d3', 'plot2d4', 'plot3d',
        +            'plot3d_old_version', 'plot3d1', 'plot3d2', 'plot3d3', 'plotframe', 'plotprofile', 'plus', 'plzr',
        +            'pmodulo', 'pol2des', 'pol2str', 'pol2tex', 'polar', 'polarplot', 'polfact', 'poly', 'polyline_properties',
        +            'portr3d', 'portrait', 'power', 'ppol', 'prbs_a', 'predecessors', 'predef', 'print', 'printf',
        +            'printf_conversion', 'printing', 'printsetupbox', 'prod', 'profile', 'progressionbar', 'proj', 'projsl',
        +            'projspec', 'psmall', 'pspect', 'pvm', 'pvm_addhosts', 'pvm_barrier', 'pvm_bcast', 'pvm_bufinfo', 'pvm_config',
        +            'pvm_delhosts', 'pvm_error', 'pvm_exit', 'pvm_f772sci', 'pvm_get_timer', 'pvm_getinst', 'pvm_gettid',
        +            'pvm_gsize', 'pvm_halt', 'pvm_joingroup', 'pvm_kill', 'pvm_lvgroup', 'pvm_mytid', 'pvm_parent', 'pvm_probe',
        +            'pvm_recv', 'pvm_reduce', 'pvm_sci2f77', 'pvm_send', 'pvm_set_timer', 'pvm_spawn', 'pvm_spawn_independent',
        +            'pvm_start', 'pvm_tasks', 'pvm_tidtohost', 'pvmd3', 'pwd', 'qassign', 'qld', 'qmr', 'qr', 'quapro', 'quart',
        +            'quaskro', 'quit', 'quote', 'rand', 'randpencil', 'range', 'rank', 'rankqr', 'rat',  'rcond',
        +            'rdivf', 'read', 'read4b', 'readb', 'readc_', 'readmps', 'readxls', 'real', 'realtime', 'realtimeinit',
        +            'rectangle_properties', 'recur', 'reglin', 'regress', 'remez', 'remezb', 'repfreq', 'replot', 'resethistory',
        +            'residu', 'resume', 'return', 'rgb2name', 'ric_desc', 'ricc', 'riccati', 'rlist', 'rmdir', 'roots', 'rotate',
        +            'round', 'routh_t', 'rowcomp', 'rowcompr', 'rowinout', 'rowregul', 'rowshuff', 'rpem', 'rref', 'rtitr',
        +            'rubberbox', 'salesman', 'sample', 'samplef', 'samwr', 'save', 'save_format', 'save_graph', 'savehistory',
        +            'savematfile', 'savewave', 'sca', 'scaling', 'scanf', 'scanf_conversion', 'scf', 'schur', 'sci_files',
        +            'sci2exp', 'sci2for', 'sci2map', 'sciargs', 'SciComplex', 'SciComplexArray', 'SciDouble', 'SciDoubleArray',
        +            'scilab', 'Scilab', 'ScilabEval', 'scilink', 'scipad', 'SciString', 'SciStringArray', 'sd2sci', 'sda', 'sdf',
        +            'secto3d', 'segs_properties', 'semi', 'semicolon', 'semidef', 'sensi', 'set', 'set_posfig_dim',
        +            'setbpt', 'setdiff', 'setenv', 'seteventhandler', 'setfield', 'sethomedirectory', 'setlanguage', 'setmenu',
        +            'sfact', 'Sfgrayplot', 'Sgrayplot', 'sgrid', 'shortest_path', 'show_arcs', 'show_graph', 'show_nodes',
        +            'show_pixmap', 'showprofile', 'sident', 'sign', 'Signal', 'signm', 'simp', 'simp_mode', 'sin', 'sinc',
        +            'sincd', 'sinh', 'sinhm', 'sinm', 'size', 'slash', 'sleep', 'sm2des', 'sm2ss', 'smooth', 'solve',
        +            'sorder', 'sort', 'sound', 'soundsec', 'sp2adj', 'spaninter', 'spanplus', 'spantwo', 'spchol',
        +            'spcompack', 'spec', 'specfact', 'speye', 'spget', 'splin', 'splin2d', 'splin3d', 'split_edge', 'spones',
        +            'sprand', 'sprintf', 'spzeros', 'sqroot', 'sqrt', 'sqrtm', 'square', 'squarewave', 'srfaur', 'srkf', 'ss2des',
        +            'ss2ss', 'ss2tf', 'sscanf', 'sskf', 'ssprint', 'ssrand', 'st_deviation', 'st_ility', 'stabil', 'stacksize',
        +            'star', 'startup', 'stdev', 'stdevf', 'str2code', 'strange', 'strcat', 'strindex', 'string', 'stringbox',
        +            'strings', 'stripblanks', 'strong_con_nodes', 'strong_connex', 'strsplit', 'strsubst', 'struct', 'sub2ind',
        +            'subf', 'subgraph', 'subplot', 'successors', 'sum', 'supernode', 'surf', 'surface_properties', 'sva',
        +            'svd', 'svplot', 'sylm', 'sylv', 'symbols', 'sysconv', 'sysdiag', 'sysfact', 'syslin', 'syssize', 'system',
        +            'systems', 'systmat', 'tabul', 'tan', 'tangent', 'tanh', 'tanhm', 'tanm', 'TCL_CreateSlave', 'TCL_DeleteInterp',
        +            'TCL_EvalFile', 'TCL_EvalStr', 'TCL_ExistInterp', 'TCL_ExistVar', 'TCL_GetVar', 'TCL_GetVersion', 'TCL_SetVar',
        +            'TCL_UnsetVar', 'TCL_UpVar', 'tdinit', 'testmatrix', 'texprint', 'text_properties', 'tf2des', 'tf2ss', 'then',
        +            'thrownan', 'tic', 'tilda', 'time_id', 'timer', 'title', 'titlepage', 'TK_EvalFile', 'TK_EvalStr', 'tk_getdir',
        +            'tk_getfile', 'TK_GetVar', 'tk_savefile', 'TK_SetVar',  'toc', 'toeplitz', 'tohome', 'tokenpos',
        +            'tokens', 'toolbar', 'toprint', 'trace', 'trans', 'trans_closure', 'translatepaths', 'tree2code', 'trfmod',
        +            'trianfml', 'tril', 'trimmean', 'trisolve', 'triu', 'try', 'trzeros', 'twinkle', 'type', 'Type', 'typename',
        +            'typeof', 'ui_observer', 'uicontrol', 'uimenu', 'uint16', 'uint32', 'uint8', 'ulink', 'unglue', 'union',
        +            'unique', 'unix', 'unix_g', 'unix_s', 'unix_w', 'unix_x', 'unobs', 'unsetmenu', 'unzoom', 'user', 'varargin',
        +            'varargout', 'Variable', 'variance', 'variancef', 'varn', 'vectorfind', 'waitbar', 'warning', 'wavread',
        +            'wavwrite', 'wcenter', 'wfir', 'what', 'where', 'whereami', 'whereis', 'who', 'who_user', 'whos',
        +            'wiener', 'wigner', 'winclose', 'window', 'winlist', 'winopen', 'winqueryreg', 'winsid', 'with_atlas',
        +            'with_gtk', 'with_javasci', 'with_pvm', 'with_texmacs', 'with_tk', 'writb', 'write', 'write4b', 'x_choices',
        +            'x_choose', 'x_dialog', 'x_matrix', 'x_mdialog', 'x_message', 'x_message_modeless', 'xarc', 'xarcs', 'xarrows',
        +            'xaxis', 'xbasc', 'xbasimp', 'xbasr', 'xchange', 'xclea', 'xclear', 'xclick', 'xclip', 'xdel', 'xend',
        +            'xfarc', 'xfarcs', 'xfpoly', 'xfpolys', 'xfrect', 'xget', 'xgetech', 'xgetfile', 'xgetmouse', 'xgraduate',
        +            'xgrid', 'xinfo', 'xinit', 'xlfont', 'xload', 'xls_open', 'xls_read', 'xmltohtml', 'xname', 'xnumb', 'xpause',
        +            'xpoly', 'xpolys', 'xrect', 'xrects', 'xrpoly', 'xs2bmp', 'xs2emf', 'xs2eps', 'xs2fig', 'xs2gif', 'xs2ppm',
        +            'xs2ps', 'xsave', 'xsegs', 'xselect', 'xset', 'xsetech', 'xsetm', 'xstring', 'xstringb', 'xstringl', 'xtape',
        +            'xtitle', 'yulewalk', 'zeropen', 'zeros', 'zgrid', 'zoom_rect', 'zpbutt', 'zpch1', 'zpch2', 'zpell'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '<', '>', '=',
        +        '!', '@', '~', '&', '|',
        +        '+','-', '*', '/', '%',
        +        ',', ';', '?', ':', "'"
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => true,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #000066;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            2 => '',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            'HARD' => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;',
        +            'HARD' => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;',
        +            2 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #0000ff;',
        +            4 => 'color: #009999;',
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => 'http://www.scilab.org/product/dic-mat-sci/M2SCI_doc.htm',
        +        2 => 'http://www.scilab.org/product/dic-mat-sci/M2SCI_doc.htm',
        +        3 => 'http://www.scilab.org/product/dic-mat-sci/M2SCI_doc.htm'
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '->',
        +        2 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        //Variable
        +        0 => '[\\$%@]+[a-zA-Z_][a-zA-Z0-9_]*',
        +        //File Descriptor
        +        4 => '<[a-zA-Z_][a-zA-Z0-9_]*>',
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/scl.php b/includes/geshi/scl.php
        new file mode 100644
        index 0000000..1401dcd
        --- /dev/null
        +++ b/includes/geshi/scl.php
        @@ -0,0 +1,148 @@
        +
        + * ---------------------------------
        + * Author: Leonhard Hösch (leonhard.hoesch@siemens.com)
        + * Copyright: (c) 2008 by Leonhard Hösch (siemens.de)
        + * Release Version: 1.0.8.12
        + * Date Started: 2012/09/25
        + *
        + * SCL language file for GeSHi.
        + *
        + * A SCL langauge file.
        + *
        + * CHANGES
        + * -------
        + *  ()
        + *  -  First Release
        + *
        + * TODO (updated )
        + * -------------------------
        + * 
        + *
        + *************************************************************************************
        + *
        + *     This file is part of GeSHi.
        + *
        + *   GeSHi is free software; you can redistribute it and/or modify
        + *   it under the terms of the GNU General Public License as published by
        + *   the Free Software Foundation; either version 2 of the License, or
        + *   (at your option) any later version.
        + *
        + *   GeSHi is distributed in the hope that it will be useful,
        + *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + *   GNU General Public License for more details.
        + *
        + *   You should have received a copy of the GNU General Public License
        + *   along with GeSHi; if not, write to the Free Software
        + *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        + *
        + ************************************************************************************/
        +
        +$language_data = array (
        +    'LANG_NAME' => 'SCL',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('(*' => '*)'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
        +    'QUOTEMARKS' => array("'"),
        +    'ESCAPE_CHAR' => '$',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'AND','ANY','ARRAY','AT','BEGIN','BLOCK_DB','BLOCK_FB','BLOCK_FC','BLOCK_SDB',
        +            'BLOCK_SFB','BLOCK_SFC','BOOL','BY','BYTE','CASE','CHAR','CONST','CONTINUE','COUNTER',
        +            'DATA_BLOCK','DATE','DATE_AND_TIME','DINT','DIV','DO','DT','DWORD','ELSE','ELSIF',
        +            'EN','END_CASE','END_CONST','END_DATA_BLOCK','END_FOR','END_FUNCTION',
        +            'END_FUNCTION_BLOCK','END_IF','END_LABEL','END_TYPE','END_ORGANIZATION_BLOCK',
        +            'END_REPEAT','END_STRUCT','END_VAR','END_WHILE','ENO','EXIT','FALSE','FOR','FUNCTION',
        +            'FUNCTION_BLOCK','GOTO','IF','INT','LABEL','MOD','NIL','NOT','OF','OK','OR',
        +            'ORGANIZATION_BLOCK','POINTER','PROGRAM','REAL','REPEAT','RETURN','S5TIME','STRING',
        +            'STRUCT','THEN','TIME','TIMER','TIME_OF_DAY','TO','TOD','TRUE','TYPE','VAR',
        +            'VAR_TEMP','UNTIL','VAR_INPUT','VAR_IN_OUT','VAR_OUTPUT','VOID','WHILE','WORD','XOR'
        +            ),
        +        2 =>array(
        +            'UBLKMOV','FILL','CREAT_DB','DEL_DB','TEST_DB','COMPRESS','REPL_VAL','CREA_DBL','READ_DBL',
        +            'WRIT_DBL','CREA_DB','RE_TRIGR','STP','WAIT','MP_ALM','CiR','PROTECT','SET_CLK','READ_CLK',
        +            'SNC_RTCB','SET_CLKS','RTM','SET_RTM','CTRL_RTM','READ_RTM','TIME_TCK','RD_DPARM',
        +            'RD_DPARA','WR_PARM','WR_DPARM','PARM_MOD','WR_REC','RD_REC','RD_DPAR','RDREC','WRREC','RALRM',
        +            'SALRM','RCVREC','PRVREC','SET_TINT','CAN_TINT','ACT_TINT','QRY_TINT','SRT_DINT','QRY_DINT',
        +            'CAN_DINT','MSK_FLT','DMSK_FLT','READ_ERR','DIS_IRT','EN_IRT','DIS_AIRT','EN_AIRT','RD_SINFO',
        +            'RDSYSST','WR_USMSG','OB_RT','C_DIAG','DP_TOPOL','UPDAT_PI','UPDAT_PO','SYNC_PI','SYNC_PO',
        +            'SET','RSET','DRUM','GADR_LGC','LGC_GADR','RD_LGADR','GEO_LOG','LOG_GEO','DP_PRAL','DPSYC_FR',
        +            'D_ACT_DP','DPNRM_DG','DPRD_DAT','DPWR_DAT','PN_IN','PN_OUT','PN_DP','WWW','IP_CONF','GETIO',
        +            'SETIO','GETIO_PART','SETIO_PART','GD_SND','GD_RCV','USEND','URCV','BSEND','BRCV','PUT','GET',
        +            'PRINT','START','STOP','RESUME','STATUS','USTATUS','CONTROL','C_CNTRL','X_SEND','X_RCV',
        +            'X_GET','X_PUT','X_ABORT','I_GET','I_PUT','I_ABORT','TCON','TDISCON','TSEND','TRCV','TUSEND',
        +            'TURCV','NOTIFY','NOTIFY_8P','ALARM','ALARM_8P','ALARM_8','AR_SEND','DIS_MSG','EN_MSG',
        +            'ALARM_SQ','ALARM_S','ALARM_SC','ALARM_DQ','LARM_D','READ_SI','DEL_SI','TP','TON','TOF','CTU',
        +            'CTD','CTUD','CONT_C','CONT_S','PULSEGEN','Analog','DIGITAL','COUNT','FREQUENC','PULSE',
        +            'SEND_PTP','RECV_PTP','RES_RECV','SEND_RK','FETCH_RK','SERVE_RK','H_CTRL','state'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '.', '"', '|', ';', ',', '=>', '>=', '<=', ':=', '=', '<', '>'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000ff;',
        +            2 => 'color: #ff6f00;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #009600; font-style: italic;',
        +            'MULTI' => 'color: #009600; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => '',
        +            2 => '',
        +            3 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => ''
        +        ),
        +    'NUMBERS' => GESHI_NUMBER_INT_BASIC,
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '',
        +        2 => ''
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        0 => array(
        +            ' '!!11?>'
        +            ),
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => false,
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/sdlbasic.php b/includes/geshi/sdlbasic.php
        new file mode 100644
        index 0000000..90b06ab
        --- /dev/null
        +++ b/includes/geshi/sdlbasic.php
        @@ -0,0 +1,163 @@
        + 'sdlBasic',
        +    'COMMENT_SINGLE' => array(1 => "'", 2 => "rem", 3 => "!", 4 => "#"),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'const', 'option', 'explicit', 'qbasic', 'include', 'argc',
        +            'argv', 'command', 'command$', 'run', 'shell', 'os', 'declare',
        +            'sub', 'function', 'return', 'while', 'wend', 'exit', 'end',
        +            'continue', 'if', 'then', 'else', 'elseif',
        +            'select', 'case', 'for', 'each', 'step',
        +            'next', 'to', 'dim', 'shared', 'common', 'lbound', 'bound',
        +            'erase', 'asc', 'chr', 'chr$', 'insert', 'insert$', 'instr', 'lcase',
        +            'lcase$', 'left', 'left$', 'len', 'length', 'ltrim', 'ltrim$', 'mid',
        +            'mid$', 'replace', 'replace$', 'replacesubstr', 'replacesubstr$',
        +            'reverse', 'reverse$', 'right', 'right$', 'rinstr', 'rtrim', 'rtrim$',
        +            'space', 'space$', 'str', 'str$', 'strf', 'strf$', 'string', 'string$',
        +            'tally', 'trim', 'trim$', 'typeof', 'typeof$', 'ucase', 'ucase$', 'val',
        +            'abs', 'acos', 'andbit', 'asin', 'atan', 'bitwiseand', 'bitwiseor',
        +            'bitwisexor', 'cos', 'exp', 'fix', 'floor', 'frac', 'hex', 'hex$', 'int',
        +            'log', 'min', 'max', 'orbit', 'randomize', 'rnd', 'round', 'sgn', 'sin',
        +            'sqr', 'tan', 'xorbit', 'open', 'as', 'file', 'input', 'close', 'output',
        +            'append', 'eof', 'fileexists', 'filecopy', 'filemove', 'filerename',
        +            'freefile', 'kill', 'loc', 'lof', 'readbyte', 'rename', 'seek',
        +            'writebyte', 'chdir', 'dir', 'dir$', 'direxists', 'dirfirst', 'dirnext',
        +            'mkdir', 'rmdir', 'print', 'date', 'date$', 'time', 'time$', 'ticks',
        +            'data', 'read', 'reservebank', 'freebank', 'copybank', 'loadbank',
        +            'savebank', 'setbank', 'sizebank', 'poke', 'doke', 'loke', 'peek', 'deek',
        +            'leek', 'memcopy', 'setdisplay', 'setcaption', 'caption', 'displaywidth',
        +            'displayheight', 'displaybpp', 'screen', 'directscreen', 'screenopen',
        +            'screenclose', 'screenclone', 'screencopy', 'screenfade', 'screenfadein',
        +            'screencrossfade', 'screenalpha', 'screenlock', 'screenunlock',
        +            'screenrect', 'xscreenrect', 'yscreenrect', 'wscreenrect', 'hscreenrect',
        +            'flagscreenrect', 'screenwidth', 'screenheight', 'offset', 'xoffset',
        +            'yoffset', 'cls', 'screenswap', 'autoback', 'setautoback',
        +            'dualplayfield', 'waitvbl', 'fps', 'rgb', 'enablepalette', 'color',
        +            'palette', 'colorcycling', 'ink', 'point', 'dot', 'plot', 'line', 'box',
        +            'bar', 'circle', 'fillcircle', 'ellipse', 'fillellipse', 'paint',
        +            'loadimage', 'saveimage', 'loadsound', 'savesound', 'loadmusic',
        +            'hotspot', 'setcolorkey', 'imageexists', 'imagewidth', 'imageheight',
        +            'deleteimage', 'copyimage', 'setalpha', 'zoomimage', 'rotateimage',
        +            'rotozoomimage', 'blt', 'pastebob', 'pasteicon', 'grab', 'spriteclip',
        +            'sprite', 'deletesprite', 'xsprite', 'ysprite', 'spritewidth',
        +            'spriteheight', 'frsprite', 'livesprite', 'spritehit', 'autoupdatesprite',
        +            'updatesprite', 'setbob', 'bob', 'deletebob', 'xbob', 'ybob', 'bobwidth',
        +            'bobheight', 'frbob', 'livebob', 'bobhit', 'autoupdatebob', 'updatebob',
        +            'text', 'setfont', 'textrender', 'pen', 'paper', 'prints', 'locate',
        +            'atx', 'aty', 'curson', 'cursoff', 'inputs', 'zoneinputs',
        +            'isenabledsound', 'soundexists', 'deletesound', 'copysound',
        +            'musicexists', 'playsound', 'volumesound', 'stopsound', 'pausesound',
        +            'resumesound', 'vumetersound', 'positionsound', 'soundchannels',
        +            'playmusic', 'positionmusic', 'stopmusic', 'fademusic', 'pausemusic',
        +            'resumemusic', 'rewindmusic', 'volumemusic', 'speedmusic', 'numdrivescd',
        +            'namecd', 'getfreecd', 'opencd', 'indrivecd', 'trackscd', 'curtrackcd',
        +            'curframecd', 'playcd', 'playtrackscd',
        +            'pausecd', 'resumecd', 'stopcd', 'ejectcd', 'closecd', 'tracktypecd',
        +            'tracklengthcd', 'trackoffsetcd', 'key', 'inkey', 'waitkey', 'xmouse',
        +            'ymouse', 'xmousescreen', 'ymousescreen', 'bmouse', 'changemouse',
        +            'locatemouse', 'mouseshow', 'mousehide', 'mousezone', 'numjoysticks',
        +            'namejoystick', 'numaxesjoystick', 'numballsjoystick', 'numhatsjoystick',
        +            'numbuttonsjoystick', 'getaxisjoystick', 'gethatjoystick',
        +            'getbuttonjoystick', 'xgetballjoystick', 'ygetballjoystick', 'joy',
        +            'bjoy', 'wait', 'timer', 'isenabledsock', 'getfreesock', 'opensock',
        +            'acceptsock', 'isserverready', 'connectsock', 'connectionreadysock',
        +            'isclientready', 'losesock', 'peeksock', 'readsock', 'readbytesock',
        +            'readlinesock', 'writesock', 'writebytesock', 'writelinesock',
        +            'getremoteip', 'getremoteport', 'getlocalip'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080;',
        +            2 => 'color: #808080;',
        +            3 => 'color: #808080;',
        +            4 => 'color: #808080;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/smalltalk.php b/includes/geshi/smalltalk.php
        new file mode 100644
        index 0000000..bd6b404
        --- /dev/null
        +++ b/includes/geshi/smalltalk.php
        @@ -0,0 +1,152 @@
        + 'Smalltalk',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array('"' => '"'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'"),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'self','super','true','false','nil'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '[', ']', '=' , ':=', '(', ')', '#'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #7f007f;'
        +            ),
        +        'COMMENTS' => array(
        +            'MULTI' => 'color: #007f00; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => ''
        +            ),
        +        'BRACKETS' => array(
        +            0 => ''
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #7f0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #7f0000;'
        +            ),
        +        'METHODS' => array(
        +            0 => ''
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000066; font-weight:bold;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #0000ff;',
        +            1 => 'color: #7f0000;',
        +            2 => 'color: #7f0000;',
        +            3 => 'color: #00007f;',
        +            5 => 'color: #00007f;',
        +            6 => 'color: #00007f;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        0 => array(
        +            GESHI_SEARCH => '([^a-zA-Z0-9_#<])([A-Z]+[a-zA-Z0-9_]*)(?!>)', //class names
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +            ),
        +        1 => array(
        +            GESHI_SEARCH => '(#+)([a-zA-Z0-9_]+)', //symbols
        +            GESHI_REPLACE => '\\1\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        2 => array(
        +            GESHI_SEARCH => '(#\s*\([^)]*\))', //array symbols
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        3 => array(
        +            GESHI_SEARCH => '([a-zA-Z0-9_\s]+)', //temporary variables
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '|',
        +            GESHI_AFTER => '|'
        +            ),
        +        5 => array(
        +            GESHI_SEARCH => '([:(,=[.*\/+-]\s*(?!\d+\/))([a-zA-Z0-9_]+)', //message parameters, message receivers
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 's',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +            ),
        +        6 => array(
        +            GESHI_SEARCH => '([a-zA-Z0-9_]+)(\s*:=)', //assignment targets
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => '\\2'
        +            )
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/smarty.php b/includes/geshi/smarty.php
        new file mode 100644
        index 0000000..5c22415
        --- /dev/null
        +++ b/includes/geshi/smarty.php
        @@ -0,0 +1,190 @@
        + 'Smarty',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array('{*' => '*}'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            '$smarty', 'now', 'const', 'capture', 'config', 'section', 'foreach', 'template', 'version', 'ldelim', 'rdelim',
        +            'foreachelse', 'include', 'include_php', 'insert', 'if', 'elseif', 'else', 'php',
        +            'sectionelse', 'is_cached',
        +            ),
        +        2 => array(
        +            'capitalize', 'count_characters', 'cat', 'count_paragraphs', 'count_sentences', 'count_words', 'date_format',
        +            'default', 'escape', 'indent', 'lower', 'nl2br', 'regex_replace', 'replace', 'spacify', 'string_format',
        +            'strip', 'strip_tags', 'truncate', 'upper', 'wordwrap',
        +            ),
        +        3 => array(
        +            'counter', 'cycle', 'debug', 'eval', 'html_checkboxes', 'html_image', 'html_options',
        +            'html_radios', 'html_select_date', 'html_select_time', 'html_table', 'math', 'mailto', 'popup_init',
        +            'popup', 'textformat'
        +            ),
        +        4 => array(
        +            '$template_dir', '$compile_dir', '$config_dir', '$plugins_dir', '$debugging', '$debug_tpl',
        +            '$debugging_ctrl', '$autoload_filters', '$compile_check', '$force_compile', '$caching', '$cache_dir',
        +            '$cache_lifetime', '$cache_handler_func', '$cache_modified_check', '$config_overwrite',
        +            '$config_booleanize', '$config_read_hidden', '$config_fix_newlines', '$default_template_handler_func',
        +            '$php_handling', '$security', '$secure_dir', '$security_settings', '$trusted_dir', '$left_delimiter',
        +            '$right_delimiter', '$compiler_class', '$request_vars_order', '$request_use_auto_globals',
        +            '$error_reporting', '$compile_id', '$use_sub_dirs', '$default_modifiers', '$default_resource_type'
        +            ),
        +        5 => array(
        +            'append', 'append_by_ref', 'assign', 'assign_by_ref', 'clear_all_assign', 'clear_all_cache',
        +            'clear_assign', 'clear_cache', 'clear_compiled_tpl', 'clear_config', 'config_load', 'display',
        +            'fetch', 'get_config_vars', 'get_registered_object', 'get_template_vars',
        +            'load_filter', 'register_block', 'register_compiler_function', 'register_function',
        +            'register_modifier', 'register_object', 'register_outputfilter', 'register_postfilter',
        +            'register_prefilter', 'register_resource', 'trigger_error', 'template_exists', 'unregister_block',
        +            'unregister_compiler_function', 'unregister_function', 'unregister_modifier', 'unregister_object',
        +            'unregister_outputfilter', 'unregister_postfilter', 'unregister_prefilter', 'unregister_resource'
        +            ),
        +        6 => array(
        +            'name', 'file', 'scope', 'global', 'key', 'once', 'script',
        +            'loop', 'start', 'step', 'max', 'show', 'values', 'value', 'from', 'item'
        +            ),
        +        7 => array(
        +            'eq', 'neq', 'ne', 'lte', 'gte', 'ge', 'le', 'not', 'mod'
        +            ),
        +        8 => array(
        +            // some common php functions
        +            'isset', 'is_array', 'empty', 'count', 'sizeof'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '/', '=', '==', '!=', '>', '<', '>=', '<=', '!', '%'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        6 => false,
        +        7 => false,
        +        8 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0600FF;',        //Functions
        +            2 => 'color: #008000;',        //Modifiers
        +            3 => 'color: #0600FF;',        //Custom Functions
        +            4 => 'color: #804040;',        //Variables
        +            5 => 'color: #008000;',        //Methods
        +            6 => 'color: #6A0A0A;',        //Attributes
        +            7 => 'color: #D36900;',        //Text-based symbols
        +            8 => 'color: #0600FF;'        //php functions
        +            ),
        +        'COMMENTS' => array(
        +            'MULTI' => 'color: #008080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #D36900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #D36900;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => 'color: #808080; font-style: italic;',
        +            2 => 'color: #009000;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #00aaff;'
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => 'http://smarty.php.net/{FNAMEL}',
        +        2 => 'http://smarty.php.net/{FNAMEL}',
        +        3 => 'http://smarty.php.net/{FNAMEL}',
        +        4 => 'http://smarty.php.net/{FNAMEL}',
        +        5 => 'http://smarty.php.net/{FNAMEL}',
        +        6 => '',
        +        7 => 'http://smarty.php.net/{FNAMEL}',
        +        8 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        // variables
        +        0 => '\$[a-zA-Z][a-zA-Z0-9_]*'
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
        +    'SCRIPT_DELIMITERS' => array(
        +        0 => array(
        +            '{' => '}'
        +            ),
        +        1 => array(
        +            '',
        +        ),
        +        2 => array(
        +            '<' => '>'
        +            )
        +    ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => true,
        +        1 => false,
        +        2 => false
        +    ),
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => "(?|^])",
        +            'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_<\|%\\-&])"
        +        )
        +    )
        +);
        diff --git a/includes/geshi/spark.php b/includes/geshi/spark.php
        new file mode 100644
        index 0000000..4999e78
        --- /dev/null
        +++ b/includes/geshi/spark.php
        @@ -0,0 +1,127 @@
        + 'SPARK',
        +    'COMMENT_SINGLE' => array(1 => '--', 2 => '--#'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'begin', 'declare', 'do', 'else', 'elsif', 'exception', 'for', 'if',
        +            'is', 'loop', 'while', 'then', 'end', 'select', 'case', 'until',
        +            'goto', 'return'
        +            ),
        +        2 => array(
        +            'abs', 'and', 'at', 'mod', 'not', 'or', 'rem', 'xor'
        +            ),
        +        3 => array(
        +            'abort', 'abstract', 'accept', 'access', 'aliased', 'all', 'array',
        +            'body', 'constant', 'delay', 'delta', 'digits', 'entry', 'exit',
        +            'function', 'generic', 'in', 'interface', 'limited', 'new', 'null',
        +            'of', 'others', 'out', 'overriding', 'package', 'pragma', 'private',
        +            'procedure', 'protected', 'raise', 'range', 'record', 'renames',
        +            'requeue', 'reverse', 'separate', 'subtype', 'synchronized',
        +            'tagged', 'task', 'terminate', 'type', 'use', 'when', 'with'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #00007f;',
        +            2 => 'color: #0000ff;',
        +            3 => 'color: #46aa03; font-weight:bold;',
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #adadad; font-style: italic;',
        +            2 => 'color: #adadad; font-style: italic; font-weight: bold;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #7f007f;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #202020;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/sparql.php b/includes/geshi/sparql.php
        new file mode 100644
        index 0000000..feb1f98
        --- /dev/null
        +++ b/includes/geshi/sparql.php
        @@ -0,0 +1,153 @@
        + 'SPARQL',
        +    'COMMENT_SINGLE' => array('#'),
        +    'COMMENT_MULTI' => array('/*' => '*/' ),
        +    'COMMENT_REGEXP' => array(
        +        //IRI (it's not a comment ;)
        +        1 => "/<[^> ]*>/i"
        +        ),
        +    'CASE_KEYWORDS' => 1,
        +    'QUOTEMARKS' => array("'", '"', '`'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'BASE','PREFIX','SELECT','DISTINCT','REDUCED','CONSTRUCT','DESCRIBE','ASK','FROM',
        +            'NAMED','WHERE','ORDER','BY','ASC','DESC','LIMIT','OFFSET','OPTIONAL','GRAPH',
        +            'UNION','FILTER','STR','LANG','LANGMATCHES','DATATYPE','BOUND','SAMETERM',
        +            'ISIRI','ISURI','ISBLANK',
        +            'ISLITERAL','REGEX','SUBSTR','TRUE',
        +            'FALSE','LOAD','CLEAR',
        +            'DROP','ADD','MOVE','COPY',
        +            'CREATE','DELETE','INSERT',
        +            'USING','SILENT','DEFAULT','ALL',
        +            'DATA','WITH','INTO','TO',
        +            'AS','GROUP','HAVING','UNDEF',
        +            'BINDINGS','SERVICE','BIND','MINUS_KEYWORD',
        +            'IRI','URI', 'BNODE',
        +            'RAND','ABS','CEIL','FLOOR','ROUND',
        +            'CONCAT','STRLEN',
        +            'UCASE','LCASE','ENCODE_FOR_URI',
        +            'CONTAINS','STRSTARTS',
        +            'STRENDS','STRBEFORE',
        +            'STRAFTER','REPLACE',
        +            'YEAR','MONTH',
        +            'DAY','HOURS',
        +            'MINUTES','SECONDS',
        +            'TIMEZONE','TZ',
        +            'NOW','MD5',
        +            'SHA1','SHA224',
        +            'SHA256','SHA384',
        +            'SHA512','COALESCE',
        +            'IF','STRLANG','STRDT',
        +            'ISNUMERIC','COUNT',
        +            'SUM','MIN',
        +            'MAX','AVG','SAMPLE',
        +            'GROUP_CONCAT ','NOT',
        +            'IN','EXISTS','SEPARATOR'
        +            )
        +        ),
        +    'REGEXPS' => array(
        +        //Variables without braces
        +        1 => "\\?[a-zA-Z_][a-zA-Z0-9_]*",
        +        //prefix
        +        2 => "[a-zA-Z_.\\-0-9]*:",
        +        //tag lang
        +        3 => "@[^ .)}]*",
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array(
        +            '{', '}' , '.', ';'
        +            ),
        +        1 => array(
        +            '^^',
        +            '<=','>=','!=','=','<','>','|',
        +            '&&','||',
        +            '(',')','[', ']',
        +            '+','-','*','!','/'
        +            ),
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #993333; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            0 => 'color: #808080; font-style: italic;',
        +            1 => 'color: #000078;',
        +            //2 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #FF63C3;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #0000FF;',
        +            1 => 'color: #FF8000; font-weight: bold;'
        +            ),
        +        'SCRIPT' => array(),
        +        'REGEXPS' => array(
        +            1 => 'color: #007800;',
        +            2 => 'color: #780078;',
        +            3 => 'color: #005078;'
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/sql.php b/includes/geshi/sql.php
        new file mode 100644
        index 0000000..39791f6
        --- /dev/null
        +++ b/includes/geshi/sql.php
        @@ -0,0 +1,168 @@
        + 'SQL',
        +    'COMMENT_SINGLE' => array(1 =>'--'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => 1,
        +    'QUOTEMARKS' => array("'", '"', '`'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'ADD', 'ALL', 'ALTER', 'AND', 'AS', 'ASC', 'AUTO_INCREMENT',
        +            'BEFORE', 'BEGIN', 'BETWEEN', 'BIGINT', 'BINARY', 'BLOB', 'BOOLEAN', 'BOTH', 'BY',
        +            'CALL', 'CASE', 'CAST', 'CEIL', 'CEILING', 'CHANGE', 'CHAR', 'CHAR_LENGTH', 'CHARACTER',
        +            'CHARACTER_LENGTH', 'CHECK', 'CLOB', 'COALESCE', 'COLLATE', 'COLUMN', 'COLUMNS',
        +            'CONNECT', 'CONSTRAINT', 'CONVERT', 'COUNT', 'CREATE', 'CROSS', 'CURRENT',
        +            'CURRENT_DATE', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'CURRENT_USER',
        +            'DATA', 'DATABASE', 'DATABASES', 'DATE', 'DAY', 'DEC', 'DECIMAL', 'DECLARE',
        +            'DEFAULT', 'DELAYED', 'DELETE', 'DESC', 'DESCRIBE', 'DISTINCT', 'DOUBLE',
        +            'DOMAIN', 'DROP',
        +            'ELSE', 'ELSEIF', 'ENCLOSED', 'END', 'ESCAPED', 'EXCEPT', 'EXEC', 'EXECUTE', 'EXISTS',
        +            'EXP', 'EXPLAIN', 'EXTRACT',
        +            'FALSE', 'FIELD', 'FIELDS', 'FILTER', 'FIRST', 'FLOAT', 'FLOOR', 'FLUSH', 'FOR',
        +            'FOREIGN', 'FROM', 'FULL', 'FUNCTION',
        +            'GET', 'GROUP', 'GROUPING', 'GO', 'GOTO', 'GRANT', 'GRANTED',
        +            'HAVING', 'HOUR',
        +            'IDENTIFIED', 'IDENTITY', 'IF', 'IGNORE', 'IN', 'INCREMENT', 'INDEX', 'INFILE', 'INNER',
        +            'INOUT', 'INPUT', 'INSERT', 'INT', 'INTEGER', 'INTERSECT', 'INTERSECTION', 'INTERVAL',
        +            'INTO', 'IS',
        +            'JOIN',
        +            'KEY', 'KEYS', 'KILL',
        +            'LANGUAGE', 'LARGE', 'LAST', 'LEADING', 'LEFT', 'LENGTH', 'LIKE', 'LIMIT', 'LINES', 'LOAD',
        +            'LOCAL', 'LOCK', 'LOW_PRIORITY', 'LOWER',
        +            'MATCH', 'MAX', 'MERGE', 'MIN', 'MINUTE', 'MOD', 'MODIFIES', 'MODIFY', 'MONTH',
        +            'NATIONAL', 'NATURAL', 'NCHAR', 'NEW', 'NEXT', 'NEXTVAL', 'NONE', 'NOT',
        +            'NULL', 'NULLABLE', 'NULLIF', 'NULLS', 'NUMBER', 'NUMERIC',
        +            'OF', 'OLD', 'ON', 'ONLY', 'OPEN', 'OPTIMIZE', 'OPTION',
        +            'OPTIONALLY', 'OR', 'ORDER', 'OUT', 'OUTER', 'OUTFILE', 'OVER',
        +            'POSITION', 'POWER', 'PRECISION', 'PREPARE', 'PRIMARY', 'PROCEDURAL', 'PROCEDURE',
        +            'READ', 'REAL', 'REF', 'REFERENCES', 'REFERENCING', 'REGEXP', 'RENAME', 'REPLACE',
        +            'RESULT', 'RETURN', 'RETURNS', 'REVOKE', 'RIGHT', 'RLIKE', 'ROLLBACK', 'ROW',
        +            'ROW_NUMBER', 'ROWS', 'RESTRICT', 'ROLE', 'ROUTINE', 'ROW_COUNT',
        +            'SAVEPOINT', 'SEARCH', 'SECOND', 'SECTION', 'SELECT', 'SELF', 'SEQUENCE',
        +            'SESSION', 'SET', 'SETVAL', 'SHOW', 'SIMILAR', 'SIZE', 'SMALLINT', 'SOME',
        +            'SONAME', 'SOURCE', 'SPACE', 'SQL', 'SQRT', 'START', 'STATUS',
        +            'STRAIGHT_JOIN', 'STRUCTURE', 'STYLE', 'SUBSTRING', 'SUM',
        +            'TABLE', 'TABLE_NAME', 'TABLES', 'TERMINATED', 'TEMPORARY', 'THEN', 'TIME',
        +            'TIMESTAMP', 'TO', 'TRAILING', 'TRANSACTION', 'TRIGGER', 'TRIM', 'TRUE', 'TRUNCATE',
        +            'TRUSTED', 'TYPE',
        +            'UNDER', 'UNION', 'UNIQUE', 'UNKNOWN', 'UNLOCK', 'UNSIGNED',
        +            'UPDATE', 'UPPER', 'USE', 'USER', 'USING',
        +            'VALUE', 'VALUES', 'VARCHAR', 'VARIABLES', 'VARYING', 'VIEW',
        +            'WHEN', 'WHERE', 'WITH', 'WITHIN', 'WITHOUT', 'WORK', 'WRITE',
        +            'XOR',
        +            'YEAR',
        +            'ZEROFILL'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '=', '<', '>', '|', ',', '.', '+', '-', '*', '/'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #993333; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            //2 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array( //'
        +            'DISALLOWED_BEFORE' => "(? 'StandardML',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array('(*' => '*)'),
        +    'COMMENT_REGEXP' => array(1 => '/\(\*(?:(?R)|.)+?\*\)/s'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'NUMBERS' =>
        +        array(
        +            /* integer dec */
        +            0 => GESHI_NUMBER_INT_BASIC,
        +            /* integer hex */
        +            1 => GESHI_NUMBER_HEX_PREFIX,
        +            /* real */
        +            2 => GESHI_NUMBER_FLT_SCI_ZERO,
        +            /* word dec */
        +            3 => '(? '(? array(
        +        /* main SML keywords */
        +        1 => array(
        +            /* deprecated: SML90 */
        +            'abstype',
        +
        +            'and', 'andalso', 'as', 'case', 'datatype', 'else',
        +            'end', 'exception', 'fn', 'fun', 'functor',
        +            'if', 'in', 'infix', 'infixr', 'let', 'local', 'nonfix',
        +            'of', 'op', 'open', 'orelse',
        +            'rec', 'raise', 'sharing', 'sig', 'signature', 'struct', 'structure', 'then',
        +            'type', 'val', 'while', 'with', 'withtype'
        +            ),
        +        /* Top-level type and constructors */
        +        2 => array(
        +            'unit', 'int', 'word', 'real', 'char', 'string', 'substring', 'exn',
        +            'array', 'vector', 'bool', 'option',
        +            'list'
        +            ),
        +        /* standard structures/signatures/functors provided by Basis library */
        +        3 => array(
        +            'ARRAY', 'Array', 'Array2', 'ARRAY2', 'ArraySlice', 'ARRAY_SLICE',
        +            'BinIO', 'BIT_FLAGS', 'Bool', 'BOOL', 'Byte', 'CHAR', 'Char',
        +            'CommandLine', 'Date', 'General', 'GenericSock', 'IEEEReal', 'IMPERATIVE_IO',
        +            'ImperativeIO', 'INetSock', 'INTEGER', 'Int', 'IntInf', 'IO', 'List', 'ListPair',
        +            'MATH', 'MONO_ARRAY', 'MONO_ARRAY2', 'MONO_ARRAY_SLICE', 'MONO_VECTOR',
        +            'MONO_VECTOR_SLICE', 'NetHostDB', 'NetProtDB', 'NetServDB', 'Option',
        +            'OS', 'OS.FileSys', 'OS.IO', 'OS.Path', 'OS.Process', 'PACK_REAL', 'PACK_WORD',
        +            'Posix', 'Posix.Error', 'Posix.FileSys', 'Posix.IO', 'Posix.ProcEnv', 'Posix.Process',
        +            'Posix.Signal', 'Posix.SysDB', 'Posix.TTY', 'PRIM_IO', 'PrimIO', 'REAL', 'Real', 'Socket',
        +            'STREAM_IO', 'StreamIO', 'STRING', 'String', 'StringCvt', 'SUBSTRING', 'Substring', 'TEXT', 'TEXT_IO',
        +            'TEXT_STREAM_IO', 'Time', 'Timer', 'Unix', 'UnixSock', 'VECTOR', 'Vector', 'VECTOR_SLICE',
        +            'Windows', 'WORD', 'Word'
        +            ),
        +        /* Top-level value identifiers / constructors */
        +        4 => array(
        +            'app', 'before', 'ceil', 'chr', 'concat', 'exnMessage', 'exnName', 'explode',
        +            'floor', 'foldl', 'foldr', 'getOpt', 'hd', 'ignore', 'implode', 'isSome', 'length', 'map', 'not',
        +            'null', 'o', 'ord', 'print', 'rev', 'round', 'size', 'str', 'tl', 'trunc',
        +            'use', 'valOf',
        +            /* constructors */
        +            'ref', 'true', 'false', 'NONE', 'SOME', 'LESS', 'EQUAL', 'GREATER', 'nil',
        +            /* overloaded identifiers */
        +            'div', 'mod', 'abs'
        +            ),
        +        /* standard exceptions */
        +        5 => array (
        +            'Bind', 'Chr', 'Div', 'Domain', 'Empty', 'Fail', 'Match', 'Overflow', 'Size', 'Span', 'Subscript'
        +            ),
        +        /* implementation dependent keyword (not be sorted) */
        +        6 => array (
        +            /** SML/NJ */
        +            /* functor signature > http://www.smlnj.org/doc/features.html */
        +            'funsig',
        +            /* lazy evaluation */
        +            'lazy',
        +            /** SML# */
        +            /* binding to C function */
        +            '_import',
        +            /* read other source */
        +            '_require',
        +            /* export aggregated interface files */
        +            'include',
        +            /* integrated sql */
        +            '_sqlserver', '_sql', 'from', 'where', '_sqleval', '_sqlexec',
        +            'select', 'insert', 'update', 'begin', 'commit', 'rollback',
        +            'values', 'delete'
        +            )
        +        ),
        +    /* highlighting symbols */
        +    'SYMBOLS' => array(
        +        0 => array('=', ':', ':>', '=>', '(', ')', '|', '_', '==', ';', '.'),
        +        1 => array('!', ':=', '@', '^'),
        +        2 => array('[', ']', '::', '{', '}'),
        +        /* overloaded identifiers */
        +        3 => array('+', '-', '*', '/', '~', '<', '>', '<=', '>=')
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true, /* keywords */
        +        2 => true, /* top level types */
        +        3 => true, /* structures */
        +        4 => true, /* top level identifiers */
        +        5 => true, /* top level exceptions */
        +        6 => true  /* implementation dependent keyword */
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #557cde; font-weight: bold;',
        +            2 => 'color: #8dda4a; font-weight: bold;',
        +            3 => 'color: #0066cc; font-weight: bold;',
        +            4 => 'color: #5c8cbb;',
        +            5 => 'color: #f33e64; font-weight: bold;',
        +            6 => 'color: #f33e64;'
        +            ),
        +        'COMMENTS' => array(
        +            'MULTI' => 'color: #5d478b; font-style: italic;', /* light purple */
        +            1 => 'color: #5d478b; font-style: italic;' /* light purple */
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #79c200;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #488614;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #fb7600;',
        +            1 => 'color: #fb7600;',
        +            2 => 'color: #fb7600;',
        +            3 => 'color: #fb7600;',
        +            4 => 'color: #fb7600;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #0066cc;'
        +            ),
        +        'REGEXPS' => array(
        +            1 => 'font-style:italic; color:#9f7eff;',
        +            2 => 'font-weight:bold; color:#8dda4a;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #ff4bcf;',
        +            1 => 'color: #ff4bcf; font-weight: bold;', // pink
        +            2 => 'color: #90f963;', // orange
        +            3 => 'color: #fa5bf8;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => 'http://www.standardml.org/Basis/top-level-chapter.html',
        +        3 => '',
        +        4 => '',
        +        5 => 'http://www.standardml.org/Basis/top-level-chapter.html#section:2',
        +        6 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        1 => '(? '(?:(? GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/stonescript.php b/includes/geshi/stonescript.php
        new file mode 100644
        index 0000000..e1697d8
        --- /dev/null
        +++ b/includes/geshi/stonescript.php
        @@ -0,0 +1,305 @@
        + 'StoneScript',
        +    'COMMENT_SINGLE' => array(1 => "--"),
        +    'COMMENT_MULTI' => array("--[[" => "]]"),
        +    'COMMENT_REGEXP' => array(
        +        4 => '/<<\s*?(\w+)\\n.*?\\n\\1(?![a-zA-Z0-9])/si',
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"', '`','\''),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        // Blue - General Keywords
        +        1 => array(
        +                'and', 'begin', 'break', 'do', 'else', 'elseif', 'end',
        +                'for', 'if', 'in', 'while', 'next', 'not', 'or', 'redo',
        +                'then', 'unless', 'until', 'when', 'false', 'nil', 'self',
        +                'true', 'local', 'this', 'return',
        +            ),
        +        // Dark Blue - Main API names
        +        2 => array(
        +                'animation', 'application', 'cache', 'camera', 'debug',
        +                'dynamics', 'group', 'hashtable', 'hud', 'input', 'light',
        +                'log', 'math', 'mesh', 'microphone', 'music', 'navigation',
        +                'network', 'object', 'pixelmap', 'projector', 'scene',
        +                'sensor', 'server', 'session', 'sfx', 'shape', 'sound',
        +                'string', 'system', 'table', 'user', 'video', 'xml',
        +                // Plugin API names
        +                'plasma', 'watersim',
        +                'winDirectories',
        +                'ActionSheet', 'Alert', 'Mail', 'Picker', 'StatusBar',
        +            ),
        +        // Constants
        +        // Can be commented out if performance is crucial -> then these keywords will appear in a slightly lighter color
        +        3 => array(
        +                //Animation
        +                'kPlaybackModeLoop', 'kPlaybackModeLoopMirrored', 'kPlaybackModeLoopReversed',
        +                'kPlaybackModeOnce', 'kPlaybackModeOnceReversed',
        +                //Application - Environment
        +                'kStatusLoading', 'kStatusReady', 'kStatusSaving', // 'kStatusNone'
        +                //Application - Options
        +                'kOptionAudioMasterVolume', 'kOptionAutomaticVirtualKeyboard', 'kOptionDynamicShadowsBufferCount',
        +                'kOptionDynamicShadowsBufferSize', 'kOptionDynamicShadowsConstantSampling', 'kOptionDynamicShadowsPCFSampleCount',
        +                'kOptionDynamicShadowsQuality', 'kOptionDynamicShadowsScreenSpaceBlur', 'kOptionFullscreen',
        +                'kOptionFullscreenHeight', 'kOptionFullscreenWidth', 'kOptionHardwareOcclusion',
        +                'kOptionMaxEventBouncesPerFrame', 'kOptionNetworkStreams', 'kOptionNetworkStreamsUseBrowser',
        +                'kOptionPrioritizeEventBounces', 'kOptionRenderingEnabled', 'kOptionShadersQuality',
        +                'kOptionSwapInterval', 'kOptionTerrainsQuality', 'kOptionTexturesAnisotropyLevel',
        +                'kOptionTexturesMipmapBias', 'kOptionTexturesQuality', 'kOptionViewportRotation',
        +                //Application - Resource Types
        +                'kResourceTypeAnimBank', 'kResourceTypeFont', 'kResourceTypeHUD',
        +                'kResourceTypeMaterial', 'kResourceTypeMesh', 'kResourceTypeParticle',
        +                'kResourceTypePixelMap', 'kResourceTypeSoundBank', 'kResourceTypeTexture',
        +                'kResourceTypeTextureClip', 'kResourceTypeTrail',
        +                //Cache
        +                'kPropertyHeight', 'kPropertySize', 'kPropertyWidth',
        +                //Dynamics
        +                'kAxisX', 'kAxisY', 'kAxisZ',
        +                'kTypeBox', 'kTypeCapsule', 'kTypeSphere',
        +                //HUD
        +                'kAddressingModeClamp', 'kAddressingModeRepeat', 'kAlignCenter', 'kAlignJustify','kAlignLeft', 'kAlignRight',
        +                'kAlignTop', 'kBlendModeAdd', 'kBlendModeDefault', 'kBlendModeModulate', 'kCaseFixed', 'kCaseVariable',
        +                'kCommandTypeCallAction', 'kCommandTypeCopyCheckStateToRegister', 'kCommandTypeCopyEditTextToRegister',
        +                'kCommandTypeCopyListItemTextToRegister', 'kCommandTypeCopyListLastSelectedItemToRegister',
        +                'kCommandTypeCopyProgressValueToRegister', 'kCommandTypeCopySliderValueToRegister', 'kCommandTypeCopyTagToRegister',
        +                'kCommandTypeEnterModalMode', 'kCommandTypeInterpolateBackgroundColor', 'kCommandTypeInterpolateBorderColor',
        +                'kCommandTypeInterpolateForegroundColor', 'kCommandTypeInterpolateHeight', 'kCommandTypeInterpolateOpacity',
        +                'kCommandTypeInterpolatePosition', 'kCommandTypeInterpolateProgressValue', 'kCommandTypeInterpolateRotation',
        +                'kCommandTypeInterpolateSize', 'kCommandTypeInterpolateWidth', 'kCommandTypeLeaveModalMode',
        +                'kCommandTypeMatchScreenSpaceBottomLeftCorner', 'kCommandTypeMatchScreenSpaceBottomRightCorner',
        +                'kCommandTypeMatchScreenSpaceCenter', 'kCommandTypeMatchScreenSpaceHeight', 'kCommandTypeMatchScreenSpaceTopLeftCorner',
        +                'kCommandTypeMatchScreenSpaceTopRightCorner', 'kCommandTypeMatchScreenSpaceWidth', 'kCommandTypePauseMovie',
        +                'kCommandTypePauseSound', 'kCommandTypePauseTimer', 'kCommandTypePlayMovie', 'kCommandTypePlaySound',
        +                'kCommandTypePlaySoundLoop', 'kCommandTypeResumeSound', 'kCommandTypeSendEventToUser', 'kCommandTypeSetActive',
        +                'kCommandTypeSetBackgroundColor', 'kCommandTypeSetBackgroundImage', 'kCommandTypeSetBackgroundImageUVOffset',
        +                'kCommandTypeSetBackgroundImageUVScale', 'kCommandTypeSetBorderColor', 'kCommandTypeSetButtonText',
        +                'kCommandTypeSetCheckState', 'kCommandTypeSetCheckText', 'kCommandTypeSetCursorPosition', 'kCommandTypeSetCursorVisible',
        +                'kCommandTypeSetEditText', 'kCommandTypeSetFocus', 'kCommandTypeSetForegroundColor', 'kCommandTypeSetHeight',
        +                'kCommandTypeSetLabelText', 'kCommandTypeSetOpacity', 'kCommandTypeSetPosition', 'kCommandTypeSetRotation',
        +                'kCommandTypeSetSize', 'kCommandTypeSetVisible', 'kCommandTypeSetWidth', 'kCommandTypeSleep', 'kCommandTypeStartTimer',
        +                'kCommandTypeStopAction', 'kCommandTypeStopMovie', 'kCommandTypeStopSound', 'kCommandTypeStopTimer',
        +                'kComponentTypeButton', 'kComponentTypeCheck', 'kComponentTypeContainer', 'kComponentTypeEdit', 'kComponentTypeLabel',
        +                'kComponentTypeList', 'kComponentTypeMovie', 'kComponentTypePicture', 'kComponentTypePixelMap', 'kComponentTypeProgress',
        +                'kComponentTypeRenderMap', 'kComponentTypeSlider', 'kCursorShapeCross', 'kCursorShapeDefault', 'kCursorShapeHandPointing',
        +                'kCursorShapeIBeam', 'kCursorShapeNone', 'kCursorShapeWaiting', 'kDirectionLeftToRight', 'kDirectionRightToLeft',
        +                'kEncodingASCII', 'kEncodingUTF8', 'kEventTypeGainFocus', 'kEventTypeLooseFocus', 'kEventTypeMouseEnter',
        +                'kEventTypeMouseLeave', 'kFillModeSolid', 'kInterpolatorTypeLinear', 'kInterpolatorTypePower2', 'kInterpolatorTypePower3',
        +                'kInterpolatorTypePower4', 'kInterpolatorTypeRoot2', 'kInterpolatorTypeRoot3', 'kInterpolatorTypeRoot4',
        +                'kInterpolatorTypeSpring1', 'kInterpolatorTypeSpring2', 'kInterpolatorTypeSpring3', 'kInterpolatorTypeSpring4',
        +                'kInterpolatorTypeSpring5', 'kInterpolatorTypeSpring6',
        +                'kOriginBottom', 'kOriginBottomLeft', 'kOriginBottomRight', 'kOriginCenter', 'kOriginLeft', 'kOriginRight',
        +                'kOriginTop', 'kOriginTopLeft', 'kOriginTopRight', 'kProgressTypeBottomToTop', 'kProgressTypeLeftToRight',
        +                'kProgressTypeRightToLeft', 'kProgressTypeTopToBottom', 'kRuntimeValueCallArgument0', 'kRuntimeValueCallArgument1',
        +                'kRuntimeValueCallArgument2', 'kRuntimeValueCallArgument3', 'kRuntimeValueCurrentUser', 'kRuntimeValueCurrentUserMainCamera',
        +                'kRuntimeValueRegister0', 'kRuntimeValueRegister1', 'kRuntimeValueRegister2', 'kRuntimeValueRegister3',
        +                'kShapeTypeEllipsoid', 'kShapeTypeRectangle', 'kShapeTypeRoundRectangle', 'kSliderTypeBottomToTop',
        +                'kSliderTypeLeftToRight', 'kSliderTypeRightToLeft', 'kSliderTypeTopToBottom', 'kWaveTypeConstant',
        +                'kWaveTypeSawtooth', 'kWaveTypeSawtoothInv', 'kWaveTypeSinus', 'kWaveTypeSinusNoise', 'kWaveTypeSquare', 'kWaveTypeTriangle',
        +                //Input
        +                'kJoypadTypeIPhone', 'kJoypadTypeNone', 'kJoypadTypePhone', 'kJoypadTypeStandard', 'kJoypadTypeWiimote',
        +                'kKey0', 'kKey1', 'kKey2', 'kKey3', 'kKey4', 'kKey5', 'kKey6', 'kKey7', 'kKey8', 'kKey9', 'kKeyA', 'kKeyB',
        +                'kKeyBackspace', 'kKeyC', 'kKeyD', 'kKeyDelete', 'kKeyDown', 'kKeyE', 'kKeyEnd', 'kKeyEscape', 'kKeyF',
        +                'kKeyF1', 'kKeyF10', 'kKeyF11', 'kKeyF12', 'kKeyF2', 'kKeyF3', 'kKeyF4', 'kKeyF5', 'kKeyF6', 'kKeyF7',
        +                'kKeyF8', 'kKeyF9', 'kKeyG', 'kKeyH', 'kKeyHome', 'kKeyI', 'kKeyInsert', 'kKeyJ', 'kKeyK', 'kKeyL',
        +                'kKeyLAlt', 'kKeyLControl', 'kKeyLeft', 'kKeyLShift', 'kKeyM', 'kKeyN', 'kKeyO', 'kKeyP', 'kKeyPageDown',
        +                'kKeyPageUp', 'kKeyQ', 'kKeyR', 'kKeyRAlt', 'kKeyRControl', 'kKeyReturn', 'kKeyRight', 'kKeyRShift',
        +                'kKeyS', 'kKeySpace', 'kKeyT', 'kKeyTab', 'kKeyU', 'kKeyUp', 'kKeyV', 'kKeyW', 'kKeyX', 'kKeyY',
        +                'kKeyZ', 'kJoypadButtonPSPCircle', 'kJoypadButtonPSPCross', 'kJoypadButtonPSPDown', 'kJoypadButtonPSPL',
        +                'kJoypadButtonPSPLeft', 'kJoypadButtonPSPR', 'kJoypadButtonPSPRight', 'kJoypadButtonPSPSelect',
        +                'kJoypadButtonPSPSquare', 'kJoypadButtonPSPStart', 'kJoypadButtonPSPTriangle', 'kJoypadButtonPSPUp',
        +                'kJoypadTypePSP', 'kJoypadButtonWiimoteA', 'kJoypadButtonWiimoteB', 'kJoypadButtonWiimoteC',
        +                'kJoypadButtonWiimoteDown', 'kJoypadButtonWiimoteHome', 'kJoypadButtonWiimoteLeft',
        +                'kJoypadButtonWiimoteMinus', 'kJoypadButtonWiimoteOne', 'kJoypadButtonWiimotePlus',
        +                'kJoypadButtonWiimoteRight', 'kJoypadButtonWiimoteTwo', 'kJoypadButtonWiimoteUp', 'kJoypadButtonWiimoteZ',
        +                //Light
        +                'kTypeDirectional', 'kTypePoint',
        +                //Math
        +                'kEpsilon', 'kInfinity', 'kPi',
        +                //Mesh
        +                'kLockModeRead', 'kLockModeWrite', 'kLockReadWrite',
        +                //Network
        +                'kBluetoothServerPort', 'kDefaultServerPort', 'kStatusAuthenticated', 'kStatusSearchFinished', // 'kStatusNone', 'kStatusPending',
        +                //Object
        +                'kControllerTypeAI', 'kControllerTypeAnimation', 'kControllerTypeAny', 'kControllerTypeDynamics',
        +                'kControllerTypeNavigation', 'kControllerTypeSound', 'kGlobalSpace', 'kLocalSpace', 'kParentSpace',
        +                'kTransformOptionInheritsParentRotation', 'kTransformOptionInheritsParentScale', 'kTransformOptionInheritsParentTranslation',
        +                'kTransformOptionTranslationAffectedByParentRotation', 'kTransformOptionTranslationAffectedByParentScale', 'kTypeCamera',
        +                'kTypeCollider', 'kTypeDummy', 'kTypeGroup', 'kTypeLight', 'kTypeOccluder', 'kTypeProjector', 'kTypeReflector',
        +                'kTypeSensor', 'kTypeSfx', 'kTypeShape',
        +                //Pixelmap
        +                'kBlendModeDecal', 'kBlendModeReplace', 'kFillModeBrush', 'kFillModeNone', 'kPenModeBrush', // 'kFillModeSolid',
        +                'kPenModeNone', 'kPenModeSolid',
        +                //Projector
        +                'kMapTypeMovie', 'kMapTypePixelMap', 'kMapTypeRenderMap', 'kMapTypeTexture', 'kMapTypeTextureClip',
        +                //Scene
        +                'kFilteringModeBilinear', 'kFilteringModeNearest', 'kFilteringModeTrilinear', // 'kAddressingModeClamp', 'kAddressingModeRepeat',
        +                'kSkyBoxFaceBack', 'kSkyBoxFaceBottom', 'kSkyBoxFaceFront', 'kSkyBoxFaceLeft', 'kSkyBoxFaceRight', 'kSkyBoxFaceTop',
        +                //Sensor
        +                'kShapeTypeBox', 'kShapeTypeSphere',
        +                //Server
        +                'kStatusConnected', 'kStatusNone', 'kStatusPending',
        +                //Session - duplicate keywords
        +                //'kStatusConnected', 'kStatusNone', 'kStatusPending',
        +                //Shape
        +                'kMapTypeUnknown', 'kCurveTypeBezier', 'kCurveTypeBSpline', 'kCurveTypeCatmullRom', 'kCurveTypePolyLine',
        +                // 'kMapTypeMovie', 'kMapTypePixelMap', 'kMapTypeRenderMap', 'kMapTypeTexture',  'kMapTypeTextureClip',
        +
        +                //System
        +                'kOSType3DS', 'kOSTypeBada', 'kOSTypeBrew', 'kOSTypePalm', 'kOSTypePS3',
        +                'kClientTypeEditor', 'kClientTypeEmbedded', 'kClientTypeStandalone',
        +                'kGPUCapabilityBloomFilterSupport', 'kGPUCapabilityContrastFilterSupport', 'kGPUCapabilityDepthBlurFilterSupport',
        +                'kGPUCapabilityDistortionFilterSupport', 'kGPUCapabilityDynamicShadowsSupport', 'kGPUCapabilityHardwareOcclusionSupport',
        +                'kGPUCapabilityHardwareRenderingSupport', 'kGPUCapabilityMonochromeFilterSupport', 'kGPUCapabilityMotionBlurFilterSupport',
        +                'kGPUCapabilityPixelShaderSupport', 'kGPUCapabilityVelocityBlurFilterSupport', 'kGPUCapabilityVertexShaderSupport',
        +                'kLanguageAlbanian', 'kLanguageArabic', 'kLanguageBulgarian', 'kLanguageCatalan', 'kLanguageCzech', 'kLanguageDanish',
        +                'kLanguageDutch', 'kLanguageEnglish', 'kLanguageFinnish', 'kLanguageFrench', 'kLanguageGerman', 'kLanguageGreek',
        +                'kLanguageHebrew', 'kLanguageHungarian', 'kLanguageIcelandic', 'kLanguageItalian', 'kLanguageJapanese', 'kLanguageKorean',
        +                'kLanguageNorwegian', 'kLanguagePolish', 'kLanguagePortuguese', 'kLanguageRomanian', 'kLanguageRussian',
        +                'kLanguageSerboCroatian', 'kLanguageSlovak', 'kLanguageSpanish', 'kLanguageSwedish', 'kLanguageThai',
        +                'kLanguageTurkish', 'kLanguageUnknown', 'kLanguageUrdu', 'kOSTypeAndroid', 'kOSTypeAngstrom', 'kOSTypeIPhone',
        +                'kOSTypeLinux', 'kOSTypeMac', 'kOSTypePSP', 'kOSTypeSymbian', 'kOSTypeWii', 'kOSTypeWindows', 'kOSTypeWindowsCE',
        +            ),
        +        // Not used yet
        +        4 => array(
        +                'dummycommand',
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}', '%', '&', '*', '|', '/', '<', '>',
        +        '+', '-', '=>', '<<'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color:#0000FF; font-weight:bold;',
        +            2 => 'color:#000088; font-weight:bold;',
        +            3 => 'color:#C088C0; font-weight:bold;',
        +            4 => 'color:#00FEFE; font-weight:bold;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color:#008000; font-style:italic;',
        +            4 => 'color: #cc0000; font-style: italic;',
        +            'MULTI' => 'color:#008000; font-style:italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color:#000099;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color:#000000; font-weight:bold;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color:#888800;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color:#AA0000;'
        +            ),
        +        // names after "."
        +        'METHODS' => array(
        +            1 => 'color:#FF00FF; font-weight:bold;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color:#000000; font-weight:bold;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color:#ff6633; font-weight:bold;',
        +            1 => 'color:#0066ff; font-weight:bold;',
        +            2 => 'color:#6666ff; font-weight:bold;',
        +            3 => 'color:#ff3333; font-weight:bold;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => '',
        +            2 => '',
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        0 => array(//Variables
        +            GESHI_SEARCH => "([[:space:]])(\\$[a-zA-Z_][a-zA-Z0-9_]*)",
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +            ),
        +        1 => array(//Arrays
        +            GESHI_SEARCH => "([[:space:]])(@[a-zA-Z_][a-zA-Z0-9_]*)",
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +            ),
        +        2 => "([A-Z][a-zA-Z0-9_]*::)+[A-Z][a-zA-Z0-9_]*",//Static OOP symbols
        +        3 => array(
        +            GESHI_SEARCH => "([[:space:]]|\[|\()(:[a-zA-Z_][a-zA-Z0-9_]*)",
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +            )
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
        +    'SCRIPT_DELIMITERS' => array(
        +        0 => array(
        +            '<%' => '%>'
        +            )
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => true,
        +        ),
        +    'TAB_WIDTH' => 2
        +);
        diff --git a/includes/geshi/swift.php b/includes/geshi/swift.php
        new file mode 100644
        index 0000000..c2ead90
        --- /dev/null
        +++ b/includes/geshi/swift.php
        @@ -0,0 +1,557 @@
        +set_overall_style('font-family: Menlo, monospace; font-size: 0.85em; color: #508187;', false);
        + *
        + * CHANGES
        + * -------
        + * 2015/05/20
        + *  -   First Release
        + *
        + * TODO (updated 2015/05/20)
        + * -------------------------
        + *  -   Only added keywords for Swift, Foundation, Core Foundation, Core Graphics, UIKit and AppKit.
        + * There are many other frameworks that can be added like SpriteKit, MapKit, HealthKit, etc.
        + *  -   Hex regex is a bit wonky when combined with method highlghting and not working
        + *      with negative exponents
        + *  -   Swift strings can include expressions via "sum is: \( 2 + 3 )" and the expression
        + *      shouldn't be highlighted as a string. This isn't supported yet.
        + *************************************************************************************
        + *
        + *     This file is part of GeSHi.
        + *
        + *   GeSHi is free software; you can redistribute it and/or modify
        + *   it under the terms of the GNU General Public License as published by
        + *   the Free Software Foundation; either version 2 of the License, or
        + *   (at your option) any later version.
        + *
        + *   GeSHi is distributed in the hope that it will be useful,
        + *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + *   GNU General Public License for more details.
        + *
        + *   You should have received a copy of the GNU General Public License
        + *   along with GeSHi; if not, write to the Free Software
        + *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        + *
        + ************************************************************************************/
        +
        +$language_data = array(
        +    'LANG_NAME' => 'Swift',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'NUMBERS' => array(
        +        # Decimals
        +        0 => '\b[0-9][0-9_]*(\.[0-9][0-9_]*)?([eE][+-]?[0-9][0-9_]*)?\b',
        +        # Hex
        +        1 => '\b0x[0-9A-Fa-f][0-9A-Fa-f_]*((\.[0-9A-Fa-f][0-9A-Fa-f_]*)?([pP][+-]?[0-9][0-9_]*))?\b',
        +        # Octal
        +        2 => '\b0o[0-7][0-7_]*\b',
        +        # Binary
        +        3 => '\b0b[01][01_]*\b'
        +    ),
        +    'KEYWORDS' => array(
        +        /*
        +        ** Swift Keywords
        +        */
        +        1 => array(
        +            'Protocol', 'Self', 'Type', 'as', 'associativity', 'awillSet', 'break', 'case', 'class',
        +            'continue', 'convenience', 'default', 'deinit', 'didSet', 'do', 'dynamic', 'dynamicType',
        +            'else', 'enum', 'extension', 'fallthrough', 'false', 'final', 'for', 'func', 'get', 'if',
        +            'import', 'in', 'infix', 'init', 'inout', 'internal', 'is', 'lazy', 'left', 'let', 'mutating',
        +            'nil', 'none', 'nonmutating', 'operator', 'optional', 'override', 'postfix', 'precedence',
        +            'prefix', 'private', 'protocol', 'public', 'required', 'return', 'right', 'self', 'set',
        +            'static', 'struct', 'subscript', 'super', 'switch', 'true', 'typealias', 'unowned', 'var',
        +            'weak', 'where', 'while', '__COLUMN__', '__FILE__', '__FUNCTION__', '__LINE__',
        +        ),
        +
        +        /*
        +        ** Swift Attributes
        +        */
        +        2 => array(
        +            '@availability', '@autoclosure', '@IBAction', '@IBDesignable', '@IBInspectable', '@IBOutlet',
        +            '@noescape', '@noreturn', '@NSApplicationMain', '@NSCopying', '@NSManaged', '@objc', '@UIApplicationMain'
        +        ),
        +        /*
        +        ** Swift Builtin Functions
        +        **
        +        */
        +        3 => array(
        +            'abs', 'advance', 'alignof', 'alignofValue', 'assert', 'assertionFailure', 'contains', 'count', 'debugPrint',
        +            'debugPrintln', 'distance', 'dropFirst', 'dropLast', 'dump', 'enumerate', 'equal', 'extend', 'fatalError',
        +            'filter', 'find', 'first', 'flatMap', 'getVaList', 'indices', 'insert', 'isEmpty', 'isUniquelyReferenced',
        +            'isUniquelyReferencedNonObjC', 'join', 'last', 'lexicographicalCompare', 'map', 'max', 'maxElement',
        +            'min', 'minElement', 'numericCast', 'overlaps', 'partition', 'precondition', 'preconditionFailure',
        +            'print', 'println', 'reduce', 'reflect', 'removeAll', 'removeAtIndex', 'removeLast', 'removeRange', 'reverse',
        +            'sizeof', 'sizeofValue', 'sort', 'sorted', 'splice', 'split', 'startsWith', 'stride', 'strideof', 'strideofValue',
        +            'suffix', 'swap', 'toDebugString', 'toString', 'transcode', 'underestimateCount', 'unsafeAddressOf', 'unsafeBitCast',
        +            'unsafeDowncast', 'unsafeUnwrap', 'withExtendedLifetime', 'withUnsafeMutablePointer', 'withUnsafeMutablePointers',
        +            'withUnsafePointer', 'withUnsafePointers', 'withVaList', 'zip'
        +        ),
        +        /*
        +         ** Swift Types
        +        */
        +        4 => array(
        +            'Array', 'ArraySlice', 'AutoreleasingUnsafeMutablePointer', 'BidirectionalReverseView', 'Bit', 'Bool',
        +            'CFunctionPointer', 'COpaquePointer', 'CVaListPointer', 'Character', 'ClosedInterval', 'CollectionOfOne',
        +            'ContiguousArray', 'Dictionary', 'DictionaryGenerator', 'DictionaryIndex', 'Double', 'EmptyCollection',
        +            'EmptyGenerator', 'EnumerateGenerator', 'EnumerateSequence', 'FilterCollectionView', 'FilterCollectionViewIndex',
        +            'FilterGenerator', 'FilterSequenceView', 'Float', 'Float80', 'FloatingPointClassification', 'GeneratorOf',
        +            'GeneratorOfOne', 'GeneratorSequence', 'HalfOpenInterval', 'ImplicitlyUnwrappedOptional', 'IndexingGenerator',
        +            'Int', 'Int16', 'Int32', 'Int64', 'Int8', 'LazyBidirectionalCollection', 'LazyForwardCollection',
        +            'LazyRandomAccessCollection', 'LazySequence', 'ManagedBuffer', 'ManagedBufferPointer', 'ManagedProtoBuffer',
        +            'MapCollectionView', 'MapSequenceGenerator', 'MapSequenceView', 'MirrorDisposition', 'NonObjectiveCBase',
        +            'ObjectIdentifier', 'Optional', 'PermutationGenerator', 'Process', 'QuickLookObject', 'RandomAccessReverseView',
        +            'Range', 'RangeGenerator', 'RawByte', 'Repeat', 'ReverseBidirectionalIndex', 'ReverseRandomAccessIndex',
        +            'SequenceOf', 'Set', 'SetGenerator', 'SetIndex', 'SinkOf', 'StaticString', 'StrideThrough', 'StrideThroughGenerator',
        +            'StrideTo', 'StrideToGenerator', 'String', 'String.Index', 'String.UTF16View', 'String.UTF16View.Index',
        +            'String.UTF8View', 'String.UTF8View.Index', 'String.UnicodeScalarView', 'String.UnicodeScalarView.Generator',
        +            'String.UnicodeScalarView.Index', 'UInt', 'UInt16', 'UInt32', 'UInt64', 'UInt8', 'UTF16', 'UTF32', 'UTF8',
        +            'UnicodeDecodingResult', 'UnicodeScalar', 'UnicodeScalar.UTF16View', 'Unmanaged', 'UnsafeBufferPointer',
        +            'UnsafeBufferPointerGenerator', 'UnsafeMutableBufferPointer', 'UnsafeMutablePointer', 'UnsafePointer',
        +            'VaListBuilder', 'Zip2', 'ZipGenerator2'
        +        ),
        +        /*
        +        ** Swift Type Aliases
        +        */
        +        5 => array(
        +            'Any', 'AnyClass', 'CBool', 'CChar', 'CChar16', 'CChar32', 'CDouble', 'CFloat', 'CInt', 'CLong',
        +            'CLongLong', 'CShort', 'CSignedChar', 'CUnsignedChar', 'CUnsignedInt', 'CUnsignedLong', 'CUnsignedLongLong',
        +            'CUnsignedShort', 'CWideChar', 'ExtendedGraphemeClusterType', 'Float32', 'Float64', 'FloatLiteralType', 'IntMax',
        +            'IntegerLiteralType', 'StringLiteralType', 'UIntMax', 'UWord', 'UnicodeScalarType', 'Void', 'Word'
        +        ),
        +        /*
        +        ** Swift Protocols
        +        */
        +        6 => array(
        +            'AbsoluteValuable', 'AnyObject', 'ArrayLiteralConvertible', 'BidirectionalIndexType', 'BitwiseOperationsType',
        +            'BooleanLiteralConvertible', 'BooleanType', 'CVarArgType', 'CollectionType', 'Comparable', 'DebugPrintable',
        +            'DictionaryLiteralConvertible', 'Equatable', 'ExtendedGraphemeClusterLiteralConvertible', 'ExtensibleCollectionType',
        +            'FloatLiteralConvertible', 'FloatingPointType', 'ForwardIndexType', 'GeneratorType', 'Hashable', 'IntegerArithmeticType',
        +            'IntegerLiteralConvertible', 'IntegerType', 'IntervalType', 'MirrorType', 'MutableCollectionType', 'MutableSliceable',
        +            'NilLiteralConvertible', 'OutputStreamType', 'Printable', 'RandomAccessIndexType', 'RangeReplaceableCollectionType',
        +            'RawOptionSetType', 'RawRepresentable', 'Reflectable', 'SequenceType', 'SignedIntegerType', 'SignedNumberType',
        +            'SinkType', 'Sliceable', 'Streamable', 'Strideable', 'StringInterpolationConvertible', 'StringLiteralConvertible',
        +            'UnicodeCodecType', 'UnicodeScalarLiteralConvertible', 'UnsignedIntegerType', '_ArrayBufferType', '_ArrayType',
        +            '_BidirectionalIndexType', '_CVarArgPassedAsDouble', '_CocoaStringType', '_CollectionType', '_Comparable',
        +            '_DestructorSafeContainer', '_ExtensibleCollectionType', '_ForwardIndexType', '_Incrementable', '_IntegerArithmeticType',
        +            '_IntegerType', '_NSArrayCoreType', '_NSCopyingType', '_NSDictionaryCoreType', '_NSDictionaryType', '_NSEnumeratorType',
        +            '_NSFastEnumerationType', '_NSSetCoreType', '_NSSetType', '_NSStringCoreType', '_ObjectiveCBridgeable', '_PointerType',
        +            '_RandomAccessIndexType', '_RawOptionSetType', '_SequenceType', '_Sequence_Type', '_ShadowProtocol', '_SignedIntegerType',
        +            '_SignedNumberType', '_Sliceable', '_Strideable', '_StringElementType', '_UnsignedIntegerType', '__ArrayType'
        +        ),
        +
        +        /*
        +        ** Foundation Classes
        +        */
        +        7 => array(
        +            'NSObject', 'NSAffineTransform', 'NSAppleEventDescriptor', 'NSAppleEventManager', 'NSAppleScript', 'NSArray', 'NSMutableArray',
        +            'NSAssertionHandler', 'NSAttributedString', 'NSMutableAttributedString', 'NSAutoreleasePool', 'NSBackgroundActivityScheduler',
        +            'NSBundle', 'NSCache', 'NSCachedURLResponse', 'NSCalendar', 'NSCharacterSet', 'NSMutableCharacterSet', 'NSClassDescription',
        +            'NSScriptClassDescription', 'NSCoder', 'NSArchiver', 'NSKeyedArchiver', 'NSKeyedUnarchiver', 'NSPortCoder', 'NSUnarchiver',
        +            'NSCondition', 'NSConditionLock', 'NSConnection', 'NSData', 'NSMutableData', 'NSPurgeableData', 'NSDate', 'NSCalendarDate',
        +            'NSDateComponents', 'NSDecimalNumberHandler', 'NSDictionary', 'NSMutableDictionary', 'NSDistantObjectRequest', 'NSDistributedLock',
        +            'NSEnumerator', 'NSDirectoryEnumerator', 'NSError', 'NSException', 'NSExpression', 'NSExtensionContext', 'NSExtensionItem',
        +            'NSFileAccessIntent', 'NSFileCoordinator', 'NSFileHandle', 'NSFileManager', 'NSFileSecurity', 'NSFileVersion', 'NSFileWrapper',
        +            'NSFormatter', 'NSByteCountFormatter', 'NSDateComponentsFormatter', 'NSDateFormatter', 'NSDateIntervalFormatter',
        +            'NSEnergyFormatter', 'NSLengthFormatter', 'NSMassFormatter', 'NSNumberFormatter', 'NSGarbageCollector', 'NSHashTable', 'NSHost',
        +            'NSHTTPCookie', 'NSHTTPCookieStorage', 'NSIndexPath', 'NSIndexSet', 'NSMutableIndexSet', 'NSInvocation', 'NSItemProvider',
        +            'NSJSONSerialization', 'NSLinguisticTagger', 'NSLocale', 'NSLock', 'NSMapTable', 'NSMetadataItem', 'NSMetadataQuery',
        +            'NSMetadataQueryAttributeValueTuple', 'NSMetadataQueryResultGroup', 'NSMethodSignature', 'NSNetService', 'NSNetServiceBrowser',
        +            'NSNotification', 'NSNotificationCenter', 'NSDistributedNotificationCenter', 'NSNotificationQueue', 'NSNull', 'NSOperation',
        +            'NSBlockOperation', 'NSInvocationOperation', 'NSOperationQueue', 'NSOrderedSet', 'NSMutableOrderedSet', 'NSOrthography', 'NSPipe',
        +            'NSPointerArray', 'NSPointerFunctions', 'NSPort', 'NSMachPort', 'NSMessagePort', 'NSSocketPort', 'NSPortMessage', 'NSPortNameServer',
        +            'NSMachBootstrapServer', 'NSMessagePortNameServer', 'NSSocketPortNameServer', 'NSPositionalSpecifier', 'NSPredicate',
        +            'NSComparisonPredicate', 'NSCompoundPredicate', 'NSProcessInfo', 'NSProgress', 'NSPropertyListSerialization', 'NSRecursiveLock',
        +            'NSRegularExpression', 'NSDataDetector', 'NSRunLoop', 'NSScanner', 'NSScriptCoercionHandler', 'NSScriptCommand', 'NSCloneCommand',
        +            'NSCloseCommand', 'NSCountCommand', 'NSCreateCommand', 'NSDeleteCommand', 'NSExistsCommand', 'NSGetCommand', 'NSMoveCommand',
        +            'NSQuitCommand', 'NSSetCommand', 'NSScriptCommandDescription', 'NSScriptExecutionContext', 'NSScriptObjectSpecifier',
        +            'NSIndexSpecifier', 'NSMiddleSpecifier', 'NSNameSpecifier', 'NSPropertySpecifier', 'NSRandomSpecifier', 'NSRangeSpecifier',
        +            'NSRelativeSpecifier', 'NSUniqueIDSpecifier', 'NSWhoseSpecifier', 'NSScriptSuiteRegistry', 'NSScriptWhoseTest', 'NSLogicalTest',
        +            'NSSpecifierTest', 'NSSet', 'NSMutableSet', 'NSCountedSet', 'NSSortDescriptor', 'NSSpellServer', 'NSStream', 'NSInputStream',
        +            'NSOutputStream', 'NSString', 'NSMutableString', 'NSTask', 'NSTextCheckingResult', 'NSThread', 'NSTimer', 'NSTimeZone',
        +            'NSUbiquitousKeyValueStore', 'NSUndoManager', 'NSURL', 'NSURLAuthenticationChallenge', 'NSURLCache', 'NSURLComponents',
        +            'NSURLConnection', 'NSURLCredential', 'NSURLCredentialStorage', 'NSURLDownload', 'NSURLHandle', 'NSURLProtectionSpace',
        +            'NSURLProtocol', 'NSURLQueryItem', 'NSURLRequest', 'NSMutableURLRequest', 'NSURLResponse', 'NSHTTPURLResponse', 'NSURLSession',
        +            'NSURLSessionConfiguration', 'NSURLSessionTask', 'NSURLSessionDataTask', 'NSURLSessionUploadTask', 'NSURLSessionDownloadTask',
        +            'NSUserActivity', 'NSUserDefaults', 'NSUserNotification', 'NSUserNotificationAction', 'NSUserNotificationCenter',
        +            'NSUserScriptTask', 'NSUserAppleScriptTask', 'NSUserAutomatorTask', 'NSUserUnixTask', 'NSUUID', 'NSValue', 'NSNumber',
        +            'NSDecimalNumber', 'NSValueTransformer', 'NSXMLNode', 'NSXMLDocument', 'NSXMLDTD', 'NSXMLDTDNode', 'NSXMLElement', 'NSXMLParser',
        +            'NSXPCConnection', 'NSXPCInterface', 'NSXPCListener', 'NSXPCListenerEndpoint', 'NSProxy', 'NSDistantObject', 'NSProtocolChecker'
        +        ),
        +        /*
        +        ** Foundation Protocols
        +        */
        +        8 => array(
        +            'NSCacheDelegate', 'NSCoding', 'NSComparisonMethods', 'NSConnectionDelegate', 'NSCopying', 'NSDecimalNumberBehaviors',
        +            'NSDiscardableContent', 'NSErrorRecoveryAttempting', 'NSExtensionRequestHandling', 'NSFastEnumeration', 'NSFileManagerDelegate',
        +            'NSFilePresenter', 'NSKeyValueCoding', 'NSKeyValueObserving', 'NSKeyedArchiverDelegate', 'NSKeyedUnarchiverDelegate', 'NSLocking',
        +            'NSMachPortDelegate', 'NSMetadataQueryDelegate', 'NSMutableCopying', 'NSNetServiceBrowserDelegate', 'NSNetServiceDelegate',
        +            'NSPortDelegate', 'NSScriptKeyValueCoding', 'NSScriptObjectSpecifiers', 'NSScriptingComparisonMethods',
        +            'NSSecureCoding', 'NSSpellServerDelegate', 'NSStreamDelegate', 'NSURLAuthenticationChallengeSender',
        +            'NSURLConnectionDataDelegate', 'NSURLConnectionDelegate', 'NSURLDownloadDelegate', 'NSURLHandleClient', 'NSURLProtocolClient',
        +            'NSURLSessionDataDelegate', 'NSURLSessionDelegate', 'NSURLSessionDownloadDelegate', 'NSURLSessionTaskDelegate',
        +            'NSUserActivityDelegate', 'NSUserNotificationCenterDelegate', 'NSXMLParserDelegate', 'NSXPCListenerDelegate',
        +            'NSXPCProxyCreating'
        +        ),
        +        /*
        +        ** Core Foundation Protocols
        +        **
        +        */
        +        9 => array(
        +            'CFAllocator', 'CFArray', 'CFAttributedString', 'CFBag', 'CFBinaryHeap', 'CFBitVector', 'CFBoolean', 'CFBundle', 'CFCalendar',
        +            'CFCharacterSet', 'CFData', 'CFDate', 'CFDateFormatter', 'CFDictionary', 'CFError', 'CFFileDescriptor', 'CFLocale', 'CFMachPort',
        +            'CFMessagePort', 'CFMutableArray', 'CFMutableAttributedString', 'CFMutableBag', 'CFMutableBitVector', 'CFMutableCharacterSet',
        +            'CFMutableData', 'CFMutableDictionary', 'CFMutableSet', 'CFMutableString', 'CFNotificationCenter', 'CFNull', 'CFNumber',
        +            'CFNumberFormatter', 'CFPlugIn', 'CFPlugInInstance', 'CFPropertyList', 'CFReadStream', 'CFRunLoop', 'CFRunLoopObserver',
        +            'CFRunLoopSource', 'CFRunLoopTimer', 'CFSet', 'CFSocket', 'CFString', 'CFStringTokenizer', 'CFTimeZone', 'CFTree', 'CFType', 'CFURL',
        +            'CFUUID', 'CFUserNotification', 'CFWriteStream', 'CFXMLNode', 'CFXMLParser', 'CFXMLTree'
        +        ),
        +
        +        /*
        +        ** Core Foundation Data Types
        +        **
        +        */
        +        10 => array(
        +            'CFAbsoluteTime', 'CFAllocatorContext', 'CFAllocatorRef', 'CFArrayCallBacks', 'CFArrayRef', 'CFAttributedStringRef',
        +            'CFBagCallBacks', 'CFBagRef', 'CFBinaryHeapCallBacks', 'CFBinaryHeapCompareContext', 'CFBinaryHeapRef', 'CFBit', 'CFBitVectorRef',
        +            'CFBooleanRef', 'CFBundleRef', 'CFBundleRefNum', 'CFCalendarRef', 'CFCharacterSetPredefinedSet',
        +            'CFCharacterSetPredefinedSet.AlphaNumeric', 'CFCharacterSetPredefinedSet.CapitalizedLetter',
        +            'CFCharacterSetPredefinedSet.Control', 'CFCharacterSetPredefinedSet.DecimalDigit',
        +            'CFCharacterSetPredefinedSet.Decomposable', 'CFCharacterSetPredefinedSet.Illegal', 'CFCharacterSetPredefinedSet.Letter',
        +            'CFCharacterSetPredefinedSet.LowercaseLetter', 'CFCharacterSetPredefinedSet.Newline', 'CFCharacterSetPredefinedSet.NonBase',
        +            'CFCharacterSetPredefinedSet.Punctuation', 'CFCharacterSetPredefinedSet.Symbol',
        +            'CFCharacterSetPredefinedSet.UppercaseLetter', 'CFCharacterSetPredefinedSet.Whitespace',
        +            'CFCharacterSetPredefinedSet.WhitespaceAndNewline', 'CFCharacterSetRef', 'CFDataRef', 'CFDataSearchFlags', 'CFDateFormatterRef',
        +            'CFDateFormatterStyle', 'CFDateFormatterStyle.FullStyle', 'CFDateFormatterStyle.LongStyle', 'CFDateFormatterStyle.MediumStyle',
        +            'CFDateFormatterStyle.NoStyle', 'CFDateFormatterStyle.ShortStyle', 'CFDateRef', 'CFDictionaryKeyCallBacks', 'CFDictionaryRef',
        +            'CFDictionaryValueCallBacks', 'CFErrorRef', 'CFFileDescriptorCallBack', 'CFFileDescriptorContext',
        +            'CFFileDescriptorNativeDescriptor', 'CFFileDescriptorRef', 'CFGregorianDate', 'CFGregorianUnits', 'CFHashCode', 'CFIndex',
        +            'CFLocaleRef', 'CFMachPortContext', 'CFMachPortRef', 'CFMessagePortContext', 'CFMessagePortRef', 'CFMutableArrayRef',
        +            'CFMutableAttributedStringRef', 'CFMutableBagRef', 'CFMutableBitVectorRef', 'CFMutableCharacterSetRef', 'CFMutableDataRef',
        +            'CFMutableDictionaryRef', 'CFMutableSetRef', 'CFMutableStringRef', 'CFNotificationCenterRef', 'CFNullRef',
        +            'CFNumberFormatterOptionFlags', 'CFNumberFormatterPadPosition', 'CFNumberFormatterPadPosition.AfterPrefix',
        +            'CFNumberFormatterPadPosition.AfterSuffix', 'CFNumberFormatterPadPosition.BeforePrefix',
        +            'CFNumberFormatterPadPosition.BeforeSuffix', 'CFNumberFormatterRef', 'CFNumberFormatterStyle',
        +            'CFNumberFormatterStyle.CurrencyStyle', 'CFNumberFormatterStyle.DecimalStyle', 'CFNumberFormatterStyle.NoStyle',
        +            'CFNumberFormatterStyle.PercentStyle', 'CFNumberFormatterStyle.ScientificStyle', 'CFNumberFormatterStyle.SpellOutStyle',
        +            'CFNumberRef', 'CFOptionFlags', 'CFPlugInInstanceRef', 'CFPlugInRef', 'CFPropertyListMutabilityOptions', 'CFPropertyListRef',
        +            'CFRange', 'CFReadStreamRef', 'CFRunLoopObserverContext', 'CFRunLoopObserverRef', 'CFRunLoopRef', 'CFRunLoopSourceContext',
        +            'CFRunLoopSourceContext1', 'CFRunLoopSourceRef', 'CFRunLoopTimerContext', 'CFRunLoopTimerRef', 'CFSetCallBacks', 'CFSetRef',
        +            'CFSocketContext', 'CFSocketNativeHandle', 'CFSocketRef', 'CFSocketSignature', 'CFStreamClientContext', 'CFStreamError',
        +            'CFStringCompareFlags', 'CFStringEncoding', 'CFStringEncodings', 'CFStringEncodings.ANSEL', 'CFStringEncodings.Big5',
        +            'CFStringEncodings.Big5_E', 'CFStringEncodings.Big5_HKSCS_1999', 'CFStringEncodings.CNS_11643_92_P1',
        +            'CFStringEncodings.CNS_11643_92_P2', 'CFStringEncodings.CNS_11643_92_P3', 'CFStringEncodings.DOSArabic',
        +            'CFStringEncodings.DOSBalticRim', 'CFStringEncodings.DOSCanadianFrench', 'CFStringEncodings.DOSChineseSimplif',
        +            'CFStringEncodings.DOSChineseTrad', 'CFStringEncodings.DOSCyrillic', 'CFStringEncodings.DOSGreek',
        +            'CFStringEncodings.DOSGreek1', 'CFStringEncodings.DOSGreek2', 'CFStringEncodings.DOSHebrew', 'CFStringEncodings.DOSIcelandic',
        +            'CFStringEncodings.DOSJapanese', 'CFStringEncodings.DOSKorean', 'CFStringEncodings.DOSLatin1', 'CFStringEncodings.DOSLatin2',
        +            'CFStringEncodings.DOSLatinUS', 'CFStringEncodings.DOSNordic', 'CFStringEncodings.DOSPortuguese',
        +            'CFStringEncodings.DOSRussian', 'CFStringEncodings.DOSThai', 'CFStringEncodings.DOSTurkish', 'CFStringEncodings.EBCDIC_CP037',
        +            'CFStringEncodings.EBCDIC_US', 'CFStringEncodings.EUC_CN', 'CFStringEncodings.EUC_JP', 'CFStringEncodings.EUC_KR',
        +            'CFStringEncodings.EUC_TW', 'CFStringEncodings.GBK_95', 'CFStringEncodings.GB_18030_2000', 'CFStringEncodings.GB_2312_80',
        +            'CFStringEncodings.HZ_GB_2312', 'CFStringEncodings.ISOLatin10', 'CFStringEncodings.ISOLatin2', 'CFStringEncodings.ISOLatin3',
        +            'CFStringEncodings.ISOLatin4', 'CFStringEncodings.ISOLatin5', 'CFStringEncodings.ISOLatin6', 'CFStringEncodings.ISOLatin7',
        +            'CFStringEncodings.ISOLatin8', 'CFStringEncodings.ISOLatin9', 'CFStringEncodings.ISOLatinArabic',
        +            'CFStringEncodings.ISOLatinCyrillic', 'CFStringEncodings.ISOLatinGreek', 'CFStringEncodings.ISOLatinHebrew',
        +            'CFStringEncodings.ISOLatinThai', 'CFStringEncodings.ISO_2022_CN', 'CFStringEncodings.ISO_2022_CN_EXT',
        +            'CFStringEncodings.ISO_2022_JP', 'CFStringEncodings.ISO_2022_JP_1', 'CFStringEncodings.ISO_2022_JP_2',
        +            'CFStringEncodings.ISO_2022_JP_3', 'CFStringEncodings.ISO_2022_KR', 'CFStringEncodings.JIS_C6226_78',
        +            'CFStringEncodings.JIS_X0201_76', 'CFStringEncodings.JIS_X0208_83', 'CFStringEncodings.JIS_X0208_90',
        +            'CFStringEncodings.JIS_X0212_90', 'CFStringEncodings.KOI8_R', 'CFStringEncodings.KOI8_U', 'CFStringEncodings.KSC_5601_87',
        +            'CFStringEncodings.KSC_5601_92_Johab', 'CFStringEncodings.MacArabic', 'CFStringEncodings.MacArmenian',
        +            'CFStringEncodings.MacBengali', 'CFStringEncodings.MacBurmese', 'CFStringEncodings.MacCeltic',
        +            'CFStringEncodings.MacCentralEurRoman', 'CFStringEncodings.MacChineseSimp', 'CFStringEncodings.MacChineseTrad',
        +            'CFStringEncodings.MacCroatian', 'CFStringEncodings.MacCyrillic', 'CFStringEncodings.MacDevanagari',
        +            'CFStringEncodings.MacDingbats', 'CFStringEncodings.MacEthiopic', 'CFStringEncodings.MacExtArabic',
        +            'CFStringEncodings.MacFarsi', 'CFStringEncodings.MacGaelic', 'CFStringEncodings.MacGeorgian', 'CFStringEncodings.MacGreek',
        +            'CFStringEncodings.MacGujarati', 'CFStringEncodings.MacGurmukhi', 'CFStringEncodings.MacHFS', 'CFStringEncodings.MacHebrew',
        +            'CFStringEncodings.MacIcelandic', 'CFStringEncodings.MacInuit', 'CFStringEncodings.MacJapanese',
        +            'CFStringEncodings.MacKannada', 'CFStringEncodings.MacKhmer', 'CFStringEncodings.MacKorean', 'CFStringEncodings.MacLaotian',
        +            'CFStringEncodings.MacMalayalam', 'CFStringEncodings.MacMongolian', 'CFStringEncodings.MacOriya',
        +            'CFStringEncodings.MacRomanLatin1', 'CFStringEncodings.MacRomanian', 'CFStringEncodings.MacSinhalese',
        +            'CFStringEncodings.MacSymbol', 'CFStringEncodings.MacTamil', 'CFStringEncodings.MacTelugu', 'CFStringEncodings.MacThai',
        +            'CFStringEncodings.MacTibetan', 'CFStringEncodings.MacTurkish', 'CFStringEncodings.MacUkrainian', 'CFStringEncodings.MacVT100',
        +            'CFStringEncodings.MacVietnamese', 'CFStringEncodings.NextStepJapanese', 'CFStringEncodings.ShiftJIS',
        +            'CFStringEncodings.ShiftJIS_X0213', 'CFStringEncodings.ShiftJIS_X0213_MenKuTen', 'CFStringEncodings.UTF7',
        +            'CFStringEncodings.UTF7_IMAP', 'CFStringEncodings.VISCII', 'CFStringEncodings.WindowsArabic',
        +            'CFStringEncodings.WindowsBalticRim', 'CFStringEncodings.WindowsCyrillic', 'CFStringEncodings.WindowsGreek',
        +            'CFStringEncodings.WindowsHebrew', 'CFStringEncodings.WindowsKoreanJohab', 'CFStringEncodings.WindowsLatin2',
        +            'CFStringEncodings.WindowsLatin5', 'CFStringEncodings.WindowsVietnamese', 'CFStringInlineBuffer', 'CFStringRef',
        +            'CFStringTokenizerRef', 'CFSwappedFloat32', 'CFSwappedFloat64', 'CFTimeInterval', 'CFTimeZoneNameStyle',
        +            'CFTimeZoneNameStyle.DaylightSaving', 'CFTimeZoneNameStyle.Generic', 'CFTimeZoneNameStyle.ShortDaylightSaving',
        +            'CFTimeZoneNameStyle.ShortGeneric', 'CFTimeZoneNameStyle.ShortStandard', 'CFTimeZoneNameStyle.Standard', 'CFTimeZoneRef',
        +            'CFTreeContext', 'CFTreeRef', 'CFTypeID', 'CFTypeRef', 'CFURLBookmarkCreationOptions', 'CFURLBookmarkFileCreationOptions',
        +            'CFURLBookmarkResolutionOptions', 'CFURLRef', 'CFUUIDBytes', 'CFUUIDRef', 'CFUserNotificationRef', 'CFWriteStreamRef',
        +            'CFXMLAttributeDeclarationInfo', 'CFXMLAttributeListDeclarationInfo', 'CFXMLDocumentInfo', 'CFXMLDocumentTypeInfo',
        +            'CFXMLElementInfo', 'CFXMLElementTypeDeclarationInfo', 'CFXMLEntityInfo', 'CFXMLEntityReferenceInfo', 'CFXMLExternalID',
        +            'CFXMLNodeRef', 'CFXMLNotationInfo', 'CFXMLParserCallBacks', 'CFXMLParserContext', 'CFXMLParserRef',
        +            'CFXMLProcessingInstructionInfo', 'CFXMLTreeRef'
        +        ),
        +        /*
        +        ** Core Graphics Protocols
        +        **
        +        */
        +        11 => array(
        +            'CGBitmapContext', 'CGColor', 'CGColorSpace', 'CGContext', 'CGDataConsumer', 'CGDataProvider', 'CGFont', 'CGFunction', 'CGGradient',
        +            'CGImage', 'CGLayer', 'CGPath', 'CGPattern', 'CGPDFArray', 'CGPDFContentStream', 'CGPDFContext', 'CGPDFDictionary', 'CGPDFDocument',
        +            'CGPDFObject', 'CGPDFOperatorTable', 'CGPDFPage', 'CGPDFScanner', 'CGPDFStream', 'CGPDFString', 'CGShading'
        +        ),
        +
        +        /*
        +        ** Core Graphics Data Types
        +        **
        +        */
        +        12 => array(
        +            'CGBitmapContextReleaseDataCallback', 'CGColorRef', 'CGColorSpaceRef', 'CGContextRef', 'CGDataConsumerCallbacks',
        +            'CGDataConsumerRef', 'CGDataProviderRef', 'CGDataProviderDirectCallbacks', 'CGDataProviderSequentialCallbacks', 'CGFontRef',
        +            'CGFontIndex', 'CGGlyph', 'CGFunctionRef', 'CGFunctionCallbacks', 'CGGradientRef', 'CGImageRef', 'CGLayerRef', 'CGPathRef',
        +            'CGMutablePathRef', 'CGPathElement', 'CGPatternRef', 'CGPatternCallbacks', 'CGPDFArrayRef', 'CGPDFContentStreamRef',
        +            'CGPDFDictionaryRef', 'CGPDFDocumentRef', 'CGPDFObjectRef', 'CGPDFBoolean', 'CGPDFInteger', 'CGPDFReal', 'CGPDFOperatorTableRef',
        +            'CGPDFPageRef', 'CGPDFScannerRef', 'CGPDFStreamRef', 'CGPDFStringRef', 'CGShadingRef', 'CGAffineTransform', 'CGFloat', 'CGPoint', 'CGRect',
        +            'CGSize', 'CGVector', 'CGError'
        +        ),
        +        /*
        +        ** UIKit Classes
        +        **
        +        */
        +        13 => array(
        +            'NSFileProviderExtension', 'NSLayoutConstraint', 'NSLayoutManager', 'NSParagraphStyle', 'NSMutableParagraphStyle',
        +            'NSShadow', 'NSStringDrawingContext', 'NSTextAttachment', 'NSTextContainer', 'NSTextTab', 'UIAcceleration', 'UIAccelerometer',
        +            'UIAccessibilityCustomAction', 'UIAccessibilityElement', 'UIActivity', 'UIAlertAction', 'UIBarItem', 'UIBarButtonItem',
        +            'UITabBarItem', 'UIBezierPath', 'UICollectionViewLayout', 'UICollectionViewFlowLayout', 'UICollectionViewTransitionLayout',
        +            'UICollectionViewLayoutAttributes', 'UICollectionViewLayoutInvalidationContext',
        +            'UICollectionViewFlowLayoutInvalidationContext', 'UICollectionViewUpdateItem', 'UIColor', 'UIDevice', 'UIDictationPhrase',
        +            'UIDocument', 'UIManagedDocument', 'UIDocumentInteractionController', 'UIDynamicAnimator', 'UIDynamicBehavior',
        +            'UIAttachmentBehavior', 'UICollisionBehavior', 'UIDynamicItemBehavior', 'UIGravityBehavior', 'UIPushBehavior', 'UISnapBehavior',
        +            'UIEvent', 'UIFont', 'UIFontDescriptor', 'UIGestureRecognizer', 'UILongPressGestureRecognizer', 'UIPanGestureRecognizer',
        +            'UIScreenEdgePanGestureRecognizer', 'UIPinchGestureRecognizer', 'UIRotationGestureRecognizer', 'UISwipeGestureRecognizer',
        +            'UITapGestureRecognizer', 'UIImage', 'UIImageAsset', 'UIKeyCommand', 'UILexicon', 'UILexiconEntry', 'UILocalNotification',
        +            'UILocalizedIndexedCollation', 'UIMenuController', 'UIMenuItem', 'UIMotionEffect', 'UIInterpolatingMotionEffect',
        +            'UIMotionEffectGroup', 'UINavigationItem', 'UINib', 'UIPasteboard', 'UIPercentDrivenInteractiveTransition', 'UIPopoverController',
        +            'UIPresentationController', 'UIPopoverPresentationController', 'UIPrintFormatter', 'UIMarkupTextPrintFormatter',
        +            'UISimpleTextPrintFormatter', 'UIViewPrintFormatter', 'UIPrintInfo', 'UIPrintInteractionController', 'UIPrintPageRenderer',
        +            'UIPrintPaper', 'UIPrinter', 'UIPrinterPickerController', 'UIResponder', 'UIApplication', 'UIView', 'UIActionSheet',
        +            'UIActivityIndicatorView', 'UIAlertView', 'UICollectionReusableView', 'UICollectionViewCell', 'UIControl', 'UIButton',
        +            'UIDatePicker', 'UIPageControl', 'UIRefreshControl', 'UISegmentedControl', 'UISlider', 'UIStepper', 'UISwitch', 'UITextField',
        +            'UIImageView', 'UIInputView', 'UILabel', 'UINavigationBar', 'UIPickerView', 'UIPopoverBackgroundView', 'UIProgressView',
        +            'UIScrollView', 'UICollectionView', 'UITableView', 'UITextView', 'UISearchBar', 'UITabBar', 'UITableViewCell',
        +            'UITableViewHeaderFooterView', 'UIToolbar', 'UIVisualEffectView', 'UIWebView', 'UIWindow', 'UIViewController',
        +            'UIActivityViewController', 'UIAlertController', 'UICollectionViewController', 'UIDocumentMenuViewController',
        +            'UIDocumentPickerExtensionViewController', 'UIDocumentPickerViewController', 'UIInputViewController', 'UINavigationController',
        +            'UIImagePickerController', 'UIVideoEditorController', 'UIPageViewController', 'UIReferenceLibraryViewController',
        +            'UISearchController', 'UISplitViewController', 'UITabBarController', 'UITableViewController', 'UIScreen', 'UIScreenMode',
        +            'UISearchDisplayController', 'UIStoryboard', 'UIStoryboardSegue', 'UIStoryboardPopoverSegue', 'UITableViewRowAction',
        +            'UITextChecker', 'UITextInputMode', 'UITextInputStringTokenizer', 'UITextPosition', 'UITextRange', 'UITextSelectionRect', 'UITouch',
        +            'UITraitCollection', 'UIUserNotificationAction', 'UIMutableUserNotificationAction', 'UIUserNotificationCategory',
        +            'UIMutableUserNotificationCategory', 'UIUserNotificationSettings', 'UIVisualEffect', 'UIBlurEffect', 'UIVibrancyEffect',
        +            'NSTextStorage', 'UIActivityItemProvider'
        +        ),
        +        /*
        +        ** UIKit Protocols
        +        **
        +        */
        +        14 => array(
        +            'NSLayoutManagerDelegate', 'NSTextAttachmentContainer', 'NSTextLayoutOrientationProvider', 'NSTextStorageDelegate',
        +            'UIAccelerometerDelegate', 'UIAccessibility', 'UIAccessibilityAction', 'UIAccessibilityContainer', 'UIAccessibilityFocus',
        +            'UIAccessibilityIdentification', 'UIAccessibilityReadingContent', 'UIActionSheetDelegate', 'UIActivityItemSource',
        +            'UIAdaptivePresentationControllerDelegate', 'UIAlertViewDelegate', 'UIAppearance', 'UIAppearanceContainer',
        +            'UIApplicationDelegate', 'UIBarPositioning', 'UIBarPositioningDelegate', 'UICollectionViewDataSource',
        +            'UICollectionViewDelegate', 'UICollectionViewDelegateFlowLayout', 'UICollisionBehaviorDelegate', 'UIContentContainer',
        +            'UICoordinateSpace', 'UIDataSourceModelAssociation', 'UIDocumentInteractionControllerDelegate', 'UIDocumentMenuDelegate',
        +            'UIDocumentPickerDelegate', 'UIDynamicAnimatorDelegate', 'UIDynamicItem', 'UIGestureRecognizerDelegate',
        +            'UIGuidedAccessRestrictionDelegate', 'UIImagePickerControllerDelegate', 'UIInputViewAudioFeedback', 'UIKeyInput',
        +            'UILayoutSupport', 'UINavigationBarDelegate', 'UINavigationControllerDelegate', 'UIObjectRestoration',
        +            'UIPageViewControllerDataSource', 'UIPageViewControllerDelegate', 'UIPickerViewAccessibilityDelegate',
        +            'UIPickerViewDataSource', 'UIPickerViewDelegate', 'UIPopoverBackgroundViewMethods', 'UIPopoverControllerDelegate',
        +            'UIPopoverPresentationControllerDelegate', 'UIPrintInteractionControllerDelegate', 'UIPrinterPickerControllerDelegate',
        +            'UIResponderStandardEditActions', 'UIScrollViewAccessibilityDelegate', 'UIScrollViewDelegate', 'UISearchBarDelegate',
        +            'UISearchControllerDelegate', 'UISearchDisplayDelegate', 'UISearchResultsUpdating', 'UISplitViewControllerDelegate',
        +            'UIStateRestoring', 'UITabBarControllerDelegate', 'UITabBarDelegate', 'UITableViewDataSource', 'UITableViewDelegate',
        +            'UITextDocumentProxy', 'UITextFieldDelegate', 'UITextInput', 'UITextInputDelegate', 'UITextInputTokenizer', 'UITextInputTraits',
        +            'UITextViewDelegate', 'UIToolbarDelegate', 'UITraitEnvironment', 'UIVideoEditorControllerDelegate',
        +            'UIViewControllerAnimatedTransitioning', 'UIViewControllerContextTransitioning', 'UIViewControllerInteractiveTransitioning',
        +            'UIViewControllerRestoration', 'UIViewControllerTransitionCoordinator', 'UIViewControllerTransitionCoordinatorContext',
        +            'UIViewControllerTransitioningDelegate', 'UIWebViewDelegate'
        +        ),
        +        /*
        +        ** AppKit Classes
        +        **
        +        */
        +        15 => array(
        +            'NSAccessibilityElement', 'NSAlert', 'NSAnimation', 'NSViewAnimation', 'NSAnimationContext', 'NSAppearance',
        +            'NSBezierPath', 'NSCell', 'NSActionCell', 'NSButtonCell', 'NSMenuItemCell', 'NSPopUpButtonCell', 'NSDatePickerCell', 'NSFormCell',
        +            'NSLevelIndicatorCell', 'NSPathCell', 'NSSegmentedCell', 'NSSliderCell', 'NSStepperCell', 'NSTextFieldCell', 'NSComboBoxCell',
        +            'NSPathComponentCell', 'NSSearchFieldCell', 'NSSecureTextFieldCell', 'NSTableHeaderCell', 'NSTokenFieldCell', 'NSBrowserCell',
        +            'NSImageCell', 'NSTextAttachmentCell', 'NSColor', 'NSColorList', 'NSColorPicker', 'NSColorSpace', 'NSController', 'NSObjectController',
        +            'NSArrayController', 'NSDictionaryController', 'NSTreeController', 'NSUserDefaultsController', 'NSCursor', 'NSDockTile',
        +            'NSDocument', 'NSPersistentDocument', 'NSDocumentController', 'NSDraggingImageComponent', 'NSDraggingItem', 'NSDraggingSession',
        +            'NSEvent', 'NSFont', 'NSFontCollection', 'NSMutableFontCollection', 'NSFontDescriptor', 'NSFontManager', 'NSGestureRecognizer',
        +            'NSClickGestureRecognizer', 'NSMagnificationGestureRecognizer', 'NSPanGestureRecognizer', 'NSPressGestureRecognizer',
        +            'NSRotationGestureRecognizer', 'NSGlyphGenerator', 'NSGlyphInfo', 'NSGradient', 'NSGraphicsContext', 'NSHelpManager', 'NSImage',
        +            'NSImageRep', 'NSBitmapImageRep', 'NSCachedImageRep', 'NSCIImageRep', 'NSCustomImageRep', 'NSEPSImageRep', 'NSPDFImageRep',
        +            'NSPICTImageRep', 'NSInputManager', 'NSInputServer', 'NSMediaLibraryBrowserController',
        +            'NSMenu', 'NSMenuItem', 'NSMovie', 'NSNib', 'NSNibConnector', 'NSNibControlConnector', 'NSNibOutletConnector', 'NSOpenGLContext',
        +            'NSOpenGLPixelBuffer', 'NSOpenGLPixelFormat', 'NSPageLayout', 'NSPasteboard',
        +            'NSPasteboardItem', 'NSPathControlItem', 'NSPDFInfo', 'NSPDFPanel', 'NSPredicateEditorRowTemplate', 'NSPrinter', 'NSPrintInfo',
        +            'NSPrintOperation', 'NSPrintPanel', 'NSResponder', 'NSApplication', 'NSDrawer', 'NSPopover', 'NSView', 'NSBox', 'NSClipView',
        +            'NSCollectionView', 'NSControl', 'NSBrowser', 'NSButton', 'NSPopUpButton', 'NSStatusBarButton', 'NSColorWell', 'NSDatePicker',
        +            'NSImageView', 'NSLevelIndicator', 'NSMatrix', 'NSForm', 'NSPathControl', 'NSRuleEditor', 'NSPredicateEditor', 'NSScroller',
        +            'NSSegmentedControl', 'NSSlider', 'NSStepper', 'NSTableView', 'NSOutlineView', 'NSTextField', 'NSComboBox', 'NSSearchField',
        +            'NSSecureTextField', 'NSTokenField', 'NSMenuView', 'NSMovieView', 'NSOpenGLView', 'NSProgressIndicator', 'NSQuickDrawView',
        +            'NSRulerView', 'NSScrollView', 'NSSplitView', 'NSStackView', 'NSTableCellView', 'NSTableHeaderView', 'NSTableRowView', 'NSTabView',
        +            'NSText', 'NSTextView', 'NSVisualEffectView', 'NSViewController', 'NSCollectionViewItem', 'NSPageController',
        +            'NSSplitViewController', 'NSTabViewController', 'NSTitlebarAccessoryViewController', 'NSWindow', 'NSPanel', 'NSColorPanel',
        +            'NSFontPanel', 'NSSavePanel', 'NSOpenPanel', 'NSWindowController', 'NSRulerMarker', 'NSRunningApplication', 'NSScreen',
        +            'NSSharingService', 'NSSharingServicePicker', 'NSSound', 'NSSpeechRecognizer', 'NSSpeechSynthesizer', 'NSSpellChecker',
        +            'NSSplitViewItem', 'NSStatusBar', 'NSStatusItem', 'NSStoryboard', 'NSStoryboardSegue', 'NSTableColumn', 'NSTabViewItem',
        +            'NSTextAlternatives', 'NSTextBlock', 'NSTextTable', 'NSTextTableBlock', 'NSTextFinder',
        +            'NSTextInputContext', 'NSTextList', 'NSToolbar', 'NSToolbarItem', 'NSToolbarItemGroup', 'NSTouch', 'NSTrackingArea',
        +            'NSTreeNode', 'NSTypesetter', 'NSATSTypesetter', 'NSWorkspace', 'CAOpenGLLayer',
        +            'NSOpenGLLayer'
        +        ),
        +        /*
        +        ** AppKit Protocols
        +        **
        +        */
        +        16 => array(
        +            'NSAccessibility', 'NSAccessibility Informal', 'NSAccessibilityButton', 'NSAccessibilityCheckBox',
        +            'NSAccessibilityContainsTransientUI', 'NSAccessibilityGroup', 'NSAccessibilityImage',
        +            'NSAccessibilityLayoutArea', 'NSAccessibilityLayoutItem', 'NSAccessibilityList', 'NSAccessibilityNavigableStaticText',
        +            'NSAccessibilityOutline', 'NSAccessibilityProgressIndicator', 'NSAccessibilityRadioButton', 'NSAccessibilityRow',
        +            'NSAccessibilitySlider', 'NSAccessibilityStaticText', 'NSAccessibilityStepper', 'NSAccessibilitySwitch', 'NSAccessibilityTable',
        +            'NSAlertDelegate', 'NSAnimatablePropertyContainer', 'NSAnimationDelegate', 'NSAppearanceCustomization', 'NSApplicationDelegate',
        +            'NSBrowserDelegate', 'NSChangeSpelling', 'NSCollectionViewDelegate', 'NSColorPickingCustom', 'NSColorPickingDefault',
        +            'NSComboBoxCellDataSource', 'NSComboBoxDataSource', 'NSComboBoxDelegate', 'NSControlTextEditingDelegate',
        +            'NSDatePickerCellDelegate', 'NSDictionaryControllerKeyValuePair', 'NSDraggingDestination', 'NSDraggingInfo', 'NSDraggingSource',
        +            'NSDrawerDelegate', 'NSEditor', 'NSEditorRegistration', 'NSFontPanelValidation', 'NSGestureRecognizerDelegate', 'NSGlyphStorage',
        +            'NSIgnoreMisspelledWords', 'NSImageDelegate', 'NSKeyValueBindingCreation', 'NSLayerDelegateContentsScaleUpdating',
        +            'NSMatrixDelegate', 'NSMenuDelegate', 'NSMenuValidation', 'NSNibAwaking', 'NSOpenSavePanelDelegate',
        +            'NSOutlineViewDataSource', 'NSOutlineViewDelegate', 'NSPageControllerDelegate', 'NSPasteboardItemDataProvider',
        +            'NSPasteboardReading', 'NSPasteboardWriting', 'NSPathCellDelegate', 'NSPathControlDelegate', 'NSPlaceholders', 'NSPopoverDelegate',
        +            'NSPrintPanelAccessorizing', 'NSRuleEditorDelegate', 'NSSeguePerforming', 'NSServicesMenuRequestor', 'NSSharingServiceDelegate',
        +            'NSSharingServicePickerDelegate', 'NSSoundDelegate', 'NSSpeechRecognizerDelegate', 'NSSpeechSynthesizerDelegate',
        +            'NSSplitViewDelegate', 'NSStackViewDelegate', 'NSTabViewDelegate', 'NSTableViewDataSource', 'NSTableViewDelegate',
        +            'NSTextDelegate', 'NSTextFieldDelegate', 'NSTextFinderBarContainer', 'NSTextFinderClient', 'NSTextInput',
        +            'NSTextInputClient', 'NSTextViewDelegate',
        +            'NSTokenFieldCellDelegate', 'NSTokenFieldDelegate', 'NSToolTipOwner', 'NSToolbarDelegate', 'NSToolbarItemValidation',
        +            'NSUserInterfaceItemIdentification', 'NSUserInterfaceItemSearchDataSource', 'NSUserInterfaceItemSearching',
        +            'NSUserInterfaceValidations', 'NSValidatedUserInterfaceItem', 'NSViewControllerPresentationAnimator', 'NSWindowDelegate',
        +            'NSWindowRestoration', 'NSWindowScripting'
        +        )
        +    ),
        +    'SYMBOLS' => array(
        +        # Operators
        +        1 => array(
        +            '!=', '!==', '%', '%=', '&', '&&', '&*', '&+', '&-', '&=', '*', '*=', '+', '++', '+=', '-', '--', '-=', '...', '..<', '/',
        +            '/=', '<', '<<', '<<=', '<=', '==', '===', '>', '>=', '>>', '>>=', '??', '^', '^=', '|', '|=', '||', '~=', '~>', '!', '~'
        +        ),
        +        # Structure
        +        2 => array(
        +            '(', ')', '[', ']', '{', '}', ',', ';', ':'
        +        )
        +    ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true,
        +        8 => true,
        +        9 => true,
        +        10 => true,
        +        11 => true,
        +        12 => true,
        +        13 => true,
        +        14 => true,
        +        15 => true,
        +        16 => true,
        +    ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #B833A1;',                        // Keywords
        +            2 => 'color: #B833A1;',                        // Attributes
        +            3 => 'color: #508187;',                        // Builtin Functions
        +            4 => 'color: #6F41A7;',                        // Types
        +            5 => 'color: #6F41A7;',
        +            6 => 'color: #6F41A7;',
        +            7 => 'color: #6F41A7;',
        +            8 => 'color: #6F41A7;',
        +            9 => 'color: #6F41A7;',
        +            10 => 'color: #6F41A7;',
        +            11 => 'color: #6F41A7;',
        +            12 => 'color: #6F41A7;',
        +            13 => 'color: #6F41A7;',
        +            14 => 'color: #6F41A7;',
        +            15 => 'color: #6F41A7;',
        +            16 => 'color: #6F41A7;'
        +        ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008312;',
        +            'MULTI' => 'color: #008312;'
        +        ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #C41A16;'
        +        ),
        +        'BRACKETS' => array(
        +            0 => 'color: black;'
        +        ),
        +        'STRINGS' => array(
        +            0 => 'color: #C41A16;'
        +        ),
        +        'NUMBERS' => array(
        +            0 => 'color: #1C00CF;',
        +            1 => 'color: #1C00CF;',
        +            2 => 'color: #1C00CF;',
        +            3 => 'color: #1C00CF;',
        +        ),
        +        'METHODS' => array(
        +            1 => 'color: #508187;'
        +        ),
        +        'SYMBOLS' => array(
        +            0 => 'color: black;'
        +        ),
        +        'REGEXPS' => array(),
        +        'SCRIPT' => array()
        +    ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => '',
        +        7 => '',
        +        8 => '',
        +        9 => '',
        +        10 => '',
        +        11 => '',
        +        12 => '',
        +        13 => '',
        +        14 => '',
        +        15 => '',
        +        16 => '',
        +    ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +    ),
        +    'REGEXPS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/systemverilog.php b/includes/geshi/systemverilog.php
        new file mode 100644
        index 0000000..125b8c1
        --- /dev/null
        +++ b/includes/geshi/systemverilog.php
        @@ -0,0 +1,315 @@
        +.
        + *
        + ************************************************************************
        + * Title:        SystemVerilog Language Keywords File for GeSHi
        + * Description:  This file contains the SV keywords defined in the
        + *               IEEE1800-2009 Draft Standard in the format expected by
        + *               GeSHi.
        + *
        + * Original Author: Sean O'Boyle
        + * Contact:         seanoboyle@intelligentdv.com
        + * Company:         Intelligent Design Verification
        + * Company URL:     http://intelligentdv.com
        + *
        + * Download the most recent version here:
        + *                  http://intelligentdv.com/downloads
        + *
        + * File Bugs Here:  http://bugs.intelligentdv.com
        + *        Project:  SyntaxFiles
        + *
        + * File: systemverilog.php
        + * $LastChangedBy$
        + * $LastChangedDate$
        + * $LastChangedRevision$
        + *
        + ************************************************************************/
        +
        +$language_data = array (
        +    'LANG_NAME' => 'SystemVerilog',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        // system tasks
        +        1 => array(
        +            'acos','acosh','asin','asinh','assertfailoff','assertfailon',
        +            'assertkill','assertnonvacuouson','assertoff','asserton',
        +            'assertpassoff','assertpasson','assertvacuousoff','async$and$array',
        +            'async$and$plane','async$nand$array','async$nand$plane',
        +            'async$nor$array','async$nor$plane','async$or$array',
        +            'async$or$plane','atan','atan2','atanh','bits','bitstoreal',
        +            'bitstoshortreal','cast','ceil','changed','changed_gclk',
        +            'changing_gclk','clog2','cos','cosh','countones','coverage_control',
        +            'coverage_get','coverage_get_max','coverage_merge','coverage_save',
        +            'dimensions','display','displayb','displayh','displayo',
        +            'dist_chi_square','dist_erlang','dist_exponential','dist_normal',
        +            'dist_poisson','dist_t','dist_uniform','dumpall','dumpfile',
        +            'dumpflush','dumplimit','dumpoff','dumpon','dumpports',
        +            'dumpportsall','dumpportsflush','dumpportslimit','dumpportsoff',
        +            'dumpportson','dumpvars','error','exit','exp','falling_gclk',
        +            'fclose','fdisplay','fdisplayb','fdisplayh','fdisplayo','fell',
        +            'fell_gclk','feof','ferror','fflush','fgetc','fgets','finish',
        +            'floor','fmonitor','fmonitorb','fmonitorh','fmonitoro','fopen',
        +            'fread','fscanf','fseek','fstrobe','fstrobeb','fstrobeh','fstrobeo',
        +            'ftell','future_gclk','fwrite','fwriteb','fwriteh','fwriteo',
        +            'get_coverage','high','hypot','increment','info','isunbounded',
        +            'isunknown','itor','left','ln','load_coverage_db','log10','low',
        +            'monitor','monitorb','monitorh','monitoro','monitoroff','monitoron',
        +            'onehot','onehot0','past','past_gclk','pow','printtimescale',
        +            'q_add','q_exam','q_full','q_initialize','q_remove','random',
        +            'readmemb','readmemh','realtime','realtobits','rewind','right',
        +            'rising_gclk','rose','rose_gclk','rtoi','sampled',
        +            'set_coverage_db_name','sformat','sformatf','shortrealtobits',
        +            'signed','sin','sinh','size','sqrt','sscanf','stable','stable_gclk',
        +            'steady_gclk','stime','stop','strobe','strobeb','strobeh','strobeo',
        +            'swrite','swriteb','swriteh','swriteo','sync$and$array',
        +            'sync$and$plane','sync$nand$array','sync$nand$plane',
        +            'sync$nor$array','sync$nor$plane','sync$or$array','sync$or$plane',
        +            'system','tan','tanh','test$plusargs','time','timeformat',
        +            'typename','ungetc','unpacked_dimensions','unsigned',
        +            'value$plusargs','warning','write','writeb','writeh','writememb',
        +            'writememh','writeo',
        +            ),
        +        // compiler directives
        +        2 => array(
        +            '`__FILE__', '`__LINE__', '`begin_keywords', '`case', '`celldefine',
        +            '`endcelldefine', '`default_nettype', '`define', '`default', '`else',
        +            '`elsif', '`end_keywords', '`endfor', '`endif',
        +            '`endprotect', '`endswitch', '`endwhile', '`for', '`format',
        +            '`if', '`ifdef', '`ifndef', '`include', '`let',
        +            '`line', '`nounconnected_drive', '`pragma', '`protect', '`resetall',
        +            '`switch', '`timescale', '`unconnected_drive', '`undef', '`undefineall',
        +            '`while'
        +            ),
        +        // keywords
        +        3 => array(
        +            'assert', 'assume', 'cover', 'expect', 'disable',
        +            'iff', 'binsof', 'intersect', 'first_match', 'throughout',
        +            'within', 'coverpoint', 'cross', 'wildcard', 'bins',
        +            'ignore_bins', 'illegal_bins', 'genvar', 'if', 'else',
        +            'unique', 'priority', 'matches', 'default', 'forever',
        +            'repeat', 'while', 'for', 'do', 'foreach',
        +            'break', 'continue', 'return', 'pulsestyle_onevent', 'pulsestyle_ondetect',
        +            'noshowcancelled', 'showcancelled', 'ifnone', 'posedge', 'negedge',
        +            'edge', 'wait', 'wait_order', 'timeunit', 'timeprecision',
        +            's', 'ms', 'us', 'ns',
        +            'ps', 'fs', 'step', 'new', 'extends',
        +            'this', 'super', 'protected', 'local', 'rand',
        +            'randc', 'bind', 'constraint', 'solve', 'before',
        +            'dist', 'inside', 'with', 'virtual', 'extern',
        +            'pure', 'forkjoin', 'design', 'instance', 'cell',
        +            'liblist', 'use', 'library', 'incdir', 'include',
        +            'modport', 'sync_accept_on', 'reject_on', 'accept_on',
        +            'sync_reject_on', 'restrict', 'let', 'until', 'until_with',
        +            'unique0', 'eventually', 's_until', 's_always', 's_eventually',
        +            's_nexttime', 's_until_with', 'global', 'untyped', 'implies',
        +            'weak', 'strong', 'nexttime'
        +            ),
        +        // block keywords
        +        4 => array(
        +            'begin', 'end', 'package', 'endpackage', 'macromodule',
        +            'module', 'endmodule', 'generate', 'endgenerate', 'program',
        +            'endprogram', 'class', 'endclass', 'function', 'endfunction',
        +            'case', 'casex', 'casez', 'randcase', 'endcase',
        +            'interface', 'endinterface', 'clocking', 'endclocking', 'task',
        +            'endtask', 'primitive', 'endprimitive', 'fork', 'join',
        +            'join_any', 'join_none', 'covergroup', 'endgroup', 'checker',
        +            'endchecker', 'property', 'endproperty', 'randsequence', 'sequence',
        +            'endsequence', 'specify', 'endspecify', 'config', 'endconfig',
        +            'table', 'endtable', 'initial', 'final', 'always',
        +            'always_comb', 'always_ff', 'always_latch', 'alias', 'assign',
        +            'force', 'release'
        +            ),
        +
        +        // types
        +        5 => array(
        +            'parameter', 'localparam', 'specparam', 'input', 'output',
        +            'inout', 'ref', 'byte', 'shortint', 'int',
        +            'integer', 'longint', 'time', 'bit', 'logic',
        +            'reg', 'supply0', 'supply1', 'tri', 'triand',
        +            'trior', 'trireg', 'tri0', 'tri1', 'wire',
        +            'uwire', 'wand', 'wor', 'signed', 'unsigned',
        +            'shortreal', 'real', 'realtime', 'type', 'void',
        +            'struct', 'union', 'tagged', 'const', 'var',
        +            'automatic', 'static', 'packed', 'vectored', 'scalared',
        +            'typedef', 'enum', 'string', 'chandle', 'event',
        +            'null', 'pullup', 'pulldown', 'cmos', 'rcmos',
        +            'nmos', 'pmos', 'rnmos', 'rpmos', 'and',
        +            'nand', 'or', 'nor', 'xor', 'xnor',
        +            'not', 'buf', 'tran', 'rtran', 'tranif0',
        +            'tranif1', 'rtranif0', 'rtranif1', 'bufif0', 'bufif1',
        +            'notif0', 'notif1', 'strong0', 'strong1', 'pull0',
        +            'pull1', 'weak0', 'weak1', 'highz0', 'highz1',
        +            'small', 'medium', 'large'
        +            ),
        +
        +        // DPI
        +        6 => array(
        +            'DPI', 'DPI-C', 'import', 'export', 'context'
        +            ),
        +
        +        // stdlib
        +        7 => array(
        +            'randomize', 'mailbox', 'semaphore', 'put', 'get',
        +            'try_put', 'try_get', 'peek', 'try_peek', 'process',
        +            'state', 'self', 'status', 'kill', 'await',
        +            'suspend', 'resume', 'size', 'delete', 'insert',
        +            'num', 'first', 'last', 'next', 'prev',
        +            'pop_front', 'pop_back', 'push_front', 'push_back', 'find',
        +            'find_index', 'find_first', 'find_last', 'find_last_index', 'min',
        +            'max', 'unique_index', 'reverse', 'sort', 'rsort',
        +            'shuffle', 'sum', 'product', 'List', 'List_Iterator',
        +            'neq', 'eq', 'data', 'empty', 'front',
        +            'back', 'start', 'finish', 'insert_range', 'erase',
        +            'erase_range', 'set', 'swap', 'clear', 'purge'
        +            ),
        +
        +        // key_deprecated
        +        8 => array(
        +            'defparam', 'deassign', 'TODO'
        +        ),
        +
        +        ),
        +    'SYMBOLS' => array(
        +            '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%',
        +            '^', '&', '|', '~',
        +            '?', ':',
        +            '#', '<<', '<<<',
        +            '>', '<', '>=', '<=',
        +            '@', ';', ','
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true,
        +        8 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #996666; font-weight: bold;',
        +            2 => 'color: #336600; font-weight: bold;',
        +            3 => 'color: #996600; font-weight: bold;',
        +            4 => 'color: #000033; font-weight: bold;',
        +            5 => 'color: #330033; font-weight: bold;',
        +            6 => 'color: #996600; font-weight: bold;',
        +            7 => 'color: #CC9900; font-weight: bold;',
        +            8 => 'color: #990000; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #00008B; font-style: italic;',
        +            'MULTI' => 'color: #00008B; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #9F79EE'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #9F79EE;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #FF00FF;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #ff0055;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #202020;',
        +            2 => 'color: #202020;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #5D478B;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #ff0055;',
        +            1 => 'color: #ff0055;',
        +            2 => 'color: #ff0055;',
        +            3 => 'color: #ff0055;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => '',
        +            2 => '',
        +            3 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => '',
        +        7 => '',
        +        8 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => ''
        +        ),
        +    'REGEXPS' => array(
        +        // integer
        +        0 => "\d'[bdh][0-9_a-fA-FxXzZ]+",
        +        // realtime
        +        1 => "\d*\.\d+[munpf]?s",
        +        // time s, ms, us, ns, ps, of fs
        +        2 => "\d+[munpf]?s",
        +        // real
        +        3 => "\d*\.\d+"
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        0 => ''
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => true
        +        ),
        +    'TAB_WIDTH' => 3,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            1 => array(
        +                'DISALLOWED_BEFORE' => '(?<=$)'
        +                )
        +            )
        +        )
        +);
        diff --git a/includes/geshi/tcl.php b/includes/geshi/tcl.php
        new file mode 100644
        index 0000000..697411f
        --- /dev/null
        +++ b/includes/geshi/tcl.php
        @@ -0,0 +1,192 @@
        + 'TCL',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(
        +        1 => '/(?:^|(?<=\{|;))\s*#(?:\\\\\\\\|\\\\\\n|.)*$/m',
        +        //2 => '/{[^}\n]+}/'
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        /*
        +         * Set 1: reserved words
        +         * http://python.org/doc/current/ref/keywords.html
        +         */
        +        1 => array(
        +            'proc', 'global', 'upvar', 'if', 'then', 'else', 'elseif', 'for', 'foreach',
        +            'break', 'continue', 'while', 'set', 'eval', 'case', 'in', 'switch',
        +            'default', 'exit', 'error', 'return', 'uplevel', 'loop',
        +            'for_array_keys', 'for_recursive_glob', 'for_file', 'unwind_protect',
        +            'expr', 'catch', 'namespace', 'rename', 'variable',
        +            // itcl
        +            'method', 'itcl_class', 'public', 'protected'),
        +
        +        /*
        +         * Set 2: builtins
        +         * http://asps.activatestate.com/ASPN/docs/ActiveTcl/8.4/tcl/tcl_2_contents.htm
        +         */
        +        2 => array(
        +            // string handling
        +            'append', 'binary', 'format', 're_syntax', 'regexp', 'regsub',
        +            'scan', 'string', 'subst',
        +            // list handling
        +            'concat', 'join', 'lappend', 'lindex', 'list', 'llength', 'lrange',
        +            'lreplace', 'lsearch', 'lset', 'lsort', 'split',
        +            // procedures and output
        +            'incr', 'close', 'eof', 'fblocked', 'fconfigure', 'fcopy', 'file',
        +            'fileevent', 'flush', 'gets', 'open', 'puts', 'read', 'seek',
        +            'socket', 'tell',
        +            // packages and source files
        +            'load', 'loadTk', 'package', 'pgk::create', 'pgk_mkIndex', 'source',
        +            // interpreter routines
        +            'bgerror', 'history', 'info', 'interp', 'memory', 'unknown',
        +            // library routines
        +            'enconding', 'http', 'msgcat',
        +            // system related
        +            'cd', 'clock', 'exec', 'glob', 'pid', 'pwd', 'time',
        +            // platform specified
        +            'dde', 'registry', 'resource',
        +            // special variables
        +            '$argc', '$argv', '$errorCode', '$errorInfo', '$argv0',
        +            '$auto_index', '$auto_oldpath', '$auto_path', '$env',
        +            '$tcl_interactive', '$tcl_libpath', '$tcl_library',
        +            '$tcl_pkgPath', '$tcl_platform', '$tcl_precision', '$tcl_traceExec',
        +            ),
        +
        +        /*
        +         * Set 3: standard library
        +         */
        +        3 => array(
        +            'comment', 'filename', 'library', 'packagens', 'tcltest', 'tclvars',
        +            ),
        +
        +        /*
        +         * Set 4: special methods
        +         */
        +//        4 => array(
        +//            )
        +
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}', '$', '*', '&', '%', '!', ';', '<', '>', '?'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +//        4 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #ff7700;font-weight:bold;',    // Reserved
        +            2 => 'color: #008000;',                        // Built-ins + self
        +            3 => 'color: #dc143c;',                        // Standard lib
        +//            4 => 'color: #0000cd;'                        // Special methods
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +//            2 => 'color: #483d8b;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: black;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #483d8b;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #ff4500;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: black;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #ff3333;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +//        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        //Special variables
        +        0 => '[\\$]+[a-zA-Z_][a-zA-Z0-9_]*',
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'COMMENTS' => array(
        +            'DISALLOWED_BEFORE' => '\\'
        +            )
        +        )
        +);
        diff --git a/includes/geshi/tclegg.php b/includes/geshi/tclegg.php
        new file mode 100644
        index 0000000..acaf7ff
        --- /dev/null
        +++ b/includes/geshi/tclegg.php
        @@ -0,0 +1,501 @@
        + 'TCLEGG',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(
        +        1 => '/(? '/{[^}\n]+}/'
        +    ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"', "'"),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        /*
        +         * Set 1: reserved words
        +         * http://python.org/doc/current/ref/keywords.html
        +         */
        +        1 => array(
        +            'break',
        +            'case',
        +            'catch',
        +            'continue',
        +            'default',
        +            'else',
        +            'elseif',
        +            'error',
        +            'eval',
        +            'exit',
        +            'expr',
        +            'for',
        +            'for_array_keys',
        +            'for_file',
        +            'for_recursive_glob',
        +            'foreach',
        +            'global',
        +            'if',
        +            'in',
        +            'itcl_class',
        +            'loop',
        +            'method',
        +            'namespace',
        +            'proc',
        +            'protected',
        +            'public',
        +            'rename',
        +            'return',
        +            'set',
        +            'switch',
        +            'then',
        +            'unwind_protect',
        +            'uplevel',
        +            'upvar',
        +            'variable',
        +            'while',
        +        ),
        +
        +        /*
        +         * Set 2: builtins
        +         * http://asps.activatestate.com/ASPN/docs/ActiveTcl/8.4/tcl/tcl_2_contents.htm
        +         */
        +        2 => array(
        +            // string handling
        +            'append', 'binary', 'format', 're_syntax', 'regexp', 'regsub',
        +            'scan', 'string', 'subst',
        +            // list handling
        +            'concat', 'join', 'lappend', 'lindex', 'list', 'llength', 'lrange',
        +            'lreplace', 'lsearch', 'lset', 'lsort', 'split',
        +            // procedures and output
        +            'incr', 'close', 'eof', 'fblocked', 'fconfigure', 'fcopy', 'file',
        +            'fileevent', 'flush', 'gets', 'open', 'puts', 'read', 'seek',
        +            'socket', 'tell',
        +            // packages and source files
        +            'load', 'loadTk', 'package', 'pgk::create', 'pgk_mkIndex', 'source',
        +            // interpreter routines
        +            'bgerror', 'history', 'info', 'interp', 'memory', 'unknown',
        +            // library routines
        +            'enconding', 'http', 'msgcat',
        +            // system related
        +            'cd', 'clock', 'exec', 'glob', 'pid', 'pwd', 'time',
        +            // platform specified
        +            'dde', 'registry', 'resource',
        +            // special variables
        +            '$argc', '$argv', '$errorCode', '$errorInfo', '$argv0',
        +            '$auto_index', '$auto_oldpath', '$auto_path', '$env',
        +            '$tcl_interactive', '$tcl_libpath', '$tcl_library',
        +            '$tcl_pkgPath', '$tcl_platform', '$tcl_precision', '$tcl_traceExec',
        +        ),
        +
        +        /*
        +         * Set 3: standard library
        +         * Replaced by binds
        +         */
        +        3 => array(
        +            //'comment', 'filename', 'library', 'packagens', 'tcltest', 'tclvars',
        +            'act',
        +            'away',
        +            'bcst',
        +            'bot',
        +            'chat',
        +            'chjn',
        +            'chof',
        +            'chon',
        +            'chpt',
        +            'cron',
        +            'ctcp',
        +            'ctcr',
        +            'dcc',
        +            'disc',
        +            'evnt',
        +            'fil',
        +            'filt',
        +            'flud',
        +            'kick',
        +            'link',
        +            'log',
        +            'lost',
        +            'mode',
        +            'msg',
        +            'msgm',
        +            'need',
        +            'nick',
        +            'nkch',
        +            'notc',
        +            'note',
        +            'out',
        +            'part',
        +            'pub',
        +            'pubm',
        +            'raw',
        +            'rcvd',
        +            'rejn',
        +            'sent',
        +            'sign',
        +            'splt',
        +            'topc',
        +            'tout',
        +            'unld',
        +            'wall',
        +        ),
        +
        +        /*
        +         * Set 4: tcl-commands (eggdrop dedicated)
        +         */
        +        4 => array(
        +            'addbot',
        +            'addchanrec',
        +            'adduser',
        +            'assoc',
        +
        +            'backup',
        +            'banlist',
        +            'bind',
        +            'binds',
        +            'boot',
        +            'botattr',
        +            'botishalfop',
        +            'botisop',
        +            'botisvoice',
        +            'botlist',
        +            'botonchan',
        +            'bots',
        +
        +            'callevent',
        +            'chanbans',
        +            'chanexempts',
        +            'chaninvites',
        +            'chanlist',
        +            'channel',
        +            'channels',
        +            'chansettype',
        +            'chattr',
        +            'chhandle',
        +            'clearqueue',
        +            'compressfile',
        +            'connect',
        +            'console',
        +            'control',
        +            'countusers',
        +            'cp',
        +            'ctime',
        +
        +            'dccbroadcast',
        +            'dccdumpfile',
        +            'dcclist',
        +            'dccputchan',
        +            'dccsend',
        +            'dccsimul',
        +            'dccused',
        +            'decrypt',
        +            'delchanrec',
        +            'delhost',
        +            'deludef',
        +            'deluser',
        +            'die',
        +            'dnslookup',
        +            'dumpfile',
        +            'duration',
        +
        +            'echo',
        +            'encpass',
        +            'encrypt',
        +            'erasenotes',
        +            'exemptlist',
        +
        +            'filesend',
        +            'finduser',
        +            'flushmode',
        +
        +            'getchan',
        +            'getchanhost',
        +            'getchanidle',
        +            'getchaninfo',
        +            'getchanjoin',
        +            'getchanmode',
        +            'getdccaway',
        +            'getdccidle',
        +            'getdesc',
        +            'getdirs',
        +            'getfileq',
        +            'getfiles',
        +            'getfilesendtime',
        +            'getflags',
        +            'getlink',
        +            'getowner',
        +            'getpwd',
        +            'getting',
        +            'getudefs',
        +            'getuser',
        +
        +            'hand',
        +            'handonchan',
        +
        +            'idx',
        +            'ignorelist',
        +            'invitelist',
        +            'isban',
        +            'isbansticky',
        +            'isbotnick',
        +            'ischanban',
        +            'ischanexempt',
        +            'ischaninvite',
        +            'ischanjuped',
        +            'iscompressed',
        +            'isdynamic',
        +            'isexempt',
        +            'isexemptsticky',
        +            'ishalfop',
        +            'isignore',
        +            'isinvite',
        +            'isinvitesticky',
        +            'islinked',
        +            'isop',
        +            'ispermban',
        +            'ispermexempt',
        +            'isperminvite',
        +            'isvoice',
        +
        +            'jump',
        +
        +            'killassoc',
        +            'killban',
        +            'killchanban',
        +            'killchanexempt',
        +            'killchaninvite',
        +            'killdcc',
        +            'killexempt',
        +            'killignore',
        +            'killinvite',
        +            'killtimer',
        +            'killutimer',
        +
        +            'listen',
        +            'listnotes',
        +            'loadchannels',
        +            'loadhelp',
        +            'loadmodule',
        +            'logfile',
        +
        +            'maskhost',
        +            'matchaddr',
        +            'matchattr',
        +            'matchban',
        +            'matchcidr',
        +            'matchexempt',
        +            'matchinvite',
        +            'matchstr',
        +            'md',
        +            'mkdir',
        +            'modules',
        +            'mv',
        +            'myip',
        +
        +            'newban',
        +            'newchanban',
        +            'newchanexempt',
        +            'newchaninvite',
        +            'newexempt',
        +            'newignore',
        +            'newinvite',
        +            'notes',
        +
        +            'onchan',
        +            'onchansplit',
        +
        +            'passwdok',
        +            'pushmode',
        +            'putallbots',
        +            'putbot',
        +            'putcmdlog',
        +            'putdcc',
        +            'puthelp',
        +            'putkick',
        +            'putlog',
        +            'putloglev',
        +            'putnow',
        +            'putquick',
        +            'putserv',
        +            'putxferlog',
        +
        +            'queuesize',
        +
        +            'rand',
        +            'rehash',
        +            'reload',
        +            'reloadhelp',
        +            'renudef',
        +            'resetbans',
        +            'resetchan',
        +            'resetchanidle',
        +            'resetchanjoin',
        +            'resetexempts',
        +            'resetinvites',
        +            'restart',
        +            'rmdir',
        +
        +            'save',
        +            'savechannels',
        +            'sendnote',
        +            'setchan',
        +            'setchaninfo',
        +            'setdccaway',
        +            'setdesc',
        +            'setflags',
        +            'setlink',
        +            'setowner',
        +            'setpwd',
        +            'setudef',
        +            'setuser',
        +            'stickban',
        +            'stickexempt',
        +            'stickinvite',
        +            'storenote',
        +            'strftime',
        +            'strip',
        +            'stripcodes',
        +
        +            'timer',
        +            'timers',
        +            'topic',
        +            'traffic',
        +
        +            'unames',
        +            'unbind',
        +            'uncompressfile',
        +            'unixtime',
        +            'unlink',
        +            'unloadhelp',
        +            'unloadmodule',
        +            'unstickban',
        +            'unstickexempt',
        +            'unstickinvite',
        +            'userlist',
        +            'utimer',
        +            'utimers',
        +
        +            'validchan',
        +            'valididx',
        +            'validuser',
        +
        +            'washalfop',
        +            'wasop',
        +            'whom',
        +        )
        +    ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}', '$', '*', '&', '%', '!', ';', '<', '>', '?'
        +    ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true
        +    ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #ff7700;font-weight:bold;',    // Reserved
        +            2 => 'color: #008000;',                        // Built-ins + self
        +            3 => 'color: #dc143c;',                        // Standard lib
        +            4 => 'color: #0000cd;'                        // Special methods
        +        ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +//            2 => 'color: #483d8b;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +        ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +        ),
        +        'BRACKETS' => array(
        +            0 => 'color: black;'
        +        ),
        +        'STRINGS' => array(
        +            0 => 'color: #483d8b;'
        +        ),
        +        'NUMBERS' => array(
        +            0 => 'color: #ff4500;'
        +        ),
        +        'METHODS' => array(
        +            1 => 'color: black;'
        +        ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +        ),
        +        'REGEXPS' => array(
        +            0 => 'color: #ff3333;'
        +        ),
        +        'SCRIPT' => array()
        +    ),
        +    'URLS' => array(
        +        1 => 'http://wiki.tcl.tk/{FNAMEL}',
        +        2 => 'http://wiki.tcl.tk/{FNAMEUF}',
        +        3 => 'http://wiki.eggdrop.fr/Binds#{FNAMEU}',
        +        4 => 'http://wiki.eggdrop.fr/{FNAMEUF}'
        +    ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '::'
        +    ),
        +    'REGEXPS' => array(
        +        //Special variables
        +        0 => '[\\$]+[a-zA-Z_][a-zA-Z0-9_]*',
        +    ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(),
        +    'PARSER_CONTROL' => array(
        +        'COMMENTS' => array(
        +            'DISALLOWED_BEFORE' => '\\'
        +        )
        +    )
        +);
        diff --git a/includes/geshi/teraterm.php b/includes/geshi/teraterm.php
        new file mode 100644
        index 0000000..2a4b412
        --- /dev/null
        +++ b/includes/geshi/teraterm.php
        @@ -0,0 +1,352 @@
        + 'Tera Term Macro',
        +    'COMMENT_SINGLE' => array(1 => ';'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        /* Commands */
        +        1 => array(
        +            'Beep',
        +            'BplusRecv',
        +            'BplusSend',
        +            'Break',
        +            'Call',
        +            'CallMenu',
        +            'ChangeDir',
        +            'ClearScreen',
        +            'Clipb2Var',
        +            'ClosesBox',
        +            'CloseTT',
        +            'Code2Str',
        +            'Connect',
        +            'CRC32',
        +            'CRC32File',
        +            'CygConnect',
        +            'DelPassword',
        +            'Disconnect',
        +            'DispStr',
        +            'Do',
        +            'Else',
        +            'ElseIf',
        +            'EnableKeyb',
        +            'End',
        +            'EndIf',
        +            'EndUntil',
        +            'EndWhile',
        +            'Exec',
        +            'ExecCmnd',
        +            'Exit',
        +            'FileClose',
        +            'FileConcat',
        +            'FileCopy',
        +            'FileCreate',
        +            'FileDelete',
        +            'FileMarkPtr',
        +            'FileNameBox',
        +            'FileOpen',
        +            'FileRead',
        +            'FileReadln',
        +            'FileRename',
        +            'FileSearch',
        +            'FileSeek',
        +            'FileSeekBack',
        +            'FileStat',
        +            'FileStrSeek',
        +            'FileStrSeek2',
        +            'FileTruncate',
        +            'FileWrite',
        +            'FileWriteLn',
        +            'FindClose',
        +            'FindFirst',
        +            'FindNext',
        +            'FlushRecv',
        +            'For',
        +            'GetDate',
        +            'GetDir',
        +            'GetEnv',
        +            'GetHostname',
        +            'GetPassword',
        +            'GetTime',
        +            'GetTitle',
        +            'GetTTDir',
        +            'Getver',
        +            'GoTo',
        +            'If',
        +            'IfDefined',
        +            'Include',
        +            'InputBox',
        +            'Int2Str',
        +            'KmtFinish',
        +            'KmtGet',
        +            'KmtRecv',
        +            'KmtSend',
        +            'LoadKeymap',
        +            'LogClose',
        +            'LogOpen',
        +            'LogPause',
        +            'LogStart',
        +            'LogWrite',
        +            'Loop',
        +            'MakePath',
        +            'MessageBox',
        +            'MPause',
        +            'Next',
        +            'PasswordBox',
        +            'Pause',
        +            'QuickVANRecv',
        +            'QuickVANSend',
        +            'Random',
        +            'RecvLn',
        +            'RestoreSetup',
        +            'Return',
        +            'RotateLeft',
        +            'RotateRight',
        +            'ScpRecv',
        +            'ScpSend',
        +            'Send',
        +            'SendBreak',
        +            'SendBroadcast',
        +            'SendFile',
        +            'SendKCode',
        +            'SendLn',
        +            'SendLnBroadcast',
        +            'SendMulticast',
        +            'SetBaud',
        +            'SetDate',
        +            'SetDebug',
        +            'SetDir',
        +            'SetDlgPos',
        +            'SetDTR',
        +            'SetEcho',
        +            'SetEnv',
        +            'SetExitCode',
        +            'SetMulticastName',
        +            'SetRTS',
        +            'SetSync',
        +            'SetTime',
        +            'SetTitle',
        +            'Show',
        +            'ShowTT',
        +            'SPrintF',
        +            'SPrintF2',
        +            'StatusBox',
        +            'Str2Code',
        +            'Str2Int',
        +            'StrCompare',
        +            'StrConcat',
        +            'StrCopy',
        +            'StrInsert',
        +            'StrJoin',
        +            'StrLen',
        +            'StrMatch',
        +            'StrRemove',
        +            'StrReplace',
        +            'StrScan',
        +            'StrSpecial',
        +            'StrSplit',
        +            'StrTrim',
        +            'TestLink',
        +            'Then',
        +            'ToLower',
        +            'ToUpper',
        +            'UnLink',
        +            'Until',
        +            'Var2Clipb',
        +            'Wait',
        +            'Wait4All',
        +            'WaitEvent',
        +            'WaitLn',
        +            'WaitN',
        +            'WaitRecv',
        +            'WaitRegEx',
        +            'While',
        +            'XmodemRecv',
        +            'XmodemSend',
        +            'YesNoBox',
        +            'YmodemRecv',
        +            'YmodemSend',
        +            'ZmodemRecv',
        +            'ZmodemSend'
        +            ),
        +        /* System Variables */
        +        2 => array(
        +            'groupmatchstr1',
        +            'groupmatchstr2',
        +            'groupmatchstr3',
        +            'groupmatchstr4',
        +            'groupmatchstr5',
        +            'groupmatchstr6',
        +            'groupmatchstr7',
        +            'groupmatchstr8',
        +            'groupmatchstr9',
        +            'inputstr',
        +            'matchstr',
        +            'mtimeout',
        +            'param2',
        +            'param3',
        +            'param4',
        +            'param5',
        +            'param6',
        +            'param7',
        +            'param8',
        +            'param9',
        +            'result',
        +            'timeout'
        +            ),
        +        /* LogMeTT Key Words */
        +        3 => array(
        +            '$[1]',
        +            '$[2]',
        +            '$[3]',
        +            '$[4]',
        +            '$[5]',
        +            '$[6]',
        +            '$[7]',
        +            '$[8]',
        +            '$[9]',
        +            '$branch$',
        +            '$computername$',
        +            '$connection$',
        +            '$email$',
        +            '$logdir$',
        +            '$logfilename$',
        +            '$lttfilename$',
        +            '$mobile$',
        +            '$name$',
        +            '$pager$',
        +            '$parent$',
        +            '$phone$',
        +            '$snippet$',
        +            '$ttdir$',
        +            '$user$',
        +            '$windir$',
        +        ),
        +        /* Keyword Symbols */
        +        4 => array(
        +            'and',
        +            'not',
        +            'or',
        +            'xor'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}',
        +        '+', '-', '*', '/', '%',
        +        '!', '&', '|', '^',
        +        '<', '>', '=',
        +        '?', ':', ';',
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000080; font-weight: bold!important;',
        +            2 => 'color: #808000; font-weight: bold;',  // System Variables
        +            3 => 'color: #ff0000; font-weight: bold;',  // LogMeTT Key Words
        +            4 => 'color: #ff00ff; font-weight: bold;'   // Keyword Symbols
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008000; font-style: italic;',
        +            ),
        +        'ESCAPE_CHAR' => array(),
        +        'BRACKETS' => array(
        +            0 => 'color: #ff00ff; font-weight: bold;'
        +        ),
        +        'STRINGS' => array(
        +            0 => 'color: #800080;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #008080;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #ff00ff; font-weight: bold;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #0000ff; font-weight: bold;'
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(
        +        0 => array (
        +            GESHI_SEARCH => '(\:[_a-zA-Z][_a-zA-Z0-9]+)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            )
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/texgraph.php b/includes/geshi/texgraph.php
        new file mode 100644
        index 0000000..0ba5e24
        --- /dev/null
        +++ b/includes/geshi/texgraph.php
        @@ -0,0 +1,1137 @@
        + 'TeXgraph',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array(
        +        '{'=>'}'
        +    ),
        +    'COMMENT_REGEXP' => array(
        +    ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array( //file construction
        +            'TeXgraph', 'Cmd', 'Var', 'Mac', 'Graph', 'Include'
        +        ),
        +        2 => array( //programmation structure
        +            'if', 'else', 'elif',  'fi',
        +            'for', 'do', 'od', 'by', 'By',
        +            'step', 'until', 'in', 'to', 'repeat', 'from', 'odfi', 'andif',
        +            'And', 'Or', 'CutA', 'CutB', 'Inside', 'Inter', 'InterL'
        +        ),
        +        3 => array( // commandes prédéfinies
        +            'Aretes',
        +            'Arg',
        +            'Args',
        +            'Assign',
        +            'Axes',
        +            'Bezier',
        +            'Bord',
        +            'Border',
        +            'Build3D',
        +            'Cartesienne',
        +            'ChangeAttr',
        +            'Clip2D',
        +            'Clip3DLine',
        +            'ClipFacet',
        +            'Close',
        +            'CloseFile',
        +            'ComposeMatrix',
        +            'ComposeMatrix3D',
        +            'Concat',
        +            'ConvertToObj',
        +            'ConvertToObjN',
        +            'Copy',
        +            'Courbe',
        +            'Creer',
        +            'DefMac',
        +            'DefVar',
        +            'DefaultAttr',
        +            'Del',
        +            'DelGraph',
        +            'DelMac',
        +            'DelVar',
        +            'Der',
        +            'Diff',
        +            'Display3D',
        +            'DistCam',
        +            'Droite',
        +            'Dup',
        +            'Echange',
        +            'Ellipse',
        +            'EllipticArc',
        +            'Ent',
        +            'EpsCoord',
        +            'EquaDif',
        +            'Eval',
        +            'Exec',
        +            'Export',
        +            'ExportObject',
        +            'ExportPathData',
        +            'Fenetre',
        +            'FileExists',
        +            'For',
        +            'Free',
        +            'Fvisible',
        +            'Get',
        +            'Get3D',
        +            'GetAttr',
        +            'GetMatrix',
        +            'GetMatrix3D',
        +            'GetSpline',
        +            'GetStr',
        +            'GetSurface',
        +            'GrayScale',
        +            'Grille',
        +            'HexaColor',
        +            'IdMatrix',
        +            'IdMatrix3D',
        +            'Im',
        +            'Implicit',
        +            'Inc',
        +            'Input',
        +            'InputMac',
        +            'Inserer3D',
        +            'Insert',
        +            'Int',
        +            'IsMac',
        +            'IsString',
        +            'IsVar',
        +            'Label',
        +            'Ligne',
        +            'Liste',
        +            'Load',
        +            'LoadImage',
        +            'Loop',
        +            'LowerCase',
        +            'M',
        +            'MakePoly',
        +            'Map',
        +            'Marges',
        +            'Merge',
        +            'Message',
        +            'Mix',
        +            'ModelView',
        +            'Mtransform',
        +            'Mtransform3D',
        +            'MyExport',
        +            'Nargs',
        +            'NewGraph',
        +            'NewMac',
        +            'NewVar',
        +            'Nops',
        +            'Norm',
        +            'Normal',
        +            'OpenFile',
        +            'OriginalCoord',
        +            'PaintFacet',
        +            'PaintVertex',
        +            'Path',
        +            'PermuteWith',
        +            'Point',
        +            'Polaire',
        +            'PosCam',
        +            'Prodscal',
        +            'Prodvec',
        +            'Proj3D',
        +            'Rand',
        +            'Re',
        +            'ReCalc',
        +            'ReadData',
        +            'ReadFlatPs',
        +            'ReadObj',
        +            'RenCommand',
        +            'RenMac',
        +            'RestoreAttr',
        +            'Reverse',
        +            'Rgb',
        +            'Round',
        +            'Saut',
        +            'SaveAttr',
        +            'ScientificF',
        +            'Seq',
        +            'Set',
        +            'SetAttr',
        +            'SetMatrix',
        +            'SetMatrix3D',
        +            'Si',
        +            'Solve',
        +            'Sommets',
        +            'Sort',
        +            'SortFacet',
        +            'Special',
        +            'Spline',
        +            'Str',
        +            'StrArgs',
        +            'StrComp',
        +            'StrCopy',
        +            'StrDel',
        +            'StrEval',
        +            'StrLength',
        +            'StrPos',
        +            'StrReplace',
        +            'String',
        +            'TeX2FlatPs',
        +            'UpperCase',
        +            'While',
        +            'WriteFile',
        +            'abs',
        +            'arccos',
        +            'arccot',
        +            'arcsin',
        +            'arctan',
        +            'argch',
        +            'argcth',
        +            'argsh',
        +            'argth',
        +            'bar',
        +            'ch',
        +            'cos',
        +            'cot',
        +            'cth',
        +            'draw',
        +            'opp',
        +            'sh',
        +            'sin',
        +            'sqr',
        +            'sqrt',
        +            'tan',
        +            'th',
        +        ),
        +        4 => array( //commandes relatives à l'interface graphique
        +            'AddMenu2D',
        +            'AddMenu3D',
        +            'Attributs',
        +            'DelBitmap',
        +            'DelButton',
        +            'DelItem',
        +            'DelText',
        +            'Delay',
        +            'Hide',
        +            'ListFiles',
        +            'ListWords',
        +            'MaxPixels',
        +            'Move',
        +            'NewBitmap',
        +            'NewButton',
        +            'NewItem',
        +            'NewText',
        +            'NotXor',
        +            'Pixel',
        +            'Pixel2Scr',
        +            'ReDraw',
        +            'Scr2Pixel',
        +            'Show',
        +            'Stroke',
        +            'Timer',
        +            'TimerMac',
        +            'UpdateLocalDatabase',
        +            'VisibleGraph',
        +        ),
        +        5 => array( //constantes prédéfinies
        +            'Data',
        +            'Diese',
        +            'DirSep',
        +            'DocPath',
        +            'ExportMode',
        +            'GUI',
        +            'Huge',
        +            'ImageViewer',
        +            'InitialPath',
        +            'JavaviewPath',
        +            'LARGE',
        +            'LF',
        +            'Large',
        +            'Nil',
        +            'PdfReader',
        +            'Thicklines',
        +            'TmpPath',
        +            'UserMacPath',
        +            'WebLoad',
        +            'Windows',
        +            'Xmax',
        +            'Xmin',
        +            'Xscale',
        +            'Ymax',
        +            'Ymin',
        +            'Yscale',
        +            'aliceblue',
        +            'antiquewhite',
        +            'aqua',
        +            'aquamarine',
        +            'asterisk',
        +            'azure',
        +            'baseline',
        +            'bdiag',
        +            'beige',
        +            'bevel',
        +            'bezier',
        +            'bigdot',
        +            'bisque',
        +            'black',
        +            'blanchedalmond',
        +            'blue',
        +            'blueviolet',
        +            'bmp',
        +            'bottom',
        +            'brown',
        +            'burlywood',
        +            'butt',
        +            'cadetblue',
        +            'center',
        +            'centered',
        +            'central',
        +            'chartreuse',
        +            'chocolate',
        +            'circle',
        +            'closepath',
        +            'comp',
        +            'coral',
        +            'cornflowerblue',
        +            'cornsilk',
        +            'crimson',
        +            'cross',
        +            'curve',
        +            'cyan',
        +            'darkblue',
        +            'darkcyan',
        +            'darkgoldenrod',
        +            'darkgray',
        +            'darkgreen',
        +            'darkkhaki',
        +            'darkmagenta',
        +            'darkolivegreen',
        +            'darkorange',
        +            'darkorchid',
        +            'darkred',
        +            'darksalmon',
        +            'darkseagreen',
        +            'darkslateblue',
        +            'darkslategray',
        +            'darkturquoise',
        +            'darkviolet',
        +            'dashed',
        +            'deeppink',
        +            'deepskyblue',
        +            'diagcross',
        +            'diamond',
        +            'dimgray',
        +            'dodgerblue',
        +            'dot',
        +            'dotcircle',
        +            'dotted',
        +            'e',
        +            'ellipse',
        +            'ellipticArc',
        +            'eps',
        +            'epsc',
        +            'fdiag',
        +            'firebrick',
        +            'floralwhite',
        +            'footnotesize',
        +            'forestgreen',
        +            'framed',
        +            'fuchsia',
        +            'full',
        +            'gainsboro',
        +            'geom',
        +            'ghostwhite',
        +            'gold',
        +            'goldenrod',
        +            'gray',
        +            'green',
        +            'greenyellow',
        +            'honeydew',
        +            'horizontal',
        +            'hotpink',
        +            'huge',
        +            'hvcross',
        +            'i',
        +            'indianred',
        +            'indigo',
        +            'ivory',
        +            'jump',
        +            'jvx',
        +            'khaki',
        +            'large',
        +            'lavender',
        +            'lavenderblush',
        +            'lawngreen',
        +            'left',
        +            'lemonchiffon',
        +            'lightblue',
        +            'lightcoral',
        +            'lightcyan',
        +            'lightgoldenrodyellow',
        +            'lightgray',
        +            'lightgreen',
        +            'lightpink',
        +            'lightsalmon',
        +            'lightseagreen',
        +            'lightskyblue',
        +            'lightslategray',
        +            'lightsteelblue',
        +            'lightyellow',
        +            'lime',
        +            'limegreen',
        +            'line',
        +            'linearc',
        +            'linen',
        +            'magenta',
        +            'margeB',
        +            'margeD',
        +            'margeG',
        +            'margeH',
        +            'maroon',
        +            'mediumaquamarine',
        +            'mediumblue',
        +            'mediumorchid',
        +            'mediumpurple',
        +            'mediumseagreen',
        +            'mediumslateblue',
        +            'mediumspringgreen',
        +            'mediumturquoise',
        +            'mediumvioletred',
        +            'midnightblue',
        +            'mintcream',
        +            'mistyrose',
        +            'miter',
        +            'moccasin',
        +            'move',
        +            'navajowhite',
        +            'navy',
        +            'noline',
        +            'none',
        +            'normalsize',
        +            'obj',
        +            'oldlace',
        +            'olive',
        +            'olivedrab',
        +            'oplus',
        +            'orange',
        +            'orangered',
        +            'orchid',
        +            'ortho',
        +            'otimes',
        +            'palegoldenrod',
        +            'palegreen',
        +            'paleturquoise',
        +            'palevioletred',
        +            'papayawhip',
        +            'pdf',
        +            'pdfc',
        +            'peachpuff',
        +            'pentagon',
        +            'peru',
        +            'pgf',
        +            'pi',
        +            'pink',
        +            'plum',
        +            'plus',
        +            'powderblue',
        +            'psf',
        +            'pst',
        +            'purple',
        +            'red',
        +            'right',
        +            'rosybrown',
        +            'round',
        +            'royalblue',
        +            'saddlebrown',
        +            'salmon',
        +            'sandybrown',
        +            'scriptsize',
        +            'seagreen',
        +            'seashell',
        +            'sep',
        +            'sep3D',
        +            'sienna',
        +            'silver',
        +            'skyblue',
        +            'slateblue',
        +            'slategray',
        +            'small',
        +            'snow',
        +            'solid',
        +            'special',
        +            'springgreen',
        +            'square',
        +            'src4latex',
        +            'stacked',
        +            'steelblue',
        +            'svg',
        +            'teal',
        +            'teg',
        +            'tex',
        +            'texsrc',
        +            'thicklines',
        +            'thinlines',
        +            'thistle',
        +            'times',
        +            'tiny',
        +            'tkz',
        +            'tomato',
        +            'top',
        +            'triangle',
        +            'turquoise',
        +            'user',
        +            'userdash',
        +            'version',
        +            'vertical',
        +            'violet',
        +            'wheat',
        +            'white',
        +            'whitesmoke',
        +            'yellow',
        +            'yellowgreen',
        +        ),
        +        6 => array( //macros prédéfinies
        +            'Abs',
        +            'Anp',
        +            'Apercu',
        +            'Arc',
        +            'Arc3D',
        +            'AretesNum',
        +            'AxeX3D',
        +            'AxeY3D',
        +            'AxeZ3D',
        +            'Axes3D',
        +            'Bcolor',
        +            'Bouton',
        +            'BoxAxes3D',
        +            'BrightColor',
        +            'Bsave',
        +            'Ceil',
        +            'Cercle',
        +            'Cercle3D',
        +            'Chanfrein',
        +            'ChangeWinTo',
        +            'Clip',
        +            'Clip3D',
        +            'ColorJump',
        +            'CompVer',
        +            'CompileEps',
        +            'CompilePdf',
        +            'Cone',
        +            'Courbe3D',
        +            'CpCopy',
        +            'CpDel',
        +            'CpNops',
        +            'CpReplace',
        +            'CpReverse',
        +            'CplColor',
        +            'Cvx2d',
        +            'Cvx3d',
        +            'Cvx3dAux',
        +            'Cylindre',
        +            'Dark',
        +            'Dbissec',
        +            'Dcarre',
        +            'Dcone',
        +            'Dcylindre',
        +            'Ddroite',
        +            'Dmed',
        +            'Dparallel',
        +            'Dparallelep',
        +            'Dparallelo',
        +            'Dperp',
        +            'Dpolyreg',
        +            'DpqGoneReg',
        +            'DpqGoneReg3D',
        +            'Dprisme',
        +            'Dpyramide',
        +            'DrawAretes',
        +            'DrawDdroite',
        +            'DrawDot',
        +            'DrawDroite',
        +            'DrawFaces',
        +            'DrawFacet',
        +            'DrawFlatFacet',
        +            'DrawGouraudTr',
        +            'DrawPlan',
        +            'DrawPoly',
        +            'DrawPolyNC',
        +            'DrawSmoothFacet',
        +            'Drectangle',
        +            'Dsphere',
        +            'Dsurface',
        +            'Dtetraedre',
        +            'Esave',
        +            'ExportGouraudTr',
        +            'ExportSmoothFacet',
        +            'FacesNum',
        +            'Gcolor',
        +            'GradDroite',
        +            'HollowFacet',
        +            'Hsb',
        +            'HueColor',
        +            'Incfrac',
        +            'Intersec',
        +            'Intersection',
        +            'IsAlign',
        +            'IsAlign3d',
        +            'IsIn',
        +            'IsPlan',
        +            'KillDup',
        +            'KillDup3D',
        +            'LabelArc',
        +            'LabelAxe',
        +            'LabelDot',
        +            'LabelDot3D',
        +            'LabelSeg',
        +            'Lcolor',
        +            'Light',
        +            'Ligne3D',
        +            'MakeVer',
        +            'Map3D',
        +            'MapBy',
        +            'Merge3d',
        +            'MixColor',
        +            'MouseZoom',
        +            'NewLabel',
        +            'NewLabelDot',
        +            'NewLabelDot3D',
        +            'NewTeXlabel',
        +            'Nops3d',
        +            'Ordonner',
        +            'Palette',
        +            'Parallelep',
        +            'Point3D',
        +            'Pos',
        +            'Pos3d',
        +            'Prisme',
        +            'Pyramide',
        +            'Rarc',
        +            'Rcercle',
        +            'Rcolor',
        +            'RealArg',
        +            'RealCoord',
        +            'RealCoordV',
        +            'Rellipse',
        +            'RellipticArc',
        +            'RestoreTphi',
        +            'RestoreWin',
        +            'RestoreWin3d',
        +            'Rgb2Gray',
        +            'Rgb2Hexa',
        +            'Rgb2Hsb',
        +            'RgbL',
        +            'Ryb',
        +            'SatColor',
        +            'SaveTphi',
        +            'SaveWin',
        +            'SaveWin3d',
        +            'SceneToGeom',
        +            'SceneToJvx',
        +            'SceneToObj',
        +            'ScrCoord',
        +            'ScrCoordV',
        +            'ScreenCenter',
        +            'ScreenPos',
        +            'ScreenX',
        +            'ScreenY',
        +            'Section',
        +            'Section2',
        +            'Seg',
        +            'SetStr',
        +            'Snapshot',
        +            'SortWith',
        +            'Sphere',
        +            'StrListAdd',
        +            'StrListCopy',
        +            'StrListDelKey',
        +            'StrListDelVal',
        +            'StrListGetKey',
        +            'StrListInit',
        +            'StrListInsert',
        +            'StrListKill',
        +            'StrListReplace',
        +            'StrListReplaceKey',
        +            'StrListShow',
        +            'StrNum',
        +            'SvgCoord',
        +            'TeXCoord',
        +            'Tetra',
        +            'VarGlob',
        +            'WriteObj',
        +            'WriteOff',
        +            'Xde',
        +            'Yde',
        +            'Zde',
        +            'addfrac',
        +            'affin',
        +            'aire3d',
        +            'angle',
        +            'angle3d',
        +            'angleD',
        +            'antirot3d',
        +            'arc',
        +            'arcBezier',
        +            'axeX',
        +            'axeY',
        +            'axes',
        +            'background',
        +            'bande',
        +            'bary',
        +            'bary3d',
        +            'bbox',
        +            'bdAngleD',
        +            'bdArc',
        +            'bdAxes',
        +            'bdCercle',
        +            'bdCone',
        +            'bdCurve',
        +            'bdCylinder',
        +            'bdDot',
        +            'bdDroite',
        +            'bdFacet',
        +            'bdLabel',
        +            'bdLine',
        +            'bdPlan',
        +            'bdPlanEqn',
        +            'bdPrism',
        +            'bdPyramid',
        +            'bdSphere',
        +            'bdSurf',
        +            'bdTorus',
        +            'bdWall',
        +            'binom',
        +            'bissec',
        +            'bordsAjour',
        +            'cap',
        +            'capB',
        +            'carre',
        +            'centerView',
        +            'chaine',
        +            'class_Path',
        +            'clipCurve',
        +            'clipPoly',
        +            'compileFormule',
        +            'conv2Facet',
        +            'conv2FlatPs',
        +            'coord',
        +            'cup',
        +            'cupB',
        +            'curve2Cone',
        +            'curve2Cylinder',
        +            'curveTube',
        +            'cutBezier',
        +            'defAff',
        +            'defAff3d',
        +            'del',
        +            'det',
        +            'det3d',
        +            'div',
        +            'domaine1',
        +            'domaine2',
        +            'domaine3',
        +            'dproj3d',
        +            'dproj3dO',
        +            'drawFlatPs',
        +            'drawSet',
        +            'drawTeXlabel',
        +            'drawTeXlabel3d',
        +            'drawWin3d',
        +            'dsym3d',
        +            'dsym3dO',
        +            'ecart',
        +            'ellipseArc',
        +            'engineerF',
        +            'epsCoord',
        +            'extractFlatPs',
        +            'fact',
        +            'flecher',
        +            'free',
        +            'ftransform',
        +            'ftransform3d',
        +            'geomview',
        +            'getdot',
        +            'getdroite',
        +            'getplan',
        +            'getplanEqn',
        +            'grille3d',
        +            'help',
        +            'hom',
        +            'hom3d',
        +            'interDD',
        +            'interDP',
        +            'interLP',
        +            'interPP',
        +            'inv',
        +            'inv3d',
        +            'invmatrix',
        +            'invmatrix3d',
        +            'isobar',
        +            'isobar3d',
        +            'javaview',
        +            'label',
        +            'labelarc',
        +            'length',
        +            'length3d',
        +            'line2Cone',
        +            'line2Cylinder',
        +            'lineTube',
        +            'loadFlatPs',
        +            'makeLabel3d',
        +            'markangle',
        +            'markseg',
        +            'markseg3d',
        +            'matrix',
        +            'matrix3d',
        +            'max',
        +            'med',
        +            'median',
        +            'min',
        +            'mod',
        +            'moy',
        +            'mtransform',
        +            'mtransform3d',
        +            'mulmatrix',
        +            'mulmatrix3d',
        +            'n',
        +            'newxlegend',
        +            'newylegend',
        +            'newzlegend',
        +            'nil',
        +            'normalize',
        +            'not',
        +            'parallel',
        +            'parallelo',
        +            'pdfprog',
        +            'periodic',
        +            'permute',
        +            'permute3d',
        +            'perp',
        +            'pgcd',
        +            'planEqn',
        +            'polyreg',
        +            'ppcm',
        +            'pqGoneReg',
        +            'pqGoneReg3D',
        +            'prod',
        +            'proj',
        +            'proj3d',
        +            'proj3dO',
        +            'projO',
        +            'purge3d',
        +            'putAbove',
        +            'px',
        +            'pxy',
        +            'pxz',
        +            'py',
        +            'pyz',
        +            'pz',
        +            'rect',
        +            'rectangle',
        +            'rectangle3d',
        +            'replace',
        +            'replace3d',
        +            'reverse',
        +            'reverse3d',
        +            'rot',
        +            'rot3d',
        +            'rotCurve',
        +            'rotLine',
        +            'set',
        +            'setB',
        +            'setminus',
        +            'setminusB',
        +            'shift',
        +            'shift3d',
        +            'simil',
        +            'size',
        +            'split2facet1',
        +            'split2facet2',
        +            'suite',
        +            'sum',
        +            'svgCoord',
        +            'sym',
        +            'sym3d',
        +            'sym3dO',
        +            'symG',
        +            'symO',
        +            'tangente',
        +            'tangenteP',
        +            'texCoord',
        +            'transformbox3d',
        +            'trianguler',
        +            'var',
        +            'view',
        +            'view3D',
        +            'viewDir',
        +            'visible',
        +            'wedge',
        +            'zoom',
        +        ),
        +        7 => array( //variables prédéfinies
        +            'AngleStep',
        +            'Arrows',
        +            'AutoReCalc',
        +            'Color',
        +            'ComptGraph',
        +            'ComptLabel3d',
        +            'DashPattern',
        +            'DeltaB',
        +            'DotAngle',
        +            'DotScale',
        +            'DotSize',
        +            'DotStyle',
        +            'Eofill',
        +            'FillColor',
        +            'FillOpacity',
        +            'FillStyle',
        +            'ForMinToMax',
        +            'HideColor',
        +            'HideStyle',
        +            'HideWidth',
        +            'IsVisible',
        +            'LabelAngle',
        +            'LabelSize',
        +            'LabelStyle',
        +            'LineCap',
        +            'LineJoin',
        +            'LineStyle',
        +            'MiterLimit',
        +            'MouseCode',
        +            'NbBoutons',
        +            'NbPoints',
        +            'Origin',
        +            'PenMode',
        +            'RefPoint',
        +            'ScriptExt',
        +            'StrokeOpacity',
        +            'TeXLabel',
        +            'TeXify',
        +            'TeXifyLabels',
        +            'TphiList',
        +            'Width',
        +            'Xfact',
        +            'Xinf',
        +            'Xsup',
        +            'Yfact',
        +            'Yinf',
        +            'Ysup',
        +            'Zinf',
        +            'ZoomList',
        +            'Zsup',
        +            'above',
        +            'arrows',
        +            'arrowscale',
        +            'axeOrigin',
        +            'backcolor',
        +            'backculling',
        +            'border',
        +            'bordercolor',
        +            'cleanLabel',
        +            'clip',
        +            'clipwin',
        +            'close',
        +            'color',
        +            'contrast',
        +            'cube',
        +            'defaultMatrix',
        +            'deg',
        +            'dir',
        +            'disc',
        +            'dollar',
        +            'dotcolor',
        +            'dotscale',
        +            'dotstyle',
        +            'drawbox',
        +            'flip',
        +            'grid',
        +            'gridcolor',
        +            'gridwidth',
        +            'height',
        +            'hidden',
        +            'hiddenLines',
        +            'hollow',
        +            'inside',
        +            'label3d',
        +            'labeldir',
        +            'labelpos',
        +            'labels',
        +            'labelsep',
        +            'labelsize',
        +            'labelstyle',
        +            'legendpos',
        +            'linestyle',
        +            'maxGrad',
        +            'mirror',
        +            'mm',
        +            'nbdeci',
        +            'nbdot',
        +            'nbfacet',
        +            'normal',
        +            'numericFormat',
        +            'opacity',
        +            'originlabel',
        +            'outside',
        +            'phi',
        +            'position',
        +            'rad',
        +            'radius',
        +            'radiusscale',
        +            'radscale',
        +            'rotation',
        +            'scale',
        +            'select',
        +            'showdot',
        +            'smooth',
        +            'stock',
        +            'stock1',
        +            'stock2',
        +            'stock3',
        +            'stock4',
        +            'stock5',
        +            't',
        +            'tMax',
        +            'tMin',
        +            'tailleB',
        +            'theta',
        +            'tickdir',
        +            'tickpos',
        +            'tube',
        +            'twoside',
        +            'u',
        +            'usecomma',
        +            'v',
        +            'vecI',
        +            'vecJ',
        +            'vecK',
        +            'width',
        +            'win2dList',
        +            'win3dList',
        +            'xaxe',
        +            'xgradlimits',
        +            'xlabelsep',
        +            'xlabelstyle',
        +            'xlegendsep',
        +            'xlimits',
        +            'xstep',
        +            'xylabelpos',
        +            'xylabelsep',
        +            'xyticks',
        +            'yaxe',
        +            'ygradlimits',
        +            'ylabelsep',
        +            'ylabelstyle',
        +            'ylegendsep',
        +            'ylimits',
        +            'ystep',
        +            'zaxe',
        +            'zgradlimits',
        +            'zlabelsep',
        +            'zlabelstyle',
        +            'zlegendsep',
        +            'zlimits',
        +            'zstep',
        +        )
        +    ),
        +    'SYMBOLS' => array(
        +        ':=', '=', '+', '-', '*', '/',
        +        '<', '>', '>=', '<=', '<>',
        +        '\\', '@', ', ', ';', '#'
        +    ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true
        +    ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1  => 'color: #3ad900;font-weight: bold;',// file construction
        +            2  => 'color: #A53;',// programmation structure
        +            3  => 'color: #35A;font-weight: bold;',// commandes prédéfinies
        +            4  => 'color: #472;',// commandes relatives à l'interface graphique
        +            5  => 'color: #008080;',// constantes prédéfinies
        +            6  => 'color: #808000;font-weight: bold;',// macros prédéfinies
        +            7  => 'color: #000;font-weight: bold;',// variables prédéfinies
        +        ),
        +        'COMMENTS' => array(
        +            1 => 'color: #777;',
        +            'MULTI' => 'color: #880;'
        +        ),
        +        'ESCAPE_CHAR' => array(
        +            0 => ''
        +        ),
        +        'BRACKETS' => array(
        +            0 => 'color: #820;'
        +        ),
        +        'STRINGS' => array(
        +            0 => 'color: #880;'
        +        ),
        +        'NUMBERS' => array(
        +            0 => 'color: #000;'
        +        ),
        +        'METHODS' => array(
        +            1 => '',
        +            2 => ''
        +        ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000;'
        +        ),
        +        'REGEXPS' => array(
        +        ),
        +        'SCRIPT' => array(
        +            0 => ''
        +        )
        +    ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => 'http://melusine.eu.org/syracuse/G/geshi/docs/texgraph/#{FNAME}',
        +        4 => '',
        +        5 => '',
        +        6 => 'http://melusine.eu.org/syracuse/G/geshi/docs/texgraph/#{FNAME}',
        +        7 => ''
        +    ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +    ),
        +    'REGEXPS' => array(
        +    ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +    ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +    )
        +);
        diff --git a/includes/geshi/text.php b/includes/geshi/text.php
        new file mode 100644
        index 0000000..dbb97a3
        --- /dev/null
        +++ b/includes/geshi/text.php
        @@ -0,0 +1,82 @@
        + 'Text',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(),
        +    'SYMBOLS' => array(),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(),
        +        'COMMENTS' => array(),
        +        'ESCAPE_CHAR' => array(),
        +        'BRACKETS' => array(),
        +        'STRINGS' => array(),
        +        'NUMBERS' => array(),
        +        'METHODS' => array(),
        +        'SYMBOLS' => array(),
        +        'SCRIPT' => array(),
        +        'REGEXPS' => array()
        +        ),
        +    'URLS' => array(),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(),
        +    'PARSER_CONTROL' => array(
        +        'ENABLE_FLAGS' => array(
        +            'ALL' => GESHI_NEVER
        +            )
        +        )
        +);
        diff --git a/includes/geshi/thinbasic.php b/includes/geshi/thinbasic.php
        new file mode 100644
        index 0000000..0783b31
        --- /dev/null
        +++ b/includes/geshi/thinbasic.php
        @@ -0,0 +1,866 @@
        + 'thinBasic',
        +    'COMMENT_SINGLE' => array(1 => "'"),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'XOR','XML_TREETOSTRING','XML_PARSEFILE','XML_PARSE','XML_PARENT','XML_NODETYPE','XML_NODETOSTRING','XML_NEXTSIBLING',
        +            'XML_LASTERROR','XML_GETTAG','XML_FREE','XML_FINDNODE','XML_DECODEPARAM','XML_CHILDDATA','XML_CHILD','XML_ATTRIBVALUE',
        +            'XML_ATTRIBNAME','XML_ATTRIBCOUNT','WORD','WITH','WIN_SHOW','WIN_SETTITLE','WIN_SETFOREGROUND','WIN_ISZOOMED',
        +            'WIN_ISVISIBLE','WIN_ISICONIC','WIN_GETTITLE','WIN_GETFOREGROUND','WIN_GETCLASS','WIN_GETACTIVE','WIN_FLASH','WIN_FINDBYTITLE',
        +            'WIN_FINDBYCLASS','WHILE','WEND','VERIFY','VARPTR','VARIANTVT$','VARIANTVT','VARIANT',
        +            'VARIABLE_GETINFO','VARIABLE_EXISTS','VARIABLE_EXIST','VALUE','VAL','USING$','USING','USES',
        +            'USER','UNTIL','UNITS','UNION','UNICODE2ASCII','UDP_SEND','UDP_RECV','UDP_OPENSERVER',
        +            'UDP_OPEN','UDP_FREEFILE','UDP_CLOSE','UCODE$','UCASE$','UBOUND','TYPE','TRIMFULL$',
        +            'TRIM$','TOOLTIP','TOKENIZER_MOVETOEOL','TOKENIZER_KEYSETUSERSTRING','TOKENIZER_KEYSETUSERNUMBER','TOKENIZER_KEYGETUSERSTRING','TOKENIZER_KEYGETUSERNUMBER','TOKENIZER_KEYGETSUBTYPE',
        +            'TOKENIZER_KEYGETNAME','TOKENIZER_KEYGETMAINTYPE','TOKENIZER_KEYFIND','TOKENIZER_KEYADD','TOKENIZER_GETNEXTTOKEN','TOKENIZER_DEFAULT_SET','TOKENIZER_DEFAULT_GET','TOKENIZER_DEFAULT_CODE',
        +            'TOKENIZER_DEFAULT_CHAR','TO','TIMER','TIME$','THEN','TEXTBOX','TEXT','TCP_SEND',
        +            'TCP_RECV','TCP_PRINT','TCP_OPEN','TCP_LINEINPUT','TCP_FREEFILE','TCP_CLOSE','TB_IMGCTX_SETIMAGEADJUSTMENT','TB_IMGCTX_LOADIMAGE',
        +            'TB_IMGCTX_GETIMAGEADJUSTMENT','TBGL_VIEWPORT','TBGL_VERTEX','TBGL_USETEXTUREFLAG','TBGL_USETEXTURE','TBGL_USELINESTIPPLEFLAG','TBGL_USELINESTIPPLE','TBGL_USELIGHTSOURCEFLAG',
        +            'TBGL_USELIGHTSOURCE','TBGL_USELIGHTINGFLAG','TBGL_USELIGHTING','TBGL_USEFOGFLAG','TBGL_USEFOG','TBGL_USEDEPTHMASK','TBGL_USEDEPTHFLAG','TBGL_USEDEPTH',
        +            'TBGL_USECLIPPLANEFLAG','TBGL_USECLIPPLANE','TBGL_USEBLENDFLAG','TBGL_USEBLEND','TBGL_USEALPHATEST','TBGL_TRANSLATE','TBGL_TORUS','TBGL_TEXCOORD2D',
        +            'TBGL_SPHERE','TBGL_SHOWWINDOW','TBGL_SHOWCURSOR','TBGL_SETWINDOWTITLE','TBGL_SETUPLIGHTSOURCE','TBGL_SETUPFOG','TBGL_SETUPCLIPPLANE','TBGL_SETPRIMITIVEQUALITY',
        +            'TBGL_SETLIGHTPARAMETER','TBGL_SETDRAWDISTANCE','TBGL_SCALE','TBGL_SAVESCREENSHOT','TBGL_ROTATEXYZ','TBGL_ROTATE','TBGL_RESETMATRIX','TBGL_RENDERTOTEXTURE',
        +            'TBGL_RENDERMATRIX3D','TBGL_RENDERMATRIX2D','TBGL_PUSHMATRIX','TBGL_PRINTFONT','TBGL_PRINTBMP','TBGL_PRINT','TBGL_POS3DTOPOS2D','TBGL_POPMATRIX',
        +            'TBGL_POLYGONLOOK','TBGL_POINTSIZE','TBGL_POINTINSIDE3D','TBGL_NORMAL','TBGL_NEWLIST','TBGL_MOUSEGETWHEELDELTA','TBGL_MOUSEGETRBUTTON','TBGL_MOUSEGETPOSY',
        +            'TBGL_MOUSEGETPOSX','TBGL_MOUSEGETMBUTTON','TBGL_MOUSEGETLBUTTON','TBGL_M15SETVERTEXZ','TBGL_M15SETVERTEXY','TBGL_M15SETVERTEXXYZ','TBGL_M15SETVERTEXX','TBGL_M15SETVERTEXTEXY',
        +            'TBGL_M15SETVERTEXTEXXY','TBGL_M15SETVERTEXTEXX','TBGL_M15SETVERTEXTEXN','TBGL_M15SETVERTEXRGB','TBGL_M15SETVERTEXR','TBGL_M15SETVERTEXPSTOP','TBGL_M15SETVERTEXPARAM','TBGL_M15SETVERTEXLAYER',
        +            'TBGL_M15SETVERTEXG','TBGL_M15SETVERTEXB','TBGL_M15SETMODELVERTEXCOUNT','TBGL_M15SETBONECHILD','TBGL_M15ROTBONEZ','TBGL_M15ROTBONEY','TBGL_M15ROTBONEX','TBGL_M15ROTBONE',
        +            'TBGL_M15RESETBONES','TBGL_M15RECALCNORMALS','TBGL_M15LOADMODEL','TBGL_M15INITMODELBUFFERS','TBGL_M15GETVERTEXZ','TBGL_M15GETVERTEXY','TBGL_M15GETVERTEXXYZ','TBGL_M15GETVERTEXX',
        +            'TBGL_M15GETVERTEXTEXY','TBGL_M15GETVERTEXTEXXY','TBGL_M15GETVERTEXTEXX','TBGL_M15GETVERTEXTEXN','TBGL_M15GETVERTEXRGB','TBGL_M15GETVERTEXR','TBGL_M15GETVERTEXPSTOP','TBGL_M15GETVERTEXPARAM',
        +            'TBGL_M15GETVERTEXLAYER','TBGL_M15GETVERTEXG','TBGL_M15GETVERTEXB','TBGL_M15GETMODELVERTEXCOUNT','TBGL_M15GETMODELPOLYCOUNT','TBGL_M15ERASECHILDBONES','TBGL_M15DRAWMODEL','TBGL_M15DEFBONERESET',
        +            'TBGL_M15DEFBONELAYER','TBGL_M15DEFBONEBOX','TBGL_M15DEFBONEANCHOR','TBGL_M15DEFBONEADDVERTEX','TBGL_M15CLEARMODEL','TBGL_M15APPLYBONES','TBGL_M15ADDBONETREEITEM','TBGL_LOADTEXTURE',
        +            'TBGL_LOADFONT','TBGL_LOADBMPFONT','TBGL_LINEWIDTH','TBGL_LINESTIPPLE','TBGL_KILLFONT','TBGL_ISWINDOW','TBGL_ISPOINTVISIBLE','TBGL_ISPOINTBEHINDVIEW',
        +            'TBGL_GETWINDOWMULTIKEYSTATE','TBGL_GETWINDOWKEYSTATE','TBGL_GETWINDOWKEYONCE','TBGL_GETWINDOWCLIENT','TBGL_GETTEXTURENAME','TBGL_GETTEXTURELIST','TBGL_GETPIXELINFO','TBGL_GETMULTIASYNCKEYSTATE',
        +            'TBGL_GETLASTGLERROR','TBGL_GETFRAMERATE','TBGL_GETDESKTOPINFO','TBGL_GETASYNCKEYSTATE','TBGL_ERRORMESSAGES','TBGL_ENDPOLY','TBGL_ENDLIST','TBGL_DRAWFRAME',
        +            'TBGL_DESTROYWINDOW','TBGL_DELETELIST','TBGL_CYLINDER','TBGL_CREATEWINDOWEX','TBGL_CREATEWINDOW','TBGL_COLORALPHA','TBGL_COLOR','TBGL_CLEARFRAME',
        +            'TBGL_CAMERA','TBGL_CALLLIST','TBGL_BUILDFONT','TBGL_BOX','TBGL_BLENDFUNC','TBGL_BINDTEXTURE','TBGL_BEGINPOLY','TBGL_BACKCOLOR',
        +            'TBGL_ALPHAFUNC','TBDI_JOYZ','TBDI_JOYY','TBDI_JOYX','TBDI_JOYSTOPEFFECT','TBDI_JOYSLIDER','TBDI_JOYSETRANGEZ','TBDI_JOYSETRANGEY',
        +            'TBDI_JOYSETRANGEXYZ','TBDI_JOYSETRANGEX','TBDI_JOYSETDEADZONEZ','TBDI_JOYSETDEADZONEY','TBDI_JOYSETDEADZONEXYZ','TBDI_JOYSETDEADZONEX','TBDI_JOYSETAUTOCENTER','TBDI_JOYRZ',
        +            'TBDI_JOYRY','TBDI_JOYRX','TBDI_JOYPOV','TBDI_JOYPLAYEFFECT','TBDI_JOYLOADEFFECT','TBDI_JOYHASFF','TBDI_JOYHASEFFECT','TBDI_JOYGETEFFECTNAME',
        +            'TBDI_JOYGETEFFECTGUID','TBDI_JOYCREATEEFFECT','TBDI_JOYCOUNTPOV','TBDI_JOYCOUNTEFFECTS','TBDI_JOYCOUNTBTN','TBDI_JOYCOUNTAXES','TBDI_JOYBUTTON','TBDI_JOYAVAIL',
        +            'TBDI_INIT','TBASS_STREAMFREE','TBASS_STREAMCREATEFILE','TBASS_SETVOLUME','TBASS_SETEAXPRESET','TBASS_SETEAXPARAMETERS','TBASS_SETCONFIG','TBASS_SET3DPOSITION',
        +            'TBASS_SET3DFACTORS','TBASS_SAMPLELOAD','TBASS_SAMPLEGETCHANNEL','TBASS_MUSICLOAD','TBASS_MUSICFREE','TBASS_INIT','TBASS_GETVOLUME','TBASS_GETVERSION',
        +            'TBASS_GETCONFIG','TBASS_FREE','TBASS_ERRORGETCODE','TBASS_CHANNELSTOP','TBASS_CHANNELSETPOSITION','TBASS_CHANNELSETATTRIBUTES','TBASS_CHANNELSET3DPOSITION','TBASS_CHANNELPLAY',
        +            'TBASS_CHANNELPAUSE','TBASS_CHANNELISACTIVE','TBASS_CHANNELGETPOSITION','TBASS_CHANNELGETLENGTH','TBASS_CHANNELGETATTRIBUTES','TBASS_APPLY3D','TANH','TANGENT',
        +            'TAN','TALLY','TABCTRL_ONNOTIFY','TABCTRL_INSERTITEM','TABCTRL_GETCURSEL','SWAP','SUB','STRZIP$',
        +            'STRUNZIP$','STRREVERSE$','STRPTRLEN','STRPTR','STRINSERT$','STRING$','STRING','STRDELETE$',
        +            'STR$','STOP','STEP','STDOUT','STDIN','STAT_SUM','STAT_STDERROR','STAT_STDDEVIATION',
        +            'STAT_RANDOM','STAT_PRODUCT','STAT_MIN','STAT_MEDIAN','STAT_MEANHARMONIC','STAT_MEANGEOMETRIC','STAT_MEANARITHMETIC','STAT_MAX',
        +            'STAT_INVERSESUM','STAT_HISTOGRAM','STAT_FILLARRAY','STAT_COUNT','STAT_COPYARRAY','STAT_CLONEARRAY','STAT_CHISQUARE','STATIC',
        +            'STATE','SQR','SPLIT','SORT','SMTP_STATISTICS','SMTP_SETOPTION','SMTP_SETLOGFILE','SMTP_SENDHTML',
        +            'SMTP_SENDEMAIL','SMTP_GETERROR','SMTP_FINISHED','SMTP_DEBUG','SMTP_CONNECT','SMTP_CLOSE','SLEEP','SIZEOF',
        +            'SIZE','SINH','SINGLE','SIN','SIGNED','SHOW','SHIFT','SHAPETOBMP',
        +            'SGN','SETAT','SET','SENDMESSAGE','SENDKEYSBULK','SENDKEYS','SEND','SELECTEXPRESSION',
        +            'SELECT','SECH','SEC','SCAN','SAPI_SPEAK','SAPI_SETVOLUME','SAPI_SETRATE','SAPI_MODULELOADED',
        +            'SAPI_GETVOLUME','SAPI_GETRATE','RTRIM$','RTF_SETTEXT','RTF_SETFONTSIZE','RTF_SETFONTNAME','RTF_SETFGCOLOR','RTF_SETEFFECT',
        +            'RTF_SETBGCOLOR','RTF_SETALIGN','RTF_SAVETOFILE','RTF_LOADFROMFILE','RTF_GETTEXT','RTF_GETFONTSIZE','RTF_GETFONTNAME','RTF_GETEFFECT',
        +            'RTF_GETCLASS','RTF_APPENDTEXT','RSET$','ROUND','RNDF','RND','RIGHT$','RIGHT',
        +            'RGB','RESOURCE','RESIZE','RESET','REPLACE$','REPEAT$','REMOVE$','REM',
        +            'REGISTRY_SETVALUE','REGISTRY_SETTXTNUM','REGISTRY_SETTXTBOOL','REGISTRY_SETDWORD','REGISTRY_GETVALUE','REGISTRY_GETTXTNUM','REGISTRY_GETTXTBOOL','REGISTRY_GETDWORD',
        +            'REGISTRY_GETALLKEYS','REGISTRY_DELVALUE','REGISTRY_DELKEY','REFERENCE','REF','REDRAW','REDIM','RAS_SETPARAMS',
        +            'RAS_OPENDIALUPDIALOG','RAS_LOADENTRIES','RAS_HANGUPALL','RAS_HANGUP','RAS_GETENTRY','RAS_BEGINDIAL','RANDOMIZE','RADTODEG',
        +            'QUERYPERFORMANCEFREQUENCY','QUERYPERFORMANCECOUNTER','QUAD','PTR','PRESERVE','POST','POPUP','POKE$',
        +            'POKE','PIXELS','PI','PERMUTATIONS','PEEKMESSAGE','PEEK$','PEEK','PC_SYSTEMUPFROM',
        +            'PC_SUSPENDSTATE','PC_SHUTDOWN','PC_SHOWCARET','PC_SETCARETBLINKTIME','PC_RESTARTDIALOG','PC_PREVENTSHUTDOWN','PC_LOCK','PC_INSERTCD',
        +            'PC_HIDECARET','PC_GETSTATEONOFF','PC_GETSCROLLLOCKKEYSTATE','PC_GETNUMLOCKKEYSTATE','PC_GETCARETBLINKTIME','PC_GETCAPSLOCKKEYSTATE','PC_EMPTYBIN','PC_EJECTCD',
        +            'PC_DECODECDERROR','PCT','PARSESET$','PARSECOUNT','PARSE$','PARSE','PARAMETERS','OUTSIDE',
        +            'OS_WINVERSIONTEXT','OS_WINGETVERSIONTIMELINE','OS_SHELLEXECUTE','OS_SHELLABOUT','OS_SHELL','OS_SETLASTCALLDLLERROR','OS_SERVICESTOP','OS_SERVICESTATUSDESCRIPTION',
        +            'OS_SERVICESTARTTYPEDESCRIPTION','OS_SERVICESTART','OS_SERVICESETSTARTTYPE','OS_SERVICEQUERY','OS_SERVICEGETSTARTTYPE','OS_SERVICEGETLIST','OS_PROCESSKILLBYNAME','OS_PROCESSKILLBYID',
        +            'OS_PROCESSISRUNNING','OS_PROCESSGETLIST','OS_PROCESSGETID','OS_PROCESSARERUNNING','OS_MESSAGEBEEP','OS_ISWOW64','OS_ISFEATUREPRESENT','OS_IEVERSION',
        +            'OS_GETWINDOWSDIR','OS_GETUSERNAME','OS_GETTEMPDIR','OS_GETSYSTEMDIR','OS_GETSPECIALFOLDER','OS_GETLASTCALLDLLSTATUS','OS_GETLASTCALLDLLERROR','OS_GETCURRENTTHREADID',
        +            'OS_GETCURRENTPROCESSID','OS_GETCOMPUTERNAME','OS_GETCOMMANDS','OS_GETCOMMAND','OS_FLASHWINDOW','OS_FATALAPPEXIT','OS_ENVIRON','OS_CALLDLL',
        +            'OR','OPTIONAL','OPTION','OPT','ONCE','ON','OFF','NUMBER',
        +            'NOT','NEXT','NEW','MSGBOX','MOUSEPTR','MODULE','MODELESS','MODAL',
        +            'MOD','MKWRD$','MKS$','MKQ$','MKL$','MKI$','MKE$','MKDWD$',
        +            'MKD$','MKCUX$','MKCUR$','MKBYT$','MIN$','MIN','MID$','MENU',
        +            'MDI_CREATE','MCASE$','MAX$','MAX','MAKWRD','MAKLNG','MAKINT','MAKDWR',
        +            'LTRIM$','LSET$','LOWRD','LOOP','LONG','LOINT','LOG_WRITE','LOGB',
        +            'LOG2','LOG10','LOG','LOCAL','LOC','LL_UPDATEBYNAME','LL_UPDATE','LL_TOSTRING',
        +            'LL_TOFILE','LL_NAME','LL_GETITEM','LL_GETBYNUMBER','LL_FROMFILE','LL_FREE','LL_FINDLAST','LL_FINDBYNAME',
        +            'LL_FINDBYDATA','LL_DELETELIKE','LL_DELETEBYNAME','LL_DELETE','LL_DATABYNAME','LL_DATA','LL_COUNT','LL_ADD',
        +            'LISTBOX','LINE','LIBRARY_EXISTS','LIB','LEN','LEFT$','LEFT','LCASE$',
        +            'LBOUND','LABEL','KILL','JOIN$','ITERATE','ISWINDOW','ISUNICODE','ISTRUE',
        +            'ISODD','ISLIKE','ISFALSE','ISEVEN','IP_TOSTRING','IP_ADDR','INTERNALINFO','INTEGER',
        +            'INT','INSTR','INSIDE','INPUTBOX$','INI_SETKEY','INI_GETSECTIONSLIST','INI_GETSECTIONKEYLIST','INI_GETKEY',
        +            'INET_URLDOWNLOAD','INET_PING','INET_OPENDIALUPDIALOG','INET_GETSTATE','INET_GETREMOTEMACADDRESS','INET_GETIP','INET_GETCONNECTIONMODE','INCR',
        +            'IN','IMAGE','IIF$','IIF','IF','ICRYPTO_TESTSHA1','ICRYPTO_TESTMD5','ICRYPTO_TESTCRC32',
        +            'ICRYPTO_TESTCRC16','ICRYPTO_STRING2ASCII','ICRYPTO_SHA1','ICRYPTO_MD5','ICRYPTO_ENCRYPTRIJNDAEL','ICRYPTO_ENCRYPTRC4','ICRYPTO_DECRYPTRIJNDAEL','ICRYPTO_DECRYPTRC4',
        +            'ICRYPTO_CRC32','ICRYPTO_CRC16','ICRYPTO_BYTEXOR','ICRYPTO_BIN2ASCII','ICRYPTO_ASCII2STRING','ICRYPTO_ASCII2BIN','HOST_ADDR','HOSTNAME_TOIP',
        +            'HOSTIP_TONAME','HIWRD','HIINT','HEX$','HASH','HANDLE','GUIDTXT$','GUID$',
        +            'GRAPHIC','GLVOID','GLUSHORT','GLUINT','GLUBYTE','GLSIZEI','GLSHORT','GLOBAL',
        +            'GLINT','GLFLOAT','GLENUM','GLDOUBLE','GLCLAMPF','GLCLAMPD','GLBYTE','GLBOOLEAN',
        +            'GLBITFIELD','GETWINDOWMULTIKEYSTATE','GETWINDOWKEYSTATE','GETTICKCOUNT','GETS','GETMULTIASYNCKEYSTATE','GETMESSAGE','GETCURRENTINSTANCE',
        +            'GETAT','GETASYNCKEYSTATE','GET','FUNCTION_NPARAMS','FUNCTION_EXISTS','FUNCTION_CPARAMS','FUNCTION','FTP_SETSTRING',
        +            'FTP_SETSERVERDIR','FTP_SETNUMBER','FTP_SETMODE','FTP_SETLOGFILE','FTP_SETLOCALDIR','FTP_QUIT','FTP_PUTFILE','FTP_GETSTRING',
        +            'FTP_GETSERVERDIR','FTP_GETNUMBER','FTP_GETLOCALDIR','FTP_GETLIST','FTP_GETFILE','FTP_GETERRORSTRING','FTP_GETERRORNUMBER','FTP_FINISHED',
        +            'FTP_EXTRACT','FTP_DELFILE','FTP_CONNECT','FTP_COMMAND','FRAME','FRAC','FORMAT$','FOR',
        +            'FONT_LIST','FONT_CREATE','FONT','FOCUS','FLUSH','FIX','FILE_SIZE','FILE_SHELLDELETE',
        +            'FILE_SHELLCOPY','FILE_SETDATETIME','FILE_SEEK','FILE_SAVE','FILE_RENAME','FILE_PUT','FILE_PATHSPLIT','FILE_OPEN',
        +            'FILE_LOF','FILE_LOAD','FILE_LINEPRINT','FILE_LINEINPUT','FILE_KILL','FILE_GETVERSIONSTRING','FILE_GETVERSION','FILE_GETTIME',
        +            'FILE_GETDATETIMESTAMP','FILE_GETDATETIME','FILE_GETDATE','FILE_GET','FILE_EXISTS','FILE_EOF','FILE_COPY','FILE_CLOSE',
        +            'FILE_CHANGED','FILE_APPEND','FACTORIAL','EXTRACT$','EXT','EXPORT','EXP2','EXP10',
        +            'EXP','EXIT','EVAL_STRING','EVAL_SETSTRING','EVAL_SETNUMBER','EVAL_MATH','EVAL_LINKEXT','EVAL_GETSTRING',
        +            'EVAL_GETNUMBER','EVAL_ERRORGETTOKEN','EVAL_ERRORDESCRIPTION','EVAL_ERRORCLEAR','EVAL','ERRCLEAR','ERR','ENGINE_GETCURRENTTOKEN',
        +            'ENDIF','END','ENABLE','ELSEIF','ELSE','ECHO','DWORD','DT_YEAR',
        +            'DT_TIMETOSEC','DT_TIMESUBSECONDS','DT_TIMEFORMAT','DT_TIMEADDSECONDS','DT_SETTIMESEPARATOR','DT_SETDATESEPARATOR','DT_SETDATECENTURY','DT_SECTOTIME',
        +            'DT_SECTODATE','DT_SECOND','DT_MONTH','DT_MINUTE','DT_LASTDAYOFMONTH','DT_ISVALIDDATE','DT_ISLEAPYEAR','DT_HOUR',
        +            'DT_GETWEEKDAYNAME','DT_GETWEEKDAY','DT_GETTIMESTAMP','DT_GETTIMESEPARATOR','DT_GETMONTHNAME','DT_GETDATESEPARATOR','DT_GETDATECENTURY','DT_DAY',
        +            'DT_DATETOSEC','DT_DATETIMESUBSECONDS','DT_DATETIMEADDSECONDS','DT_DATESUBDAYS','DT_DATEFORMAT','DT_DATEDIFF','DT_DATEADDDAYS','DT_COOKIEDATE',
        +            'DRAW','DOUBLE','DOEVENTS','DO','DISABLE','DIR_REMOVE','DIR_MAKEALL','DIR_MAKE',
        +            'DIR_LISTARRAY','DIR_LIST','DIR_ISEMPTY','DIR_ISDIR','DIR_GETCURRENT','DIR_EXISTS','DIR_CHANGEDRIVE','DIR_CHANGE',
        +            'DIM','DICTIONARY_MEMINFO','DICTIONARY_LISTKEYS','DICTIONARY_FREE','DICTIONARY_FIND','DICTIONARY_EXISTS','DICTIONARY_CREATE','DICTIONARY_COUNT',
        +            'DICTIONARY_ADD','DIALOG_STOPEVENTS','DIALOG_SAVEFILE','DIALOG_OPENFILE','DIALOG_GETCONTROL','DIALOG_CHOOSECOLOR','DIALOG_BROWSEFORFOLDER','DIALOG',
        +            'DESKTOP','DESCENDING','DESCEND','DELETEOBJECT','DELETE','DEGTORAD','DECR','DECLARE',
        +            'DATE$','CVWRD','CVS','CVQ','CVL','CVI','CVE','CVDWD',
        +            'CVD','CVCUX','CVCUR','CVBYT','CURRENCY','CUR','CSET$','CSCH',
        +            'CSC','CRYPTO_GETPROVIDERTYPESCOUNT','CRYPTO_GETPROVIDERSCOUNT','CRYPTO_GETDEFAULTPROVIDER','CRYPTO_GENRANDOMSTRING','CRYPTO_ENUMPROVIDERTYPES','CRYPTO_ENUMPROVIDERS','CRYPTO_ENCRYPT',
        +            'CRYPTO_DECRYPT','CREATEFONT','COTH','COTAN','COSH','COS','CONTROL_SETTEXT','CONTROL_GETTEXT',
        +            'CONTROL_GETNUMBER','CONTROL','CONST','CONSOLE_WRITELINE','CONSOLE_WRITE','CONSOLE_WAITKEY','CONSOLE_SHOWWINDOW','CONSOLE_SHOWCURSOR',
        +            'CONSOLE_SETTITLE','CONSOLE_SETTEXTATTRIBUTE','CONSOLE_SETSTDHANDLE','CONSOLE_SETSCREENBUFFERSIZE','CONSOLE_SETPROGRESSBARCHAR','CONSOLE_SETOUTPUTMODE','CONSOLE_SETOUTPUTCP','CONSOLE_SETINPUTMODE',
        +            'CONSOLE_SETFILEAPISTOOEM','CONSOLE_SETFILEAPISTOANSI','CONSOLE_SETCURSORSIZE','CONSOLE_SETCURSORPOSITION','CONSOLE_SETCP','CONSOLE_SETACTIVESCREENBUFFER','CONSOLE_SCROLLWINDOW','CONSOLE_SCROLLBUFFERONEROW',
        +            'CONSOLE_SCROLLBUFFER','CONSOLE_SAVESCREEN','CONSOLE_RESTORESCREEN','CONSOLE_READLINE','CONSOLE_READ','CONSOLE_PROGRESSBAR','CONSOLE_PRINTLINE','CONSOLE_PRINTAT',
        +            'CONSOLE_PRINT','CONSOLE_NORMALSCREEN','CONSOLE_LINE','CONSOLE_INKEYB','CONSOLE_INKEY','CONSOLE_HIDECURSOR','CONSOLE_GETTITLE','CONSOLE_GETTEXTATTRIBUTE',
        +            'CONSOLE_GETSTDHANDLE','CONSOLE_GETSIZEY','CONSOLE_GETSIZEX','CONSOLE_GETPROGRESSBARCHAR','CONSOLE_GETOUTPUTMODE','CONSOLE_GETOUTPUTCP','CONSOLE_GETNUMBEROFMOUSEBUTTONS','CONSOLE_GETINPUTMODE',
        +            'CONSOLE_GETCURSORY','CONSOLE_GETCURSORX','CONSOLE_GETCURSORSIZE','CONSOLE_GETCURRENTFONTINDEX','CONSOLE_GETCP','CONSOLE_GENERATECTRLEVENT','CONSOLE_FULLSCREEN','CONSOLE_FREE',
        +            'CONSOLE_FOREGROUNDRGB','CONSOLE_ENABLECTRLC','CONSOLE_DISABLECTRLC','CONSOLE_CREATESCREENBUFFER','CONSOLE_COLORAT','CONSOLE_CLS','CONSOLE_BOX','CONSOLE_BACKGROUNDRGB',
        +            'CONSOLE_ATTACH','CONSOLE_AREFILEAPISANSI','CONSOLE_ALLOC','COM_VARIANTINIT','COM_VARIANTCOPY','COM_VARIANTCLEAR','COM_SUCCEEDED','COM_STRINGFROMCLSID',
        +            'COM_RELEASE','COM_QUERYINTERFACE','COM_PROGIDFROMCLSID','COM_ISEQUALIID','COM_ISEQUALGUID','COM_ISEQUALCLSID','COM_GETOBJECT','COM_GETENGINEGUID',
        +            'COM_EXECUTE','COM_DISPLAYERROR','COM_CREATEOBJECT','COM_CLSIDFROMSTRING','COM_CLSIDFROMPROGID','COM_BUILDVARIANT','COMBOBOX','COMBINATIONS',
        +            'COLOR','CLIPBOARD_SETTEXT','CLIPBOARD_GETTEXT','CLIENT','CLEARMESSAGES','CHR$','CHOOSE$','CHOOSE',
        +            'CHECKBOX','CHECK3STATE','CHECK','CGI_WRITELOGFILE','CGI_WRITE','CGI_URLDECODESTRING','CGI_UPLOADFILESTIME','CGI_UPLOADFILESNUMBER',
        +            'CGI_UPLOADFILESIZE','CGI_STARTSESSION','CGI_SETSESSIONVARIABLE','CGI_RESETDEFAULTSETTINGS','CGI_REMOVESPECIALCHARSPREFIX','CGI_REMOVEQUOTE','CGI_READ','CGI_LOADCONFIGFILE',
        +            'CGI_HEADER','CGI_GETSESSIONVARIABLE','CGI_GETREQUESTMETHOD','CGI_GETQUERYVALUE','CGI_GETCURRENTSESSION','CGI_GETCURRENTGUID','CGI_ENVIRON','CGI_CFGSETOPTION',
        +            'CGI_CFGGETOPTION','CGI_ADDSPECIALCHARSPREFIX','CGI_ADDQUOTE','CEIL','CASE','CALL','BYVAL','BYTE',
        +            'BYREF','BYCMD','BUTTON','BUNDLE_SETSCRIPTPARAMETERS','BUNDLE_SETSCRIPTNAME','BUNDLE_SETFLAGOBFUSCATEMAINSCRIPT','BUNDLE_SETFLAGDELETEAFTERRUN','BUNDLE_SETFLAGCOMPRESSALLFILES',
        +            'BUNDLE_SETFLAGASKBEFOREEXTRACT','BUNDLE_SETEXTRACTIONFOLDER','BUNDLE_SETCREATIONFOLDER','BUNDLE_SETBUNDLENAME','BUNDLE_RESET','BUNDLE_MAKE','BUNDLE_BUILDER','BUNDLE_ADDFOLDER',
        +            'BUNDLE_ADDFILE','BOUNDCHECK','BIN$','BIFF_WRITETEXT','BIFF_WRITENUMBER','BIFF_WRITEDATE','BIFF_SETROWHEIGHT','BIFF_SETCOLWIDTH',
        +            'BIFF_SETBUFFER','BIFF_CREATEFILE','BIFF_CLOSEFILE','BETWEEN','BEEP','BAR','ATTACH','ATN',
        +            'AT','ASSIGN','ASCIZ','ASCIIZ','ASCII2UNICODE','ASCENDING','ASCEND','ASC',
        +            'AS','ARRAY','ARCTANH','ARCSINH','ARCSIN','ARCSECH','ARCSEC','ARCCSCH',
        +            'ARCCSC','ARCCOTH','ARCCOT','ARCCOSH','ARCCOS','APP_TIMER','APP_SOURCEPATH','APP_SOURCENAME',
        +            'APP_SOURCEFULLNAME','APP_PATH','APP_NAME','APP_LISTVARIABLES','APP_LISTKEYWORDS','APP_LISTFUNCTIONS','APP_LISTEQUATES','APP_INCLUDEPATH',
        +            'APP_GETMODULEFULLPATH','APP_COUNTER','APPEND','ANY','ANIMATE_STOP','ANIMATE_PLAY','ANIMATE_OPEN','AND',
        +            'ALIAS','ALERT','ADD','ACODE$','ABS','%DEF','#MINVERSION','#IF',
        +            '#ENDIF','#ELSEIF','#ELSE','#DEFAULT','#DEF','SQLWRITEPRIVATEPROFILESTRING','SQLWRITEFILEDSN','SQLWRITEDSNTOINI',
        +            'SQLVALIDDSN','SQLTRANSACT','SQLTABLES','SQLTABLEPRIVILEGES','SQLSTATISTICS','SQLSPECIALCOLUMNS','SQLSETSTMTOPTION','SQLSETSTMTATTR',
        +            'SQLSETSCROLLOPTIONS','SQLSETPOS','SQLSETPARAM','SQLSETENVATTR','SQLSETDESCREC','SQLSETDESCFIELD','SQLSETCURSORNAME','SQLSETCONNECTOPTION',
        +            'SQLSETCONNECTATTR','SQLSETCONFIGMODE','SQLROWCOUNT','SQLREMOVETRANSLATOR','SQLREMOVEDSNFROMINI','SQLREMOVEDRIVERMANAGER','SQLREMOVEDRIVER','SQLREADFILEDSN',
        +            'SQLPUTDATA','SQLPROCEDURES','SQLPROCEDURECOLUMNS','SQLPRIMARYKEYS','SQLPREPARE','SQLPOSTINSTALLERERROR','SQLPARAMOPTIONS','SQLPARAMDATA',
        +            'SQLNUMRESULTCOLS','SQLNUMPARAMS','SQLNATIVESQL','SQLMORERESULTS','SQLMANAGEDATASOURCES','SQLINSTALLTRANSLATOREX','SQLINSTALLERERROR','SQLINSTALLDRIVERMANAGER',
        +            'SQLINSTALLDRIVEREX','SQLGETTYPEINFO','SQLGETTRANSLATOR','SQLGETSTMTOPTION','SQLGETSTMTATTR','SQLGETPRIVATEPROFILESTRING','SQLGETINSTALLEDDRIVERS','SQLGETINFO',
        +            'SQLGETFUNCTIONS','SQLGETENVATTR','SQLGETDIAGREC','SQLGETDIAGFIELD','SQLGETDESCREC','SQLGETDESCFIELD','SQLGETDATA','SQLGETCURSORNAME',
        +            'SQLGETCONNECTOPTION','SQLGETCONNECTATTR','SQLGETCONFIGMODE','SQLFREESTMT','SQLFREEHANDLE','SQLFREEENV','SQLFREECONNECT','SQLFOREIGNKEYS',
        +            'SQLFETCHSCROLL','SQLFETCH','SQLEXTENDEDFETCH','SQLEXECUTE','SQLEXECDIRECT','SQLERROR','SQLENDTRAN','SQLDRIVERS',
        +            'SQLDRIVERCONNECT','SQLDISCONNECT','SQLDESCRIBEPARAM','SQLDESCRIBECOL','SQLDATASOURCES','SQLCREATEDATASOURCE','SQLCOPYDESC','SQLCONNECT',
        +            'SQLCONFIGDRIVER','SQLCONFIGDATASOURCE','SQLCOLUMNS','SQLCOLUMNPRIVILEGES','SQLCOLATTRIBUTES','SQLCOLATTRIBUTE','SQLCLOSECURSOR','SQLCANCEL',
        +            'SQLBULKOPERATIONS','SQLBROWSECONNECT','SQLBINDPARAMETER','SQLBINDPARAM','SQLBINDCOL','SQLALLOCSTMT','SQLALLOCHANDLE','SQLALLOCENV',
        +            'SQLALLOCCONNECT','ODBCWRONGDRIVER','ODBCWRITEPRIVATEPROFILESTRING','ODBCWRITEFILEDSN','ODBCWRITEDSNTOINI','ODBCVALIDDSN','ODBCUPDATERECORD','ODBCUPDATEBYBOOKMARK',
        +            'ODBCUNLOCKRECORD','ODBCUNBINDCOLUMNS','ODBCUNBINDCOL','ODBCTABLESCOUNT','ODBCTABLES','ODBCTABLEPRIVILEGESCOUNT','ODBCTABLEPRIVILEGES','ODBCSUPPORTS',
        +            'ODBCSTATTABLESCHEMANAME','ODBCSTATTABLEPAGES','ODBCSTATTABLECATALOGNAME','ODBCSTATTABLECARDINALITY','ODBCSTATISTICSCOUNT','ODBCSTATISTICS','ODBCSTATINDEXSORTSEQUENCE','ODBCSTATINDEXSCHEMANAME',
        +            'ODBCSTATINDEXQUALIFIER','ODBCSTATINDEXPAGES','ODBCSTATINDEXFILTERCONDITION','ODBCSTATINDEXCOLUMNORDINALPOSITION','ODBCSTATINDEXCOLUMNNAME','ODBCSTATINDEXCATALOGNAME','ODBCSTATINDEXCARDINALITY','ODBCSTATINDEXALLOWDUPLICATES',
        +            'ODBCSPECIALCOLUMNSCOUNT','ODBCSPECIALCOLUMNS','ODBCSETTXNISOLATION','ODBCSETTRANSLATELIB','ODBCSETTRACEFILE','ODBCSETTRACE','ODBCSETSTMTUSEBOOKMARKS','ODBCSETSTMTSIMULATECURSOR',
        +            'ODBCSETSTMTROWSTATUSPTR','ODBCSETSTMTROWSFETCHEDPTR','ODBCSETSTMTROWOPERATIONPTR','ODBCSETSTMTROWBINDTYPE','ODBCSETSTMTROWBINDOFFSETPTR','ODBCSETSTMTROWARRAYSIZE','ODBCSETSTMTRETRIEVEDATA','ODBCSETSTMTQUERYTIMEOUT',
        +            'ODBCSETSTMTPARAMSTATUSPTR','ODBCSETSTMTPARAMSPROCESSEDPTR','ODBCSETSTMTPARAMSETSIZE','ODBCSETSTMTPARAMOPERATIONPTR','ODBCSETSTMTPARAMBINDTYPE','ODBCSETSTMTPARAMBINDOFFSETPTR','ODBCSETSTMTNOSCAN','ODBCSETSTMTMETADATAID',
        +            'ODBCSETSTMTMAXROWS','ODBCSETSTMTMAXLENGTH','ODBCSETSTMTKEYSETSIZE','ODBCSETSTMTFETCHBOOKMARKPTR','ODBCSETSTMTENABLEAUTOIPD','ODBCSETSTMTCURSORTYPE','ODBCSETSTMTCURSORSENSITIVITY','ODBCSETSTMTCURSORSCROLLABLE',
        +            'ODBCSETSTMTCONCURRENCY','ODBCSETSTMTATTR','ODBCSETSTMTASYNCENABLE','ODBCSETSTMTAPPROWDESC','ODBCSETSTMTAPPPARAMDESC','ODBCSETSTATICCURSOR','ODBCSETROWVERCONCURRENCY','ODBCSETRESULT',
        +            'ODBCSETRELATIVEPOSITION','ODBCSETREADONLYCONCURRENCY','ODBCSETQUIETMODE','ODBCSETPOSITION','ODBCSETPOS','ODBCSETPACKETMODE','ODBCSETOPTIMISTICCONCURRENCY','ODBCSETODBCCURSORS',
        +            'ODBCSETMULTIUSERKEYSETCURSOR','ODBCSETMETADATAID','ODBCSETLOGINTIMEOUT','ODBCSETLOCKCONCURRENCY','ODBCSETKEYSETDRIVENCURSOR','ODBCSETFORWARDONLYCURSOR','ODBCSETENVOUTPUTNTS','ODBCSETENVODBCVERSION',
        +            'ODBCSETENVCPMATCH','ODBCSETENVCONNECTIONPOOLING','ODBCSETENVATTR','ODBCSETDYNAMICCURSOR','ODBCSETDESCREC','ODBCSETDESCFIELD','ODBCSETCURSORTYPE','ODBCSETCURSORSENSITIVITY',
        +            'ODBCSETCURSORSCROLLABILITY','ODBCSETCURSORNAME','ODBCSETCURSORLOCKTYPE','ODBCSETCURSORKEYSETSIZE','ODBCSETCURSORCONCURRENCY','ODBCSETCURRENTCATALOG','ODBCSETCONNECTIONTIMEOUT','ODBCSETCONNECTATTR',
        +            'ODBCSETCONFIGMODE','ODBCSETCONCURVALUESCONCURRENCY','ODBCSETAUTOCOMMITON','ODBCSETAUTOCOMMITOFF','ODBCSETAUTOCOMMIT','ODBCSETASYNCENABLE','ODBCSETACCESSMODE','ODBCSETABSOLUTEPOSITION',
        +            'ODBCROWCOUNT','ODBCROLLBACKTRAN','ODBCROLLBACKENVTRAN','ODBCROLLBACKDBCTRAN','ODBCRESULT','ODBCRESETPARAMS','ODBCREMOVETRANSLATOR','ODBCREMOVEDSNFROMINI',
        +            'ODBCREMOVEDRIVERMANAGER','ODBCREMOVEDRIVER','ODBCREFRESHRECORD','ODBCRECORDCOUNT','ODBCREADFILEDSN','ODBCQUOTEDIDENTIFIERCASE','ODBCPUTDATA','ODBCPROCEDURESCOUNT',
        +            'ODBCPROCEDURES','ODBCPROCEDURECOLUMNSCOUNT','ODBCPROCEDURECOLUMNS','ODBCPRIMARYKEYSCOUNT','ODBCPRIMARYKEYS','ODBCPREPARE','ODBCPOSTINSTALLERERROR','ODBCPARAMDATA',
        +            'ODBCOPENSTMT','ODBCOPENCONNECTION','ODBCNUMRESULTCOLS','ODBCNUMPARAMS','ODBCNATIVESQL','ODBCMOVEPREVIOUS','ODBCMOVENEXT','ODBCMOVELAST',
        +            'ODBCMOVEFIRST','ODBCMOVE','ODBCMORERESULTS','ODBCMANAGEDATASOURCES','ODBCLOCKRECORD','ODBCINSTALLTRANSLATOREX','ODBCINSTALLERERROR','ODBCINSTALLDRIVERMANAGER',
        +            'ODBCINSTALLDRIVEREX','ODBCGETXOPENCLIYEAR','ODBCGETUSERNAME','ODBCGETUNION','ODBCGETTYPEINFOCOUNT','ODBCGETTYPEINFO','ODBCGETTXNISOLATIONOPTION','ODBCGETTXNISOLATION',
        +            'ODBCGETTXNCAPABLE','ODBCGETTRANSLATOR','ODBCGETTRANSLATELIB','ODBCGETTRACEFILE','ODBCGETTRACE','ODBCGETTIMEDATEFUNCTIONS','ODBCGETTIMEDATEDIFFINTERVALS','ODBCGETTIMEDATEADDINTERVALS',
        +            'ODBCGETTABLETERM','ODBCGETSYSTEMFUNCTIONS','ODBCGETSUBQUERIES','ODBCGETSTRINGFUNCTIONS','ODBCGETSTMTUSEBOOKMARKS','ODBCGETSTMTSQLSTATE','ODBCGETSTMTSIMULATECURSOR','ODBCGETSTMTROWSTATUSPTR',
        +            'ODBCGETSTMTROWSFETCHEDPTR','ODBCGETSTMTROWOPERATIONPTR','ODBCGETSTMTROWNUMBER','ODBCGETSTMTROWBINDTYPE','ODBCGETSTMTROWBINDOFFSETPTR','ODBCGETSTMTROWARRAYSIZE','ODBCGETSTMTRETRIEVEDATA','ODBCGETSTMTQUERYTIMEOUT',
        +            'ODBCGETSTMTPARAMSTATUSPTR','ODBCGETSTMTPARAMSPROCESSEDPTR','ODBCGETSTMTPARAMSETSIZE','ODBCGETSTMTPARAMOPERATIONPTR','ODBCGETSTMTPARAMBINDTYPE','ODBCGETSTMTPARAMBINDOFFSETPTR','ODBCGETSTMTNOSCAN','ODBCGETSTMTMETADATAID',
        +            'ODBCGETSTMTMAXROWS','ODBCGETSTMTMAXLENGTH','ODBCGETSTMTKEYSETSIZE','ODBCGETSTMTIMPROWDESC','ODBCGETSTMTIMPPARAMDESC','ODBCGETSTMTFETCHBOOKMARKPTR','ODBCGETSTMTERRORINFO','ODBCGETSTMTENABLEAUTOIPD',
        +            'ODBCGETSTMTCURSORTYPE','ODBCGETSTMTCURSORSENSITIVITY','ODBCGETSTMTCURSORSCROLLABLE','ODBCGETSTMTCONCURRENCY','ODBCGETSTMTATTR','ODBCGETSTMTASYNCENABLE','ODBCGETSTMTAPPROWDESC','ODBCGETSTMTAPPPARAMDESC',
        +            'ODBCGETSTATICCURSORATTRIBUTES2','ODBCGETSTATICCURSORATTRIBUTES1','ODBCGETSTATEMENTSQLSTATE','ODBCGETSTATEMENTERRORINFO','ODBCGETSTANDARDCLICONFORMANCE','ODBCGETSQLSTATE','ODBCGETSQLCONFORMANCE','ODBCGETSQL92VALUEEXPRESSIONS',
        +            'ODBCGETSQL92STRINGFUNCTIONS','ODBCGETSQL92ROWVALUECONSTRUCTOR','ODBCGETSQL92REVOKE','ODBCGETSQL92RELATIONALJOINOPERATORS','ODBCGETSQL92PREDICATES','ODBCGETSQL92NUMERICVALUEFUNCTIONS','ODBCGETSQL92GRANT','ODBCGETSQL92FOREIGNKEYUPDATERULE',
        +            'ODBCGETSQL92FOREIGNKEYDELETERULE','ODBCGETSQL92DATETIMEFUNCTIONS','ODBCGETSPECIALCHARACTERS','ODBCGETSERVERNAME','ODBCGETSEARCHPATTERNESCAPE','ODBCGETSCROLLOPTIONS','ODBCGETSCHEMAUSAGE','ODBCGETSCHEMATERM',
        +            'ODBCGETROWUPDATES','ODBCGETQUIETMODE','ODBCGETPROCEDURETERM','ODBCGETPROCEDURESSUPPORT','ODBCGETPRIVATEPROFILESTRING','ODBCGETPOSOPERATIONS','ODBCGETPARAMARRAYSELECTS','ODBCGETPARAMARRAYROWCOUNTS',
        +            'ODBCGETPACKETMODE','ODBCGETOUTERJOINS','ODBCGETORDERBYCOLUMNSINSELECT','ODBCGETOJCAPABILITIES','ODBCGETODBCVER','ODBCGETODBCINTERFACECONFORMANCE','ODBCGETODBCCURSORS','ODBCGETNUMERICFUNCTIONS',
        +            'ODBCGETNULLCOLLATION','ODBCGETNONNULLABLECOLUMNS','ODBCGETNEEDLONGDATALEN','ODBCGETMULTRESULTSETS','ODBCGETMULTIPLEACTIVETXN','ODBCGETMETADATAID','ODBCGETMAXUSERNAMELEN','ODBCGETMAXTABLESINSELECT',
        +            'ODBCGETMAXTABLENAMELEN','ODBCGETMAXSTATEMENTLEN','ODBCGETMAXSCHEMANAMELEN','ODBCGETMAXROWSIZEINCLUDESLONG','ODBCGETMAXROWSIZE','ODBCGETMAXPROCEDURENAMELEN','ODBCGETMAXINDEXSIZE','ODBCGETMAXIDENTIFIERLEN',
        +            'ODBCGETMAXDRIVERCONNECTIONS','ODBCGETMAXCURSORNAMELEN','ODBCGETMAXCONCURRENTACTIVITIES','ODBCGETMAXCOLUMNSINTABLE','ODBCGETMAXCOLUMNSINSELECT','ODBCGETMAXCOLUMNSINORDERBY','ODBCGETMAXCOLUMNSININDEX','ODBCGETMAXCOLUMNSINGROUPBY',
        +            'ODBCGETMAXCOLUMNNAMELEN','ODBCGETMAXCHARLITERALLEN','ODBCGETMAXCATALOGNAMELEN','ODBCGETMAXBINARYLITERALLEN','ODBCGETMAXASYNCCONCURRENTSTATEMENTS','ODBCGETLONGVARCHARDATABYCOLNAME','ODBCGETLONGVARCHARDATA','ODBCGETLOGINTIMEOUT',
        +            'ODBCGETLIKEESCAPECLAUSE','ODBCGETKEYWORDS','ODBCGETKEYSETCURSORATTRIBUTES2','ODBCGETKEYSETCURSORATTRIBUTES1','ODBCGETINTEGRITY','ODBCGETINSTALLERERRORMESSAGE','ODBCGETINSTALLERERRORCODE','ODBCGETINSTALLEDDRIVERS',
        +            'ODBCGETINSERTSTATEMENT','ODBCGETINFOSTR','ODBCGETINFOSCHEMAVIEWS','ODBCGETINFOLONG','ODBCGETINFOINT','ODBCGETINFO','ODBCGETINDEXKEYWORDS','ODBCGETIMPROWDESCREC',
        +            'ODBCGETIMPROWDESCFIELDTYPE','ODBCGETIMPROWDESCFIELDSCALE','ODBCGETIMPROWDESCFIELDPRECISION','ODBCGETIMPROWDESCFIELDOCTETLENGTH','ODBCGETIMPROWDESCFIELDNULLABLE','ODBCGETIMPROWDESCFIELDNAME','ODBCGETIMPROWDESCFIELD','ODBCGETIMPPARAMDESCREC',
        +            'ODBCGETIMPPARAMDESCFIELDTYPE','ODBCGETIMPPARAMDESCFIELDSCALE','ODBCGETIMPPARAMDESCFIELDPRECISION','ODBCGETIMPPARAMDESCFIELDOCTETLENGTH','ODBCGETIMPPARAMDESCFIELDNULLABLE','ODBCGETIMPPARAMDESCFIELDNAME','ODBCGETIMPPARAMDESCFIELD','ODBCGETIDENTIFIERQUOTECHAR',
        +            'ODBCGETIDENTIFIERCASE','ODBCGETGROUPBY','ODBCGETFUNCTIONS','ODBCGETFORWARDONLYCURSORATTRIBUTES2','ODBCGETFORWARDONLYCURSORATTRIBUTES1','ODBCGETFILEUSAGE','ODBCGETEXPRESSIONSINORDERBY','ODBCGETERRORINFO',
        +            'ODBCGETENVSQLSTATE','ODBCGETENVOUTPUTNTS','ODBCGETENVODBCVERSION','ODBCGETENVIRONMENTSQLSTATE','ODBCGETENVIRONMENTERRORINFO','ODBCGETENVERRORINFO','ODBCGETENVCPMATCH','ODBCGETENVCONNECTIONPOOLING',
        +            'ODBCGETENVATTR','ODBCGETDYNAMICCURSORATTRIBUTES2','ODBCGETDYNAMICCURSORATTRIBUTES1','ODBCGETDROPVIEW','ODBCGETDROPTRANSLATION','ODBCGETDROPTABLE','ODBCGETDROPSCHEMA','ODBCGETDROPDOMAIN',
        +            'ODBCGETDROPCOLLATION','ODBCGETDROPCHARACTERSET','ODBCGETDROPASSERTION','ODBCGETDRIVERVER','ODBCGETDRIVERODBCVER','ODBCGETDRIVERNAME','ODBCGETDRIVERMANAGERINSTALLPATH','ODBCGETDRIVERHLIB',
        +            'ODBCGETDRIVERHENV','ODBCGETDRIVERHDBC','ODBCGETDMVERMINOR','ODBCGETDMVERMAJOR','ODBCGETDMVER','ODBCGETDIAGREC','ODBCGETDIAGFIELD','ODBCGETDESCSQLSTATE',
        +            'ODBCGETDESCRIPTORSQLSTATE','ODBCGETDESCRIPTORERRORINFO','ODBCGETDESCRIBEPARAMETER','ODBCGETDESCREC','ODBCGETDESCFIELD','ODBCGETDESCERRORINFO','ODBCGETDEFAULTTXNISOLATION','ODBCGETDDLINDEX',
        +            'ODBCGETDBMSVER','ODBCGETDBMSNAME','ODBCGETDBCSQLSTATE','ODBCGETDBCERRORINFO','ODBCGETDATETIMELITERALS','ODBCGETDATASTRINGBYCOLNAME','ODBCGETDATASTRING','ODBCGETDATASOURCEREADONLY',
        +            'ODBCGETDATASOURCENAME','ODBCGETDATAEXTENSIONS','ODBCGETDATABASENAME','ODBCGETDATA','ODBCGETCURSORTYPE','ODBCGETCURSORSENSITIVITYSUPPORT','ODBCGETCURSORSENSITIVITY','ODBCGETCURSORSCROLLABILITY',
        +            'ODBCGETCURSORROLLBACKBEHAVIOR','ODBCGETCURSORNAME','ODBCGETCURSORLOCKTYPE','ODBCGETCURSORKEYSETSIZE','ODBCGETCURSORCONCURRENCY','ODBCGETCURSORCOMMITBEHAVIOR','ODBCGETCURRENTCATALOG','ODBCGETCREATEVIEW',
        +            'ODBCGETCREATETRANSLATION','ODBCGETCREATETABLE','ODBCGETCREATESCHEMA','ODBCGETCREATEDOMAIN','ODBCGETCREATECOLLATION','ODBCGETCREATECHARACTERSET','ODBCGETCREATEASSERTION','ODBCGETCORRELATIONNAME',
        +            'ODBCGETCONVERTVARCHAR','ODBCGETCONVERTVARBINARY','ODBCGETCONVERTTINYINT','ODBCGETCONVERTTIMESTAMP','ODBCGETCONVERTTIME','ODBCGETCONVERTSMALLINT','ODBCGETCONVERTREAL','ODBCGETCONVERTNUMERIC',
        +            'ODBCGETCONVERTLONGVARCHAR','ODBCGETCONVERTLONGVARBINARY','ODBCGETCONVERTINTERVALYEARMONTH','ODBCGETCONVERTINTERVALDAYTIME','ODBCGETCONVERTINTEGER','ODBCGETCONVERTFUNCTIONS','ODBCGETCONVERTFLOAT','ODBCGETCONVERTDOUBLE',
        +            'ODBCGETCONVERTDECIMAL','ODBCGETCONVERTDATE','ODBCGETCONVERTCHAR','ODBCGETCONVERTBIT','ODBCGETCONVERTBINARY','ODBCGETCONVERTBIGINT','ODBCGETCONNECTIONTIMEOUT','ODBCGETCONNECTIONSQLSTATE',
        +            'ODBCGETCONNECTIONERRORINFO','ODBCGETCONNECTIONDEAD','ODBCGETCONNECTATTR','ODBCGETCONFIGMODE','ODBCGETCONCATNULLBEHAVIOR','ODBCGETCOLUMNALIAS','ODBCGETCOLLATIONSEQ','ODBCGETCATALOGUSAGE',
        +            'ODBCGETCATALOGTERM','ODBCGETCATALOGNAMESEPARATOR','ODBCGETCATALOGNAME','ODBCGETCATALOGLOCATION','ODBCGETBOOKMARKPERSISTENCE','ODBCGETBATCHSUPPORT','ODBCGETBATCHROWCOUNT','ODBCGETAUTOIPD',
        +            'ODBCGETAUTOCOMMIT','ODBCGETASYNCMODE','ODBCGETASYNCENABLE','ODBCGETALTERTABLE','ODBCGETALTERDOMAIN','ODBCGETAGGREGATEFUNCTIONS','ODBCGETACTIVEENVIRONMENTS','ODBCGETACCESSMODE',
        +            'ODBCGETACCESSIBLETABLES','ODBCGETACCESSIBLEPROCEDURES','ODBCFREESTMT','ODBCFREEHANDLE','ODBCFREEENV','ODBCFREEDESC','ODBCFREEDBC','ODBCFREECONNECT',
        +            'ODBCFOREIGNKEYSCOUNT','ODBCFOREIGNKEYS','ODBCFETCHSCROLL','ODBCFETCHBYBOOKMARK','ODBCFETCH','ODBCEXTENDEDFETCH','ODBCEXECUTE','ODBCEXECDIRECT',
        +            'ODBCERROR','ODBCEOF','ODBCENDTRAN','ODBCDRIVERSCOUNT','ODBCDRIVERS','ODBCDRIVERCONNECT','ODBCDISCONNECT','ODBCDESCRIBEPARAM',
        +            'ODBCDESCRIBECOL','ODBCDELETERECORD','ODBCDELETEBYBOOKMARK','ODBCDATASOURCES','ODBCCREATEDATASOURCE','ODBCCOPYDESC','ODBCCONNECTIONISDEAD','ODBCCONNECTIONISALIVE',
        +            'ODBCCONNECT','ODBCCONFIGDRIVER','ODBCCONFIGDATASOURCE','ODBCCOMMITTRAN','ODBCCOMMITENVTRAN','ODBCCOMMITDBCTRAN','ODBCCOLUPDATABLE','ODBCCOLUNSIGNED',
        +            'ODBCCOLUNNAMED','ODBCCOLUMNSCOUNT','ODBCCOLUMNS','ODBCCOLUMNPRIVILEGESCOUNT','ODBCCOLUMNPRIVILEGES','ODBCCOLUMN','ODBCCOLTYPENAME','ODBCCOLTYPE',
        +            'ODBCCOLTABLENAME','ODBCCOLSEARCHABLE','ODBCCOLSCHEMANAME','ODBCCOLSCALE','ODBCCOLPRECISION','ODBCCOLOCTETLENGTH','ODBCCOLNUMPRECRADIX','ODBCCOLNULLABLE',
        +            'ODBCCOLNAME','ODBCCOLLOCALTYPENAME','ODBCCOLLITERALSUFFIX','ODBCCOLLITERALPREFIX','ODBCCOLLENGTH','ODBCCOLLABEL','ODBCCOLISNULL','ODBCCOLFIXEDPRECSCALE',
        +            'ODBCCOLDISPLAYSIZE','ODBCCOLCOUNT','ODBCCOLCONCISETYPE','ODBCCOLCATALOGNAME','ODBCCOLCASESENSITIVE','ODBCCOLBASETABLENAME','ODBCCOLBASECOLUMNNAME','ODBCCOLAUTOUNIQUEVALUE',
        +            'ODBCCOLATTRIBUTE','ODBCCLOSESTMTCURSOR','ODBCCLOSESTMT','ODBCCLOSECURSOR','ODBCCLOSECONNECTION','ODBCCLEARRESULT','ODBCCANCEL','ODBCBULKOPERATIONS',
        +            'ODBCBROWSECONNECT','ODBCBINDPARAMETER','ODBCBINDCOLTOWORD','ODBCBINDCOLTOTIMESTAMP','ODBCBINDCOLTOTIME','ODBCBINDCOLTOSTRING','ODBCBINDCOLTOSINGLE','ODBCBINDCOLTOQUAD',
        +            'ODBCBINDCOLTONUMERIC','ODBCBINDCOLTOLONG','ODBCBINDCOLTOINTEGER','ODBCBINDCOLTODWORD','ODBCBINDCOLTODOUBLE','ODBCBINDCOLTODECIMAL','ODBCBINDCOLTODATE','ODBCBINDCOLTOCURRENCY',
        +            'ODBCBINDCOLTOBYTE','ODBCBINDCOLTOBIT','ODBCBINDCOLTOBINARY','ODBCBINDCOL','ODBCALLOCSTMT','ODBCALLOCHANDLE','ODBCALLOCENV','ODBCALLOCDESC',
        +            'ODBCALLOCDBC','ODBCALLOCCONNECT','ODBCADDRECORD','GLVIEWPORT','GLVERTEXPOINTER','GLVERTEX4SV','GLVERTEX4S','GLVERTEX4IV',
        +            'GLVERTEX4I','GLVERTEX4FV','GLVERTEX4F','GLVERTEX4DV','GLVERTEX4D','GLVERTEX3SV','GLVERTEX3S','GLVERTEX3IV',
        +            'GLVERTEX3I','GLVERTEX3FV','GLVERTEX3F','GLVERTEX3DV','GLVERTEX3D','GLVERTEX2SV','GLVERTEX2S','GLVERTEX2IV',
        +            'GLVERTEX2I','GLVERTEX2FV','GLVERTEX2F','GLVERTEX2DV','GLVERTEX2D','GLUUNPROJECT','GLUTESSVERTEX','GLUTESSPROPERTY',
        +            'GLUTESSNORMAL','GLUTESSENDPOLYGON','GLUTESSENDCONTOUR','GLUTESSCALLBACK','GLUTESSBEGINPOLYGON','GLUTESSBEGINCONTOUR','GLUSPHERE','GLUSCALEIMAGE',
        +            'GLUQUADRICTEXTURE','GLUQUADRICORIENTATION','GLUQUADRICNORMALS','GLUQUADRICDRAWSTYLE','GLUQUADRICCALLBACK','GLUPWLCURVE','GLUPROJECT','GLUPICKMATRIX',
        +            'GLUPERSPECTIVE','GLUPARTIALDISK','GLUORTHO2D','GLUNURBSSURFACE','GLUNURBSPROPERTY','GLUNURBSCURVE','GLUNURBSCALLBACK','GLUNEXTCONTOUR',
        +            'GLUNEWTESS','GLUNEWQUADRIC','GLUNEWNURBSRENDERER','GLULOOKAT','GLULOADSAMPLINGMATRICES','GLUGETTESSPROPERTY','GLUGETSTRING','GLUGETNURBSPROPERTY',
        +            'GLUERRORSTRING','GLUENDTRIM','GLUENDSURFACE','GLUENDPOLYGON','GLUENDCURVE','GLUDISK','GLUDELETETESS','GLUDELETEQUADRIC',
        +            'GLUDELETENURBSRENDERER','GLUCYLINDER','GLUBUILD2DMIPMAPS','GLUBUILD1DMIPMAPS','GLUBEGINTRIM','GLUBEGINSURFACE','GLUBEGINPOLYGON','GLUBEGINCURVE',
        +            'GLTRANSLATEF','GLTRANSLATED','GLTEXSUBIMAGE2D','GLTEXSUBIMAGE1D','GLTEXPARAMETERIV','GLTEXPARAMETERI','GLTEXPARAMETERFV','GLTEXPARAMETERF',
        +            'GLTEXIMAGE2D','GLTEXIMAGE1D','GLTEXGENIV','GLTEXGENI','GLTEXGENFV','GLTEXGENF','GLTEXGENDV','GLTEXGEND',
        +            'GLTEXENVIV','GLTEXENVI','GLTEXENVFV','GLTEXENVF','GLTEXCOORDPOINTER','GLTEXCOORD4SV','GLTEXCOORD4S','GLTEXCOORD4IV',
        +            'GLTEXCOORD4I','GLTEXCOORD4FV','GLTEXCOORD4F','GLTEXCOORD4DV','GLTEXCOORD4D','GLTEXCOORD3SV','GLTEXCOORD3S','GLTEXCOORD3IV',
        +            'GLTEXCOORD3I','GLTEXCOORD3FV','GLTEXCOORD3F','GLTEXCOORD3DV','GLTEXCOORD3D','GLTEXCOORD2SV','GLTEXCOORD2S','GLTEXCOORD2IV',
        +            'GLTEXCOORD2I','GLTEXCOORD2FV','GLTEXCOORD2F','GLTEXCOORD2DV','GLTEXCOORD2D','GLTEXCOORD1SV','GLTEXCOORD1S','GLTEXCOORD1IV',
        +            'GLTEXCOORD1I','GLTEXCOORD1FV','GLTEXCOORD1F','GLTEXCOORD1DV','GLTEXCOORD1D','GLSTENCILOP','GLSTENCILMASK','GLSTENCILFUNC',
        +            'GLSHADEMODEL','GLSELECTBUFFER','GLSCISSOR','GLSCALEF','GLSCALED','GLROTATEF','GLROTATED','GLRENDERMODE',
        +            'GLRECTSV','GLRECTS','GLRECTIV','GLRECTI','GLRECTFV','GLRECTF','GLRECTDV','GLRECTD',
        +            'GLREADPIXELS','GLREADBUFFER','GLRASTERPOS4SV','GLRASTERPOS4S','GLRASTERPOS4IV','GLRASTERPOS4I','GLRASTERPOS4FV','GLRASTERPOS4F',
        +            'GLRASTERPOS4DV','GLRASTERPOS4D','GLRASTERPOS3SV','GLRASTERPOS3S','GLRASTERPOS3IV','GLRASTERPOS3I','GLRASTERPOS3FV','GLRASTERPOS3F',
        +            'GLRASTERPOS3DV','GLRASTERPOS3D','GLRASTERPOS2SV','GLRASTERPOS2S','GLRASTERPOS2IV','GLRASTERPOS2I','GLRASTERPOS2FV','GLRASTERPOS2F',
        +            'GLRASTERPOS2DV','GLRASTERPOS2D','GLPUSHNAME','GLPUSHMATRIX','GLPUSHCLIENTATTRIB','GLPUSHATTRIB','GLPRIORITIZETEXTURES','GLPOPNAME',
        +            'GLPOPMATRIX','GLPOPCLIENTATTRIB','GLPOPATTRIB','GLPOLYGONSTIPPLE','GLPOLYGONOFFSET','GLPOLYGONMODE','GLPOINTSIZE','GLPIXELZOOM',
        +            'GLPIXELTRANSFERI','GLPIXELTRANSFERF','GLPIXELSTOREI','GLPIXELSTOREF','GLPIXELMAPUSV','GLPIXELMAPUIV','GLPIXELMAPFV','GLPASSTHROUGH',
        +            'GLORTHO','GLNORMALPOINTER','GLNORMAL3SV','GLNORMAL3S','GLNORMAL3IV','GLNORMAL3I','GLNORMAL3FV','GLNORMAL3F',
        +            'GLNORMAL3DV','GLNORMAL3D','GLNORMAL3BV','GLNORMAL3B','GLNEWLIST','GLMULTMATRIXF','GLMULTMATRIXD','GLMATRIXMODE',
        +            'GLMATERIALIV','GLMATERIALI','GLMATERIALFV','GLMATERIALF','GLMAPGRID2F','GLMAPGRID2D','GLMAPGRID1F','GLMAPGRID1D',
        +            'GLMAP2F','GLMAP2D','GLMAP1F','GLMAP1D','GLLOGICOP','GLLOADNAME','GLLOADMATRIXF','GLLOADMATRIXD',
        +            'GLLOADIDENTITY','GLLISTBASE','GLLINEWIDTH','GLLINESTIPPLE','GLLIGHTMODELIV','GLLIGHTMODELI','GLLIGHTMODELFV','GLLIGHTMODELF',
        +            'GLLIGHTIV','GLLIGHTI','GLLIGHTFV','GLLIGHTF','GLISTEXTURE','GLISLIST','GLISENABLED','GLINTERLEAVEDARRAYS',
        +            'GLINITNAMES','GLINDEXUBV','GLINDEXUB','GLINDEXSV','GLINDEXS','GLINDEXPOINTER','GLINDEXMASK','GLINDEXIV',
        +            'GLINDEXI','GLINDEXFV','GLINDEXF','GLINDEXDV','GLINDEXD','GLHINT','GLGETTEXPARAMETERIV','GLGETTEXPARAMETERFV',
        +            'GLGETTEXLEVELPARAMETERIV','GLGETTEXLEVELPARAMETERFV','GLGETTEXIMAGE','GLGETTEXGENIV','GLGETTEXGENFV','GLGETTEXGENDV','GLGETTEXENVIV','GLGETTEXENVFV',
        +            'GLGETSTRING','GLGETPOLYGONSTIPPLE','GLGETPOINTERV','GLGETPIXELMAPUSV','GLGETPIXELMAPUIV','GLGETPIXELMAPFV','GLGETMATERIALIV','GLGETMATERIALFV',
        +            'GLGETMAPIV','GLGETMAPFV','GLGETMAPDV','GLGETLIGHTIV','GLGETLIGHTFV','GLGETINTEGERV','GLGETFLOATV','GLGETERROR',
        +            'GLGETDOUBLEV','GLGETCLIPPLANE','GLGETBOOLEANV','GLGENTEXTURES','GLGENLISTS','GLFRUSTUM','GLFRONTFACE','GLFOGIV',
        +            'GLFOGI','GLFOGFV','GLFOGF','GLFLUSH','GLFINISH','GLFEEDBACKBUFFER','GLEVALPOINT2','GLEVALPOINT1',
        +            'GLEVALMESH2','GLEVALMESH1','GLEVALCOORD2FV','GLEVALCOORD2F','GLEVALCOORD2DV','GLEVALCOORD2D','GLEVALCOORD1FV','GLEVALCOORD1F',
        +            'GLEVALCOORD1DV','GLEVALCOORD1D','GLENDLIST','GLEND','GLENABLECLIENTSTATE','GLENABLE','GLEDGEFLAGV','GLEDGEFLAGPOINTER',
        +            'GLEDGEFLAG','GLDRAWPIXELS','GLDRAWELEMENTS','GLDRAWBUFFER','GLDRAWARRAYS','GLDISABLECLIENTSTATE','GLDISABLE','GLDEPTHRANGE',
        +            'GLDEPTHMASK','GLDEPTHFUNC','GLDELETETEXTURES','GLDELETELISTS','GLCULLFACE','GLCOPYTEXSUBIMAGE2D','GLCOPYTEXSUBIMAGE1D','GLCOPYTEXIMAGE2D',
        +            'GLCOPYTEXIMAGE1D','GLCOPYPIXELS','GLCOLORPOINTER','GLCOLORMATERIAL','GLCOLORMASK','GLCOLOR4USV','GLCOLOR4US','GLCOLOR4UIV',
        +            'GLCOLOR4UI','GLCOLOR4UBV','GLCOLOR4UB','GLCOLOR4SV','GLCOLOR4S','GLCOLOR4IV','GLCOLOR4I','GLCOLOR4FV',
        +            'GLCOLOR4F','GLCOLOR4DV','GLCOLOR4D','GLCOLOR4BV','GLCOLOR4B','GLCOLOR3USV','GLCOLOR3US','GLCOLOR3UIV',
        +            'GLCOLOR3UI','GLCOLOR3UBV','GLCOLOR3UB','GLCOLOR3SV','GLCOLOR3S','GLCOLOR3IV','GLCOLOR3I','GLCOLOR3FV',
        +            'GLCOLOR3F','GLCOLOR3DV','GLCOLOR3D','GLCOLOR3BV','GLCOLOR3B','GLCLIPPLANE','GLCLEARSTENCIL','GLCLEARINDEX',
        +            'GLCLEARDEPTH','GLCLEARCOLOR','GLCLEARACCUM','GLCLEAR','GLCALLLISTS','GLCALLLIST','GLBLENDFUNC','GLBITMAP',
        +            'GLBINDTEXTURE','GLBEGIN','GLARRAYELEMENT','GLARETEXTURESRESIDENT','GLALPHAFUNC','GLACCUM'),
        +        2 => array(
        +            '$BEL','$BS','$CR','$CRLF','$DQ','$DT_DATE_SEPARATOR','$DT_LANGUAGE','$DT_TIME_SEPARATOR',
        +            '$ESC','$FF','$LF','$NUL','$PC_SD_MY_PC','$SPC','$SQL_OPT_TRACE_FILE_DEFAULT','$SQL_SPEC_STRING',
        +            '$TAB','$TRACKBAR_CLASS','$VT','%ACM_OPEN','%ACM_OPENW','%ACM_PLAY','%ACM_STOP','%ACN_START',
        +            '%ACN_STOP','%ACS_AUTOPLAY','%ACS_CENTER','%ACS_TIMER','%ACS_TRANSPARENT','%APP_COUNTER_FUNLOOKUP','%APP_COUNTER_KEYLOOKUP','%APP_COUNTER_LOOKUP',
        +            '%APP_COUNTER_TESTALPHA','%APP_COUNTER_UDTLOOKUP','%APP_COUNTER_VARLOOKUP','%APP_TIMER_EXECTOTAL','%APP_TIMER_INIT','%APP_TIMER_LOAD','%APP_TIMER_PREPROCESSOR','%AW_ACTIVATE',
        +            '%AW_BLEND','%AW_CENTER','%AW_HIDE','%AW_HOR_NEGATIVE','%AW_HOR_POSITIVE','%AW_SLIDE','%AW_VER_NEGATIVE','%AW_VER_POSITIVE',
        +            '%BCM_FIRST','%BLACK','%BLUE','%BM_GETCHECK','%BM_SETCHECK','%BST_CHECKED','%BST_UNCHECKED','%BS_AUTOCHECKBOX',
        +            '%BS_BOTTOM','%BS_CENTER','%BS_DEFAULT','%BS_DEFPUSHBUTTON','%BS_FLAT','%BS_LEFT','%BS_LEFTTEXT','%BS_MULTILINE',
        +            '%BS_NOTIFY','%BS_OWNERDRAW','%BS_PUSHLIKE','%BS_RIGHT','%BS_TOP','%BS_VCENTER','%BUNDLE_BUILDER_CANCELLED','%CBM_FIRST',
        +            '%CBN_CLOSEUP','%CBN_DBLCLK','%CBN_DROPDOWN','%CBN_EDITCHANGE','%CBN_EDITUPDATE','%CBN_ERRSPACE','%CBN_KILLFOCUS','%CBN_SELCANCEL',
        +            '%CBN_SELCHANGE','%CBN_SELENDCANCEL','%CBN_SELENDOK','%CBN_SETFOCUS','%CBS_AUTOHSCROLL','%CBS_DISABLENOSCROLL','%CBS_DROPDOWN','%CBS_DROPDOWNLIST',
        +            '%CBS_HASSTRINGS','%CBS_LOWERCASE','%CBS_NOINTEGRALHEIGHT','%CBS_SIMPLE','%CBS_SORT','%CBS_UPPERCASE','%CB_SELECTSTRING','%CCM_FIRST',
        +            '%CC_ANYCOLOR','%CC_ENABLEHOOK','%CC_ENABLETEMPLATE','%CC_ENABLETEMPLATEHANDLE','%CC_FULLOPEN','%CC_PREVENTFULLOPEN','%CC_RGBINIT','%CC_SHOWHELP',
        +            '%CC_SOLIDCOLOR','%CFE_BOLD','%CFE_ITALIC','%CFE_LINK','%CFE_PROTECTED','%CFE_STRIKEOUT','%CFE_UNDERLINE','%CFM_ANIMATION',
        +            '%CFM_BACKCOLOR','%CFM_BOLD','%CFM_CHARSET','%CFM_COLOR','%CFM_FACE','%CFM_ITALIC','%CFM_KERNING','%CFM_LCID',
        +            '%CFM_LINK','%CFM_OFFSET','%CFM_PROTECTED','%CFM_REVAUTHOR','%CFM_SIZE','%CFM_SPACING','%CFM_STRIKEOUT','%CFM_STYLE',
        +            '%CFM_UNDERLINE','%CFM_UNDERLINETYPE','%CFM_WEIGHT','%CGI_ACCEPT_FILE_UPLOAD','%CGI_AUTO_ADD_SPECIAL_CHARS_PREFIX','%CGI_AUTO_CREATE_VARS','%CGI_BUFFERIZE_OUTPUT','%CGI_DOUBLE_QUOTE',
        +            '%CGI_FILE_UPLOAD_BASEPATH','%CGI_FORCE_SESSION_VALIDATION','%CGI_MAX_BYTE_FROM_STD_IN','%CGI_REQUEST_METHOD_GET','%CGI_REQUEST_METHOD_POST','%CGI_SESSION_FILE_BASEPATH','%CGI_SINGLE_QUOTE','%CGI_SPECIAL_CHARS_PREFIX',
        +            '%CGI_TEMPORARY_UPLOAD_PATH','%CGI_UPLOAD_CAN_OVERWRITE','%CGI_WRITE_LOG_FILE','%CGI_WRITE_VARS_INTO_LOG_FILE','%CONOLE_ATTACH_PARENT_PROCESS','%CONSOLE_BACKGROUND_BLUE','%CONSOLE_BACKGROUND_GREEN','%CONSOLE_BACKGROUND_INTENSITY',
        +            '%CONSOLE_BACKGROUND_RED','%CONSOLE_BOX_FLAG_3DOFF','%CONSOLE_BOX_FLAG_3DON','%CONSOLE_BOX_FLAG_SHADOW','%CONSOLE_COMMON_LVB_GRID_HORIZONTAL','%CONSOLE_COMMON_LVB_GRID_LVERTICAL','%CONSOLE_COMMON_LVB_GRID_RVERTICAL','%CONSOLE_COMMON_LVB_LEADING_BYTE',
        +            '%CONSOLE_COMMON_LVB_REVERSE_VIDEO','%CONSOLE_COMMON_LVB_TRAILING_BYTE','%CONSOLE_COMMON_LVB_UNDERSCORE','%CONSOLE_CTRL_BREAK_EVENT','%CONSOLE_CTRL_C_EVENT','%CONSOLE_DOUBLE_CLICK','%CONSOLE_ENABLE_AUTO_POSITION','%CONSOLE_ENABLE_ECHO_INPUT',
        +            '%CONSOLE_ENABLE_EXTENDED_FLAGS','%CONSOLE_ENABLE_INSERT_MODE','%CONSOLE_ENABLE_LINE_INPUT','%CONSOLE_ENABLE_MOUSE_INPUT','%CONSOLE_ENABLE_PROCESSED_INPUT','%CONSOLE_ENABLE_PROCESSED_OUTPUT','%CONSOLE_ENABLE_QUICK_EDIT_MODE','%CONSOLE_ENABLE_WINDOW_INPUT',
        +            '%CONSOLE_ENABLE_WRAP_AT_EOL_OUTPUT','%CONSOLE_FOREGROUND_BLUE','%CONSOLE_FOREGROUND_GREEN','%CONSOLE_FOREGROUND_INTENSITY','%CONSOLE_FOREGROUND_RED','%CONSOLE_LBUTTON','%CONSOLE_LINE_HORIZONTAL','%CONSOLE_LINE_VERTICAL',
        +            '%CONSOLE_MBUTTON','%CONSOLE_MOUSE_MOVED','%CONSOLE_MOUSE_WHEELED','%CONSOLE_RBUTTON','%CONSOLE_SCROLLBUF_DOWN','%CONSOLE_SCROLLBUF_UP','%CONSOLE_SCROLLWND_ABSOLUTE','%CONSOLE_SCROLLWND_RELATIVE',
        +            '%CONSOLE_STD_ERROR_HANDLE','%CONSOLE_STD_INPUT_HANDLE','%CONSOLE_STD_OUTPUT_HANDLE','%CONSOLE_SW_FORCEMINIMIZE','%CONSOLE_SW_HIDE','%CONSOLE_SW_MAXIMIZE','%CONSOLE_SW_MINIMIZE','%CONSOLE_SW_RESTORE',
        +            '%CONSOLE_SW_SHOW','%CONSOLE_SW_SHOWDEFAULT','%CONSOLE_SW_SHOWMAXIMIZED','%CONSOLE_SW_SHOWMINIMIZED','%CONSOLE_SW_SHOWMINNOACTIVE','%CONSOLE_SW_SHOWNA','%CONSOLE_SW_SHOWNOACTIVATE','%CONSOLE_SW_SHOWNORMAL',
        +            '%CONSOLE_UNAVAILABLE','%CRYPTO_CALG_DES','%CRYPTO_CALG_RC2','%CRYPTO_CALG_RC4','%CRYPTO_PROV_DH_SCHANNEL','%CRYPTO_PROV_DSS','%CRYPTO_PROV_DSS_DH','%CRYPTO_PROV_FORTEZZA',
        +            '%CRYPTO_PROV_MS_EXCHANGE','%CRYPTO_PROV_RSA_FULL','%CRYPTO_PROV_RSA_SCHANNEL','%CRYPTO_PROV_RSA_SIG','%CRYPTO_PROV_SSL','%CSIDL_ADMINTOOLS','%CSIDL_ALTSTARTUP','%CSIDL_APPDATA',
        +            '%CSIDL_BITBUCKET','%CSIDL_CDBURN_AREA','%CSIDL_COMMON_ADMINTOOLS','%CSIDL_COMMON_ALTSTARTUP','%CSIDL_COMMON_APPDATA','%CSIDL_COMMON_DESKTOPDIRECTORY','%CSIDL_COMMON_DOCUMENTS','%CSIDL_COMMON_FAVORITES',
        +            '%CSIDL_COMMON_MUSIC','%CSIDL_COMMON_PICTURES','%CSIDL_COMMON_PROGRAMS','%CSIDL_COMMON_STARTMENU','%CSIDL_COMMON_STARTUP','%CSIDL_COMMON_TEMPLATES','%CSIDL_COMMON_VIDEO','%CSIDL_CONTROLS',
        +            '%CSIDL_COOKIES','%CSIDL_DESKTOP','%CSIDL_DESKTOPDIRECTORY','%CSIDL_DRIVES','%CSIDL_FAVORITES','%CSIDL_FLAG_CREATE','%CSIDL_FONTS','%CSIDL_HISTORY',
        +            '%CSIDL_INTERNET','%CSIDL_INTERNET_CACHE','%CSIDL_LOCAL_APPDATA','%CSIDL_MYDOCUMENTS','%CSIDL_MYMUSIC','%CSIDL_MYPICTURES','%CSIDL_MYVIDEO','%CSIDL_NETHOOD',
        +            '%CSIDL_NETWORK','%CSIDL_PERSONAL','%CSIDL_PRINTERS','%CSIDL_PRINTHOOD','%CSIDL_PROFILE','%CSIDL_PROGRAMS','%CSIDL_PROGRAM_FILES','%CSIDL_PROGRAM_FILES_COMMON',
        +            '%CSIDL_RECENT','%CSIDL_SENDTO','%CSIDL_STARTMENU','%CSIDL_STARTUP','%CSIDL_SYSTEM','%CSIDL_TEMPLATES','%CSIDL_WINDOWS','%CW_USEDEFAULT',
        +            '%CYAN','%DATE_TIME_FILE_CREATION','%DATE_TIME_LAST_FILE_ACCESS','%DATE_TIME_LAST_FILE_WRITE','%DICTIONARY_MEMINFO_DATA','%DICTIONARY_MEMINFO_KEYS','%DICTIONARY_MEMINFO_TOTAL','%DICTIONARY_SORTDESCENDING',
        +            '%DICTIONARY_SORTKEYS','%DSCAPS_CERTIFIED','%DSCAPS_CONTINUOUSRATE','%DSCAPS_EMULDRIVER','%DSCAPS_SECONDARY16BIT','%DSCAPS_SECONDARY8BIT','%DSCAPS_SECONDARYMONO','%DSCAPS_SECONDARYSTEREO',
        +            '%DSCCAPS_CERTIFIED','%DSCCAPS_EMULDRIVER','%DS_3DLOOK','%DS_ABSALIGN','%DS_CENTER','%DS_CENTERMOUSE','%DS_CONTEXTHELP','%DS_CONTROL',
        +            '%DS_MODALFRAME','%DS_NOFAILCREATE','%DS_SETFONT','%DS_SETFOREGROUND','%DS_SYSMODAL','%DTM_FIRST','%DTM_GETMCCOLOR','%DTM_GETMCFONT',
        +            '%DTM_GETMONTHCAL','%DTM_GETRANGE','%DTM_GETSYSTEMTIME','%DTM_SETFORMAT','%DTM_SETFORMATW','%DTM_SETMCCOLOR','%DTM_SETMCFONT','%DTM_SETRANGE',
        +            '%DTM_SETSYSTEMTIME','%DTN_CLOSEUP','%DTN_DATETIMECHANGE','%DTN_DROPDOWN','%DTN_FORMAT','%DTN_FORMATQUERY','%DTN_FORMATQUERYW','%DTN_FORMATW',
        +            '%DTN_USERSTRING','%DTN_USERSTRINGW','%DTN_WMKEYDOWN','%DTN_WMKEYDOWNW','%DTS_APPCANPARSE','%DTS_LONGDATEFORMAT','%DTS_RIGHTALIGN','%DTS_SHORTDATECENTURYFORMAT',
        +            '%DTS_SHORTDATEFORMAT','%DTS_SHOWNONE','%DTS_TIMEFORMAT','%DTS_UPDOWN','%DT_DATE_CENTURY','%DT_DATE_OK','%DT_DAY_IN_YEAR','%DT_DIFF_IN_DAYS',
        +            '%DT_DIFF_IN_HOURS','%DT_DIFF_IN_MINUTES','%DT_DIFF_IN_SECONDS','%DT_HOURS_IN_DAY','%DT_MINUTES_IN_HOUR','%DT_SECONDS_IN_DAY','%DT_SECONDS_IN_HOUR','%DT_SECONDS_IN_MINUTE',
        +            '%DT_SECONDS_IN_YEAR','%DT_USE_LONG_FORM','%DT_USE_SHORT_FORM','%DT_WRONG_DATE','%DT_WRONG_DAY','%DT_WRONG_MONTH','%ECM_FIRST','%ECOOP_AND',
        +            '%ECOOP_OR','%ECOOP_SET','%ECOOP_XOR','%ECO_AUTOHSCROLL','%ECO_AUTOVSCROLL','%ECO_AUTOWORDSELECTION','%ECO_NOHIDESEL','%ECO_READONLY',
        +            '%ECO_SELECTIONBAR','%ECO_WANTRETURN','%EM_AUTOURLDETECT','%EM_CANPASTE','%EM_CANREDO','%EM_CANUNDO','%EM_CHARFROMPOS','%EM_DISPLAYBAND',
        +            '%EM_EMPTYUNDOBUFFER','%EM_EXGETSEL','%EM_EXLIMITTEXT','%EM_EXLINEFROMCHAR','%EM_EXSETSEL','%EM_FINDTEXT','%EM_FINDTEXTEX','%EM_FINDWORDBREAK',
        +            '%EM_FMTLINES','%EM_FORMATRANGE','%EM_GETAUTOURLDETECT','%EM_GETCHARFORMAT','%EM_GETEDITSTYLE','%EM_GETEVENTMASK','%EM_GETFIRSTVISIBLELINE','%EM_GETHANDLE',
        +            '%EM_GETIMESTATUS','%EM_GETLIMITTEXT','%EM_GETLINE','%EM_GETLINECOUNT','%EM_GETMARGINS','%EM_GETMODIFY','%EM_GETOLEINTERFACE','%EM_GETOPTIONS',
        +            '%EM_GETPARAFORMAT','%EM_GETPASSWORDCHAR','%EM_GETRECT','%EM_GETREDONAME','%EM_GETSCROLLPOS','%EM_GETSEL','%EM_GETSELTEXT','%EM_GETTEXTMODE',
        +            '%EM_GETTEXTRANGE','%EM_GETTHUMB','%EM_GETUNDONAME','%EM_GETWORDBREAKPROC','%EM_GETWORDBREAKPROCEX','%EM_HIDESELECTION','%EM_LIMITTEXT','%EM_LINEFROMCHAR',
        +            '%EM_LINEINDEX','%EM_LINELENGTH','%EM_LINESCROLL','%EM_PASTESPECIAL','%EM_POSFROMCHAR','%EM_REDO','%EM_REPLACESEL','%EM_REQUESTRESIZE',
        +            '%EM_SCROLL','%EM_SCROLLCARET','%EM_SELECTIONTYPE','%EM_SETBKGNDCOLOR','%EM_SETCHARFORMAT','%EM_SETEDITSTYLE','%EM_SETEVENTMASK','%EM_SETHANDLE',
        +            '%EM_SETIMESTATUS','%EM_SETLIMITTEXT','%EM_SETMARGINS','%EM_SETMODIFY','%EM_SETOLECALLBACK','%EM_SETOPTIONS','%EM_SETPARAFORMAT','%EM_SETPASSWORDCHAR',
        +            '%EM_SETREADONLY','%EM_SETRECT','%EM_SETRECTNP','%EM_SETSCROLLPOS','%EM_SETSEL','%EM_SETTABSTOPS','%EM_SETTARGETDEVICE','%EM_SETTEXTMODE',
        +            '%EM_SETUNDOLIMIT','%EM_SETWORDBREAKPROC','%EM_SETWORDBREAKPROCEX','%EM_SETWORDWRAPMODE','%EM_SETZOOM','%EM_STOPGROUPTYPING','%EM_STREAMIN','%EM_STREAMOUT',
        +            '%EM_UNDO','%ENM_CHANGE','%ENM_CORRECTTEXT','%ENM_DRAGDROPDONE','%ENM_DROPFILES','%ENM_KEYEVENTS','%ENM_MOUSEEVENTS','%ENM_NONE',
        +            '%ENM_PARAGRAPHEXPANDED','%ENM_PROTECTED','%ENM_REQUESTRESIZE','%ENM_SCROLL','%ENM_SCROLLEVENTS','%ENM_SELCHANGE','%ENM_UPDATE','%EN_CHANGE',
        +            '%EN_MSGFILTER','%EN_SELCHANGE','%EN_UPDATE','%ES_AUTOHSCROLL','%ES_AUTOVSCROLL','%ES_CENTER','%ES_DISABLENOSCROLL','%ES_EX_NOCALLOLEINIT',
        +            '%ES_LEFT','%ES_LOWERCASE','%ES_MULTILINE','%ES_NOHIDESEL','%ES_NOOLEDRAGDROP','%ES_NUMBER','%ES_OEMCONVERT','%ES_PASSWORD',
        +            '%ES_READONLY','%ES_RIGHT','%ES_SAVESEL','%ES_SELECTIONBAR','%ES_SUNKEN','%ES_UPPERCASE','%ES_WANTRETURN','%EVAL_EXEC_STRING',
        +            '%FALSE','%FILE_ADDPATH','%FILE_ARCHIVE','%FILE_BUILDVERSION','%FILE_HIDDEN','%FILE_MAJORVERSION','%FILE_MINORVERSION','%FILE_NORMAL',
        +            '%FILE_READONLY','%FILE_REVISIONVERSION','%FILE_SUBDIR','%FILE_SYSTEM','%FILE_VLABEL','%FTP_GET_CONNECT_STATUS','%FTP_GET_FILE_BYTES_RCVD','%FTP_GET_FILE_BYTES_SENT',
        +            '%FTP_GET_LAST_RESPONSE','%FTP_GET_LOCAL_IP','%FTP_GET_SERVER_IP','%FTP_GET_TOTAL_BYTES_RCVD','%FTP_GET_TOTAL_BYTES_SENT','%FTP_LIST_FULLLIST','%FTP_LIST_FULLLISTDIR','%FTP_LIST_FULLLISTFILE',
        +            '%FTP_SET_ASYNC','%FTP_SET_CONNECT_WAIT','%FTP_SET_MAX_LISTEN_WAIT','%FTP_SET_MAX_RESPONSE_WAIT','%FTP_SET_PASSIVE','%FTP_SET_SYNC','%FW_BLACK','%FW_BOLD',
        +            '%FW_DEMIBOLD','%FW_DONTCARE','%FW_EXTRABOLD','%FW_EXTRALIGHT','%FW_HEAVY','%FW_LIGHT','%FW_MEDIUM','%FW_NORMAL',
        +            '%FW_REGULAR','%FW_SEMIBOLD','%FW_THIN','%FW_ULTRABOLD','%FW_ULTRALIGHT','%GDTR_MAX','%GDTR_MIN','%GLU_AUTO_LOAD_MATRIX',
        +            '%GLU_BEGIN','%GLU_CCW','%GLU_CULLING','%GLU_CW','%GLU_DISPLAY_MODE','%GLU_DOMAIN_DISTANCE','%GLU_EDGE_FLAG','%GLU_END',
        +            '%GLU_ERROR','%GLU_EXTENSIONS','%GLU_EXTERIOR','%GLU_FALSE','%GLU_FILL','%GLU_FLAT','%GLU_INCOMPATIBLE_GL_VERSION','%GLU_INSIDE',
        +            '%GLU_INTERIOR','%GLU_INVALID_ENUM','%GLU_INVALID_VALUE','%GLU_LINE','%GLU_MAP1_TRIM_2','%GLU_MAP1_TRIM_3','%GLU_NONE','%GLU_NURBS_ERROR1',
        +            '%GLU_NURBS_ERROR10','%GLU_NURBS_ERROR11','%GLU_NURBS_ERROR12','%GLU_NURBS_ERROR13','%GLU_NURBS_ERROR14','%GLU_NURBS_ERROR15','%GLU_NURBS_ERROR16','%GLU_NURBS_ERROR17',
        +            '%GLU_NURBS_ERROR18','%GLU_NURBS_ERROR19','%GLU_NURBS_ERROR2','%GLU_NURBS_ERROR20','%GLU_NURBS_ERROR21','%GLU_NURBS_ERROR22','%GLU_NURBS_ERROR23','%GLU_NURBS_ERROR24',
        +            '%GLU_NURBS_ERROR25','%GLU_NURBS_ERROR26','%GLU_NURBS_ERROR27','%GLU_NURBS_ERROR28','%GLU_NURBS_ERROR29','%GLU_NURBS_ERROR3','%GLU_NURBS_ERROR30','%GLU_NURBS_ERROR31',
        +            '%GLU_NURBS_ERROR32','%GLU_NURBS_ERROR33','%GLU_NURBS_ERROR34','%GLU_NURBS_ERROR35','%GLU_NURBS_ERROR36','%GLU_NURBS_ERROR37','%GLU_NURBS_ERROR4','%GLU_NURBS_ERROR5',
        +            '%GLU_NURBS_ERROR6','%GLU_NURBS_ERROR7','%GLU_NURBS_ERROR8','%GLU_NURBS_ERROR9','%GLU_OUTLINE_PATCH','%GLU_OUTLINE_POLYGON','%GLU_OUTSIDE','%GLU_OUT_OF_MEMORY',
        +            '%GLU_PARAMETRIC_ERROR','%GLU_PARAMETRIC_TOLERANCE','%GLU_PATH_LENGTH','%GLU_POINT','%GLU_SAMPLING_METHOD','%GLU_SAMPLING_TOLERANCE','%GLU_SILHOUETTE','%GLU_SMOOTH',
        +            '%GLU_TESS_BEGIN','%GLU_TESS_BEGIN_DATA','%GLU_TESS_BOUNDARY_ONLY','%GLU_TESS_COMBINE','%GLU_TESS_COMBINE_DATA','%GLU_TESS_COORD_TOO_LARGE','%GLU_TESS_EDGE_FLAG','%GLU_TESS_EDGE_FLAG_DATA',
        +            '%GLU_TESS_END','%GLU_TESS_END_DATA','%GLU_TESS_ERROR','%GLU_TESS_ERROR1','%GLU_TESS_ERROR2','%GLU_TESS_ERROR3','%GLU_TESS_ERROR4','%GLU_TESS_ERROR5',
        +            '%GLU_TESS_ERROR6','%GLU_TESS_ERROR7','%GLU_TESS_ERROR8','%GLU_TESS_ERROR_DATA','%GLU_TESS_MISSING_BEGIN_CONTOUR','%GLU_TESS_MISSING_BEGIN_POLYGON','%GLU_TESS_MISSING_END_CONTOUR','%GLU_TESS_MISSING_END_POLYGON',
        +            '%GLU_TESS_NEED_COMBINE_CALLBACK','%GLU_TESS_TOLERANCE','%GLU_TESS_VERTEX','%GLU_TESS_VERTEX_DATA','%GLU_TESS_WINDING_ABS_GEQ_TWO','%GLU_TESS_WINDING_NEGATIVE','%GLU_TESS_WINDING_NONZERO','%GLU_TESS_WINDING_ODD',
        +            '%GLU_TESS_WINDING_POSITIVE','%GLU_TESS_WINDING_RULE','%GLU_TRUE','%GLU_UNKNOWN','%GLU_U_STEP','%GLU_VERSION','%GLU_VERSION_1_1','%GLU_VERSION_1_2',
        +            '%GLU_VERTEX','%GLU_V_STEP','%GL_2D','%GL_2_BYTES','%GL_3D','%GL_3D_COLOR','%GL_3D_COLOR_TEXTURE','%GL_3_BYTES',
        +            '%GL_4D_COLOR_TEXTURE','%GL_4_BYTES','%GL_ABGR_EXT','%GL_ACCUM','%GL_ACCUM_ALPHA_BITS','%GL_ACCUM_BLUE_BITS','%GL_ACCUM_BUFFER_BIT','%GL_ACCUM_CLEAR_VALUE',
        +            '%GL_ACCUM_GREEN_BITS','%GL_ACCUM_RED_BITS','%GL_ADD','%GL_ALL_ATTRIB_BITS','%GL_ALPHA','%GL_ALPHA12','%GL_ALPHA16','%GL_ALPHA4',
        +            '%GL_ALPHA8','%GL_ALPHA_BIAS','%GL_ALPHA_BITS','%GL_ALPHA_SCALE','%GL_ALPHA_TEST','%GL_ALPHA_TEST_FUNC','%GL_ALPHA_TEST_REF','%GL_ALWAYS',
        +            '%GL_AMBIENT','%GL_AMBIENT_AND_DIFFUSE','%GL_AND','%GL_AND_INVERTED','%GL_AND_REVERSE','%GL_ARRAY_ELEMENT_LOCK_COUNT_EXT','%GL_ARRAY_ELEMENT_LOCK_FIRST_EXT','%GL_ATTRIB_STACK_DEPTH',
        +            '%GL_AUTO_NORMAL','%GL_AUX0','%GL_AUX1','%GL_AUX2','%GL_AUX3','%GL_AUX_BUFFERS','%GL_BACK','%GL_BACK_LEFT',
        +            '%GL_BACK_RIGHT','%GL_BGRA_EXT','%GL_BGR_EXT','%GL_BITMAP','%GL_BITMAP_TOKEN','%GL_BLEND','%GL_BLEND_COLOR_EXT','%GL_BLEND_DST',
        +            '%GL_BLEND_EQUATION_EXT','%GL_BLEND_SRC','%GL_BLUE','%GL_BLUE_BIAS','%GL_BLUE_BITS','%GL_BLUE_SCALE','%GL_BYTE','%GL_C3F_V3F',
        +            '%GL_C4F_N3F_V3F','%GL_C4UB_V2F','%GL_C4UB_V3F','%GL_CCW','%GL_CLAMP','%GL_CLEAR','%GL_CLIENT_ALL_ATTRIB_BITS','%GL_CLIENT_ATTRIB_STACK_DEPTH',
        +            '%GL_CLIENT_PIXEL_STORE_BIT','%GL_CLIENT_VERTEX_ARRAY_BIT','%GL_CLIP_PLANE0','%GL_CLIP_PLANE1','%GL_CLIP_PLANE2','%GL_CLIP_PLANE3','%GL_CLIP_PLANE4','%GL_CLIP_PLANE5',
        +            '%GL_CLIP_VOLUME_CLIPPING_HINT_EXT','%GL_COEFF','%GL_COLOR','%GL_COLOR_ARRAY','%GL_COLOR_ARRAY_COUNT_EXT','%GL_COLOR_ARRAY_EXT','%GL_COLOR_ARRAY_POINTER','%GL_COLOR_ARRAY_POINTER_EXT',
        +            '%GL_COLOR_ARRAY_SIZE','%GL_COLOR_ARRAY_SIZE_EXT','%GL_COLOR_ARRAY_STRIDE','%GL_COLOR_ARRAY_STRIDE_EXT','%GL_COLOR_ARRAY_TYPE','%GL_COLOR_ARRAY_TYPE_EXT','%GL_COLOR_BUFFER_BIT','%GL_COLOR_CLEAR_VALUE',
        +            '%GL_COLOR_INDEX','%GL_COLOR_INDEX12_EXT','%GL_COLOR_INDEX16_EXT','%GL_COLOR_INDEX1_EXT','%GL_COLOR_INDEX2_EXT','%GL_COLOR_INDEX4_EXT','%GL_COLOR_INDEX8_EXT','%GL_COLOR_INDEXES',
        +            '%GL_COLOR_LOGIC_OP','%GL_COLOR_MATERIAL','%GL_COLOR_MATERIAL_FACE','%GL_COLOR_MATERIAL_PARAMETER','%GL_COLOR_SUM_EXT','%GL_COLOR_TABLE_ALPHA_SIZE_EXT','%GL_COLOR_TABLE_BIAS_EXT','%GL_COLOR_TABLE_BLUE_SIZE_EXT',
        +            '%GL_COLOR_TABLE_EXT','%GL_COLOR_TABLE_FORMAT_EXT','%GL_COLOR_TABLE_GREEN_SIZE_EXT','%GL_COLOR_TABLE_INTENSITY_SIZE_EXT','%GL_COLOR_TABLE_LUMINANCE_SIZE_EXT','%GL_COLOR_TABLE_RED_SIZE_EXT','%GL_COLOR_TABLE_SCALE_EXT','%GL_COLOR_TABLE_WIDTH_EXT',
        +            '%GL_COLOR_WRITEMASK','%GL_COMPILE','%GL_COMPILE_AND_EXECUTE','%GL_CONSTANT_ALPHA_EXT','%GL_CONSTANT_ATTENUATION','%GL_CONSTANT_COLOR_EXT','%GL_CONVOLUTION_1D_EXT','%GL_CONVOLUTION_2D_EXT',
        +            '%GL_CONVOLUTION_BORDER_MODE_EXT','%GL_CONVOLUTION_FILTER_BIAS_EXT','%GL_CONVOLUTION_FILTER_SCALE_EXT','%GL_CONVOLUTION_FORMAT_EXT','%GL_CONVOLUTION_HEIGHT_EXT','%GL_CONVOLUTION_WIDTH_EXT','%GL_COPY','%GL_COPY_INVERTED',
        +            '%GL_COPY_PIXEL_TOKEN','%GL_CULL_FACE','%GL_CULL_FACE_MODE','%GL_CULL_VERTEX_EXT','%GL_CULL_VERTEX_EYE_POSITION_EXT','%GL_CULL_VERTEX_OBJECT_POSITION_EXT','%GL_CURRENT_BIT','%GL_CURRENT_COLOR',
        +            '%GL_CURRENT_INDEX','%GL_CURRENT_NORMAL','%GL_CURRENT_RASTER_COLOR','%GL_CURRENT_RASTER_DISTANCE','%GL_CURRENT_RASTER_INDEX','%GL_CURRENT_RASTER_POSITION','%GL_CURRENT_RASTER_POSITION_VALID','%GL_CURRENT_RASTER_TEXTURE_COORDS',
        +            '%GL_CURRENT_SECONDARY_COLOR_EXT','%GL_CURRENT_TEXTURE_COORDS','%GL_CW','%GL_DECAL','%GL_DECR','%GL_DEPTH','%GL_DEPTH_BIAS','%GL_DEPTH_BITS',
        +            '%GL_DEPTH_BUFFER_BIT','%GL_DEPTH_CLEAR_VALUE','%GL_DEPTH_COMPONENT','%GL_DEPTH_FUNC','%GL_DEPTH_RANGE','%GL_DEPTH_SCALE','%GL_DEPTH_TEST','%GL_DEPTH_WRITEMASK',
        +            '%GL_DIFFUSE','%GL_DITHER','%GL_DOMAIN','%GL_DONT_CARE','%GL_DOUBLE','%GL_DOUBLEBUFFER','%GL_DOUBLE_EXT','%GL_DRAW_BUFFER',
        +            '%GL_DRAW_PIXEL_TOKEN','%GL_DST_ALPHA','%GL_DST_COLOR','%GL_EDGE_FLAG','%GL_EDGE_FLAG_ARRAY','%GL_EDGE_FLAG_ARRAY_COUNT_EXT','%GL_EDGE_FLAG_ARRAY_EXT','%GL_EDGE_FLAG_ARRAY_POINTER',
        +            '%GL_EDGE_FLAG_ARRAY_POINTER_EXT','%GL_EDGE_FLAG_ARRAY_STRIDE','%GL_EDGE_FLAG_ARRAY_STRIDE_EXT','%GL_EMISSION','%GL_ENABLE_BIT','%GL_EQUAL','%GL_EQUIV','%GL_EVAL_BIT',
        +            '%GL_EXP','%GL_EXP2','%GL_EXTENSIONS','%GL_EXT_ABGR','%GL_EXT_BGRA','%GL_EXT_BLEND_COLOR','%GL_EXT_BLEND_MINMAX','%GL_EXT_BLEND_SUBTRACT',
        +            '%GL_EXT_CLIP_VOLUME_HINT','%GL_EXT_COLOR_TABLE','%GL_EXT_COMPILED_VERTEX_ARRAY','%GL_EXT_CONVOLUTION','%GL_EXT_CULL_VERTEX','%GL_EXT_HISTOGRAM','%GL_EXT_PACKED_PIXELS','%GL_EXT_PALETTED_TEXTURE',
        +            '%GL_EXT_POLYGON_OFFSET','%GL_EXT_SECONDARY_COLOR','%GL_EXT_SEPARATE_SPECULAR_COLOR','%GL_EXT_VERTEX_ARRAY','%GL_EYE_LINEAR','%GL_EYE_PLANE','%GL_FALSE','%GL_FASTEST',
        +            '%GL_FEEDBACK','%GL_FEEDBACK_BUFFER_POINTER','%GL_FEEDBACK_BUFFER_SIZE','%GL_FEEDBACK_BUFFER_TYPE','%GL_FILL','%GL_FLAT','%GL_FLOAT','%GL_FOG',
        +            '%GL_FOG_BIT','%GL_FOG_COLOR','%GL_FOG_DENSITY','%GL_FOG_END','%GL_FOG_HINT','%GL_FOG_INDEX','%GL_FOG_MODE','%GL_FOG_START',
        +            '%GL_FRONT','%GL_FRONT_AND_BACK','%GL_FRONT_FACE','%GL_FRONT_LEFT','%GL_FRONT_RIGHT','%GL_FUNC_ADD_EXT','%GL_FUNC_REVERSE_SUBTRACT_EXT','%GL_FUNC_SUBTRACT_EXT',
        +            '%GL_GEQUAL','%GL_GREATER','%GL_GREEN','%GL_GREEN_BIAS','%GL_GREEN_BITS','%GL_GREEN_SCALE','%GL_HINT_BIT','%GL_HISTOGRAM_ALPHA_SIZE_EXT',
        +            '%GL_HISTOGRAM_BLUE_SIZE_EXT','%GL_HISTOGRAM_EXT','%GL_HISTOGRAM_FORMAT_EXT','%GL_HISTOGRAM_GREEN_SIZE_EXT','%GL_HISTOGRAM_LUMINANCE_SIZE_EXT','%GL_HISTOGRAM_RED_SIZE_EXT','%GL_HISTOGRAM_SINK_EXT','%GL_HISTOGRAM_WIDTH_EXT',
        +            '%GL_INCR','%GL_INDEX_ARRAY','%GL_INDEX_ARRAY_COUNT_EXT','%GL_INDEX_ARRAY_EXT','%GL_INDEX_ARRAY_POINTER','%GL_INDEX_ARRAY_POINTER_EXT','%GL_INDEX_ARRAY_STRIDE','%GL_INDEX_ARRAY_STRIDE_EXT',
        +            '%GL_INDEX_ARRAY_TYPE','%GL_INDEX_ARRAY_TYPE_EXT','%GL_INDEX_BITS','%GL_INDEX_CLEAR_VALUE','%GL_INDEX_LOGIC_OP','%GL_INDEX_MODE','%GL_INDEX_OFFSET','%GL_INDEX_SHIFT',
        +            '%GL_INDEX_WRITEMASK','%GL_INT','%GL_INTENSITY','%GL_INTENSITY12','%GL_INTENSITY16','%GL_INTENSITY4','%GL_INTENSITY8','%GL_INVALID_ENUM',
        +            '%GL_INVALID_OPERATION','%GL_INVALID_VALUE','%GL_INVERT','%GL_KEEP','%GL_LEFT','%GL_LEQUAL','%GL_LESS','%GL_LIGHT0',
        +            '%GL_LIGHT1','%GL_LIGHT2','%GL_LIGHT3','%GL_LIGHT4','%GL_LIGHT5','%GL_LIGHT6','%GL_LIGHT7','%GL_LIGHTING',
        +            '%GL_LIGHTING_BIT','%GL_LIGHT_MODEL_AMBIENT','%GL_LIGHT_MODEL_COLOR_CONTROL_EXT','%GL_LIGHT_MODEL_LOCAL_VIEWER','%GL_LIGHT_MODEL_TWO_SIDE','%GL_LINE','%GL_LINEAR','%GL_LINEAR_ATTENUATION',
        +            '%GL_LINEAR_MIPMAP_LINEAR','%GL_LINEAR_MIPMAP_NEAREST','%GL_LINES','%GL_LINE_BIT','%GL_LINE_LOOP','%GL_LINE_RESET_TOKEN','%GL_LINE_SMOOTH','%GL_LINE_SMOOTH_HINT',
        +            '%GL_LINE_STIPPLE','%GL_LINE_STIPPLE_PATTERN','%GL_LINE_STIPPLE_REPEAT','%GL_LINE_STRIP','%GL_LINE_TOKEN','%GL_LINE_WIDTH','%GL_LINE_WIDTH_GRANULARITY','%GL_LINE_WIDTH_RANGE',
        +            '%GL_LIST_BASE','%GL_LIST_BIT','%GL_LIST_INDEX','%GL_LIST_MODE','%GL_LOAD','%GL_LOGIC_OP','%GL_LOGIC_OP_MODE','%GL_LUMINANCE',
        +            '%GL_LUMINANCE12','%GL_LUMINANCE12_ALPHA12','%GL_LUMINANCE12_ALPHA4','%GL_LUMINANCE16','%GL_LUMINANCE16_ALPHA16','%GL_LUMINANCE4','%GL_LUMINANCE4_ALPHA4','%GL_LUMINANCE6_ALPHA2',
        +            '%GL_LUMINANCE8','%GL_LUMINANCE8_ALPHA8','%GL_LUMINANCE_ALPHA','%GL_MAP1_COLOR_4','%GL_MAP1_GRID_DOMAIN','%GL_MAP1_GRID_SEGMENTS','%GL_MAP1_INDEX','%GL_MAP1_NORMAL',
        +            '%GL_MAP1_TEXTURE_COORD_1','%GL_MAP1_TEXTURE_COORD_2','%GL_MAP1_TEXTURE_COORD_3','%GL_MAP1_TEXTURE_COORD_4','%GL_MAP1_VERTEX_3','%GL_MAP1_VERTEX_4','%GL_MAP2_COLOR_4','%GL_MAP2_GRID_DOMAIN',
        +            '%GL_MAP2_GRID_SEGMENTS','%GL_MAP2_INDEX','%GL_MAP2_NORMAL','%GL_MAP2_TEXTURE_COORD_1','%GL_MAP2_TEXTURE_COORD_2','%GL_MAP2_TEXTURE_COORD_3','%GL_MAP2_TEXTURE_COORD_4','%GL_MAP2_VERTEX_3',
        +            '%GL_MAP2_VERTEX_4','%GL_MAP_COLOR','%GL_MAP_STENCIL','%GL_MATRIX_MODE','%GL_MAX_ATTRIB_STACK_DEPTH','%GL_MAX_CLIENT_ATTRIB_STACK_DEPTH','%GL_MAX_CLIP_PLANES','%GL_MAX_CONVOLUTION_HEIGHT_EXT',
        +            '%GL_MAX_CONVOLUTION_WIDTH_EXT','%GL_MAX_EVAL_ORDER','%GL_MAX_EXT','%GL_MAX_LIGHTS','%GL_MAX_LIST_NESTING','%GL_MAX_MODELVIEW_STACK_DEPTH','%GL_MAX_NAME_STACK_DEPTH','%GL_MAX_PIXEL_MAP_TABLE',
        +            '%GL_MAX_PROJECTION_STACK_DEPTH','%GL_MAX_TEXTURE_SIZE','%GL_MAX_TEXTURE_STACK_DEPTH','%GL_MAX_VIEWPORT_DIMS','%GL_MINMAX_EXT','%GL_MINMAX_FORMAT_EXT','%GL_MINMAX_SINK_EXT','%GL_MIN_EXT',
        +            '%GL_MODELVIEW','%GL_MODELVIEW_MATRIX','%GL_MODELVIEW_STACK_DEPTH','%GL_MODULATE','%GL_MULT','%GL_N3F_V3F','%GL_NAME_STACK_DEPTH','%GL_NAND',
        +            '%GL_NEAREST','%GL_NEAREST_MIPMAP_LINEAR','%GL_NEAREST_MIPMAP_NEAREST','%GL_NEVER','%GL_NICEST','%GL_NONE','%GL_NOOP','%GL_NOR',
        +            '%GL_NORMALIZE','%GL_NORMAL_ARRAY','%GL_NORMAL_ARRAY_COUNT_EXT','%GL_NORMAL_ARRAY_EXT','%GL_NORMAL_ARRAY_POINTER','%GL_NORMAL_ARRAY_POINTER_EXT','%GL_NORMAL_ARRAY_STRIDE','%GL_NORMAL_ARRAY_STRIDE_EXT',
        +            '%GL_NORMAL_ARRAY_TYPE','%GL_NORMAL_ARRAY_TYPE_EXT','%GL_NOTEQUAL','%GL_NO_ERROR','%GL_OBJECT_LINEAR','%GL_OBJECT_PLANE','%GL_ONE','%GL_ONE_MINUS_CONSTANT_ALPHA_EXT',
        +            '%GL_ONE_MINUS_CONSTANT_COLOR_EXT','%GL_ONE_MINUS_DST_ALPHA','%GL_ONE_MINUS_DST_COLOR','%GL_ONE_MINUS_SRC_ALPHA','%GL_ONE_MINUS_SRC_COLOR','%GL_OR','%GL_ORDER','%GL_OR_INVERTED',
        +            '%GL_OR_REVERSE','%GL_OUT_OF_MEMORY','%GL_PACK_ALIGNMENT','%GL_PACK_LSB_FIRST','%GL_PACK_ROW_LENGTH','%GL_PACK_SKIP_PIXELS','%GL_PACK_SKIP_ROWS','%GL_PACK_SWAP_BYTES',
        +            '%GL_PASS_THROUGH_TOKEN','%GL_PERSPECTIVE_CORRECTION_HINT','%GL_PIXEL_MAP_A_TO_A','%GL_PIXEL_MAP_A_TO_A_SIZE','%GL_PIXEL_MAP_B_TO_B','%GL_PIXEL_MAP_B_TO_B_SIZE','%GL_PIXEL_MAP_G_TO_G','%GL_PIXEL_MAP_G_TO_G_SIZE',
        +            '%GL_PIXEL_MAP_I_TO_A','%GL_PIXEL_MAP_I_TO_A_SIZE','%GL_PIXEL_MAP_I_TO_B','%GL_PIXEL_MAP_I_TO_B_SIZE','%GL_PIXEL_MAP_I_TO_G','%GL_PIXEL_MAP_I_TO_G_SIZE','%GL_PIXEL_MAP_I_TO_I','%GL_PIXEL_MAP_I_TO_I_SIZE',
        +            '%GL_PIXEL_MAP_I_TO_R','%GL_PIXEL_MAP_I_TO_R_SIZE','%GL_PIXEL_MAP_R_TO_R','%GL_PIXEL_MAP_R_TO_R_SIZE','%GL_PIXEL_MAP_S_TO_S','%GL_PIXEL_MAP_S_TO_S_SIZE','%GL_PIXEL_MODE_BIT','%GL_POINT',
        +            '%GL_POINTS','%GL_POINT_BIT','%GL_POINT_SIZE','%GL_POINT_SIZE_GRANULARITY','%GL_POINT_SIZE_RANGE','%GL_POINT_SMOOTH','%GL_POINT_SMOOTH_HINT','%GL_POINT_TOKEN',
        +            '%GL_POLYGON','%GL_POLYGON_BIT','%GL_POLYGON_MODE','%GL_POLYGON_OFFSET_BIAS_EXT','%GL_POLYGON_OFFSET_EXT','%GL_POLYGON_OFFSET_FACTOR','%GL_POLYGON_OFFSET_FACTOR_EXT','%GL_POLYGON_OFFSET_FILL',
        +            '%GL_POLYGON_OFFSET_LINE','%GL_POLYGON_OFFSET_POINT','%GL_POLYGON_OFFSET_UNITS','%GL_POLYGON_SMOOTH','%GL_POLYGON_SMOOTH_HINT','%GL_POLYGON_STIPPLE','%GL_POLYGON_STIPPLE_BIT','%GL_POLYGON_TOKEN',
        +            '%GL_POSITION','%GL_POST_COLOR_MATRIX_COLOR_TABLE_EXT','%GL_POST_CONVOLUTION_ALPHA_BIAS_EXT','%GL_POST_CONVOLUTION_ALPHA_SCALE_EXT','%GL_POST_CONVOLUTION_BLUE_BIAS_EXT','%GL_POST_CONVOLUTION_BLUE_SCALE_EXT','%GL_POST_CONVOLUTION_COLOR_TABLE_EXT','%GL_POST_CONVOLUTION_GREEN_BIAS_EXT',
        +            '%GL_POST_CONVOLUTION_GREEN_SCALE_EXT','%GL_POST_CONVOLUTION_RED_BIAS_EXT','%GL_POST_CONVOLUTION_RED_SCALE_EXT','%GL_PROJECTION','%GL_PROJECTION_MATRIX','%GL_PROJECTION_STACK_DEPTH','%GL_PROXY_COLOR_TABLE_EXT','%GL_PROXY_HISTOGRAM_EXT',
        +            '%GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_EXT','%GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_EXT','%GL_PROXY_TEXTURE_1D','%GL_PROXY_TEXTURE_2D','%GL_Q','%GL_QUADRATIC_ATTENUATION','%GL_QUADS','%GL_QUAD_STRIP',
        +            '%GL_R','%GL_R3_G3_B2','%GL_READ_BUFFER','%GL_RED','%GL_REDUCE_EXT','%GL_RED_BIAS','%GL_RED_BITS','%GL_RED_SCALE',
        +            '%GL_RENDER','%GL_RENDERER','%GL_RENDER_MODE','%GL_REPEAT','%GL_REPLACE','%GL_RETURN','%GL_RGB','%GL_RGB10',
        +            '%GL_RGB10_A2','%GL_RGB12','%GL_RGB16','%GL_RGB4','%GL_RGB5','%GL_RGB5_A1','%GL_RGB8','%GL_RGBA',
        +            '%GL_RGBA12','%GL_RGBA16','%GL_RGBA2','%GL_RGBA4','%GL_RGBA8','%GL_RGBA_MODE','%GL_RIGHT','%GL_S',
        +            '%GL_SCISSOR_BIT','%GL_SCISSOR_BOX','%GL_SCISSOR_TEST','%GL_SECONDARY_COLOR_ARRAY_EXT','%GL_SECONDARY_COLOR_ARRAY_POINTER_EXT','%GL_SECONDARY_COLOR_ARRAY_SIZE_EXT','%GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT','%GL_SECONDARY_COLOR_ARRAY_TYPE_EXT',
        +            '%GL_SELECT','%GL_SELECTION_BUFFER_POINTER','%GL_SELECTION_BUFFER_SIZE','%GL_SEPARABLE_2D_EXT','%GL_SEPARATE_SPECULAR_COLOR_EXT','%GL_SET','%GL_SHADE_MODEL','%GL_SHININESS',
        +            '%GL_SHORT','%GL_SINGLE_COLOR_EXT','%GL_SMOOTH','%GL_SPECULAR','%GL_SPHERE_MAP','%GL_SPOT_CUTOFF','%GL_SPOT_DIRECTION','%GL_SPOT_EXPONENT',
        +            '%GL_SRC_ALPHA','%GL_SRC_ALPHA_SATURATE','%GL_SRC_COLOR','%GL_STACK_OVERFLOW','%GL_STACK_UNDERFLOW','%GL_STENCIL','%GL_STENCIL_BITS','%GL_STENCIL_BUFFER_BIT',
        +            '%GL_STENCIL_CLEAR_VALUE','%GL_STENCIL_FAIL','%GL_STENCIL_FUNC','%GL_STENCIL_INDEX','%GL_STENCIL_PASS_DEPTH_FAIL','%GL_STENCIL_PASS_DEPTH_PASS','%GL_STENCIL_REF','%GL_STENCIL_TEST',
        +            '%GL_STENCIL_VALUE_MASK','%GL_STENCIL_WRITEMASK','%GL_STEREO','%GL_SUBPIXEL_BITS','%GL_T','%GL_T2F_C3F_V3F','%GL_T2F_C4F_N3F_V3F','%GL_T2F_C4UB_V3F',
        +            '%GL_T2F_N3F_V3F','%GL_T2F_V3F','%GL_T4F_C4F_N3F_V4F','%GL_T4F_V4F','%GL_TABLE_TOO_LARGE_EXT','%GL_TEXTURE','%GL_TEXTURE_1D','%GL_TEXTURE_2D',
        +            '%GL_TEXTURE_ALPHA_SIZE','%GL_TEXTURE_BINDING_1D','%GL_TEXTURE_BINDING_2D','%GL_TEXTURE_BIT','%GL_TEXTURE_BLUE_SIZE','%GL_TEXTURE_BORDER','%GL_TEXTURE_BORDER_COLOR','%GL_TEXTURE_COMPONENTS',
        +            '%GL_TEXTURE_COORD_ARRAY','%GL_TEXTURE_COORD_ARRAY_COUNT_EXT','%GL_TEXTURE_COORD_ARRAY_EXT','%GL_TEXTURE_COORD_ARRAY_POINTER','%GL_TEXTURE_COORD_ARRAY_POINTER_EXT','%GL_TEXTURE_COORD_ARRAY_SIZE','%GL_TEXTURE_COORD_ARRAY_SIZE_EXT','%GL_TEXTURE_COORD_ARRAY_STRIDE',
        +            '%GL_TEXTURE_COORD_ARRAY_STRIDE_EXT','%GL_TEXTURE_COORD_ARRAY_TYPE','%GL_TEXTURE_COORD_ARRAY_TYPE_EXT','%GL_TEXTURE_ENV','%GL_TEXTURE_ENV_COLOR','%GL_TEXTURE_ENV_MODE','%GL_TEXTURE_GEN_MODE','%GL_TEXTURE_GEN_Q',
        +            '%GL_TEXTURE_GEN_R','%GL_TEXTURE_GEN_S','%GL_TEXTURE_GEN_T','%GL_TEXTURE_GREEN_SIZE','%GL_TEXTURE_HEIGHT','%GL_TEXTURE_INTENSITY_SIZE','%GL_TEXTURE_INTERNAL_FORMAT','%GL_TEXTURE_LUMINANCE_SIZE',
        +            '%GL_TEXTURE_MAG_FILTER','%GL_TEXTURE_MATRIX','%GL_TEXTURE_MIN_FILTER','%GL_TEXTURE_PRIORITY','%GL_TEXTURE_RED_SIZE','%GL_TEXTURE_RESIDENT','%GL_TEXTURE_STACK_DEPTH','%GL_TEXTURE_WIDTH',
        +            '%GL_TEXTURE_WRAP_S','%GL_TEXTURE_WRAP_T','%GL_TRANSFORM_BIT','%GL_TRIANGLES','%GL_TRIANGLE_FAN','%GL_TRIANGLE_STRIP','%GL_TRUE','%GL_UNPACK_ALIGNMENT',
        +            '%GL_UNPACK_LSB_FIRST','%GL_UNPACK_ROW_LENGTH','%GL_UNPACK_SKIP_PIXELS','%GL_UNPACK_SKIP_ROWS','%GL_UNPACK_SWAP_BYTES','%GL_UNSIGNED_BYTE','%GL_UNSIGNED_BYTE_3_3_2_EXT','%GL_UNSIGNED_INT',
        +            '%GL_UNSIGNED_INT_10_10_10_2_EXT','%GL_UNSIGNED_INT_8_8_8_8_EXT','%GL_UNSIGNED_SHORT','%GL_UNSIGNED_SHORT_4_4_4_4_EXT','%GL_UNSIGNED_SHORT_5_5_5_1_EXT','%GL_V2F','%GL_V3F','%GL_VENDOR',
        +            '%GL_VERSION','%GL_VERSION_1_1','%GL_VERTEX_ARRAY','%GL_VERTEX_ARRAY_COUNT_EXT','%GL_VERTEX_ARRAY_EXT','%GL_VERTEX_ARRAY_POINTER','%GL_VERTEX_ARRAY_POINTER_EXT','%GL_VERTEX_ARRAY_SIZE',
        +            '%GL_VERTEX_ARRAY_SIZE_EXT','%GL_VERTEX_ARRAY_STRIDE','%GL_VERTEX_ARRAY_STRIDE_EXT','%GL_VERTEX_ARRAY_TYPE','%GL_VERTEX_ARRAY_TYPE_EXT','%GL_VIEWPORT','%GL_VIEWPORT_BIT','%GL_WIN_SWAP_HINT',
        +            '%GL_XOR','%GL_ZERO','%GL_ZOOM_X','%GL_ZOOM_Y','%GRAY','%GREEN','%GWLP_HINSTANCE','%GWLP_HWNDPARENT',
        +            '%GWLP_ID','%GWLP_USERDATA','%GWLP_WNDPROC','%GWL_EXSTYLE','%GWL_HINSTANCE','%GWL_HWNDPARENT','%GWL_ID','%GWL_STYLE',
        +            '%GWL_USERDATA','%GWL_WNDPROC','%HDM_FIRST','%HTCAPTION','%HWND_BOTTOM','%HWND_DESKTOP','%HWND_MESSAGE','%HWND_NOTOPMOST',
        +            '%HWND_TOP','%HWND_TOPMOST','%ICRYPTO_XOR_DECREASE','%ICRYPTO_XOR_INCREASE','%ICRYPTO_XOR_NORMAL','%IDABORT','%IDCANCEL','%IDCONTINUE',
        +            '%IDIGNORE','%IDNO','%IDOK','%IDRETRY','%IDTIMEOUT','%IDTRYAGAIN','%IDYES','%INTERNET_CONNECTION_CONFIGURED',
        +            '%INTERNET_CONNECTION_LAN','%INTERNET_CONNECTION_MODEM','%INTERNET_CONNECTION_MODEM_BUSY','%INTERNET_CONNECTION_OFFLINE','%INTERNET_CONNECTION_PROXY','%INTERNET_RAS_INSTALLED','%LBN_DBLCLK','%LBN_KILLFOCUS',
        +            '%LBN_SELCANCEL','%LBN_SELCHANGE','%LBN_SETFOCUS','%LBS_DISABLENOSCROLL','%LBS_EXTENDEDSEL','%LBS_MULTICOLUMN','%LBS_MULTIPLESEL','%LBS_NOINTEGRALHEIGHT',
        +            '%LBS_NOSEL','%LBS_NOTIFY','%LBS_SORT','%LBS_STANDARD','%LBS_USETABSTOPS','%LB_ADDFILE','%LB_ADDSTRING','%LB_DELETESTRING',
        +            '%LB_DIR','%LB_FINDSTRING','%LB_FINDSTRINGEXACT','%LB_GETANCHORINDEX','%LB_GETCARETINDEX','%LB_GETCOUNT','%LB_GETCURSEL','%LB_GETHORIZONTALEXTENT',
        +            '%LB_GETITEMDATA','%LB_GETITEMHEIGHT','%LB_GETITEMRECT','%LB_GETLISTBOXINFO','%LB_GETLOCALE','%LB_GETSEL','%LB_GETSELCOUNT','%LB_GETSELITEMS',
        +            '%LB_GETTEXT','%LB_GETTEXTLEN','%LB_GETTOPINDEX','%LB_INITSTORAGE','%LB_INSERTSTRING','%LB_ITEMFROMPOINT','%LB_MULTIPLEADDSTRING','%LB_RESETCONTENT',
        +            '%LB_SELECTSTRING','%LB_SELITEMRANGE','%LB_SELITEMRANGEEX','%LB_SETANCHORINDEX','%LB_SETCARETINDEX','%LB_SETCOLUMNWIDTH','%LB_SETCOUNT','%LB_SETCURSEL',
        +            '%LB_SETHORIZONTALEXTENT','%LB_SETITEMDATA','%LB_SETITEMHEIGHT','%LB_SETLOCALE','%LB_SETSEL','%LB_SETTABSTOPS','%LB_SETTOPINDEX','%LF_FACESIZE',
        +            '%LTGRAY','%LVM_FIRST','%LWA_ALPHA','%LWA_COLORKEY','%MAGENTA','%MAXBYTE','%MAXCHAR','%MAXDWORD',
        +            '%MAXSHORT','%MAXWORD','%MAX_PATH','%MB_ABORTRETRYIGNORE','%MB_APPLMODAL','%MB_CANCELTRYCONTINUE','%MB_DEFBUTTON1','%MB_DEFBUTTON2',
        +            '%MB_DEFBUTTON3','%MB_HELP','%MB_ICONASTERISK','%MB_ICONERROR','%MB_ICONEXCLAMATION','%MB_ICONHAND','%MB_ICONINFORMATION','%MB_ICONQUESTION',
        +            '%MB_ICONSTOP','%MB_ICONWARNING','%MB_OK','%MB_OKCANCEL','%MB_RETRYCANCEL','%MB_SIMPLE','%MB_SYSTEMMODAL','%MB_TOPMOST',
        +            '%MB_YESNO','%MB_YESNOCANCEL','%MF_CHECKED','%MF_DISABLED','%MF_ENABLED','%MF_GRAYED','%MF_SEPARATOR','%MF_UNCHECKED',
        +            '%MINCHAR','%MINLONG','%MINSHORT','%NULL','%ODBC352_INC','%ODBCVER','%ODBC_ADD_DSN','%ODBC_ADD_SYS_DSN',
        +            '%ODBC_BOTH_DSN','%ODBC_CONFIG_DRIVER','%ODBC_CONFIG_DRIVER_MAX','%ODBC_CONFIG_DSN','%ODBC_CONFIG_SYS_DSN','%ODBC_DRIVER_VERSION','%ODBC_ERROR_COMPONENT_NOT_FOUND','%ODBC_ERROR_CREATE_DSN_FAILED',
        +            '%ODBC_ERROR_GENERAL_ERR','%ODBC_ERROR_INVALID_BUFF_LEN','%ODBC_ERROR_INVALID_DSN','%ODBC_ERROR_INVALID_HWND','%ODBC_ERROR_INVALID_INF','%ODBC_ERROR_INVALID_KEYWORD_VALUE','%ODBC_ERROR_INVALID_LOG_FILE','%ODBC_ERROR_INVALID_NAME',
        +            '%ODBC_ERROR_INVALID_PARAM_SEQUENCE','%ODBC_ERROR_INVALID_PATH','%ODBC_ERROR_INVALID_REQUEST_TYPE','%ODBC_ERROR_INVALID_STR','%ODBC_ERROR_LOAD_LIB_FAILED','%ODBC_ERROR_OUTPUT_STRING_TRUNCATED','%ODBC_ERROR_OUT_OF_MEM','%ODBC_ERROR_REMOVE_DSN_FAILED',
        +            '%ODBC_ERROR_REQUEST_FAILED','%ODBC_ERROR_USAGE_UPDATE_FAILED','%ODBC_ERROR_USER_CANCELED','%ODBC_ERROR_WRITING_SYSINFO_FAILED','%ODBC_INSTALL_COMPLETE','%ODBC_INSTALL_DRIVER','%ODBC_INSTALL_INQUIRY','%ODBC_REMOVE_DEFAULT_DSN',
        +            '%ODBC_REMOVE_DRIVER','%ODBC_REMOVE_DSN','%ODBC_REMOVE_SYS_DSN','%ODBC_SYSTEM_DSN','%ODBC_USER_DSN','%OFN_ALLOWMULTISELECT','%OFN_CREATEPROMPT','%OFN_ENABLEHOOK',
        +            '%OFN_ENABLEINCLUDENOTIFY','%OFN_ENABLESIZING','%OFN_ENABLETEMPLATE','%OFN_ENABLETEMPLATEHANDLE','%OFN_EXPLORER','%OFN_EXTENSIONDIFFERENT','%OFN_FILEMUSTEXIST','%OFN_HIDEREADONLY',
        +            '%OFN_LONGNAMES','%OFN_NOCHANGEDIR','%OFN_NODEREFERENCELINKS','%OFN_NOLONGNAMES','%OFN_NONETWORKBUTTON','%OFN_NOREADONLYRETURN','%OFN_NOTESTFILECREATE','%OFN_NOVALIDATE',
        +            '%OFN_OVERWRITEPROMPT','%OFN_PATHMUSTEXIST','%OFN_READONLY','%OFN_SHAREAWARE','%OFN_SHOWHELP','%OS_ERROR_CALLFUNCTION','%OS_ERROR_EMPTYSTRING','%OS_ERROR_LOADLIBRARY',
        +            '%OS_ERROR_SUCCESS','%OS_ERROR_WRONGPARAMETER','%OS_SHELL_ASYNC','%OS_SHELL_SYNC','%OS_WINDOWS_2K','%OS_WINDOWS_95','%OS_WINDOWS_95_OSR2','%OS_WINDOWS_98',
        +            '%OS_WINDOWS_98_SE','%OS_WINDOWS_ME','%OS_WINDOWS_NT','%OS_WINDOWS_SERVER_2003','%OS_WINDOWS_SERVER_LONGHORN','%OS_WINDOWS_SERVER_LONGHORN_DC','%OS_WINDOWS_VISTA','%OS_WINDOWS_XP',
        +            '%OS_WNDSTYLE_HIDE','%OS_WNDSTYLE_MAXIMIZED','%OS_WNDSTYLE_MINIMIZED','%OS_WNDSTYLE_MINIMIZEDNOFOCUS','%OS_WNDSTYLE_NORMAL','%OS_WNDSTYLE_NORMALNOFOCUS','%PATH_EXT','%PATH_FILE',
        +            '%PATH_FILEEXT','%PATH_ROOT','%PATH_ROOTPATH','%PATH_ROOTPATHPROG','%PATH_ROOTPATHPROGEXT','%PBM_DELTAPOS','%PBM_GETPOS','%PBM_GETRANGE',
        +            '%PBM_SETBARCOLOR','%PBM_SETBKCOLOR','%PBM_SETPOS','%PBM_SETRANGE','%PBM_SETRANGE32','%PBM_SETSTEP','%PBM_STEPIT','%PBS_SMOOTH',
        +            '%PBS_VERTICAL','%PC_DISABLEWAKEEVENT_OFF','%PC_DISABLEWAKEEVENT_ON','%PC_EB_NOCONFIRMATION','%PC_EB_NOPROGRESSUI','%PC_EB_NORMAL','%PC_EB_NOSOUND','%PC_FORCECRITICAL_OFF',
        +            '%PC_FORCECRITICAL_ON','%PC_HIBERNATE_OFF','%PC_HIBERNATE_ON','%PC_RD_FORCE','%PC_RD_FORCEIFHUNG','%PC_RD_LOGOFF','%PC_RD_POWEROFF','%PC_RD_REBOOT',
        +            '%PC_RD_SHUTDOWN','%PC_SD_DONOT_FORCE','%PC_SD_DONOT_REBOOT','%PC_SD_FORCE','%PC_SD_REBOOT','%PFA_CENTER','%PFA_LEFT','%PFA_RIGHT',
        +            '%PF_3DNOW_INSTRUCTIONS_AVAILABLE','%PF_CHANNELS_ENABLED','%PF_COMPARE64_EXCHANGE128','%PF_COMPARE_EXCHANGE128','%PF_COMPARE_EXCHANGE_DOUBLE','%PF_FLOATING_POINT_EMULATED','%PF_FLOATING_POINT_PRECISION_ERRATA','%PF_MMX_INSTRUCTIONS_AVAILABLE',
        +            '%PF_NX_ENABLED','%PF_PAE_ENABLED','%PF_RDTSC_INSTRUCTION_AVAILABLE','%PF_SSE3_INSTRUCTIONS_AVAILABLE','%PF_XMMI64_INSTRUCTIONS_AVAILABLE','%PF_XMMI_INSTRUCTIONS_AVAILABLE','%PGM_FIRST','%RED',
        +            '%RTF_UBB','%SAPI_SVSFDEFAULT','%SAPI_SVSFISFILENAME','%SAPI_SVSFISNOTXML','%SAPI_SVSFISXML','%SAPI_SVSFLAGSASYNC','%SAPI_SVSFNLPMASK','%SAPI_SVSFNLPSPEAKPUNC',
        +            '%SAPI_SVSFPERSISTXML','%SAPI_SVSFPURGEBEFORESPEAK','%SAPI_SVSFUNUSEDFLAGS','%SAPI_SVSFVOICEMASK','%SBS_SIZEGRIP','%SB_BOTTOM','%SB_ENDSCROLL','%SB_LEFT',
        +            '%SB_LINEDOWN','%SB_LINELEFT','%SB_LINERIGHT','%SB_LINEUP','%SB_PAGEDOWN','%SB_PAGELEFT','%SB_PAGERIGHT','%SB_PAGEUP',
        +            '%SB_RIGHT','%SB_SETPARTS','%SB_SETTEXT','%SB_THUMBPOSITION','%SB_THUMBTRACK','%SB_TOP','%SCF_ALL','%SCF_ASSOCIATEFONT',
        +            '%SCF_DEFAULT','%SCF_NOKBUPDATE','%SCF_SELECTION','%SCF_USEUIRULES','%SCF_WORD','%SC_CLOSE','%SC_CONTEXTHELP','%SC_HOTKEY',
        +            '%SC_HSCROLL','%SC_KEYMENU','%SC_MAXIMIZE','%SC_MINIMIZE','%SC_MONITORPOWER','%SC_MOUSEMENU','%SC_MOVE','%SC_NEXTWINDOW',
        +            '%SC_PREVWINDOW','%SC_RESTORE','%SC_SCREENSAVE','%SC_SIZE','%SC_TASKLIST','%SC_VSCROLL','%SERVICE_ACTIVE','%SERVICE_AUTO_START',
        +            '%SERVICE_BOOT_START','%SERVICE_CONTINUE_PENDING','%SERVICE_DEMAND_START','%SERVICE_DISABLED','%SERVICE_DRIVER','%SERVICE_INACTIVE','%SERVICE_INFO_DISPLAY_NAME','%SERVICE_INFO_NAME',
        +            '%SERVICE_PAUSED','%SERVICE_PAUSE_PENDING','%SERVICE_RUNNING','%SERVICE_START_PENDING','%SERVICE_STATE_ALL','%SERVICE_STOPPED','%SERVICE_STOP_PENDING','%SERVICE_SYSTEM_START',
        +            '%SERVICE_TYPE_ALL','%SERVICE_WIN32','%SES_ALLOWBEEPS','%SES_BEEPONMAXTEXT','%SES_BIDI','%SES_EMULATE10','%SES_EMULATESYSEDIT','%SES_EXTENDBACKCOLOR',
        +            '%SES_LOWERCASE','%SES_MAPCPS','%SES_NOIME','%SES_NOINPUTSEQUENCECHK','%SES_SCROLLONKILLFOCUS','%SES_UPPERCASE','%SES_USEAIMM','%SES_USECRLF',
        +            '%SES_XLTCRCRLFTOCR','%SF_RTF','%SF_TEXT','%SMTP_SET_ATTACH_CONTENT_TYPE','%SMTP_SET_CONTENT_TYPE_PREFIX','%SQL_AA_FALSE','%SQL_AA_TRUE','%SQL_ACCESSIBLE_PROCEDURES',
        +            '%SQL_ACCESSIBLE_TABLES','%SQL_ACCESS_MODE','%SQL_ACTIVE_CONNECTIONS','%SQL_ACTIVE_ENVIRONMENTS','%SQL_ACTIVE_STATEMENTS','%SQL_ADD','%SQL_AD_ADD_CONSTRAINT_DEFERRABLE','%SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED',
        +            '%SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE','%SQL_AD_ADD_DOMAIN_CONSTRAINT','%SQL_AD_ADD_DOMAIN_DEFAULT','%SQL_AD_CONSTRAINT_NAME_DEFINITION','%SQL_AD_DROP_DOMAIN_CONSTRAINT','%SQL_AD_DROP_DOMAIN_DEFAULT','%SQL_AF_ALL',
        +            '%SQL_AF_AVG','%SQL_AF_COUNT','%SQL_AF_DISTINCT','%SQL_AF_MAX','%SQL_AF_MIN','%SQL_AF_SUM','%SQL_AGGREGATE_FUNCTIONS','%SQL_ALL_EXCEPT_LIKE',
        +            '%SQL_ALL_TYPES','%SQL_ALTER_DOMAIN','%SQL_ALTER_TABLE','%SQL_AM_CONNECTION','%SQL_AM_NONE','%SQL_AM_STATEMENT','%SQL_API_ALL_FUNCTIONS','%SQL_API_LOADBYORDINAL',
        +            '%SQL_API_ODBC3_ALL_FUNCTIONS','%SQL_API_ODBC3_ALL_FUNCTIONS_SIZE','%SQL_API_SQLALLOCCONNECT','%SQL_API_SQLALLOCENV','%SQL_API_SQLALLOCHANDLE','%SQL_API_SQLALLOCHANDLESTD','%SQL_API_SQLALLOCSTMT','%SQL_API_SQLBINDCOL',
        +            '%SQL_API_SQLBINDPARAM','%SQL_API_SQLBINDPARAMETER','%SQL_API_SQLBROWSECONNECT','%SQL_API_SQLBULKOPERATIONS','%SQL_API_SQLCANCEL','%SQL_API_SQLCLOSECURSOR','%SQL_API_SQLCOLATTRIBUTE','%SQL_API_SQLCOLATTRIBUTES',
        +            '%SQL_API_SQLCOLUMNPRIVILEGES','%SQL_API_SQLCOLUMNS','%SQL_API_SQLCONNECT','%SQL_API_SQLCOPYDESC','%SQL_API_SQLDATASOURCES','%SQL_API_SQLDESCRIBECOL','%SQL_API_SQLDESCRIBEPARAM','%SQL_API_SQLDISCONNECT',
        +            '%SQL_API_SQLDRIVERCONNECT','%SQL_API_SQLDRIVERS','%SQL_API_SQLENDTRAN','%SQL_API_SQLERROR','%SQL_API_SQLEXECDIRECT','%SQL_API_SQLEXECUTE','%SQL_API_SQLEXTENDEDFETCH','%SQL_API_SQLFETCH',
        +            '%SQL_API_SQLFETCHSCROLL','%SQL_API_SQLFOREIGNKEYS','%SQL_API_SQLFREECONNECT','%SQL_API_SQLFREEENV','%SQL_API_SQLFREEHANDLE','%SQL_API_SQLFREESTMT','%SQL_API_SQLGETCONNECTATTR','%SQL_API_SQLGETCONNECTOPTION',
        +            '%SQL_API_SQLGETCURSORNAME','%SQL_API_SQLGETDATA','%SQL_API_SQLGETDESCFIELD','%SQL_API_SQLGETDESCREC','%SQL_API_SQLGETDIAGFIELD','%SQL_API_SQLGETDIAGREC','%SQL_API_SQLGETENVATTR','%SQL_API_SQLGETFUNCTIONS',
        +            '%SQL_API_SQLGETINFO','%SQL_API_SQLGETSTMTATTR','%SQL_API_SQLGETSTMTOPTION','%SQL_API_SQLGETTYPEINFO','%SQL_API_SQLMORERESULTS','%SQL_API_SQLNATIVESQL','%SQL_API_SQLNUMPARAMS','%SQL_API_SQLNUMRESULTCOLS',
        +            '%SQL_API_SQLPARAMDATA','%SQL_API_SQLPARAMOPTIONS','%SQL_API_SQLPREPARE','%SQL_API_SQLPRIMARYKEYS','%SQL_API_SQLPROCEDURECOLUMNS','%SQL_API_SQLPROCEDURES','%SQL_API_SQLPUTDATA','%SQL_API_SQLROWCOUNT',
        +            '%SQL_API_SQLSETCONNECTATTR','%SQL_API_SQLSETCONNECTOPTION','%SQL_API_SQLSETCURSORNAME','%SQL_API_SQLSETDESCFIELD','%SQL_API_SQLSETDESCREC','%SQL_API_SQLSETENVATTR','%SQL_API_SQLSETPARAM','%SQL_API_SQLSETPOS',
        +            '%SQL_API_SQLSETSCROLLOPTIONS','%SQL_API_SQLSETSTMTATTR','%SQL_API_SQLSETSTMTOPTION','%SQL_API_SQLSPECIALCOLUMNS','%SQL_API_SQLSTATISTICS','%SQL_API_SQLTABLEPRIVILEGES','%SQL_API_SQLTABLES','%SQL_API_SQLTRANSACT',
        +            '%SQL_ARD_TYPE','%SQL_ASYNC_ENABLE','%SQL_ASYNC_ENABLE_DEFAULT','%SQL_ASYNC_ENABLE_OFF','%SQL_ASYNC_ENABLE_ON','%SQL_ASYNC_MODE','%SQL_ATTR_ACCESS_MODE','%SQL_ATTR_ANSI_APP',
        +            '%SQL_ATTR_APP_PARAM_DESC','%SQL_ATTR_APP_ROW_DESC','%SQL_ATTR_ASYNC_ENABLE','%SQL_ATTR_AUTOCOMMIT','%SQL_ATTR_AUTO_IPD','%SQL_ATTR_CONCURRENCY','%SQL_ATTR_CONNECTION_DEAD','%SQL_ATTR_CONNECTION_POOLING',
        +            '%SQL_ATTR_CONNECTION_TIMEOUT','%SQL_ATTR_CP_MATCH','%SQL_ATTR_CURRENT_CATALOG','%SQL_ATTR_CURSOR_SCROLLABLE','%SQL_ATTR_CURSOR_SENSITIVITY','%SQL_ATTR_CURSOR_TYPE','%SQL_ATTR_DISCONNECT_BEHAVIOR','%SQL_ATTR_ENABLE_AUTO_IPD',
        +            '%SQL_ATTR_ENLIST_IN_DTC','%SQL_ATTR_ENLIST_IN_XA','%SQL_ATTR_FETCH_BOOKMARK_PTR','%SQL_ATTR_IMP_PARAM_DESC','%SQL_ATTR_IMP_ROW_DESC','%SQL_ATTR_KEYSET_SIZE','%SQL_ATTR_LOGIN_TIMEOUT','%SQL_ATTR_MAX_LENGTH',
        +            '%SQL_ATTR_MAX_ROWS','%SQL_ATTR_METADATA_ID','%SQL_ATTR_NOSCAN','%SQL_ATTR_ODBC_CURSORS','%SQL_ATTR_ODBC_VERSION','%SQL_ATTR_OUTPUT_NTS','%SQL_ATTR_PACKET_SIZE','%SQL_ATTR_PARAMSET_SIZE',
        +            '%SQL_ATTR_PARAMS_PROCESSED_PTR','%SQL_ATTR_PARAM_BIND_OFFSET_PTR','%SQL_ATTR_PARAM_BIND_TYPE','%SQL_ATTR_PARAM_OPERATION_PTR','%SQL_ATTR_PARAM_STATUS_PTR','%SQL_ATTR_QUERY_TIMEOUT','%SQL_ATTR_QUIET_MODE','%SQL_ATTR_READONLY',
        +            '%SQL_ATTR_READWRITE_UNKNOWN','%SQL_ATTR_RETRIEVE_DATA','%SQL_ATTR_ROWS_FETCHED_PTR','%SQL_ATTR_ROW_ARRAY_SIZE','%SQL_ATTR_ROW_BIND_OFFSET_PTR','%SQL_ATTR_ROW_BIND_TYPE','%SQL_ATTR_ROW_NUMBER','%SQL_ATTR_ROW_OPERATION_PTR',
        +            '%SQL_ATTR_ROW_STATUS_PTR','%SQL_ATTR_SIMULATE_CURSOR','%SQL_ATTR_TRACE','%SQL_ATTR_TRACEFILE','%SQL_ATTR_TRANSLATE_LIB','%SQL_ATTR_TRANSLATE_OPTION','%SQL_ATTR_TXN_ISOLATION','%SQL_ATTR_USE_BOOKMARKS',
        +            '%SQL_ATTR_WRITE','%SQL_AT_ADD_COLUMN','%SQL_AT_ADD_COLUMN_COLLATION','%SQL_AT_ADD_COLUMN_DEFAULT','%SQL_AT_ADD_COLUMN_SINGLE','%SQL_AT_ADD_CONSTRAINT','%SQL_AT_ADD_TABLE_CONSTRAINT','%SQL_AT_CONSTRAINT_DEFERRABLE',
        +            '%SQL_AT_CONSTRAINT_INITIALLY_DEFERRED','%SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_AT_CONSTRAINT_NAME_DEFINITION','%SQL_AT_CONSTRAINT_NON_DEFERRABLE','%SQL_AT_DROP_COLUMN','%SQL_AT_DROP_COLUMN_CASCADE','%SQL_AT_DROP_COLUMN_DEFAULT','%SQL_AT_DROP_COLUMN_RESTRICT',
        +            '%SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE','%SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT','%SQL_AT_SET_COLUMN_DEFAULT','%SQL_AUTOCOMMIT','%SQL_AUTOCOMMIT_DEFAULT','%SQL_AUTOCOMMIT_OFF','%SQL_AUTOCOMMIT_ON','%SQL_BATCH_ROW_COUNT',
        +            '%SQL_BATCH_SUPPORT','%SQL_BEST_ROWID','%SQL_BIGINT','%SQL_BINARY','%SQL_BIND_BY_COLUMN','%SQL_BIND_TYPE','%SQL_BIND_TYPE_DEFAULT','%SQL_BIT',
        +            '%SQL_BOOKMARK_PERSISTENCE','%SQL_BP_CLOSE','%SQL_BP_DELETE','%SQL_BP_DROP','%SQL_BP_OTHER_HSTMT','%SQL_BP_SCROLL','%SQL_BP_TRANSACTION','%SQL_BP_UPDATE',
        +            '%SQL_BRC_EXPLICIT','%SQL_BRC_PROCEDURES','%SQL_BRC_ROLLED_UP','%SQL_BS_ROW_COUNT_EXPLICIT','%SQL_BS_ROW_COUNT_PROC','%SQL_BS_SELECT_EXPLICIT','%SQL_BS_SELECT_PROC','%SQL_CA1_ABSOLUTE',
        +            '%SQL_CA1_BOOKMARK','%SQL_CA1_BULK_ADD','%SQL_CA1_BULK_DELETE_BY_BOOKMARK','%SQL_CA1_BULK_FETCH_BY_BOOKMARK','%SQL_CA1_BULK_UPDATE_BY_BOOKMARK','%SQL_CA1_LOCK_EXCLUSIVE','%SQL_CA1_LOCK_NO_CHANGE','%SQL_CA1_LOCK_UNLOCK',
        +            '%SQL_CA1_NEXT','%SQL_CA1_POSITIONED_DELETE','%SQL_CA1_POSITIONED_UPDATE','%SQL_CA1_POS_DELETE','%SQL_CA1_POS_POSITION','%SQL_CA1_POS_REFRESH','%SQL_CA1_POS_UPDATE','%SQL_CA1_RELATIVE',
        +            '%SQL_CA1_SELECT_FOR_UPDATE','%SQL_CA2_CRC_APPROXIMATE','%SQL_CA2_CRC_EXACT','%SQL_CA2_LOCK_CONCURRENCY','%SQL_CA2_MAX_ROWS_AFFECTS_ALL','%SQL_CA2_MAX_ROWS_CATALOG','%SQL_CA2_MAX_ROWS_DELETE','%SQL_CA2_MAX_ROWS_INSERT',
        +            '%SQL_CA2_MAX_ROWS_SELECT','%SQL_CA2_MAX_ROWS_UPDATE','%SQL_CA2_OPT_ROWVER_CONCURRENCY','%SQL_CA2_OPT_VALUES_CONCURRENCY','%SQL_CA2_READ_ONLY_CONCURRENCY','%SQL_CA2_SENSITIVITY_ADDITIONS','%SQL_CA2_SENSITIVITY_DELETIONS','%SQL_CA2_SENSITIVITY_UPDATES',
        +            '%SQL_CA2_SIMULATE_NON_UNIQUE','%SQL_CA2_SIMULATE_TRY_UNIQUE','%SQL_CA2_SIMULATE_UNIQUE','%SQL_CASCADE','%SQL_CATALOG_LOCATION','%SQL_CATALOG_NAME','%SQL_CATALOG_NAME_SEPARATOR','%SQL_CATALOG_TERM',
        +            '%SQL_CATALOG_USAGE','%SQL_CA_CONSTRAINT_DEFERRABLE','%SQL_CA_CONSTRAINT_INITIALLY_DEFERRED','%SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_CA_CONSTRAINT_NON_DEFERRABLE','%SQL_CA_CREATE_ASSERTION','%SQL_CB_CLOSE','%SQL_CB_DELETE',
        +            '%SQL_CB_NON_NULL','%SQL_CB_NULL','%SQL_CB_PRESERVE','%SQL_CCOL_CREATE_COLLATION','%SQL_CCS_COLLATE_CLAUSE','%SQL_CCS_CREATE_CHARACTER_SET','%SQL_CCS_LIMITED_COLLATION','%SQL_CC_CLOSE',
        +            '%SQL_CC_DELETE','%SQL_CC_PRESERVE','%SQL_CDO_COLLATION','%SQL_CDO_CONSTRAINT','%SQL_CDO_CONSTRAINT_DEFERRABLE','%SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED','%SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_CDO_CONSTRAINT_NAME_DEFINITION',
        +            '%SQL_CDO_CONSTRAINT_NON_DEFERRABLE','%SQL_CDO_CREATE_DOMAIN','%SQL_CDO_DEFAULT','%SQL_CD_FALSE','%SQL_CD_TRUE','%SQL_CHAR','%SQL_CLOSE','%SQL_CL_END',
        +            '%SQL_CL_START','%SQL_CN_ANY','%SQL_CN_DIFFERENT','%SQL_CN_NONE','%SQL_CODE_DATE','%SQL_CODE_DAY','%SQL_CODE_DAY_TO_HOUR','%SQL_CODE_DAY_TO_MINUTE',
        +            '%SQL_CODE_DAY_TO_SECOND','%SQL_CODE_HOUR','%SQL_CODE_HOUR_TO_MINUTE','%SQL_CODE_HOUR_TO_SECOND','%SQL_CODE_MINUTE','%SQL_CODE_MINUTE_TO_SECOND','%SQL_CODE_MONTH','%SQL_CODE_SECOND',
        +            '%SQL_CODE_TIME','%SQL_CODE_TIMESTAMP','%SQL_CODE_YEAR','%SQL_CODE_YEAR_TO_MONTH','%SQL_COLATT_OPT_MAX','%SQL_COLATT_OPT_MIN','%SQL_COLLATION_SEQ','%SQL_COLUMN_ALIAS',
        +            '%SQL_COLUMN_AUTO_INCREMENT','%SQL_COLUMN_CASE_SENSITIVE','%SQL_COLUMN_COUNT','%SQL_COLUMN_DISPLAY_SIZE','%SQL_COLUMN_IGNORE','%SQL_COLUMN_LABEL','%SQL_COLUMN_LENGTH','%SQL_COLUMN_MONEY',
        +            '%SQL_COLUMN_NAME','%SQL_COLUMN_NULLABLE','%SQL_COLUMN_NUMBER_UNKNOWN','%SQL_COLUMN_OWNER_NAME','%SQL_COLUMN_PRECISION','%SQL_COLUMN_QUALIFIER_NAME','%SQL_COLUMN_SCALE','%SQL_COLUMN_SEARCHABLE',
        +            '%SQL_COLUMN_TABLE_NAME','%SQL_COLUMN_TYPE','%SQL_COLUMN_TYPE_NAME','%SQL_COLUMN_UNSIGNED','%SQL_COLUMN_UPDATABLE','%SQL_COL_PRED_BASIC','%SQL_COL_PRED_CHAR','%SQL_COMMIT',
        +            '%SQL_CONCAT_NULL_BEHAVIOR','%SQL_CONCURRENCY','%SQL_CONCUR_DEFAULT','%SQL_CONCUR_LOCK','%SQL_CONCUR_READ_ONLY','%SQL_CONCUR_ROWVER','%SQL_CONCUR_TIMESTAMP','%SQL_CONCUR_VALUES',
        +            '%SQL_CONVERT_BIGINT','%SQL_CONVERT_BINARY','%SQL_CONVERT_BIT','%SQL_CONVERT_CHAR','%SQL_CONVERT_DATE','%SQL_CONVERT_DECIMAL','%SQL_CONVERT_DOUBLE','%SQL_CONVERT_FLOAT',
        +            '%SQL_CONVERT_FUNCTIONS','%SQL_CONVERT_GUID','%SQL_CONVERT_INTEGER','%SQL_CONVERT_INTERVAL_DAY_TIME','%SQL_CONVERT_INTERVAL_YEAR_MONTH','%SQL_CONVERT_LONGVARBINARY','%SQL_CONVERT_LONGVARCHAR','%SQL_CONVERT_NUMERIC',
        +            '%SQL_CONVERT_REAL','%SQL_CONVERT_SMALLINT','%SQL_CONVERT_TIME','%SQL_CONVERT_TIMESTAMP','%SQL_CONVERT_TINYINT','%SQL_CONVERT_VARBINARY','%SQL_CONVERT_VARCHAR','%SQL_CONVERT_WCHAR',
        +            '%SQL_CONVERT_WLONGVARCHAR','%SQL_CONVERT_WVARCHAR','%SQL_CORRELATION_NAME','%SQL_CP_DEFAULT','%SQL_CP_MATCH_DEFAULT','%SQL_CP_OFF','%SQL_CP_ONE_PER_DRIVER','%SQL_CP_ONE_PER_HENV',
        +            '%SQL_CP_RELAXED_MATCH','%SQL_CP_STRICT_MATCH','%SQL_CREATE_ASSERTION','%SQL_CREATE_CHARACTER_SET','%SQL_CREATE_COLLATION','%SQL_CREATE_DOMAIN','%SQL_CREATE_SCHEMA','%SQL_CREATE_TABLE',
        +            '%SQL_CREATE_TRANSLATION','%SQL_CREATE_VIEW','%SQL_CR_CLOSE','%SQL_CR_DELETE','%SQL_CR_PRESERVE','%SQL_CS_AUTHORIZATION','%SQL_CS_CREATE_SCHEMA','%SQL_CS_DEFAULT_CHARACTER_SET',
        +            '%SQL_CTR_CREATE_TRANSLATION','%SQL_CT_COLUMN_COLLATION','%SQL_CT_COLUMN_CONSTRAINT','%SQL_CT_COLUMN_DEFAULT','%SQL_CT_COMMIT_DELETE','%SQL_CT_COMMIT_PRESERVE','%SQL_CT_CONSTRAINT_DEFERRABLE','%SQL_CT_CONSTRAINT_INITIALLY_DEFERRED',
        +            '%SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_CT_CONSTRAINT_NAME_DEFINITION','%SQL_CT_CONSTRAINT_NON_DEFERRABLE','%SQL_CT_CREATE_TABLE','%SQL_CT_GLOBAL_TEMPORARY','%SQL_CT_LOCAL_TEMPORARY','%SQL_CT_TABLE_CONSTRAINT','%SQL_CURRENT_QUALIFIER',
        +            '%SQL_CURSOR_COMMIT_BEHAVIOR','%SQL_CURSOR_DYNAMIC','%SQL_CURSOR_FORWARD_ONLY','%SQL_CURSOR_KEYSET_DRIVEN','%SQL_CURSOR_ROLLBACK_BEHAVIOR','%SQL_CURSOR_SENSITIVITY','%SQL_CURSOR_STATIC','%SQL_CURSOR_TYPE',
        +            '%SQL_CURSOR_TYPE_DEFAULT','%SQL_CUR_DEFAULT','%SQL_CUR_USE_DRIVER','%SQL_CUR_USE_IF_NEEDED','%SQL_CUR_USE_ODBC','%SQL_CU_DML_STATEMENTS','%SQL_CU_INDEX_DEFINITION','%SQL_CU_PRIVILEGE_DEFINITION',
        +            '%SQL_CU_PROCEDURE_INVOCATION','%SQL_CU_TABLE_DEFINITION','%SQL_CVT_BIGINT','%SQL_CVT_BINARY','%SQL_CVT_BIT','%SQL_CVT_CHAR','%SQL_CVT_DATE','%SQL_CVT_DECIMAL',
        +            '%SQL_CVT_DOUBLE','%SQL_CVT_FLOAT','%SQL_CVT_GUID','%SQL_CVT_INTEGER','%SQL_CVT_INTERVAL_DAY_TIME','%SQL_CVT_INTERVAL_YEAR_MONTH','%SQL_CVT_LONGVARBINARY','%SQL_CVT_LONGVARCHAR',
        +            '%SQL_CVT_NUMERIC','%SQL_CVT_REAL','%SQL_CVT_SMALLINT','%SQL_CVT_TIME','%SQL_CVT_TIMESTAMP','%SQL_CVT_TINYINT','%SQL_CVT_VARBINARY','%SQL_CVT_VARCHAR',
        +            '%SQL_CVT_WCHAR','%SQL_CVT_WLONGVARCHAR','%SQL_CVT_WVARCHAR','%SQL_CV_CASCADED','%SQL_CV_CHECK_OPTION','%SQL_CV_CREATE_VIEW','%SQL_CV_LOCAL','%SQL_C_BINARY',
        +            '%SQL_C_BIT','%SQL_C_BOOKMARK','%SQL_C_CHAR','%SQL_C_DATE','%SQL_C_DEFAULT','%SQL_C_DOUBLE','%SQL_C_FLOAT','%SQL_C_GUID',
        +            '%SQL_C_INTERVAL_DAY','%SQL_C_INTERVAL_DAY_TO_HOUR','%SQL_C_INTERVAL_DAY_TO_MINUTE','%SQL_C_INTERVAL_DAY_TO_SECOND','%SQL_C_INTERVAL_HOUR','%SQL_C_INTERVAL_HOUR_TO_MINUTE','%SQL_C_INTERVAL_HOUR_TO_SECOND','%SQL_C_INTERVAL_MINUTE',
        +            '%SQL_C_INTERVAL_MINUTE_TO_SECOND','%SQL_C_INTERVAL_MONTH','%SQL_C_INTERVAL_SECOND','%SQL_C_INTERVAL_YEAR','%SQL_C_INTERVAL_YEAR_TO_MONTH','%SQL_C_LONG','%SQL_C_NUMERIC','%SQL_C_SBIGINT',
        +            '%SQL_C_SHORT','%SQL_C_SLONG','%SQL_C_SSHORT','%SQL_C_STINYINT','%SQL_C_TIME','%SQL_C_TIMESTAMP','%SQL_C_TINYINT','%SQL_C_TYPE_DATE',
        +            '%SQL_C_TYPE_TIME','%SQL_C_TYPE_TIMESTAMP','%SQL_C_UBIGINT','%SQL_C_ULONG','%SQL_C_USHORT','%SQL_C_UTINYINT','%SQL_C_VARBOOKMARK','%SQL_DATABASE_NAME',
        +            '%SQL_DATA_AT_EXEC','%SQL_DATA_SOURCE_NAME','%SQL_DATA_SOURCE_READ_ONLY','%SQL_DATE','%SQL_DATETIME','%SQL_DATETIME_LITERALS','%SQL_DATE_LEN','%SQL_DAY',
        +            '%SQL_DAY_TO_HOUR','%SQL_DAY_TO_MINUTE','%SQL_DAY_TO_SECOND','%SQL_DA_DROP_ASSERTION','%SQL_DBMS_NAME','%SQL_DBMS_VER','%SQL_DB_DEFAULT','%SQL_DB_DISCONNECT',
        +            '%SQL_DB_RETURN_TO_POOL','%SQL_DCS_DROP_CHARACTER_SET','%SQL_DC_DROP_COLLATION','%SQL_DDL_INDEX','%SQL_DD_CASCADE','%SQL_DD_DROP_DOMAIN','%SQL_DD_RESTRICT','%SQL_DECIMAL',
        +            '%SQL_DEFAULT','%SQL_DEFAULT_PARAM','%SQL_DEFAULT_TXN_ISOLATION','%SQL_DELETE','%SQL_DELETE_BY_BOOKMARK','%SQL_DESCRIBE_PARAMETER','%SQL_DESC_ALLOC_AUTO','%SQL_DESC_ALLOC_TYPE',
        +            '%SQL_DESC_ALLOC_USER','%SQL_DESC_ARRAY_SIZE','%SQL_DESC_ARRAY_STATUS_PTR','%SQL_DESC_AUTO_UNIQUE_VALUE','%SQL_DESC_BASE_COLUMN_NAME','%SQL_DESC_BASE_TABLE_NAME','%SQL_DESC_BIND_OFFSET_PTR','%SQL_DESC_BIND_TYPE',
        +            '%SQL_DESC_CASE_SENSITIVE','%SQL_DESC_CATALOG_NAME','%SQL_DESC_CONCISE_TYPE','%SQL_DESC_COUNT','%SQL_DESC_DATA_PTR','%SQL_DESC_DATETIME_INTERVAL_CODE','%SQL_DESC_DATETIME_INTERVAL_PRECISION','%SQL_DESC_DISPLAY_SIZE',
        +            '%SQL_DESC_FIXED_PREC_SCALE','%SQL_DESC_INDICATOR_PTR','%SQL_DESC_LABEL','%SQL_DESC_LENGTH','%SQL_DESC_LITERAL_PREFIX','%SQL_DESC_LITERAL_SUFFIX','%SQL_DESC_LOCAL_TYPE_NAME','%SQL_DESC_MAXIMUM_SCALE',
        +            '%SQL_DESC_MINIMUM_SCALE','%SQL_DESC_NAME','%SQL_DESC_NULLABLE','%SQL_DESC_NUM_PREC_RADIX','%SQL_DESC_OCTET_LENGTH','%SQL_DESC_OCTET_LENGTH_PTR','%SQL_DESC_PARAMETER_TYPE','%SQL_DESC_PRECISION',
        +            '%SQL_DESC_ROWS_PROCESSED_PTR','%SQL_DESC_SCALE','%SQL_DESC_SCHEMA_NAME','%SQL_DESC_SEARCHABLE','%SQL_DESC_TABLE_NAME','%SQL_DESC_TYPE','%SQL_DESC_TYPE_NAME','%SQL_DESC_UNNAMED',
        +            '%SQL_DESC_UNSIGNED','%SQL_DESC_UPDATABLE','%SQL_DIAG_ALTER_TABLE','%SQL_DIAG_CALL','%SQL_DIAG_CLASS_ORIGIN','%SQL_DIAG_COLUMN_NUMBER','%SQL_DIAG_CONNECTION_NAME','%SQL_DIAG_CREATE_INDEX',
        +            '%SQL_DIAG_CREATE_TABLE','%SQL_DIAG_CREATE_VIEW','%SQL_DIAG_CURSOR_ROW_COUNT','%SQL_DIAG_DELETE_WHERE','%SQL_DIAG_DROP_INDEX','%SQL_DIAG_DROP_TABLE','%SQL_DIAG_DROP_VIEW','%SQL_DIAG_DYNAMIC_DELETE_CURSOR',
        +            '%SQL_DIAG_DYNAMIC_FUNCTION','%SQL_DIAG_DYNAMIC_FUNCTION_CODE','%SQL_DIAG_DYNAMIC_UPDATE_CURSOR','%SQL_DIAG_GRANT','%SQL_DIAG_INSERT','%SQL_DIAG_MESSAGE_TEXT','%SQL_DIAG_NATIVE','%SQL_DIAG_NUMBER',
        +            '%SQL_DIAG_RETURNCODE','%SQL_DIAG_REVOKE','%SQL_DIAG_ROW_COUNT','%SQL_DIAG_ROW_NUMBER','%SQL_DIAG_SELECT_CURSOR','%SQL_DIAG_SERVER_NAME','%SQL_DIAG_SQLSTATE','%SQL_DIAG_SUBCLASS_ORIGIN',
        +            '%SQL_DIAG_UNKNOWN_STATEMENT','%SQL_DIAG_UPDATE_WHERE','%SQL_DI_CREATE_INDEX','%SQL_DI_DROP_INDEX','%SQL_DL_SQL92_DATE','%SQL_DL_SQL92_INTERVAL_DAY','%SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR','%SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE',
        +            '%SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND','%SQL_DL_SQL92_INTERVAL_HOUR','%SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE','%SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND','%SQL_DL_SQL92_INTERVAL_MINUTE','%SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND','%SQL_DL_SQL92_INTERVAL_MONTH','%SQL_DL_SQL92_INTERVAL_SECOND',
        +            '%SQL_DL_SQL92_INTERVAL_YEAR','%SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH','%SQL_DL_SQL92_TIME','%SQL_DL_SQL92_TIMESTAMP','%SQL_DM_VER','%SQL_DOUBLE','%SQL_DRIVER_COMPLETE','%SQL_DRIVER_COMPLETE_REQUIRED',
        +            '%SQL_DRIVER_HDBC','%SQL_DRIVER_HDESC','%SQL_DRIVER_HENV','%SQL_DRIVER_HLIB','%SQL_DRIVER_HSTMT','%SQL_DRIVER_NAME','%SQL_DRIVER_NOPROMPT','%SQL_DRIVER_ODBC_VER',
        +            '%SQL_DRIVER_PROMPT','%SQL_DRIVER_VER','%SQL_DROP','%SQL_DROP_ASSERTION','%SQL_DROP_CHARACTER_SET','%SQL_DROP_COLLATION','%SQL_DROP_DOMAIN','%SQL_DROP_SCHEMA',
        +            '%SQL_DROP_TABLE','%SQL_DROP_TRANSLATION','%SQL_DROP_VIEW','%SQL_DS_CASCADE','%SQL_DS_DROP_SCHEMA','%SQL_DS_RESTRICT','%SQL_DTC_DONE','%SQL_DTC_ENLIST_EXPENSIVE',
        +            '%SQL_DTC_TRANSITION_COST','%SQL_DTC_UNENLIST_EXPENSIVE','%SQL_DTR_DROP_TRANSLATION','%SQL_DT_CASCADE','%SQL_DT_DROP_TABLE','%SQL_DT_RESTRICT','%SQL_DV_CASCADE','%SQL_DV_DROP_VIEW',
        +            '%SQL_DV_RESTRICT','%SQL_DYNAMIC_CURSOR_ATTRIBUTES1','%SQL_DYNAMIC_CURSOR_ATTRIBUTES2','%SQL_ENSURE','%SQL_ENTIRE_ROWSET','%SQL_ERROR','%SQL_EXPRESSIONS_IN_ORDERBY','%SQL_FALSE',
        +            '%SQL_FD_FETCH_ABSOLUTE','%SQL_FD_FETCH_BOOKMARK','%SQL_FD_FETCH_FIRST','%SQL_FD_FETCH_LAST','%SQL_FD_FETCH_NEXT','%SQL_FD_FETCH_PREV','%SQL_FD_FETCH_PRIOR','%SQL_FD_FETCH_RELATIVE',
        +            '%SQL_FETCH_ABSOLUTE','%SQL_FETCH_BOOKMARK','%SQL_FETCH_BY_BOOKMARK','%SQL_FETCH_DIRECTION','%SQL_FETCH_FIRST','%SQL_FETCH_FIRST_SYSTEM','%SQL_FETCH_FIRST_USER','%SQL_FETCH_LAST',
        +            '%SQL_FETCH_NEXT','%SQL_FETCH_PREV','%SQL_FETCH_PRIOR','%SQL_FETCH_RELATIVE','%SQL_FILE_CATALOG','%SQL_FILE_NOT_SUPPORTED','%SQL_FILE_QUALIFIER','%SQL_FILE_TABLE',
        +            '%SQL_FILE_USAGE','%SQL_FLOAT','%SQL_FN_CVT_CAST','%SQL_FN_CVT_CONVERT','%SQL_FN_NUM_ABS','%SQL_FN_NUM_ACOS','%SQL_FN_NUM_ASIN','%SQL_FN_NUM_ATAN',
        +            '%SQL_FN_NUM_ATAN2','%SQL_FN_NUM_CEILING','%SQL_FN_NUM_COS','%SQL_FN_NUM_COT','%SQL_FN_NUM_DEGREES','%SQL_FN_NUM_EXP','%SQL_FN_NUM_FLOOR','%SQL_FN_NUM_LOG',
        +            '%SQL_FN_NUM_LOG10','%SQL_FN_NUM_MOD','%SQL_FN_NUM_PI','%SQL_FN_NUM_POWER','%SQL_FN_NUM_RADIANS','%SQL_FN_NUM_RAND','%SQL_FN_NUM_ROUND','%SQL_FN_NUM_SIGN',
        +            '%SQL_FN_NUM_SIN','%SQL_FN_NUM_SQRT','%SQL_FN_NUM_TAN','%SQL_FN_NUM_TRUNCATE','%SQL_FN_STR_ASCII','%SQL_FN_STR_BIT_LENGTH','%SQL_FN_STR_CHAR','%SQL_FN_STR_CHARACTER_LENGTH',
        +            '%SQL_FN_STR_CHAR_LENGTH','%SQL_FN_STR_CONCAT','%SQL_FN_STR_DIFFERENCE','%SQL_FN_STR_INSERT','%SQL_FN_STR_LCASE','%SQL_FN_STR_LEFT','%SQL_FN_STR_LENGTH','%SQL_FN_STR_LOCATE',
        +            '%SQL_FN_STR_LOCATE_2','%SQL_FN_STR_LTRIM','%SQL_FN_STR_OCTET_LENGTH','%SQL_FN_STR_POSITION','%SQL_FN_STR_REPEAT','%SQL_FN_STR_REPLACE','%SQL_FN_STR_RIGHT','%SQL_FN_STR_RTRIM',
        +            '%SQL_FN_STR_SOUNDEX','%SQL_FN_STR_SPACE','%SQL_FN_STR_SUBSTRING','%SQL_FN_STR_UCASE','%SQL_FN_SYS_DBNAME','%SQL_FN_SYS_IFNULL','%SQL_FN_SYS_USERNAME','%SQL_FN_TD_CURDATE',
        +            '%SQL_FN_TD_CURRENT_DATE','%SQL_FN_TD_CURRENT_TIME','%SQL_FN_TD_CURRENT_TIMESTAMP','%SQL_FN_TD_CURTIME','%SQL_FN_TD_DAYNAME','%SQL_FN_TD_DAYOFMONTH','%SQL_FN_TD_DAYOFWEEK','%SQL_FN_TD_DAYOFYEAR',
        +            '%SQL_FN_TD_EXTRACT','%SQL_FN_TD_HOUR','%SQL_FN_TD_MINUTE','%SQL_FN_TD_MONTH','%SQL_FN_TD_MONTHNAME','%SQL_FN_TD_NOW','%SQL_FN_TD_QUARTER','%SQL_FN_TD_SECOND',
        +            '%SQL_FN_TD_TIMESTAMPADD','%SQL_FN_TD_TIMESTAMPDIFF','%SQL_FN_TD_WEEK','%SQL_FN_TD_YEAR','%SQL_FN_TSI_DAY','%SQL_FN_TSI_FRAC_SECOND','%SQL_FN_TSI_HOUR','%SQL_FN_TSI_MINUTE',
        +            '%SQL_FN_TSI_MONTH','%SQL_FN_TSI_QUARTER','%SQL_FN_TSI_SECOND','%SQL_FN_TSI_WEEK','%SQL_FN_TSI_YEAR','%SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1','%SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2','%SQL_GB_COLLATE',
        +            '%SQL_GB_GROUP_BY_CONTAINS_SELECT','%SQL_GB_GROUP_BY_EQUALS_SELECT','%SQL_GB_NOT_SUPPORTED','%SQL_GB_NO_RELATION','%SQL_GD_ANY_COLUMN','%SQL_GD_ANY_ORDER','%SQL_GD_BLOCK','%SQL_GD_BOUND',
        +            '%SQL_GETDATA_EXTENSIONS','%SQL_GET_BOOKMARK','%SQL_GROUP_BY','%SQL_GUID','%SQL_HANDLE_DBC','%SQL_HANDLE_DESC','%SQL_HANDLE_ENV','%SQL_HANDLE_SENV',
        +            '%SQL_HANDLE_STMT','%SQL_HOUR','%SQL_HOUR_TO_MINUTE','%SQL_HOUR_TO_SECOND','%SQL_IC_LOWER','%SQL_IC_MIXED','%SQL_IC_SENSITIVE','%SQL_IC_UPPER',
        +            '%SQL_IDENTIFIER_CASE','%SQL_IDENTIFIER_QUOTE_CHAR','%SQL_IGNORE','%SQL_IK_ALL','%SQL_IK_ASC','%SQL_IK_DESC','%SQL_IK_NONE','%SQL_INDEX_ALL',
        +            '%SQL_INDEX_CLUSTERED','%SQL_INDEX_HASHED','%SQL_INDEX_KEYWORDS','%SQL_INDEX_OTHER','%SQL_INDEX_UNIQUE','%SQL_INFO_FIRST','%SQL_INFO_SCHEMA_VIEWS','%SQL_INITIALLY_DEFERRED',
        +            '%SQL_INITIALLY_IMMEDIATE','%SQL_INSENSITIVE','%SQL_INSERT_STATEMENT','%SQL_INTEGER','%SQL_INTEGRITY','%SQL_INTERVAL','%SQL_INTERVAL_DAY','%SQL_INTERVAL_DAY_TO_HOUR',
        +            '%SQL_INTERVAL_DAY_TO_MINUTE','%SQL_INTERVAL_DAY_TO_SECOND','%SQL_INTERVAL_HOUR','%SQL_INTERVAL_HOUR_TO_MINUTE','%SQL_INTERVAL_HOUR_TO_SECOND','%SQL_INTERVAL_MINUTE','%SQL_INTERVAL_MINUTE_TO_SECOND','%SQL_INTERVAL_MONTH',
        +            '%SQL_INTERVAL_SECOND','%SQL_INTERVAL_YEAR','%SQL_INTERVAL_YEAR_TO_MONTH','%SQL_INVALID_HANDLE','%SQL_ISV_ASSERTIONS','%SQL_ISV_CHARACTER_SETS','%SQL_ISV_CHECK_CONSTRAINTS','%SQL_ISV_COLLATIONS',
        +            '%SQL_ISV_COLUMNS','%SQL_ISV_COLUMN_DOMAIN_USAGE','%SQL_ISV_COLUMN_PRIVILEGES','%SQL_ISV_CONSTRAINT_COLUMN_USAGE','%SQL_ISV_CONSTRAINT_TABLE_USAGE','%SQL_ISV_DOMAINS','%SQL_ISV_DOMAIN_CONSTRAINTS','%SQL_ISV_KEY_COLUMN_USAGE',
        +            '%SQL_ISV_REFERENTIAL_CONSTRAINTS','%SQL_ISV_SCHEMATA','%SQL_ISV_SQL_LANGUAGES','%SQL_ISV_TABLES','%SQL_ISV_TABLE_CONSTRAINTS','%SQL_ISV_TABLE_PRIVILEGES','%SQL_ISV_TRANSLATIONS','%SQL_ISV_USAGE_PRIVILEGES',
        +            '%SQL_ISV_VIEWS','%SQL_ISV_VIEW_COLUMN_USAGE','%SQL_ISV_VIEW_TABLE_USAGE','%SQL_IS_DAY','%SQL_IS_DAY_TO_HOUR','%SQL_IS_DAY_TO_MINUTE','%SQL_IS_DAY_TO_SECOND','%SQL_IS_HOUR',
        +            '%SQL_IS_HOUR_TO_MINUTE','%SQL_IS_HOUR_TO_SECOND','%SQL_IS_INSERT_LITERALS','%SQL_IS_INSERT_SEARCHED','%SQL_IS_INTEGER','%SQL_IS_MINUTE','%SQL_IS_MINUTE_TO_SECOND','%SQL_IS_MONTH',
        +            '%SQL_IS_POINTER','%SQL_IS_SECOND','%SQL_IS_SELECT_INTO','%SQL_IS_SMALLINT','%SQL_IS_UINTEGER','%SQL_IS_USMALLINT','%SQL_IS_YEAR','%SQL_IS_YEAR_TO_MONTH',
        +            '%SQL_KEYSET_CURSOR_ATTRIBUTES1','%SQL_KEYSET_CURSOR_ATTRIBUTES2','%SQL_KEYSET_SIZE','%SQL_KEYSET_SIZE_DEFAULT','%SQL_KEYWORDS','%SQL_LCK_EXCLUSIVE','%SQL_LCK_NO_CHANGE','%SQL_LCK_UNLOCK',
        +            '%SQL_LEN_BINARY_ATTR_OFFSET','%SQL_LEN_DATA_AT_EXEC_OFFSET','%SQL_LIKE_ESCAPE_CLAUSE','%SQL_LIKE_ONLY','%SQL_LOCK_EXCLUSIVE','%SQL_LOCK_NO_CHANGE','%SQL_LOCK_TYPES','%SQL_LOCK_UNLOCK',
        +            '%SQL_LOGIN_TIMEOUT','%SQL_LOGIN_TIMEOUT_DEFAULT','%SQL_LONGVARBINARY','%SQL_LONGVARCHAR','%SQL_MAXIMUM_CATALOG_NAME_LENGTH','%SQL_MAXIMUM_COLUMNS_IN_GROUP_BY','%SQL_MAXIMUM_COLUMNS_IN_INDEX','%SQL_MAXIMUM_COLUMNS_IN_ORDER_BY',
        +            '%SQL_MAXIMUM_COLUMNS_IN_SELECT','%SQL_MAXIMUM_COLUMN_NAME_LENGTH','%SQL_MAXIMUM_CONCURRENT_ACTIVITIES','%SQL_MAXIMUM_CURSOR_NAME_LENGTH','%SQL_MAXIMUM_DRIVER_CONNECTIONS','%SQL_MAXIMUM_IDENTIFIER_LENGTH','%SQL_MAXIMUM_INDEX_SIZE','%SQL_MAXIMUM_ROW_SIZE',
        +            '%SQL_MAXIMUM_SCHEMA_NAME_LENGTH','%SQL_MAXIMUM_STATEMENT_LENGTH','%SQL_MAXIMUM_TABLES_IN_SELECT','%SQL_MAXIMUM_USER_NAME_LENGTH','%SQL_MAX_ASYNC_CONCURRENT_STATEMENTS','%SQL_MAX_BINARY_LITERAL_LEN','%SQL_MAX_CATALOG_NAME_LEN','%SQL_MAX_CHAR_LITERAL_LEN',
        +            '%SQL_MAX_COLUMNS_IN_GROUP_BY','%SQL_MAX_COLUMNS_IN_INDEX','%SQL_MAX_COLUMNS_IN_ORDER_BY','%SQL_MAX_COLUMNS_IN_SELECT','%SQL_MAX_COLUMNS_IN_TABLE','%SQL_MAX_COLUMN_NAME_LEN','%SQL_MAX_CONCURRENT_ACTIVITIES','%SQL_MAX_CURSOR_NAME_LEN',
        +            '%SQL_MAX_DRIVER_CONNECTIONS','%SQL_MAX_DSN_LENGTH','%SQL_MAX_IDENTIFIER_LEN','%SQL_MAX_INDEX_SIZE','%SQL_MAX_LENGTH','%SQL_MAX_LENGTH_DEFAULT','%SQL_MAX_MESSAGE_LENGTH','%SQL_MAX_NUMERIC_LEN',
        +            '%SQL_MAX_OPTION_STRING_LENGTH','%SQL_MAX_OWNER_NAME_LEN','%SQL_MAX_PROCEDURE_NAME_LEN','%SQL_MAX_QUALIFIER_NAME_LEN','%SQL_MAX_ROWS','%SQL_MAX_ROWS_DEFAULT','%SQL_MAX_ROW_SIZE','%SQL_MAX_ROW_SIZE_INCLUDES_LONG',
        +            '%SQL_MAX_SCHEMA_NAME_LEN','%SQL_MAX_STATEMENT_LEN','%SQL_MAX_TABLES_IN_SELECT','%SQL_MAX_TABLE_NAME_LEN','%SQL_MAX_USER_NAME_LEN','%SQL_MINUTE','%SQL_MINUTE_TO_SECOND','%SQL_MODE_DEFAULT',
        +            '%SQL_MODE_READ_ONLY','%SQL_MODE_READ_WRITE','%SQL_MONTH','%SQL_MULTIPLE_ACTIVE_TXN','%SQL_MULT_RESULT_SETS','%SQL_NAMED','%SQL_NC_END','%SQL_NC_HIGH',
        +            '%SQL_NC_LOW','%SQL_NC_START','%SQL_NEED_DATA','%SQL_NEED_LONG_DATA_LEN','%SQL_NNC_NON_NULL','%SQL_NNC_NULL','%SQL_NONSCROLLABLE','%SQL_NON_NULLABLE_COLUMNS',
        +            '%SQL_NOSCAN','%SQL_NOSCAN_DEFAULT','%SQL_NOSCAN_OFF','%SQL_NOSCAN_ON','%SQL_NOT_DEFERRABLE','%SQL_NO_ACTION','%SQL_NO_COLUMN_NUMBER','%SQL_NO_DATA',
        +            '%SQL_NO_DATA_FOUND','%SQL_NO_NULLS','%SQL_NO_ROW_NUMBER','%SQL_NO_TOTAL','%SQL_NTS','%SQL_NTSL','%SQL_NULLABLE','%SQL_NULLABLE_UNKNOWN',
        +            '%SQL_NULL_COLLATION','%SQL_NULL_DATA','%SQL_NULL_HANDLE','%SQL_NULL_HDBC','%SQL_NULL_HDESC','%SQL_NULL_HENV','%SQL_NULL_HSTMT','%SQL_NUMERIC',
        +            '%SQL_NUMERIC_FUNCTIONS','%SQL_OAC_LEVEL1','%SQL_OAC_LEVEL2','%SQL_OAC_NONE','%SQL_ODBC_API_CONFORMANCE','%SQL_ODBC_CURSORS','%SQL_ODBC_INTERFACE_CONFORMANCE','%SQL_ODBC_SAG_CLI_CONFORMANCE',
        +            '%SQL_ODBC_SQL_CONFORMANCE','%SQL_ODBC_SQL_OPT_IEF','%SQL_ODBC_VER','%SQL_OIC_CORE','%SQL_OIC_LEVEL1','%SQL_OIC_LEVEL2','%SQL_OJ_ALL_COMPARISON_OPS','%SQL_OJ_CAPABILITIES',
        +            '%SQL_OJ_FULL','%SQL_OJ_INNER','%SQL_OJ_LEFT','%SQL_OJ_NESTED','%SQL_OJ_NOT_ORDERED','%SQL_OJ_RIGHT','%SQL_OPT_TRACE','%SQL_OPT_TRACEFILE',
        +            '%SQL_OPT_TRACE_DEFAULT','%SQL_OPT_TRACE_OFF','%SQL_OPT_TRACE_ON','%SQL_ORDER_BY_COLUMNS_IN_SELECT','%SQL_OSCC_COMPLIANT','%SQL_OSCC_NOT_COMPLIANT','%SQL_OSC_CORE','%SQL_OSC_EXTENDED',
        +            '%SQL_OSC_MINIMUM','%SQL_OUTER_JOINS','%SQL_OUTER_JOIN_CAPABILITIES','%SQL_OU_DML_STATEMENTS','%SQL_OU_INDEX_DEFINITION','%SQL_OU_PRIVILEGE_DEFINITION','%SQL_OU_PROCEDURE_INVOCATION','%SQL_OU_TABLE_DEFINITION',
        +            '%SQL_OV_ODBC2','%SQL_OV_ODBC3','%SQL_OWNER_TERM','%SQL_OWNER_USAGE','%SQL_PACKET_SIZE','%SQL_PARAM_ARRAY_ROW_COUNTS','%SQL_PARAM_ARRAY_SELECTS','%SQL_PARAM_BIND_BY_COLUMN',
        +            '%SQL_PARAM_BIND_TYPE_DEFAULT','%SQL_PARAM_DIAG_UNAVAILABLE','%SQL_PARAM_ERROR','%SQL_PARAM_IGNORE','%SQL_PARAM_INPUT','%SQL_PARAM_INPUT_OUTPUT','%SQL_PARAM_OUTPUT','%SQL_PARAM_PROCEED',
        +            '%SQL_PARAM_SUCCESS','%SQL_PARAM_SUCCESS_WITH_INFO','%SQL_PARAM_TYPE_DEFAULT','%SQL_PARAM_TYPE_UNKNOWN','%SQL_PARAM_UNUSED','%SQL_PARC_BATCH','%SQL_PARC_NO_BATCH','%SQL_PAS_BATCH',
        +            '%SQL_PAS_NO_BATCH','%SQL_PAS_NO_SELECT','%SQL_PC_NON_PSEUDO','%SQL_PC_NOT_PSEUDO','%SQL_PC_PSEUDO','%SQL_PC_UNKNOWN','%SQL_POSITION','%SQL_POSITIONED_STATEMENTS',
        +            '%SQL_POS_ADD','%SQL_POS_DELETE','%SQL_POS_OPERATIONS','%SQL_POS_POSITION','%SQL_POS_REFRESH','%SQL_POS_UPDATE','%SQL_PRED_BASIC','%SQL_PRED_CHAR',
        +            '%SQL_PRED_NONE','%SQL_PRED_SEARCHABLE','%SQL_PROCEDURES','%SQL_PROCEDURE_TERM','%SQL_PS_POSITIONED_DELETE','%SQL_PS_POSITIONED_UPDATE','%SQL_PS_SELECT_FOR_UPDATE','%SQL_PT_FUNCTION',
        +            '%SQL_PT_PROCEDURE','%SQL_PT_UNKNOWN','%SQL_QL_END','%SQL_QL_START','%SQL_QUALIFIER_LOCATION','%SQL_QUALIFIER_NAME_SEPARATOR','%SQL_QUALIFIER_TERM','%SQL_QUALIFIER_USAGE',
        +            '%SQL_QUERY_TIMEOUT','%SQL_QUERY_TIMEOUT_DEFAULT','%SQL_QUICK','%SQL_QUIET_MODE','%SQL_QUOTED_IDENTIFIER_CASE','%SQL_QU_DML_STATEMENTS','%SQL_QU_INDEX_DEFINITION','%SQL_QU_PRIVILEGE_DEFINITION',
        +            '%SQL_QU_PROCEDURE_INVOCATION','%SQL_QU_TABLE_DEFINITION','%SQL_RD_DEFAULT','%SQL_RD_OFF','%SQL_RD_ON','%SQL_REAL','%SQL_REFRESH','%SQL_RESET_PARAMS',
        +            '%SQL_RESTRICT','%SQL_RESULT_COL','%SQL_RETRIEVE_DATA','%SQL_RETURN_VALUE','%SQL_ROLLBACK','%SQL_ROWSET_SIZE','%SQL_ROWSET_SIZE_DEFAULT','%SQL_ROWVER',
        +            '%SQL_ROW_ADDED','%SQL_ROW_DELETED','%SQL_ROW_ERROR','%SQL_ROW_IDENTIFIER','%SQL_ROW_IGNORE','%SQL_ROW_NOROW','%SQL_ROW_NUMBER','%SQL_ROW_NUMBER_UNKNOWN',
        +            '%SQL_ROW_PROCEED','%SQL_ROW_SUCCESS','%SQL_ROW_SUCCESS_WITH_INFO','%SQL_ROW_UPDATED','%SQL_ROW_UPDATES','%SQL_SCCO_LOCK','%SQL_SCCO_OPT_ROWVER','%SQL_SCCO_OPT_TIMESTAMP',
        +            '%SQL_SCCO_OPT_VALUES','%SQL_SCCO_READ_ONLY','%SQL_SCC_ISO92_CLI','%SQL_SCC_XOPEN_CLI_VERSION1','%SQL_SCHEMA_TERM','%SQL_SCHEMA_USAGE','%SQL_SCOPE_CURROW','%SQL_SCOPE_SESSION',
        +            '%SQL_SCOPE_TRANSACTION','%SQL_SCROLLABLE','%SQL_SCROLL_CONCURRENCY','%SQL_SCROLL_DYNAMIC','%SQL_SCROLL_FORWARD_ONLY','%SQL_SCROLL_KEYSET_DRIVEN','%SQL_SCROLL_OPTIONS','%SQL_SCROLL_STATIC',
        +            '%SQL_SC_FIPS127_2_TRANSITIONAL','%SQL_SC_NON_UNIQUE','%SQL_SC_SQL92_ENTRY','%SQL_SC_SQL92_FULL','%SQL_SC_SQL92_INTERMEDIATE','%SQL_SC_TRY_UNIQUE','%SQL_SC_UNIQUE','%SQL_SDF_CURRENT_DATE',
        +            '%SQL_SDF_CURRENT_TIME','%SQL_SDF_CURRENT_TIMESTAMP','%SQL_SEARCHABLE','%SQL_SEARCH_PATTERN_ESCAPE','%SQL_SECOND','%SQL_SENSITIVE','%SQL_SERVER_NAME','%SQL_SETPARAM_VALUE_MAX',
        +            '%SQL_SETPOS_MAX_LOCK_VALUE','%SQL_SETPOS_MAX_OPTION_VALUE','%SQL_SET_DEFAULT','%SQL_SET_NULL','%SQL_SFKD_CASCADE','%SQL_SFKD_NO_ACTION','%SQL_SFKD_SET_DEFAULT','%SQL_SFKD_SET_NULL',
        +            '%SQL_SFKU_CASCADE','%SQL_SFKU_NO_ACTION','%SQL_SFKU_SET_DEFAULT','%SQL_SFKU_SET_NULL','%SQL_SG_DELETE_TABLE','%SQL_SG_INSERT_COLUMN','%SQL_SG_INSERT_TABLE','%SQL_SG_REFERENCES_COLUMN',
        +            '%SQL_SG_REFERENCES_TABLE','%SQL_SG_SELECT_TABLE','%SQL_SG_UPDATE_COLUMN','%SQL_SG_UPDATE_TABLE','%SQL_SG_USAGE_ON_CHARACTER_SET','%SQL_SG_USAGE_ON_COLLATION','%SQL_SG_USAGE_ON_DOMAIN','%SQL_SG_USAGE_ON_TRANSLATION',
        +            '%SQL_SG_WITH_GRANT_OPTION','%SQL_SIGNED_OFFSET','%SQL_SIMULATE_CURSOR','%SQL_SMALLINT','%SQL_SNVF_BIT_LENGTH','%SQL_SNVF_CHARACTER_LENGTH','%SQL_SNVF_CHAR_LENGTH','%SQL_SNVF_EXTRACT',
        +            '%SQL_SNVF_OCTET_LENGTH','%SQL_SNVF_POSITION','%SQL_SO_DYNAMIC','%SQL_SO_FORWARD_ONLY','%SQL_SO_KEYSET_DRIVEN','%SQL_SO_MIXED','%SQL_SO_STATIC','%SQL_SPECIAL_CHARACTERS',
        +            '%SQL_SPEC_MAJOR','%SQL_SPEC_MINOR','%SQL_SP_BETWEEN','%SQL_SP_COMPARISON','%SQL_SP_EXISTS','%SQL_SP_IN','%SQL_SP_ISNOTNULL','%SQL_SP_ISNULL',
        +            '%SQL_SP_LIKE','%SQL_SP_MATCH_FULL','%SQL_SP_MATCH_PARTIAL','%SQL_SP_MATCH_UNIQUE_FULL','%SQL_SP_MATCH_UNIQUE_PARTIAL','%SQL_SP_OVERLAPS','%SQL_SP_QUANTIFIED_COMPARISON','%SQL_SP_UNIQUE',
        +            '%SQL_SQL92_DATETIME_FUNCTIONS','%SQL_SQL92_FOREIGN_KEY_DELETE_RULE','%SQL_SQL92_FOREIGN_KEY_UPDATE_RULE','%SQL_SQL92_GRANT','%SQL_SQL92_NUMERIC_VALUE_FUNCTIONS','%SQL_SQL92_PREDICATES','%SQL_SQL92_RELATIONAL_JOIN_OPERATORS','%SQL_SQL92_REVOKE',
        +            '%SQL_SQL92_ROW_VALUE_CONSTRUCTOR','%SQL_SQL92_STRING_FUNCTIONS','%SQL_SQL92_VALUE_EXPRESSIONS','%SQL_SQLSTATE_SIZE','%SQL_SQL_CONFORMANCE','%SQL_SQ_COMPARISON','%SQL_SQ_CORRELATED_SUBQUERIES','%SQL_SQ_EXISTS',
        +            '%SQL_SQ_IN','%SQL_SQ_QUANTIFIED','%SQL_SRJO_CORRESPONDING_CLAUSE','%SQL_SRJO_CROSS_JOIN','%SQL_SRJO_EXCEPT_JOIN','%SQL_SRJO_FULL_OUTER_JOIN','%SQL_SRJO_INNER_JOIN','%SQL_SRJO_INTERSECT_JOIN',
        +            '%SQL_SRJO_LEFT_OUTER_JOIN','%SQL_SRJO_NATURAL_JOIN','%SQL_SRJO_RIGHT_OUTER_JOIN','%SQL_SRJO_UNION_JOIN','%SQL_SRVC_DEFAULT','%SQL_SRVC_NULL','%SQL_SRVC_ROW_SUBQUERY','%SQL_SRVC_VALUE_EXPRESSION',
        +            '%SQL_SR_CASCADE','%SQL_SR_DELETE_TABLE','%SQL_SR_GRANT_OPTION_FOR','%SQL_SR_INSERT_COLUMN','%SQL_SR_INSERT_TABLE','%SQL_SR_REFERENCES_COLUMN','%SQL_SR_REFERENCES_TABLE','%SQL_SR_RESTRICT',
        +            '%SQL_SR_SELECT_TABLE','%SQL_SR_UPDATE_COLUMN','%SQL_SR_UPDATE_TABLE','%SQL_SR_USAGE_ON_CHARACTER_SET','%SQL_SR_USAGE_ON_COLLATION','%SQL_SR_USAGE_ON_DOMAIN','%SQL_SR_USAGE_ON_TRANSLATION','%SQL_SSF_CONVERT',
        +            '%SQL_SSF_LOWER','%SQL_SSF_SUBSTRING','%SQL_SSF_TRANSLATE','%SQL_SSF_TRIM_BOTH','%SQL_SSF_TRIM_LEADING','%SQL_SSF_TRIM_TRAILING','%SQL_SSF_UPPER','%SQL_SS_ADDITIONS',
        +            '%SQL_SS_DELETIONS','%SQL_SS_UPDATES','%SQL_STANDARD_CLI_CONFORMANCE','%SQL_STATIC_CURSOR_ATTRIBUTES1','%SQL_STATIC_CURSOR_ATTRIBUTES2','%SQL_STATIC_SENSITIVITY','%SQL_STILL_EXECUTING','%SQL_STRING_FUNCTIONS',
        +            '%SQL_SUBQUERIES','%SQL_SUCCESS','%SQL_SUCCESS_WITH_INFO','%SQL_SU_DML_STATEMENTS','%SQL_SU_INDEX_DEFINITION','%SQL_SU_PRIVILEGE_DEFINITION','%SQL_SU_PROCEDURE_INVOCATION','%SQL_SU_TABLE_DEFINITION',
        +            '%SQL_SVE_CASE','%SQL_SVE_CAST','%SQL_SVE_COALESCE','%SQL_SVE_NULLIF','%SQL_SYSTEM_FUNCTIONS','%SQL_TABLE_STAT','%SQL_TABLE_TERM','%SQL_TC_ALL',
        +            '%SQL_TC_DDL_COMMIT','%SQL_TC_DDL_IGNORE','%SQL_TC_DML','%SQL_TC_NONE','%SQL_TIME','%SQL_TIMEDATE_ADD_INTERVALS','%SQL_TIMEDATE_DIFF_INTERVALS','%SQL_TIMEDATE_FUNCTIONS',
        +            '%SQL_TIMESTAMP','%SQL_TIMESTAMP_LEN','%SQL_TIME_LEN','%SQL_TINYINT','%SQL_TRANSACTION_CAPABLE','%SQL_TRANSACTION_ISOLATION_OPTION','%SQL_TRANSACTION_READ_COMMITTED','%SQL_TRANSACTION_READ_UNCOMMITTED',
        +            '%SQL_TRANSACTION_REPEATABLE_READ','%SQL_TRANSACTION_SERIALIZABLE','%SQL_TRANSLATE_DLL','%SQL_TRANSLATE_OPTION','%SQL_TRUE','%SQL_TXN_CAPABLE','%SQL_TXN_ISOLATION','%SQL_TXN_ISOLATION_OPTION',
        +            '%SQL_TXN_READ_COMMITTED','%SQL_TXN_READ_UNCOMMITTED','%SQL_TXN_REPEATABLE_READ','%SQL_TXN_SERIALIZABLE','%SQL_TYPE_DATE','%SQL_TYPE_NULL','%SQL_TYPE_TIME','%SQL_TYPE_TIMESTAMP',
        +            '%SQL_UB_DEFAULT','%SQL_UB_FIXED','%SQL_UB_OFF','%SQL_UB_ON','%SQL_UB_VARIABLE','%SQL_UNBIND','%SQL_UNICODE','%SQL_UNICODE_CHAR',
        +            '%SQL_UNICODE_LONGVARCHAR','%SQL_UNICODE_VARCHAR','%SQL_UNION','%SQL_UNION_STATEMENT','%SQL_UNKNOWN_TYPE','%SQL_UNNAMED','%SQL_UNSEARCHABLE','%SQL_UNSIGNED_OFFSET',
        +            '%SQL_UNSPECIFIED','%SQL_UPDATE','%SQL_UPDATE_BY_BOOKMARK','%SQL_USER_NAME','%SQL_USE_BOOKMARKS','%SQL_US_UNION','%SQL_US_UNION_ALL','%SQL_U_UNION',
        +            '%SQL_U_UNION_ALL','%SQL_VARBINARY','%SQL_VARCHAR','%SQL_XOPEN_CLI_YEAR','%SQL_YEAR','%SQL_YEAR_TO_MONTH','%SRCCOPY','%SS_BITMAP',
        +            '%SS_BLACKFRAME','%SS_BLACKRECT','%SS_CENTER','%SS_CENTERIMAGE','%SS_ENDELLIPSIS','%SS_ETCHEDFRAME','%SS_ETCHEDHORZ','%SS_ETCHEDVERT',
        +            '%SS_GRAYFRAME','%SS_GRAYRECT','%SS_LEFT','%SS_NOPREFIX','%SS_NOTIFY','%SS_NOWORDWRAP','%SS_PATHELLIPSIS','%SS_RIGHT',
        +            '%SS_RIGHTJUST','%SS_SIMPLE','%SS_SUNKEN','%SS_WHITEFRAME','%SS_WHITERECT','%SS_WORDELLIPSIS','%STAT_FILL_FROM_MEMORY','%STAT_FILL_NATURAL',
        +            '%STAT_FILL_NATURAL_ERASTONE','%STAT_FILL_NATURAL_EVEN','%STAT_FILL_NATURAL_FIBONACCI','%STAT_FILL_NATURAL_ODD','%STAT_FILL_WITH_NUMBER','%STAT_MINMAX_INDEX','%STAT_MINMAX_VALUE','%STAT_TYPE_BYTE',
        +            '%STAT_TYPE_CURRENCY','%STAT_TYPE_DOUBLE','%STAT_TYPE_DWORD','%STAT_TYPE_EXT','%STAT_TYPE_INTEGER','%STAT_TYPE_LONG','%STAT_TYPE_QUAD','%STAT_TYPE_SINGLE',
        +            '%STAT_TYPE_WORD','%SWP_ASYNCWINDOWPOS','%SWP_DEFERERASE','%SWP_DRAWFRAME','%SWP_FRAMECHANGED','%SWP_HIDEWINDOW','%SWP_NOACTIVATE','%SWP_NOCOPYBITS',
        +            '%SWP_NOMOVE','%SWP_NOOWNERZORDER','%SWP_NOREDRAW','%SWP_NOREPOSITION','%SWP_NOSENDCHANGING','%SWP_NOSIZE','%SWP_NOZORDER','%SWP_SHOWWINDOW',
        +            '%SW_FORCEMINIMIZE','%SW_HIDE','%SW_MAXIMIZE','%SW_MINIMIZE','%SW_NORMAL','%SW_RESTORE','%SW_SHOW','%SW_SHOWDEFAULT',
        +            '%SW_SHOWMAXIMIZED','%SW_SHOWMINIMIZED','%SW_SHOWMINNOACTIVE','%SW_SHOWNA','%SW_SHOWNOACTIVATE','%SW_SHOWNORMAL','%TBASS_3DALG_DEFAULT','%TBASS_3DALG_FULL',
        +            '%TBASS_3DALG_LIGHT','%TBASS_3DALG_OFF','%TBASS_3DMODE_NORMAL','%TBASS_3DMODE_OFF','%TBASS_3DMODE_RELATIVE','%TBASS_ACTIVE_PAUSED','%TBASS_ACTIVE_PLAYING','%TBASS_ACTIVE_STALLED',
        +            '%TBASS_ACTIVE_STOPPED','%TBASS_CONFIG_3DALGORITHM','%TBASS_CONFIG_BUFFER','%TBASS_CONFIG_CURVE_PAN','%TBASS_CONFIG_CURVE_VOL','%TBASS_CONFIG_FLOATDSP','%TBASS_CONFIG_GVOL_MUSIC','%TBASS_CONFIG_GVOL_SAMPLE',
        +            '%TBASS_CONFIG_GVOL_STREAM','%TBASS_CONFIG_MAXVOL','%TBASS_CONFIG_MP3_CODEC','%TBASS_CONFIG_NET_AGENT','%TBASS_CONFIG_NET_BUFFER','%TBASS_CONFIG_NET_PASSIVE','%TBASS_CONFIG_NET_PREBUF','%TBASS_CONFIG_NET_PROXY',
        +            '%TBASS_CONFIG_NET_TIMEOUT','%TBASS_CONFIG_PAUSE_NOPLAY','%TBASS_CONFIG_UPDATEPERIOD','%TBASS_CTYPE_MUSIC_IT','%TBASS_CTYPE_MUSIC_MO3','%TBASS_CTYPE_MUSIC_MOD','%TBASS_CTYPE_MUSIC_MTM','%TBASS_CTYPE_MUSIC_S3M',
        +            '%TBASS_CTYPE_MUSIC_XM','%TBASS_CTYPE_RECORD','%TBASS_CTYPE_SAMPLE','%TBASS_CTYPE_STREAM','%TBASS_CTYPE_STREAM_AIFF','%TBASS_CTYPE_STREAM_MP1','%TBASS_CTYPE_STREAM_MP2','%TBASS_CTYPE_STREAM_MP3',
        +            '%TBASS_CTYPE_STREAM_OGG','%TBASS_CTYPE_STREAM_WAV','%TBASS_CTYPE_STREAM_WAV_FLOAT','%TBASS_CTYPE_STREAM_WAV_PCM','%TBASS_DATA_AVAILABLE','%TBASS_DATA_FFT1024','%TBASS_DATA_FFT2048','%TBASS_DATA_FFT4096',
        +            '%TBASS_DATA_FFT512','%TBASS_DATA_FFT_INDIVIDUAL','%TBASS_DATA_FFT_NOWINDOW','%TBASS_DATA_FLOAT','%TBASS_DEVICE_3D','%TBASS_DEVICE_8BITS','%TBASS_DEVICE_LATENCY','%TBASS_DEVICE_MONO',
        +            '%TBASS_DEVICE_NOSPEAKER','%TBASS_DEVICE_SPEAKERS','%TBASS_EAX_ENVIRONMENT_ALLEY','%TBASS_EAX_ENVIRONMENT_ARENA','%TBASS_EAX_ENVIRONMENT_AUDITORIUM','%TBASS_EAX_ENVIRONMENT_BATHROOM','%TBASS_EAX_ENVIRONMENT_CARPETEDHALLWAY','%TBASS_EAX_ENVIRONMENT_CAVE',
        +            '%TBASS_EAX_ENVIRONMENT_CITY','%TBASS_EAX_ENVIRONMENT_CONCERTHALL','%TBASS_EAX_ENVIRONMENT_COUNT','%TBASS_EAX_ENVIRONMENT_DIZZY','%TBASS_EAX_ENVIRONMENT_DRUGGED','%TBASS_EAX_ENVIRONMENT_FOREST','%TBASS_EAX_ENVIRONMENT_GENERIC','%TBASS_EAX_ENVIRONMENT_HALLWAY',
        +            '%TBASS_EAX_ENVIRONMENT_HANGAR','%TBASS_EAX_ENVIRONMENT_LIVINGROOM','%TBASS_EAX_ENVIRONMENT_MOUNTAINS','%TBASS_EAX_ENVIRONMENT_PADDEDCELL','%TBASS_EAX_ENVIRONMENT_PARKINGLOT','%TBASS_EAX_ENVIRONMENT_PLAIN','%TBASS_EAX_ENVIRONMENT_PSYCHOTIC','%TBASS_EAX_ENVIRONMENT_QUARRY',
        +            '%TBASS_EAX_ENVIRONMENT_ROOM','%TBASS_EAX_ENVIRONMENT_SEWERPIPE','%TBASS_EAX_ENVIRONMENT_STONECORRIDOR','%TBASS_EAX_ENVIRONMENT_STONEROOM','%TBASS_EAX_ENVIRONMENT_UNDERWATER','%TBASS_ERROR_ALREADY','%TBASS_ERROR_BUFLOST','%TBASS_ERROR_CODEC',
        +            '%TBASS_ERROR_CREATE','%TBASS_ERROR_DECODE','%TBASS_ERROR_DEVICE','%TBASS_ERROR_DRIVER','%TBASS_ERROR_DX','%TBASS_ERROR_EMPTY','%TBASS_ERROR_FILEFORM','%TBASS_ERROR_FILEOPEN',
        +            '%TBASS_ERROR_FORMAT','%TBASS_ERROR_FREQ','%TBASS_ERROR_HANDLE','%TBASS_ERROR_ILLPARAM','%TBASS_ERROR_ILLTYPE','%TBASS_ERROR_INIT','%TBASS_ERROR_MEM','%TBASS_ERROR_NO3D',
        +            '%TBASS_ERROR_NOCHAN','%TBASS_ERROR_NOEAX','%TBASS_ERROR_NOFX','%TBASS_ERROR_NOHW','%TBASS_ERROR_NONET','%TBASS_ERROR_NOPAUSE','%TBASS_ERROR_NOPLAY','%TBASS_ERROR_NOTAVAIL',
        +            '%TBASS_ERROR_NOTFILE','%TBASS_ERROR_PLAYING','%TBASS_ERROR_POSITION','%TBASS_ERROR_SPEAKER','%TBASS_ERROR_START','%TBASS_ERROR_TIMEOUT','%TBASS_ERROR_UNKNOWN','%TBASS_ERROR_VERSION',
        +            '%TBASS_FALSE','%TBASS_FILEPOS_CURRENT','%TBASS_FILEPOS_DECODE','%TBASS_FILEPOS_DOWNLOAD','%TBASS_FILEPOS_END','%TBASS_FILEPOS_START','%TBASS_FILE_CLOSE','%TBASS_FILE_LEN',
        +            '%TBASS_FILE_READ','%TBASS_FILE_SEEK','%TBASS_FX_CHORUS','%TBASS_FX_COMPRESSOR','%TBASS_FX_DISTORTION','%TBASS_FX_ECHO','%TBASS_FX_FLANGER','%TBASS_FX_GARGLE',
        +            '%TBASS_FX_I3DL2REVERB','%TBASS_FX_PARAMEQ','%TBASS_FX_PHASE_180','%TBASS_FX_PHASE_90','%TBASS_FX_PHASE_NEG_180','%TBASS_FX_PHASE_NEG_90','%TBASS_FX_PHASE_ZERO','%TBASS_FX_REVERB',
        +            '%TBASS_INPUT_LEVEL','%TBASS_INPUT_OFF','%TBASS_INPUT_ON','%TBASS_INPUT_TYPE_ANALOG','%TBASS_INPUT_TYPE_AUX','%TBASS_INPUT_TYPE_CD','%TBASS_INPUT_TYPE_DIGITAL','%TBASS_INPUT_TYPE_LINE',
        +            '%TBASS_INPUT_TYPE_MASK','%TBASS_INPUT_TYPE_MIC','%TBASS_INPUT_TYPE_PHONE','%TBASS_INPUT_TYPE_SPEAKER','%TBASS_INPUT_TYPE_SYNTH','%TBASS_INPUT_TYPE_UNDEF','%TBASS_INPUT_TYPE_WAVE','%TBASS_MP3_SETPOS',
        +            '%TBASS_MUSIC_3D','%TBASS_MUSIC_ATTRIB_AMPLIFY','%TBASS_MUSIC_ATTRIB_BPM','%TBASS_MUSIC_ATTRIB_PANSEP','%TBASS_MUSIC_ATTRIB_PSCALER','%TBASS_MUSIC_ATTRIB_SPEED','%TBASS_MUSIC_ATTRIB_VOL_CHAN','%TBASS_MUSIC_ATTRIB_VOL_GLOBAL',
        +            '%TBASS_MUSIC_ATTRIB_VOL_INST','%TBASS_MUSIC_AUTOFREE','%TBASS_MUSIC_CALCLEN','%TBASS_MUSIC_DECODE','%TBASS_MUSIC_FLOAT','%TBASS_MUSIC_FT2MOD','%TBASS_MUSIC_FX','%TBASS_MUSIC_LOOP',
        +            '%TBASS_MUSIC_MONO','%TBASS_MUSIC_NONINTER','%TBASS_MUSIC_NOSAMPLE','%TBASS_MUSIC_POSRESET','%TBASS_MUSIC_POSRESETEX','%TBASS_MUSIC_PRESCAN','%TBASS_MUSIC_PT1MOD','%TBASS_MUSIC_RAMP',
        +            '%TBASS_MUSIC_RAMPS','%TBASS_MUSIC_STOPBACK','%TBASS_MUSIC_SURROUND','%TBASS_MUSIC_SURROUND2','%TBASS_OBJECT_DS','%TBASS_OBJECT_DS3DL','%TBASS_OK','%TBASS_RECORD_PAUSE',
        +            '%TBASS_SAMPLE_3D','%TBASS_SAMPLE_8BITS','%TBASS_SAMPLE_FLOAT','%TBASS_SAMPLE_FX','%TBASS_SAMPLE_LOOP','%TBASS_SAMPLE_MONO','%TBASS_SAMPLE_MUTEMAX','%TBASS_SAMPLE_OVER_DIST',
        +            '%TBASS_SAMPLE_OVER_POS','%TBASS_SAMPLE_OVER_VOL','%TBASS_SAMPLE_SOFTWARE','%TBASS_SAMPLE_VAM','%TBASS_SLIDE_FREQ','%TBASS_SLIDE_PAN','%TBASS_SLIDE_VOL','%TBASS_SPEAKER_CENLFE',
        +            '%TBASS_SPEAKER_CENTER','%TBASS_SPEAKER_FRONT','%TBASS_SPEAKER_FRONTLEFT','%TBASS_SPEAKER_FRONTRIGHT','%TBASS_SPEAKER_LEFT','%TBASS_SPEAKER_LFE','%TBASS_SPEAKER_REAR','%TBASS_SPEAKER_REAR2',
        +            '%TBASS_SPEAKER_REAR2LEFT','%TBASS_SPEAKER_REAR2RIGHT','%TBASS_SPEAKER_REARLEFT','%TBASS_SPEAKER_REARRIGHT','%TBASS_SPEAKER_RIGHT','%TBASS_STREAMPROC_END','%TBASS_STREAM_AUTOFREE','%TBASS_STREAM_BLOCK',
        +            '%TBASS_STREAM_DECODE','%TBASS_STREAM_PRESCAN','%TBASS_STREAM_RESTRATE','%TBASS_STREAM_STATUS','%TBASS_SYNC_DOWNLOAD','%TBASS_SYNC_END','%TBASS_SYNC_FREE','%TBASS_SYNC_MESSAGE',
        +            '%TBASS_SYNC_META','%TBASS_SYNC_MIXTIME','%TBASS_SYNC_MUSICFX','%TBASS_SYNC_MUSICINST','%TBASS_SYNC_MUSICPOS','%TBASS_SYNC_ONETIME','%TBASS_SYNC_POS','%TBASS_SYNC_SLIDE',
        +            '%TBASS_SYNC_STALL','%TBASS_TAG_HTTP','%TBASS_TAG_ICY','%TBASS_TAG_ID3','%TBASS_TAG_ID3V2','%TBASS_TAG_META','%TBASS_TAG_MUSIC_INST','%TBASS_TAG_MUSIC_MESSAGE',
        +            '%TBASS_TAG_MUSIC_NAME','%TBASS_TAG_MUSIC_SAMPLE','%TBASS_TAG_OGG','%TBASS_TAG_RIFF_INFO','%TBASS_TAG_VENDOR','%TBASS_TRUE','%TBASS_UNICODE','%TBASS_VAM_HARDWARE',
        +            '%TBASS_VAM_SOFTWARE','%TBASS_VAM_TERM_DIST','%TBASS_VAM_TERM_PRIO','%TBASS_VAM_TERM_TIME','%TBASS_VERSION','%TBCD_CHANNEL','%TBCD_THUMB','%TBCD_TICS',
        +            '%TBGL_ALIGN_CENTER','%TBGL_ALIGN_CENTER_CENTER','%TBGL_ALIGN_CENTER_DOWN','%TBGL_ALIGN_CENTER_UP','%TBGL_ALIGN_LEFT','%TBGL_ALIGN_LEFT_CENTER','%TBGL_ALIGN_LEFT_DOWN','%TBGL_ALIGN_LEFT_UP',
        +            '%TBGL_ALIGN_RIGHT','%TBGL_ALIGN_RIGHT_CENTER','%TBGL_ALIGN_RIGHT_DOWN','%TBGL_ALIGN_RIGHT_UP','%TBGL_ALWAYS','%TBGL_EQUAL','%TBGL_ERROR_FILE','%TBGL_ERROR_MSGBOX',
        +            '%TBGL_ERROR_NONE','%TBGL_GEQUAL','%TBGL_GREATER','%TBGL_LEQUAL','%TBGL_LESS','%TBGL_LIGHT_AMBIENT','%TBGL_LIGHT_CONSTANT_ATTENUATION','%TBGL_LIGHT_DIFFUSE',
        +            '%TBGL_LIGHT_LINEAR_ATTENUATION','%TBGL_LIGHT_POSITION','%TBGL_LIGHT_QUADRATIC_ATTENUATION','%TBGL_LIGHT_SPECULAR','%TBGL_LIGHT_SPOT_CUTOFF','%TBGL_LIGHT_SPOT_DIRECTION','%TBGL_LIGHT_SPOT_EXPONENT','%TBGL_M15B',
        +            '%TBGL_M15G','%TBGL_M15LAYER','%TBGL_M15PSTOP','%TBGL_M15R','%TBGL_M15TEXN','%TBGL_M15TEXX','%TBGL_M15TEXY','%TBGL_M15X',
        +            '%TBGL_M15Y','%TBGL_M15Z','%TBGL_NEVER','%TBGL_NORMAL_NONE','%TBGL_NORMAL_PRECISE','%TBGL_NORMAL_SMOOTH','%TBGL_NOTEQUAL','%TBGL_OBJ_CUBE',
        +            '%TBGL_OBJ_CUBE3','%TBGL_OBJ_CYLINDER','%TBGL_OBJ_SPHERE','%TBGL_PINFO_RGB','%TBGL_PINFO_XYZ','%TBGL_TEX_LINEAR','%TBGL_TEX_MIPMAP','%TBGL_TEX_NEAREST',
        +            '%TBM_CLEARSEL','%TBM_CLEARTICS','%TBM_GETBUDDY','%TBM_GETCHANNELRECT','%TBM_GETLINESIZE','%TBM_GETNUMTICS','%TBM_GETPAGESIZE','%TBM_GETPOS',
        +            '%TBM_GETPTICS','%TBM_GETRANGEMAX','%TBM_GETRANGEMIN','%TBM_GETSELEND','%TBM_GETSELSTART','%TBM_GETTHUMBLENGTH','%TBM_GETTHUMBRECT','%TBM_GETTIC',
        +            '%TBM_GETTICPOS','%TBM_GETTOOLTIPS','%TBM_GETUNICODEFORMAT','%TBM_SETBUDDY','%TBM_SETLINESIZE','%TBM_SETPAGESIZE','%TBM_SETPOS','%TBM_SETRANGE',
        +            '%TBM_SETRANGEMAX','%TBM_SETRANGEMIN','%TBM_SETSEL','%TBM_SETSELEND','%TBM_SETSELSTART','%TBM_SETTHUMBLENGTH','%TBM_SETTIC','%TBM_SETTICFREQ',
        +            '%TBM_SETTIPSIDE','%TBM_SETTOOLTIPS','%TBM_SETUNICODEFORMAT','%TBS_AUTOTICKS','%TBS_BOTH','%TBS_BOTTOM','%TBS_DOWNISLEFT','%TBS_ENABLESELRANGE',
        +            '%TBS_FIXEDLENGTH','%TBS_HORZ','%TBS_LEFT','%TBS_NOTHUMB','%TBS_NOTICKS','%TBS_REVERSED','%TBS_RIGHT','%TBS_TOOLTIPS',
        +            '%TBS_TOP','%TBS_VERT','%TBTS_BOTTOM','%TBTS_LEFT','%TBTS_RIGHT','%TBTS_TOP','%TB_%VT_BSTR','%TB_%VT_CY',
        +            '%TB_%VT_DATE','%TB_%VT_EMPTY','%TB_%VT_I2','%TB_%VT_I4','%TB_%VT_NULL','%TB_%VT_R4','%TB_%VT_R8','%TB_BOTTOM',
        +            '%TB_CLASS_E_NOAGGREGATION','%TB_CO_E_CLASSSTRING','%TB_DISPATCH_METHOD','%TB_DISPATCH_PROPERTYGET','%TB_DISPATCH_PROPERTYPUT','%TB_DISPATCH_PROPERTYPUTREF','%TB_ENDTRACK','%TB_E_INVALIDARG',
        +            '%TB_E_NOINTERFACE','%TB_E_OUTOFMEMORY','%TB_IMGCTX_ACTUALSIZE','%TB_IMGCTX_AUTOSIZE','%TB_IMGCTX_FITTOHEIGHT','%TB_IMGCTX_FITTOWIDTH','%TB_IMGCTX_STRETCH','%TB_LINEDOWN',
        +            '%TB_LINEUP','%TB_MK_E_CONNECTMANUALLY','%TB_MK_E_EXCEEDEDDEADLINE','%TB_MK_E_INTERMEDIATEINTERFACENOTSUPPORTED','%TB_MK_E_NOOBJECT','%TB_MK_E_SYNTAX','%TB_PAGEDOWN','%TB_PAGEUP',
        +            '%TB_REGDB_E_CLASSNOTREG','%TB_REGDB_E_WRITEREGDB','%TB_SIZEOF_TBVARIANT','%TB_S_FALSE','%TB_S_OK','%TB_THUMBPOSITION','%TB_THUMBTRACK','%TB_TOP',
        +            '%TCM_FIRST','%TCM_GETCURSEL','%TCN_FOCUSCHANGE','%TCN_GETOBJECT','%TCN_SELCHANGE','%TCN_SELCHANGING','%TCS_BOTTOM','%TCS_BUTTONS',
        +            '%TCS_EX_FLATSEPARATORS','%TCS_EX_REGISTERDROP','%TCS_FIXEDWIDTH','%TCS_FLATBUTTONS','%TCS_FOCUSNEVER','%TCS_FOCUSONBUTTONDOWN','%TCS_FORCEICONLEFT','%TCS_FORCELABELLEFT',
        +            '%TCS_HOTTRACK','%TCS_MULTILINE','%TCS_MULTISELECT','%TCS_OWNERDRAWFIXED','%TCS_RAGGEDRIGHT','%TCS_RIGHT','%TCS_RIGHTJUSTIFY','%TCS_SCROLLOPPOSITE',
        +            '%TCS_SINGLELINE','%TCS_TABS','%TCS_TOOLTIPS','%TCS_VERTICAL','%TM_PLAINTEXT','%TM_RICHTEXT','%TOKENIZER_DEFAULT_ALPHA','%TOKENIZER_DEFAULT_DELIM',
        +            '%TOKENIZER_DEFAULT_DQUOTE','%TOKENIZER_DEFAULT_NEWLINE','%TOKENIZER_DEFAULT_NUMERIC','%TOKENIZER_DEFAULT_SPACE','%TOKENIZER_DELIMITER','%TOKENIZER_EOL','%TOKENIZER_ERROR','%TOKENIZER_FINISHED',
        +            '%TOKENIZER_NUMBER','%TOKENIZER_QUOTE','%TOKENIZER_STRING','%TOKENIZER_UNDEFTOK','%TRUE','%TV_FIRST','%UDM_GETACCEL','%UDM_GETBASE',
        +            '%UDM_GETBUDDY','%UDM_GETPOS','%UDM_GETPOS32','%UDM_GETRANGE','%UDM_GETRANGE32','%UDM_GETUNICODEFORMAT','%UDM_SETACCEL','%UDM_SETBASE',
        +            '%UDM_SETBUDDY','%UDM_SETPOS','%UDM_SETPOS32','%UDM_SETRANGE','%UDM_SETRANGE32','%UDM_SETUNICODEFORMAT','%UDS_ALIGNLEFT','%UDS_ALIGNRIGHT',
        +            '%UDS_ARROWKEYS','%UDS_AUTOBUDDY','%UDS_HORZ','%UDS_HOTTRACK','%UDS_NOTHOUSANDS','%UDS_SETBUDDYINT','%UDS_WRAP','%UD_MAXVAL',
        +            '%UD_MINVAL','%VK_0','%VK_1','%VK_2','%VK_3','%VK_4','%VK_5','%VK_6',
        +            '%VK_7','%VK_8','%VK_9','%VK_A','%VK_ACCEPT','%VK_ADD','%VK_APPS','%VK_B',
        +            '%VK_BACK','%VK_C','%VK_CANCEL','%VK_CAPITAL','%VK_CLEAR','%VK_CONTROL','%VK_CONVERT','%VK_D',
        +            '%VK_DECIMAL','%VK_DELETE','%VK_DIVIDE','%VK_DOWN','%VK_E','%VK_END','%VK_ESCAPE','%VK_EXECUTE',
        +            '%VK_F','%VK_F1','%VK_F10','%VK_F11','%VK_F12','%VK_F13','%VK_F14','%VK_F15',
        +            '%VK_F16','%VK_F17','%VK_F18','%VK_F19','%VK_F2','%VK_F20','%VK_F21','%VK_F22',
        +            '%VK_F23','%VK_F24','%VK_F3','%VK_F4','%VK_F5','%VK_F6','%VK_F7','%VK_F8',
        +            '%VK_F9','%VK_FINAL','%VK_G','%VK_H','%VK_HANGEUL','%VK_HANGUL','%VK_HANJA','%VK_HELP',
        +            '%VK_HOME','%VK_I','%VK_INSERT','%VK_J','%VK_JUNJA','%VK_K','%VK_KANA','%VK_KANJI',
        +            '%VK_L','%VK_LBUTTON','%VK_LEFT','%VK_LINEFEED','%VK_LWIN','%VK_M','%VK_MBUTTON','%VK_MENU',
        +            '%VK_MODECHANGE','%VK_MULTIPLY','%VK_N','%VK_NEXT','%VK_NONCONVERT','%VK_NUMLOCK','%VK_NUMPAD0','%VK_NUMPAD1',
        +            '%VK_NUMPAD2','%VK_NUMPAD3','%VK_NUMPAD4','%VK_NUMPAD5','%VK_NUMPAD6','%VK_NUMPAD7','%VK_NUMPAD8','%VK_NUMPAD9',
        +            '%VK_O','%VK_P','%VK_PAUSE','%VK_PGDN','%VK_PGUP','%VK_PRINT','%VK_PRIOR','%VK_Q',
        +            '%VK_R','%VK_RBUTTON','%VK_RETURN','%VK_RIGHT','%VK_RWIN','%VK_S','%VK_SCROLL','%VK_SELECT',
        +            '%VK_SEPARATOR','%VK_SHIFT','%VK_SLEEP','%VK_SNAPSHOT','%VK_SPACE','%VK_SUBTRACT','%VK_T','%VK_TAB',
        +            '%VK_U','%VK_UP','%VK_V','%VK_W','%VK_X','%VK_XBUTTON1','%VK_XBUTTON2','%VK_Y',
        +            '%VK_Z','%VT_ARRAY','%VT_BLOB','%VT_BLOB_OBJECT','%VT_BOOL','%VT_BSTR','%VT_BYREF','%VT_CARRAY',
        +            '%VT_CF','%VT_CLSID','%VT_CY','%VT_DATE','%VT_DISPATCH','%VT_EMPTY','%VT_ERROR','%VT_FILETIME',
        +            '%VT_HRESULT','%VT_I1','%VT_I2','%VT_I4','%VT_I8','%VT_INT','%VT_LPSTR','%VT_LPWSTR',
        +            '%VT_NULL','%VT_PTR','%VT_R4','%VT_R8','%VT_RECORD','%VT_RESERVED','%VT_SAFEARRAY','%VT_STORAGE',
        +            '%VT_STORED_OBJECT','%VT_STREAM','%VT_STREAMED_OBJECT','%VT_UI1','%VT_UI2','%VT_UI4','%VT_UI8','%VT_UINT',
        +            '%VT_UNKNOWN','%VT_USERDEFINED','%VT_VARIANT','%VT_VECTOR','%VT_VOID','%WAVE_FORMAT_1M08','%WAVE_FORMAT_1M16','%WAVE_FORMAT_1S08',
        +            '%WAVE_FORMAT_1S16','%WAVE_FORMAT_2M08','%WAVE_FORMAT_2M16','%WAVE_FORMAT_2S08','%WAVE_FORMAT_2S16','%WAVE_FORMAT_4M08','%WAVE_FORMAT_4M16','%WAVE_FORMAT_4S08',
        +            '%WAVE_FORMAT_4S16','%WBF_CUSTOM','%WBF_LEVEL1','%WBF_LEVEL2','%WBF_OVERFLOW','%WBF_WORDBREAK','%WBF_WORDWRAP','%WHITE',
        +            '%WIN_FINDTITLECONTAIN','%WIN_FINDTITLEEND','%WIN_FINDTITLEEQUAL','%WIN_FINDTITLESTART','%WM_ACTIVATE','%WM_ACTIVATEAPP','%WM_CAPTURECHANGED','%WM_CHAR',
        +            '%WM_CLOSE','%WM_COMMAND','%WM_DESTROY','%WM_DROPFILES','%WM_ERASEBKGND','%WM_GETTEXTLENGTH','%WM_HOTKEY','%WM_HSCROLL',
        +            '%WM_IDLE','%WM_INITDIALOG','%WM_KEYDOWN','%WM_KEYUP','%WM_KILLFOCUS','%WM_LBUTTONDBLCLK','%WM_LBUTTONDOWN','%WM_LBUTTONUP',
        +            '%WM_MBUTTONDBLCLK','%WM_MBUTTONDOWN','%WM_MBUTTONUP','%WM_MOUSEFIRST','%WM_MOUSEMOVE','%WM_MOUSEWHEEL','%WM_MOVE','%WM_MOVING',
        +            '%WM_NCLBUTTONDOWN','%WM_NCRBUTTONDOWN','%WM_NEXTDLGCTL','%WM_NOTIFY','%WM_PAINT','%WM_QUIT','%WM_RBUTTONDBLCLK','%WM_RBUTTONDOWN',
        +            '%WM_RBUTTONUP','%WM_SETFOCUS','%WM_SETFONT','%WM_SETTEXT','%WM_SIZE','%WM_SIZING','%WM_SYSCOMMAND','%WM_TIMER',
        +            '%WM_USER','%WM_VSCROLL','%WS_BORDER','%WS_CAPTION','%WS_CHILD','%WS_CLIPCHILDREN','%WS_CLIPSIBLINGS','%WS_DISABLED',
        +            '%WS_DLGFRAME','%WS_EX_ACCEPTFILES','%WS_EX_APPWINDOW','%WS_EX_CLIENTEDGE','%WS_EX_CONTEXTHELP','%WS_EX_CONTROLPARENT','%WS_EX_LAYERED','%WS_EX_LEFT',
        +            '%WS_EX_LEFTSCROLLBAR','%WS_EX_LTRREADING','%WS_EX_MDICHILD','%WS_EX_NOPARENTNOTIFY','%WS_EX_OVERLAPPEDWINDOW','%WS_EX_PALETTEWINDOW','%WS_EX_RIGHT','%WS_EX_RIGHTSCROLLBAR',
        +            '%WS_EX_RTLREADING','%WS_EX_STATICEDGE','%WS_EX_TOOLWINDOW','%WS_EX_TOPMOST','%WS_EX_TRANSPARENT','%WS_EX_WINDOWEDGE','%WS_GROUP','%WS_HSCROLL',
        +            '%WS_ICONIC','%WS_MAXIMIZE','%WS_MAXIMIZEBOX','%WS_MINIMIZE','%WS_MINIMIZEBOX','%WS_OVERLAPPEDWINDOW','%WS_POPUP','%WS_POPUPWINDOW',
        +            '%WS_SYSMENU','%WS_TABSTOP','%WS_THICKFRAME','%WS_VISIBLE','%WS_VSCROLL','%YELLOW','%ZERO','CRLF',
        +            'FALSE','M_E','M_PI','NULL','TAB','TRUE'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000FF; font-weight: bold;',
        +            2 => 'color: #993333; font-style: italic; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008000;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #333333;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #800080;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #CC0000;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #66cc66;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #333333;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '_'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/tsql.php b/includes/geshi/tsql.php
        new file mode 100644
        index 0000000..57b32b6
        --- /dev/null
        +++ b/includes/geshi/tsql.php
        @@ -0,0 +1,819 @@
        + 'T-SQL',
        +    'COMMENT_SINGLE' => array(1 => '--'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'"),
        +    'HARDQUOTE' => array("N'", "'"),
        +    'ESCAPE_CHAR' => '[',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            /*
        +                Built-in functions
        +                Highlighted in pink.
        +                Moved these to first array so that functions like @@ROWCOUNT
        +                weren't broken up into @@ in black and ROWCOUNT in blue
        +                This would prevent the correct pink coloring from taking place.
        +                Not sure of any other downsides to this.
        +            */
        +
        +            //Configuration Functions
        +            '@@DATEFIRST','@@OPTIONS','@@DBTS','@@REMSERVER','@@LANGID','@@SERVERNAME',
        +            '@@LANGUAGE','@@SERVICENAME','@@LOCK_TIMEOUT','@@SPID','@@MAX_CONNECTIONS',
        +            '@@TEXTSIZE','@@MAX_PRECISION','@@VERSION','@@NESTLEVEL',
        +
        +            //Cursor Functions
        +            '@@CURSOR_ROWS','@@FETCH_STATUS',
        +
        +            //Date and Time Functions
        +            'DATEADD','DATEDIFF','DATENAME','DATEPART','GETDATE','GETUTCDATE',
        +            'DATEFROMPARTS','DATETIMEFROMPARTS', 'SMALLDATETIMEFROMPARTS', 'DATETIME2FROMPARTS', 'TIMEFROMPARTS',
        +            'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'SYSDATETIME', 'SYSUTCDATETIME',
        +            'YEAR', 'QUARTER', 'MONTH', 'DAY', 'HOUR', 'MINUTE', 'SECOND',
        +            'EOMONTH',
        +
        +            //Mathematical Functions
        +            'ABS','DEGREES','RAND','ACOS','EXP','ROUND','ASIN','FLOOR','SIGN',
        +            'ATAN','LOG','SIN','ATN2','LOG10','SQUARE','CEILING','PI','SQRT','COS',
        +            'POWER','TAN','COT','RADIANS', 'RANK',
        +
        +            //Meta Data Functions
        +            'COL_LENGTH','COL_NAME','FULLTEXTCATALOGPROPERTY',
        +            'COLUMNPROPERTY','FULLTEXTSERVICEPROPERTY','DATABASEPROPERTY','INDEX_COL',
        +            'DATABASEPROPERTYEX','INDEXKEY_PROPERTY','DB_ID','INDEXPROPERTY','DB_NAME',
        +            'OBJECT_ID','FILE_ID','OBJECT_NAME','FILE_NAME','OBJECTPROPERTY','FILEGROUP_ID',
        +            '@@PROCID','FILEGROUP_NAME','SQL_VARIANT_PROPERTY','FILEGROUPPROPERTY',
        +            'TYPEPROPERTY','FILEPROPERTY','OBJECT_SCHEMA_NAME', 'SCHEMA_ID', 'SCHEMA_NAME', 'OBJECT_DEFINITION',
        +
        +            //Security Functions
        +            'IS_SRVROLEMEMBER','SUSER_SID','SUSER_SNAME','USER_NAME', 'SUSER_NAME', 'USER_ID',
        +            'HAS_DBACCESS','IS_MEMBER', 'CURRENT_USER',
        +
        +            //String Functions
        +            'ASCII','SOUNDEX','PATINDEX','CHARINDEX','REPLACE','STR','LEFT', 'RIGHT','DATALENGTH','HASHBYTES',
        +            'DIFFERENCE','QUOTENAME','STUFF','REPLICATE','SUBSTRING','LEN',
        +            'REVERSE','UNICODE','LOWER','UPPER','LTRIM','RTRIM','FORMAT','TRY_CONVERT','TRY_PARSE','PARSE','CONVERT','CONCAT',
        +
        +            //System Functions
        +            'APP_NAME','COLLATIONPROPERTY','@@ERROR','FORMATMESSAGE',
        +            'GETANSINULL','HOST_ID','HOST_NAME','IDENT_CURRENT','IDENT_INCR',
        +            'IDENT_SEED','@@IDENTITY','ISDATE','ISNUMERIC','PARSENAME','PERMISSIONS','PROGRAM_NAME',
        +            '@@ROWCOUNT','ROWCOUNT_BIG','SCOPE_IDENTITY','SERVERPROPERTY','SESSIONPROPERTY',
        +            'STATS_DATE','@@TRANCOUNT',
        +
        +            // Error handling
        +            'ERROR_STATE', 'ERROR_SEVERITY', 'ERROR_NUMBER', 'ERROR_MESSAGE', 'ERROR_LINE', 'ERROR_PROCEDURE',
        +
        +            //System Statistical Functions
        +            '@@CONNECTIONS','@@PACK_RECEIVED','@@CPU_BUSY','@@PACK_SENT',
        +            '@@TIMETICKS','@@IDLE','@@TOTAL_ERRORS','@@IO_BUSY',
        +            '@@TOTAL_READ','@@PACKET_ERRORS','@@TOTAL_WRITE',
        +
        +            //Text and Image Functions
        +            'TEXTPTR','TEXTVALID',
        +
        +            //Aggregate functions
        +            'AVG', 'MAX', 'BINARY_CHECKSUM', 'MIN', 'CHECKSUM', 'SUM', 'CHECKSUM_AGG',
        +            'STDEV', 'COUNT', 'STDEVP', 'COUNT_BIG', 'VAR', 'VARP', 'ROW_NUMBER',
        +            'LAG', 'LEAD', 'PERCENT_RANK', 'CUME_DIST', 'FIRST_VALUE', 'LAST_VALUE',
        +            'PERCENTILE_CONT', 'PERCENTILE_DESC',
        +
        +            // Logic functions
        +            'CHOOSE', 'IIF', 'ISNULL', 'COALESCE', 'NULLIF',
        +
        +            // GUID
        +            'NEWID', 'NEWSEQUENTIALID',
        +        ),
        +        2 => array(
        +            // Datatypes
        +            'bigint', 'tinyint', 'money',
        +            'smallmoney', 'datetime', 'smalldatetime',
        +            'text', 'nvarchar', 'ntext', 'varbinary', 'image',
        +            'sql_variant', 'uniqueidentifier', 'smallint', 'int',
        +            'xml', 'hierarchyid', 'geography', 'geometry', 'varchar', 'char', 'nchar',
        +            'numeric', 'decimal', 'bit', 'sysname', 'date', 'time', 'datetime2', 'datetimeoffset',
        +
        +            // Keywords
        +            'ABSOLUTE', 'ACTION', 'ADD', 'ADMIN', 'AFTER', 'AGGREGATE', 'ALIAS', 'ALLOCATE', 'ALLOWED', 'ALTER', 'ARE', 'ARRAY', 'AS',
        +            'ASC', 'ASSERTION', 'AT', 'ATOMIC', 'AUDIT', 'AUTHORIZATION', 'AVAILABILITY', 'BACKUP', 'BEFORE', 'BEGIN', 'BINARY', 'BLOB', 'BOOLEAN', 'BOTH', 'BREADTH',
        +            'BREAK', 'BROWSE', 'BUCKET_COUNT', 'BULK', 'BY', 'CACHE', 'CALL', 'CASCADE', 'CASCADED', 'CASE', 'CAST', 'CATALOG', 'CHARACTER', 'CHECK', 'CHECKCONSTRAINTS',
        +            'CHECKDB', 'CHECKPOINT',
        +            'CLASS', 'CLEAR', 'CLOB', 'CLOSE', 'CLUSTERED', 'COLLATE', 'COLLATION', 'COLUMN', 'COLUMNSTORE', 'COMMIT',
        +            'COMMITTED', 'COMPLETION', 'COMPUTE', 'CONFIGURATION',
        +            'CONNECT', 'CONNECTION', 'CONSTRAINT', 'CONSTRAINTS', 'CONSTRUCTOR', 'CONTAINMENT', 'CONTAINS', 'CONTAINSTABLE', 'CONTINUE', 'CORRESPONDING', 'CREATE',
        +            'CUBE', 'CURRENT', 'CURRENT_DATE', 'CURRENT_PATH', 'CURRENT_ROLE',
        +            'CURSOR', 'CYCLE', 'DATA', 'DATA_MIRRORING', 'DATABASE', 'DBCC', 'DEALLOCATE', 'DEC', 'DECLARE', 'DEFAULT', 'DEFERRABLE',
        +            'DEFERRED', 'DELAY', 'DELAYED_DURABILITY', 'DELETE', 'DENY', 'DEPTH', 'DEREF', 'DESC', 'DESCRIBE', 'DESCRIPTOR', 'DESTROY', 'DESTRUCTOR', 'DETERMINISTIC',
        +            'DIAGNOSTICS', 'DIALOG', 'DICTIONARY', 'DISABLED', 'DISCONNECT', 'DISK', 'DISTINCT', 'DISTRIBUTED', 'DOMAIN', 'DOUBLE', 'DROP', 'DROPCLEANBUFFERS', 'DROP_EXISTING',
        +            'DUMMY', 'DUMP', 'DURABILITY', 'DYNAMIC',
        +            'EACH', 'ELSE', 'END', 'END-EXEC', 'EQUALS', 'ERRLVL', 'ESCAPE', 'EVERY', 'EXCEPT', 'EXCEPTION', 'EXEC', 'EXECUTE', 'EXIT',
        +            'EXTERNAL', 'FALSE', 'FETCH', 'FILE', 'FILLFACTOR', 'FIRST', 'FLOAT', 'FOR', 'FOR ATTACH', 'FOR ATTACH_REBUILD_LOG', 'FORCESCAN', 'FORCESEEK', 'FOREIGN', 'FOUND', 'FREE',
        +            'FREEPROCCACHE', 'FREETEXT', 'FREETEXTTABLE',
        +            'FROM', 'FUNCTION', 'GENERAL', 'GET', 'GLOBAL', 'GO', 'GOTO', 'GRANT', 'GROUP', 'GROUPING', 'HAVING', 'HOLDLOCK', 'HOST',
        +            'IDENTITY', 'IDENTITY_INSERT', 'IDENTITYCOL', 'IF', 'IGNORE', 'IMMEDIATE', 'INDEX', 'INDICATOR', 'INITIALIZE', 'INITIALLY',
        +            'INOUT', 'INPUT', 'INSERT', 'INTEGER', 'INTERSECT', 'INTERVAL', 'INTO', 'IS', 'ISOLATION', 'ITERATE', 'KEY',
        +            'KILL', 'LANGUAGE', 'LARGE', 'LAST', 'LATERAL', 'LEADING', 'LESS', 'LEVEL', 'LIMIT', 'LINENO', 'LOAD', 'LOCAL',
        +            'LOCALTIME', 'LOCALTIMESTAMP', 'LOCATOR', 'MAP', 'MASTER KEY', 'MATCH', 'MATCHED', 'MEMORY_OPTIMIZED', 'MEMORY_OPTIMIZED_DATA', 'MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT', 'MESSAGE', 'MILLISECOND', 'MODIFIES', 'MODIFY', 'MODULE', 'NAMES', 'NANOSECOND', 'NATIONAL', 'NATIVE_COMPILATION',
        +            'NATURAL', 'NCLOB', 'NEW', 'NEXT', 'NO', 'NO_INFOMSGS', 'NOCHECK', 'NOCOUNT', 'NONCLUSTERED', 'NONE', 'OBJECT', 'OF',
        +            'OFF', 'OFFSET', 'OFFSETS', 'OLD', 'ON', 'ONLY', 'OPEN', 'OPENDATASOURCE', 'OPENQUERY', 'OPENROWSET', 'OPENXML', 'OPERATION', 'OPTION',
        +            'OPTIMIZER_WHATIF',
        +            'ORDER', 'ORDINALITY', 'OUT', 'OUTPUT', 'OVER', 'OWNER', 'PAD', 'PARAMETER', 'PARTIAL', 'PARTITION', 'PASSWORD', 'PATH', 'PERCENT', 'PLAN',
        +            'POSTFIX', 'PREFIX', 'PREORDER', 'PREPARE', 'PRESERVE', 'PRECEDING', 'PREVIOUS', 'PRIMARY', 'PRINT', 'PRIOR', 'PRIVILEGES', 'PROC', 'PROCEDURE',
        +            'PUBLIC', 'QUERYRULEOFF', 'QUERYTRACEON', 'RAISERROR', 'RANGE', 'READ', 'READS', 'READTEXT', 'REAL', 'REBUILD', 'RECEIVE', 'RECONFIGURE', 'RECURSIVE', 'REF', 'REFERENCES', 'REFERENCING', 'RELATIVE',
        +            'REPEATABLE', 'REPLICATION', 'RESTORE', 'RESTRICT', 'RESULT', 'RETURN', 'RETURNS', 'REVOKE', 'ROLE', 'ROLLBACK', 'ROLLUP', 'ROUTINE', 'ROW', 'ROWCOUNT',
        +            'ROWGUIDCOL', 'ROWS', 'RULE', 'SAVE', 'SAVEPOINT', 'SCHEMA', 'SCHEMA_AND_DATA', 'SCOPE', 'SCROLL', 'SEARCH', 'SECONDS', 'SECTION', 'SELECT', 'SEND', 'SENT',
        +            'SEQUENCE', 'SERIALIZABLE', 'SERVER', 'SESSION', 'SESSION_USER', 'SET', 'SETCPUWEIGHT', 'SETIOWEIGHT',
        +            'SETS', 'SETUSER', 'SHOW_STATISTICS', 'SHOWWEIGHTS', 'SHUTDOWN', 'SIZE', 'SNAPSHOT', 'SPACE', 'SPECIFIC', 'SPECIFICATION',
        +            'SPECIFICTYPE', 'SQL', 'SQLEXCEPTION', 'SQLPERF', 'SQLSTATE', 'SQLWARNING', 'START', 'STAT_HEADER', 'STATE', 'STATEMENT', 'STATIC', 'STATISTICS', 'STRUCTURE',
        +            'SYSTEM_USER', 'TABLE', 'TEMPORARY', 'TERMINATE', 'TEXTSIZE', 'THAN', 'THEN', 'THROW', 'TIES', 'TIMESTAMP', 'TIMEZONE_HOUR', 'TIMEZONE_MINUTE',
        +            'TO', 'TOP', 'TRAILING', 'TRAN', 'TRANSACTION', 'TRANSLATION', 'TREAT', 'TRIGGER', 'TRUE', 'TRUNCATE', 'TSEQUAL', 'TYPE', 'UNBOUNDED', 'UNCOMMITTED',
        +            'UNDEFINED', 'UNDER', 'UNION', 'UNIQUE', 'UNKNOWN', 'UNNEST', 'UPDATE', 'UPDATETEXT', 'USAGE', 'USE', 'USER', 'USING', 'VALUE', 'VALUES',
        +            'VARIABLE', 'VARYING', 'VIEW', 'WAITFOR', 'WHEN', 'WHENEVER', 'WHERE', 'WHILE', 'WITH', 'WITHIN', 'WITHOUT', 'WORK', 'WRITE', 'WRITETEXT', 'ZONE',
        +
        +            // cursor keywords
        +            'FORWARD_ONLY', 'READ_ONLY', 'FAST_FORWARD',
        +
        +            // resource governor
        +            'RESOURCE', 'GOVERNOR', 'POOL', 'WORKLOAD',
        +
        +            // other keywords that were missing or are new in SQL Server 2012.
        +            'ANSI_NULL_DFLT_ON',
        +            'ACCENT_SENSITIVITY', 'ACTIVATION', 'ACTIVE', 'ADDRESS', 'AES', 'AFFINITY', 'ALGORITHM', 'ALL_SPARSE_COLUMNS', 'ALLOW_MULTIPLE_EVENT_LOSS',
        +            'ALLOW_PAGE_LOCKS', 'ALLOW_ROW_LOCKS', 'ALLOW_SINGLE_EVENT_LOSS', 'ALLOW_SNAPSHOT_ISOLATION', 'ANONYMOUS', 'ANSI_DEFAULTS', 'ANSI_NULL_DEFAULT',
        +            'ANSI_NULL_DFLT_OFF', 'ANSI_NULLS', 'ANSI_PADDING', 'ANSI_WARNINGS', 'ARITHABORT', 'ARITHIGNORE', 'ASSEMBLY', 'ASYMMETRIC', 'ATTACH_REBUILD_LOG', 'AUTO', 'AUTO_CLEANUP',
        +            'AUTO_CLOSE', 'AUTO_CREATE_STATISTICS', 'AUTO_SHRINK', 'AUTO_UPDATE_STATISTICS', 'AUTO_UPDATE_STATISTICS_ASYNC', 'BATCHSIZE', 'BEGIN_DIALOG',
        +            'BINDING', 'BROKER', 'BROKER_INSTANCE', 'BULK_LOGGED', 'CAP_CPU_PERCENT', 'CATALOG_DEFAULT', 'CATCH', 'CERTIFICATE', 'CHANGE_RETENTION',
        +            'CHANGE_TRACKING', 'CHECK_EXPIRATION',  'CHECK_POLICY', 'CLASSIFIER_FUNCTION', 'CLUSTER', 'CODEPAGE', 'COLLECTION',
        +            'COLUMN_SET', 'COMPATIBILITY_LEVEL', 'COMPRESSION', 'CONCAT_NULL_YIELDS_NULL', 'CONTENT', 'CONTRACT', 'CONVERSATION', 'CPU', 'CPU_ID', 'CREDENTIAL',
        +            'CRYPTOGRAPHIC', 'CURSOR_CLOSE_ON_COMMIT', 'CURSOR_DEFAULT', 'DATA_COMPRESSION', 'DATABASE_MIRRORING', 'DATAFILETYPE', 'DATE_CORRELATION_OPTIMIZATION',
        +            'DATEFIRST', 'DATEFORMAT', 'DAYS', 'DB_CHAINING', 'DEADLOCK_PRIORITY', 'DECRYPTION', 'DEFAULT_DATABASE', 'DEFAULT_FULLTEXT_LANGUAGE', 'DEFAULT_LANGUAGE',
        +            'DEFAULT_SCHEMA', 'DIRECTORY_NAME', 'DISABLE_BROKER', 'DOCUMENT', 'EMERGENCY', 'ENABLE_BROKER', 'ENCRYPTION', 'ENDPOINT', 'ERROR_BROKER_CONVERSATIONS',
        +            'ERRORFILE', 'EVENT', 'EVENT_RETENTION_MODE', 'EXPAND', 'EXTERNAL_ACCESS', 'FAILOVER', 'FAST', 'FIELDTERMINATOR', 'FILEGROUP', 'FILEGROWTH', 'FILENAME',
        +            'FILEPATH', 'FILESTREAM', 'FILESTREAM_ON', 'FILETABLE_DIRECTORY', 'FILETABLE_NAMESPACE', 'FIPS_FLAGGER', 'FIRE_TRIGGERS', 'FIRSTROW', 'FMTONLY', 'FORCE',
        +            'FORCE_SERVICE_ALLOW_DATA_LOSS', 'FORCED', 'FORCEPLAN', 'FORMATFILE', 'FULLTEXT', 'GROUP_MAX_REQUESTS', 'HASH', 'HIGH', 'HONOR_BROKER_PRIORITY', 'HOURS',
        +            'HTTP', 'IGNORE_CONSTRAINTS', 'IGNORE_DUP_KEY', 'IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX', 'IGNORE_TRIGGERS', 'IMPLICIT_TRANSACTIONS', 'IMPORTANCE',
        +            'INCLUDE', 'INCREMENT', 'INCREMENTAL', 'INFINITE', 'INIT', 'INITIATOR', 'INSTEAD', 'IO', 'KB', 'KEEP', 'KEEPDEFAULTS', 'KEEPFIXED', 'KEEPIDENTITY',
        +            'KEEPNULLS', 'KERBEROS', 'KILOBYTES_PER_BATCH', 'LASTROW', 'LIFETIME', 'LIST', 'LISTENER_IP', 'LISTENER_PORT', 'LOCAL_SERVICE_NAME', 'LOCK_ESCALATION',
        +            'LOCK_TIMEOUT', 'LOOP', 'LOW', 'MAX_CPU_PERCENT', 'MAX_DISPATCH_LATENCY', 'MAX_DOP', 'MAX_EVENT_SIZE', 'MAX_FILES', 'MAX_MEMORY', 'MAX_MEMORY_PERCENT',
        +            'MAX_QUEUE_READERS', 'MAX_ROLLOVER_FILES', 'MAXDOP', 'MAXERRORS', 'MAXRECURSION', 'MAXSIZE', 'MAXVALUE', 'MB', 'MEDIUM', 'MEMORY_PARTITION_MODE',
        +            'MERGE', 'MESSAGE_FORWARD_SIZE', 'MESSAGE_FORWARDING', 'MIN_CPU_PERCENT', 'MIN_MEMORY_PERCENT', 'MINUTES', 'MINVALUE', 'MIRROR_ADDRESS', 'MOVE',
        +            'MULTI_USER', 'MUST_CHANGE', 'NEGOTIATE', 'NESTED_TRIGGERS', 'NEW_ACCOUNT', 'NEW_BROKER', 'NEWNAME', 'NO_COMPRESSION', 'NO_EVENT_LOSS', 'NO_WAIT', 'NOEXEC', 'NOEXPAND',
        +            'NOLOCK', 'NON_TRANSACTED_ACESS', 'NOWAIT', 'NTLM', 'NUMA_NODE_ID', 'NUMANODE', 'NUMERIC_ROUNDABORT', 'OFFLINE', 'OLD_ACCOUNT', 'ON_FAILURE', 'ONLINE',
        +            'OPTIMIZE', 'OVERRIDE', 'PAD_INDEX', 'PAGE', 'PAGE_VERIFY', 'PAGLOCK', 'PARAMETERIZATION', 'PARSEONLY', 'PARTITIONS', 'PARTNER', 'PER_CPU', 'PER_NODE',
        +            'PERMISSION_SET', 'PERSISTED', 'POISON_MESSAGE_HANDLING', 'POPULATION', 'PRIORITY', 'PRIORITY_LEVEL', 'PRIVATE', 'PROCEDURE_NAME', 'PROCESS', 'PROFILE',
        +            'PROPERTY', 'PROPERTY_DESCRIPTION', 'PROPERTY_INT_ID', 'PROPERTY_SET_GUID', 'PROVIDER', 'QUERY_GOVERNOR_COST_LIMIT', 'QUEUE', 'QUEUE_DELAY',
        +            'QUOTED_IDENTIFIER', 'RC4', 'READ_COMMITTED_SNAPSHOT', 'READ_WRITE', 'READCOMMITTED', 'READCOMMITTEDLOCK', 'READONLY', 'READPAST', 'READUNCOMMITTED',
        +            'READWRITE', 'RECOMPILE', 'RECOVERY', 'RECOVERY FULL', 'RECOVERY SIMPLE', 'RECURSIVE_TRIGGERS', 'REGENERATE', 'REMOTE', 'REMOTE_PROC_TRANSACTIONS', 'REMOTE_SERVICE_NAME', 'REMOVE',
        +            'REPEATABLEREAD', 'REQUEST_MAX_CPU_TIME_SEC', 'REQUEST_MAX_MEMORY_GRANT_PERCENT', 'REQUEST_MEMORY_GRANT_TIMEOUT_SEC', 'REQUIRED', 'RESERVE_DISK_SPACE',
        +            'RESET', 'RESTART', 'RESTRICTED_USER', 'RESUME', 'RETENTION', 'ROBUST', 'ROUTE', 'ROWLOCK', 'ROWS_PER_BATCH', 'ROWTERMINATOR', 'SAFE', 'SAFETY',
        +            'SCHEDULER', 'SCHEMABINDING', 'SCHEME', 'SECRET', 'SERVICE', 'SERVICE_BROKER', 'SERVICE_NAME', 'SETERROR', 'SHOWPLAN', 'SHOWPLAN_ALL', 'SHOWPLAN_TEXT',
        +            'SHOWPLAN_XML', 'SIMPLE', 'SINGLE_USER', 'SORT_IN_TEMPDB', 'SOURCE', 'SPARSE', 'SPATIAL_WINDOW_MAX_CELLS', 'SPLIT', 'STARTED', 'STARTUP_STATE',
        +            'STATISTICAL_SEMANTICS', 'STATISTICS_NORECOMPUTE', 'STATUS', 'STOP', 'STOPLIST', 'STOPPED', 'SUPPORTED', 'SUSPEND', 'SWITCH', 'SYMMETRIC', 'SYNONYM',
        +            'SYSTEM', 'TABLOCK', 'TABLOCKX', 'TARGET', 'TARGET_RECOVERY_TIME', 'TCP', 'TIMEOUT', 'TORN_PAGE_DETECTION', 'TRACK_CAUSALITY', 'TRACK_COLUMNS_UPDATED',
        +            'TRANSFER', 'TRANSFORM_NOISE_WORDS', 'TRUSTWORTHY', 'TRY', 'TSQL', 'TWO_DIGIT_YEAR_CUTOFF', 'UNCHECKED', 'UNLIMITED', 'UNLOCK', 'UNSAFE', 'UPDLOCK',
        +            'USED', 'VALID_XML', 'VALIDATION', 'VIEW_METADATA', 'VISIBILITY', 'WEEKDAY', 'WELL_FORMED_XML', 'WINDOWS', 'WITH SUBJECT', 'WITNESS', 'XACT_ABORT', 'XLOCK',
        +
        +            /* AlwaysOn stuff */
        +            'AUTHENTICATION', 'ENDPOINT_URL', 'LISTENER', 'COPY_ONLY', 'NORECOVERY', 'NOUNLOAD', 'HADR', 'PORT',
        +            'FAILOVER_MODE', 'MANUAL', 'AVAILABILITY_MODE', 'ASYNCHRONOUS_COMMIT', 'SYNCHRONOUS_COMMIT', 'AUTOMATIC', 'REPLICA', 'READ_ONLY_ROUTING_URL', 'BACKUP_PRIORITY', 'SECONDARY_ROLE', 'ALLOW_CONNECTIONS', 'AUTOMATED_BACKUP_PREFERENCE', 'SECONDARY', 'SECONDARY_ONLY', 'PRIMARY_ROLE', 'READ_ONLY_ROUTING_LIST',
        +        ),
        +        3 => array(
        +            /*
        +                System stored procedures
        +                Higlighted dark brown
        +            */
        +
        +            // CLR stored procedures
        +            'sp_FuzzyLookupTableMaintenanceInstall', 'sp_FuzzyLookupTableMaintenanceInvoke', 'sp_FuzzyLookupTableMaintenanceUninstall',
        +
        +            // system procedures named with xp_
        +            'xp_grantlogin', 'xp_logininfo', 'xp_repl_convert_encrypt_sysadmin_wrapper', 'xp_revokelogin',
        +
        +            // extended procedures
        +            'xp_availablemedia',  'xp_cmdshell', 'xp_create_subdir', 'xp_delete_file', 'xp_dirtree', 'xp_enum_oledb_providers',
        +            'xp_enumerrorlogs', 'xp_enumgroups',  'xp_fileexist', 'xp_fixeddrives', 'xp_get_script', 'xp_get_tape_devices',
        +            'xp_getnetname', 'xp_instance_regaddmultistring',  'xp_instance_regdeletekey', 'xp_instance_regdeletevalue',
        +            'xp_instance_regenumkeys', 'xp_instance_regenumvalues',  'xp_instance_regread', 'xp_instance_regremovemultistring',
        +            'xp_instance_regwrite', 'xp_logevent', 'xp_loginconfig', 'xp_msver',  'xp_msx_enlist', 'xp_passAgentInfo',
        +            'xp_prop_oledb_provider', 'xp_qv', 'xp_readerrorlog', 'xp_regaddmultistring',  'xp_regdeletekey', 'xp_regdeletevalue',
        +            'xp_regenumkeys', 'xp_regenumvalues', 'xp_regread', 'xp_regremovemultistring',  'xp_regwrite', 'xp_replposteor',
        +            'xp_servicecontrol', 'xp_sprintf', 'xp_sqlagent_enum_jobs', 'xp_sqlagent_is_starting',  'xp_sqlagent_monitor',
        +            'xp_sqlagent_notify', 'xp_sqlagent_param', 'xp_sqlmaint', 'xp_sscanf', 'xp_subdirs',  'xp_sysmail_activate',
        +            'xp_sysmail_attachment_load',  'xp_sysmail_format_query',
        +
        +            // extended procedures named with sp_
        +            'sp_AddFunctionalUnitToComponent', 'sp_audit_write', 'sp_availability_group_command_internal', 'sp_begin_parallel_nested_tran',
        +            'sp_bindsession', 'sp_change_tracking_waitforchanges', 'sp_commit_parallel_nested_tran', 'sp_control_dbmasterkey_password',
        +            'sp_createorphan', 'sp_cursor', 'sp_cursorclose', 'sp_cursorexecute', 'sp_cursorfetch', 'sp_cursoropen', 'sp_cursoroption',
        +            'sp_cursorprepare', 'sp_cursorprepexec', 'sp_cursorunprepare', 'sp_delete_http_namespace_reservation',
        +            'sp_describe_first_result_set', 'sp_describe_undeclared_parameters', 'sp_droporphans', 'sp_enable_sql_debug', 'sp_execute',
        +            'sp_executesql', 'sp_fulltext_getdata', 'sp_fulltext_keymappings', 'sp_fulltext_pendingchanges', 'sp_get_query_template',
        +            'sp_getbindtoken', 'sp_getschemalock', 'sp_http_generate_wsdl_complex', 'sp_http_generate_wsdl_simple',
        +            'sp_migrate_user_to_contained', 'sp_new_parallel_nested_tran_id', 'sp_OACreate', 'sp_OADestroy', 'sp_OAGetErrorInfo',
        +            'sp_OAGetProperty', 'sp_OAMethod', 'sp_OASetProperty', 'sp_OAStop', 'sp_PostAgentInfo', 'sp_prepare', 'sp_prepexec',
        +            'sp_prepexecrpc', 'sp_releaseschemalock', 'sp_repl_generateevent', 'sp_replcmds', 'sp_replcounters', 'sp_replddlparser',
        +            'sp_repldone', 'sp_replflush', 'sp_replhelp', 'sp_replsendtoqueue', 'sp_replsetsyncstatus', 'sp_repltrans',
        +            'sp_replwritetovarbin', 'sp_reserve_http_namespace', 'sp_reset_connection', 'sp_resyncexecute', 'sp_resyncexecutesql',
        +            'sp_resyncprepare', 'sp_resyncuniquetable', 'sp_rollback_parallel_nested_tran', 'sp_server_diagnostics',
        +            'sp_SetOBDCertificate', 'sp_setuserbylogin', 'sp_showmemo_xml', 'sp_start_user_instance', 'sp_testlinkedserver',
        +            'sp_trace_create', 'sp_trace_generateevent', 'sp_trace_setevent', 'sp_trace_setfilter', 'sp_trace_setstatus', 'sp_unprepare',
        +            'sp_update_user_instance', 'sp_xml_preparedocument', 'sp_xml_removedocument', 'sp_xp_cmdshell_proxy_account'
        +
        +        ),
        +        4 => array(
        +            // DMVs/DMFs/catalog views etc. highlighted green.
        +
        +            //schemas
        +            'sys', 'INFORMATION_SCHEMA',
        +
        +            // inline TVFs
        +            'dm_cryptographic_provider_algorithms','dm_cryptographic_provider_keys','dm_cryptographic_provider_sessions',
        +            'dm_db_database_page_allocations','dm_db_index_operational_stats','dm_db_index_physical_stats',
        +            'dm_db_missing_index_columns','dm_db_objects_disabled_on_compatibility_level_change',
        +            'dm_exec_cached_plan_dependent_objects','dm_exec_cursors','dm_exec_describe_first_result_set',
        +            'dm_exec_describe_first_result_set_for_object','dm_exec_plan_attributes','dm_exec_query_plan','dm_exec_sql_text',
        +            'dm_exec_text_query_plan','dm_exec_xml_handles','dm_fts_index_keywords','dm_fts_index_keywords_by_document',
        +            'dm_fts_index_keywords_by_property','dm_fts_parser','dm_io_virtual_file_stats','dm_logconsumer_cachebufferrefs',
        +            'dm_logconsumer_privatecachebuffers','dm_logpool_consumers','dm_logpool_sharedcachebuffers','dm_logpoolmgr_freepools',
        +            'dm_logpoolmgr_respoolsize','dm_logpoolmgr_stats','dm_os_volume_stats','dm_sql_referenced_entities',
        +            'dm_sql_referencing_entities','fn_builtin_permissions','fn_check_object_signatures','fn_dblog','fn_dump_dblog',
        +            'fn_get_audit_file','fn_get_sql','fn_helpcollations','fn_MSxe_read_event_stream','fn_trace_gettable',
        +            'fn_translate_permissions', 'fn_validate_plan_guide',  'fn_xe_file_target_read_file',
        +
        +            // multi-statement TVFs
        +            'fn_EnumCurrentPrincipals', 'fn_helpdatatypemap', 'fn_listextendedproperty', 'fn_my_permissions',
        +            'fn_PhysLocCracker', 'fn_replgetcolidfrombitmap', 'fn_RowDumpCracker', 'fn_servershareddrives',
        +            'fn_trace_geteventinfo', 'fn_trace_getfilterinfo', 'fn_trace_getinfo',  'fn_virtualfilestats',
        +            'fn_virtualservernodes',
        +
        +            // aggregate functions
        +            'GeographyCollectionAggregate', 'GeographyConvexHullAggregate', 'GeographyEnvelopeAggregate', 'GeographyUnionAggregate',
        +            'GeometryCollectionAggregate', 'GeometryConvexHullAggregate', 'GeometryEnvelopeAggregate', 'GeometryUnionAggregate',
        +            'ORMask',
        +
        +            // scalar functions
        +            'fn_cColvEntries_80','fn_cdc_check_parameters','fn_cdc_get_column_ordinal','fn_cdc_get_max_lsn','fn_cdc_get_min_lsn',
        +            'fn_cdc_has_column_changed','fn_cdc_hexstrtobin','fn_cdc_map_lsn_to_time','fn_cdc_map_time_to_lsn','fn_fIsColTracked',
        +            'fn_GetCurrentPrincipal','fn_GetRowsetIdFromRowDump','fn_hadr_backup_is_preferred_replica','fn_IsBitSetInBitmask',
        +            'fn_isrolemember','fn_MapSchemaType','fn_MSdayasnumber','fn_MSgeneration_downloadonly','fn_MSget_dynamic_filter_login',
        +            'fn_MSorbitmaps','fn_MSrepl_map_resolver_clsid','fn_MStestbit','fn_MSvector_downloadonly','fn_numberOf1InBinaryAfterLoc',
        +            'fn_numberOf1InVarBinary','fn_PhysLocFormatter','fn_repladjustcolumnmap','fn_repldecryptver4','fn_replformatdatetime',
        +            'fn_replgetparsedddlcmd','fn_replp2pversiontotranid', 'fn_replreplacesinglequote',
        +            'fn_replreplacesinglequoteplusprotectstring', 'fn_repluniquename', 'fn_replvarbintoint', 'fn_sqlvarbasetostr',
        +            'fn_varbintohexstr', 'fn_varbintohexsubstring', 'fn_yukonsecuritymodelrequired',
        +
        +            // service queues
        +            'EventNotificationErrorsQueue', 'QueryNotificationErrorsQueue', 'ServiceBrokerQueue',
        +
        +            // system tables
        +            'sysallocunits','sysasymkeys','sysaudacts','sysbinobjs','sysbinsubobjs','sysbrickfiles','syscerts','syschildinsts','sysclones','sysclsobjs',
        +            'syscolpars','syscompfragments','sysconvgroup','syscscolsegments','syscsdictionaries','sysdbfiles','sysdbfrag','sysdbreg','sysdercv','sysdesend',
        +            'sysendpts','sysfgfrag','sysfiles1','sysfoqueues','sysfos','sysftinds','sysftproperties','sysftsemanticsdb','sysftstops','sysguidrefs',
        +            'sysidxstats','sysiscols','syslnklgns','sysmultiobjrefs','sysnsobjs','sysobjkeycrypts','sysobjvalues','sysowners','sysphfg','syspriorities',
        +            'sysprivs','syspru','sysprufiles','sysqnames','sysremsvcbinds','sysrmtlgns','sysrowsetrefs','sysrowsets','sysrscols','sysrts',
        +            'sysscalartypes','sysschobjs','sysseobjvalues','syssingleobjrefs','syssoftobjrefs','syssqlguides','systypedsubobjs','sysusermsgs','syswebmethods',
        +            'sysxlgns','sysxmitbody', 'sysxmitqueue', 'sysxmlcomponent', 'sysxmlfacet', 'sysxmlplacement', 'sysxprops', 'sysxsrvs',
        +
        +            // user tables (these are currently in dbo schema but will be fixed)
        +            'trace_xe_action_map', 'trace_xe_event_map',
        +
        +            // backward compatibility views
        +            'sysaltfiles', 'syscacheobjects', 'syscharsets', 'syscolumns', 'syscomments', 'sysconfigures', 'sysconstraints', 'syscurconfigs', 'syscursorcolumns',
        +            'syscursorrefs', 'syscursors', 'syscursortables', 'sysdatabases', 'sysdepends', 'sysdevices', 'sysfilegroups', 'sysfiles', 'sysforeignkeys',
        +            'sysfulltextcatalogs', 'sysindexes', 'sysindexkeys', 'syslanguages', 'syslockinfo', 'syslogins', 'sysmembers', 'sysmessages', 'sysobjects',
        +            'sysoledbusers', 'sysopentapes', 'sysperfinfo', 'syspermissions', 'sysprocesses', 'sysprotects', 'sysreferences', 'sysremotelogins', 'sysservers',
        +            'systypes', 'sysusers',
        +
        +            // INFORMATION_SCHEMA views
        +            'COLUMN_DOMAIN_USAGE', 'COLUMN_PRIVILEGES', 'COLUMNS', 'CONSTRAINT_COLUMN_USAGE',
        +            'CONSTRAINT_TABLE_USAGE', 'KEY_COLUMN_USAGE', 'PARAMETERS', 'REFERENTIAL_CONSTRAINTS', 'ROUTINE_COLUMNS',
        +            'ROUTINES', 'SCHEMATA', 'SEQUENCES', 'TABLE_CONSTRAINTS', 'TABLE_PRIVILEGES', 'TABLES', 'VIEW_COLUMN_USAGE',
        +            'VIEW_TABLE_USAGE', 'VIEWS',
        +
        +            // catalog views
        +            'default_constraints',
        +            'all_columns', 'all_objects', 'all_parameters', 'all_sql_modules', 'all_views', 'allocation_units',
        +            'assemblies', 'assembly_files', 'assembly_modules', 'assembly_references', 'assembly_types', 'asymmetric_keys',
        +            'availability_databases_cluster', 'availability_group_listener_ip_addresses', 'availability_group_listeners',
        +            'availability_groups', 'availability_groups_cluster', 'availability_read_only_routing_lists',
        +            'availability_replicas', 'backup_devices', 'certificates', 'change_tracking_databases', 'change_tracking_tables',
        +            'check_constraints', 'column_store_dictionaries', 'column_store_index_stats', 'column_store_segments',
        +            'column_type_usages', 'column_xml_schema_collection_usages', 'computed_columns', 'configurations',
        +            'conversation_endpoints', 'conversation_groups', 'conversation_priorities', 'credentials', 'crypt_properties',
        +            'cryptographic_providers', 'databases', 'endpoint_webmethods', 'endpoints', 'event_notification_event_types',
        +            'event_notifications', 'events', 'extended_procedures', 'extended_properties', 'filegroups',
        +            'filetable_system_defined_objects', 'filetables', 'foreign_key_columns', 'foreign_keys', 'fulltext_catalogs',
        +            'fulltext_document_types', 'fulltext_index_catalog_usages', 'fulltext_index_columns', 'fulltext_index_fragments',
        +            'fulltext_indexes', 'fulltext_languages', 'fulltext_semantic_language_statistics_database',
        +            'fulltext_semantic_languages', 'fulltext_stoplists', 'fulltext_stopwords', 'fulltext_system_stopwords',
        +            'function_order_columns', 'http_endpoints', 'identity_columns', 'index_columns', 'indexes', 'internal_tables',
        +            'key_constraints', 'key_encryptions', 'linked_logins', 'login_token', 'master_files', 'numbered_procedure_parameters',
        +            'numbered_procedures', 'objects', 'openkeys', 'parameter_type_usages', 'parameter_xml_schema_collection_usages',
        +            'partition_functions', 'partition_parameters', 'partition_range_values', 'partition_schemes',
        +            'partitions', 'plan_guides', 'procedures', 'registered_search_properties', 'registered_search_property_lists',
        +            'remote_logins', 'remote_service_bindings', 'resource_governor_configuration',  'resource_governor_resource_pool_affinity',
        +            'resource_governor_resource_pools', 'resource_governor_workload_groups', 'routes', 'schemas', 'securable_classes',
        +            'server_assembly_modules', 'server_audit_specification_details', 'server_audit_specifications',
        +            'server_audits', 'server_event_notifications', 'server_event_session_actions', 'server_event_session_events',
        +            'server_event_session_fields', 'server_event_session_targets', 'server_event_sessions', 'server_events',
        +            'server_file_audits', 'server_permissions', 'server_principal_credentials', 'server_principals', 'server_role_members',
        +            'server_sql_modules', 'server_trigger_events', 'server_triggers', 'servers', 'service_broker_endpoints',
        +            'service_contract_message_usages', 'service_contract_usages', 'service_contracts', 'service_message_types',
        +            'service_queue_usages', 'service_queues', 'services', 'soap_endpoints', 'spatial_index_tessellations', 'spatial_indexes',
        +            'spatial_reference_systems', 'sql_dependencies', 'sql_expression_dependencies', 'sql_logins', 'sql_modules', 'stats',
        +            'stats_columns', 'symmetric_keys', 'synonyms', 'system_columns', 'system_components_surface_area_configuration',
        +            'system_internals_allocation_units', 'system_internals_partition_columns', 'system_internals_partitions', 'system_objects',
        +            'system_parameters', 'system_sql_modules', 'system_views', 'table_types', 'tcp_endpoints', 'trace_categories',
        +            'trace_columns', 'trace_event_bindings', 'trace_events', 'trace_subclass_values', 'traces', 'transmission_queue',
        +            'trigger_event_types', 'trigger_events', 'triggers', 'type_assembly_usages', 'types', 'user_token', 'via_endpoints',
        +            'xml_indexes', 'xml_schema_attributes', 'xml_schema_collections', 'xml_schema_component_placements',
        +            'xml_schema_components',  'xml_schema_elements', 'xml_schema_facets', 'xml_schema_model_groups', 'xml_schema_namespaces',
        +            'xml_schema_types', 'xml_schema_wildcard_namespaces', 'xml_schema_wildcards',
        +
        +            // DMVs / DMFs
        +            'dm_audit_actions', 'dm_audit_class_type_map', 'dm_broker_activated_tasks', 'dm_broker_connections', 'dm_broker_forwarded_messages',
        +            'dm_broker_queue_monitors', 'dm_cdc_errors', 'dm_cdc_log_scan_sessions', 'dm_clr_appdomains', 'dm_clr_loaded_assemblies',
        +            'dm_clr_properties', 'dm_clr_tasks', 'dm_cryptographic_provider_properties', 'dm_database_encryption_keys', 'dm_db_file_space_usage',
        +            'dm_db_fts_index_physical_stats', 'dm_db_index_usage_stats', 'dm_db_log_space_usage', 'dm_db_mirroring_auto_page_repair',
        +            'dm_db_mirroring_connections', 'dm_db_mirroring_past_actions', 'dm_db_missing_index_details', 'dm_db_missing_index_group_stats',
        +            'dm_db_missing_index_groups', 'dm_db_partition_stats', 'dm_db_persisted_sku_features', 'dm_db_script_level', 'dm_db_session_space_usage',
        +            'dm_db_task_space_usage', 'dm_db_uncontained_entities', 'dm_exec_background_job_queue', 'dm_exec_background_job_queue_stats',
        +            'dm_exec_cached_plans', 'dm_exec_connections', 'dm_exec_procedure_stats', 'dm_exec_query_memory_grants', 'dm_exec_query_optimizer_info', 'dm_exec_query_profiles',
        +            'dm_exec_query_resource_semaphores', 'dm_exec_query_stats', 'dm_exec_query_transformation_stats', 'dm_exec_requests', 'dm_exec_sessions',
        +            'dm_exec_trigger_stats', 'dm_filestream_file_io_handles', 'dm_filestream_file_io_requests', 'dm_filestream_non_transacted_handles',
        +            'dm_fts_active_catalogs', 'dm_fts_fdhosts', 'dm_fts_index_population', 'dm_fts_memory_buffers', 'dm_fts_memory_pools',
        +            'dm_fts_outstanding_batches', 'dm_fts_population_ranges', 'dm_fts_semantic_similarity_population', 'dm_hadr_auto_page_repair',
        +            'dm_hadr_availability_group_states', 'dm_hadr_availability_replica_cluster_nodes', 'dm_hadr_availability_replica_cluster_states',
        +            'dm_hadr_availability_replica_states', 'dm_hadr_cluster', 'dm_hadr_cluster_members', 'dm_hadr_cluster_networks',
        +            'dm_hadr_database_replica_cluster_states', 'dm_hadr_database_replica_states', 'dm_hadr_instance_node_map', 'dm_hadr_name_id_map',
        +            'dm_io_backup_tapes', 'dm_io_cluster_shared_drives', 'dm_io_pending_io_requests', 'dm_logpool_hashentries',
        +            'dm_logpool_stats', 'dm_os_buffer_descriptors', 'dm_os_child_instances', 'dm_os_cluster_nodes', 'dm_os_cluster_properties',
        +            'dm_os_dispatcher_pools', 'dm_os_dispatchers', 'dm_os_hosts', 'dm_os_latch_stats', 'dm_os_loaded_modules',
        +            'dm_os_memory_allocations', 'dm_os_memory_broker_clerks', 'dm_os_memory_brokers', 'dm_os_memory_cache_clock_hands',
        +            'dm_os_memory_cache_counters', 'dm_os_memory_cache_entries', 'dm_os_memory_cache_hash_tables', 'dm_os_memory_clerks',
        +            'dm_os_memory_node_access_stats', 'dm_os_memory_nodes', 'dm_os_memory_objects', 'dm_os_memory_pools', 'dm_os_nodes',
        +            'dm_os_performance_counters', 'dm_os_process_memory', 'dm_os_ring_buffers', 'dm_os_schedulers',
        +            'dm_os_server_diagnostics_log_configurations', 'dm_os_spinlock_stats', 'dm_os_stacks', 'dm_os_sublatches', 'dm_os_sys_info',
        +            'dm_os_sys_memory', 'dm_os_tasks', 'dm_os_threads', 'dm_os_virtual_address_dump', 'dm_os_wait_stats', 'dm_os_waiting_tasks',
        +            'dm_os_windows_info', 'dm_os_worker_local_storage', 'dm_os_workers', 'dm_qn_subscriptions', 'dm_repl_articles', 'dm_repl_schemas',
        +            'dm_repl_tranhash', 'dm_repl_traninfo', 'dm_resource_governor_configuration', 'dm_resource_governor_resource_pool_affinity',
        +            'dm_resource_governor_resource_pools', 'dm_resource_governor_workload_groups', 'dm_server_audit_status', 'dm_server_memory_dumps',
        +            'dm_server_registry', 'dm_server_services', 'dm_tcp_listener_states', 'dm_tran_active_snapshot_database_transactions',
        +            'dm_tran_active_transactions', 'dm_tran_commit_table', 'dm_tran_current_snapshot', 'dm_tran_current_transaction',
        +            'dm_tran_database_transactions', 'dm_tran_locks', 'dm_tran_session_transactions', 'dm_tran_top_version_generators',
        +            'dm_tran_transactions_snapshot', 'dm_tran_version_store', 'dm_xe_map_values', 'dm_xe_object_columns', 'dm_xe_objects', 'dm_xe_packages', 'dm_xe_sessions', 'dm_xe_session_targets',
        +        ),
        +        5 => array(
        +
        +            // system procedures (sorry, not categorized, but definitely more complete and updated for Denali)
        +            // moved these to their own array because they overloaded array 3
        +
        +            'sp_add_agent_parameter', 'sp_add_agent_profile', 'sp_add_data_file_recover_suspect_db', 'sp_add_log_file_recover_suspect_db',
        +            'sp_add_log_shipping_alert_job', 'sp_add_log_shipping_primary_database', 'sp_add_log_shipping_primary_secondary',
        +            'sp_add_log_shipping_secondary_database', 'sp_add_log_shipping_secondary_primary', 'sp_addapprole', 'sp_addarticle',
        +            'sp_adddatatype', 'sp_adddatatypemapping', 'sp_adddistpublisher', 'sp_adddistributiondb', 'sp_adddistributor',
        +            'sp_adddynamicsnapshot_job', 'sp_addextendedproc', 'sp_addextendedproperty', 'sp_addlinkedserver', 'sp_addlinkedsrvlogin',
        +            'sp_addlogin', 'sp_addlogreader_agent', 'sp_addmergealternatepublisher', 'sp_addmergearticle', 'sp_addmergefilter',
        +            'sp_addmergelogsettings', 'sp_addmergepartition', 'sp_addmergepublication', 'sp_addmergepullsubscription',
        +            'sp_addmergepullsubscription_agent', 'sp_addmergepushsubscription_agent', 'sp_addmergesubscription', 'sp_addmessage',
        +            'sp_addpublication', 'sp_addpublication_snapshot', 'sp_addpullsubscription', 'sp_addpullsubscription_agent',
        +            'sp_addpushsubscription_agent', 'sp_addqreader_agent', 'sp_addqueued_artinfo', 'sp_addremotelogin', 'sp_addrole',
        +            'sp_addrolemember', 'sp_addscriptexec', 'sp_addserver', 'sp_addsrvrolemember', 'sp_addsubscriber', 'sp_addsubscriber_schedule',
        +            'sp_addsubscription', 'sp_addsynctriggers', 'sp_addsynctriggerscore', 'sp_addtabletocontents', 'sp_addtype', 'sp_addumpdevice',
        +            'sp_adduser', 'sp_adjustpublisheridentityrange', 'sp_altermessage', 'sp_approlepassword', 'sp_article_validation',
        +            'sp_articlecolumn', 'sp_articlefilter', 'sp_articleview', 'sp_assemblies_rowset', 'sp_assemblies_rowset_rmt',
        +            'sp_assemblies_rowset2', 'sp_assembly_dependencies_rowset', 'sp_assembly_dependencies_rowset_rmt',
        +            'sp_assembly_dependencies_rowset2', 'sp_attach_db', 'sp_attach_single_file_db', 'sp_attachsubscription', 'sp_autostats',
        +            'sp_bcp_dbcmptlevel', 'sp_bindefault', 'sp_bindrule', 'sp_browsemergesnapshotfolder', 'sp_browsereplcmds',
        +            'sp_browsesnapshotfolder', 'sp_can_tlog_be_applied', 'sp_catalogs', 'sp_catalogs_rowset', 'sp_catalogs_rowset_rmt',
        +            'sp_catalogs_rowset2', 'sp_cdc_add_job', 'sp_cdc_change_job', 'sp_cdc_cleanup_change_table', 'sp_cdc_dbsnapshotLSN',
        +            'sp_cdc_disable_db', 'sp_cdc_disable_table', 'sp_cdc_drop_job', 'sp_cdc_enable_db', 'sp_cdc_enable_table',
        +            'sp_cdc_generate_wrapper_function', 'sp_cdc_get_captured_columns', 'sp_cdc_get_ddl_history', 'sp_cdc_help_change_data_capture',
        +            'sp_cdc_help_jobs', 'sp_cdc_restoredb', 'sp_cdc_scan', 'sp_cdc_start_job', 'sp_cdc_stop_job', 'sp_cdc_vupgrade',
        +            'sp_cdc_vupgrade_databases', 'sp_certify_removable', 'sp_change_agent_parameter', 'sp_change_agent_profile',
        +            'sp_change_log_shipping_primary_database', 'sp_change_log_shipping_secondary_database', 'sp_change_log_shipping_secondary_primary',
        +            'sp_change_subscription_properties', 'sp_change_users_login', 'sp_changearticle', 'sp_changearticlecolumndatatype',
        +            'sp_changedbowner', 'sp_changedistpublisher', 'sp_changedistributiondb', 'sp_changedistributor_password',
        +            'sp_changedistributor_property', 'sp_changedynamicsnapshot_job', 'sp_changelogreader_agent', 'sp_changemergearticle',
        +            'sp_changemergefilter', 'sp_changemergelogsettings', 'sp_changemergepublication', 'sp_changemergepullsubscription',
        +            'sp_changemergesubscription', 'sp_changeobjectowner', 'sp_changepublication', 'sp_changepublication_snapshot',
        +            'sp_changeqreader_agent', 'sp_changereplicationserverpasswords', 'sp_changesubscriber', 'sp_changesubscriber_schedule',
        +            'sp_changesubscription', 'sp_changesubscriptiondtsinfo', 'sp_changesubstatus', 'sp_check_constbytable_rowset',
        +            'sp_check_constbytable_rowset2', 'sp_check_constraints_rowset', 'sp_check_constraints_rowset2', 'sp_check_dynamic_filters',
        +            'sp_check_for_sync_trigger', 'sp_check_join_filter', 'sp_check_log_shipping_monitor_alert', 'sp_check_publication_access',
        +            'sp_check_removable', 'sp_check_subset_filter', 'sp_check_sync_trigger', 'sp_checkinvalidivarticle',
        +            'sp_checkOraclepackageversion', 'sp_clean_db_file_free_space', 'sp_clean_db_free_space', 'sp_cleanmergelogfiles',
        +            'sp_cleanup_log_shipping_history', 'sp_cleanupdbreplication', 'sp_column_privileges', 'sp_column_privileges_ex',
        +            'sp_column_privileges_rowset', 'sp_column_privileges_rowset_rmt', 'sp_column_privileges_rowset2', 'sp_columns', 'sp_columns_100',
        +            'sp_columns_100_rowset', 'sp_columns_100_rowset2', 'sp_columns_90', 'sp_columns_90_rowset', 'sp_columns_90_rowset_rmt',
        +            'sp_columns_90_rowset2', 'sp_columns_ex', 'sp_columns_ex_100', 'sp_columns_ex_90', 'sp_columns_managed', 'sp_columns_rowset',
        +            'sp_columns_rowset_rmt', 'sp_columns_rowset2', 'sp_configure', 'sp_configure_peerconflictdetection', 'sp_constr_col_usage_rowset',
        +            'sp_constr_col_usage_rowset2', 'sp_control_plan_guide', 'sp_copymergesnapshot', 'sp_copysnapshot', 'sp_copysubscription',
        +            'sp_create_plan_guide', 'sp_create_plan_guide_from_handle', 'sp_create_removable', 'sp_createmergepalrole', 'sp_createstats',
        +            'sp_createtranpalrole', 'sp_cursor_list', 'sp_cycle_errorlog', 'sp_databases', 'sp_datatype_info', 'sp_datatype_info_100',
        +            'sp_datatype_info_90', 'sp_db_increased_partitions', 'sp_db_vardecimal_storage_format', 'sp_dbcmptlevel', 'sp_dbfixedrolepermission',
        +            'sp_dbmmonitoraddmonitoring', 'sp_dbmmonitorchangealert', 'sp_dbmmonitorchangemonitoring', 'sp_dbmmonitordropalert',
        +            'sp_dbmmonitordropmonitoring', 'sp_dbmmonitorhelpalert', 'sp_dbmmonitorhelpmonitoring', 'sp_dbmmonitorresults', 'sp_dbmmonitorupdate',
        +            'sp_dbremove', 'sp_ddopen', 'sp_defaultdb', 'sp_defaultlanguage', 'sp_delete_log_shipping_alert_job',
        +            'sp_delete_log_shipping_primary_database', 'sp_delete_log_shipping_primary_secondary', 'sp_delete_log_shipping_secondary_database',
        +            'sp_delete_log_shipping_secondary_primary', 'sp_deletemergeconflictrow', 'sp_deletepeerrequesthistory', 'sp_deletetracertokenhistory',
        +            'sp_denylogin', 'sp_depends', 'sp_describe_cursor', 'sp_describe_cursor_columns', 'sp_describe_cursor_tables', 'sp_detach_db',
        +            'sp_disableagentoffload', 'sp_distcounters', 'sp_drop_agent_parameter', 'sp_drop_agent_profile', 'sp_dropanonymousagent',
        +            'sp_dropanonymoussubscription', 'sp_dropapprole', 'sp_droparticle', 'sp_dropdatatypemapping', 'sp_dropdevice', 'sp_dropdistpublisher',
        +            'sp_dropdistributiondb', 'sp_dropdistributor', 'sp_dropdynamicsnapshot_job', 'sp_dropextendedproc', 'sp_dropextendedproperty',
        +            'sp_droplinkedsrvlogin', 'sp_droplogin', 'sp_dropmergealternatepublisher', 'sp_dropmergearticle', 'sp_dropmergefilter',
        +            'sp_dropmergelogsettings', 'sp_dropmergepartition', 'sp_dropmergepublication', 'sp_dropmergepullsubscription',
        +            'sp_dropmergesubscription', 'sp_dropmessage', 'sp_droppublication', 'sp_droppublisher', 'sp_droppullsubscription',
        +            'sp_dropremotelogin', 'sp_dropreplsymmetrickey', 'sp_droprole', 'sp_droprolemember', 'sp_dropserver', 'sp_dropsrvrolemember',
        +            'sp_dropsubscriber', 'sp_dropsubscription', 'sp_droptype', 'sp_dropuser', 'sp_dsninfo', 'sp_enable_heterogeneous_subscription',
        +            'sp_enableagentoffload', 'sp_enum_oledb_providers', 'sp_enumcustomresolvers', 'sp_enumdsn', 'sp_enumeratependingschemachanges',
        +            'sp_enumerrorlogs', 'sp_enumfullsubscribers', 'sp_enumoledbdatasources', 'sp_estimate_data_compression_savings',
        +            'sp_estimated_rowsize_reduction_for_vardecimal', 'sp_expired_subscription_cleanup', 'sp_filestream_force_garbage_collection',
        +            'sp_filestream_recalculate_container_size', 'sp_firstonly_bitmap', 'sp_fkeys', 'sp_flush_commit_table',
        +            'sp_flush_commit_table_on_demand', 'sp_foreign_keys_rowset', 'sp_foreign_keys_rowset_rmt', 'sp_foreign_keys_rowset2',
        +            'sp_foreign_keys_rowset3', 'sp_foreignkeys', 'sp_fulltext_catalog', 'sp_fulltext_column', 'sp_fulltext_database',
        +            'sp_fulltext_load_thesaurus_file', 'sp_fulltext_recycle_crawl_log', 'sp_fulltext_semantic_register_language_statistics_db',
        +            'sp_fulltext_semantic_unregister_language_statistics_db', 'sp_fulltext_service', 'sp_fulltext_table', 'sp_generate_agent_parameter',
        +            'sp_generatefilters', 'sp_get_distributor', 'sp_get_job_status_mergesubscription_agent', 'sp_get_mergepublishedarticleproperties',
        +            'sp_get_Oracle_publisher_metadata', 'sp_get_redirected_publisher', 'sp_getagentparameterlist', 'sp_getapplock',
        +            'sp_getdefaultdatatypemapping', 'sp_getmergedeletetype', 'sp_getProcessorUsage', 'sp_getpublisherlink',
        +            'sp_getqueuedarticlesynctraninfo', 'sp_getqueuedrows', 'sp_getsqlqueueversion', 'sp_getsubscription_status_hsnapshot',
        +            'sp_getsubscriptiondtspackagename', 'sp_gettopologyinfo', 'sp_getVolumeFreeSpace', 'sp_grant_publication_access', 'sp_grantdbaccess',
        +            'sp_grantlogin', 'sp_help', 'sp_help_agent_default', 'sp_help_agent_parameter', 'sp_help_agent_profile', 'sp_help_datatype_mapping',
        +            'sp_help_fulltext_catalog_components', 'sp_help_fulltext_catalogs', 'sp_help_fulltext_catalogs_cursor', 'sp_help_fulltext_columns',
        +            'sp_help_fulltext_columns_cursor', 'sp_help_fulltext_system_components', 'sp_help_fulltext_tables', 'sp_help_fulltext_tables_cursor',
        +            'sp_help_log_shipping_alert_job', 'sp_help_log_shipping_monitor', 'sp_help_log_shipping_monitor_primary',
        +            'sp_help_log_shipping_monitor_secondary', 'sp_help_log_shipping_primary_database', 'sp_help_log_shipping_primary_secondary',
        +            'sp_help_log_shipping_secondary_database', 'sp_help_log_shipping_secondary_primary', 'sp_help_peerconflictdetection',
        +            'sp_help_publication_access', 'sp_help_spatial_geography_histogram', 'sp_help_spatial_geography_index',
        +            'sp_help_spatial_geography_index_xml', 'sp_help_spatial_geometry_histogram', 'sp_help_spatial_geometry_index',
        +            'sp_help_spatial_geometry_index_xml', 'sp_helpallowmerge_publication', 'sp_helparticle', 'sp_helparticlecolumns', 'sp_helparticledts',
        +            'sp_helpconstraint', 'sp_helpdatatypemap', 'sp_helpdb', 'sp_helpdbfixedrole', 'sp_helpdevice', 'sp_helpdistpublisher',
        +            'sp_helpdistributiondb', 'sp_helpdistributor', 'sp_helpdistributor_properties', 'sp_helpdynamicsnapshot_job', 'sp_helpextendedproc',
        +            'sp_helpfile', 'sp_helpfilegroup', 'sp_helpindex', 'sp_helplanguage', 'sp_helplinkedsrvlogin', 'sp_helplogins', 'sp_helplogreader_agent',
        +            'sp_helpmergealternatepublisher', 'sp_helpmergearticle', 'sp_helpmergearticlecolumn', 'sp_helpmergearticleconflicts',
        +            'sp_helpmergeconflictrows', 'sp_helpmergedeleteconflictrows', 'sp_helpmergefilter', 'sp_helpmergelogfiles',
        +            'sp_helpmergelogfileswithdata', 'sp_helpmergelogsettings', 'sp_helpmergepartition', 'sp_helpmergepublication',
        +            'sp_helpmergepullsubscription', 'sp_helpmergesubscription', 'sp_helpntgroup', 'sp_helppeerrequests', 'sp_helppeerresponses',
        +            'sp_helppublication', 'sp_helppublication_snapshot', 'sp_helppublicationsync', 'sp_helppullsubscription', 'sp_helpqreader_agent',
        +            'sp_helpremotelogin', 'sp_helpreplfailovermode', 'sp_helpreplicationdb', 'sp_helpreplicationdboption', 'sp_helpreplicationoption',
        +            'sp_helprole', 'sp_helprolemember', 'sp_helprotect', 'sp_helpserver', 'sp_helpsort', 'sp_helpsrvrole', 'sp_helpsrvrolemember',
        +            'sp_helpstats', 'sp_helpsubscriberinfo', 'sp_helpsubscription', 'sp_helpsubscription_properties', 'sp_helpsubscriptionerrors',
        +            'sp_helptext', 'sp_helptracertokenhistory', 'sp_helptracertokens', 'sp_helptrigger', 'sp_helpuser', 'sp_helpxactsetjob',
        +            'sp_hexadecimal', 'sp_http_generate_wsdl_defaultcomplexorsimple', 'sp_http_generate_wsdl_defaultsimpleorcomplex',
        +            'sp_identitycolumnforreplication', 'sp_IH_LR_GetCacheData', 'sp_IHadd_sync_command', 'sp_IHarticlecolumn',
        +            'sp_IHget_loopback_detection', 'sp_IHScriptIdxFile', 'sp_IHScriptSchFile', 'sp_IHValidateRowFilter', 'sp_IHXactSetJob',
        +            'sp_indexcolumns_managed', 'sp_indexes', 'sp_indexes_100_rowset', 'sp_indexes_100_rowset2', 'sp_indexes_90_rowset',
        +            'sp_indexes_90_rowset_rmt', 'sp_indexes_90_rowset2', 'sp_indexes_managed', 'sp_indexes_rowset', 'sp_indexes_rowset_rmt',
        +            'sp_indexes_rowset2', 'sp_indexoption', 'sp_invalidate_textptr', 'sp_is_makegeneration_needed', 'sp_ivindexhasnullcols',
        +            'sp_kill_filestream_non_transacted_handles', 'sp_lightweightmergemetadataretentioncleanup', 'sp_link_publication',
        +            'sp_linkedservers', 'sp_linkedservers_rowset', 'sp_linkedservers_rowset2', 'sp_lock', 'sp_logshippinginstallmetadata',
        +            'sp_lookupcustomresolver', 'sp_mapdown_bitmap', 'sp_markpendingschemachange', 'sp_marksubscriptionvalidation', 'sp_mergearticlecolumn',
        +            'sp_mergecleanupmetadata', 'sp_mergedummyupdate', 'sp_mergemetadataretentioncleanup', 'sp_mergesubscription_cleanup',
        +            'sp_mergesubscriptionsummary', 'sp_monitor',
        +            'sp_objectfilegroup',
        +            'sp_oledb_database', 'sp_oledb_defdb', 'sp_oledb_deflang', 'sp_oledb_language', 'sp_oledb_ro_usrname', 'sp_oledbinfo', 'sp_ORbitmap',
        +            'sp_password', 'sp_peerconflictdetection_tableaug', 'sp_pkeys', 'sp_posttracertoken', 'sp_primary_keys_rowset',
        +            'sp_primary_keys_rowset_rmt', 'sp_primary_keys_rowset2', 'sp_primarykeys', 'sp_procedure_params_100_managed',
        +            'sp_procedure_params_100_rowset', 'sp_procedure_params_100_rowset2', 'sp_procedure_params_90_rowset', 'sp_procedure_params_90_rowset2',
        +            'sp_procedure_params_managed', 'sp_procedure_params_rowset', 'sp_procedure_params_rowset2', 'sp_procedures_rowset', 'sp_procedures_rowset2',
        +            'sp_processlogshippingmonitorhistory', 'sp_processlogshippingmonitorprimary', 'sp_processlogshippingmonitorsecondary',
        +            'sp_processlogshippingretentioncleanup', 'sp_procoption', 'sp_prop_oledb_provider', 'sp_provider_types_100_rowset',
        +            'sp_provider_types_90_rowset', 'sp_provider_types_rowset', 'sp_publication_validation', 'sp_publicationsummary', 'sp_publishdb',
        +            'sp_publisherproperty', 'sp_readerrorlog', 'sp_recompile', 'sp_redirect_publisher', 'sp_refresh_heterogeneous_publisher',
        +            'sp_refresh_log_shipping_monitor', 'sp_refreshsqlmodule', 'sp_refreshsubscriptions', 'sp_refreshview', 'sp_register_custom_scripting',
        +            'sp_registercustomresolver', 'sp_reinitmergepullsubscription', 'sp_reinitmergesubscription', 'sp_reinitpullsubscription',
        +            'sp_reinitsubscription', 'sp_releaseapplock', 'sp_remoteoption', 'sp_removedbreplication', 'sp_removedistpublisherdbreplication',
        +            'sp_removesrvreplication', 'sp_rename', 'sp_renamedb', 'sp_repladdcolumn', 'sp_replcleanupccsprocs', 'sp_repldeletequeuedtran',
        +            'sp_repldropcolumn', 'sp_replgetparsedddlcmd', 'sp_replica', 'sp_replication_agent_checkup', 'sp_replicationdboption', 'sp_replincrementlsn',
        +            'sp_replmonitorchangepublicationthreshold', 'sp_replmonitorhelpmergesession', 'sp_replmonitorhelpmergesessiondetail',
        +            'sp_replmonitorhelpmergesubscriptionmoreinfo', 'sp_replmonitorhelppublication', 'sp_replmonitorhelppublicationthresholds',
        +            'sp_replmonitorhelppublisher', 'sp_replmonitorhelpsubscription', 'sp_replmonitorrefreshjob', 'sp_replmonitorsubscriptionpendingcmds',
        +            'sp_replpostsyncstatus', 'sp_replqueuemonitor', 'sp_replrestart', 'sp_replrethrow', 'sp_replsetoriginator', 'sp_replshowcmds',
        +            'sp_replsqlqgetrows', 'sp_replsync', 'sp_requestpeerresponse', 'sp_requestpeertopologyinfo', 'sp_resetsnapshotdeliveryprogress',
        +            'sp_resetstatus', 'sp_resign_database', 'sp_resolve_logins', 'sp_restoredbreplication', 'sp_restoremergeidentityrange',
        +            'sp_resyncmergesubscription', 'sp_revoke_publication_access', 'sp_revokedbaccess', 'sp_revokelogin', 'sp_schemafilter', 'sp_schemata_rowset',
        +            'sp_script_reconciliation_delproc', 'sp_script_reconciliation_insproc', 'sp_script_reconciliation_sinsproc',
        +            'sp_script_reconciliation_vdelproc', 'sp_script_reconciliation_xdelproc', 'sp_script_synctran_commands', 'sp_scriptdelproc',
        +            'sp_scriptdynamicupdproc', 'sp_scriptinsproc', 'sp_scriptmappedupdproc', 'sp_scriptpublicationcustomprocs', 'sp_scriptsinsproc',
        +            'sp_scriptsubconflicttable', 'sp_scriptsupdproc', 'sp_scriptupdproc', 'sp_scriptvdelproc', 'sp_scriptvupdproc', 'sp_scriptxdelproc',
        +            'sp_scriptxupdproc', 'sp_sequence_get_range', 'sp_server_info', 'sp_serveroption', 'sp_setapprole', 'sp_SetAutoSAPasswordAndDisable',
        +            'sp_setdefaultdatatypemapping', 'sp_setnetname', 'sp_setOraclepackageversion', 'sp_setreplfailovermode', 'sp_setsubscriptionxactseqno',
        +            'sp_settriggerorder', 'sp_showcolv', 'sp_showlineage', 'sp_showpendingchanges', 'sp_showrowreplicainfo', 'sp_spaceused',
        +            'sp_sparse_columns_100_rowset', 'sp_special_columns', 'sp_special_columns_100', 'sp_special_columns_90', 'sp_sproc_columns',
        +            'sp_sproc_columns_100', 'sp_sproc_columns_90', 'sp_sqlexec', 'sp_srvrolepermission', 'sp_startmergepullsubscription_agent',
        +            'sp_startmergepushsubscription_agent', 'sp_startpublication_snapshot', 'sp_startpullsubscription_agent', 'sp_startpushsubscription_agent',
        +            'sp_statistics', 'sp_statistics_100', 'sp_statistics_rowset', 'sp_statistics_rowset2', 'sp_stopmergepullsubscription_agent',
        +            'sp_stopmergepushsubscription_agent', 'sp_stoppublication_snapshot', 'sp_stoppullsubscription_agent', 'sp_stoppushsubscription_agent',
        +            'sp_stored_procedures', 'sp_subscribe', 'sp_subscription_cleanup', 'sp_subscriptionsummary', 'sp_syspolicy_execute_policy',
        +            'sp_syspolicy_subscribe_to_policy_category', 'sp_syspolicy_unsubscribe_from_policy_category', 'sp_syspolicy_update_ddl_trigger',
        +            'sp_syspolicy_update_event_notification', 'sp_table_constraints_rowset', 'sp_table_constraints_rowset2', 'sp_table_privileges',
        +            'sp_table_privileges_ex', 'sp_table_privileges_rowset', 'sp_table_privileges_rowset_rmt', 'sp_table_privileges_rowset2',
        +            'sp_table_statistics_rowset', 'sp_table_statistics2_rowset', 'sp_table_type_columns_100', 'sp_table_type_columns_100_rowset',
        +            'sp_table_type_pkeys', 'sp_table_type_primary_keys_rowset', 'sp_table_types', 'sp_table_types_rowset', 'sp_table_validation',
        +            'sp_tablecollations', 'sp_tablecollations_100', 'sp_tablecollations_90', 'sp_tableoption', 'sp_tables', 'sp_tables_ex',
        +            'sp_tables_info_90_rowset', 'sp_tables_info_90_rowset_64', 'sp_tables_info_90_rowset2', 'sp_tables_info_90_rowset2_64',
        +            'sp_tables_info_rowset', 'sp_tables_info_rowset_64', 'sp_tables_info_rowset2', 'sp_tables_info_rowset2_64', 'sp_tables_rowset',
        +            'sp_tables_rowset_rmt', 'sp_tables_rowset2', 'sp_tableswc', 'sp_trace_getdata', 'sp_unbindefault', 'sp_unbindrule',
        +            'sp_unregister_custom_scripting', 'sp_unregistercustomresolver', 'sp_unsetapprole', 'sp_unsubscribe', 'sp_update_agent_profile',
        +            'sp_updateextendedproperty', 'sp_updatestats', 'sp_upgrade_log_shipping', 'sp_user_counter1', 'sp_user_counter10', 'sp_user_counter2',
        +            'sp_user_counter3', 'sp_user_counter4', 'sp_user_counter5', 'sp_user_counter6', 'sp_user_counter7', 'sp_user_counter8', 'sp_user_counter9',
        +            'sp_usertypes_rowset', 'sp_usertypes_rowset_rmt', 'sp_usertypes_rowset2', 'sp_validate_redirected_publisher',
        +            'sp_validate_replica_hosts_as_publishers', 'sp_validatecache', 'sp_validatelogins', 'sp_validatemergepublication',
        +            'sp_validatemergepullsubscription', 'sp_validatemergesubscription', 'sp_validlang', 'sp_validname', 'sp_verifypublisher', 'sp_views_rowset',
        +            'sp_views_rowset2', 'sp_vupgrade_mergeobjects', 'sp_vupgrade_mergetables',  'sp_vupgrade_replication', 'sp_vupgrade_replsecurity_metadata',
        +            'sp_who', 'sp_who2', 'sp_xml_schema_rowset', 'sp_xml_schema_rowset2',
        +        ),
        +        6 => array(
        +
        +            // system MS procedures, marked brown.
        +
        +            'sp_MS_marksystemobject', 'sp_MS_replication_installed', 'sp_MSacquireHeadofQueueLock',
        +            'sp_MSacquireserverresourcefordynamicsnapshot', 'sp_MSacquireSlotLock', 'sp_MSacquiresnapshotdeliverysessionlock',
        +            'sp_MSactivate_auto_sub', 'sp_MSactivatelogbasedarticleobject', 'sp_MSactivateprocedureexecutionarticleobject',
        +            'sp_MSadd_anonymous_agent', 'sp_MSadd_article', 'sp_MSadd_compensating_cmd', 'sp_MSadd_distribution_agent',
        +            'sp_MSadd_distribution_history', 'sp_MSadd_dynamic_snapshot_location', 'sp_MSadd_filteringcolumn', 'sp_MSadd_log_shipping_error_detail',
        +            'sp_MSadd_log_shipping_history_detail', 'sp_MSadd_logreader_agent', 'sp_MSadd_logreader_history', 'sp_MSadd_merge_agent',
        +            'sp_MSadd_merge_anonymous_agent', 'sp_MSadd_merge_history', 'sp_MSadd_merge_history90', 'sp_MSadd_merge_subscription',
        +            'sp_MSadd_mergereplcommand', 'sp_MSadd_mergesubentry_indistdb', 'sp_MSadd_publication', 'sp_MSadd_qreader_agent',
        +            'sp_MSadd_qreader_history', 'sp_MSadd_repl_alert', 'sp_MSadd_repl_command', 'sp_MSadd_repl_commands27hp', 'sp_MSadd_repl_error',
        +            'sp_MSadd_replcmds_mcit', 'sp_MSadd_replmergealert', 'sp_MSadd_snapshot_agent', 'sp_MSadd_snapshot_history', 'sp_MSadd_subscriber_info',
        +            'sp_MSadd_subscriber_schedule', 'sp_MSadd_subscription', 'sp_MSadd_subscription_3rd', 'sp_MSadd_tracer_history', 'sp_MSadd_tracer_token',
        +            'sp_MSaddanonymousreplica', 'sp_MSadddynamicsnapshotjobatdistributor', 'sp_MSaddguidcolumn', 'sp_MSaddguidindex', 'sp_MSaddinitialarticle',
        +            'sp_MSaddinitialpublication', 'sp_MSaddinitialschemaarticle', 'sp_MSaddinitialsubscription', 'sp_MSaddlightweightmergearticle',
        +            'sp_MSaddmergedynamicsnapshotjob', 'sp_MSaddmergetriggers', 'sp_MSaddmergetriggers_from_template', 'sp_MSaddmergetriggers_internal',
        +            'sp_MSaddpeerlsn', 'sp_MSaddsubscriptionarticles', 'sp_MSadjust_pub_identity', 'sp_MSagent_retry_stethoscope', 'sp_MSagent_stethoscope',
        +            'sp_MSallocate_new_identity_range', 'sp_MSalreadyhavegeneration', 'sp_MSanonymous_status', 'sp_MSarticlecleanup',
        +            'sp_MSbrowsesnapshotfolder', 'sp_MScache_agent_parameter', 'sp_MScdc_capture_job', 'sp_MScdc_cleanup_job', 'sp_MScdc_db_ddl_event',
        +            'sp_MScdc_ddl_event', 'sp_MScdc_logddl', 'sp_MSchange_article', 'sp_MSchange_distribution_agent_properties',
        +            'sp_MSchange_logreader_agent_properties', 'sp_MSchange_merge_agent_properties', 'sp_MSchange_mergearticle', 'sp_MSchange_mergepublication',
        +            'sp_MSchange_originatorid', 'sp_MSchange_priority', 'sp_MSchange_publication', 'sp_MSchange_retention', 'sp_MSchange_retention_period_unit',
        +            'sp_MSchange_snapshot_agent_properties', 'sp_MSchange_subscription_dts_info', 'sp_MSchangearticleresolver',
        +            'sp_MSchangedynamicsnapshotjobatdistributor', 'sp_MSchangedynsnaplocationatdistributor', 'sp_MSchangeobjectowner',
        +            'sp_MScheck_agent_instance', 'sp_MScheck_Jet_Subscriber', 'sp_MScheck_logicalrecord_metadatamatch', 'sp_MScheck_merge_subscription_count',
        +            'sp_MScheck_pub_identity', 'sp_MScheck_pull_access', 'sp_MScheck_snapshot_agent', 'sp_MScheck_subscription', 'sp_MScheck_subscription_expiry',
        +            'sp_MScheck_subscription_partition', 'sp_MScheck_tran_retention', 'sp_MScheckexistsgeneration', 'sp_MScheckexistsrecguid',
        +            'sp_MScheckfailedprevioussync', 'sp_MScheckidentityrange', 'sp_MScheckIsPubOfSub', 'sp_MSchecksharedagentforpublication',
        +            'sp_MSchecksnapshotstatus', 'sp_MScleanup_agent_entry', 'sp_MScleanup_conflict', 'sp_MScleanup_publication_ADinfo',
        +            'sp_MScleanup_subscription_distside_entry', 'sp_MScleanupdynamicsnapshotfolder', 'sp_MScleanupdynsnapshotvws', 'sp_MSCleanupForPullReinit',
        +            'sp_MScleanupmergepublisher_internal', 'sp_MSclear_dynamic_snapshot_location', 'sp_MSclearresetpartialsnapshotprogressbit',
        +            'sp_MScomputelastsentgen', 'sp_MScomputemergearticlescreationorder', 'sp_MScomputemergeunresolvedrefs', 'sp_MSconflicttableexists',
        +            'sp_MScreate_all_article_repl_views', 'sp_MScreate_article_repl_views', 'sp_MScreate_dist_tables', 'sp_MScreate_logical_record_views',
        +            'sp_MScreate_sub_tables', 'sp_MScreate_tempgenhistorytable', 'sp_MScreatedisabledmltrigger', 'sp_MScreatedummygeneration',
        +            'sp_MScreateglobalreplica', 'sp_MScreatelightweightinsertproc', 'sp_MScreatelightweightmultipurposeproc',
        +            'sp_MScreatelightweightprocstriggersconstraints', 'sp_MScreatelightweightupdateproc', 'sp_MScreatemergedynamicsnapshot',
        +            'sp_MScreateretry', 'sp_MSdbuseraccess', 'sp_MSdbuserpriv', 'sp_MSdefer_check', 'sp_MSdelete_tracer_history', 'sp_MSdeletefoldercontents',
        +            'sp_MSdeletemetadataactionrequest', 'sp_MSdeletepeerconflictrow', 'sp_MSdeleteretry', 'sp_MSdeletetranconflictrow', 'sp_MSdelgenzero',
        +            'sp_MSdelrow', 'sp_MSdelrowsbatch', 'sp_MSdelrowsbatch_downloadonly', 'sp_MSdelsubrows', 'sp_MSdelsubrowsbatch', 'sp_MSdependencies',
        +            'sp_MSdetect_nonlogged_shutdown', 'sp_MSdetectinvalidpeerconfiguration', 'sp_MSdetectinvalidpeersubscription', 'sp_MSdist_activate_auto_sub',
        +            'sp_MSdist_adjust_identity', 'sp_MSdistpublisher_cleanup', 'sp_MSdistribution_counters', 'sp_MSdistributoravailable',
        +            'sp_MSdodatabasesnapshotinitiation', 'sp_MSdopartialdatabasesnapshotinitiation', 'sp_MSdrop_6x_publication', 'sp_MSdrop_6x_replication_agent',
        +            'sp_MSdrop_anonymous_entry', 'sp_MSdrop_article', 'sp_MSdrop_distribution_agent', 'sp_MSdrop_distribution_agentid_dbowner_proxy',
        +            'sp_MSdrop_dynamic_snapshot_agent', 'sp_MSdrop_logreader_agent', 'sp_MSdrop_merge_agent', 'sp_MSdrop_merge_subscription',
        +            'sp_MSdrop_publication', 'sp_MSdrop_qreader_history', 'sp_MSdrop_snapshot_agent', 'sp_MSdrop_snapshot_dirs', 'sp_MSdrop_subscriber_info',
        +            'sp_MSdrop_subscription', 'sp_MSdrop_subscription_3rd', 'sp_MSdrop_tempgenhistorytable', 'sp_MSdroparticleconstraints',
        +            'sp_MSdroparticletombstones', 'sp_MSdropconstraints', 'sp_MSdropdynsnapshotvws', 'sp_MSdropfkreferencingarticle', 'sp_MSdropmergearticle',
        +            'sp_MSdropmergedynamicsnapshotjob', 'sp_MSdropretry', 'sp_MSdroptemptable', 'sp_MSdummyupdate', 'sp_MSdummyupdate_logicalrecord',
        +            'sp_MSdummyupdate90', 'sp_MSdummyupdatelightweight', 'sp_MSdynamicsnapshotjobexistsatdistributor', 'sp_MSenable_publication_for_het_sub',
        +            'sp_MSensure_single_instance', 'sp_MSenum_distribution', 'sp_MSenum_distribution_s', 'sp_MSenum_distribution_sd',
        +            'sp_MSenum_logicalrecord_changes', 'sp_MSenum_logreader', 'sp_MSenum_logreader_s', 'sp_MSenum_logreader_sd', 'sp_MSenum_merge',
        +            'sp_MSenum_merge_agent_properties', 'sp_MSenum_merge_s', 'sp_MSenum_merge_sd', 'sp_MSenum_merge_subscriptions',
        +            'sp_MSenum_merge_subscriptions_90_publication', 'sp_MSenum_merge_subscriptions_90_publisher', 'sp_MSenum_metadataaction_requests',
        +            'sp_MSenum_qreader', 'sp_MSenum_qreader_s', 'sp_MSenum_qreader_sd', 'sp_MSenum_replication_agents', 'sp_MSenum_replication_job',
        +            'sp_MSenum_replqueues', 'sp_MSenum_replsqlqueues', 'sp_MSenum_snapshot', 'sp_MSenum_snapshot_s', 'sp_MSenum_snapshot_sd',
        +            'sp_MSenum_subscriptions', 'sp_MSenumallpublications', 'sp_MSenumallsubscriptions', 'sp_MSenumarticleslightweight', 'sp_MSenumchanges',
        +            'sp_MSenumchanges_belongtopartition', 'sp_MSenumchanges_notbelongtopartition', 'sp_MSenumchangesdirect', 'sp_MSenumchangeslightweight',
        +            'sp_MSenumcolumns', 'sp_MSenumcolumnslightweight', 'sp_MSenumdeletes_forpartition', 'sp_MSenumdeleteslightweight', 'sp_MSenumdeletesmetadata',
        +            'sp_MSenumdistributionagentproperties', 'sp_MSenumerate_PAL', 'sp_MSenumgenerations', 'sp_MSenumgenerations90', 'sp_MSenumpartialchanges',
        +            'sp_MSenumpartialchangesdirect', 'sp_MSenumpartialdeletes', 'sp_MSenumpubreferences', 'sp_MSenumreplicas', 'sp_MSenumreplicas90',
        +            'sp_MSenumretries', 'sp_MSenumschemachange', 'sp_MSenumsubscriptions', 'sp_MSenumthirdpartypublicationvendornames',
        +            'sp_MSestimatemergesnapshotworkload', 'sp_MSestimatesnapshotworkload', 'sp_MSevalsubscriberinfo',
        +            'sp_MSevaluate_change_membership_for_all_articles_in_pubid', 'sp_MSevaluate_change_membership_for_pubid',
        +            'sp_MSevaluate_change_membership_for_row', 'sp_MSexecwithlsnoutput', 'sp_MSfast_delete_trans', 'sp_MSfetchAdjustidentityrange',
        +            'sp_MSfetchidentityrange', 'sp_MSfillupmissingcols', 'sp_MSfilterclause', 'sp_MSfix_6x_tasks', 'sp_MSfixlineageversions',
        +            'sp_MSFixSubColumnBitmaps', 'sp_MSfixupbeforeimagetables', 'sp_MSflush_access_cache', 'sp_MSforce_drop_distribution_jobs',
        +            'sp_MSforcereenumeration', 'sp_MSforeach_worker', 'sp_MSforeachdb', 'sp_MSforeachtable', 'sp_MSgenerateexpandproc', 'sp_MSget_agent_names',
        +            'sp_MSget_attach_state', 'sp_MSget_DDL_after_regular_snapshot', 'sp_MSget_dynamic_snapshot_location', 'sp_MSget_identity_range_info',
        +            'sp_MSget_jobstate', 'sp_MSget_last_transaction', 'sp_MSget_latest_peerlsn', 'sp_MSget_load_hint', 'sp_MSget_log_shipping_new_sessionid',
        +            'sp_MSget_logicalrecord_lineage', 'sp_MSget_max_used_identity', 'sp_MSget_min_seqno', 'sp_MSget_MSmerge_rowtrack_colinfo',
        +            'sp_MSget_new_xact_seqno', 'sp_MSget_oledbinfo', 'sp_MSget_partitionid_eval_proc', 'sp_MSget_publication_from_taskname',
        +            'sp_MSget_publisher_rpc', 'sp_MSget_repl_cmds_anonymous', 'sp_MSget_repl_commands', 'sp_MSget_repl_error', 'sp_MSget_session_statistics',
        +            'sp_MSget_shared_agent', 'sp_MSget_snapshot_history', 'sp_MSget_subscriber_partition_id', 'sp_MSget_subscription_dts_info',
        +            'sp_MSget_subscription_guid', 'sp_MSget_synctran_commands', 'sp_MSget_type_wrapper', 'sp_MSgetagentoffloadinfo', 'sp_MSgetalertinfo',
        +            'sp_MSgetalternaterecgens', 'sp_MSgetarticlereinitvalue', 'sp_MSgetchangecount', 'sp_MSgetconflictinsertproc', 'sp_MSgetconflicttablename',
        +            'sp_MSGetCurrentPrincipal', 'sp_MSgetdatametadatabatch', 'sp_MSgetdbversion', 'sp_MSgetdynamicsnapshotapplock',
        +            'sp_MSgetdynsnapvalidationtoken', 'sp_MSgetisvalidwindowsloginfromdistributor', 'sp_MSgetlastrecgen', 'sp_MSgetlastsentgen',
        +            'sp_MSgetlastsentrecgens', 'sp_MSgetlastupdatedtime', 'sp_MSgetlightweightmetadatabatch', 'sp_MSgetmakegenerationapplock',
        +            'sp_MSgetmakegenerationapplock_90', 'sp_MSgetmaxbcpgen', 'sp_MSgetmaxsnapshottimestamp', 'sp_MSgetmergeadminapplock',
        +            'sp_MSgetmetadata_changedlogicalrecordmembers', 'sp_MSgetmetadatabatch', 'sp_MSgetmetadatabatch90', 'sp_MSgetmetadatabatch90new',
        +            'sp_MSgetonerow', 'sp_MSgetonerowlightweight', 'sp_MSgetpeerconflictrow', 'sp_MSgetpeerlsns', 'sp_MSgetpeertopeercommands',
        +            'sp_MSgetpeerwinnerrow', 'sp_MSgetpubinfo', 'sp_MSgetreplicainfo', 'sp_MSgetreplicastate', 'sp_MSgetrowmetadata',
        +            'sp_MSgetrowmetadatalightweight', 'sp_MSGetServerProperties', 'sp_MSgetsetupbelong_cost', 'sp_MSgetsubscriberinfo',
        +            'sp_MSgetsupportabilitysettings', 'sp_MSgettrancftsrcrow', 'sp_MSgettranconflictrow', 'sp_MSgetversion', 'sp_MSgrantconnectreplication',
        +            'sp_MShaschangeslightweight', 'sp_MShasdbaccess', 'sp_MShelp_article', 'sp_MShelp_distdb', 'sp_MShelp_distribution_agentid',
        +            'sp_MShelp_identity_property', 'sp_MShelp_logreader_agentid', 'sp_MShelp_merge_agentid', 'sp_MShelp_profile', 'sp_MShelp_profilecache',
        +            'sp_MShelp_publication', 'sp_MShelp_repl_agent', 'sp_MShelp_replication_status', 'sp_MShelp_replication_table', 'sp_MShelp_snapshot_agent',
        +            'sp_MShelp_snapshot_agentid', 'sp_MShelp_subscriber_info', 'sp_MShelp_subscription', 'sp_MShelp_subscription_status', 'sp_MShelpcolumns',
        +            'sp_MShelpconflictpublications', 'sp_MShelpcreatebeforetable', 'sp_MShelpdestowner', 'sp_MShelpdynamicsnapshotjobatdistributor',
        +            'sp_MShelpfulltextindex', 'sp_MShelpfulltextscript', 'sp_MShelpindex', 'sp_MShelplogreader_agent', 'sp_MShelpmergearticles',
        +            'sp_MShelpmergeconflictcounts', 'sp_MShelpmergedynamicsnapshotjob', 'sp_MShelpmergeidentity', 'sp_MShelpmergeschemaarticles',
        +            'sp_MShelpobjectpublications', 'sp_MShelpreplicationtriggers', 'sp_MShelpsnapshot_agent', 'sp_MShelpsummarypublication',
        +            'sp_MShelptracertokenhistory', 'sp_MShelptracertokens', 'sp_MShelptranconflictcounts', 'sp_MShelptype', 'sp_MShelpvalidationdate',
        +            'sp_MSIfExistsSubscription', 'sp_MSindexspace', 'sp_MSinit_publication_access', 'sp_MSinit_subscription_agent', 'sp_MSinitdynamicsubscriber',
        +            'sp_MSinsert_identity', 'sp_MSinsertdeleteconflict', 'sp_MSinserterrorlineage', 'sp_MSinsertgenerationschemachanges', 'sp_MSinsertgenhistory',
        +            'sp_MSinsertlightweightschemachange', 'sp_MSinsertschemachange', 'sp_MSinvalidate_snapshot', 'sp_MSisnonpkukupdateinconflict',
        +            'sp_MSispeertopeeragent', 'sp_MSispkupdateinconflict', 'sp_MSispublicationqueued', 'sp_MSisreplmergeagent', 'sp_MSissnapshotitemapplied',
        +            'sp_MSkilldb', 'sp_MSlock_auto_sub', 'sp_MSlock_distribution_agent', 'sp_MSlocktable', 'sp_MSloginmappings', 'sp_MSmakearticleprocs',
        +            'sp_MSmakebatchinsertproc', 'sp_MSmakebatchupdateproc', 'sp_MSmakeconflictinsertproc', 'sp_MSmakectsview', 'sp_MSmakedeleteproc',
        +            'sp_MSmakedynsnapshotvws', 'sp_MSmakeexpandproc', 'sp_MSmakegeneration', 'sp_MSmakeinsertproc', 'sp_MSmakemetadataselectproc',
        +            'sp_MSmakeselectproc', 'sp_MSmakesystableviews', 'sp_MSmakeupdateproc', 'sp_MSmap_partitionid_to_generations', 'sp_MSmarkreinit',
        +            'sp_MSmatchkey', 'sp_MSmerge_alterschemaonly', 'sp_MSmerge_altertrigger', 'sp_MSmerge_alterview', 'sp_MSmerge_ddldispatcher',
        +            'sp_MSmerge_getgencount', 'sp_MSmerge_getgencur_public', 'sp_MSmerge_is_snapshot_required', 'sp_MSmerge_log_identity_range_allocations',
        +            'sp_MSmerge_parsegenlist', 'sp_MSmerge_upgrade_subscriber', 'sp_MSmergesubscribedb', 'sp_MSmergeupdatelastsyncinfo',
        +            'sp_MSneedmergemetadataretentioncleanup', 'sp_MSNonSQLDDL', 'sp_MSNonSQLDDLForSchemaDDL', 'sp_MSobjectprivs', 'sp_MSpeerapplyresponse',
        +            'sp_MSpeerapplytopologyinfo', 'sp_MSpeerconflictdetection_statuscollection_applyresponse',
        +            'sp_MSpeerconflictdetection_statuscollection_sendresponse', 'sp_MSpeerconflictdetection_topology_applyresponse', 'sp_MSpeerdbinfo',
        +            'sp_MSpeersendresponse', 'sp_MSpeersendtopologyinfo', 'sp_MSpeertopeerfwdingexec', 'sp_MSpost_auto_proc',
        +            'sp_MSpostapplyscript_forsubscriberprocs', 'sp_MSprep_exclusive', 'sp_MSprepare_mergearticle', 'sp_MSprofile_in_use',
        +            'sp_MSproxiedmetadata', 'sp_MSproxiedmetadatabatch', 'sp_MSproxiedmetadatalightweight', 'sp_MSpub_adjust_identity',
        +            'sp_MSpublication_access', 'sp_MSpublicationcleanup', 'sp_MSpublicationview', 'sp_MSquery_syncstates', 'sp_MSquerysubtype',
        +            'sp_MSrecordsnapshotdeliveryprogress', 'sp_MSreenable_check', 'sp_MSrefresh_anonymous', 'sp_MSrefresh_publisher_idrange',
        +            'sp_MSregenerate_mergetriggersprocs', 'sp_MSregisterdynsnapseqno', 'sp_MSregistermergesnappubid', 'sp_MSregistersubscription',
        +            'sp_MSreinit_failed_subscriptions', 'sp_MSreinit_hub', 'sp_MSreinit_subscription', 'sp_MSreinitoverlappingmergepublications',
        +            'sp_MSreleasedynamicsnapshotapplock', 'sp_MSreleasemakegenerationapplock', 'sp_MSreleasemergeadminapplock', 'sp_MSreleaseSlotLock',
        +            'sp_MSreleasesnapshotdeliverysessionlock', 'sp_MSremove_mergereplcommand', 'sp_MSremoveoffloadparameter', 'sp_MSrepl_agentstatussummary',
        +            'sp_MSrepl_backup_complete', 'sp_MSrepl_backup_start', 'sp_MSrepl_check_publisher', 'sp_MSrepl_createdatatypemappings',
        +            'sp_MSrepl_distributionagentstatussummary', 'sp_MSrepl_dropdatatypemappings', 'sp_MSrepl_enumarticlecolumninfo',
        +            'sp_MSrepl_enumpublications', 'sp_MSrepl_enumpublishertables', 'sp_MSrepl_enumsubscriptions', 'sp_MSrepl_enumtablecolumninfo',
        +            'sp_MSrepl_FixPALRole', 'sp_MSrepl_getdistributorinfo', 'sp_MSrepl_getpkfkrelation', 'sp_MSrepl_gettype_mappings',
        +            'sp_MSrepl_helparticlermo', 'sp_MSrepl_init_backup_lsns', 'sp_MSrepl_isdbowner', 'sp_MSrepl_IsLastPubInSharedSubscription',
        +            'sp_MSrepl_IsUserInAnyPAL', 'sp_MSrepl_linkedservers_rowset', 'sp_MSrepl_mergeagentstatussummary', 'sp_MSrepl_PAL_rolecheck',
        +            'sp_MSrepl_raiserror', 'sp_MSrepl_schema', 'sp_MSrepl_setNFR', 'sp_MSrepl_snapshot_helparticlecolumns',
        +            'sp_MSrepl_snapshot_helppublication', 'sp_MSrepl_startup_internal', 'sp_MSrepl_subscription_rowset', 'sp_MSrepl_testadminconnection',
        +            'sp_MSrepl_testconnection', 'sp_MSreplagentjobexists', 'sp_MSreplcheck_permission', 'sp_MSreplcheck_pull', 'sp_MSreplcheck_subscribe',
        +            'sp_MSreplcheck_subscribe_withddladmin', 'sp_MSreplcheckoffloadserver', 'sp_MSreplcopyscriptfile', 'sp_MSreplraiserror',
        +            'sp_MSreplremoveuncdir', 'sp_MSreplupdateschema', 'sp_MSrequestreenumeration', 'sp_MSrequestreenumeration_lightweight',
        +            'sp_MSreset_attach_state', 'sp_MSreset_queued_reinit', 'sp_MSreset_subscription', 'sp_MSreset_subscription_seqno',
        +            'sp_MSreset_synctran_bit', 'sp_MSreset_transaction', 'sp_MSresetsnapshotdeliveryprogress', 'sp_MSrestoresavedforeignkeys',
        +            'sp_MSretrieve_publication_attributes', 'sp_MSscript_article_view', 'sp_MSscript_dri', 'sp_MSscript_pub_upd_trig',
        +            'sp_MSscript_sync_del_proc', 'sp_MSscript_sync_del_trig', 'sp_MSscript_sync_ins_proc', 'sp_MSscript_sync_ins_trig',
        +            'sp_MSscript_sync_upd_proc', 'sp_MSscript_sync_upd_trig', 'sp_MSscriptcustomdelproc', 'sp_MSscriptcustominsproc',
        +            'sp_MSscriptcustomupdproc', 'sp_MSscriptdatabase', 'sp_MSscriptdb_worker', 'sp_MSscriptforeignkeyrestore', 'sp_MSscriptsubscriberprocs',
        +            'sp_MSscriptviewproc', 'sp_MSsendtosqlqueue', 'sp_MSset_dynamic_filter_options', 'sp_MSset_logicalrecord_metadata',
        +            'sp_MSset_new_identity_range', 'sp_MSset_oledb_prop', 'sp_MSset_snapshot_xact_seqno', 'sp_MSset_sub_guid',
        +            'sp_MSset_subscription_properties', 'sp_MSsetaccesslist', 'sp_MSsetalertinfo', 'sp_MSsetartprocs', 'sp_MSsetbit',
        +            'sp_MSsetconflictscript', 'sp_MSsetconflicttable', 'sp_MSsetcontext_bypasswholeddleventbit', 'sp_MSsetcontext_replagent',
        +            'sp_MSsetgentozero', 'sp_MSsetlastrecgen', 'sp_MSsetlastsentgen', 'sp_MSsetreplicainfo', 'sp_MSsetreplicaschemaversion',
        +            'sp_MSsetreplicastatus', 'sp_MSsetrowmetadata', 'sp_MSSetServerProperties', 'sp_MSsetsubscriberinfo', 'sp_MSsettopology',
        +            'sp_MSsetup_identity_range', 'sp_MSsetup_partition_groups', 'sp_MSsetup_use_partition_groups', 'sp_MSsetupbelongs',
        +            'sp_MSsetupnosyncsubwithlsnatdist', 'sp_MSsetupnosyncsubwithlsnatdist_cleanup', 'sp_MSsetupnosyncsubwithlsnatdist_helper',
        +            'sp_MSSharedFixedDisk', 'sp_MSSQLDMO70_version', 'sp_MSSQLDMO80_version', 'sp_MSSQLDMO90_version', 'sp_MSSQLOLE_version',
        +            'sp_MSSQLOLE65_version', 'sp_MSstartdistribution_agent', 'sp_MSstartmerge_agent', 'sp_MSstartsnapshot_agent',
        +            'sp_MSstopdistribution_agent', 'sp_MSstopmerge_agent', 'sp_MSstopsnapshot_agent', 'sp_MSsub_check_identity', 'sp_MSsub_set_identity',
        +            'sp_MSsubscription_status', 'sp_MSsubscriptionvalidated', 'sp_MStablechecks', 'sp_MStablekeys', 'sp_MStablerefs', 'sp_MStablespace',
        +            'sp_MStestbit', 'sp_MStran_ddlrepl', 'sp_MStran_is_snapshot_required', 'sp_MStrypurgingoldsnapshotdeliveryprogress', 'sp_MSuniquename',
        +            'sp_MSunmarkifneeded', 'sp_MSunmarkreplinfo', 'sp_MSunmarkschemaobject', 'sp_MSunregistersubscription', 'sp_MSupdate_agenttype_default',
        +            'sp_MSupdate_singlelogicalrecordmetadata', 'sp_MSupdate_subscriber_info', 'sp_MSupdate_subscriber_schedule',
        +            'sp_MSupdate_subscriber_tracer_history', 'sp_MSupdate_subscription', 'sp_MSupdate_tracer_history', 'sp_MSupdatecachedpeerlsn',
        +            'sp_MSupdategenerations_afterbcp', 'sp_MSupdategenhistory', 'sp_MSupdateinitiallightweightsubscription', 'sp_MSupdatelastsyncinfo',
        +            'sp_MSupdatepeerlsn', 'sp_MSupdaterecgen', 'sp_MSupdatereplicastate', 'sp_MSupdatesysmergearticles', 'sp_MSuplineageversion',
        +            'sp_MSuploadsupportabilitydata', 'sp_MSuselightweightreplication', 'sp_MSvalidate_dest_recgen', 'sp_MSvalidate_subscription',
        +            'sp_MSvalidate_wellpartitioned_articles', 'sp_MSvalidatearticle', 'sp_MSwritemergeperfcounter',
        +
        +        ),
        +        7 => array(
        +            'APPLY', 'FULL', 'ALL', 'AND', 'ANY', 'BETWEEN', 'CROSS',
        +            'EXISTS', 'IN', 'INNER', 'JOIN', 'LIKE', 'NOT', 'NULL', 'OR', 'OUTER', 'SOME'
        +        )
        +    ),
        +    'SYMBOLS' => array(
        +        '!', '!=', '%', '&', '&&', '(', ')', '*', '+', '-', '/', '<', '<<', '<=', ';', '::', ',', '.',
        +        '<=>', '<>', '=', '>', '>=', '>>', '^', '|', '||', '~'
        +    ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        6 => false,
        +        7 => false,
        +    ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #FF00FF;',
        +            2 => 'color: #0000FF;',
        +            3 => 'color: #AF0000;',
        +            4 => 'color: #00AF00;',
        +            5 => 'color: #AF0000;',
        +            6 => 'color: #AF0000;',
        +            7 => 'color: #808080;',
        +        ),
        +        'COMMENTS' => array(
        +            1 => 'color: #009E00;',
        +            'MULTI' => 'color: #009E00;'
        +        ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #ff0000;'
        +        ),
        +        'BRACKETS' => array(
        +            0 => 'color: #808080;'
        +        ),
        +        'STRINGS' => array(
        +            0 => 'color: #FF0000;',
        +            'HARD' => 'color: #FF0000;'
        +        ),
        +        'ESCAPE_CHAR' => array(
        +            'HARD' => 'color: #FF0000;'
        +        ),
        +        'NUMBERS' => array(
        +            0 => 'color: #000;'
        +        ),
        +        'METHODS' => array(
        +            1 => 'color: #202020;',
        +            2 => 'color: #202020;'
        +        ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #808080;'
        +        ),
        +        'REGEXPS' => array(
        +            0 => 'color: #cc3333;'
        +        ),
        +        'SCRIPT' => array(
        +        )
        +    ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => '',
        +        7 => '',
        +    ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +    ),
        +    'REGEXPS' => array(
        +        // variables
        +        0 => "[\\@]+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*"
        +    ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +    ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +    ),
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            2 => array(
        +                'DISALLOWED_BEFORE' => "(? "(?![\]a-zA-Z0-9_\|%\-&;'\"])",
        +            ),
        +            7 => array(
        +                'DISALLOWED_BEFORE' => "(? "(?![\]a-zA-Z0-9_\|%\-&;'\"])",
        +            ),
        +        )
        +    )
        +);
        diff --git a/includes/geshi/twig.php b/includes/geshi/twig.php
        new file mode 100644
        index 0000000..c42f50e
        --- /dev/null
        +++ b/includes/geshi/twig.php
        @@ -0,0 +1,286 @@
        + 'Twig',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array('{#' => '#}'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        //TWIG
        +        //Tags
        +        1 => array(
        +            'autoescape',
        +            'endautoescape',
        +            'block',
        +            'endblock',
        +            'do',
        +            'embed',
        +            'endembed',
        +            'extends',
        +            'filter',
        +            'endfilter',
        +            'for',
        +            'endfor',
        +            'from',
        +            'if',
        +            'else',
        +            'elseif',
        +            'endif',
        +            'import',
        +            'include',
        +            'macro',
        +            'endmacro',
        +            'raw',
        +            'endraw',
        +            'sandbox',
        +            'set',
        +            'endset',
        +            'spaceless',
        +            'endspaceless',
        +            'use',
        +            'verbatim',
        +            'endverbatim',
        +            'trans',
        +            'endtrans',
        +            'transchoice',
        +            'endtranschoice'
        +        ),
        +        //Filters
        +        2 => array(
        +            'abs',
        +            'batch',
        +            'capitalize',
        +            'convert_encoding',
        +            'date',
        +            'date_modify',
        +            'default',
        +            'escape',
        +            'first',
        +            'format',
        +            'join',
        +            'json_encode',
        +            'keys',
        +            'last',
        +            'length',
        +            'lower',
        +            'merge',
        +            'nl2br',
        +            'number_format',
        +            'replace',
        +            'reverse',
        +            'slice',
        +            'sort',
        +            'split',
        +            'striptags',
        +            'title',
        +            'trim',
        +            'upper',
        +            'url_encode'
        +        ),
        +        //Functions
        +        3 => array(
        +            'attribute',
        +            'cycle',
        +            'dump',
        +            'parent',
        +            'random',
        +            'range',
        +            'source',
        +            'template_from_string'
        +        ),
        +        //Tests
        +        4 => array(
        +            'constant',
        +            'defined',
        +            'divisibleby',
        +            'empty',
        +            'even',
        +            'iterable',
        +            'null',
        +            'odd',
        +            'sameas'
        +        ),
        +        //Operators
        +        5 => array(
        +            'in',
        +            'is',
        +            'and',
        +            'b-and',
        +            'or',
        +            'b-or',
        +            'b-xor',
        +            'not',
        +            'into',
        +            'starts with',
        +            'ends with',
        +            'matches'
        +        )
        +    ),
        +    'SYMBOLS' => array(
        +        '{{',
        +        '}}',
        +        '{%',
        +        '%}',
        +        '+',
        +        '-',
        +        '/',
        +        '/',
        +        '*',
        +        '**', //Math operators
        +        '==',
        +        '!=',
        +        '<',
        +        '>',
        +        '>=',
        +        '<=',
        +        '===', //Logic operators
        +        '..',
        +        '|',
        +        '~',
        +        '[',
        +        ']',
        +        '.',
        +        '?',
        +        ':',
        +        '(',
        +        ')', //Other
        +        '=' //HTML (attributes)
        +    ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        //Twig
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true
        +    ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0600FF;', //Tags
        +            2 => 'color: #008000;', //Filters
        +            3 => 'color: #0600FF;', //Functions
        +            4 => 'color: #804040;', //Tests
        +            5 => 'color: #008000;'
        +        ),
        +        'COMMENTS' => array(
        +            'MULTI' => 'color: #008080; font-style: italic;'
        +        ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +        ),
        +        'BRACKETS' => array(
        +            0 => 'color: #D36900;'
        +        ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +        ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +        ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;'
        +        ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #D36900;'
        +        ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => 'color: #808080; font-style: italic;',
        +            2 => 'color: #009000;'
        +        ),
        +        'REGEXPS' => array(
        +            0 => 'color: #00aaff;',
        +            1 => 'color: #00aaff;'
        +        )
        +    ),
        +    'URLS' => array(
        +        1 => 'http://twig.sensiolabs.org/doc/tags/{FNAMEL}.html',
        +        2 => 'http://twig.sensiolabs.org/doc/filters/{FNAMEL}.html',
        +        3 => 'http://twig.sensiolabs.org/doc/functions/{FNAMEL}.html',
        +        4 => 'http://twig.sensiolabs.org/doc/tests/{FNAMEL}.html',
        +        5 => '',
        +    ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.',
        +    ),
        +    'REGEXPS' => array(
        +        0 => array(
        +            GESHI_SEARCH => "([[:space:]])([a-zA-Z_][a-zA-Z0-9_]*)",
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +        ),
        +        1 => array(
        +            GESHI_SEARCH => "\.([a-zA-Z_][a-zA-Z0-9_]*)",
        +            GESHI_REPLACE => '.\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +        ),
        +    ),
        +    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
        +    'SCRIPT_DELIMITERS' => array(
        +        0 => array(
        +            '{{' => '}}',
        +            '{%' => '%}'
        +        ),
        +        1 => array(
        +            '{#' => '#}',
        +        )
        +    ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => true,
        +        1 => true,
        +        2 => true
        +    ),
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array()
        +    )
        +);
        diff --git a/includes/geshi/typoscript.php b/includes/geshi/typoscript.php
        new file mode 100644
        index 0000000..c548866
        --- /dev/null
        +++ b/includes/geshi/typoscript.php
        @@ -0,0 +1,298 @@
        + Complete rewrite
        + * 2005/07/29 (1.0.0)
        + *  -  First Release
        + *
        + * TODO (updated 2004/07/14)
        + * -------------------------
        + * 
        + *
        + *************************************************************************************
        + *
        + *     This file is part of GeSHi.
        + *
        + *   GeSHi is free software; you can redistribute it and/or modify
        + *   it under the terms of the GNU General Public License as published by
        + *   the Free Software Foundation; either version 2 of the License, or
        + *   (at your option) any later version.
        + *
        + *   GeSHi is distributed in the hope that it will be useful,
        + *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + *   GNU General Public License for more details.
        + *
        + *   You should have received a copy of the GNU General Public License
        + *   along with GeSHi; if not, write to the Free Software
        + *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        + *
        + ************************************************************************************/
        +
        +$language_data = array (
        +    'LANG_NAME' => 'TypoScript',
        +    'COMMENT_SINGLE' => array(1  => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(2 => '/(? GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        // Conditions: http://documentation.typo3.org/documentation/tsref/conditions/
        +        1 => array(
        +            'browser', 'compatVersion', 'dayofmonth', 'dayofweek', 'device',
        +            'globalString', 'globalVars', 'hostname', 'hour',
        +            'ip', 'language', 'loginUser', 'loginuser', 'minute',
        +            'month', 'PIDinRootline', 'PIDupinRootline',
        +            'system', 'treelevel', 'useragent', 'userFunc',
        +            'usergroup', 'version'
        +            ),
        +
        +        // Functions: http://documentation.typo3.org/documentation/tsref/functions/
        +        2 => array(
        +            'addParams', 'encapsLines', 'filelink', 'HTMLparser',
        +            'HTMLparser_tags', 'if', 'imageLinkWrap',
        +            'imgResource', 'makelinks', 'numRows', 'parseFunc',
        +            'select', 'split', 'stdWrap', 'tableStyle', 'tags',
        +            'textStyle', 'typolink'
        +            ),
        +
        +        // Toplevel objects: http://documentation.typo3.org/documentation/tsref/tlo-objects/
        +        3 => array(
        +            'CARRAY', 'CONFIG', 'CONSTANTS', 'FE_DATA', 'FE_TABLE', 'FRAME',
        +            'FRAMESET', 'META', 'PAGE', 'plugin'
        +            ),
        +
        +        // Content Objects (cObject) : http://documentation.typo3.org/documentation/tsref/cobjects/
        +        4 => array(
        +            'CASE', 'CLEARGIF', 'COA', 'COA_INT', 'COBJ_ARRAY', 'COLUMNS',
        +            'CONTENT', 'CTABLE', 'EDITPANEL', 'FILE', 'FORM',
        +            'HMENU', 'HRULER', 'HTML', 'IMAGE', 'IMGTEXT',
        +            'IMG_RESOURCE', 'LOAD_REGISTER', 'MULTIMEDIA',
        +            'OTABLE', 'PHP_SCRIPT', 'PHP_SCRIPT_EXT',
        +            'PHP_SCRIPT_INT', 'RECORDS', 'RESTORE_REGISTER',
        +            'SEARCHRESULT', 'TEMPLATE', 'TEXT', 'USER',
        +            'USER_INT'
        +            ),
        +
        +        // GIFBUILDER toplevel link: http://documentation.typo3.org/documentation/tsref/gifbuilder/
        +        5 => array(
        +            'GIFBUILDER',
        +            ),
        +
        +        // GIFBUILDER: http://documentation.typo3.org/documentation/tsref/gifbuilder/
        +        // skipped fields: IMAGE, TEXT
        +        // NOTE! the IMAGE and TEXT field already are linked in group 4, they
        +        // cannot be linked twice . . . . unfortunately
        +        6 => array(
        +            'ADJUST', 'BOX', 'CROP', 'EFFECT', 'EMBOSS',
        +            'IMGMAP', 'OUTLINE', 'SCALE', 'SHADOW',
        +            'WORKAREA'
        +            ),
        +
        +        // MENU Objects: http://documentation.typo3.org/documentation/tsref/menu/
        +        7 => array(
        +            'GMENU', 'GMENU_FOLDOUT', 'GMENU_LAYERS', 'IMGMENU',
        +            'IMGMENUITEM', 'JSMENU', 'JSMENUITEM', 'TMENU',
        +            'TMENUITEM', 'TMENU_LAYERS'
        +            ),
        +
        +        // MENU common properties: http://documentation.typo3.org/documentation/tsref/menu/common-properties/
        +        8 => array(
        +            'alternativeSortingField', 'begin', 'debugItemConf',
        +            'imgNameNotRandom', 'imgNamePrefix',
        +            'itemArrayProcFunc', 'JSWindow', 'maxItems',
        +            'minItems', 'overrideId', 'sectionIndex',
        +            'showAccessRestrictedPages', 'submenuObjSuffixes'
        +            ),
        +
        +        // MENU item states: http://documentation.typo3.org/documentation/tsref/menu/item-states/
        +        9 => array(
        +            'ACT', 'ACTIFSUB', 'ACTIFSUBRO', 'ACTRO', 'CUR', 'CURIFSUB',
        +            'CURIFSUBRO', 'CURRO', 'IFSUB', 'IFSUBRO', 'NO',
        +            'SPC', 'USERDEF1', 'USERDEF1RO', 'USERDEF2',
        +            'USERDEF2RO', 'USR', 'USRRO'
        +            ),
        +        ),
        +
        +    // Does not include '-' because of stuff like htmlTag_langKey = en-GB and
        +    // lib.nav-sub
        +    'SYMBOLS' => array(
        +        0 => array(
        +            '|',
        +            '+', '*', '/', '%',
        +            '!', '&&', '^',
        +            '<', '>', '=',
        +            '?', ':',
        +            '.'
        +            ),
        +        1 => array(
        +            '(', ')', '{', '}', '[', ']'
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true,
        +        8 => true,
        +        9 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #ed7d14;',
        +            2 => 'font-weight: bold;',
        +            3 => 'color: #990000; font-weight: bold;',
        +            4 => 'color: #990000; font-weight: bold;',
        +            5 => 'color: #990000; font-weight: bold;',
        +            6 => 'color: #990000; font-weight: bold;',
        +            7 => 'color: #990000; font-weight: bold;',
        +            8 => 'font-weight: bold;',
        +            9 => 'color: #990000; font-weight: bold;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #aaa; font-style: italic;',
        +            2 => 'color: #aaa; font-style: italic;',
        +            'MULTI' => 'color: #aaa; font-style: italic;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ac14aa;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc0000;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #0000e0; font-weight: bold;',
        +            2 => 'color: #0000e0; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933; font-weight: bold;',
        +                // Set this to the same value as brackets above
        +            1 => 'color: #009900; font-weight: bold;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #009900;',
        +            1 => 'color: #009900; font-weight: bold;',
        +            2 => 'color: #3366CC;',
        +            3 => 'color: #000066; font-weight: bold;',
        +            4 => 'color: #ed7d14;',
        +            5 => 'color: #000066; font-weight: bold;',
        +            6 => 'color: #009900;',
        +            7 => 'color: #3366CC;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => 'http://documentation.typo3.org/documentation/tsref/conditions/{FNAME}/',
        +        2 => 'http://documentation.typo3.org/documentation/tsref/functions/{FNAME}/',
        +        3 => 'http://documentation.typo3.org/documentation/tsref/tlo-objects/{FNAME}/',
        +        4 => 'http://documentation.typo3.org/documentation/tsref/cobjects/{FNAME}/',
        +        5 => 'http://documentation.typo3.org/documentation/tsref/gifbuilder/',
        +        6 => 'http://documentation.typo3.org/documentation/tsref/gifbuilder/{FNAME}/',
        +        7 => 'http://documentation.typo3.org/documentation/tsref/menu/{FNAME}/',
        +        8 => 'http://documentation.typo3.org/documentation/tsref/menu/common-properties/',
        +        9 => 'http://documentation.typo3.org/documentation/tsref/menu/item-states/'
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +            // xhtml tag
        +        2 => array(
        +            GESHI_SEARCH => '(<)([a-zA-Z\\/][^\\/\\\x7C]*?)(>)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 's',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3'
        +            ),
        +
        +            // Constant
        +        0 => array(
        +            GESHI_SEARCH => '(\{)(\$[a-zA-Z_\.]+[a-zA-Z0-9_\.]*)(\})',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => '\\3'
        +            ),
        +
        +            // Constant dollar sign
        +        1 => array(
        +            GESHI_SEARCH => '(\$)([a-zA-Z_\.]+[a-zA-Z0-9_\.]*)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => '\\2'
        +            ),
        +
        +            // extension keys / tables: (static|user|ttx|tx|tt|fe)_something[_something]
        +        3 => array(
        +            GESHI_SEARCH => '(plugin\.|[^\.]\b)((?:static|user|ttx|tx|tt|fe)(?:_[0-9A-Za-z_]+?)\b)',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +            ),
        +
        +            // conditions and controls
        +        4 => array(
        +            GESHI_SEARCH => '(\[)(globalVar|global|end)\b',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => 'i',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +            ),
        +
        +            // lowlevel setup and constant objects
        +        5 => array(
        +            GESHI_SEARCH => '([^\.\$-\{]\b)(cObj|field|config|content|file|frameset|includeLibs|lib|page|plugin|register|resources|sitemap|sitetitle|styles|temp|tt_content|tt_news|types|xmlnews)\b',
        +            GESHI_REPLACE => '\\2',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '\\1',
        +            GESHI_AFTER => ''
        +            ),
        +
        +            // markers
        +        6 => array(
        +            GESHI_SEARCH => '(###[^#]+###)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +
        +            // hex color codes
        +        7 => array(
        +            GESHI_SEARCH => '(#[a-fA-F0-9]{6}\b|#[a-fA-F0-9]{3}\b)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            )
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/unicon.php b/includes/geshi/unicon.php
        new file mode 100644
        index 0000000..7bc377b
        --- /dev/null
        +++ b/includes/geshi/unicon.php
        @@ -0,0 +1,208 @@
        + 'Unicon (Unified Extended Dialect of Icon)',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"', '\''),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'break', 'case', 'class', 'continue', 'create', 'default', 'do',
        +            'else', 'end', 'every', 'fail', 'for', 'if', 'import', 'initial', 'initially',
        +            'invocable', 'link', 'method', 'next', 'not', 'of', 'package', 'procedure', 'record',
        +            'repeat', 'return', 'switch', 'suspend', 'then', 'to', 'until', 'while'
        +            ),
        +        2 => array(
        +            'global', 'local', 'static'
        +            ),
        +        3 => array(
        +            'allocated', 'ascii', 'clock', 'collections',
        +            'column', 'cset', 'current', 'date', 'dateline', 'digits',
        +            'dump', 'e', 'error', 'errornumber', 'errortext',
        +            'errorvalue', 'errout', 'eventcode', 'eventsource', 'eventvalue',
        +            'fail', 'features', 'file', 'host', 'input', 'lcase',
        +            'letters', 'level', 'line', 'main', 'now', 'null',
        +            'output', 'phi', 'pi', 'pos', 'progname', 'random',
        +            'regions', 'source', 'storage', 'subject', 'syserr', 'time',
        +            'trace', 'ucase', 'version', 'col', 'control', 'interval',
        +            'ldrag', 'lpress', 'lrelease', 'mdrag', 'meta', 'mpress',
        +            'mrelease', 'rdrag', 'resize', 'row', 'rpress', 'rrelease',
        +            'shift', 'window', 'x', 'y'
        +            ),
        +        4 => array(
        +            'abs', 'acos', 'any', 'args', 'asin', 'atan', 'bal', 'center', 'char',
        +            'chmod', 'close', 'cofail', 'collect', 'copy', 'cos', 'cset', 'ctime', 'dbcolumns',
        +            'dbdriver', 'dbkeys', 'dblimits', 'dbproduction', 'dbtables', 'delay', 'delete', 'detab',
        +            'display', 'dtor', 'entab', 'errorclear', 'event', 'eventmask', 'EvGet', 'exit', 'exp',
        +            'fetch', 'fieldnames', 'find', 'flock', 'flush', 'function', 'get', 'getch', 'getche',
        +            'getenv', 'gettimeofday', 'globalnames', 'gtime', 'iand', 'icom', 'image', 'insert',
        +            'integer', 'ior', 'ishift', 'ixor', 'key', 'left', 'list', 'load', 'loadfunc',
        +            'localnames', 'log', 'many', 'map', 'match', 'member', 'mkdir', 'move', 'name', 'numeric',
        +            'open', 'opmask', 'ord', 'paramnames', 'parent', 'pipe', 'pop', 'pos', 'proc', 'pull',
        +            'push', 'put', 'read', 'reads', 'real', 'receive', 'remove', 'rename', 'repl', 'reverse',
        +            'right', 'rmdir', 'rtod', 'runerr', 'seek', 'select', 'send', 'seq', 'serial', 'set',
        +            'setenv', 'sort', 'sortf', 'sql', 'sqrt', 'stat', 'staticnames', 'stop', 'string', 'system', 'tab',
        +            'table', 'tan', 'trap', 'trim', 'truncate', 'type', 'upto', 'utime', 'variable', 'where',
        +            'write', 'writes'
        +            ),
        +        5 => array(
        +            'Active', 'Alert', 'Bg', 'Clip', 'Clone', 'Color', 'ColorValue',
        +            'CopyArea', 'Couple', 'DrawArc', 'DrawCircle', 'DrawCurve', 'DrawCylinder', 'DrawDisk',
        +            'DrawImage', 'DrawLine', 'DrawPoint', 'DrawPolygon', 'DrawRectangle', 'DrawSegment',
        +            'DrawSphere', 'DrawString', 'DrawTorus', 'EraseArea', 'Event', 'Fg', 'FillArc',
        +            'FillCircle', 'FillPolygon', 'FillRectangle', 'Font', 'FreeColor', 'GotoRC', 'GotoXY',
        +            'IdentifyMatrix', 'Lower', 'MatrixMode', 'NewColor', 'PaletteChars', 'PaletteColor',
        +            'PaletteKey', 'Pattern', 'Pending', 'Pixel', 'PopMatrix', 'PushMatrix', 'PushRotate',
        +            'PushScale', 'PushTranslate', 'QueryPointer', 'Raise', 'ReadImage', 'Refresh', 'Rotate',
        +            'Scale', 'Texcoord', 'TextWidth', 'Texture', 'Translate', 'Uncouple', 'WAttrib',
        +            'WDefault', 'WFlush', 'WindowContents', 'WriteImage', 'WSync'
        +            ),
        +        6 => array(
        +            'define', 'include', 'ifdef', 'ifndef', 'else', 'endif', 'error',
        +            'line', 'undef'
        +            ),
        +        7 => array(
        +            '_V9', '_AMIGA', '_ACORN', '_CMS', '_MACINTOSH', '_MSDOS_386',
        +            '_MS_WINDOWS_NT', '_MSDOS', '_MVS', '_OS2', '_POR', 'T', '_UNIX', '_POSIX', '_DBM',
        +            '_VMS', '_ASCII', '_EBCDIC', '_CO_EXPRESSIONS', '_CONSOLE_WINDOW', '_DYNAMIC_LOADING',
        +            '_EVENT_MONITOR', '_EXTERNAL_FUNCTIONS', '_KEYBOARD_FUNCTIONS', '_LARGE_INTEGERS',
        +            '_MULTITASKING', '_PIPES', '_RECORD_IO', '_SYSTEM_FUNCTION', '_MESSAGING', '_GRAPHICS',
        +            '_X_WINDOW_SYSTEM', '_MS_WINDOWS', '_WIN32', '_PRESENTATION_MGR', '_ARM_FUNCTIONS',
        +            '_DOS_FUNCTIONS'
        +            ),
        +        8 => array(
        +            'line')
        +        ),
        +    'SYMBOLS' => array(
        +        1 => array(
        +            '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '\\', '%', '=', '<', '>', '!', '^',
        +            '&', '|', '?', ':', ';', ',', '.', '~', '@'
        +            ),
        +        2 => array(
        +            '$(', '$)', '$<', '$>'
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        5 => true,
        +        6 => true,
        +        7 => true,
        +        8 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #b1b100;',
        +            3 => 'color: #b1b100;',
        +            4 => 'color: #b1b100;',
        +            5 => 'color: #b1b100;',
        +            6 => 'color: #b1b100;',
        +            7 => 'color: #b1b100;',
        +            8 => 'color: #b1b100;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;',
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #004000;'
        +            ),
        +        'SYMBOLS' => array(
        +            1 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(),
        +        'SCRIPT' => array()
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => '',
        +        7 => '',
        +        8 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(1 => '.'),
        +    'REGEXPS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(),
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            3 => array(
        +                'DISALLOWED_BEFORE' => '(?<=&)'
        +                ),
        +            4 => array(
        +                'DISALLOWED_BEFORE' => "(? "(?![a-zA-Z0-9_\"\'])"
        +                ),
        +            6 => array(
        +                'DISALLOWED_BEFORE' => '(?<=\$)'
        +                ),
        +            8 => array(
        +                'DISALLOWED_BEFORE' => '(?<=#)'
        +                )
        +            )
        +        )
        +);
        diff --git a/includes/geshi/upc.php b/includes/geshi/upc.php
        new file mode 100644
        index 0000000..b1e873e
        --- /dev/null
        +++ b/includes/geshi/upc.php
        @@ -0,0 +1,268 @@
        + 'UPC',
        +    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        //Multiline-continued single-line comments
        +        1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m',
        +        //Multiline-continued preprocessor define
        +        2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m'
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'ESCAPE_REGEXP' => array(
        +        //Simple Single Char Escapes
        +        1 => "#\\\\[\\\\abfnrtv\'\"?\n]#i",
        +        //Hexadecimal Char Specs
        +        2 => "#\\\\x[\da-fA-F]{2}#",
        +        //Hexadecimal Char Specs
        +        3 => "#\\\\u[\da-fA-F]{4}#",
        +        //Hexadecimal Char Specs
        +        4 => "#\\\\U[\da-fA-F]{8}#",
        +        //Octal Char Specs
        +        5 => "#\\\\[0-7]{1,3}#"
        +        ),
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |
        +        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
        +        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'if', 'return', 'while', 'case', 'continue', 'default',
        +            'do', 'else', 'for', 'switch', 'goto',
        +
        +            'upc_forall', 'upc_barrier', 'upc_notify', 'upc_wait', 'upc_fence'
        +            ),
        +        2 => array(
        +            'null', 'false', 'break', 'true', 'function', 'enum', 'extern', 'inline'
        +            ),
        +        3 => array(
        +            // assert.h
        +            'assert',
        +
        +            //complex.h
        +            'cabs', 'cacos', 'cacosh', 'carg', 'casin', 'casinh', 'catan',
        +            'catanh', 'ccos', 'ccosh', 'cexp', 'cimag', 'cis', 'clog', 'conj',
        +            'cpow', 'cproj', 'creal', 'csin', 'csinh', 'csqrt', 'ctan', 'ctanh',
        +
        +            //ctype.h
        +            'digittoint', 'isalnum', 'isalpha', 'isascii', 'isblank', 'iscntrl',
        +            'isdigit', 'isgraph', 'islower', 'isprint', 'ispunct', 'isspace',
        +            'isupper', 'isxdigit', 'toascii', 'tolower', 'toupper',
        +
        +            //inttypes.h
        +            'imaxabs', 'imaxdiv', 'strtoimax', 'strtoumax', 'wcstoimax',
        +            'wcstoumax',
        +
        +            //locale.h
        +            'localeconv', 'setlocale',
        +
        +            //math.h
        +            'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'exp',
        +            'fabs', 'floor', 'frexp', 'ldexp', 'log', 'log10', 'modf', 'pow',
        +            'sin', 'sinh', 'sqrt', 'tan', 'tanh',
        +
        +            //setjmp.h
        +            'longjmp', 'setjmp',
        +
        +            //signal.h
        +            'raise',
        +
        +            //stdarg.h
        +            'va_arg', 'va_copy', 'va_end', 'va_start',
        +
        +            //stddef.h
        +            'offsetof',
        +
        +            //stdio.h
        +            'clearerr', 'fclose', 'fdopen', 'feof', 'ferror', 'fflush', 'fgetc',
        +            'fgetpos', 'fgets', 'fopen', 'fprintf', 'fputc', 'fputchar',
        +            'fputs', 'fread', 'freopen', 'fscanf', 'fseek', 'fsetpos', 'ftell',
        +            'fwrite', 'getc', 'getch', 'getchar', 'gets', 'perror', 'printf',
        +            'putc', 'putchar', 'puts', 'remove', 'rename', 'rewind', 'scanf',
        +            'setbuf', 'setvbuf', 'snprintf', 'sprintf', 'sscanf', 'tmpfile',
        +            'tmpnam', 'ungetc', 'vfprintf', 'vfscanf', 'vprintf', 'vscanf',
        +            'vsprintf', 'vsscanf',
        +
        +            //stdlib.h
        +            'abort', 'abs', 'atexit', 'atof', 'atoi', 'atol', 'bsearch',
        +            'calloc', 'div', 'exit', 'free', 'getenv', 'itoa', 'labs', 'ldiv',
        +            'ltoa', 'malloc', 'qsort', 'rand', 'realloc', 'srand', 'strtod',
        +            'strtol', 'strtoul', 'system',
        +
        +            //string.h
        +            'memchr', 'memcmp', 'memcpy', 'memmove', 'memset', 'strcat',
        +            'strchr', 'strcmp', 'strcoll', 'strcpy', 'strcspn', 'strerror',
        +            'strlen', 'strncat', 'strncmp', 'strncpy', 'strpbrk', 'strrchr',
        +            'strspn', 'strstr', 'strtok', 'strxfrm',
        +
        +            //time.h
        +            'asctime', 'clock', 'ctime', 'difftime', 'gmtime', 'localtime',
        +            'mktime', 'strftime', 'time',
        +
        +            //wchar.h
        +            'btowc', 'fgetwc', 'fgetws', 'fputwc', 'fputws', 'fwide',
        +            'fwprintf', 'fwscanf', 'getwc', 'getwchar', 'mbrlen', 'mbrtowc',
        +            'mbsinit', 'mbsrtowcs', 'putwc', 'putwchar', 'swprintf', 'swscanf',
        +            'ungetwc', 'vfwprintf', 'vswprintf', 'vwprintf', 'wcrtomb',
        +            'wcscat', 'wcschr', 'wcscmp', 'wcscoll', 'wcscpy', 'wcscspn',
        +            'wcsftime', 'wcslen', 'wcsncat', 'wcsncmp', 'wcsncpy', 'wcspbrk',
        +            'wcsrchr', 'wcsrtombs', 'wcsspn', 'wcsstr', 'wcstod', 'wcstok',
        +            'wcstol', 'wcstoul', 'wcsxfrm', 'wctob', 'wmemchr', 'wmemcmp',
        +            'wmemcpy', 'wmemmove', 'wmemset', 'wprintf', 'wscanf',
        +
        +            //wctype.h
        +            'iswalnum', 'iswalpha', 'iswcntrl', 'iswctype', 'iswdigit',
        +            'iswgraph', 'iswlower', 'iswprint', 'iswpunct', 'iswspace',
        +            'iswupper', 'iswxdigit', 'towctrans', 'towlower', 'towupper',
        +            'wctrans', 'wctype'
        +            ),
        +        4 => array(
        +            'auto', 'char', 'const', 'double',  'float', 'int', 'long',
        +            'register', 'short', 'signed', 'sizeof', 'static', 'struct',
        +            'typedef', 'union', 'unsigned', 'void', 'volatile', 'wchar_t',
        +
        +            'int8', 'int16', 'int32', 'int64',
        +            'uint8', 'uint16', 'uint32', 'uint64',
        +
        +            'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t',
        +            'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',
        +
        +            'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t',
        +            'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t',
        +
        +            'int8_t', 'int16_t', 'int32_t', 'int64_t',
        +            'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t',
        +
        +            'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t',
        +            'size_t', 'off_t',
        +
        +            'upc_lock_t', 'shared', 'strict', 'relaxed', 'upc_blocksizeof',
        +            'upc_localsizeof', 'upc_elemsizeof'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '[', ']',
        +        '+', '-', '*', '/', '%',
        +        '=', '<', '>',
        +        '!', '^', '&', '|',
        +        '?', ':',
        +        ';', ','
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            3 => 'color: #000066;',
        +            4 => 'color: #993333;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            2 => 'color: #339933;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            1 => 'color: #000099; font-weight: bold;',
        +            2 => 'color: #660099; font-weight: bold;',
        +            3 => 'color: #660099; font-weight: bold;',
        +            4 => 'color: #660099; font-weight: bold;',
        +            5 => 'color: #006699; font-weight: bold;',
        +            'HARD' => '',
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #0000dd;',
        +            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',
        +            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',
        +            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',
        +            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',
        +            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #202020;',
        +            2 => 'color: #202020;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAMEL}.html',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.',
        +        2 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/urbi.php b/includes/geshi/urbi.php
        new file mode 100644
        index 0000000..ec2aec4
        --- /dev/null
        +++ b/includes/geshi/urbi.php
        @@ -0,0 +1,198 @@
        + 'Urbi',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        //Multiline-continued single-line comments
        +        1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m',
        +        //Multiline-continued preprocessor define
        +        2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m',
        +        // Urbi warning.
        +        3 => "#\[[0-9a-f]{8}:warning\].*#",
        +        // Urbi message from echo.
        +        4 => '#\[[0-9a-f]{8}\] \*\*\*.*#',
        +        // Urbi error message.
        +        6 => '#\[[0-9a-f]{8}:error\].*#',
        +        // Urbi system message.
        +        5 => '#\[00.*\].*#',
        +        // Nested comment. Max depth 4.
        +        7 => '#\/\*(.|\n)*\/\*(.|\n)*\*\/(.|\n)*\*\/#',
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array(
        +        0 => '"',
        +        1 => '\'',
        +        ),
        +    // For Urbi, disable escape char is better.
        +    'ESCAPE_CHAR' => '\\',
        +    'ESCAPE_REGEXP' => array(
        +        //Simple Single Char Escapes
        +        1 => "#\\\\[abfnrtv\\\'\"?\n]#",
        +        //Hexadecimal Char Specs
        +        2 => "#\\\\x[\da-fA-F]{2}#",
        +        //Hexadecimal Char Specs
        +        3 => "#\\\\u[\da-fA-F]{4}#",
        +        //Hexadecimal Char Specs
        +        4 => "#\\\\U[\da-fA-F]{8}#",
        +        //Octal Char Specs
        +        5 => "#\\\\[0-7]{1,3}#",
        +        ),
        +    'NUMBERS' =>
        +        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |
        +        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |
        +        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,
        +    'KEYWORDS' => array(
        +        // Condition keywords.
        +        1 => array(
        +            'at', 'at;', 'at|', 'at&', 'at,', 'break', 'call', 'case', 'catch', 'continue',
        +            'do', 'else', 'every', 'every&', 'every,', 'every;', 'every|', 'for', 'for&',
        +            'for,', 'for;', 'foreach', 'for|', 'freezeif', 'goto', 'if', 'in', 'loop',
        +            'loop&', 'loop,', 'loop;', 'loop|', 'or_eq', 'stopif', 'switch', 'try',
        +            'waituntil', 'when', 'whenever', 'while', 'while&', 'while,', 'while;',
        +            'while|', 'throw', 'onleave', 'watch', 'return', 'and_eq', 'default', 'finally',
        +            'timeout', 'xor_eq'
        +            ),
        +        // Type.
        +        2 => array(
        +            'virtual', 'using', 'namespace', 'inline', 'protected', 'private', 'public',
        +            'typename', 'typeid', 'class', 'const_cast', 'dynamic_cast', 'friend',
        +            'template', 'enum', 'static_cast', 'reinterpret_cast', 'mutable', 'explicit'
        +            ),
        +        // Standard function.
        +        3 => array(
        +            'this', 'sizeof', 'delete', 'assert', 'isdef', 'compl', 'detach',
        +            'disown', '__HERE__', 'asm'
        +            ),
        +        // Type.
        +        4 => array(
        +            'char', 'const', 'double', 'int', 'long', 'typedef', 'union',
        +            'unsigned', 'var', 'short', 'wchar_t', 'volatile', 'signed', 'bool',
        +            'float', 'struct', 'auto', 'register', 'static', 'extern', 'function',
        +            'export', 'external', 'internal', 'closure', 'BIN'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        0 => array('(', ')', '{', '}', '[', ']'),
        +        1 => array('<', '>','=', '!=', '==', '==='),
        +        2 => array('+', '-', '*', '/', '%', 'bitand', 'bitor', 'xor'),
        +        3 => array('!', '^', '&', '|'),
        +        4 => array('?', ':', ';')
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000ff;',
        +            2 => 'color: #0000ff;',
        +            3 => 'color: #0000dd;',
        +            4 => 'color: #0000ff;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666;',
        +            2 => 'color: #339900;',
        +            3 => 'color: #d46b0f;',
        +            4 => 'color: #20b537;',
        +            5 => 'color: #73776f;',
        +            6 => 'color: #a71616;',
        +            7 => 'color: #666666;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #ff0000;',
        +            1 => 'color: #ff0000;',
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #7a0874; font-weight: bold;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;',
        +            1 => 'color: #007788;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #0000dd;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #007788;',
        +            2 => 'color: #007788;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #008000;',
        +            1 => 'color: #0000f8;',
        +            2 => 'color: #000040;',
        +            3 => 'color: #000040; font-weight: bold;',
        +            4 => 'color: #008080;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #0000dd',
        +            1 => 'color: #0000dd;',
        +            2 => 'color: #0000dd;',
        +            3 => 'color: #0000dd;',
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.',
        +        2 => '::',
        +        // FIXME: add -> splitter.
        +        ),
        +    'REGEXPS' => array(
        +        0 => '0x[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])*',
        +        1 => '[0-9]([0-9_]*[0-9])*(e|E)(-|\+)?[0-9]([0-9_]*[0-9])*',
        +        2 => '[0-9]([0-9_]*[0-9])*(min|s|ms|h|d)',
        +        3 => '[0-9]+_([0-9_])*[0-9]',
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +);
        diff --git a/includes/geshi/uscript.php b/includes/geshi/uscript.php
        new file mode 100644
        index 0000000..f76a2dc
        --- /dev/null
        +++ b/includes/geshi/uscript.php
        @@ -0,0 +1,297 @@
        + 'Unreal Script',
        +    'COMMENT_SINGLE' => array(
        +            1 => '//',
        +            2 => '#'
        +            ),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(        //declaration keywords
        +            'simulated', 'state', 'class', 'function', 'event', 'var', 'local',
        +            'ignores', 'globalconfig', 'config', 'abstract', 'nativereplication', 'native',
        +            'auto', 'coerce', 'const', 'default',
        +            'defaultproperties',
        +            'enum', 'extends', 'expands', 'final', 'guid', 'latent', 'localized',
        +            'new', 'noexport', 'operator', 'preoperator', 'optional', 'out',
        +            'private', 'public', 'protected', 'reliable', 'replication',
        +            'singular', 'static', 'struct', 'transient', 'unreliable',
        +            'hidedropdown', 'cacheexempt', 'exec', 'delegate', 'import', 'placeable', 'exportstructs'
        +            ),
        +        2 => array(        //control flow keywords
        +            'for', 'while', 'do', 'if', 'else', 'switch', 'case', 'return', 'break', 'continue',
        +            'begin', 'loop', 'assert',
        +            'foreach', 'AllActors', 'DynamicActors', 'ChildActors', 'BasedActors', 'TouchingActors',
        +            'TraceActors', 'RadiusActors', 'VisibleActors', 'CollidingActors', 'VisibleCollidingActors'
        +            ),
        +        3 => array(        //global (object) functions
        +            'log', 'warn', 'rot', 'vect', 'Rand', 'Min', 'Max', 'Clamp', 'Abs', 'Sin', 'ASin',
        +            'Cos', 'ACos', 'Tan', 'ATan', 'Exp', 'Loge', 'Sqrt', 'Square', 'FRand', 'FMin', 'FMax', 'FClamp',
        +            'Lerp', 'Smerp', 'Ceil', 'Round', 'VSize', 'Normal', 'Invert', 'VRand', 'MirrorVectorByNormal',
        +            'GetAxes', 'GetUnAxes', 'RotRand', 'OrthoRotation', 'Normalize', 'ClockwiseFrom',
        +            'Len', 'InStr', 'Mid', 'Left', 'Right', 'Caps', 'Chr', 'Asc', 'Locs',
        +            'Divide', 'Split', 'StrCmp', 'Repl', 'Eval',
        +            'InterpCurveEval', 'InterpCurveGetOutputRange', 'InterpCurveGetInputDomain',
        +            'QuatProduct', 'QuatInvert', 'QuatRotateVector', 'QuatFindBetween', 'QuatFromAxisAndAngle',
        +            'QuatFromRotator', 'QuatToRotator', 'QuatSlerp',
        +            'Localize', 'GotoState', 'IsInState', 'GetStateName',
        +            'ClassIsChildOf', 'IsA', 'Enable', 'Disable',
        +            'GetPropertyText', 'SetPropertyText', 'GetEnum', 'DynamicLoadObject', 'FindObject',
        +            'SaveConfig', 'ClearConfig', 'StaticSaveConfig', 'ResetConfig', 'StaticClearConfig',
        +            'GetPerObjectNames', 'RandRange', 'StopWatch', 'IsOnConsole', 'IsSoaking',
        +            'PlatformIsMacOS', 'PlatformIsUnix', 'PlatformIsWindows', 'PlatformIs64Bit',
        +            'BeginState', 'EndState', 'Created', 'AllObjects', 'GetReferencers', 'GetItemName',
        +            'ReplaceText', 'EatStr'
        +            ),
        +        4 => array(        //common almost-global (actor) functions
        +            'ClientMessage', 'ConsoleCommand', 'CopyObjectToClipboard', 'TextToSpeech',
        +            'Error', 'Sleep', 'SetCollision', 'SetCollisionSize', 'SetDrawScale', 'SetDrawScale3D',
        +            'SetStaticMesh', 'SetDrawType', 'Move', 'SetLocation', 'SetRotation',
        +            'SetRelativeLocation', 'SetRelativeRotation', 'MoveSmooth', 'AutonomousPhysics',
        +            'SetBase', 'SetOwner', 'IsJoinedTo', 'GetMeshName', 'PlayAnim', 'LoopAnim', 'TweenAnim',
        +            'IsAnimating', 'FinishAnim', 'HasAnim', 'StopAnimating', 'FreezeFrameAt', 'SetAnimFrame',
        +            'IsTweening', 'AnimStopLooping', 'AnimEnd', 'LinkSkelAnim', 'LinkMesh', 'BoneRefresh',
        +            'GetBoneCoords', 'GetBoneRotation', 'GetRootLocation', 'GetRootRotation', 'AttachToBone',
        +            'DetachFromBone', 'SetBoneScale', 'UpdateURL', 'GetURLOption', 'SetPhysics', 'KAddImpulse',
        +            'KImpact', 'KApplyForce', 'Clock', 'UnClock', 'Destroyed', 'GainedChild', 'LostChild',
        +            'Tick', 'PostNetReceive', 'ClientTrigger', 'Trigger', 'UnTrigger', 'BeginEvent', 'EndEvent',
        +            'Timer', 'HitWall', 'Falling', 'Landed', 'ZoneChange', 'PhysicsVolumeChange', 'Touch',
        +            'PostTouch', 'UnTouch', 'Bump', 'BaseChange', 'Attach', 'Detach', 'SpecialHandling',
        +            'EncroachingOn', 'EncroachedBy', 'RanInto', 'FinishedInterpolation', 'EndedRotation',
        +            'UsedBy', 'FellOutOfWorld', 'KilledBy', 'TakeDamage', 'HealDamage', 'Trace', 'FastTrace',
        +            'TraceThisActor', 'spawn', 'Destroy', 'TornOff', 'SetTimer', 'PlaySound', 'PlayOwnedSound',
        +            'GetSoundDuration', 'MakeNoise', 'BeginPlay', 'GetAllInt', 'RenderOverlays', 'RenderTexture',
        +            'PreBeginPlay', 'PostBeginPlay', 'PostNetBeginPlay', 'HurtRadius', 'Reset', 'Crash'
        +            ),
        +        5 => array(        //data types
        +            'none', 'null',
        +            'float', 'int', 'bool', 'byte', 'char', 'double', 'iterator', 'name', 'string',    //primitive
        +            'plane', 'rotator', 'vector', 'spline',    'coords', 'Quat', 'Range', 'RangeVector', //structs
        +            'Scale', 'Color', 'Box', 'IntBox', 'FloatBox', 'BoundingVolume', 'Matrix', 'InterpCurvePoint',
        +            'InterpCurve', 'CompressedPosition', 'TMultiMap', 'PointRegion',
        +            'KRigidBodyState', 'KSimParams', 'AnimRep', 'FireProperties',
        +            'lodmesh', 'skeletalmesh', 'mesh', 'StaticMesh', 'MeshInstance',    //3d resources
        +            'sound',    //sound resources
        +            'material', 'texture', 'combiner', 'modifier', 'ColorModifier', 'FinalBlend',    //2d resources
        +            'MaterialSequence', 'MaterialSwitch', 'OpacityModifier', 'TexModifier', 'TexEnvMap',
        +            'TexCoordSource', 'TexMatrix', 'TexOscillator', 'TexPanner', 'TexRotator', 'TexScaler',
        +            'RenderedMaterial', 'BitmapMaterial', 'ScriptedTexture', 'ShadowBitmapMaterial', 'Cubemap',
        +            'FractalTexture', 'FireTexture', 'IceTexture', 'WaterTexture', 'FluidTexture', 'WaveTexture',
        +            'WetTexture', 'ConstantMaterial', 'ConstantColor', 'FadeColor', 'ParticleMaterial',
        +            'ProjectorMaterial', 'Shader', 'TerrainMaterial', 'VertexColor'
        +            ),
        +        6 => array(        //misc keywords
        +            'false', 'true', 'self', 'super', 'MaxInt', 'Pi'
        +            ),
        +        7 => array(        //common actor enums & variables
        +            'DT_None', 'DT_Sprite', 'DT_Mesh', 'DT_Brush', 'DT_RopeSprite',
        +            'DT_VerticalSprite', 'DT_TerraForm', 'DT_SpriteAnimOnce', 'DT_StaticMesh', 'DT_DrawType',
        +            'DT_Particle', 'DT_AntiPortal', 'DT_FluidSurface',
        +            'PHYS_None', 'PHYS_Walking', 'PHYS_Falling', 'PHYS_Swimming', 'PHYS_Flying',
        +            'PHYS_Rotating', 'PHYS_Projectile', 'PHYS_Interpolating', 'PHYS_MovingBrush', 'PHYS_Spider',
        +            'PHYS_Trailer', 'PHYS_Ladder', 'PHYS_RootMotion', 'PHYS_Karma', 'PHYS_KarmaRagDoll',
        +            'PHYS_Hovering', 'PHYS_CinMotion',
        +            'ROLE_None', 'ROLE_DumbProxy', 'ROLE_SimulatedProxy',
        +            'ROLE_AutonomousProxy', 'ROLE_Authority',
        +            'STY_None', 'STY_Normal', 'STY_Masked', 'STY_Translucent', 'STY_Modulated', 'STY_Alpha',
        +            'STY_Additive', 'STY_Subtractive', 'STY_Particle', 'STY_AlphaZ',
        +            'OCCLUSION_None', 'OCCLUSION_BSP', 'OCCLUSION_Default', 'OCCLUSION_StaticMeshes',
        +            'SLOT_None', 'SLOT_Misc', 'SLOT_Pain', 'SLOT_Interact', 'SLOT_Ambient', 'SLOT_Talk',
        +            'SLOT_Interface', 'MTRAN_None', 'MTRAN_Instant', 'MTRAN_Segue', 'MTRAN_Fade',
        +            'MTRAN_FastFade', 'MTRAN_SlowFade',
        +
        +            'DrawType', 'Physics', 'Owner', 'Base', 'Level', 'Game', 'Instigator', 'RemoteRole', 'Role',
        +            'LifeSpan', 'Tag', 'Event', 'Location', 'Rotation', 'Velocity', 'Acceleration',
        +            'RelativeLocation', 'RelativeRotation', 'DrawScale', 'DrawScale3D', 'Skins', 'Style',
        +            'SoundVolume', 'SoundPitch', 'SoundRadius', 'TransientSoundVolume', 'TransientSoundRadius',
        +            'CollisionRadius', 'CollisionHeight', 'Mass', 'Buoyancy', 'RotationRate', 'DesiredRotation'
        +            ),
        +        8 => array(        //common non-actor uscript classes
        +            'Object',
        +            'CacheManager', 'CameraEffect', 'Canvas', 'CheatManager', 'Commandlet', 'DecoText', 'GUI',
        +            'InteractionMaster', 'Interactions', 'Interaction', 'KarmaParamsCollision', 'KarmaParamsRBFull',
        +            'KarmaParamsSkel', 'KarmaParams', 'LevelSummary', 'Locale', 'Manifest', 'MaterialFactory',
        +            'MeshObject', 'ObjectPool', 'Pallete',
        +            'ParticleEmitter', 'MeshEmitter', 'BeamEmitter', 'SpriteEmitter', 'SparkEmitter', 'TrailEmitter',
        +            'Player', 'PlayerInput', 'PlayInfo', 'ReachSpec', 'Resource', 'LatentScriptedAction', 'ScriptedAction',
        +            'speciesType', 'StreamBase', 'Stream', 'EditorEngine', 'Engine', 'Time', 'WeaponFire',
        +            'WebApplication', 'WebRequest', 'WebResponse', 'WebSkin', 'xPawnGibGroup', 'xPawnSoundGroup',
        +            'xUtil'
        +            ),
        +        9 => array(        //common actor-based uscript classes
        +            'Actor',
        +            'Controller', 'AIController', 'ScriptedController', 'Bot', 'xBot',
        +            'PlayerController', 'UnrealPlayer', 'xPlayer',
        +            'DamageType', 'WeaponDamageType', 'Effects', 'Emitter', 'NetworkEmitter',
        +            'Gib', 'HUD', 'HudBase', 'Info', 'FluidSurfaceInfo', 'Combo',
        +            'GameInfo', 'UnrealMPGameInfo', 'DeathMatch', 'TeamGame', 'CTFGame',
        +            'xCTFGame', 'xBombingRun', 'xDoubleDom', 'xTeamGame',
        +            'ASGameInfo', 'Invasion', 'ONSOnslaughtGame', 'xDeathmatch',
        +            'Mutator', 'Inventory', 'Ammunition', 'KeyInventory', 'Powerups', 'Armor', 'Weapon',
        +            'InventoryAttachment', 'WeaponAttachment',
        +            'KActor', 'KConstraint', 'KBSJoint', 'KCarWheelJoint', 'KConeLimit', 'KHinge', 'KTire',
        +            'KVehicleFactory', 'Keypoint', 'AIScript', 'ScriptedSequence', 'ScriptedTrigger',
        +            'AmbientSound', 'Light', 'SpotLight', 'SunLight', 'TriggerLight',
        +            'MeshEffect', 'NavigationPoint', 'GameObjective', 'DestroyableObjective',
        +            'PathNode', 'FlyingPathNode', 'RoadPathNode', 'InventorySpot', 'PlayerStart',
        +            'Pawn', 'Vehicle', 'UnrealPawn', 'xPawn', 'Monster', 'ASVehicle', 'KVehicle', 'KCar',
        +            'ONSWeaponPawn', 'SVehicle', 'ONSVehicle', 'ONSChopperCraft', 'ONSHoverCraft',
        +            'ONSPlaneCraft', 'ONSTreadCraft', 'ONSWheeledCraft',
        +            'Pickup', 'Ammo', 'UTAmmoPickup', 'ArmorPickup', 'KeyPickup', 'TournamentPickup',
        +            'Projectile', 'Projector', 'DynamicProjector', 'ShadowProjector', 'xScorch',
        +            'xEmitter', 'xPickupBase', 'xProcMesh', 'xWeatherEffect', 'PhysicsVolume', 'Volume'
        +            ),
        +        10 => array(    //symbol-like operators
        +            'dot','cross'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '+','-','=','/','*','-','%','>','<','&','^','!','|','`','(',')','[',']','{','}',
        +        '<<','>>','$','@'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        6 => false,
        +        7 => false,
        +        8 => false,
        +        9 => false,
        +        10 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000FF;',
        +            2 => 'color: #0000FF;',
        +            3 => 'color: #0066AA;',
        +            4 => 'color: #0088FF;',
        +            5 => 'color: #E000E0;',
        +            6 => 'color: #900000;',
        +            7 => 'color: #888800;',
        +            8 => 'color: #AA6600;',
        +            9 => 'color: #FF8800;',
        +            10 => 'color: #0000FF;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008080; font-style: italic;',
        +            2 => 'color: #000000; font-weight: bold;',
        +            'MULTI' => 'color: #008080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => ''
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #999999;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #FF0000;'
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #669966;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #E000E0;',
        +            1 => 'color: #E000E0;'
        +            ),
        +        'SCRIPT' => array(
        +            0 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => '',
        +        7 => '',
        +        8 => 'http://wiki.beyondunreal.com/wiki?search={FNAME}',
        +        9 => 'http://wiki.beyondunreal.com/wiki?search={FNAME}',
        +        10 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array('.'),
        +    'REGEXPS' => array(            //handle template-style variable definitions
        +        0 => array(
        +            GESHI_SEARCH => '(class\s*)<(\s*(\w+)\s*)>',
        +            GESHI_REPLACE => "\${1}",
        +            GESHI_MODIFIERS => 'i',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => "< \${3} >"
        +            ),
        +        1 => array(
        +            GESHI_SEARCH => '(array\s*)<(\s*(\w+)\s*)>',
        +            GESHI_REPLACE => "\${1}",
        +            GESHI_MODIFIERS => 'i',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => "< \${3} >"
        +            )
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            10 => array(
        +                'DISALLOWED_BEFORE' => '(?)'
        +                )
        +            )
        +        )
        +);
        diff --git a/includes/geshi/vala.php b/includes/geshi/vala.php
        new file mode 100644
        index 0000000..a823dbf
        --- /dev/null
        +++ b/includes/geshi/vala.php
        @@ -0,0 +1,149 @@
        + 'Vala',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        //Using and Namespace directives (basic support)
        +        //Please note that the alias syntax for using is not supported
        +        3 => '/(?:(?<=using[\\n\\s])|(?<=namespace[\\n\\s]))[\\n\\s]*([a-zA-Z0-9_]+\\.)*[a-zA-Z0-9_]+[\n\s]*(?=[;=])/i'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'HARDQUOTE' => array('"""'),
        +    'HARDESCAPE' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'as', 'abstract', 'base', 'break', 'case', 'catch', 'const',
        +            'construct', 'continue', 'default', 'delete', 'dynamic', 'do',
        +            'else', 'ensures', 'extern', 'false', 'finally', 'for', 'foreach',
        +            'get', 'if', 'in', 'inline', 'internal', 'lock', 'namespace',
        +            'null', 'out', 'override', 'private', 'protected', 'public', 'ref',
        +            'requires', 'return', 'set', 'static', 'switch', 'this', 'throw',
        +            'throws', 'true', 'try', 'using', 'value', 'var', 'virtual',
        +            'volatile', 'void', 'yield', 'yields', 'while'
        +            ),
        +        2 => array(
        +            '#elif', '#endif', '#else', '#if'
        +            ),
        +        3 => array(
        +            'is', 'new', 'owned', 'sizeof', 'typeof', 'unchecked', 'unowned', 'weak'
        +            ),
        +        4 => array(
        +            'bool', 'char', 'class', 'delegate', 'double', 'enum',
        +            'errordomain', 'float', 'int', 'int8', 'int16', 'int32', 'int64',
        +            'interface', 'long', 'short', 'signal', 'size_t', 'ssize_t',
        +            'string', 'struct', 'uchar', 'uint', 'uint8', 'uint16', 'uint32',
        +            'ulong', 'unichar', 'ushort'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', ':', ';',
        +        '(', ')', '{', '}', '[', ']', '|'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true,
        +        4 => true,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0600FF;',
        +            2 => 'color: #FF8000; font-weight: bold;',
        +            3 => 'color: #008000;',
        +            4 => 'color: #FF0000;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008080; font-style: italic;',
        +            3 => 'color: #008080;',
        +            'MULTI' => 'color: #008080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #008080; font-weight: bold;',
        +            'HARD' => 'color: #008080; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #666666;',
        +            'HARD' => 'color: #666666;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #FF0000;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #0000FF;',
        +            2 => 'color: #0000FF;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #008000;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'DISALLOWED_BEFORE' => "(?|^])",
        +            'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_<\|%\\-])"
        +        )
        +    )
        +);
        diff --git a/includes/geshi/vb.php b/includes/geshi/vb.php
        new file mode 100644
        index 0000000..bcfe614
        --- /dev/null
        +++ b/includes/geshi/vb.php
        @@ -0,0 +1,155 @@
        + 'Visual Basic',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(
        +        // Comments (either single or multiline with _
        +        1 => '/\'.*(? GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'Binary', 'Boolean', 'Byte', 'Currency', 'Date', 'Decimal', 'Double',
        +            'String', 'Enum', 'Integer', 'Long', 'Object', 'Single', 'Variant'
        +            ),
        +        2 => array(
        +            'CreateObject', 'GetObject', 'New', 'Option', 'Function',
        +            'Call', 'Private', 'Public', 'Sub', 'Explicit', 'Compare', 'Exit'
        +            ),
        +        3 => array(
        +            'And', 'Case', 'Do', 'Each', 'Else', 'ElseIf', 'End', 'For', 'GoSub',
        +            'Goto', 'If', 'Is', 'Loop', 'Next', 'Not', 'Or', 'Resume', 'Select',
        +            'Step', 'Then', 'To', 'Until', 'While', 'With', 'Xor', 'WithEvents',
        +            'DoEvents', 'Close', 'Like', 'In'
        +            ),
        +        4 => array(
        +            'As', 'Dim', 'Get', 'Set', 'ReDim', 'Error',
        +            'Declare', 'Let', 'ByRef', 'ByVal',
        +            'Optional', 'Property', 'Control', 'UBound', 'Mod',
        +            'Implements', 'Input', 'LBound', 'Static', 'Stop',
        +            'Type', 'TypeOf', 'On', 'Open', 'Output', 'ParamArray',
        +            'Preserve', 'Print', 'RaiseEvent', 'Random', 'Line'
        +            ),
        +        5 => array(
        +            'Nothing', 'False', 'True', 'Null', 'Empty'
        +            ),
        +        6 => array(
        +            'ErrorHandler','ExitProc', 'PublishReport'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        6 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #F660AB; font-weight: bold;',
        +            2 => 'color: #E56717; font-weight: bold;',
        +            3 => 'color: #8D38C9; font-weight: bold;',
        +            4 => 'color: #151B8D; font-weight: bold;',
        +            5 => 'color: #00C2FF; font-weight: bold;',
        +            6 => 'color: #3EA99F; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008000;'
        +            ),
        +        'BRACKETS' => array(
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #800000;'
        +            ),
        +        'NUMBERS' => array(
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #800000; font-weight: bold;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => '',
        +        6 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'ENABLE_FLAGS' => array(
        +            'BRACKETS' => GESHI_NEVER,
        +            'SYMBOLS' => GESHI_NEVER,
        +            'NUMBERS' => GESHI_NEVER
        +            )
        +        )
        +);
        diff --git a/includes/geshi/vbnet.php b/includes/geshi/vbnet.php
        new file mode 100644
        index 0000000..e4d1464
        --- /dev/null
        +++ b/includes/geshi/vbnet.php
        @@ -0,0 +1,180 @@
        + 'vb.net',
        +    'COMMENT_SINGLE' => array(1 => "'"),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        //Keywords
        +        1 => array(
        +            'AddHandler', 'AddressOf', 'Alias', 'And', 'AndAlso', 'As', 'ByRef', 'ByVal',
        +            'Call', 'Case', 'Catch', 'Char', 'Class', 'Const', 'Continue',
        +            'Declare', 'Default',
        +            'Delegate', 'Dim', 'DirectCast', 'Do', 'Each', 'Else', 'ElseIf', 'End', 'EndIf',
        +            'Enum', 'Erase', 'Error', 'Event', 'Exit', 'False', 'Finally', 'For', 'Friend', 'Function',
        +            'Get', 'GetType', 'GetXMLNamespace', 'Global', 'GoSub', 'GoTo', 'Handles', 'If', 'Implements',
        +            'Imports', 'In', 'Inherits', 'Interface', 'Is', 'IsNot', 'Let', 'Lib', 'Like', 'Loop', 'Me',
        +            'Mod', 'Module', 'Module Statement', 'MustInherit', 'MustOverride', 'MyBase', 'MyClass', 'Namespace',
        +            'Narrowing', 'New', 'Next', 'Not', 'Nothing', 'NotInheritable', 'NotOverridable', 'Of', 'On',
        +            'Operator', 'Option', 'Optional', 'Or', 'OrElse', 'Out', 'Overloads', 'Overridable', 'Overrides',
        +            'ParamArray', 'Partial', 'Private', 'Property', 'Protected', 'Public', 'RaiseEvent', 'ReadOnly', 'ReDim',
        +            'REM', 'RemoveHandler', 'Resume', 'Return', 'Select','Set', 'Shadows', 'Shared', 'Static', 'Step',
        +            'Stop', 'Structure', 'Sub', 'SyncLock', 'Then', 'Throw', 'To', 'True', 'Try', 'TryCast', 'TypeOf',
        +            'Using', 'Wend', 'When', 'While', 'Widening', 'With', 'WithEvents', 'WriteOnly', 'Xor'
        +            ),
        +        //Data Types
        +        2 => array(
        +            'Boolean', 'Byte', 'Date', 'Decimal', 'Double', 'Integer', 'Long', 'Object',
        +            'SByte', 'Short', 'Single', 'String', 'UInteger', 'ULong', 'UShort'
        +            ),
        +        //Compiler Directives
        +        3 => array(
        +            '#Const', '#Else', '#ElseIf', '#End', '#If'
        +            ),
        +        //Constants
        +        4 => array(
        +            'CBool', 'CByte', 'CChar', 'CChr', 'CDate', 'CDbl', 'CDec','CInt', 'CLng', 'CLng8', 'CObj', 'CSByte', 'CShort',
        +            'CSng', 'CStr', 'CType', 'CUInt', 'CULng', 'CUShort'
        +            ),
        +        //Linq
        +        5 => array(
        +            'By','From','Group','Where'
        +            ),
        +        //Built-in functions
        +        7 => array(
        +            'ABS', 'ARRAY', 'ASC', 'ASCB', 'ASCW', 'CALLBYNAME', 'CHOOSE', 'CHR', 'CHR$', 'CHRB', 'CHRB$', 'CHRW',
        +            'CLOSE', 'COMMAND', 'COMMAND$', 'CONVERSION',
        +            'COS', 'CREATEOBJECT', 'CURDIR', 'CVDATE', 'DATEADD',
        +            'DATEDIFF', 'DATEPART', 'DATESERIAL', 'DATEVALUE', 'DAY', 'DDB', 'DIR', 'DIR$',
        +            'EOF', 'ERROR$', 'EXP', 'FILEATTR', 'FILECOPY', 'FILEDATATIME', 'FILELEN', 'FILTER',
        +            'FIX', 'FORMAT', 'FORMAT$', 'FORMATCURRENCY', 'FORMATDATETIME', 'FORMATNUMBER',
        +            'FORMATPERCENT', 'FREEFILE', 'FV', 'GETALLSETTINGS', 'GETATTRGETOBJECT', 'GETSETTING',
        +            'HEX', 'HEX$', 'HOUR', 'IIF', 'IMESTATUS', 'INPUT$', 'INPUTB', 'INPUTB$', 'INPUTBOX',
        +            'INSTR', 'INSTRB', 'INSTRREV', 'INT', 'IPMT', 'IRR', 'ISARRAY', 'ISDATE', 'ISEMPTY',
        +            'ISERROR', 'ISNULL', 'ISNUMERIC', 'ISOBJECT', 'JOIN', 'LBOUND', 'LCASE', 'LCASE$',
        +            'LEFT', 'LEFT$', 'LEFTB', 'LEFTB$', 'LENB', 'LINEINPUT', 'LOC', 'LOF', 'LOG', 'LTRIM',
        +            'LTRIM$', 'MID$', 'MIDB', 'MIDB$', 'MINUTE', 'MIRR', 'MKDIR', 'MONTH', 'MONTHNAME',
        +            'MSGBOX', 'NOW', 'NPER', 'NPV', 'OCT', 'OCT$', 'PARTITION', 'PMT', 'PPMT', 'PV',
        +            'RATE', 'REPLACE', 'RIGHT', 'RIGHT$', 'RIGHTB', 'RIGHTB$', 'RMDIR', 'RND', 'RTRIM',
        +            'RTRIM$', 'SECOND', 'SIN', 'SLN', 'SPACE', 'SPACE$', 'SPC', 'SPLIT', 'SQRT', 'STR', 'STR$',
        +            'STRCOMP', 'STRCONV', 'STRING$', 'STRREVERSE', 'SYD', 'TAB', 'TAN', 'TIMEOFDAY',
        +            'TIMER', 'TIMESERIAL', 'TIMEVALUE', 'TODAY', 'TRIM', 'TRIM$', 'TYPENAME', 'UBOUND',
        +            'UCASE', 'UCASE$', 'VAL', 'WEEKDAY', 'WEEKDAYNAME', 'YEAR'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!',
        +        '(', ')', '{', '}', '.'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false,
        +        7 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000FF; font-weight: bold;',  //Keywords
        +            2 => 'color: #6a5acd;',                     //primitive Data Types
        +            3 => 'color: #6a5acd; font-weight: bold;',  //preprocessor-commands
        +            4 => 'color: #cd6a5a;',                     //Constants
        +            5 => 'color: #cd6a5a; font-weight: bold;',  //LinQ
        +            7 => 'color: #000066;',                     //Built-in functions
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008000; font-style: italic;',
        +            'MULTI' => 'color: #008000; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #008080; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #a52a2a; back-color: #fffacd;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #a52a2a; back-color: #fffacd;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #000000;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => 'http://www.google.com/search?q={FNAMEU}+site:msdn.microsoft.com',
        +        4 => '',
        +        5 => '',
        +        7 => 'http://www.google.com/search?q={FNAMEU}+site:msdn.microsoft.com'
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 =>'.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            7 => array(
        +                'DISALLOWED_AFTER' => '(?!\w)(?=\s*\()'
        +                )
        +            )
        +        )
        +);
        diff --git a/includes/geshi/vbscript.php b/includes/geshi/vbscript.php
        new file mode 100644
        index 0000000..6db3bbd
        --- /dev/null
        +++ b/includes/geshi/vbscript.php
        @@ -0,0 +1,153 @@
        + 'VBScript',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(
        +        // Comments (either single or multiline with _
        +        1 => '/\'.*(? GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'Empty', 'Nothing', 'Null', 'vbArray', 'vbBoolean', 'vbByte',
        +            'vbCr', 'vbCrLf', 'vbCurrency', 'vbDate', 'vbDouble', 'vbEmpty',
        +            'vbError', 'vbFirstFourDays', 'vbFirstFullWeek', 'vbFirstJan1',
        +            'vbFormFeed', 'vbFriday', 'vbInteger', 'vbLf', 'vbLong', 'vbMonday',
        +            'vbNewLine', 'vbNull', 'vbNullChar', 'vbNullString', 'vbObject',
        +            'vbSaturday', 'vbSingle', 'vbString', 'vbSunday', 'vbTab',
        +            'vbThursday', 'vbTuesday', 'vbUseSystem', 'vbUseSystemDayOfWeek',
        +            'vbVariant', 'vbWednesday', 'FALSE', 'TRUE'
        +            ),
        +        2 => array(
        +            'bs', 'Array', 'Asc', 'Atn', 'CBool', 'CByte', 'CDate', 'CDbl', 'Chr',
        +            'CInt', 'CLng', 'Cos', 'CreateObject', 'CSng', 'CStr', 'Date', 'DateAdd',
        +            'DateDiff', 'DatePart', 'DateSerial', 'DateValue', 'Day', 'Eval', 'Exp',
        +            'Filter', 'Fix', 'FormatDateTime', 'FormatNumber', 'FormatPercent',
        +            'GetObject', 'Hex', 'Hour', 'InputBox', 'InStr', 'InstrRev', 'Int',
        +            'IsArray', 'IsDate', 'IsEmpty', 'IsNull', 'IsNumeric', 'IsObject', 'Join',
        +            'LBound', 'LCase', 'Left', 'Len', 'Log', 'LTrim', 'Mid', 'Minute', 'Month',
        +            'MonthName', 'MsgBox', 'Now', 'Oct', 'Replace', 'RGB', 'Right', 'Rnd',
        +            'Round', 'RTrim', 'ScriptEngine', 'ScriptEngineBuildVersion',
        +            'ScriptEngineMajorVersion', 'ScriptEngineMinorVersion', 'Second',
        +            'Sgn', 'Sin', 'Space', 'Split', 'Sqr', 'StrComp', 'String', 'StrReverse',
        +            'Tan', 'Time', 'TimeSerial', 'TimeValue', 'Trim', 'TypeName', 'UBound',
        +            'UCase', 'VarType', 'Weekday', 'WeekdayName', 'Year'
        +            ),
        +        3 => array(
        +            'Call', 'Case', 'Const', 'Dim', 'Do', 'Each', 'Else', 'End', 'Erase',
        +            'Execute', 'Exit', 'For', 'Function', 'Gosub', 'Goto', 'If', 'Loop',
        +            'Next', 'On Error', 'Option Explicit', 'Private', 'Public',
        +            'Randomize', 'ReDim', 'Rem', 'Resume', 'Select', 'Set', 'Sub', 'Then',
        +            'Wend', 'While', 'With', 'In', 'To', 'Step'
        +            ),
        +        4 => array(
        +            'And', 'Eqv', 'Imp', 'Is', 'Mod', 'Not', 'Or', 'Xor'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '-', '&', '*', '/', '\\', '^', '+', '<', '<=', '<>', '=', '>', '>='
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #F660AB; font-weight: bold;',
        +            2 => 'color: #E56717; font-weight: bold;',
        +            3 => 'color: #8D38C9; font-weight: bold;',
        +            4 => 'color: #151B8D; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008000;'
        +            ),
        +        'BRACKETS' => array(
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #800000;'
        +            ),
        +        'NUMBERS' => array(
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #800000; font-weight: bold;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            'SPACE_AS_WHITESPACE' => true
        +            ),
        +        'ENABLE_FLAGS' => array(
        +            'BRACKETS' => GESHI_NEVER
        +            )
        +        )
        +);
        diff --git a/includes/geshi/vedit.php b/includes/geshi/vedit.php
        new file mode 100644
        index 0000000..72f4b53
        --- /dev/null
        +++ b/includes/geshi/vedit.php
        @@ -0,0 +1,101 @@
        + 'Vedit macro language',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"', '\''),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'break', 'breakout', 'break_out', 'continue', 'do', 'else', 'for',
        +            'goto', 'if', 'repeat', 'return', 'while'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        1 => array(
        +            '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '%',
        +            '=', '<', '>', '!', '^', '&', '|', '?', ':', ';', ','
        +            )
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;',
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #004000;'
        +            ),
        +        'SYMBOLS' => array(
        +            1 => 'color: #339933;'
        +            ),
        +        'REGEXPS' => array(),
        +        'SCRIPT' => array()
        +        ),
        +    'URLS' => array(1 => ''),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/verilog.php b/includes/geshi/verilog.php
        new file mode 100644
        index 0000000..77e5927
        --- /dev/null
        +++ b/includes/geshi/verilog.php
        @@ -0,0 +1,193 @@
        +
        + * Copyright: (C) 2008 Günter Dannoritzer
        + * Release Version: 1.0.8.12
        + * Date Started: 2008/05/28
        + *
        + * Verilog language file for GeSHi.
        + *
        + * CHANGES
        + * -------
        + * 2008/05/29
        + *   -  added regular expression to find numbers of the form 4'b001xz
        + *   -  added regular expression to find values for `timescale command
        + *   -  extended macro keywords
        + *
        + * TODO (updated 2008/05/29)
        + * -------------------------
        + *
        + * 2013/01/08
        + *   -  extended keywords to include system keywords
        + *
        + *************************************************************************************
        + *
        + *     This file is part of GeSHi.
        + *
        + *   GeSHi is free software; you can redistribute it and/or modify
        + *   it under the terms of the GNU General Public License as published by
        + *   the Free Software Foundation; either version 2 of the License, or
        + *   (at your option) any later version.
        + *
        + *   GeSHi is distributed in the hope that it will be useful,
        + *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + *   GNU General Public License for more details.
        + *
        + *   You should have received a copy of the GNU General Public License
        + *   along with GeSHi; if not, write to the Free Software
        + *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        + *
        + ************************************************************************************/
        +
        +$language_data = array (
        +    'LANG_NAME' => 'Verilog',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        // keywords
        +        1 => array(
        +            'accept_on','alias',
        +            'always','always_comb','always_ff','always_latch','and','assert',
        +            'assign','assume','automatic','before','begin','bind','bins','binsof',
        +            'bit','break','buf','bufif0','bufif1','byte','case','casex','casez',
        +            'cell','chandle','checker','class','clocking','cmos','config','const',
        +            'constraint','context','continue','cover','covergroup','coverpoint','cross',
        +            'deassign','default','defparam','design','disable','dist','do','edge','else',
        +            'end','endcase','endchecker','endclass','endclocking','endconfig',
        +            'endfunction','endgenerate','endgroup','endinterface','endmodule',
        +            'endpackage','endprimitive','endprogram','endproperty','endspecify',
        +            'endsequence','endtable','endtask','enum','event','eventually','expect',
        +            'export','extends','extern','final','first_match','for','force','foreach',
        +            'forever','fork','forkjoin','function','generate','genvar','global',
        +            'highz0','highz1','if','iff','ifnone','ignore_bins','illegal_bins',
        +            'implies','import','incdir','include','initial','inout','input','inside',
        +            'instance','int','integer','interface','intersect','join','join_any',
        +            'join_none','large','let','liblist','library','local','localparam',
        +            'logic','longint','macromodule','matches','medium','modport','module','nand',
        +            'negedge','new','nexttime','nmos','nor','noshowcancelled','not','notif0',
        +            'notif1','null','or','output','package','packed','parameter','pmos','posedge',
        +            'primitive','priority','program','property','protected','pull0','pull1',
        +            'pulldown','pullup','pulsestyle_ondetect','pulsestyle_onevent','pure',
        +            'rand','randc','randcase','randsequence','rcmos','real','realtime','ref',
        +            'reg','reject_on','release','repeat','restrict','return','rnmos','rpmos',
        +            'rtran','rtranif0','rtranif1','s_always','s_eventually','s_nexttime',
        +            's_until','s_until_with','scalared','sequence','shortint','shortreal',
        +            'showcancelled','signed','small','solve','specify','specparam','static',
        +            'string','strong','strong0','strong1','struct','super','supply0','supply1',
        +            'sync_accept_on','sync_reject_on','table','tagged','task','this','throughout',
        +            'time','timeprecision','timeunit','tran','tranif0','tranif1','tri','tri0',
        +            'tri1','triand','trior','trireg','type','typedef','union','unique','unique0',
        +            'unsigned','until','until_with','untyped','use','uwire','var','vectored',
        +            'virtual','void','wait','wait_order','wand','weak','weak0','weak1','while',
        +            'wildcard','wire','with','within','wor','xnor','xor'
        +            ),
        +        // system tasks
        +        2 => array(
        +            '$display', '$monitor',
        +            '$dumpall', '$dumpfile', '$dumpflush', '$dumplimit', '$dumpoff',
        +            '$dumpon', '$dumpvars',
        +            '$fclose', '$fdisplay', '$fopen',
        +            '$finish', '$fmonitor', '$fstrobe', '$fwrite',
        +            '$fgetc', '$ungetc', '$fgets', '$fscanf', '$fread', '$ftell',
        +            '$fseek', '$frewind', '$ferror', '$fflush', '$feof',
        +            '$random',
        +            '$readmemb', '$readmemh', '$readmemx',
        +            '$signed', '$stime', '$stop',
        +            '$strobe', '$time', '$unsigned', '$write'
        +            ),
        +        // macros
        +        3 => array(
        +            '`default-net', '`define',
        +            '`celldefine', '`default_nettype', '`else', '`elsif', '`endcelldefine',
        +            '`endif', '`ifdef', '`ifndef', '`include', '`line', '`nounconnected_drive',
        +            '`resetall', '`timescale', '`unconnected_drive', '`undef'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%',
        +        '^', '&', '|', '~',
        +        '?', ':',
        +        '#', '<<', '<<<',
        +        '>', '<', '>=', '<=',
        +        '@', ';', ','
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #A52A2A; font-weight: bold;',
        +            2 => 'color: #9932CC;',
        +            3 => 'color: #008800;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #00008B; font-style: italic;',
        +            'MULTI' => 'color: #00008B; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #9F79EE'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #9F79EE;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #FF00FF;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #ff0055;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #202020;',
        +            2 => 'color: #202020;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #5D478B;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #ff0055;',
        +            1 => 'color: #ff0055;',
        +            ),
        +        'SCRIPT' => array(
        +            0 => '',
        +            1 => '',
        +            2 => '',
        +            3 => ''
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => ''
        +        ),
        +    'REGEXPS' => array(
        +        // numbers
        +        0 => "\d'[bdh][0-9_a-fA-FxXzZ]+",
        +        // time -> 1, 10, or 100; s, ms, us, ns, ps, of fs
        +        1 => "1[0]{0,2}[munpf]?s"
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        1 => ''
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        0 => true,
        +        1 => true,
        +        2 => true,
        +        3 => true
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/vhdl.php b/includes/geshi/vhdl.php
        new file mode 100644
        index 0000000..c89a098
        --- /dev/null
        +++ b/includes/geshi/vhdl.php
        @@ -0,0 +1,181 @@
        + 'VHDL',
        +    'COMMENT_SINGLE' => array(1 => '--'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'COMMENT_REGEXP' => array(
        +        // PSL adds C-preprocessor support
        +        1 => '/(?<=\s)#(?:\\\\\\\\|\\\\\\n|.)*$/m',
        +        // PSL metacomments (single-line only for now)
        +        2 => '/--\s*@?psl(?:.)*?;$/m',
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        /*keywords*/
        +        1 => array(
        +            'access','after','alias','all','attribute','architecture','array','begin',
        +            'block','body','buffer','bus','case','case?','component','configuration','constant','context',
        +            'disconnect','downto','else','elsif','end','entity','exit','file','for','force',
        +            'function','generate','generic','group','guarded','if','impure','in',
        +            'inertial','inout','is','label','library','linkage','literal','loop',
        +            'map','new','next','null','of','on','open','others','out','package',
        +            'port','postponed','procedure','process','protected','pure','range','record','register',
        +            'reject','release','report','return','select','severity','shared','signal','subtype',
        +            'then','to','transport','type','unaffected','units','until','use','variable',
        +            'wait','when','while','with'
        +            ),
        +        /*types and standard libs*/
        +        2 => array(
        +            'bit','bit_vector','character','boolean','integer','real','time','delay_length','string',
        +            'severity_level','positive','natural','signed','unsigned','line','text',
        +            'std_logic','std_logic_vector','std_ulogic','std_ulogic_vector',
        +            'sfixed','ufixed','float','float32','float64','float128',
        +            'work','ieee','std_logic_1164','math_real','math_complex','textio',
        +            'numeric_std','numeric_std_signed','numeric_std_unsigned','numeric_bit'
        +            ),
        +        /*operators*/
        +        3 => array(
        +            'abs','and','mod','nor','not','or','rem','rol','ror','sla','sll','sra','srl','xnor','xor'
        +            ),
        +        /*psl*/
        +        4 => array(
        +            'assert','assume','assume_guarantee','clock','const','countones','cover','default',
        +            'endpoint','fairness','fell','forall','inf','inherit','isunknown','onehot','onehot0','property',
        +            'prev','restrict','restrict_guarantee','rose','sequence','stable','strong','union','vmode','vprop','vunit'
        +            ),
        +        /*psl operators*/
        +        5 => array(
        +            'abort','always','before','before!','before!_','before_','eventually!','never',
        +            'next!','next_a','next_a!','next_e','next_e!','next_event','next_event!','next_event_a','next_event_a!',
        +            'next_event_e','next_event_e!','until!','until!_','until_','within'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '[', ']', '(', ')',
        +        ';',':',
        +        '<','>','=','+','-','*','/','&','|','?'
        +    ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000080; font-weight: bold;',
        +            2 => 'color: #0000ff;',
        +            3 => 'color: #000066;',
        +            4 => 'color: #000080; font-weight: bold;',
        +            5 => 'color: #000066;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008000; font-style: italic;',
        +            2 => 'color: #ff0000; font-weight: bold;',
        +            'MULTI' => 'color: #008000; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000066;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #7f007f;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000066;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #ff0000;',
        +            //1 => 'color: #ff0000;',
        +            2 => 'color: #ee82ee;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        //Based literals, scientific notation, and time units
        +        0 => '(\b\d+#[[:xdigit:]_]+#)|'.
        +            '(\b[\d_]+(\.[\d_]+)?[eE][+\-]?[\d_]+)|'.
        +            '(\b(hr|min|sec|ms|us|ns|ps|fs)\b)',
        +        //Character literals
        +        /* GeSHi won't match this pattern for some reason and QUOTEMARKS
        +         * can't be used because it interferes with attribute parsing */
        +        /*1 => "\b'.'\b",*/
        +        //Attributes
        +        2 => "'\w+(?!')"
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/vim.php b/includes/geshi/vim.php
        new file mode 100644
        index 0000000..4353943
        --- /dev/null
        +++ b/includes/geshi/vim.php
        @@ -0,0 +1,418 @@
        +  ...   ... works event if they aren't surround by space.
        + *
        + *************************************************************************************
        + *
        + *     This file is part of GeSHi.
        + *
        + *   GeSHi is free software; you can redistribute it and/or modify
        + *   it under the terms of the GNU General Public License as published by
        + *   the Free Software Foundation; either version 2 of the License, or
        + *   (at your option) any later version.
        + *
        + *   GeSHi is distributed in the hope that it will be useful,
        + *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + *   GNU General Public License for more details.
        + *
        + *   You should have received a copy of the GNU General Public License
        + *   along with GeSHi; if not, write to the Free Software
        + *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        + *
        + ************************************************************************************/
        +
        +$language_data = array(
        +    'LANG_NAME' => 'Vim Script',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_REGEXP' => array(
        +        1 => "/\s*\"[^\"]*?$/m",
        +        //Regular expressions (Ported from perl.php)
        +//        2 => "/(?<=[\\s^])(s|tr|y)\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/(?:\\\\.|(?!\n)[^\\/\\\\])*\\/[msixpogcde]*(?=[\\s$\\.\\;])|(?<=[\\s^(=])(m|q[qrwx]?)?\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/[msixpogc]*(?=[\\s$\\.\\,\\;\\)])/iU",
        +        ),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'au', 'augroup', 'autocmd', 'brea', 'break', 'bufadd',
        +            'bufcreate', 'bufdelete', 'bufenter', 'buffilepost',
        +            'buffilepre', 'bufleave', 'bufnew', 'bufnewfile',
        +            'bufread', 'bufreadcmd', 'bufreadpost', 'bufreadpre',
        +            'bufunload', 'bufwinenter', 'bufwinleave', 'bufwipeout',
        +            'bufwrite', 'bufwritecmd', 'bufwritepost', 'bufwritepre',
        +            'call', 'cat', 'catc', 'catch', 'cmd-event', 'cmdwinenter',
        +            'cmdwinleave', 'colorscheme', 'con', 'confirm', 'cont', 'conti',
        +            'contin', 'continu', 'continue', 'cursorhold', 'cursorholdi',
        +            'cursormoved', 'cursormovedi', 'ec', 'echo', 'echoe',
        +            'echoer', 'echoerr', 'echoh', 'echohl', 'echom', 'echoms',
        +            'echomsg', 'echon', 'el', 'els', 'else', 'elsei', 'elseif',
        +            'en', 'encodingchanged', 'end', 'endfo', 'endfor', 'endi',
        +            'endif', 'endt', 'endtr', 'endtry', 'endw', 'endwh', 'endwhi',
        +            'endwhil', 'endwhile', 'exe', 'exec', 'execu', 'execut',
        +            'execute', 'fileappendcmd', 'fileappendpost', 'fileappendpre',
        +            'filechangedro', 'filechangedshell', 'filechangedshellpost',
        +            'filereadcmd', 'filereadpost', 'filereadpre',
        +            'filetype', 'filewritecmd', 'filewritepost', 'filewritepre',
        +            'filterreadpost', 'filterreadpre', 'filterwritepost',
        +            'filterwritepre', 'fina', 'final', 'finall', 'finally',
        +            'finish', 'focusgained', 'focuslost', 'for', 'fun', 'func',
        +            'funct', 'functi', 'functio', 'function', 'funcundefined',
        +            'guienter', 'guifailed', 'hi', 'highlight', 'if', 'in',
        +            'insertchange', 'insertenter', 'insertleave', 'let', 'lockv',
        +            'lockva', 'lockvar', 'map', 'match', 'menupopup', 'nnoremap',
        +            'quickfixcmdpost', 'quickfixcmdpre', 'remotereply', 'retu',
        +            'retur', 'return', 'sessionloadpost', 'set', 'setlocal',
        +            'shellcmdpost', 'shellfilterpost', 'sourcecmd', 'sourcepre',
        +            'spellfilemissing', 'stdinreadpost', 'stdinreadpre',
        +            'swapexists', 'syntax', 'tabenter', 'tableave', 'termchanged',
        +            'termresponse', 'th', 'thr', 'thro', 'throw', 'tr', 'try', 'unl',
        +            'unle', 'unlet', 'unlo', 'unloc', 'unlock', 'unlockv',
        +            'unlockva', 'unlockvar', 'user', 'usergettingbored',
        +            'vimenter', 'vimleave', 'vimleavepre', 'vimresized', 'wh',
        +            'whi', 'whil', 'while', 'winenter', 'winleave'
        +            ),
        +        2 => array(
        +            '<CR>', '<Esc>', '<F1>', '<F10>',
        +            '<F11>', '<F12>', '<F2>', '<F3>',
        +            '<F4>', '<F5>', '<F6>', '<F7>',
        +            '<F8>', '<F9>', '<cr>', '<silent>',
        +            '-nargs', 'acd', 'ai', 'akm', 'al', 'aleph',
        +            'allowrevins', 'altkeymap', 'ambiwidth', 'ambw',
        +            'anti', 'antialias', 'ar', 'arab', 'arabic',
        +            'arabicshape', 'ari', 'arshape', 'autochdir',
        +            'autoindent', 'autoread', 'autowrite', 'autowriteall',
        +            'aw', 'awa', 'background', 'backspace', 'backup',
        +            'backupcopy', 'backupdir', 'backupext',
        +            'backupskip', 'balloondelay', 'ballooneval', 'balloonexpr',
        +            'bdir', 'bdlay', 'beval', 'bex', 'bexpr', 'bg',
        +            'bh', 'bin', 'binary', 'biosk', 'bioskey',
        +            'bk', 'bkc', 'bl', 'bomb', 'breakat', 'brk',
        +            'bs', 'bsdir', 'bsk', 'bt', 'bufhidden',
        +            'buftype', 'casemap', 'cb',
        +            'ccv', 'cd', 'cdpath', 'cedit', 'cf', 'cfu', 'ch',
        +            'charconvert', 'ci', 'cin', 'cink',
        +            'cinkeys', 'cino', 'cinoptions', 'cinw', 'cinwords',
        +            'clipboard', 'cmdheight', 'cmdwinheight',
        +            'cmp', 'cms', 'co', 'columns', 'com',
        +            'comc', 'comcl', 'comcle', 'comclea', 'comclear', 'comm',
        +            'comma', 'comman', 'command', 'comments', 'commentstring',
        +            'compatible', 'completefunc', 'completeopt',
        +            'consk', 'conskey', 'copyindent',
        +            'cot', 'cp', 'cpo', 'cpoptions', 'cpt',
        +            'cscopepathcomp', 'cscopeprg', 'cscopequickfix', 'cscopetag',
        +            'cscopetagorder', 'cscopeverbose',
        +            'cspc', 'csprg', 'csqf', 'cst', 'csto', 'csverb', 'cuc',
        +            'cul', 'cursorcolumn', 'cursorline', 'cwh', 'debug',
        +            'deco', 'def', 'define', 'delc', 'delco', 'delcom',
        +            'delcombine', 'delcomm', 'delcomman', 'delcommand', 'dex',
        +            'dg', 'dict', 'dictionary', 'diff', 'diffexpr',
        +            'diffopt', 'digraph', 'dip', 'dir', 'directory', 'display',
        +            'dlcomma', 'dy', 'ea', 'ead', 'eadirection',
        +            'eb', 'ed', 'edcompatible', 'ef', 'efm',
        +            'ei', 'ek', 'enc', 'encoding', 'endfun', 'endofline',
        +            'eol', 'ep', 'equalalways', 'equalprg', 'errorbells',
        +            'errorfile', 'errorformat', 'esckeys', 'et',
        +            'eventignore', 'ex', 'expandtab', 'exrc', 'fcl',
        +            'fcs', 'fdc', 'fde', 'fdi', 'fdl', 'fdls', 'fdm',
        +            'fdn', 'fdo', 'fdt', 'fen', 'fenc', 'fencs', 'fex',
        +            'ff', 'ffs', 'fileencoding', 'fileencodings', 'fileformat',
        +            'fileformats', /*'filetype',*/ 'fillchars', 'fk',
        +            'fkmap', 'flp', 'fml', 'fmr', 'fo', 'foldclose',
        +            'foldcolumn', 'foldenable', 'foldexpr', 'foldignore',
        +            'foldlevelstart', 'foldmarker', 'foldmethod', 'foldminlines',
        +            'foldnestmax', 'foldopen', 'formatexpr', 'formatlistpat',
        +            'formatoptions', 'formatprg', 'fp', 'fs', 'fsync', 'ft',
        +            'gcr', 'gd', 'gdefault', 'gfm', 'gfn', 'gfs', 'gfw',
        +            'ghr', 'go', 'gp', 'grepformat', 'grepprg', 'gtl',
        +            'gtt', 'guicursor', 'guifont', 'guifontset',
        +            'guifontwide', 'guiheadroom', 'guioptions', 'guipty',
        +            'guitablabel', 'guitabtooltip', 'helpfile',
        +            'helpheight', 'helplang', 'hf', 'hh', 'hid', 'hidden',
        +            'history', 'hk', 'hkmap', 'hkmapp', 'hkp', 'hl',
        +            'hlg', 'hls', 'hlsearch', 'ic', 'icon', 'iconstring',
        +            'ignorecase', 'im', 'imactivatekey', 'imak', 'imc',
        +            'imcmdline', 'imd', 'imdisable', 'imi', 'iminsert', 'ims',
        +            'imsearch', 'inc', 'include', 'includeexpr',
        +            'incsearch', 'inde', 'indentexpr', 'indentkeys',
        +            'indk', 'inex', 'inf', 'infercase', 'insertmode', 'is', 'isf',
        +            'isfname', 'isi', 'isident', 'isk', 'iskeyword',
        +            'isp', 'isprint', 'joinspaces', 'js', 'key',
        +            'keymap', 'keymodel', 'keywordprg', 'km', 'kmp', 'kp',
        +            'langmap', 'langmenu', 'laststatus', 'lazyredraw', 'lbr',
        +            'lcs', 'linebreak', 'lines', 'linespace', 'lisp',
        +            'lispwords', 'list', 'listchars', 'lm', 'lmap',
        +            'loadplugins', 'lpl', 'ls', 'lsp', 'lw', 'lz', 'ma',
        +            'macatsui', 'magic', 'makeef', 'makeprg', 'mat',
        +            'matchpairs', 'matchtime', 'maxcombine', 'maxfuncdepth',
        +            'maxmapdepth', 'maxmem', 'maxmempattern',
        +            'maxmemtot', 'mco', 'mef', 'menuitems', 'mfd', 'mh',
        +            'mis', 'mkspellmem', 'ml', 'mls', 'mm', 'mmd', 'mmp',
        +            'mmt', 'mod', 'modeline', 'modelines', 'modifiable',
        +            'modified', 'more', 'mouse', 'mousef', 'mousefocus',
        +            'mousehide', 'mousem', 'mousemodel', 'mouses',
        +            'mouseshape', 'mouset', 'mousetime', 'mp', 'mps', 'msm',
        +            'mzq', 'mzquantum', 'nf', 'noacd', 'noai', 'noakm',
        +            'noallowrevins', 'noaltkeymap', 'noanti', 'noantialias',
        +            'noar', 'noarab', 'noarabic', 'noarabicshape', 'noari',
        +            'noarshape', 'noautochdir', 'noautoindent', 'noautoread',
        +            'noautowrite', 'noautowriteall', 'noaw', 'noawa', 'nobackup',
        +            'noballooneval', 'nobeval', 'nobin', 'nobinary', 'nobiosk',
        +            'nobioskey', 'nobk', 'nobl', 'nobomb', 'nobuflisted', 'nocf',
        +            'noci', 'nocin', 'nocindent', 'nocompatible', 'noconfirm',
        +            'noconsk', 'noconskey', 'nocopyindent', 'nocp', 'nocscopetag',
        +            'nocscopeverbose', 'nocst', 'nocsverb', 'nocuc', 'nocul',
        +            'nocursorcolumn', 'nocursorline', 'nodeco', 'nodelcombine',
        +            'nodg', 'nodiff', 'nodigraph', 'nodisable', 'noea', 'noeb',
        +            'noed', 'noedcompatible', 'noek', 'noendofline', 'noeol',
        +            'noequalalways', 'noerrorbells', 'noesckeys', 'noet',
        +            'noex', 'noexpandtab', 'noexrc', 'nofen', 'nofk', 'nofkmap',
        +            'nofoldenable', 'nogd', 'nogdefault', 'noguipty', 'nohid',
        +            'nohidden', 'nohk', 'nohkmap', 'nohkmapp', 'nohkp', 'nohls',
        +            'nohlsearch', 'noic', 'noicon', 'noignorecase', 'noim',
        +            'noimc', 'noimcmdline', 'noimd', 'noincsearch', 'noinf',
        +            'noinfercase', 'noinsertmode', 'nois', 'nojoinspaces',
        +            'nojs', 'nolazyredraw', 'nolbr', 'nolinebreak', 'nolisp',
        +            'nolist', 'noloadplugins', 'nolpl', 'nolz', 'noma',
        +            'nomacatsui', 'nomagic', 'nomh', 'noml', 'nomod',
        +            'nomodeline', 'nomodifiable', 'nomodified', 'nomore',
        +            'nomousef', 'nomousefocus', 'nomousehide', 'nonu',
        +            'nonumber', 'noodev', 'noopendevice', 'nopaste', 'nopi',
        +            'nopreserveindent', 'nopreviewwindow', 'noprompt', 'nopvw',
        +            'noreadonly', 'noremap', 'norestorescreen', 'norevins',
        +            'nori', 'norightleft', 'norightleftcmd', 'norl', 'norlc',
        +            'noro', 'nors', 'noru', 'noruler', 'nosb', 'nosc', 'noscb',
        +            'noscrollbind', 'noscs', 'nosecure', 'nosft', 'noshellslash',
        +            'noshelltemp', 'noshiftround', 'noshortname', 'noshowcmd',
        +            'noshowfulltag', 'noshowmatch', 'noshowmode', 'nosi', 'nosm',
        +            'nosmartcase', 'nosmartindent', 'nosmarttab', 'nosmd',
        +            'nosn', 'nosol', 'nospell', 'nosplitbelow', 'nosplitright',
        +            'nospr', 'nosr', 'nossl', 'nosta', 'nostartofline',
        +            'nostmp', 'noswapfile', 'noswf', 'nota', 'notagbsearch',
        +            'notagrelative', 'notagstack', 'notbi', 'notbidi', 'notbs',
        +            'notermbidi', 'noterse', 'notextauto', 'notextmode',
        +            'notf', 'notgst', 'notildeop', 'notimeout', 'notitle',
        +            'noto', 'notop', 'notr', 'nottimeout', 'nottybuiltin',
        +            'nottyfast', 'notx', 'novb', 'novisualbell', 'nowa',
        +            'nowarn', 'nowb', 'noweirdinvert', 'nowfh', 'nowfw',
        +            'nowildmenu', 'nowinfixheight', 'nowinfixwidth', 'nowiv',
        +            'nowmnu', 'nowrap', 'nowrapscan', 'nowrite', 'nowriteany',
        +            'nowritebackup', 'nows', 'nrformats', 'nu', 'number',
        +            'numberwidth', 'nuw', 'odev', 'oft', 'ofu',
        +            'omnifunc', 'opendevice', 'operatorfunc', 'opfunc',
        +            'osfiletype', 'pa', 'para', 'paragraphs',
        +            'paste', 'pastetoggle', 'patchexpr',
        +            'patchmode', 'path', 'pdev', 'penc', 'pex', 'pexpr',
        +            'pfn', 'ph', 'pheader', 'pi', 'pm', 'pmbcs',
        +            'pmbfn', 'popt', 'preserveindent', 'previewheight',
        +            'previewwindow', 'printdevice', 'printencoding', 'printexpr',
        +            'printfont', 'printheader', 'printmbcharset',
        +            'printmbfont', 'printoptions', 'prompt', 'pt', 'pumheight',
        +            'pvh', 'pvw', 'qe', 'quoteescape', 'rdt',
        +            'readonly', 'redrawtime', 'remap', 'report',
        +            'restorescreen', 'revins', 'ri', 'rightleft', 'rightleftcmd',
        +            'rl', 'rlc', 'ro', 'rs', 'rtp', 'ru',
        +            'ruf', 'ruler', 'rulerformat', 'runtimepath', 'sb', 'sbo',
        +            'sbr', 'sc', 'scb', 'scr', 'scroll', 'scrollbind',
        +            'scrolljump', 'scrolloff', 'scrollopt',
        +            'scs', 'sect', 'sections', 'secure', 'sel',
        +            'selection', 'selectmode', 'sessionoptions', 'sft',
        +            'sh', 'shcf', 'shell', 'shellcmdflag', 'shellpipe',
        +            'shellquote', 'shellredir', 'shellslash',
        +            'shelltemp', 'shelltype', 'shellxquote', 'shiftround',
        +            'shiftwidth', 'shm', 'shortmess', 'shortname',
        +            'showbreak', 'showcmd', 'showfulltag', 'showmatch',
        +            'showmode', 'showtabline', 'shq', 'si', 'sidescroll',
        +            'sidescrolloff', 'siso', 'sj', 'slm', 'sm', 'smartcase',
        +            'smartindent', 'smarttab', 'smc', 'smd', 'sn',
        +            'so', 'softtabstop', 'sol', 'sp', 'spc', 'spell',
        +            'spellcapcheck', 'spellfile', 'spelllang',
        +            'spf', 'spl', 'splitbelow', 'splitright', 'spr',
        +            'sps', 'sr', 'srr', 'ss', 'ssl', 'ssop', 'st', 'sta',
        +            'stal', 'startofline', 'statusline', 'stl', 'stmp',
        +            'sts', 'su', 'sua', 'suffixes', 'suffixesadd', 'sw',
        +            'swapfile', 'swapsync', 'swb', 'swf', 'switchbuf',
        +            'sws', 'sxq', 'syn', 'synmaxcol', 'ta',
        +            'tabline', 'tabpagemax', 'tabstop', 'tag',
        +            'tagbsearch', 'taglength', 'tagrelative', 'tags', 'tagstack',
        +            'tal', 'tb', 'tbi', 'tbidi', 'tbis', 'tbs',
        +            'tenc', 'term', 'termbidi', 'termencoding', 'terse',
        +            'textauto', 'textmode', 'textwidth', 'tf', 'tgst',
        +            'thesaurus', 'tildeop', 'timeout', 'timeoutlen',
        +            'title', 'titlelen', 'titleold', 'titlestring',
        +            'tl', 'tm', 'to', 'toolbar', 'toolbariconsize', 'top',
        +            'tpm', 'ts', 'tsl', 'tsr', 'ttimeout',
        +            'ttimeoutlen', 'ttm', 'tty', 'ttybuiltin', 'ttyfast', 'ttym',
        +            'ttymouse', 'ttyscroll', 'ttytype', 'tw', 'tx', 'uc',
        +            'ul', 'undolevels', 'updatecount', 'updatetime', 'ut',
        +            'vb', 'vbs', 'vdir', 've', 'verbose', 'verbosefile',
        +            'vfile', 'vi', 'viewdir', 'viewoptions', 'viminfo',
        +            'virtualedit', 'visualbell', 'vop', 'wa', 'wak',
        +            'warn', 'wb', 'wc', 'wcm', 'wd', 'weirdinvert', 'wfh',
        +            'wfw', /*'wh',*/ 'whichwrap', 'wi', 'wig', 'wildchar',
        +            'wildcharm', 'wildignore', 'wildmenu',
        +            'wildmode', 'wildoptions', 'wim', 'winaltkeys', 'window',
        +            'winfixheight', 'winfixwidth', 'winheight',
        +            'winminheight', 'winminwidth', 'winwidth', 'wiv',
        +            'wiw', 'wm', 'wmh', 'wmnu', 'wmw', 'wop', 'wrap',
        +            'wrapmargin', 'wrapscan', 'write', 'writeany',
        +            'writebackup', 'writedelay', 'ws', 'ww'
        +            ),
        +        3 => array(
        +            'BufAdd', 'BufCreate', 'BufDelete', 'BufEnter', 'BufFilePost',
        +            'BufFilePre', 'BufHidden', 'BufLeave', 'BufNew', 'BufNewFile',
        +            'BufRead', 'BufReadCmd', 'BufReadPost', 'BufReadPre',
        +            'BufUnload', 'BufWinEnter', 'BufWinLeave', 'BufWipeout',
        +            'BufWrite', 'BufWriteCmd', 'BufWritePost', 'BufWritePre',
        +            'Cmd-event', 'CmdwinEnter', 'CmdwinLeave', 'ColorScheme',
        +            'CursorHold', 'CursorHoldI', 'CursorMoved', 'CursorMovedI',
        +            'EncodingChanged', 'FileAppendCmd', 'FileAppendPost',
        +            'FileAppendPre', 'FileChangedRO', 'FileChangedShell',
        +            'FileChangedShellPost', 'FileEncoding', 'FileReadCmd',
        +            'FileReadPost', 'FileReadPre', 'FileType',
        +            'FileWriteCmd', 'FileWritePost', 'FileWritePre',
        +            'FilterReadPost', 'FilterReadPre', 'FilterWritePost',
        +            'FilterWritePre', 'FocusGained', 'FocusLost', 'FuncUndefined',
        +            'GUIEnter', 'GUIFailed', 'InsertChange', 'InsertEnter',
        +            'InsertLeave', 'MenuPopup', 'QuickFixCmdPost',
        +            'QuickFixCmdPre', 'RemoteReply', 'SessionLoadPost',
        +            'ShellCmdPost', 'ShellFilterPost', 'SourceCmd',
        +            'SourcePre', 'SpellFileMissing', 'StdinReadPost',
        +            'StdinReadPre', 'SwapExists', 'Syntax', 'TabEnter',
        +            'TabLeave', 'TermChanged', 'TermResponse', 'User',
        +            'UserGettingBored', 'VimEnter', 'VimLeave', 'VimLeavePre',
        +            'VimResized', 'WinEnter', 'WinLeave', 'abs', 'add', 'append',
        +            'argc', 'argidx', 'argv', 'atan', 'browse', 'browsedir',
        +            'bufexists', 'buflisted', 'bufloaded', 'bufname', 'bufnr',
        +            'bufwinnr', 'byte2line', 'byteidx', 'ceil', 'changenr',
        +            'char2nr', 'cindent', 'clearmatches', 'col', 'complete',
        +            'complete_add', 'complete_check', 'copy',
        +            'cos', 'count', 'cscope_connection', 'cursor', 'deepcopy',
        +            'delete', 'did_filetype', 'diff_filler', 'diff_hlID',
        +            'empty', 'escape', 'eval', 'eventhandler', 'executable',
        +            'exists', 'expand', 'extend', 'feedkeys', 'filereadable',
        +            'filewritable', 'filter', 'finddir', 'findfile', 'float2nr',
        +            'floor', 'fnameescape', 'fnamemodify', 'foldclosed',
        +            'foldclosedend', 'foldlevel', 'foldtext', 'foldtextresult',
        +            'foreground', 'garbagecollect', 'get', 'getbufline',
        +            'getbufvar', 'getchar', 'getcharmod', 'getcmdline',
        +            'getcmdpos', 'getcmdtype', 'getcwd', 'getfontname',
        +            'getfperm', 'getfsize', 'getftime', 'getftype', 'getline',
        +            'getloclist', 'getmatches', 'getpid', 'getpos', 'getqflist',
        +            'getreg', 'getregtype', 'gettabwinvar', 'getwinposx',
        +            'getwinposy', 'getwinvar', 'glob', 'globpath', 'has',
        +            'has_key', 'haslocaldir', 'hasmapto', 'histadd', 'histdel',
        +            'histget', 'histnr', 'hlID', 'hlexists', 'hostname', 'iconv',
        +            'indent', 'index', 'input', 'inputdialog', 'inputlist',
        +            'inputrestore', 'inputsave', 'inputsecret', 'insert',
        +            'isdirectory', 'islocked', 'items', 'join', 'keys', 'len',
        +            'libcall', 'libcallnr', 'line', 'line2byte', 'lispindent',
        +            'localtime', 'log10', 'maparg', 'mapcheck', 'matchadd',
        +            'matcharg', 'matchdelete', 'matchend', 'matchlist',
        +            'matchstr', 'max', 'min', 'mkdir', 'mode', 'nextnonblank',
        +            'nr2char', 'off', 'on', 'pathshorten', 'plugin', 'pow',
        +            'prevnonblank', 'printf', 'pumvisible', 'range', 'readfile',
        +            'reltime', 'reltimestr', 'remote_expr', 'remote_foreground',
        +            'remote_peek', 'remote_read', 'remote_send', 'remove',
        +            'rename', 'repeat', 'resolve', 'reverse', 'round', 'search',
        +            'searchdecl', 'searchpair', 'searchpairpos', 'searchpos',
        +            'server2client', 'serverlist', 'setbufvar', 'setcmdpos',
        +            'setline', 'setloclist', 'setmatches', 'setpos', 'setqflist',
        +            'setreg', 'settabwinvar', 'setwinvar', 'shellescape',
        +            'simplify', 'sin', 'sort', 'soundfold', 'spellbadword',
        +            'spellsuggest', 'split', 'sqrt', 'str2float', 'str2nr',
        +            'strftime', 'stridx', 'string', 'strlen', 'strpart',
        +            'strridx', 'strtrans', 'submatch', 'substitute',
        +            'synID', 'synIDattr', 'synIDtrans', 'synstack', 'system',
        +            'tabpagebuflist', 'tabpagenr', 'tabpagewinnr', 'tagfiles',
        +            'taglist', 'tempname', 'tolower', 'toupper', 'trunc',
        +            'type', 'values', 'virtcol', 'visualmode', 'winbufnr',
        +            'wincol', 'winline', 'winnr', 'winrestcmd',
        +            'winrestview', 'winsaveview', 'writefile'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}', '!', '%', '&', '*', '|', '/', '<', '>',
        +        '^', '-', '+', '~', '?', ':', '$', '@', '.'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => true,
        +        2 => true,
        +        3 => true
        +        ),
        +    'STYLES' => array(
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #adadad; font-style: italic;',
        +//            2 => 'color: #009966; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => ''
        +            ),
        +        'KEYWORDS' => array(
        +            1 => 'color: #804040;',
        +            2 => 'color: #668080;',
        +            3 => 'color: #25BB4D;'
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #000000;',
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #000000; font-weight:bold;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #C5A22D;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000000;'
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +        ),
        +    'OOLANG' => false, //Save some time as OO identifiers aren't used
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/visualfoxpro.php b/includes/geshi/visualfoxpro.php
        new file mode 100644
        index 0000000..e3cd748
        --- /dev/null
        +++ b/includes/geshi/visualfoxpro.php
        @@ -0,0 +1,454 @@
        + 'Visual Fox Pro',
        +    'COMMENT_SINGLE' => array(1 => "//", 2 => "\n*"),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'Case', 'Else', '#Else', 'Then',
        +            'Endcase', 'Enddefine', 'Enddo', 'Endfor', 'Endfunc', 'Endif', 'Endprintjob',
        +            'Endproc', 'Endscan', 'Endtext', 'Endwith', '#Endif',
        +            '#Elif','#Define','#If','#Include',
        +            '#Itsexpression','#Readclauses','#Region','#Section','#Undef','#Wname',
        +            'Define','Do',
        +            'For','Function','Hidden',
        +            'If','Local','Lparameter','Lparameters','Next','Otherwise',
        +            'Parameters','Printjob','Procedure','Protected','Public','Scan',
        +            'Text','While','With','Abs','Accept','Access','Aclass','Acopy',
        +            'Acos','Adatabases','Adbobjects','Addbs','Addrelationtoenv','Addtabletoenv',
        +            'Adel','Adir','Aelement','Aerror','Afields','Afont',
        +            'Agetclass','Agetfileversion','Ains','Ainstance','Alen','Align',
        +            'Alines','Alltrim','Alter','Amembers','Amouseobj','Anetresources',
        +            'Ansitooem','Append','Aprinters','Ascan','Aselobj','Asin',
        +            'Asort','Assert','Asserts','Assist','Asubscript','Asynchronous',
        +            'At_c','Atan','Atc','Atcc','Atcline','Atline',
        +            'Atn2','Aused','Autoform','Autoreport','Avcxclasses','Average',
        +            'BarCount','BarPrompt','BatchMode','BatchUpdateCount','Begin','BellSound',
        +            'BinToC','Bitand','Bitclear','Bitlshift','Bitnot',
        +            'Bitor','Bitrshift','Bitset','Bittest','Bitxor','Bof',
        +            'Browse','BrowseRefresh','Buffering','BuilderLock','COMArray','COMReturnError',
        +            'CToBin','Calculate','Call','Capslock','Cd','Cdow',
        +            'Ceiling','Central','Change','Char','Chdir','Chr',
        +            'Chrsaw','Chrtran','Chrtranc','Close','Cmonth','Cntbar',
        +            'Cntpad','Col','Comclassinfo','CommandTargetQuery','Compile','Completed',
        +            'Compobj','Compute','Concat','ConnectBusy','ConnectHandle','ConnectName',
        +            'ConnectString','ConnectTimeOut','ContainerReleaseType','Continue','Copy','Cos',
        +            'Cot','Count','Coverage','Cpconvert','Cpcurrent','Cpdbf',
        +            'Cpnotrans','Create','CreateBinary','Createobject','Createobjectex','Createoffline',
        +            'CrsBuffering','CrsFetchMemo','CrsFetchSize','CrsMaxRows','CrsMethodUsed','CrsNumBatch',
        +            'CrsShareConnection','CrsUseMemoSize','CrsWhereClause','Ctod','Ctot',
        +            'Curdate','Curdir','CurrLeft','CurrSymbol','CursorGetProp','CursorSetProp',
        +            'Curtime','Curval','DBGetProp','DBSetProp','DB_BufLockRow','DB_BufLockTable',
        +            'DB_BufOff','DB_BufOptRow','DB_BufOptTable','DB_Complette','DB_DeleteInsert','DB_KeyAndModified',
        +            'DB_KeyAndTimestamp','DB_KeyAndUpdatable','DB_LocalSQL','DB_NoPrompt','DB_Prompt','DB_RemoteSQL',
        +            'DB_TransAuto','DB_TransManual','DB_TransNone','DB_Update','Datetime','Day',
        +            'Dayname','Dayofmonth','Dayofweek','Dayofyear','Dbalias','Dbused',
        +            'Ddeaborttrans','Ddeadvise','Ddeenabled','Ddeexecute','Ddeinitiate','Ddelasterror',
        +            'Ddepoke','Dderequest','Ddesetoption','Ddesetservice','Ddesettopic','Ddeterminate',
        +            'Debugout','Declare','DefOLELCid','DefaultValue','Defaultext','Degrees',
        +            'DeleteTrigger','Desc','Description','Difference','Dimension','Dir',
        +            'Directory','Diskspace','DispLogin','DispWarnings','Display','Dll',
        +            'Dmy','DoDefault','DoEvents','Doc','Dow',
        +            'Drivetype','Drop','Dropoffline','Dtoc','Dtor','Dtos',
        +            'Dtot','DynamicInputMask','Each','Edit','Eject','Elif',
        +            'End','Eof','Erase','Evaluate','Event','Eventtracking',
        +            'Exclude','Exclusive','Exit','Exp','Export','External',
        +            'FDate','FTime','Fchsize','Fclose','Fcount','Fcreate',
        +            'Feof','Ferror','FetchMemo','FetchSize','Fflush','Fgets',
        +            'Filer','Filetostr','Find','Fklabel','Fkmax','Fldlist',
        +            'Flock','Floor','Flush','Fontmetric','Fopen','Forceext',
        +            'Forcepath','FormSetClass','FormSetLib','FormsClass','FormsLib','Found',
        +            'FoxPro','Foxcode','Foxdoc','Foxgen','Foxgraph','Foxview',
        +            'Fputs','Fread','French','Fseek','Fsize','Fv',
        +            'Fwrite','Gather','German','GetPem','Getbar','Getcolor',
        +            'Getcp','Getdir','Getenv','Getexpr','Getfile','Getfldstate',
        +            'Getfont','Gethost','Getnextmodified','Getobject','Getpad','Getpict',
        +            'Getprinter','Go','Gomonth','Goto','Graph','GridHorz',
        +            'GridShow','GridShowPos','GridSnap','GridVert','Help','HelpOn',
        +            'HelpTo','HighLightRow','Home','Hour','IMEStatus','IdleTimeOut',
        +            'Idxcollate','Ifdef','Ifndef','Iif','Import','Include',
        +            'Indbc','Index','Indexseek','Inkey','Inlist','Input',
        +            'Insert','InsertTrigger','Insmode','IsBlank','IsFLocked','IsLeadByte',
        +            'IsMouse','IsNull','IsRLocked','Isalpha','Iscolor','Isdigit',
        +            'IsExclusive','Ishosted','IsLower','IsReadOnly',
        +            'IsUpper','Italian','Japan','Join','Justdrive','Justext',
        +            'Justfname','Justpath','Juststem','KeyField','KeyFieldList','Keyboard'
        +            ),
        +        2 => array('Keymatch','LastProject','Lastkey','Lcase','Leftc','Len',
        +            'Lenc','Length','Likec','Lineno','LoadPicture',
        +            'Locate','Locfile','Log','Log10','Logout','Lookup',
        +            'Loop','Lower','Ltrim','Lupdate','Mail','MaxRecords',
        +            'Mcol','Md','Mdown','Mdx','Mdy','Memlines',
        +            'Menu','Messagebox','Minute','Mkdir','Mline','Modify',
        +            'Month','Monthname','Mouse','Mrkbar','Mrkpad','Mrow',
        +            'Mtdll','Mton','Mwindow','Native','Ndx','Network',
        +            'NoFilter','Nodefault','Normalize','Note','Now','Ntom',
        +            'NullString','Numlock','Nvl','ODBChdbc','ODBChstmt','OLEDropTextInsertion',
        +            'OLELCid','Objnum','Objref','Objtoclient','Objvar','Occurs',
        +            'Oemtoansi','Oldval','OlePublic','Olereturnerror','On','Open',
        +            'Oracle','Order','Os','Outer','PCount','Pack',
        +            'PacketSize','Padc','Padl','Padr','Payment','Pcol',
        +            'PemStatus','Pi','Pivot','Play','Pop','Popup',
        +            'Power','PrimaryKey','Printstatus','Private','Prmbar','Prmpad',
        +            'ProjectClick','Proper','Prow','Prtinfo','Push','Putfile',
        +            'Pv','Qpr','Quater','QueryTimeOut','Quit','Radians',
        +            'Rand','Rat','Ratc','Ratline','Rd','Rdlevel',
        +            'Read','Readkey','Recall','Reccount','RecentlyUsedFiles','Recno',
        +            'Recsize','Regional','Reindex','RelatedChild','RelatedTable','RelatedTag',
        +            'Remove','Rename','Repeat','Replace','Replicate','Report',
        +            'ResHeight','ResWidth','ResourceOn','ResourceTo','Resources','Restore',
        +            'Resume','Retry','Return','Revertoffline','Rgbscheme','Rightc',
        +            'Rlock','Rmdir','Rollback','Round','Rtod','Rtrim',
        +            'RuleExpression','RuleText','Run','Runscript','Rview','SQLAsynchronous',
        +            'SQLBatchMode','SQLCancel','SQLColumns','SQLConnect','SQLConnectTimeOut','SQLDisconnect',
        +            'SQLDispLogin','SQLDispWarnings','SQLExec','SQLGetProp','SQLIdleTimeOut','SQLMoreResults',
        +            'SQLPrepare','SQLQueryTimeOut','SQLSetProp','SQLTables','SQLTransactions','SQLWaitTime',
        +            'Save','SavePicture','ScaleUnits','Scatter','Scols',
        +            'Scroll','Sec','Second','Seek','Select','SendUpdates',
        +            'Set','SetDefault','Setfldstate','Setup','ShareConnection','ShowOLEControls',
        +            'ShowOLEInsertable','ShowVCXs','Sign','Sin','Size','SizeBox',
        +            'Skpbar','Skppad','Sort','Soundex','SourceName','Sqlcommit',
        +            'Sqll','Sqlrollback','Sqlstringconnect','Sqrt','Srows','StatusBar',
        +            'Store','Str','Strconv','Strtofile','Strtran','Stuff',
        +            'Stuffc','Substr','Substrc','Substring','Sum','Suspend',
        +            'Sys','Sysmetric','TabOrdering','Table','TableRefresh','Tablerevert',
        +            'Tableupdate','TagCount','TagNo','Tan','Target','This',
        +            'Thisform','Thisformset','Timestamp','Timestampdiff','Total','Transactions',
        +            'Transform','Trim','Truncate','Ttoc','Ttod','Txnlevel',
        +            'Txtwidth','Type','Ucase','Undefine','Unlock','Unpack',
        +            'Updatable','UpdatableFieldList','Update','UpdateName','UpdateNameList','UpdateTrigger',
        +            'UpdateType','Updated','Upper','Upsizing','Usa','Use',
        +            'UseMemoSize','Used','Val','Validate','Varread','Vartype',
        +            'Version','VersionLanguage','Wait','WaitTime','Wborder','Wchild',
        +            'Wcols','Week','Wexist','Wfont','WhereType','Windcmd',
        +            'Windhelp','Windmemo','Windmenu','Windmodify','Windquery','Windscreen',
        +            'Windsnip','Windstproc','WizardPrompt','Wlast','Wlcol','Wlrow',
        +            'Wmaximum','Wminimum','Wontop','Woutput','Wparent','Wread',
        +            'Wrows','Wtitle','Wvisible','Year','Zap','_Alignment',
        +            '_Asciicols','_Asciirows','_Assist','_Beautify','_Box','_Browser',
        +            '_Builder','_Calcmem','_Calcvalue','_Cliptext','_Converter','_Coverage',
        +            '_Curobj','_Dblclick','_Diarydate','_Dos','_Foxdoc','_Foxgraph',
        +            '_Gallery','_Gengraph','_Genhtml','_Genmenu','_Genpd','_Genscrn',
        +            '_Genxtab','_Getexpr','_Include','_Indent','_Lmargin','_Mac',
        +            '_Mbr_appnd','_Mbr_cpart','_Mbr_delet','_Mbr_font','_Mbr_goto','_Mbr_grid',
        +            '_Mbr_link','_Mbr_mode','_Mbr_mvfld','_Mbr_mvprt','_Mbr_seek','_Mbr_sp100',
        +            '_Mbr_sp200','_Mbr_szfld','_Mbrowse','_Mda_appnd','_Mda_avg','_Mda_brow',
        +            '_Mda_calc','_Mda_copy','_Mda_count','_Mda_label','_Mda_pack','_Mda_reprt',
        +            '_Mda_rindx','_Mda_setup','_Mda_sort','_Mda_sp100','_Mda_sp200','_Mda_sp300',
        +            '_Mda_sum','_Mda_total','_Mdata','_Mdiary','_Med_clear','_Med_copy',
        +            '_Med_cut','_Med_cvtst','_Med_find','_Med_finda','_Med_goto','_Med_insob',
        +            '_Med_link','_Med_obj','_Med_paste','_Med_pref','_Med_pstlk','_Med_redo',
        +            '_Med_repl','_Med_repla','_Med_slcta','_Med_sp100','_Med_sp200','_Med_sp300',
        +            '_Med_sp400','_Med_sp500','_Med_undo','_Medit','_Mfi_clall','_Mfi_close',
        +            '_Mfi_export','_Mfi_import','_Mfi_new','_Mfi_open','_Mfi_pgset','_Mfi_prevu',
        +            '_Mfi_print','_Mfi_quit','_Mfi_revrt','_Mfi_savas','_Mfi_save','_Mfi_send',
        +            '_Mfi_setup','_Mfi_sp100','_Mfi_sp200','_Mfi_sp300','_Mfi_sp400','_Mfile',
        +            '_Mfiler','_Mfirst','_Mlabel','_Mlast','_Mline','_Mmacro',
        +            '_Mmbldr','_Mpr_beaut','_Mpr_cancl','_Mpr_compl','_Mpr_do','_Mpr_docum',
        +            '_Mpr_formwz','_Mpr_gener','_Mpr_graph','_Mpr_resum','_Mpr_sp100','_Mpr_sp200',
        +            '_Mpr_sp300','_Mpr_suspend','_Mprog','_Mproj','_Mrc_appnd','_Mrc_chnge',
        +            '_Mrc_cont','_Mrc_delet','_Mrc_goto','_Mrc_locat','_Mrc_recal','_Mrc_repl',
        +            '_Mrc_seek','_Mrc_sp100','_Mrc_sp200','_Mrecord','_Mreport','_Mrqbe',
        +            '_Mscreen','_Msm_data','_Msm_edit','_Msm_file','_Msm_format','_Msm_prog',
        +            '_Msm_recrd','_Msm_systm','_Msm_text','_Msm_tools','_Msm_view','_Msm_windo',
        +            '_Mst_about','_Mst_ascii','_Mst_calcu','_Mst_captr','_Mst_dbase','_Mst_diary',
        +            '_Mst_filer','_Mst_help','_Mst_hphow','_Mst_hpsch','_Mst_macro','_Mst_office',
        +            '_Mst_puzzl','_Mst_sp100','_Mst_sp200','_Mst_sp300','_Mst_specl','_Msysmenu',
        +            '_Msystem','_Mtable','_Mtb_appnd','_Mtb_cpart','_Mtb_delet','_Mtb_delrc',
        +            '_Mtb_goto','_Mtb_link','_Mtb_mvfld','_Mtb_mvprt','_Mtb_props','_Mtb_recal',
        +            '_Mtb_sp100','_Mtb_sp200','_Mtb_sp300','_Mtb_sp400','_Mtb_szfld','_Mwi_arran',
        +            '_Mwi_clear','_Mwi_cmd','_Mwi_color','_Mwi_debug','_Mwi_hide','_Mwi_hidea',
        +            '_Mwi_min','_Mwi_move','_Mwi_rotat','_Mwi_showa','_Mwi_size','_Mwi_sp100',
        +            '_Mwi_sp200','_Mwi_toolb','_Mwi_trace','_Mwi_view','_Mwi_zoom','_Mwindow',
        +            '_Mwizards','_Mwz_all','_Mwz_form','_Mwz_foxdoc','_Mwz_import','_Mwz_label',
        +            '_Mwz_mail','_Mwz_pivot','_Mwz_query','_Mwz_reprt','_Mwz_setup','_Mwz_table',
        +            '_Mwz_upsizing','_Netware','_Oracle','_Padvance','_Pageno','_Pbpage',
        +            '_Pcolno','_Pcopies','_Pdparms','_Pdriver','_Pdsetup','_Pecode',
        +            '_Peject','_Pepage','_Pform','_Plength','_Plineno','_Ploffset',
        +            '_Ppitch','_Pquality','_Pretext','_Pscode','_Pspacing','_Pwait',
        +            '_Rmargin','_Runactivedoc','_Samples','_Screen','_Shell','_Spellchk',
        +            '_Sqlserver','_Startup','_Tabs','_Tally','_Text','_Throttle',
        +            '_Transport','_Triggerlevel','_Unix','_WebDevOnly','_WebMenu','_WebMsftHomePage',
        +            '_WebVFPHomePage','_WebVfpOnlineSupport','_Windows','_Wizard','_Wrap','_scctext',
        +            '_vfp','Additive','After','Again','Aindent','Alignright',
        +            'All','Alt','Alternate','And','Ansi','Any',
        +            'Aplabout','App','Array','As','Asc','Ascending',
        +            'Ascii','At','Attributes','Automatic','Autosave','Avg',
        +            'Bar','Before','Bell','Between','Bitmap','Blank',
        +            'Blink','Blocksize','Border','Bottom','Brstatus','Bucket',
        +            'Buffers','By','Candidate','Carry','Cascade','Catalog',
        +            'Cdx','Center','Century','Cga','Character','Check',
        +            'Classlib','Clock','Cnt','Codepage','Collate','Color',
        +            'Com1','Com2','Command','Compact','Compatible','Compress',
        +            'Confirm','Connection','Connections','Connstring','Console','Copies',
        +            'Cpcompile','Cpdialog','Csv','Currency','Cycle','Databases',
        +            'Datasource','Date','Db4','Dbc','Dbf','Dbmemo3',
        +            'Debug','Decimals','Defaultsource','Deletetables','Delimited','Delimiters',
        +            'Descending','Design','Development','Device','Dif','Disabled',
        +            'Distinct','Dlls','Dohistory','Dos','Dosmem','Double',
        +            'Driver','Duplex','Echo','Editwork','Ega25','Ega43',
        +            'Ems','Ems64','Encrypt','Encryption','Environment','Escape',
        +            'Events','Exact','Except','Exe','Exists','Expression',
        +            'Extended','F','Fdow','Fetch','Field','Fields',
        +            'File','Files','Fill','Fixed','Float','Foldconst',
        +            'Font','Footer','Force','Foreign','Fox2x','Foxplus',
        +            'Free','Freeze','From','Fullpath','Fw2','Fweek',
        +            'Get','Gets','Global','Group','Grow','Halfheight',
        +            'Having','Heading','Headings','Helpfilter','History','Hmemory',
        +            'Hours','Id','In','Indexes','Information','Instruct',
        +            'Int','Integer','Intensity','Intersect','Into','Is',
        +            'Isometric','Key','Keycolumns','Keycomp','Keyset','Last',
        +            'Ledit','Level','Library','Like','Linked','Lock',
        +            'Logerrors','Long','Lpartition','Mac','Macdesktop','Machelp',
        +            'Mackey','Macros','Mark','Master','Max','Maxmem',
        +            'Mdi','Memlimit','Memory','Memos','Memowidth','Memvar',
        +            'Menus','Messages','Middle','Min','Minimize','Minus',
        +            'Mod','Modal','Module','Mono43','Movers','Multilocks',
        +            'Mvarsiz','Mvcount','N','Near','Negotiate','Noalias',
        +            'Noappend','Noclear','Noclose','Noconsole','Nocptrans','Nodata',
        +            'Nodebug','Nodelete','Nodup','Noedit','Noeject','Noenvironment',
        +            'Nofloat','Nofollow','Nogrow','Noinit','Nolgrid','Nolink',
        +            'Nolock','Nomargin','Nomdi','Nomenu','Nominimize','Nomodify'
        +            ),
        +        3 => array('Nomouse','None','Nooptimize','Nooverwrite','Noprojecthook','Noprompt',
        +            'Noread','Norefresh','Norequery','Norgrid','Norm','Normal',
        +            'Nosave','Noshadow','Noshow','Nospace','Not','Notab',
        +            'Notify','Noupdate','Novalidate','Noverify','Nowait','Nowindow',
        +            'Nowrap','Nozoom','Npv','Null','Number','Objects',
        +            'Odometer','Of','Off','Oleobjects','Only','Optimize',
        +            'Or','Orientation','Output','Outshow','Overlay','Overwrite',
        +            'Pad','Palette','Paperlength','Papersize','Paperwidth','Password',
        +            'Path','Pattern','Pause','Pdox','Pdsetup','Pen',
        +            'Pfs','Pixels','Plain','Popups','Precision','Preference',
        +            'Preview','Primary','Printer','Printquality','Procedures','Production',
        +            'Program','Progwork','Project','Prompt','Query','Random',
        +            'Range','Readborder','Readerror','Record','Recover','Redit',
        +            'Reference','References','Relative','Remote','Reprocess','Resource',
        +            'Rest','Restrict','Rgb','Right','Row','Rowset',
        +            'Rpd','Runtime','Safety','Same','Sample','Say',
        +            'Scale','Scheme','Scoreboard','Screen','Sdf','Seconds',
        +            'Selection','Shadows','Shared','Sheet','Shell','Shift',
        +            'Shutdown','Single','Some','Sortwork','Space','Sql',
        +            'Standalone','Status','Std','Step','Sticky','String',
        +            'Structure','Subclass','Summary','Sylk','Sysformats','Sysmenus',
        +            'System','T','Tab','Tables','Talk','Tedit',
        +            'Textmerge','Time','Timeout','Titles','Tmpfiles','To',
        +            'Topic','Transaction','Trap','Trbetween','Trigger','Ttoption',
        +            'Typeahead','Udfparms','Union','Unique','Userid','Users',
        +            'Values','Var','Verb','Vga25','Vga50','Views',
        +            'Volume','Where','Windows','Wk1','Wk3','Wks',
        +            'Workarea','Wp','Wr1','Wrap','Wrk','Xcmdfile',
        +            'Xl5','Xl8','Xls','Y','Yresolution','Zoom',
        +            'Activate','ActivateCell','Add','AddColumn','AddItem','AddListItem',
        +            'AddObject','AddProperty','AddToSCC','AfterBuild','AfterCloseTables','AfterDock',
        +            'AfterRowColChange','BeforeBuild','BeforeDock','BeforeOpenTables','BeforeRowColChange','Box',
        +            'Build','CheckIn','CheckOut','Circle','Clear','ClearData',
        +            'Cleanup','Click','CloneObject','CloseEditor','CloseTables','Cls',
        +            'CommandTargetExec','CommandTargetQueryStas','ContainerRelease','DataToClip','DblClick','Deactivate',
        +            'Delete','DeleteColumn','Deleted','Destroy','DoCmd','Dock',
        +            'DoScroll','DoVerb','DownClick','Drag','DragDrop','DragOver',
        +            'DropDown','Draw','EnterFocus','Error','ErrorMessage','Eval',
        +            'ExitFocus','FormatChange','GetData','GetFormat','GetLatestVersion','GoBack',
        +            'GotFocus','GoForward','GridHitTest','Hide','HideDoc','IndexToItemId',
        +            'Init','InteractiveChange','Item','ItemIdToIndex','KeyPress','Line',
        +            'Load','LostFocus','Message','MiddleClick','MouseDown','MouseMove',
        +            'MouseUp','MouseWheel','Move','Moved','NavigateTo','Newobject',
        +            'OLECompleteDrag','OLEDrag','OLEDragDrop','OLEDragOver','OLEGiveFeedback','OLESetData',
        +            'OLEStartDrag','OpenEditor','OpenTables','Paint','Point','Print',
        +            'ProgrammaticChange','PSet','QueryAddFile','QueryModifyFile','QueryRemoveFile','QueryRunFile',
        +            'QueryUnload','RangeHigh','RangeLow','ReadActivate','ReadExpression','ReadDeactivate',
        +            'ReadMethod','ReadShow','ReadValid','ReadWhen','Refresh','Release',
        +            'RemoveFromSCC','RemoveItem','RemoveListItem','RemoveObject','Requery','RequestData',
        +            'Reset','ResetToDefault','Resize','RightClick','SaveAs','SaveAsClass',
        +            'Scrolled','SetAll','SetData','SetFocus','SetFormat','SetMain',
        +            'SetVar','SetViewPort','ShowDoc','ShowWhatsThis','TextHeight','TextWidth',
        +            'Timer','UIEnable','UnDock','UndoCheckOut','Unload','UpClick',
        +            'Valid','WhatsThisMode','When','WriteExpression','WriteMethod','ZOrder',
        +            'ATGetColors','ATListColors','Accelerate','ActiveColumn','ActiveControl','ActiveForm',
        +            'ActiveObjectId','ActivePage','ActiveProject','ActiveRow','AddLineFeeds','Alias',
        +            'Alignment','AllowAddNew','AllowHeaderSizing','AllowResize','AllowRowSizing','AllowTabs',
        +            'AlwaysOnTop','Application','AutoActivate','AutoCenter','AutoCloseTables','AutoIncrement',
        +            'AutoOpenTables','AutoRelease','AutoSize','AutoVerbMenu','AutoYield','AvailNum',
        +            'BackColor','BackStyle','BaseClass','BorderColor','BorderStyle','BorderWidth',
        +            'Bound','BoundColumn','BoundTo','BrowseAlignment','BrowseCellMarg','BrowseDestWidth',
        +            'BufferMode','BufferModeOverride','BuildDateTime','ButtonCount','ButtonIndex','Buttons',
        +            'CLSID','CanAccelerate','CanGetFocus','CanLoseFocus','Cancel','Caption',
        +            'ChildAlias','ChildOrder','Class','ClassLibrary','ClipControls','ClipRect',
        +            'Closable','ColorScheme','ColorSource','ColumnCount','ColumnHeaders','ColumnLines',
        +            'ColumnOrder','ColumnWidths','Columns','Comment','ContinuousScroll','ControlBox',
        +            'ControlCount','ControlIndex','ControlSource','Controls','CurrentControl','CurrentX',
        +            'CurrentY','CursorSource','Curvature','DataSession','DataSessionId','DataSourceObj',
        +            'DataType','Database','DateFormat','DateMark','DefButton','DefButtonOrig',
        +            'DefHeight','DefLeft','DefTop','DefWidth','Default','DefaultFilePath',
        +            'DefineWindows','DeleteMark','Desktop','Dirty','DisabledBackColor','DisabledByEOF',
        +            'DisabledForeColor','DisabledItemBackColor','DisabledItemForeColor','DisabledPicture','DispPageHeight','DispPageWidth',
        +            'DisplayCount','DisplayValue','DoCreate','DockPosition','Docked','DocumentFile',
        +            'DownPicture','DragIcon','DragMode','DragState','DrawMode','DrawStyle',
        +            'DrawWidth','DynamicAlignment','DynamicBackColor','DynamicCurrentControl','DynamicFontBold','DynamicFontItalic',
        +            'DynamicFontName','DynamicFontOutline','DynamicFontShadow','DynamicFontSize','DynamicFontStrikethru','DynamicFontUnderline',
        +            'DynamicForeColor','EditFlags','Enabled','EnabledByReadLock','Encrypted','EnvLevel',
        +            'ErasePage','FileClass','FileClassLibrary','FillColor','FillStyle','Filter',
        +            'FirstElement','FontBold','FontItalic','FontName','FontOutline','FontShadow',
        +            'FontSize','FontStrikethru','FontUnderline','ForceFocus','ForeColor','FormCount',
        +            'FormIndex','FormPageCount','FormPageIndex','Format','Forms','FoxFont',
        +            'FullName','GoFirst','GoLast','GridLineColor','GridLineWidth','GridLines'
        +            ),
        +        4 => array('HPROJ','HWnd','HalfHeightCaption','HasClip','HeaderGap','HeaderHeight',
        +            'Height','HelpContextID','HideSelection','Highlight','HomeDir','HostName',
        +            'HotKey','HscrollSmallChange','IMEMode','Icon','IgnoreInsert','InResize',
        +            'Increment','IncrementalSearch','InitialSelectedAlias','InputMask','Instancing','IntegralHeight',
        +            'Interval','ItemBackColor','ItemData','ItemForeColor','ItemIDData','ItemTips',
        +            'JustReadLocked','KeyPreview','KeyboardHighValue','KeyboardLowValue','LastModified','Left',
        +            'LeftColumn','LineSlant','LinkMaster','List','ListCount','ListIndex',
        +            'ListItem','ListItemId','LockDataSource','LockScreen','MDIForm','MainClass',
        +            'MainFile','Margin','MaxButton','MaxHeight','MaxLeft','MaxLength',
        +            'MaxTop','MaxWidth','MemoWindow','MinButton','MinHeight','MinWidth',
        +            'MouseIcon','MousePointer','Movable','MoverBars','MultiSelect','Name',
        +            'NapTime','NewIndex','NewItemId','NoDataOnLoad','NoDefine','NotifyContainer',
        +            'NullDisplay','NumberOfElements','OLEDragMode','OLEDragPicture','OLEDropEffects','OLEDropHasData',
        +            'OLEDropMode','OLERequestPendingTimeOut','OLEServerBusyRaiseError','OLEServerBusyTimeOut','OLETypeAllowed','OleClass',
        +            'OleClassId','OleControlContainer','OleIDispInValue','OleIDispOutValue','OleIDispatchIncoming','OleIDispatchOutgoing',
        +            'OnResize','OneToMany','OpenViews','OpenWindow','PageCount','PageHeight',
        +            'PageOrder','PageWidth','Pages','Panel','PanelLink','Parent',
        +            'ParentAlias','ParentClass','Partition','PasswordChar','Picture','ProcessID',
        +            'ProgID','ProjectHookClass','ProjectHookLibrary','Projects','ReadColors','ReadCycle',
        +            'ReadFiller','ReadLock','ReadMouse','ReadOnly','ReadSave','ReadSize',
        +            'ReadTimeout','RecordMark','RecordSource','RecordSourceType','Rect','RelationalExpr',
        +            'RelativeColumn','RelativeRow','ReleaseErase','ReleaseType','ReleaseWindows','Resizable',
        +            'RightToLeft','RowHeight','RowSource','RowSourceType','SCCProvider','SCCStatus',
        +            'SDIForm','ScaleMode','ScrollBars','SelLength','SelStart','SelText',
        +            'SelectOnEntry','Selected','SelectedBackColor','SelectedForeColor','SelectedID','SelectedItemBackColor',
        +            'SelectedItemForeColor','SelfEdit','ServerClass','ServerClassLibrary','ServerHelpFile','ServerName',
        +            'ServerProject','ShowTips','ShowWindow','Sizable','Size','Size',
        +            'Size','Skip','SkipForm','Sorted','SourceType','Sparse',
        +            'SpecialEffect','SpinnerHighValue','SpinnerLowValue','SplitBar','StartMode','StatusBarText',
        +            'Stretch','StrictDateEntry','Style','SystemRefCount','TabIndex','TabStop',
        +            'TabStretch','TabStyle','Tabhit','Tabs','Tag','TerminateRead',
        +            'ThreadID','TitleBar','ToolTipText','Top','TopIndex','TopItemId',
        +            'TypeLibCLSID','TypeLibDesc','TypeLibName','UnlockDataSource','Value','ValueDirty',
        +            'VersionComments','VersionCompany','VersionCopyright','VersionDescription','VersionNumber','VersionProduct',
        +            'VersionTrademarks','View','ViewPortHeight','ViewPortLeft','ViewPortTop','ViewPortWidth',
        +            'Visible','VscrollSmallChange','WasActive','WasOpen','WhatsThisButton','WhatsThisHelp',
        +            'WhatsThisHelpID','Width','WindowList','WindowNTIList','WindowState','WindowType',
        +            'WordWrap','ZOrderSet','ActiveDoc','Checkbox','Column','ComboBox',
        +            'CommandButton','CommandGroup','Container','Control','Cursor','Custom',
        +            'DataEnvironment','EditBox','Empty','FontClass','Form','Formset',
        +            'General','Grid','Header','HyperLink','Image','Label',
        +            'ListBox','Memo','OleBaseControl','OleBoundControl','OleClassIDispOut','OleControl',
        +            'OptionButton','OptionGroup','Page','PageFrame','ProjectHook','RectClass',
        +            'Relation','Session','Shape','Spinner','TextBox' ,'Toolbar'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        "!", "@", "$", "%",
        +        "(", ")", "{", "}", "[", "]",
        +        "-", "+", "*", "/",
        +        "=", "<", ">",
        +        ":", ";", ",", ".", "&",
        +        "?", "??", "???"
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: blue;',
        +            2 => 'color: blue;',
        +            3 => 'color: blue;',
        +            4 => 'color: blue;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: green; font-style: italic;',
        +            2 => 'color: green; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: blue;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: blue;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/visualprolog.php b/includes/geshi/visualprolog.php
        new file mode 100644
        index 0000000..1a05e75
        --- /dev/null
        +++ b/includes/geshi/visualprolog.php
        @@ -0,0 +1,127 @@
        + 'Visual Prolog',
        +    'COMMENT_SINGLE' => array(1 => '%'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'HARDQUOTE' => array('@"', '"'),
        +    'HARDESCAPE' => array('""'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'clauses','constants','constructors','delegate','domains','facts',
        +            'goal','guards','inherits','monitor','namespace','open',
        +            'predicates','properties','resolve','supports'
        +            ),
        +        2 => array(
        +            'align','and','anyflow','as','bitsize','catch','determ','digits',
        +            'div','do','else','elseif','erroneous','externally','failure',
        +            'finally','from','language','mod','multi','nondeterm','or',
        +            'procedure','quot','rem','single','then','to'
        +            ),
        +        3 => array(
        +            '#bininclude','#else','#elseif','#endif','#error','#export',
        +            '#externally','#if','#import','#include','#message','#options',
        +            '#orrequires','#requires','#then','#warning'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '+', '-', '*', '?', '=', '/', '>', '<', '^', '!', ':', '(', ')', '{', '}', '[', ']'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => true,
        +        1 => true,
        +        2 => true,
        +        3 => true
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #808000;',
        +            2 => 'color: #333399;',
        +            3 => 'color: #800080;',
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #AA77BD',
        +            'MULTI' => 'color: #AA77BD'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #008080;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #00B7B7;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #0000FF;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #008000;',
        +            1 => 'color: #808000;',
        +            2 => 'color: #333399;',
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => ':',
        +        2 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        0 => "(?)[A-Z_]\w*(?!\w)",
        +        1 => "\\b(end\\s+)?(implement|class|interface)\\b",
        +        2 => "\\b(end\\s+)?(foreach|if|try)\\b",
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/whitespace.php b/includes/geshi/whitespace.php
        new file mode 100644
        index 0000000..4a6957b
        --- /dev/null
        +++ b/includes/geshi/whitespace.php
        @@ -0,0 +1,119 @@
        + 'Whitespace',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(
        +        3 => "/[^\n\x20\x09]+/s"
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        ),
        +    'SYMBOLS' => array(
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            ),
        +        'COMMENTS' => array(
        +            3 => 'color: #666666; font-style: italic;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            2 => 'background-color: #FF9999;',
        +            3 => 'background-color: #9999FF;'
        +            )
        +        ),
        +    'URLS' => array(
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        2 => array(
        +            GESHI_SEARCH => "(? " ",
        +            GESHI_MODIFIERS => 's',
        +            GESHI_BEFORE => "",
        +            GESHI_AFTER => ""
        +            ),
        +        3 => array(
        +            GESHI_SEARCH => "\x09",
        +            GESHI_REPLACE => "	",
        +            GESHI_MODIFIERS => 's',
        +            GESHI_BEFORE => "",
        +            GESHI_AFTER => ""
        +            ),
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'ENABLE_FLAGS' => array(
        +            'KEYWORDS' => GESHI_NEVER,
        +            'SYMBOLS' => GESHI_NEVER,
        +            'STRINGS' => GESHI_NEVER,
        +//            'REGEXPS' => GESHI_NEVER,
        +            'NUMBERS' => GESHI_NEVER
        +            )
        +        )
        +);
        diff --git a/includes/geshi/whois.php b/includes/geshi/whois.php
        new file mode 100644
        index 0000000..0eebde2
        --- /dev/null
        +++ b/includes/geshi/whois.php
        @@ -0,0 +1,178 @@
        + 'Whois (RPSL format)',
        +    'COMMENT_SINGLE' => array(1 => '% ', 2 => '%ERROR:'),
        +    'COMMENT_MULTI' => array(),
        +    'COMMENT_REGEXP' => array(
        +        //Description
        +        3 => '/(?:(?<=^remarks:)|(?<=^descr:))(.|\n\s)*$/mi',
        +
        +        //Contact Details
        +        4 => '/(?<=^address:)(.|\n\s)*$/mi',
        +        5 => '/\+\d+(?:(?:\s\(\d+(\s\d+)*\))?(?:\s\d+)+|-\d+-\d+)/',
        +        6 => '/\b(?!-|\.)[\w\-\.]+(?!-|\.)@((?!-)[\w\-]+\.)+\w+\b/',
        +
        +        //IP, Networks and AS information\links
        +        7 => '/\b(? '/\bAS\d+\b/'
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array(),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array( //Object Types
        +            'as-block','as-set','aut-num','domain','filter-set','inet-rtr',
        +            'inet6num','inetnum','irt','key-cert','limerick','mntner',
        +            'organisation','peering-set','person','poem','role','route-set',
        +            'route','route6','rtr-set'
        +            ),
        +        2 => array( //Field Types
        +            'abuse-mailbox','address','admin-c','aggr-bndry','aggr-mtd','alias',
        +            'as-block','as-name','as-set','aut-num','auth','author','certif',
        +            'changed','components','country','default','descr','dom-net',
        +            'domain','ds-rdata','e-mail','encryption','export','export-comps',
        +            'fax-no','filter','filter-set','fingerpr','form','holes','ifaddr',
        +            'import','inet-rtr','inet6num','inetnum','inject','interface','irt',
        +            'irt-nfy','key-cert','limerick','local-as','mbrs-by-ref',
        +            'member-of','members','method','mnt-by','mnt-domains','mnt-irt',
        +            'mnt-lower','mnt-nfy','mnt-ref','mnt-routes','mntner','mp-default',
        +            'mp-export','mp-filter','mp-import','mp-members','mp-peer',
        +            'mp-peering','netname','nic-hdl','notify','nserver','org',
        +            'org-name','org-type','organisation','origin','owner','peer',
        +            'peering','peering-set','person','phone','poem','ref-nfy','refer',
        +            'referral-by','remarks','rev-srv','role','route','route-set',
        +            'route6','rtr-set','signature','source','status','sub-dom','tech-c',
        +            'text','upd-to','zone-c'
        +            ),
        +        3 => array( //RPSL reserved
        +            'accept','action','and','announce','any','as-any','at','atomic',
        +            'except','from','inbound','into','networks','not','or','outbound',
        +            'peeras','refine','rs-any','to'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        ':'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000FF; font-weight: bold;',
        +            2 => 'color: #000080; font-weight: bold;',
        +            3 => 'color: #990000; font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #666666; font-style: italic;',
        +            2 => 'color: #666666; font-style: italic;',
        +            3 => 'color: #404080;',
        +            4 => 'color: #408040;',
        +            5 => 'color: #408040;',
        +            6 => 'color: #408040;',
        +            7 => 'color: #804040;',
        +            8 => 'color: #804040;',
        +            'MULTI' => 'color: #666666; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;',
        +            'HARD' => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #009900;'
        +            ),
        +        'STRINGS' => array(
        +            0 => '',
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #000080;',
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #0000FF;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #000088;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => 'http://www.irr.net/docs/rpsl.html'
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        //Variables
        +        0 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*"
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4,
        +    'PARSER_CONTROL' => array(
        +        'KEYWORDS' => array(
        +            1 => array(
        +                'DISALLOWED_BEFORE' => '(?<=\A |\A \n(?m:^)|\n\n(?m:^))'
        +                ),
        +            2 => array(
        +                'DISALLOWED_BEFORE' => '(?m:^)'
        +                )
        +            ),
        +        'ENABLE_FLAGS' => array(
        +            'BRACKETS' => GESHI_NEVER,
        +            'SYMBOLS' => GESHI_NEVER,
        +            'STRINGS' => GESHI_NEVER,
        +            'ESCAPE_CHAR' => GESHI_NEVER,
        +            'NUMBERS' => GESHI_NEVER,
        +            'METHODS' => GESHI_NEVER,
        +            'SCRIPT' => GESHI_NEVER
        +            )
        +        )
        +);
        diff --git a/includes/geshi/winbatch.php b/includes/geshi/winbatch.php
        new file mode 100644
        index 0000000..bae96a0
        --- /dev/null
        +++ b/includes/geshi/winbatch.php
        @@ -0,0 +1,367 @@
        + 'Winbatch',
        +    'COMMENT_SINGLE' => array(1 => ';', 2 => ':'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"', '`'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'While', 'To', 'Then', 'Switch', 'Select', 'Return', 'Next', 'IntControl', 'Include', 'In', 'If',
        +            'Goto', 'GoSub', 'ForEach', 'For', 'Exit', 'Execute', 'ErrorMode', 'EndWhile', 'EndSwitch', '#EndSubRoutine',
        +            'EndSelect', 'EndIf', '#EEndFunction', 'EndFor', 'End', 'Else', 'DropWild', 'Drop', '#DefineSubRoutine',
        +            '#DefineFunction', 'Debug', 'Continue', 'Case', 'CallExt', 'Call', 'By', 'BreakPoint', 'Break'
        +            ),
        +        2 => array(
        +            'ZOOMED', 'YES', 'WORD4', 'WORD2', 'WORD1', 'WHOLESECTION', 'WAIT', 'UNSORTED', 'UNCHECK', 'TRUE', 'TILE',
        +            'TAB', 'STRING', 'STACK', 'SPC2NET', 'SORTED', 'SOK', 'SNET2PC', 'SINGLE', 'SHIFT', 'SERVER', 'SERRWINSOCK',
        +            'SERRVOICE', 'SERRSOCKET', 'SERRSERVICE', 'SERRSELECT', 'SERRPARAM', 'SERROUTOFMEM', 'SERRNOTFOUND', 'SERRNOCONN',
        +            'SERRNOANSWER', 'SERRMUSTWAIT', 'SERRIPADDR', 'SERRHOSTNAME', 'SERRFAILURE', 'SERRBUSY', 'SCROLLLOCK', 'SCANCEL',
        +            'SAVE', 'SALREADY', 'ROWS', 'REGUSERS', 'REGROOT', 'REGMACHINE', 'REGCURRENT', 'REGCLASSES', 'RDBLCLICK', 'RCLICK',
        +            'RBUTTON', 'RAD2DEG', 'QSUCCESSINFO', 'QSUCCESS', 'QSTILLEX', 'QROLLBACK', 'QNULL', 'QNODATA', 'QNEXT', 'QNEEDDATA',
        +            'QFIRST', 'QCOMMIT', 'QBADHANDLE', 'PRINTER', 'PLANCKJOULES', 'PLANCKERGS', 'PI', 'PARSEONLY', 'PARSEC', 'P3ERRREPLY',
        +            'OPEN', 'ON', 'OFF', 'NUMLOCK', 'NOWAIT', 'NOTIFY', 'NORMAL', 'NORESIZE', 'NONE', 'NO', 'NCSAFORMAT', 'MULTIPLE',
        +            'MSFORMAT', 'MPLAYRDBLCK', 'MPLAYRCLK', 'MPLAYRBUTTON', 'MPLAYMDBLCK', 'MPLAYMCLK', 'MPLAYMBUTTON', 'MPLAYLDBLCK',
        +            'MPLAYLCLK', 'MPLAYLBUTTON', 'MINOR', 'MDBLCLICK', 'MCLICK', 'MBYESNO', 'MBUTTON', 'MBOKCANCEL', 'MAJOR', 'MAGFIELD',
        +            'LOCALGROUP', 'LIGHTMTPS', 'LIGHTMPS', 'LF', 'LDBLCLICK', 'LCLICK', 'LBUTTON', 'LAFFDBERROR', 'ICON', 'HTTPS', 'HTTP',
        +            'HNOHEADER', 'HMETHODPOST', 'HMETHODGET', 'HIDDEN', 'HHEADERONLY', 'HHEADER', 'GRAVITATION', 'GOPHER', 'GOLDENRATIO',
        +            'GMTSEC', 'GLOBALGROUP', 'GFTSEC', 'GETPROCID', 'GETEXITCODE', 'FWDSCAN', 'FTPPASSIVE', 'FTP', 'FLOAT8', 'FARADAY',
        +            'FALSE', 'EXTENDED', 'EULERS', 'ENABLE', 'ELECTRIC', 'DRIVE', 'DISABLE', 'DESCENDING', 'DEG2RAD', 'DEFAULT', 'CTRL',
        +            'CRLF', 'CR', 'COMMONFORMAT', 'COLUMNS', 'CHECK', 'CAPSLOCK', 'CANCEL', 'BOLTZMANN', 'BACKSCAN', 'AVOGADRO', 'ATTR_X',
        +            'ATTR_T', 'ATTR_SY', 'ATTR_SH', 'ATTR_RO', 'ATTR_RI', 'ATTR_P', 'ATTR_IC', 'ATTR_H', 'ATTR_DM', 'ATTR_DI', 'ATTR_DC',
        +            'ATTR_CI', 'ATTR_A', 'ASCENDING', 'ARRANGE', 'AMC', 'ACC_WRITE', 'ACC_READ_NT', 'ACC_READ_95', 'ACC_READ', 'ACC_PRINT_NT',
        +            'ACC_PMANG_NT', 'ACC_PFULL_NT', 'ACC_LIST', 'ACC_FULL_NT', 'ACC_FULL_95', 'ACC_DELETE', 'ACC_CREATE', 'ACC_CONTROL',
        +            'ACC_CHNG_NT', 'ACC_ATTRIB', 'ABOVEICONS'
        +            ),
        +        3 => array(
        +            'Yields', 'Yield', 'WinZoom', 'WinWaitExist', 'WinWaitClose', 'WinWaitChild', 'WinVersion', 'WinTitle', 'WinSysInfo',
        +            'WinState', 'WinShow', 'WinResources', 'WinPositionChild', 'WinPosition', 'WinPlaceSet', 'WinPlaceGet', 'WinPlaceChild',
        +            'WinPlace', 'WinParmSet', 'WinParmGet', 'WinName', 'WinMetrics', 'WinItemProcId', 'WinItemNameId', 'WinItemizeEx',
        +            'WinItemize', 'WinItemChild', 'WinIsDos', 'WinIdGet', 'WinIconize', 'WinHide', 'WinHelp', 'WinGetactive', 'WinExistchild',
        +            'WinExist', 'WinExename', 'WinConfig', 'WinClosenot', 'WinClose', 'WinArrange', 'WinActivechild', 'WinActivchild',
        +            'WinActivate', 'WebVerifyCard', 'WebSetTimeout', 'WebParamSize', 'WebParamNames', 'WebParamFile', 'WebParamData',
        +            'WebParamBuf', 'WebOutFile', 'WebOutBinary', 'WebOut', 'WebDumpError', 'WebDatData', 'WebCounter', 'WebConSize', 'WebConData',
        +            'WebConBuf', 'WebCmdData', 'WebBaseConv', 'Wallpaper', 'WaitForKeyEX', 'WaitForKey', 'VersionDLL', 'Version', 'VarType',
        +            'TimeYmdHms', 'TimeWait', 'TimeSubtract', 'TimeJulToYmd', 'TimeJulianDay', 'TimeDiffSecs', 'TimeDiffDays', 'TimeDiff', 'TimeDelay',
        +            'TimeDate', 'TimeAdd', 'TextSelect', 'TextBoxSort', 'TextBox', 'Terminate', 'Tanh', 'Tan', 'SysParamInfo', 'SvcWaitForCmd',
        +            'SvcSetState', 'SvcSetAccept', 'StrUpper', 'StrTrim', 'StrSubWild', 'StrSub', 'StrScan', 'StrReplace', 'StrLower', 'StrLenWild',
        +            'StrLen', 'StrIndexWild', 'StrIndexNC', 'StrIndex', 'StriCmp', 'StrFixLeft', 'StrFixCharsL', 'StrFixChars', 'StrFix', 'StrFill',
        +            'StrCnt', 'StrCmp', 'StrClean', 'StrCharCount', 'StrCat', 'StrByteCount', 'Sqrt', 'SoundVolume', 'Sounds', 'Snapshot', 'Sinh', 'Sin',
        +            'ShortCutMake', 'ShortCutInfo', 'ShortCutExtra', 'ShortCutEdit', 'ShortCutDir', 'ShellExecute', 'SendMenusToEx', 'SendMenusTo',
        +            'SendKeysTo', 'SendKeysChild', 'SendKey', 'RunZoomWait', 'RunZoom', 'RunWithLogon', 'RunWait', 'RunShell', 'RunIconWait',
        +            'RunIcon', 'RunHideWait', 'RunHide', 'RunExit', 'RunEnviron', 'Run', 'RtStatus', 'Reload', 'RegUnloadHive', 'RegSetValue',
        +            'RegSetQword', 'RegSetMulSz', 'RegSetExpSz', 'RegSetEx', 'RegSetDword', 'RegSetBin', 'RegQueryValue', 'RegQueryStr',
        +            'RegQueryQword', 'RegQueryMulSz', 'RegQueryKeys', 'RegQueryKeyLastWriteTime', 'RegQueryKey', 'RegQueryItem', 'RegQueryExpSz',
        +            'RegQueryEx', 'RegQueryDword', 'RegQueryBin', 'RegOpenKeyEx', 'RegOpenKey', 'RegOpenFlags', 'RegLoadHive', 'RegExistValue',
        +            'RegExistKey', 'RegEntryType', 'RegDelValue', 'RegDeleteKey', 'RegCreateKey', 'RegConnect', 'RegCloseKey', 'RegApp', 'Random',
        +            'PtrPersistent', 'PtrGlobalDefine', 'PtrGlobal', 'Print', 'PlayWaveform', 'PlayMidi', 'PlayMedia', 'PipeServerWrite', 'PipeServerRead',
        +            'PipeServerCreate', 'PipeServerClose', 'PipeInfo', 'PipeClientSendRecvData', 'PipeClientOpen', 'PipeClientClose', 'Pause',
        +            'ParseData', 'ObjectTypeGet', 'ObjectType', 'ObjectOpen', 'ObjectGet', 'ObjectEventRemove', 'ObjectEventAdd',
        +            'ObjectCreate', 'ObjectConstToArray', 'ObjectConstantsGet', 'ObjectCollectionOpen', 'ObjectCollectionNext',
        +            'ObjectCollectionClose', 'ObjectClose', 'ObjectAccess', 'Num2Char', 'NetInfo', 'MsgTextGet', 'MousePlay', 'MouseMove', 'MouseInfo',
        +            'MouseDrag', 'MouseCoords', 'MouseClickBtn', 'MouseClick', 'mod', 'Min', 'Message', 'Max', 'Loge', 'LogDisk', 'Log10', 'LastError',
        +            'KeyToggleSet', 'KeyToggleGet', 'ItemSortNc', 'ItemSort', 'ItemSelect', 'ItemReplace', 'ItemRemove', 'ItemLocate', 'ItemInsert',
        +            'ItemExtractCSV', 'ItemExtract', 'ItemCountCSV', 'ItemCount', 'IsNumber', 'IsLicensed', 'IsKeyDown', 'IsInt', 'IsFloat', 'IsDefined',
        +            'Int', 'InstallFile', 'IniWritePvt', 'IniWrite', 'IniReadPvt', 'IniRead', 'IniItemizePvt', 'IniItemize', 'IniDeletePvt', 'IniDelete',
        +            'IgnoreInput', 'IconReplace', 'IconInfo', 'IconExtract', 'IconArrange', 'GetTickCount', 'GetObject', 'GetExactTime', 'Floor',
        +            'FindWindow', 'FileYmdHms', 'FileWrite', 'FileVerInfo', 'FileTimeTouch', 'FileTimeSetEx', 'FileTimeSet', 'FileTimeGetEx',
        +            'FileTimeGet', 'FileTimeCode', 'FileSizeEx', 'FileSize', 'FileRoot', 'FileRename', 'FileRead', 'FilePutW', 'FilePut', 'FilePath',
        +            'FileOpen', 'FileNameShort', 'FileNameLong', 'FileNameEval2', 'FileNameEval1', 'FileMoveAttr', 'FileMove', 'FileMapName',
        +            'FileLocate', 'FileItemPath', 'FileItemize', 'FileInfoToArray', 'FileGetW', 'FileGet', 'FileFullname', 'FileExtension', 'FileExist',
        +            'FileDelete', 'FileCreateTemp', 'FileCopyAttr', 'FileCopy', 'FileCompare', 'FileClose', 'FileBaseName', 'FileAttrSetEx',
        +            'FileAttrSet', 'FileAttrGetEx', 'FileAttrGet', 'FileAppend', 'Fabs', 'ExtractAttachedFile', 'Exp', 'ExeTypeInfo', 'Exclusive',
        +            'EnvItemize', 'EnvironSet', 'Environment', 'EndSession', 'DosVersion', 'DllLoad', 'DllLastError', 'DllHwnd', 'DllHinst',
        +            'DllFree', 'DllCallCDecl', 'DllCall', 'Display', 'DiskVolinfo', 'DiskSize', 'DiskScan', 'DiskInfo', 'DiskFree', 'DiskExist',
        +            'DirWindows', 'DirSize', 'DirScript', 'DirRename', 'DirRemove', 'DirMake', 'DirItemize', 'DirInfoToArray', 'DirHome', 'DirGet',
        +            'DirExist', 'DirChange', 'DirAttrSetEx', 'DirAttrSet', 'DirAttrGetEx', 'DirAttrGet', 'DialogProcOptions', 'DialogObject',
        +            'DialogControlState', 'DialogControlSet', 'DialogControlGet', 'DialogBox', 'Dialog', 'Delay', 'Decimals', 'DebugTrace',
        +            'DebugData', 'DDETimeout', 'DDETerminate', 'DDERequest', 'DDEPoke', 'DDEInitiate', 'DDEExecute', 'DateTime', 'CurrFilepath',
        +            'CurrentPath', 'CurrentFile', 'CreateObject', 'Cosh', 'Cos', 'ClipPut', 'ClipHasFormat', 'ClipGetEx', 'ClipGet', 'ClipAppend',
        +            'ChrUnicodeToString', 'ChrUnicodeToHex', 'ChrStringToUnicode', 'ChrSetCodepage', 'ChrHexToUnicode', 'ChrGetCodepage',
        +            'Char2Num', 'Ceiling', 'ButtonNames', 'BoxUpdates', 'BoxTitle', 'BoxTextFont', 'BoxTextColor', 'BoxText', 'BoxShut', 'BoxPen',
        +            'BoxOpen', 'BoxNew', 'BoxMapmode', 'BoxesUp', 'BoxDrawText', 'BoxDrawRect', 'BoxDrawLine', 'BoxDrawCircle', 'BoxDestroy',
        +            'BoxDataTag', 'BoxDataClear', 'BoxColor', 'BoxCaption', 'BoxButtonWait', 'BoxButtonStat', 'BoxButtonKill', 'BoxButtonDraw',
        +            'BoxBitMap', 'BinaryXor', 'BinaryXlate', 'BinaryWriteEx', 'BinaryWrite', 'BinaryTagRepl', 'BinaryTagLen', 'BinaryTagInit',
        +            'BinaryTagIndex', 'BinaryTagFind', 'BinaryTagExtr', 'BinaryStrCnt', 'BinarySort', 'BinaryReplace', 'BinaryReadEx',
        +            'BinaryRead', 'BinaryPokeStrW', 'BinaryPokeStr', 'BinaryPokeHex', 'BinaryPokeFlt', 'BinaryPoke4', 'BinaryPoke2', 'BinaryPoke',
        +            'BinaryPeekStrW', 'BinaryPeekStr', 'BinaryPeekHex', 'BinaryPeekFlt', 'BinaryPeek4', 'BinaryPeek2', 'BinaryPeek', 'BinaryOr',
        +            'BinaryOleType', 'BinaryIndexNc', 'BinaryIndexEx', 'BinaryIndexBin', 'BinaryIndex', 'BinaryIncrFlt', 'BinaryIncr4',
        +            'BinaryIncr2', 'BinaryIncr', 'BinaryHashRec', 'BinaryFree', 'BinaryEodSet', 'BinaryEodGet', 'BinaryCopy', 'BinaryConvert',
        +            'BinaryCompare', 'BinaryClipPut', 'BinaryClipGet', 'BinaryChecksum', 'BinaryBufInfo', 'BinaryAnd', 'BinaryAllocArray',
        +            'BinaryAlloc', 'Beep', 'Average', 'Atan', 'AskYesNo', 'AskTextbox', 'AskPassword', 'AskLine', 'AskItemlist', 'AskFont',
        +            'AskFiletext', 'AskFilename', 'AskDirectory', 'AskColor', 'Asin', 'ArrInitialize', 'ArrInfo', 'ArrDimension',
        +            'Arrayize', 'ArrayFilePutCSV', 'ArrayFilePut', 'ArrayFileGetCSV', 'ArrayFileGet', 'AppWaitClose', 'AppExist', 'AddExtender',
        +            'Acos', 'Abs', 'About'
        +            ),
        +        4 => array(
        +            'zZipFiles', 'zVersionInfo', 'zVersion', 'zUnZipFiles', 'zSetPortBit', 'zRPortShift', 'zPortOut', 'zPortIn', 'zNotPortBit',
        +            'zLPortShift', 'zGetPortBit', 'zClrPortBit', 'xVerifyCCard', 'xSendMessage', 'xMessageBox', 'xMemCompact', 'xHex', 'xGetElapsed',
        +            'xGetChildHwnd', 'xExtenderInfo', 'xEnumStreams', 'xEjectMedia', 'xDriveReady', 'xDiskLabelGet', 'xCursorSet', 'xBaseConvert',
        +            'wxPing', 'wxParmSet', 'wxParmGet', 'wxMsgSetHdr', 'wxMsgGetHdr', 'wxMsgGetBody', 'wxHost2Addr', 'wxGetLastErr', 'wxGetInfo',
        +            'wxGetErrDesc', 'wxAddr2Host', 'wtsWaitSystemEvent', 'wtsVersion', 'wtsTerminateProcess', 'wtsShutdownSystem', 'wtsSendMessage',
        +            'wtsQuerySessionInfo', 'wtsProcIdToSessId', 'wtsLogoffSession', 'wtsLastErrMsg', 'wtsIsTSEnabled', 'wtsIsCitrixEnabled',
        +            'wtsGetActiveConsoleSessId', 'wtsEnumSessions', 'wtsEnumProcesses', 'wtsDisconnectSession', 'wnWrkGroups', 'wnVersion', 'wntWtsUserSet',
        +            'wntWtsUserGet', 'wntVersion', 'wntUserSidChk', 'wntUserSetDat', 'wntUserRename', 'wntUserProps', 'wntUserList', 'wntUserInfo',
        +            'wntUserGetDat', 'wntUserFiles', 'wntUserExist', 'wntUserDel', 'wntUserAddDat', 'wntUserAdd', 'wntSvcStatus', 'wntSvcStart',
        +            'wntSvcList', 'wntSvcDelete', 'wntSvcCreate', 'wntSvcControl', 'wntSvcCfgSet', 'wntSvcCfgGet', 'wntShutdown', 'wntShareUsers',
        +            'wntShareSet', 'wntShareList', 'wntShareInfo', 'wntShareDel', 'wntShareAdd', 'wntServiceInf', 'wntServiceAt', 'wntServerType',
        +            'wntServerList', 'wntServerInfo', 'wntSecurityGet', 'wntRunAsUser', 'wntResources2', 'wntResources', 'wntRemoteTime', 'wntRasUserSet',
        +            'wntRasUserGet', 'wntProfileInfo', 'wntProfileDel', 'wntPrivUsers', 'wntPrivList', 'wntPrivGet', 'wntPrivDel', 'wntPrivAdd',
        +            'wntOwnerSet', 'wntOwnerGet', 'wntMemberSet', 'wntMemberLst2', 'wntMemberList', 'wntMemberGrps', 'wntMemberGet', 'wntMemberDel',
        +            'wntLsaPolSet', 'wntLsaPolGet', 'wntListGroups', 'wntLastErrMsg', 'wntGroupRen', 'wntGroupInfo', 'wntGroupEdit', 'wntGroupDel',
        +            'wntGroupAdd', 'wntGetUser', 'wntGetDrive', 'wntGetDc', 'wntGetCon', 'wntFileUsers', 'wntFilesOpen', 'wntFileClose', 'wntEventWrite',
        +            'wntEventLog', 'wntDomainSync', 'wntDirDialog', 'wntDfsList', 'wntDfsGetInfo', 'wntCurrUsers', 'wntChgPswd', 'wntCancelCon',
        +            'wntAuditMod', 'wntAuditList', 'wntAuditGet', 'wntAuditDel', 'wntAuditAdd2', 'wntAuditAdd', 'wntAddPrinter', 'wntAddDrive',
        +            'wntAcctPolSet', 'wntAcctPolGet', 'wntAcctList', 'wntAcctInfo', 'wntAccessMod', 'wntAccessList', 'wntAccessGet', 'wntAccessDel',
        +            'wntaccessadd2', 'wntAccessAdd', 'wnShares', 'wnSharePath', 'wnShareName', 'wnShareCnt', 'wnServers', 'wnRestore', 'wnNetNames',
        +            'wnGetUser', 'wnGetCon', 'wnGetCaps', 'wnDlgShare', 'wnDlgNoShare', 'wnDlgDiscon', 'wnDlgCon4', 'wnDlgCon3', 'wnDlgCon2', 'wnDlgCon',
        +            'wnDlgBrowse', 'wnDialog', 'wnCmptrInfo', 'wnCancelCon', 'wnAddCon', 'WaitSRQ', 'w9xVersion', 'w9xUserSetDat', 'w9xUserRename',
        +            'w9xUserprops', 'w9xUserList', 'w9xUserinfo', 'w9xUserGetDat', 'w9xUserExist', 'w9xUserDel', 'w9xUserAddDat', 'w9xUserAdd', 'w9xShareSet',
        +            'w9xShareInfo', 'w9xShareDel', 'w9xShareAdd', 'w9xServiceAt', 'w9xServerList', 'w9xRemoteTime', 'w9xOwnerGet', 'w9xMemberSet',
        +            'w9xMemberList', 'w9xMemberGrps', 'w9xMemberGet', 'w9xMemberDel', 'w9xListGroups', 'w9xGroupInfo', 'w9xGroupDel', 'w9xGroupAdd',
        +            'w9xGetDC', 'w9xFileUsers', 'w9xAccessList', 'w9xAccessGet', 'w9xAccessDel', 'w9xAccessAdd', 'w95Version', 'w95ShareUsers',
        +            'w95ShareSet', 'w95ShareList', 'w95ShareInfo', 'w95ShareDel', 'w95ShareAdd', 'w95ServiceInf', 'w95ServiceAt', 'w95ServerType',
        +            'w95ServerInfo', 'w95Resources', 'w95GetUser', 'w95GetDrive', 'w95GetCon', 'w95FileUsers', 'w95FileClose', 'w95DirDialog',
        +            'w95CancelCon', 'w95AddPrinter', 'w95AddDrive', 'w95AccessDel', 'w95AccessAdd', 'w3Version', 'w3PrtBrowse', 'w3NetGetUser',
        +            'w3NetDialog', 'w3GetCon', 'w3GetCaps', 'w3DirBrowse', 'w3CancelCon', 'w3AddCon', 'urlGetScheme', 'urlEncode', 'urlDecode',
        +            'tVersion', 'tSetPriority', 'TriggerList', 'Trigger', 'tRemoteConn', 'tOpenProc', 'tListProc', 'tListMod', 'tKillProc', 'tGetProcInfo',
        +            'tGetPriority', 'tGetModInfo', 'tGetLastError', 'tGetData', 'TestSys', 'TestSRQ', 'tCountProc', 'tCompatible', 'tCloseProc',
        +            'tBrowseCntrs', 'sSendString', 'sSendNum', 'sSendLine', 'sSendBinary', 'sRecvNum', 'sRecvLine', 'sRecvBinary', 'SrchVersion',
        +            'SrchNext', 'SrchInit', 'SrchFree', 'sOpen', 'sOK2Send', 'sOK2Recv', 'smtpSendText', 'smtpSendFile', 'sListen', 'SetRWLS',
        +            'SendSetup', 'SendLLO', 'SendList', 'SendIFC', 'SendDataBytes', 'SendCmds', 'Send', 'sConnect', 'sClose', 'SByteOrder32',
        +            'sByteOrder16', 'sAccept', 'rRegVersion', 'rRegSearch', 'ResetSys', 'ReceiveSetup', 'Receive', 'ReadStsByte', 'RcvRespMsg',
        +            'RasVersion', 'RasTypeSize', 'RasRename', 'RasNumCons', 'RasNameValid', 'RasListActCon', 'RasItemize', 'RasHangUp', 'RasGetLastErr',
        +            'RasGetConStat', 'RasEntrySet', 'RasEntryInfo', 'RasEntryExist', 'RasEntryDel', 'RasEntryAdd', 'RasDialInfo', 'RasDial',
        +            'RasCopy', 'RasConStatus', 'qVersionInfo', 'qTransact', 'qTables', 'qSpecial', 'qSetConnOpt', 'qNumRsltCol', 'qNativeSql', 'qLastCode',
        +            'qGetData', 'qFreeStmt', 'qFreeEnv', 'qFreeConnect', 'qFetch', 'qExecDirect', 'qError', 'qDriverList', 'qDriverCon', 'qDisconnect',
        +            'qDataSources', 'qConnect', 'qConfigError', 'qConfigData', 'qColumns', 'qBindCol', 'qAllocStmt', 'qAllocEnv', 'qAllocConnect',
        +            'pWaitFor', 'pVersionInfo', 'pTimeout', 'pSetPublish', 'pSetPrtInfo', 'pSetPrtAttrib', 'pSetDefPrtEx', 'pSetDefPrt', 'pSendFile',
        +            'pRecvFile', 'pPutString', 'pPutLine', 'pPutChar', 'pPutByte', 'pPutBinary', 'PPollUnconfig', 'PPollConfig', 'PPoll', 'pPeekChar',
        +            'pPeekByte', 'pPaperSizes', 'pPaperBins', 'pModemSReg', 'pModemParams', 'pModemInit', 'pModemHangUp', 'pModemDial', 'pModemControl',
        +            'pModemConnect', 'pModemCommand', 'pModemAnsRing', 'pModemAnsCall', 'pMediaTypes', 'pGetString', 'pGetPublish', 'pGetPrtList',
        +            'pGetPrtInfo', 'pGetPrtAttrib', 'pGetLine', 'pGetLastError', 'pGetErrorMsg', 'pGetErrorCode', 'pGetDefPrtInf', 'pGetChar',
        +            'pGetByte', 'pGetBinary', 'pDelPrtConn', 'pDelPrinter', 'pComOpen', 'pComModify', 'pComInfo', 'pComControl', 'pComClose',
        +            'pCheckSum', 'pCheckBinary', 'pCaptureOn', 'pCaptureOff', 'pCaptureLog', 'PassControl', 'pAddPrtConn', 'pAddPrinter', 'p3RecvText',
        +            'p3RecvFile', 'p3Peek', 'p3Open', 'p3GetReply', 'p3Delete', 'p3Count', 'p3Close', 'nwWhoAmI', 'nwVfyPassword', 'nwVersion',
        +            'nwSrvShutdown', 'nwSrvNLMMgr', 'nwSrvGenGUID', 'nwSrvExecNCF', 'nwSetVolLimit', 'nwSetSrvParam', 'nwSetSrvInfo', 'nwSetPrimServ',
        +            'nwSetPassword', 'nwSetOptions', 'nwSetFileInfo', 'nwSetDirLimit', 'nwSetDirInfo', 'nwSetContext', 'nwSetBcastMode', 'nwServerList',
        +            'nwSendBcastMsg', 'nwSearchObjects', 'nwSearchFilter', 'nwRenameObject', 'nwRemoveObject', 'nwReceiveBcastMsg', 'nwNameConvert',
        +            'nwMutateObject', 'nwMoveObject', 'nwModifyObject', 'nwMapDelete', 'nwMap', 'nwLogout', 'nwLogin', 'nwListUserGroups',
        +            'nwListObjects', 'nwListGroupMembers', 'nwLastErrMsg', 'nwIsUserInGroup', 'nwGetVolLimit', 'nwGetSrvStats', 'nwGetSrvParam',
        +            'nwGetSrvInfo', 'nwGetSrvCfg', 'nwGetOptions', 'nwGetObjValue', 'nwGetObjInfo', 'nwGetNLMInfo', 'nwGetMapped', 'nwGetFileInfo',
        +            'nwGetDirLimit', 'nwGetDirInfo', 'nwGetContext', 'nwGetConnInfo', 'nwGetCapture', 'nwGetBcastMode', 'nwGetAttrInfo',
        +            'nwDriveStatus', 'nwDrivePath', 'nwDetachFromServer', 'nwDelUserFromGroup', 'nwDelConnNum', 'nwCompareObject', 'nwClientInfo',
        +            'nwChgPassword', 'nwAttachToServer', 'nwAddUserToGroup', 'nwAddObject', 'netVersion', 'netResources', 'netGetUser', 'netGetCon',
        +            'netDirDialog', 'netCancelCon', 'netAddPrinter', 'netAddDrive', 'n4Version', 'n4UserGroups', 'n4UserGroupEx', 'n4SetPrimServ',
        +            'n4SetOptions', 'n4SetContextG', 'n4SetContext', 'n4ServerList', 'n4ServerInfo', 'n4ObjSearch', 'n4ObjRename', 'n4ObjOptions',
        +            'n4ObjMove', 'n4ObjGetVal', 'n4ObjectProps', 'n4ObjectList', 'n4ObjectInfo', 'n4ObjDelete', 'n4NameConvert', 'n4MsgsEndAll',
        +            'n4MsgsEnd', 'n4MemberSet', 'n4MemberGet', 'n4MemberDel', 'n4MapRoot', 'n4MapDir', 'n4MapDelete', 'n4Map', 'n4LogoutTree',
        +            'n4Logout', 'n4Login', 'n4GetUserName', 'n4GetUserId', 'n4GetUser', 'n4GetNetAddr', 'n4GetMapped', 'n4GetContext',
        +            'n4GetConnNum', 'n4FileUsers', 'n4FileTimeGet', 'n4FileAttrSet', 'n4FileAttrGet', 'n4DriveStatus', 'n4DrivePath', 'n4DirTimeGet',
        +            'n4DirAttrSet', 'n4DirAttrGet', 'n4Detach', 'n4ChgPassword', 'n4CapturePrt', 'n4CaptureGet', 'n4CaptureEnd', 'n4Attach',
        +            'n3Version', 'n3UserGroups', 'n3ServerList', 'n3ServerInfo', 'n3MsgsEndAll', 'n3MsgsEnd', 'n3MemberSet', 'n3MemberGet',
        +            'n3MemberDel', 'n3Maproot', 'n3Mapdir', 'n3Mapdelete', 'n3Map', 'n3Logout', 'n3GetUserId', 'n3GetUser', 'n3GetNetAddr',
        +            'n3GetMapped', 'n3GetConnNum', 'n3FileTimeGet', 'n3FileAttrSet', 'n3FileAttrGet', 'n3DriveStatus', 'n3DrivePath',
        +            'n3DirTimeGet', 'n3DirAttrSet', 'n3DirAttrGet', 'n3Detach', 'n3ChgPassword', 'n3CapturePrt', 'n3CaptureGet',
        +            'n3CaptureEnd', 'n3Attach', 'mVersion', 'mSyncMail', 'mSendMailEx', 'mSendMail', 'mrecvmail', 'mReadNextMsg', 'mLogOn',
        +            'mLogOff', 'mFindNext', 'mError', 'mCompatible', 'kVerInfo', 'kStatusInfo', 'kSendText', 'kSendFile', 'kManageImap4',
        +            'kInit', 'kGetMail', 'kExtra', 'kDest', 'kDeletePop3', 'iWriteDataBuf', 'iWriteData', 'iVersion', 'IUrlOpen', 'iUrlEncode',
        +            'iUrlDecode', 'iReadDataBuf', 'iReadData', 'ipVersion', 'ipPing', 'iPing', 'ipHost2Addr', 'ipGetLastErr', 'ipGetAddress',
        +            'iParseURL', 'ipAddr2Host', 'iOptionSet', 'iOptionGet', 'ImgWave', 'ImgVersion', 'ImgUnsharpMask', 'ImgThreshold', 'ImgSwirl',
        +            'ImgSpread', 'ImgSolarize', 'ImgShear', 'ImgSharpen', 'ImgShade', 'ImgScale', 'ImgSample', 'ImgRotate', 'ImgResize',
        +            'ImgReduceNoise', 'ImgRaise', 'ImgOilPaint', 'ImgNormalize', 'ImgNegate', 'ImgMotionBlur', 'ImgModulate', 'ImgMinify',
        +            'ImgMedianFilter', 'ImgMagnify', 'ImgLevel', 'ImgIsValid', 'ImgIsPalette', 'ImgIsMono', 'ImgIsGray', 'ImgInfo', 'ImgImplode',
        +            'ImgGetImageType', 'ImgGetColorCount', 'ImgGaussianBlur', 'ImgGamma', 'ImgFrame', 'ImgFlop', 'ImgFlip', 'ImgEqualize',
        +            'ImgEnhance', 'ImgEmboss', 'ImgCrop', 'ImgConvert', 'ImgContrast', 'ImgCompare', 'ImgColorize', 'ImgChop', 'ImgCharcoal',
        +            'ImgBorder', 'ImgBlur', 'ImgAddNoise', 'iLocFindNext', 'iLocFindInit', 'iHttpOpen', 'iHttpInit', 'iHttpHeaders', 'iHttpAccept',
        +            'iHostConnect', 'iHost2Addr', 'iGetResponse', 'iGetLastError', 'iGetIEVer', 'iGetConStatEx', 'iGetConState', 'iFtpRename',
        +            'iFtpPut', 'iFtpOpen', 'iFtpGet', 'iFtpFindNext', 'iFtpFindInit', 'iFtpDirRemove', 'iFtpDirMake', 'iFtpDirGet', 'iFtpDirChange',
        +            'iFtpDialog', 'iFtpDelete', 'iFtpCmd', 'iErrorDialog', 'iDialItemize', 'iDialHangUp', 'iDial', 'iCookieSet', 'iCookieGet',
        +            'iContentURL', 'iContentFile', 'iContentData', 'iClose', 'ibWrtf', 'ibWrt', 'ibWait', 'ibVersion', 'ibUnlock', 'ibTrg',
        +            'ibTmo', 'ibStop', 'ibStatus', 'ibSta', 'ibSre', 'ibSic', 'ibSad', 'ibRsv', 'ibRsp', 'ibRsc', 'ibRpp', 'ibRdf', 'ibRd',
        +            'ibPpc', 'ibPoke', 'ibPct', 'ibPad', 'ibOnl', 'ibMakeAddr', 'ibLock', 'ibLoc', 'ibLn', 'ibLines', 'ibIst', 'ibInit',
        +            'ibGts', 'ibGetSad', 'ibGetPad', 'ibFind', 'ibEvent', 'ibErr', 'ibEot', 'ibEos', 'iBegin', 'ibDma', 'ibDev', 'ibConfig',
        +            'ibCntl', 'ibCnt', 'ibCmda', 'ibCmd', 'ibClr', 'ibCac', 'ibBna', 'ibAsk', 'iAddr2Host', 'huge_Thousands', 'huge_Subtract',
        +            'huge_SetOptions', 'huge_Multiply', 'huge_GetLastError', 'huge_ExtenderInfo', 'huge_Divide', 'huge_Decimal', 'huge_Add',
        +            'httpStripHTML', 'httpRecvTextF', 'httpRecvText', 'httpRecvQuery', 'httpRecvQryF', 'httpRecvFile', 'httpGetServer',
        +            'httpGetQuery', 'httpGetPath', 'httpGetFile', 'httpGetDir', 'httpGetAnchor', 'httpFullPath', 'httpFirewall', 'httpAuth',
        +            'ftpRename', 'ftpQuote', 'ftpPut', 'ftpOpen', 'ftpList', 'ftpGet', 'ftpFirewall', 'ftpDelete', 'ftpClose', 'ftpChDir',
        +            'FindRQS', 'FindLstn', 'EnvSetVar', 'EnvPathDel', 'EnvPathChk', 'EnvPathAdd', 'EnvListVars', 'EnvGetVar', 'EnvGetInfo',
        +            'EnableRemote', 'EnableLocal', 'ehllapiWait', 'ehllapiVersion', 'ehllapiUninit', 'ehllapiStopKeyIntercept', 'ehllapiStopHostNotify',
        +            'ehllapiStopCloseIntercept', 'ehllapiStartKeyIntercept', 'ehllapiStartHostNotify', 'ehllapiStartCloseIntercept',
        +            'ehllapiSetWindowStatus', 'ehllapiSetSessionParams', 'ehllapiSetPSWindowName', 'ehllapiSetCursorLoc', 'ehllapiSendKey',
        +            'ehllapiSendFile', 'ehllapiSearchPS', 'ehllapiSearchField', 'ehllapiRunProfile', 'ehllapiResetSystem', 'ehllapiReserve',
        +            'ehllapiRelease', 'ehllapiReceiveFile', 'ehllapiQuerySystem', 'ehllapiQueryPSStatus', 'ehllapiQueryHostNotify',
        +            'ehllapiQueryFieldAttr', 'ehllapiQueryCursorLoc', 'ehllapiQueryCloseIntercept', 'ehllapiPostInterceptStatus',
        +            'ehllapiPause', 'ehllapiLastErrMsg', 'ehllapiInit', 'ehllapiGetWindowStatus', 'ehllapiGetPSHWND', 'ehllapiGetKey',
        +            'ehllapiFindFieldPos', 'ehllapiFindFieldLen', 'ehllapiDisconnectPS', 'ehllapiCvtRCToPos', 'ehllapiCvtPosToRC',
        +            'ehllapiCopyTextToPS', 'ehllapiCopyTextToField', 'ehllapiCopyTextFromPS', 'ehllapiCopyTextFromField', 'ehllapiCopyOIA',
        +            'ehllapiConnectPS', 'dunItemize', 'dunDisconnect', 'dunConnectEx', 'dunConnect', 'dsTestParam', 'dsSIDtoHexStr', 'dsSetSecProp',
        +            'dsSetProperty', 'dsSetPassword', 'dsSetObj', 'dsSetCredentX', 'dsSetCredent', 'dsRemFromGrp', 'dsRelSecObj', 'dsMoveObj',
        +            'dsIsObject', 'dsIsMemberGrp', 'dsIsContainer', 'dsGetUsersGrps', 'dsGetSecProp', 'dsGetPropName', 'dsGetProperty',
        +            'dsGetPrntPath', 'dsGetPrimGrp', 'dsGetMemGrp', 'dsGetInfo', 'dsGetClass', 'dsGetChldPath', 'dsFindPath', 'dsDeleteObj',
        +            'dsCreatSecObj', 'dsCreateObj', 'dsCopySecObj', 'dsAddToGrp', 'dsAclRemAce', 'dsAclOrderAce', 'dsAclGetAces', 'dsAclAddAce',
        +            'DevClearList', 'DevClear', 'dbTest', 'dbSwapColumns', 'dbSort', 'dbSetRecordField', 'dbSetOptions', 'dbSetErrorReporting',
        +            'dbSetEntireRecord', 'dbSetDelimiter', 'dbSave', 'dbOpen', 'dbNameColumn', 'dbMakeNewItem', 'dbInsertColumn', 'dbGetVersion',
        +            'dbGetSaveStatus', 'dbGetRecordField', 'dbGetRecordCount', 'dbGetNextItem', 'dbGetLastError', 'dbGetEntireRecord',
        +            'dbGetColumnType', 'dbGetColumnNumber', 'dbGetColumnName', 'dbGetColumnCount', 'dbFindRecord', 'dbExist', 'dbEasterEgg',
        +            'dbDeleteRecord', 'dbDeleteColumn', 'dbDebug', 'dbCookDatabases', 'dbClose', 'dbCloneRecord', 'dbBindCol', 'cWndState',
        +            'cWndinfo', 'cWndGetWndSpecName', 'cWndGetWndSpec', 'cWndexist', 'cWndByWndSpecName', 'cWndByWndSpec', 'cWndbyseq',
        +            'cWndbyname', 'cWndbyid', 'cWndbyclass', 'cWinIDConvert', 'cVersionInfo', 'cVendorId', 'cSetWndText', 'cSetUpDownPos',
        +            'cSetTvItem', 'cSetTrackPos', 'cSetTabItem', 'cSetLvItem', 'cSetLbItemEx', 'cSetLbItem', 'cSetIpAddr', 'cSetFocus',
        +            'cSetEditText', 'cSetDtpDate', 'cSetCbItem', 'cSetCalDate', 'cSendMessage', 'cRadioButton', 'cPostMessage', 'cPostButton',
        +            'cMemStat', 'cGetWndCursor', 'cGetUpDownPos', 'cGetUpDownMin', 'cGetUpDownMax', 'cGetTVItem', 'cGetTrackPos', 'cGetTrackMin',
        +            'cGetTrackMax', 'cGetTbText', 'cGetSbText', 'cGetLvText', 'cGetLvSelText', 'cGetLvFocText', 'cGetLvDdtText', 'cGetLvColText',
        +            'cGetLbText', 'cGetLbSelText', 'cGetLbCount', 'cGetIpAddr', 'cGetInfo', 'cGetHrText', 'cGetFocus', 'cGetEditText', 'cGetDtpDate',
        +            'cGetControlImageCRC', 'cGetCBText', 'cGetCbCount', 'cGetCalDate', 'cFindByName', 'cFindByClass', 'cEnablestate', 'cDblClickItem',
        +            'cCpuSupt', 'cCpuSpeed', 'cCpuIdExt', 'cCpuId', 'cCpuFeat', 'cCpuBenchmark', 'cCloneCheck', 'cClickToolbar', 'cClickButton',
        +            'cClearTvItem', 'cClearLvItem', 'cClearLbAll', 'cCheckbox', 'aVersion', 'aStatusbar', 'aShellFolder', 'aMsgTimeout', 'AllSPoll',
        +            'aGetLastError', 'aFileRename', 'aFileMove', 'aFileDelete', 'aFileCopy'
        +            ),
        +        5 => array(
        +            'wWordRight', 'wWordLeft', 'wWinTile', 'wWinRestore', 'wWinNext', 'wWinMinimize', 'wWinMaximize', 'wWinCloseAll', 'wWinClose',
        +            'wWinCascade', 'wWinArricons', 'wViewOutput', 'wViewOptions', 'wViewHtml', 'wUpperCase', 'wUpline', 'wUndo', 'wTopOfFile', 'wToggleIns',
        +            'wTab', 'wStatusMsg', 'wStartSel', 'wSpellcheck', 'wSetProject', 'wSetPrefs', 'wSetColblk', 'wSetBookmark', 'wSelWordRight',
        +            'wSelWordLeft', 'wSelUp', 'wSelTop', 'wSelRight', 'wSelPgUp', 'wSelPgDn', 'wSelLeft', 'wSelInfo', 'wSelHome', 'wSelEnd', 'wSelectAll',
        +            'wSelDown', 'wSelBottom', 'wRunRebuild', 'wRunMake', 'wRunExecute', 'wRunDebug', 'wRunConfig', 'wRunCompile', 'wRunCommand', 'wRight',
        +            'wRepeat', 'wRedo', 'wRecord', 'wProperties', 'wPrintDirect', 'wPrinSetup', 'wPrevError', 'wPaste', 'wPageUp', 'wPageDown', 'wNextError',
        +            'wNewLine', 'wLowerCase', 'wLineCount', 'wLeft', 'wInvertCase', 'wInsString', 'wInsLine', 'wHome', 'wHelpKeyword', 'wHelpKeybrd',
        +            'wHelpIndex', 'wHelpHelp', 'wHelpCmds', 'wHelpAbout', 'wGotoLine', 'wGotoCol', 'wGetWrap', 'wGetWord', 'wGetUndo', 'wGetSelstate',
        +            'wGetRedo', 'wGetOutput', 'wGetModified', 'wGetLineNo', 'wGetIns', 'wGetFilename', 'wGetColNo', 'wGetChar', 'wFtpOpen', 'wFindNext',
        +            'wFindInFiles', 'wFind', 'wFileSaveAs', 'wFileSave', 'wFileRevert', 'wFilePrint', 'wFilePgSetup', 'wFileOpen', 'wFileNew', 'wFileMerge',
        +            'wFileList', 'wFileExit', 'wEndSel', 'wEndOfFile', 'wEnd', 'wEdWrap', 'wEdWordRight', 'wEdWordLeft', 'wEdUpLine', 'wEdUndo', 'wEdTopOfFile',
        +            'wEdToggleIns', 'wEdTab', 'wEdStartSel', 'wEdSetColBlk', 'wEdSelectAll', 'wEdRight', 'wEdRedo', 'wEdPaste', 'wEdPageUp', 'wEdPageDown',
        +            'wEdNewLine', 'wEdLeft', 'wEdInsString', 'wEdHome', 'wEdGoToLine', 'wEdGoToCol', 'wEdGetWord', 'wEdEndSel', 'wEdEndOfFile', 'wEdEnd',
        +            'wEdDownLine', 'wEdDelete', 'wEdCutLine', 'wEdCut', 'wEdCopyLine', 'wEdCopy', 'wEdClearSel', 'wEdBackTab', 'wEdBackspace', 'wDownLine',
        +            'wDelete', 'wDelButton', 'wCutMarked', 'wCutLine', 'wCutAppend', 'wCut', 'wCopyMarked', 'wCopyLine', 'wCopyAppend', 'wCopy', 'wCompile',
        +            'wClearSel', 'wChange', 'wCallMacro', 'wBackTab', 'wBackspace', 'wAutoIndent', 'wAddButton', 'edWindowTile', 'edWindowRestore',
        +            'edWindowNext', 'edWindowMinimize', 'edWindowMaximize', 'edWindowCloseall', 'edWindowClose', 'edWindowCascade', 'edWindowArrangeIcons',
        +            'edStatusMsg', 'edSearchViewOutput', 'edSearchRepeat', 'edSearchPrevError', 'edSearchNextError', 'edSearchFind', 'edSearchChange',
        +            'edRunRebuild', 'edRunMake', 'edRunExecute', 'edRunDebug', 'edRunConfigure', 'edRunCompile', 'edRunCommand', 'edRecord', 'edHelpProcedures',
        +            'edHelpKeyword', 'edHelpKeyboard', 'edHelpIndex', 'edHelpHelp', 'edHelpCommands', 'edHelpAbout', 'edGetWordWrapState', 'edGetWindowName',
        +            'edGetUndoState', 'edGetSelectionState', 'edGetRedoState', 'edGetModifiedStatus', 'edGetLineNumber', 'edGetInsertState', 'edGetColumnNumber',
        +            'edGetChar', 'edFileSetPreferences', 'edFileSaveAs', 'edFileSave', 'edFilePrinterSetup', 'edFilePrint', 'edFilePageSetup', 'edFileOpen',
        +            'edFileNew', 'edFileMerge', 'edFileList', 'edFileExit', 'edEditWrap', 'edEditWordRight', 'edEditWordLeft', 'edEditUpLine', 'edEditUndo',
        +            'edEditToggleIns', 'edEditTab', 'edEditStartSelection', 'edEditSetColumnBlock', 'edEditSetBookmark', 'edEditSelectAll', 'edEditRight',
        +            'edEditRedo', 'edEditPaste', 'edEditPageUp', 'edEditPageDown', 'edEditLeft', 'edEditInsertString', 'edEditGoToLine', 'edEditGoToColumn',
        +            'edEditGoToBookmark', 'edEditGetCurrentWord', 'edEditEndSelection', 'edEditEndOfLine', 'edEditEndOfFile', 'edEditDownline', 'edEditDelete',
        +            'edEditCutline', 'edEditCut', 'edEditCopyline', 'edEditCopy', 'edEditClearSelection', 'edEditBeginningOfLine', 'edEditBeginningOfFile',
        +            'edEditBackTab', 'edEditBackspace', 'edDeleteButton', 'edAddButton'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '{', '}', '!', '+', '-', '~', '$', '^', '?', '@', '%', '#', '&', '*', '|', '/', '<', '>'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false,
        +        5 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #800080;',
        +            2 => 'color: #0080FF; font-weight: bold;',
        +            3 => 'color: #0000FF;',
        +            4 => 'color: #FF00FF;',
        +            5 => 'color: #008000;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #008000; font-style: italic;',
        +            2 => 'color: #FF1010; font-weight: bold;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #006600;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => '',
        +        5 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(//Variable names
        +        0 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*"
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_MAYBE,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/xbasic.php b/includes/geshi/xbasic.php
        new file mode 100644
        index 0000000..4f9cd80
        --- /dev/null
        +++ b/includes/geshi/xbasic.php
        @@ -0,0 +1,141 @@
        + 'XBasic',
        +    'COMMENT_SINGLE' => array(1 => "'"),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'WHILE', 'UNTIL', 'TRUE', 'TO', 'THEN', 'SUB', 'STOP', 'STEP',
        +            'SELECT', 'RETURN', 'PROGRAM', 'NEXT', 'LOOP', 'IFZ',
        +            'IFT', 'IFF', 'IF', 'GOTO', 'GOSUB', 'FOR', 'FALSE', 'EXIT',
        +            'ENDIF', 'END', 'ELSE', 'DO', 'CASE', 'ALL'
        +            ),
        +        2 => array(
        +            'XMAKE', 'XLONGAT', 'XLONG', 'WRITE', 'VOID', 'VERSION$', 'VERSION',
        +            'USHORTAT', 'USHORT', 'UNION', 'ULONGAT', 'ULONG', 'UCASE$',
        +            'UBYTEAT', 'UBYTE', 'UBOUND', 'TYPE','TRIM$', 'TAB', 'SWAP',
        +            'SUBADDRESS', 'SUBADDR', 'STUFF$', 'STRING', 'STRING$', 'STR$',
        +            'STATIC', 'SSHORTAT', 'SSHORT', 'SPACE$', 'SMAKE', 'SLONGAT', 'SLONG',
        +            'SIZE', 'SINGLEAT', 'SINGLE', 'SIGNED$', 'SIGN', 'SHELL', 'SHARED',
        +            'SGN', 'SFUNCTION', 'SET', 'SEEK', 'SCOMPLEX', 'SBYTEAT', 'SBYTE',
        +            'RTRIM$', 'ROTATER', 'ROTATEL', 'RJUST$', 'RINSTRI', 'RINSTR',
        +            'RINCHRI', 'RINCHR', 'RIGHT$', 'REDIM', 'READ', 'RCLIP$', 'QUIT',
        +            'PROGRAM$', 'PRINT', 'POF', 'OPEN', 'OCTO$', 'OCT$', 'NULL$', 'MIN',
        +            'MID$', 'MAX', 'MAKE', 'LTRIM$', 'LOF', 'LJUST$', 'LIBRARY', 'LEN',
        +            'LEFT$', 'LCLIP$', 'LCASE$', 'INTERNAL', 'INT', 'INSTRI', 'INSTR',
        +            'INLINE$', 'INFILE$', 'INCHRI', 'INCHR', 'INC', 'IMPORT', 'HIGH1',
        +            'HIGH0', 'HEXX$', 'HEX$', 'GOADDRESS', 'GOADDR', 'GMAKE', 'GLOW',
        +            'GIANTAT', 'GIANT', 'GHIGH', 'FUNCTION', 'FUNCADDRESS', 'FUNCADDR',
        +            'FORMAT$', 'FIX', 'EXTU', 'EXTS', 'EXTERNAL', 'ERROR', 'ERROR$',
        +            'EOF', 'DOUBLEAT', 'DOUBLE', 'DMAKE', 'DLOW', 'DIM', 'DHIGH',
        +            'DECLARE', 'DEC', 'DCOMPLEX', 'CSTRING$', 'CSIZE', 'CSIZE$', 'CLR',
        +            'CLOSE', 'CLEAR', 'CJUST$', 'CHR$', 'CFUNCTION', 'BITFIELD', 'BINB$',
        +            'BIN$', 'AUTOX', 'AUTOS', 'AUTO', 'ATTACH', 'ASC', 'ABS'
        +            ),
        +        3 => array(
        +            'XOR', 'OR', 'NOT', 'MOD', 'AND'
        +            ),
        +        4 => array(
        +            'TANH', 'TAN', 'SQRT', 'SINH', 'SIN', 'SECH', 'SEC', 'POWER',
        +            'LOG10', 'LOG', 'EXP10', 'EXP', 'CSCH', 'CSC', 'COTH', 'COT', 'COSH',
        +            'COS', 'ATANH', 'ATAN', 'ASINH', 'ASIN', 'ASECH', 'ASEC', 'ACSCH',
        +            'ACSC', 'ACOSH', 'ACOS'
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>',
        +        '=','+','-'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #00a1a1;font-weight: bold',
        +            2 => 'color: #000066;font-weight: bold',
        +            3 => 'color: #00a166;font-weight: bold',
        +            4 => 'color: #0066a1;font-weight: bold'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => 'http://www.xbasic.org',
        +        4 => 'http://www.xbasic.org'
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/xml.php b/includes/geshi/xml.php
        new file mode 100644
        index 0000000..b7a416e
        --- /dev/null
        +++ b/includes/geshi/xml.php
        @@ -0,0 +1,155 @@
        + 'XML',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        ),
        +    'SYMBOLS' => array(
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            ),
        +        'COMMENTS' => array(
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'SCRIPT' => array(
        +            -1 => 'color: #808080; font-style: italic;', // comments
        +            0 => 'color: #00bbdd;',
        +            1 => 'color: #ddbb00;',
        +            2 => 'color: #339933;',
        +            3 => 'color: #009900;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #000066;',
        +            1 => 'color: #000000; font-weight: bold;',
        +            2 => 'color: #000000; font-weight: bold;'
        +            )
        +        ),
        +    'URLS' => array(
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        0 => array(//attribute names
        +            GESHI_SEARCH => '([a-z_:][\w\-\.:]*)(=)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => 'i',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => '\\2'
        +            ),
        +        1 => array(//Initial header line
        +            GESHI_SEARCH => '(<[\/?|(\?xml)]?[a-z_:][\w\-\.:]*(\??>)?)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => 'i',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        2 => array(//Tag end markers
        +            GESHI_SEARCH => '(([\/|\?])?>)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => 'i',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +            ),
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,
        +    'SCRIPT_DELIMITERS' => array(
        +        -1 => array(
        +            ''
        +            ),
        +        0 => array(
        +            ' '>'
        +            ),
        +        1 => array(
        +            '&' => ';'
        +            ),
        +        2 => array(
        +            ' ']]>'
        +            ),
        +        3 => array(
        +            '<' => '>'
        +            )
        +    ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        -1 => false,
        +        0 => false,
        +        1 => false,
        +        2 => false,
        +        3 => true
        +        ),
        +    'TAB_WIDTH' => 2,
        +    'PARSER_CONTROL' => array(
        +        'ENABLE_FLAGS' => array(
        +            'NUMBERS' => GESHI_NEVER
        +        )
        +    )
        +);
        diff --git a/includes/geshi/xojo.php b/includes/geshi/xojo.php
        new file mode 100644
        index 0000000..279176e
        --- /dev/null
        +++ b/includes/geshi/xojo.php
        @@ -0,0 +1,279 @@
        + 'Xojo',
        +    'COMMENT_SINGLE' => array(1 => "'", 2 => '//', 3 => 'rem'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'NUMBERS' => array(
        +        1 => GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE, // integers
        +        2 => GESHI_NUMBER_FLT_NONSCI // floating point numbers
        +    ),
        +    'KEYWORDS' => array(
        +        //Keywords
        +        1 => array(
        +            'AddHandler',
        +            'AddressOf',
        +            'Aggregates',
        +            'And',
        +            'Array',
        +            'As',
        +            'Assigns',
        +            'Attributes',
        +            'Break',
        +            'ByRef',
        +            'ByVal',
        +            'Call',
        +            'Case',
        +            'Catch',
        +            'Class',
        +            'Const',
        +            'Continue',
        +            'CType',
        +            'Declare',
        +            'Delegate',
        +            'Dim',
        +            'Do',
        +            'DownTo',
        +            'Each',
        +            'Else',
        +            'Elseif',
        +            'End',
        +            'Enum',
        +            'Event',
        +            'Exception',
        +            'Exit',
        +            'Extends',
        +            'False',
        +            'Finally',
        +            'For',
        +            'Function',
        +            'Global',
        +            'GoTo',
        +            'Handles',
        +            'If',
        +            'Implements',
        +            'In',
        +            'Inherits',
        +            'Inline68K',
        +            'Interface',
        +            'Is',
        +            'IsA',
        +            'Lib',
        +            'Loop',
        +            'Me',
        +            'Mod',
        +            'Module',
        +            'Namespace',
        +            'New',
        +            'Next',
        +            'Nil',
        +            'Not',
        +            'Object',
        +            'Of',
        +            'Optional',
        +            'Or',
        +            'ParamArray',
        +            'Private',
        +            'Property',
        +            'Protected',
        +            'Public',
        +            'Raise',
        +            'RaiseEvent',
        +            'Rect',
        +            'Redim',
        +            'RemoveHandler',
        +            'Return',
        +            'Select',
        +            'Self',
        +            'Shared',
        +            'Soft',
        +            'Static',
        +            'Step',
        +            'Sub',
        +            'Super',
        +            'Then',
        +            'To',
        +            'True',
        +            'Try',
        +            'Until',
        +            'Using',
        +            'Wend',
        +            'While',
        +            'With',
        +            'WeakAddressOf',
        +            'Xor'
        +        ),
        +        //Data Types
        +        2 => array(
        +            'Boolean',
        +            'CFStringRef',
        +            'CString',
        +            'Currency',
        +            'Double',
        +            'Int8',
        +            'Int16',
        +            'Int32',
        +            'Int64',
        +            'Integer',
        +            'OSType',
        +            'PString',
        +            'Ptr',
        +            'Short',
        +            'Single',
        +            'String',
        +            'Structure',
        +            'UInt8',
        +            'UInt16',
        +            'UInt32',
        +            'UInt64',
        +            'UShort',
        +            'WindowPtr',
        +            'WString',
        +            'XMLNodeType'
        +        ),
        +        //Compiler Directives
        +        3 => array(
        +            '#Bad',
        +            '#Else',
        +            '#Endif',
        +            '#If',
        +            '#Pragma',
        +            '#Tag'
        +        ),
        +    ),
        +    'SYMBOLS' => array(
        +        '+',
        +        '-',
        +        '*',
        +        '=',
        +        '/',
        +        '>',
        +        '<',
        +        '^',
        +        '(',
        +        ')',
        +        '.'
        +    ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false
        +    ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000FF;',  // keywords
        +            2 => 'color: #0000FF;',  // primitive data types
        +            3 => 'color: #0000FF;',  // compiler commands
        +        ),
        +        'COMMENTS' => array(
        +            1 => 'color: #7F0000;',
        +            2 => 'color: #7F0000;',
        +            3 => 'color: #7F0000;',
        +            'MULTI' => 'color: #7F0000;'
        +        ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #008080;'
        +        ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +        ),
        +        'STRINGS' => array(
        +            0 => 'color: #6500FE;'
        +        ),
        +        'NUMBERS' => array(
        +            1 => 'color: #326598;', // integers
        +            2 => 'color: #006532;', // floating point numbers
        +        ),
        +        'METHODS' => array(
        +            1 => 'color: #000000;'
        +        ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #000000;'
        +        ),
        +        'REGEXPS' => array(
        +            1 => 'color: #326598;', // &h hex numbers
        +            2 => 'color: #326598;', // &b hex numbers
        +            3 => 'color: #326598;', // &o hex numbers
        +        ),
        +        'SCRIPT' => array()
        +    ),
        +    'URLS' => array(
        +        1 => 'http://docs.xojo.com/index.php/{FNAMEU}',
        +        2 => 'http://docs.xojo.com/index.php/{FNAMEU}',
        +        3 => ''
        +    ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +    ),
        +    'REGEXPS' => array(
        +        1 => array( // &h numbers
        +            // search for &h, then any number of letters a-f or numbers 0-9
        +            GESHI_SEARCH => '(&h[0-9a-fA-F]*\b)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +        ),
        +        2 => array( // &b numbers
        +            // search for &b, then any number of 0-1 digits
        +            GESHI_SEARCH => '(&b[0-1]*\b)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +        ),
        +        3 => array( // &o octal numbers
        +            // search for &o, then any number of 0-7 digits
        +            GESHI_SEARCH => '(&o[0-7]*\b)',
        +            GESHI_REPLACE => '\\1',
        +            GESHI_MODIFIERS => '',
        +            GESHI_BEFORE => '',
        +            GESHI_AFTER => ''
        +        )
        +    ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/xorg_conf.php b/includes/geshi/xorg_conf.php
        new file mode 100644
        index 0000000..35718be
        --- /dev/null
        +++ b/includes/geshi/xorg_conf.php
        @@ -0,0 +1,122 @@
        + 'Xorg configuration',
        +    'COMMENT_SINGLE' => array(1 => '#'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        // sections
        +        1 => array(
        +            'Section', 'EndSection', 'SubSection', 'EndSubSection'
        +            ),
        +        2 => array(
        +            // see http://www.x.org/archive/X11R6.9.0/doc/html/xorg.conf.5.html
        +            'BiosBase', 'Black', 'Boardname', 'BusID', 'ChipID', 'ChipRev',
        +            'Chipset', 'ClockChip', 'Clocks', 'DacSpeed',
        +            'DefaultDepth', 'DefaultFbBpp', 'Depth', 'Device',
        +            'DisplaySize', 'Driver', 'FbBpp', 'Gamma',
        +            'HorizSync', 'IOBase', 'Identifier', 'InputDevice',
        +            'Load', 'MemBase', 'Mode', 'Modeline', 'Modelname',
        +            'Modes', 'Monitor', 'Option', 'Ramdac', 'RgbPath',
        +            'Screen', 'TextClockFreq', 'UseModes', 'VendorName',
        +            'VertRefresh', 'VideoAdaptor', 'VideoRam',
        +            'ViewPort', 'Virtual', 'Visual', 'Weight', 'White'
        +            ),
        +        3 => array(
        +            // some sub-keywords
        +            // screen position
        +            'Above', 'Absolute', 'Below', 'LeftOf', 'Relative', 'RightOf',
        +            // modes
        +            'DotClock', 'Flags', 'HSkew', 'HTimings', 'VScan', 'VTimings'
        +            ),
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'SYMBOLS' => array(
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #b1b100;',
        +            2 => 'color: #990000;',
        +            3 => 'color: #550000;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #adadad; font-style: italic;',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            ),
        +        'BRACKETS' => array(
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #0000ff;',
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #cc66cc;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 4
        +);
        diff --git a/includes/geshi/xpp.php b/includes/geshi/xpp.php
        new file mode 100644
        index 0000000..4ea5e22
        --- /dev/null
        +++ b/includes/geshi/xpp.php
        @@ -0,0 +1,434 @@
        +
        + *
        + * CHANGES
        + * -------
        + * 2007/02/28 (1.0.0)
        + *  -  First Release
        + *
        + * TODO (updated 2007/02/27)
        + * -------------------------
        + *
        + *************************************************************************************
        + *
        + *     This file is part of GeSHi.
        + *
        + *   GeSHi is free software; you can redistribute it and/or modify
        + *   it under the terms of the GNU General Public License as published by
        + *   the Free Software Foundation; either version 2 of the License, or
        + *   (at your option) any later version.
        + *
        + *   GeSHi is distributed in the hope that it will be useful,
        + *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + *   GNU General Public License for more details.
        + *
        + *   You should have received a copy of the GNU General Public License
        + *   along with GeSHi; if not, write to the Free Software
        + *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        + *
        + ************************************************************************************/
        +
        +$language_data = array (
        +    'LANG_NAME' => 'X++',
        +    'COMMENT_SINGLE' => array(1 => '//'),
        +    'COMMENT_MULTI' => array('/*' => '*/'),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array( // Primitive types
        +            'void',
        +            'str',
        +            'real',
        +            'int64',
        +            'int',
        +            'date',
        +            'container',
        +            'boolean',
        +            'anytype'
        +            ),
        +        2 => array( // Keywords
        +            'window',
        +            'while',
        +            'try',
        +            'true',
        +            'throw',
        +            'switch',
        +            'super',
        +            'static',
        +            'server',
        +            'right',
        +            'return',
        +            'retry',
        +            'public',
        +            'protected',
        +            'private',
        +            'print',
        +            'pause',
        +            'null',
        +            'new',
        +            'mod',
        +            'left',
        +            'interface',
        +            'implements',
        +            'if',
        +            'for',
        +            'final',
        +            'false',
        +            'extends',
        +            'else',
        +            'edit',
        +            'do',
        +            'div',
        +            'display',
        +            'default',
        +            'continue',
        +            'client',
        +            'class',
        +            'changeCompany',
        +            'case',
        +            'breakpoint',
        +            'break',
        +            'at',
        +            'abstract'
        +            ),
        +        3 => array( // Functions within the Axapta kernel
        +            'year',
        +            'wkofyr',
        +            'webwebpartstr',
        +            'webstaticfilestr',
        +            'websitetempstr',
        +            'websitedefstr',
        +            'webreportstr',
        +            'webpagedefstr',
        +            'weboutputcontentitemstr',
        +            'webmenustr',
        +            'webletitemstr',
        +            'webformstr',
        +            'webdisplaycontentitemstr',
        +            'webactionitemstr',
        +            'varstr',
        +            'utilmoyr',
        +            'uint2str',
        +            'typeof',
        +            'typeid',
        +            'trunc',
        +            'today',
        +            'timenow',
        +            'time2str',
        +            'term',
        +            'tanh',
        +            'tan',
        +            'tablestr',
        +            'tablestaticmethodstr',
        +            'tablepname',
        +            'tablenum',
        +            'tablename2id',
        +            'tablemethodstr',
        +            'tableid2pname',
        +            'tableid2name',
        +            'tablefieldgroupstr',
        +            'tablecollectionstr',
        +            'systemdateset',
        +            'systemdateget',
        +            'syd',
        +            'substr',
        +            'strupr',
        +            'strscan',
        +            'strrtrim',
        +            'strrep',
        +            'strrem',
        +            'strprompt',
        +            'strpoke',
        +            'strnfind',
        +            'strlwr',
        +            'strltrim',
        +            'strline',
        +            'strlen',
        +            'strkeep',
        +            'strins',
        +            'strfmt',
        +            'strfind',
        +            'strdel',
        +            'strcolseq',
        +            'strcmp',
        +            'stralpha',
        +            'str2time',
        +            'str2num',
        +            'str2int64',
        +            'str2int',
        +            'str2guid',
        +            'str2enum',
        +            'str2date',
        +            'staticmethodstr',
        +            'sln',
        +            'sleep',
        +            'sinh',
        +            'sin',
        +            'setprefix',
        +            'sessionid',
        +            'securitykeystr',
        +            'securitykeynum',
        +            'runbuf',
        +            'runas',
        +            'round',
        +            'resourcestr',
        +            'reportstr',
        +            'refprintall',
        +            'rate',
        +            'querystr',
        +            'pv',
        +            'pt',
        +            'prmisdefault',
        +            'primoyr',
        +            'prevyr',
        +            'prevqtr',
        +            'prevmth',
        +            'power',
        +            'pmt',
        +            'num2str',
        +            'num2date',
        +            'num2char',
        +            'nextyr',
        +            'nextqtr',
        +            'nextmth',
        +            'newguid',
        +            'mthofyr',
        +            'mthname',
        +            'mkdate',
        +            'minint',
        +            'min',
        +            'methodstr',
        +            'menustr',
        +            'menuitemoutputstr',
        +            'menuitemdisplaystr',
        +            'menuitemactionstr',
        +            'maxint',
        +            'maxdate',
        +            'max',
        +            'match',
        +            'logn',
        +            'log10',
        +            'literalstr',
        +            'licensecodestr',
        +            'licensecodenum',
        +            'intvnorm',
        +            'intvno',
        +            'intvname',
        +            'intvmax',
        +            'int64str',
        +            'indexstr',
        +            'indexnum',
        +            'indexname2id',
        +            'indexid2name',
        +            'idg',
        +            'identifierstr',
        +            'helpfilestr',
        +            'helpdevstr',
        +            'helpapplstr',
        +            'guid2str',
        +            'getprefix',
        +            'getCurrentUTCTime',
        +            'fv',
        +            'funcname',
        +            'frac',
        +            'formstr',
        +            'fieldstr',
        +            'fieldpname',
        +            'fieldnum',
        +            'fieldname2id',
        +            'fieldid2pname',
        +            'fieldid2name',
        +            'extendedTypeStr',
        +            'extendedTypeNum',
        +            'exp10',
        +            'exp',
        +            'evalbuf',
        +            'enumstr',
        +            'enumnum',
        +            'enumcnt',
        +            'enum2str',
        +            'endmth',
        +            'dimof',
        +            'dg',
        +            'decround',
        +            'ddb',
        +            'dayofyr',
        +            'dayofwk',
        +            'dayofmth',
        +            'dayname',
        +            'date2str',
        +            'date2num',
        +            'curuserid',
        +            'curext',
        +            'cterm',
        +            'cosh',
        +            'cos',
        +            'corrflagset',
        +            'corrflagget',
        +            'convertUTCTimeToLocalTime',
        +            'convertUTCDateToLocalDate',
        +            'conpoke',
        +            'conpeek',
        +            'connull',
        +            'conlen',
        +            'conins',
        +            'confind',
        +            'configurationkeystr',
        +            'configurationkeynum',
        +            'condel',
        +            'classstr',
        +            'classnum',
        +            'classidget',
        +            'char2num',
        +            'beep',
        +            'atan',
        +            'asin',
        +            'ascii2ansi',
        +            'any2str',
        +            'any2real',
        +            'any2int64',
        +            'any2int',
        +            'any2guid',
        +            'any2enum',
        +            'any2date',
        +            'ansi2ascii',
        +            'acos',
        +            'abs'
        +            ),
        +        4 => array( // X++ SQL stuff
        +            'where',
        +            'update_recordset',
        +            'ttsCommit',
        +            'ttsBegin',
        +            'ttsAbort',
        +            'sum',
        +            'setting',
        +            'select',
        +            'reverse',
        +            'pessimisticLock',
        +            'outer',
        +            'order by',
        +            'optimisticLock',
        +            'notExists',
        +            'noFetch',
        +            'next',
        +            'minof',
        +            'maxof',
        +            'like',
        +            'join',
        +            'insert_recordset',
        +            'index hint',
        +            'index',
        +            'group by',
        +            'from',
        +            'forUpdate',
        +            'forceSelectOrder',
        +            'forcePlaceholders',
        +            'forceNestedLoop',
        +            'forceLiterals',
        +            'flush',
        +            'firstOnly',
        +            'firstFast',
        +            'exists',
        +            'desc',
        +            'delete_from',
        +            'count',
        +            'avg',
        +            'asc'
        +            )
        +        ),
        +    'SYMBOLS' => array( // X++ symbols
        +        '!',
        +        '&',
        +        '(',
        +        ')',
        +        '*',
        +        '^',
        +        '|',
        +        '~',
        +        '+',
        +        ',',
        +        '-',
        +        '/',
        +        ':',
        +        '<',
        +        '=',
        +        '>',
        +        '?',
        +        '[',
        +        ']',
        +        '{',
        +        '}'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000ff;',
        +            2 => 'color: #0000ff;',
        +            3 => 'color: #0000ff;',
        +            4 => 'color: #0000ff;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #007f00;',
        +            'MULTI' => 'color: #007f00; font-style: italic;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #ff0000;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #000000;'
        +            ),
        +        'METHODS' => array(
        +            1 => 'color: #000000;',
        +            2 => 'color: #000000;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #00007f;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.',
        +        2 => '::'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/geshi/yaml.php b/includes/geshi/yaml.php
        new file mode 100644
        index 0000000..2bfbc52
        --- /dev/null
        +++ b/includes/geshi/yaml.php
        @@ -0,0 +1,149 @@
        +: since PHP offers no variable-width lookbehind,
        + *      these blocks will still be highlighted even when commented out. As it happens,
        + *      any line ending with | or > could result in the unintentional highlighting of
        + *      all remaining lines in the file, just because I couldn't check for this regex
        + *      as a lookbehind:  '/:(\s+)(!!(\w+)(\s+))?/'
        + *      If there is a workaround for that, it needs implemented.
        + *   *  I may be missing some operators. I deliberately omitted inline array notation
        + *      as, in general, it's ugly and tends to conflict with plain-text. Ensuring all
        + *      highlighted list delimiters are not plain text would be as simple as checking
        + *      that they follow a colon directly. Alas, without variable-length lookbehinds,
        + *      if there is a way to do so in GeSHi I am unaware of it.
        + *   *  I kind of whored the comment regexp array. It seemed like a safe bet, so it's
        + *      where I crammed everything. Some of it may need moved elsewhere for neatness.
        + *   *  The !!typename highlight needs not to interfere with ": |" and ": >": Pairing
        + *      key: !!type | value is perfectly legal, but again due to lookbehind issues, I
        + *      can't add a case for that. Also, it is likely that multiple spaces can be put
        + *      between the colon and pipe symbol, which would also break it.
        + *
        + *************************************************************************************
        + *
        + *     This file is part of GeSHi.
        + *
        + *   GeSHi is free software; you can redistribute it and/or modify it
        + *   under the terms of the GNU General Public License as published by
        + *   the Free Software Foundation; either version 2 of the License, or
        + *   (at your option) any later version.
        + *
        + *   GeSHi is distributed in the hope that it will be useful,
        + *   but WITHOUT ANY WARRANTY; without even the implied warranty of
        + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + *   GNU General Public License for more details.
        + *
        + *   You should have received a copy of the GNU General Public License
        + *   along with GeSHi; if not, write to the Free Software
        + *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
        + *
        + ************************************************************************************/
        +
        +$language_data = array (
        +    'LANG_NAME' => 'YAML',
        +    'COMMENT_SINGLE' => array(),
        +    'COMMENT_MULTI' => array(),
        +    //Keys
        +    'COMMENT_REGEXP' => array( // ENTRY ZERO  SHOULD CHECK FOR (\n(\s*)([^#%]+?):(\s+)(!!(\w+)(\s+))?) AS A LOOKBEHIND, BUT IT CAN'T.
        +        0 => '/(?<=\s[\|>]\n)(\s+)(.*)((?=[\n$])(([\n^](\1(.*)|(?=[\n$])))*)|$)/', // Pipe blocks and > blocks.
        +        1 => '/#(.*)/', // Blue # comments
        +        2 => '/%(.*)/', // Red % comments
        +        3 => '/(^|\n)([^#%^\n]+?)(?=: )/',  // Key-value names
        +        4 => '/(^|\n)([^#%^\n]+?)(?=:\n)/',// Key-group names
        +        5 => '/(?<=^---)(\s*)!(\S+)/',    // Comments after ---
        +        6 => '/(?<=: )(\s*)\&(\S+)/',    // References
        +        7 => '/(?<=: )(\s*)\*(\S+)/',   // Dereferences
        +        8 => '/!!(\w+)/',              // Types
        +        //9 => '/(?<=\n)(\s*)-(?!-)/',       // List items: This needs to search within comments 3 and 4, but I don't know how.
        +        ),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '',
        +    'NUMBERS' => array(),
        +    'KEYWORDS' => array(
        +        1 => array(
        +            'all','any','none', "yes", "no"
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        1 => array('---', '...'),
        +        2 => array(': ', ">\n", "|\n", '<<:', ":\n") // It'd be nice if I could specify that the colon must
        +        //                                              follow comment 3 or 4 to be considered, and the > and |
        +        //                                              must follow such a colon.
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'font-weight: bold;'
        +            ),
        +        'COMMENTS' => array(
        +            0 => 'color: #303050;background-color: #F5F5F5',
        +            1 => 'color: blue;',
        +            2 => 'font-weight: bold; color: red;',
        +            3 => 'color: green;',
        +            4 => 'color: #007F45;',
        +            5 => 'color: #7f7fFF;',
        +            6 => 'color: #FF7000;',
        +            7 => 'color: #FF45C0;',
        +            8 => 'font-weight: bold; color: #005F5F;',
        +            //9 => 'font-weight: bold; color: #000000;',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            ),
        +        'BRACKETS' => array(
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #CF00CF;'
        +            ),
        +        'NUMBERS' => array(
        +            // 0 => 'color: #33f;' // Don't highlight numbers, really...
        +            ),
        +        'METHODS' => array(
        +            1 => '',
        +            2 => ''
        +            ),
        +        'SYMBOLS' => array(
        +            1 => 'color: cyan;',
        +            2 => 'font-weight: bold; color: brown;'
        +            ),
        +        'REGEXPS' => array(
        +            ),
        +        'SCRIPT' => array(
        +            0 => ''
        +            )
        +        ),
        +    'URLS' => array(1 => ''),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(),
        +    'REGEXPS' => array(),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(),
        +    'HIGHLIGHT_STRICT_BLOCK' => array()
        +);
        diff --git a/includes/geshi/z80.php b/includes/geshi/z80.php
        new file mode 100644
        index 0000000..07df46d
        --- /dev/null
        +++ b/includes/geshi/z80.php
        @@ -0,0 +1,142 @@
        + 'ZiLOG Z80 Assembler',
        +    'COMMENT_SINGLE' => array(1 => ';'),
        +    'COMMENT_MULTI' => array(),
        +    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array("'", '"'),
        +    'ESCAPE_CHAR' => '',
        +    'KEYWORDS' => array(
        +        /*CPU*/
        +        1 => array(
        +            'adc','add','and','bit','call','ccf','cp','cpd','cpdr','cpir','cpi',
        +            'cpl','daa','dec','di','djnz','ei','ex','exx','halt','im','in',
        +            'in0','inc','ind','indr','inir','ini','jp','jr','ld','ldd','lddr',
        +            'ldir','ldi','mlt','neg','nop','or','otdm','otdmr','otdr','otim',
        +            'otimr','otir','out','out0','outd','outi','pop','push','res','ret',
        +            'reti','retn','rl','rla','rlc','rlca','rld','rr','rra','rrc','rrca',
        +            'rrd','rst','sbc','scf','set','sla','sl1','sll','slp','sra','srl',
        +            'sub','tst','tstio','xor'
        +            ),
        +        /*registers*/
        +        2 => array(
        +            'a','b','c','d','e','h','l',
        +            'af','bc','de','hl','ix','iy','sp',
        +            'af\'','ixh','ixl','iyh','iyl'
        +            ),
        +        /*Directive*/
        +        3 => array(
        +            '#define','#endif','#else','#ifdef','#ifndef','#include','#undef',
        +            '.db','.dd','.df','.dq','.dt','.dw','.end','.org','equ'
        +            ),
        +        ),
        +    'SYMBOLS' => array(
        +        '[', ']', '(', ')', '?', '+', '-', '*', '/', '%', '$'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #0000ff; font-weight:bold;',
        +            2 => 'color: #0000ff;',
        +            3 => 'color: #46aa03; font-weight:bold;'
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #adadad; font-style: italic;',
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099; font-weight: bold;'
        +            ),
        +        'BRACKETS' => array(
        +            0 => 'color: #0000ff;'
        +            ),
        +        'STRINGS' => array(
        +            0 => 'color: #7f007f;'
        +            ),
        +        'NUMBERS' => array(
        +            0 => 'color: #dd22dd;'
        +            ),
        +        'METHODS' => array(
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #008000;'
        +            ),
        +        'REGEXPS' => array(
        +            0 => 'color: #22bbff;',
        +            1 => 'color: #22bbff;',
        +            2 => 'color: #993333;'
        +            ),
        +        'SCRIPT' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => ''
        +        ),
        +    'OOLANG' => false,
        +    'OBJECT_SPLITTERS' => array(
        +        ),
        +    'REGEXPS' => array(
        +        //Hex numbers
        +        0 => '0[0-9a-fA-F]{1,32}[hH]',
        +        //Binary numbers
        +        1 => '\%[01]{1,64}|[01]{1,64}[bB]?(?![^<]*>)',
        +        //Labels
        +        2 => '^[_a-zA-Z][_a-zA-Z0-9]?\:'
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        ),
        +    'TAB_WIDTH' => 8
        +);
        diff --git a/includes/geshi/zxbasic.php b/includes/geshi/zxbasic.php
        new file mode 100644
        index 0000000..1017678
        --- /dev/null
        +++ b/includes/geshi/zxbasic.php
        @@ -0,0 +1,148 @@
        + 'ZXBasic',
        +    'COMMENT_SINGLE' => array(
        +        1 => "'",
        +        2 => '#',
        +        3 => 'REM'
        +        ),
        +    'COMMENT_MULTI' => array("/'" => "'/"),
        +    'CASE_KEYWORDS' => GESHI_CAPS_UPPER, //GESHI_CAPS_NO_CHANGE,
        +    'QUOTEMARKS' => array('"'),
        +    'ESCAPE_CHAR' => '\\',
        +    'KEYWORDS' => array(
        +        1 => array(
        +            "ASM", "BEEP", "BOLD", "BORDER", "BRIGHT", "ByRef", "ByVal", "CAST",
        +            "CIRCLE", "CLS", "CONST", "CONTINUE", "DECLARE", "DIM", "DO",
        +            "DRAW", "ELSE", "ELSEIF", "END", "EXIT", "FastCall", "FLASH", "FOR",
        +            "FUNCTION", "GOTO", "GOSUB", "GO", "IF", "INK", "INVERSE", "ITALIC",
        +            "LET", "LOAD", "LOOP", "NEXT", "OVER", "PAPER", "PAUSE", "PI",
        +            "PLOT", "POKE", "PRINT", "RANDOMIZE", "REM", "RETURN", "SAVE",
        +            "StdCall", "Sub", "THEN", "TO", "UNTIL", "VERIFY", "WEND", "WHILE",
        +            ),
        +
        +        // types
        +        2 => array(
        +            'byte', 'ubyte', 'integer', 'uinteger', 'long', 'ulong', 'fixed',
        +            'float', 'string'
        +            ),
        +
        +        // Functions
        +        3 => array(
        +            "ABS", "ACS", "ASN", "ATN", "CHR", "CODE", "COS", "CSRLIN", "EXP",
        +            "HEX", "HEX16", "INKEY", "INT", "LEN", "LN", "PEEK", "POS", "RND",
        +            "SCREEN$", "SGN", "SIN", "SQR", "STR", "TAN", "VAL",
        +            ),
        +
        +        // Operators and modifiers
        +        4 => array(
        +            "AT", "AS", "AND", "MOD", "NOT", "OR", "SHL", "SHR", "STEP", "XOR"
        +            )
        +        ),
        +    'SYMBOLS' => array(
        +        '(', ')'
        +        ),
        +    'CASE_SENSITIVE' => array(
        +        GESHI_COMMENTS => false,
        +        1 => false,
        +        2 => false,
        +        3 => false,
        +        4 => false
        +        ),
        +    'STYLES' => array(
        +        'KEYWORDS' => array(
        +            1 => 'color: #000080; font-weight: bold;', // Commands
        +            2 => 'color: #800080; font-weight: bold;', // Types
        +            3 => 'color: #006000; font-weight: bold;', // Functions
        +            4 => 'color: #801010; font-weight: bold;'  // Operators and Modifiers
        +            ),
        +        'COMMENTS' => array(
        +            1 => 'color: #808080; font-style: italic;',
        +            2 => 'color: #339933;',
        +            3 => 'color: #808080; font-style: italic;',
        +            'MULTI' => 'color: #808080; font-style: italic;'
        +            ),
        +        'BRACKETS' => array(
        +            //0 => 'color: #66cc66;'
        +            0 => 'color: #007676;'
        +            ),
        +        'STRINGS' => array(
        +            //0 => 'color: #ff0000;'
        +            0 => 'color: #A00000; font-style: italic;'
        +            ),
        +        'NUMBERS' => array(
        +            //0 => 'color: #cc66cc;'
        +            0 => 'color: #b05103;'// font-weight: bold;'
        +            ),
        +        'METHODS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'SYMBOLS' => array(
        +            0 => 'color: #66cc66;'
        +            ),
        +        'ESCAPE_CHAR' => array(
        +            0 => 'color: #000099;'
        +            ),
        +        'SCRIPT' => array(
        +            ),
        +        'REGEXPS' => array(
        +            )
        +        ),
        +    'URLS' => array(
        +        1 => '',
        +        2 => '',
        +        3 => '',
        +        4 => ''
        +        ),
        +    'OOLANG' => true,
        +    'OBJECT_SPLITTERS' => array(
        +        1 => '.'
        +        ),
        +    'REGEXPS' => array(
        +        ),
        +    'STRICT_MODE_APPLIES' => GESHI_NEVER,
        +    'SCRIPT_DELIMITERS' => array(
        +        ),
        +    'HIGHLIGHT_STRICT_BLOCK' => array(
        +        )
        +);
        diff --git a/includes/index.php b/includes/index.php
        new file mode 100644
        index 0000000..e69de29
        diff --git a/includes/password.php b/includes/password.php
        new file mode 100644
        index 0000000..c99d3bf
        --- /dev/null
        +++ b/includes/password.php
        @@ -0,0 +1,317 @@
        +
        + * @license http://www.opensource.org/licenses/mit-license.html MIT License
        + * @copyright 2012 The Authors
        + */
        +
        +namespace {
        +
        +    if (!defined('PASSWORD_BCRYPT')) {
        +        /**
        +         * PHPUnit Process isolation caches constants, but not function declarations.
        +         * So we need to check if the constants are defined separately from 
        +         * the functions to enable supporting process isolation in userland
        +         * code.
        +         */
        +        define('PASSWORD_BCRYPT', 1);
        +        define('PASSWORD_DEFAULT', PASSWORD_BCRYPT);
        +        define('PASSWORD_BCRYPT_DEFAULT_COST', 10);
        +    }
        +
        +    if (!function_exists('password_hash')) {
        +
        +        /**
        +         * Hash the password using the specified algorithm
        +         *
        +         * @param string $password The password to hash
        +         * @param int    $algo     The algorithm to use (Defined by PASSWORD_* constants)
        +         * @param array  $options  The options for the algorithm to use
        +         *
        +         * @return string|false The hashed password, or false on error.
        +         */
        +        function password_hash($password, $algo, array $options = array()) {
        +            if (!function_exists('crypt')) {
        +                trigger_error("Crypt must be loaded for password_hash to function", E_USER_WARNING);
        +                return null;
        +            }
        +            if (is_null($password) || is_int($password)) {
        +                $password = (string) $password;
        +            }
        +            if (!is_string($password)) {
        +                trigger_error("password_hash(): Password must be a string", E_USER_WARNING);
        +                return null;
        +            }
        +            if (!is_int($algo)) {
        +                trigger_error("password_hash() expects parameter 2 to be long, " . gettype($algo) . " given", E_USER_WARNING);
        +                return null;
        +            }
        +            $resultLength = 0;
        +            switch ($algo) {
        +                case PASSWORD_BCRYPT:
        +                    $cost = PASSWORD_BCRYPT_DEFAULT_COST;
        +                    if (isset($options['cost'])) {
        +                        $cost = (int) $options['cost'];
        +                        if ($cost < 4 || $cost > 31) {
        +                            trigger_error(sprintf("password_hash(): Invalid bcrypt cost parameter specified: %d", $cost), E_USER_WARNING);
        +                            return null;
        +                        }
        +                    }
        +                    // The length of salt to generate
        +                    $raw_salt_len = 16;
        +                    // The length required in the final serialization
        +                    $required_salt_len = 22;
        +                    $hash_format = sprintf("$2y$%02d$", $cost);
        +                    // The expected length of the final crypt() output
        +                    $resultLength = 60;
        +                    break;
        +                default:
        +                    trigger_error(sprintf("password_hash(): Unknown password hashing algorithm: %s", $algo), E_USER_WARNING);
        +                    return null;
        +            }
        +            $salt_req_encoding = false;
        +            if (isset($options['salt'])) {
        +                switch (gettype($options['salt'])) {
        +                    case 'NULL':
        +                    case 'boolean':
        +                    case 'integer':
        +                    case 'double':
        +                    case 'string':
        +                        $salt = (string) $options['salt'];
        +                        break;
        +                    case 'object':
        +                        if (method_exists($options['salt'], '__tostring')) {
        +                            $salt = (string) $options['salt'];
        +                            break;
        +                        }
        +                    case 'array':
        +                    case 'resource':
        +                    default:
        +                        trigger_error('password_hash(): Non-string salt parameter supplied', E_USER_WARNING);
        +                        return null;
        +                }
        +                if (PasswordCompat\binary\_strlen($salt) < $required_salt_len) {
        +                    trigger_error(sprintf("password_hash(): Provided salt is too short: %d expecting %d", PasswordCompat\binary\_strlen($salt), $required_salt_len), E_USER_WARNING);
        +                    return null;
        +                } elseif (0 == preg_match('#^[a-zA-Z0-9./]+$#D', $salt)) {
        +                    $salt_req_encoding = true;
        +                }
        +            } else {
        +                $buffer = '';
        +                $buffer_valid = false;
        +                if (function_exists('mcrypt_create_iv') && !defined('PHALANGER')) {
        +                    $buffer = mcrypt_create_iv($raw_salt_len, MCRYPT_DEV_URANDOM);
        +                    if ($buffer) {
        +                        $buffer_valid = true;
        +                    }
        +                }
        +                if (!$buffer_valid && function_exists('openssl_random_pseudo_bytes')) {
        +                    $strong = false;
        +                    $buffer = openssl_random_pseudo_bytes($raw_salt_len, $strong);
        +                    if ($buffer && $strong) {
        +                        $buffer_valid = true;
        +                    }
        +                }
        +                if (!$buffer_valid && @is_readable('/dev/urandom')) {
        +                    $file = fopen('/dev/urandom', 'r');
        +                    $read = 0;
        +                    $local_buffer = '';
        +                    while ($read < $raw_salt_len) {
        +                        $local_buffer .= fread($file, $raw_salt_len - $read);
        +                        $read = PasswordCompat\binary\_strlen($local_buffer);
        +                    }
        +                    fclose($file);
        +                    if ($read >= $raw_salt_len) {
        +                        $buffer_valid = true;
        +                    }
        +                    $buffer = str_pad($buffer, $raw_salt_len, "\0") ^ str_pad($local_buffer, $raw_salt_len, "\0");
        +                }
        +                if (!$buffer_valid || PasswordCompat\binary\_strlen($buffer) < $raw_salt_len) {
        +                    $buffer_length = PasswordCompat\binary\_strlen($buffer);
        +                    for ($i = 0; $i < $raw_salt_len; $i++) {
        +                        if ($i < $buffer_length) {
        +                            $buffer[$i] = $buffer[$i] ^ chr(mt_rand(0, 255));
        +                        } else {
        +                            $buffer .= chr(mt_rand(0, 255));
        +                        }
        +                    }
        +                }
        +                $salt = $buffer;
        +                $salt_req_encoding = true;
        +            }
        +            if ($salt_req_encoding) {
        +                // encode string with the Base64 variant used by crypt
        +                $base64_digits =
        +                    'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
        +                $bcrypt64_digits =
        +                    './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
        +
        +                $base64_string = base64_encode($salt);
        +                $salt = strtr(rtrim($base64_string, '='), $base64_digits, $bcrypt64_digits);
        +            }
        +            $salt = PasswordCompat\binary\_substr($salt, 0, $required_salt_len);
        +
        +            $hash = $hash_format . $salt;
        +
        +            $ret = crypt($password, $hash);
        +
        +            if (!is_string($ret) || PasswordCompat\binary\_strlen($ret) != $resultLength) {
        +                return false;
        +            }
        +
        +            return $ret;
        +        }
        +
        +        /**
        +         * Get information about the password hash. Returns an array of the information
        +         * that was used to generate the password hash.
        +         *
        +         * array(
        +         *    'algo' => 1,
        +         *    'algoName' => 'bcrypt',
        +         *    'options' => array(
        +         *        'cost' => PASSWORD_BCRYPT_DEFAULT_COST,
        +         *    ),
        +         * )
        +         *
        +         * @param string $hash The password hash to extract info from
        +         *
        +         * @return array The array of information about the hash.
        +         */
        +        function password_get_info($hash) {
        +            $return = array(
        +                'algo' => 0,
        +                'algoName' => 'unknown',
        +                'options' => array(),
        +            );
        +            if (PasswordCompat\binary\_substr($hash, 0, 4) == '$2y$' && PasswordCompat\binary\_strlen($hash) == 60) {
        +                $return['algo'] = PASSWORD_BCRYPT;
        +                $return['algoName'] = 'bcrypt';
        +                list($cost) = sscanf($hash, "$2y$%d$");
        +                $return['options']['cost'] = $cost;
        +            }
        +            return $return;
        +        }
        +
        +        /**
        +         * Determine if the password hash needs to be rehashed according to the options provided
        +         *
        +         * If the answer is true, after validating the password using password_verify, rehash it.
        +         *
        +         * @param string $hash    The hash to test
        +         * @param int    $algo    The algorithm used for new password hashes
        +         * @param array  $options The options array passed to password_hash
        +         *
        +         * @return boolean True if the password needs to be rehashed.
        +         */
        +        function password_needs_rehash($hash, $algo, array $options = array()) {
        +            $info = password_get_info($hash);
        +            if ($info['algo'] !== (int) $algo) {
        +                return true;
        +            }
        +            switch ($algo) {
        +                case PASSWORD_BCRYPT:
        +                    $cost = isset($options['cost']) ? (int) $options['cost'] : PASSWORD_BCRYPT_DEFAULT_COST;
        +                    if ($cost !== $info['options']['cost']) {
        +                        return true;
        +                    }
        +                    break;
        +            }
        +            return false;
        +        }
        +
        +        /**
        +         * Verify a password against a hash using a timing attack resistant approach
        +         *
        +         * @param string $password The password to verify
        +         * @param string $hash     The hash to verify against
        +         *
        +         * @return boolean If the password matches the hash
        +         */
        +        function password_verify($password, $hash) {
        +            if (!function_exists('crypt')) {
        +                trigger_error("Crypt must be loaded for password_verify to function", E_USER_WARNING);
        +                return false;
        +            }
        +            $ret = crypt($password, $hash);
        +            if (!is_string($ret) || PasswordCompat\binary\_strlen($ret) != PasswordCompat\binary\_strlen($hash) || PasswordCompat\binary\_strlen($ret) <= 13) {
        +                return false;
        +            }
        +
        +            $status = 0;
        +            for ($i = 0; $i < PasswordCompat\binary\_strlen($ret); $i++) {
        +                $status |= (ord($ret[$i]) ^ ord($hash[$i]));
        +            }
        +
        +            return $status === 0;
        +        }
        +    }
        +
        +}
        +
        +namespace PasswordCompat\binary {
        +
        +    if (!function_exists('PasswordCompat\\binary\\_strlen')) {
        +
        +        /**
        +         * Count the number of bytes in a string
        +         *
        +         * We cannot simply use strlen() for this, because it might be overwritten by the mbstring extension.
        +         * In this case, strlen() will count the number of *characters* based on the internal encoding. A
        +         * sequence of bytes might be regarded as a single multibyte character.
        +         *
        +         * @param string $binary_string The input string
        +         *
        +         * @internal
        +         * @return int The number of bytes
        +         */
        +        function _strlen($binary_string) {
        +            if (function_exists('mb_strlen')) {
        +                return mb_strlen($binary_string, '8bit');
        +            }
        +            return strlen($binary_string);
        +        }
        +
        +        /**
        +         * Get a substring based on byte limits
        +         *
        +         * @see _strlen()
        +         *
        +         * @param string $binary_string The input string
        +         * @param int    $start
        +         * @param int    $length
        +         *
        +         * @internal
        +         * @return string The substring
        +         */
        +        function _substr($binary_string, $start, $length) {
        +            if (function_exists('mb_substr')) {
        +                return mb_substr($binary_string, $start, $length, '8bit');
        +            }
        +            return substr($binary_string, $start, $length);
        +        }
        +
        +        /**
        +         * Check if current PHP version is compatible with the library
        +         *
        +         * @return boolean the check result
        +         */
        +        function check() {
        +            static $pass = NULL;
        +
        +            if (is_null($pass)) {
        +                if (function_exists('crypt')) {
        +                    $hash = '$2y$04$usesomesillystringfore7hnbRJHxXVLeakoG8K30oukPsA.ztMG';
        +                    $test = crypt("password", $hash);
        +                    $pass = $test == $hash;
        +                } else {
        +                    $pass = false;
        +                }
        +            }
        +            return $pass;
        +        }
        +
        +    }
        +}
        \ No newline at end of file
        diff --git a/index.php b/index.php
        new file mode 100644
        index 0000000..28195de
        --- /dev/null
        +++ b/index.php
        @@ -0,0 +1,403 @@
        +
        + *
        + * This program is free software; you can redistribute it and/or
        + * modify it under the terms of the GNU General Public License
        + * as published by the Free Software Foundation; either version 3
        + * of the License, or (at your option) any later version.
        + * 
        + * This program is distributed in the hope that it will be useful,
        + * but WITHOUT ANY WARRANTY; without even the implied warranty of
        + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + * GNU General Public License in GPL.txt for more details.
        + */
        + 
        +session_start();
        +
        +$directory = 'install';
        +
        +if (file_exists($directory)) {
        +    header("Location: install");
        +    exit();
        +}
        +
        +// Required functions
        +require_once('config.php');
        +require_once('includes/captcha.php');
        +require_once('includes/functions.php');
        +
        +// PHP <5.5 compatibility
        +require_once('includes/password.php');
        +
        +// UTF-8
        +header('Content-Type: text/html; charset=utf-8');
        +
        +// Database Connection
        +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname);
        +if (mysqli_connect_errno()) {
        +    die("Unable to connect to database");
        +}
        +
        +// Get site info
        +$query  = "SELECT * FROM site_info";
        +$result = mysqli_query($con, $query);
        +
        +while ($row = mysqli_fetch_array($result)) {
        +    $title				= Trim($row['title']);
        +    $des				= Trim($row['des']);
        +    $baseurl    		= Trim($row['baseurl']);
        +    $keyword			= Trim($row['keyword']);
        +    $site_name			= Trim($row['site_name']);
        +    $email				= Trim($row['email']);
        +    $twit				= Trim($row['twit']);
        +    $face				= Trim($row['face']);
        +    $gplus				= Trim($row['gplus']);
        +    $ga					= Trim($row['ga']);
        +    $additional_scripts	= Trim($row['additional_scripts']);
        +}
        +
        +// Set theme and language
        +$query  = "SELECT * FROM interface";
        +$result = mysqli_query($con, $query);
        +
        +while ($row = mysqli_fetch_array($result)) {
        +    $default_lang  = Trim($row['lang']);
        +    $default_theme = Trim($row['theme']);
        +}
        +require_once("langs/$default_lang");
        +
        +// Current date & user IP
        +$date    = date('jS F Y');
        +$ip      = $_SERVER['REMOTE_ADDR'];
        +$data_ip = file_get_contents('tmp/temp.tdata');
        +
        +// Ads
        +$query  = "SELECT * FROM ads WHERE id='1'";
        +$result = mysqli_query($con, $query);
        +
        +while ($row = mysqli_fetch_array($result)) {
        +    $text_ads = Trim($row['text_ads']);
        +    $ads_1    = Trim($row['ads_1']);
        +    $ads_2    = Trim($row['ads_2']);
        +}
        +
        +// Sitemap
        +$query  = "Select * From sitemap_options WHERE id='1'";
        +$result = mysqli_query($con, $query);
        +
        +while ($row = mysqli_fetch_array($result)) {
        +    $priority   = $row['priority'];
        +    $changefreq = $row['changefreq'];
        +}
        +
        +// Captcha
        +$query  = "SELECT * FROM captcha where id='1'";
        +$result = mysqli_query($con, $query);
        +
        +while ($row = mysqli_fetch_array($result)) {
        +    $color   = Trim($row['color']);
        +    $mode    = Trim($row['mode']);
        +    $mul     = Trim($row['mul']);
        +    $allowed = Trim($row['allowed']);
        +    $cap_e   = Trim($row['cap_e']);
        +    $recaptcha_sitekey   = Trim($row['recaptcha_sitekey']);
        +    $recaptcha_secretkey   = Trim($row['recaptcha_secretkey']);
        +}
        +if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        +} else {
        +    if ($cap_e == "on") {
        +        if ($mode == "reCAPTCHA") {
        +            $_SESSION['captcha_mode'] = "recaptcha";
        +            $_SESSION['captcha'] = $recaptcha_sitekey;
        +        } else {
        +            $_SESSION['captcha_mode'] = "internal";
        +            $_SESSION['captcha'] = captcha($color, $mode, $mul, $allowed);
        +        }
        +    } else {
        +        $_SESSION['captcha_mode'] = "none";
        +    }        
        +}
        +
        +// Check if IP is banned
        +if ( is_banned($con, $ip) ) die($lang['banned']); // "You have been banned from ".$site_name;
        +
        +// Site permissions
        +$query  = "SELECT * FROM site_permissions where id='1'";
        +$result = mysqli_query($con, $query);
        +
        +while ($row = mysqli_fetch_array($result)) {
        +    $disableguest   = Trim($row['disableguest']);
        +	$siteprivate	= Trim($row['siteprivate']);
        +}
        +
        +if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        +} else {
        +    if ($disableguest == "on") {
        +        $noguests = "on";
        +	}
        +	if ($siteprivate =="on") {
        +		$privatesite = "on";
        +    }
        +	if (isset($_SESSION['username'])) {
        +		$noguests = "off";
        +	}
        +}
        +
        +// Escape from quotes
        +if (get_magic_quotes_gpc()) {
        +    function callback_stripslashes(&$val, $name)
        +    {
        +        if (get_magic_quotes_gpc())
        +            $val = stripslashes($val);
        +    }
        +    if (count($_GET))
        +        array_walk($_GET, 'callback_stripslashes');
        +    if (count($_POST))
        +        array_walk($_POST, 'callback_stripslashes');
        +    if (count($_COOKIE))
        +        array_walk($_COOKIE, 'callback_stripslashes');
        +}
        +
        +// Logout
        +if (isset($_GET['logout'])) {
        +	header('Location: ' . $_SERVER['HTTP_REFERER']);
        +    unset($_SESSION['token']);
        +    unset($_SESSION['oauth_uid']);
        +    unset($_SESSION['username']);
        +    unset($_SESSION['pic']);
        +    session_destroy();
        +}
        +
        +// Page views
        +$query = "SELECT @last_id := MAX(id) FROM page_view";
        +
        +$result = mysqli_query($con, $query);
        +
        +while ($row = mysqli_fetch_array($result)) {
        +    $last_id = $row['@last_id := MAX(id)'];
        +}
        +
        +$query  = "SELECT * FROM page_view WHERE id=" . Trim($last_id);
        +$result = mysqli_query($con, $query);
        +
        +while ($row = mysqli_fetch_array($result)) {
        +    $last_date = $row['date'];
        +}
        +
        +if ($last_date == $date) {
        +    if (str_contains($data_ip, $ip)) {
        +        $query  = "SELECT * FROM page_view WHERE id=" . Trim($last_id);
        +        $result = mysqli_query($con, $query);
        +        
        +        while ($row = mysqli_fetch_array($result)) {
        +            $last_tpage = Trim($row['tpage']);
        +        }
        +        $last_tpage = $last_tpage + 1;
        +        
        +        // IP already exists, Update view count
        +        $query = "UPDATE page_view SET tpage=$last_tpage WHERE id=" . Trim($last_id);
        +        mysqli_query($con, $query);
        +    } else {
        +        $query  = "SELECT * FROM page_view WHERE id=" . Trim($last_id);
        +        $result = mysqli_query($con, $query);
        +        
        +        while ($row = mysqli_fetch_array($result)) {
        +            $last_tpage  = Trim($row['tpage']);
        +            $last_tvisit = Trim($row['tvisit']);
        +        }
        +        $last_tpage  = $last_tpage + 1;
        +        $last_tvisit = $last_tvisit + 1;
        +        
        +        // Update both tpage and tvisit.
        +        $query = "UPDATE page_view SET tpage=$last_tpage,tvisit=$last_tvisit WHERE id=" . Trim($last_id);
        +        mysqli_query($con, $query);
        +        file_put_contents('tmp/temp.tdata', $data_ip . "\r\n" . $ip);
        +    }
        +} else {
        +    // Delete the file and clear data_ip
        +    unlink("tmp/temp.tdata");
        +    $data_ip = "";
        +    
        +    // New date is created
        +    $query = "INSERT INTO page_view (date,tpage,tvisit) VALUES ('$date','1','1')";
        +    mysqli_query($con, $query);
        +    
        +    // Update the IP
        +    file_put_contents('tmp/temp.tdata', $data_ip . "\r\n" . $ip);
        +    
        +}
        +
        +// POST Handler
        +if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        +	// Check if fields are empty
        +	if (empty($_POST["paste_data"])) {
        +		$error = $lang['empty_paste'];
        +		goto OutPut;
        +		exit;
        +	}
        +	
        +	// Check if fields are only white space
        +	if (trim($_POST["paste_data"]) == '') {
        +		$error = $lang['empty_paste'];
        +		goto OutPut;
        +		exit;
        +	}
        +
        +	// Set our limits
        +	if (mb_strlen($_POST["paste_data"], '8bit') >  1024 * 1024 * $pastelimit) {
        +		$error = $lang['large_paste'];
        +		goto OutPut;
        +		exit;
        +	}
        +			
        +    // Check POST data status
        +    if (isset($_POST['title']) And isset($_POST['paste_data'])) {
        +        if ($cap_e == "on" && !isset($_SESSION['username'])) {
        +            if ($mode == "reCAPTCHA") {
        +                $response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$recaptcha_secretkey."&response=".$_POST['g-recaptcha-response']);
        +                $response = json_decode($response, true);
        +                if ( $response["success"] == false ) {
        +                    // reCAPTCHA Errors
        +                    switch( $response["error-codes"][0] ) {
        +                        case "missing-input-response":
        +                            $error = $lang['missing-input-response']; 
        +                            break;
        +                        case "missing-input-secret":
        +                            $error = $lang['missing-input-secret'];
        +                            break;
        +                        case "invalid-input-response":
        +                            $error = $lang['missing-input-response'];
        +                            break;
        +                        case "invalid-input-secret":
        +                            $error = $lang['invalid-input-secret'];
        +                            break;
        +                    }
        +                    goto OutPut;
        +                }
        +            } else {
        +                $scode    = strtolower(htmlentities(Trim($_POST['scode'])));
        +                $cap_code = strtolower($_SESSION['captcha']['code']);
        +                if ($cap_code == $scode) {
        +                } else {
        +                    $error = $lang['image_wrong']; // Wrong captcha.
        +                    goto OutPut;
        +                }
        +            }
        +        }
        +
        +        $p_title    = Trim(htmlspecialchars($_POST['title']));
        +			if (strlen($p_title)==0) $p_title='Untitled';
        +        $p_content  = htmlspecialchars($_POST['paste_data']);
        +        $p_visible  = Trim(htmlspecialchars($_POST['visibility']));
        +        $p_code     = Trim(htmlspecialchars($_POST['format']));
        +        $p_expiry   = Trim(htmlspecialchars($_POST['paste_expire_date']));
        +        $p_password = $_POST['pass'];
        +        if ($p_password == "" || $p_password == null) {
        +            $p_password = "NONE";
        +        } else {
        +            $p_password = password_hash($p_password, PASSWORD_DEFAULT);
        +        }
        +        $p_encrypt = Trim(htmlspecialchars($_POST['encrypted']));
        +        
        +        if ($p_encrypt == "" || $p_encrypt == null) {
        +            $p_encrypt = "0";
        +        } else {
        +            // Encrypt option
        +            $p_encrypt = "1";
        +            $p_content = encrypt($p_content);
        +        }
        +        
        +        if (isset($_SESSION['token'])) {
        +            $p_member = Trim($_SESSION['username']);
        +        } else {
        +            $p_member = "Guest";
        +        }
        +        // Set expiry time
        +        switch ($p_expiry) {
        +            case '10M':
        +                $expires = mktime(date("H"), date("i") + "10", date("s"), date("n"), date("j"), date("Y"));
        +                break;
        +            case '1H':
        +                $expires = mktime(date("H") + "1", date("i"), date("s"), date("n"), date("j"), date("Y"));
        +            case '1D':
        +                $expires = mktime(date("H"), date("i"), date("s"), date("n"), date("j") + "1", date("Y"));
        +                break;
        +            case '1W':
        +                $expires = mktime(date("H"), date("i"), date("s"), date("n"), date("j") + "7", date("Y"));
        +                break;
        +            case '2W':
        +                $expires = mktime(date("H"), date("i"), date("s"), date("n"), date("j") + "14", date("Y"));
        +                break;
        +            case '1M':
        +                $expires = mktime(date("H"), date("i"), date("s"), date("n") + "1", date("j"), date("Y"));
        +                break;
        +            case 'self':
        +                $expires = "SELF";
        +                break;
        +            case 'N':
        +                $expires = "NULL";
        +                break;
        +            default:
        +                $expires = "NULL";
        +                break;
        +        }
        +        $p_title   = mysqli_real_escape_string($con, $p_title);
        +        $p_content = mysqli_real_escape_string($con, $p_content);
        +        $p_date    = date('jS F Y h:i:s A');
        +        $date      = date('jS F Y');
        +        $now_time  = mktime(date("H"), date("i"), date("s"), date("n"), date("j"), date("Y"));
        +        // Edit existing paste or create new?
        +        if ( isset($_POST['edit'] ) ) {
        +            $edit_paste_id = $_POST['paste_id'];
        +            $query = "UPDATE pastes SET title='$p_title',content='$p_content',visible='$p_visible',code='$p_code',expiry='$expires',password='$p_password',encrypt='$p_encrypt',member='$p_member',date='$p_date',ip='$ip' WHERE id = '$edit_paste_id'";
        +        } else {
        +            $query = "INSERT INTO pastes (title,content,visible,code,expiry,password,encrypt,member,date,ip,now_time,views,s_date) VALUES 
        +            ('$p_title','$p_content','$p_visible','$p_code','$expires','$p_password','$p_encrypt','$p_member','$p_date','$ip','$now_time','0','$date')";
        +        }
        +        $result = mysqli_query($con, $query);
        +        if (mysqli_error($con)) {
        +            $error = $lang['paste_db_error']; // "Unable to post the paste on database";
        +        } else {
        +            $query  = "SELECT @last_id := MAX(id) FROM pastes";
        +            $result = mysqli_query($con, $query);
        +            while ($row = mysqli_fetch_array($result)) {
        +                $paste_id = $row['@last_id := MAX(id)'];
        +            }
        +            $success = $paste_id;
        +            if ($p_visible == '0') {
        +                addToSitemap($paste_id, $priority, $changefreq, $mod_rewrite);
        +            }
        +        }
        +
        +    } else {
        +        $error = $lang['error']; // "Something went wrong";
        +    }
        +	
        +	// Redirect to paste on successful entry, or on successful edit redirect back to edited paste
        +	if ( isset( $success ) ) {
        +		if ( $mod_rewrite == '1' ) {
        +            if ( isset( $_POST['edit'] ) ) {
        +                $paste_url = "$edit_paste_id";
        +            } else {
        +                $paste_url = "$success"; 
        +            }
        +        } else {
        +            if ( $_POST['edit'] ) {
        +                $paste_url = "paste.php?id=$edit_paste_id";
        +            } else {
        +                $paste_url = "paste.php?id=$success";
        +            }
        +        }
        +		header("Location: ".$paste_url."");
        +	}
        +
        +}
        +
        +OutPut:
        +// Theme
        +require_once('theme/' . $default_theme . '/header.php');
        +//require_once('theme/' . $default_theme . '/main.php');
        +require_once('theme/' . $default_theme . '/archive.php');
        +require_once('theme/' . $default_theme . '/footer.php');
        +?>
        diff --git a/install/configure.php b/install/configure.php
        new file mode 100644
        index 0000000..16be9c4
        --- /dev/null
        +++ b/install/configure.php
        @@ -0,0 +1,349 @@
        +
        + *
        + * This program is free software; you can redistribute it and/or
        + * modify it under the terms of the GNU General Public License
        + * as published by the Free Software Foundation; either version 3
        + * of the License, or (at your option) any later version.
        + * 
        + * This program is distributed in the hope that it will be useful,
        + * but WITHOUT ANY WARRANTY; without even the implied warranty of
        + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + * GNU General Public License in GPL.txt for more details.
        + */
        +
        +$data_host = htmlentities(Trim($_POST['data_host']));
        +$data_name = htmlentities(Trim($_POST['data_name']));
        +$data_user = htmlentities(Trim($_POST['data_user']));
        +$data_pass = htmlentities(Trim($_POST['data_pass']));
        +$data_sec  = htmlentities(Trim($_POST['data_sec']));
        +
        +
        +$con = mysqli_connect($data_host, $data_user, $data_pass, $data_name);
        +
        +if (mysqli_connect_errno()) {
        +    echo "0";
        +    goto fx;
        +}
        +
        +// which protocol are we on
        +$protocol = stripos($_SERVER['SERVER_PROTOCOL'],'https') === true ? 'https://' : 'http://';
        +// level up, dirty but meh
        +$x=2;$path = dirname($_SERVER['PHP_SELF']); while(max(0, --$x)) { $levelup = dirname($path); }
        +
        +
        +$data = ' 'GADV 4CS',
        +    '6502acme' => 'ACME Cross Assembler',
        +    '6502kickass' => 'Kick Assembler',
        +    '6502tasm' => 'TASM/64TASS 1.46',
        +    '68000devpac' => 'HiSoft Devpac ST 2',
        +    'abap' => 'ABAP',
        +    'actionscript' => 'ActionScript',
        +    'actionscript3' => 'ActionScript 3',
        +    'ada' => 'Ada',
        +    'aimms' => 'AIMMS3',
        +    'algol68' => 'ALGOL 68',
        +    'apache' => 'Apache',
        +    'applescript' => 'AppleScript',
        +    'arm' => 'ARM Assembler',
        +    'asm' => 'ASM',
        +    'asp' => 'ASP',
        +    'asymptote' => 'Asymptote',
        +    'autoconf' => 'Autoconf',
        +    'autohotkey' => 'Autohotkey',
        +    'autoit' => 'AutoIt',
        +    'avisynth' => 'AviSynth',
        +    'awk' => 'Awk',
        +    'bascomavr' => 'BASCOM AVR',
        +    'bash' => 'BASH',
        +    'basic4gl' => 'Basic4GL',
        +    'bf' => 'Brainfuck',
        +    'bibtex' => 'BibTeX',
        +    'blitzbasic' => 'BlitzBasic',
        +    'bnf' => 'BNF',
        +    'boo' => 'Boo',
        +    'c' => 'C',
        +    'c_loadrunner' => 'C (LoadRunner)',
        +    'c_mac' => 'C for Macs',
        +    'c_winapi' => 'C (WinAPI)',
        +    'caddcl' => 'CAD DCL',
        +    'cadlisp' => 'CAD Lisp',
        +    'cfdg' => 'CFDG',
        +    'cfm' => 'ColdFusion',
        +    'chaiscript' => 'ChaiScript',
        +    'chapel' => 'Chapel',
        +    'cil' => 'CIL',
        +    'clojure' => 'Clojure',
        +    'cmake' => 'CMake',
        +    'cobol' => 'COBOL',
        +    'coffeescript' => 'CoffeeScript',
        +    'cpp' => 'C++',
        +    'cpp-qt' => 'C++ (with QT extensions)',
        +    'cpp-winapi' => 'C++ (WinAPI)',
        +    'csharp' => 'C#',
        +    'css' => 'CSS',
        +    'cuesheet' => 'Cuesheet',
        +    'd' => 'D',
        +    'dcl' => 'DCL',
        +    'dcpu16' => 'DCPU-16 Assembly',
        +    'dcs' => 'DCS',
        +    'delphi' => 'Delphi',
        +    'diff' => 'Diff-output',
        +    'div' => 'DIV',
        +    'dos' => 'DOS',
        +    'dot' => 'dot',
        +    'e' => 'E',
        +    'ecmascript' => 'ECMAScript',
        +    'eiffel' => 'Eiffel',
        +    'email' => 'eMail (mbox)',
        +    'epc' => 'EPC',
        +    'erlang' => 'Erlang',
        +    'euphoria' => 'Euphoria',
        +    'ezt' => 'EZT',
        +    'f1' => 'Formula One',
        +    'falcon' => 'Falcon',
        +    'fo' => 'FO (abas-ERP)',
        +    'fortran' => 'Fortran',
        +    'freebasic' => 'FreeBasic',
        +    'fsharp' => 'F#',
        +    'gambas' => 'GAMBAS',
        +    'gdb' => 'GDB',
        +    'genero' => 'Genero',
        +    'genie' => 'Genie',
        +    'gettext' => 'GNU Gettext',
        +    'glsl' => 'glSlang',
        +    'gml' => 'GML',
        +    'gnuplot' => 'GNUPlot',
        +    'go' => 'Go',
        +    'groovy' => 'Groovy',
        +    'gwbasic' => 'GwBasic',
        +    'haskell' => 'Haskell',
        +    'haxe' => 'Haxe',
        +    'hicest' => 'HicEst',
        +    'hq9plus' => 'HQ9+',
        +    'html4strict' => 'HTML 4.01',
        +    'html5' => 'HTML 5',
        +    'icon' => 'Icon',
        +    'idl' => 'Uno Idl',
        +    'ini' => 'INI',
        +    'inno' => 'Inno Script',
        +    'intercal' => 'INTERCAL',
        +    'io' => 'IO',
        +    'ispfpanel' => 'ISPF Panel',
        +    'j' => 'J',
        +    'java' => 'Java',
        +    'java5' => 'Java 5',
        +    'javascript' => 'JavaScript',
        +    'jcl' => 'JCL',
        +    'jquery' => 'jQuery',
        +    'kixtart' => 'KiXtart',
        +    'klonec' => 'KLone C',
        +    'klonecpp' => 'KLone C++',
        +    'latex' => 'LaTeX',
        +    'lb' => 'Liberty BASIC',
        +    'ldif' => 'LDIF',
        +    'lisp' => 'Lisp',
        +    'llvm' => 'LLVM',
        +    'locobasic' => 'Locomotive Basic',
        +    'logtalk' => 'Logtalk',
        +    'lolcode' => 'LOLcode',
        +    'lotusformulas' => 'Lotus Notes @Formulas',
        +    'lotusscript' => 'LotusScript',
        +    'lscript' => 'Lightwave Script',
        +    'lsl2' => 'Linden Script',
        +    'lua' => 'LUA',
        +    'm68k' => 'Motorola 68000 Assembler',
        +    'magiksf' => 'MagikSF',
        +    'make' => 'GNU make',
        +    'mapbasic' => 'MapBasic',
        +    'markdown' => 'Markdown',
        +    'matlab' => 'Matlab M',
        +    'mirc' => 'mIRC Scripting',
        +    'mmix' => 'MMIX',
        +    'modula2' => 'Modula-2',
        +    'modula3' => 'Modula-3',
        +    'mpasm' => 'Microchip Assembler',
        +    'mxml' => 'MXML',
        +    'mysql' => 'MySQL',
        +    'nagios' => 'Nagios',
        +    'netrexx' => 'NetRexx',
        +    'newlisp' => 'NewLisp',
        +    'nginx' => 'Nginx',
        +    'nsis' => 'NSIS',
        +    'oberon2' => 'Oberon-2',
        +    'objc' => 'Objective-C',
        +    'objeck' => 'Objeck',
        +    'ocaml' => 'Ocaml',
        +    'ocaml-brief' => 'OCaml (Brief)',
        +    'octave' => 'GNU/Octave',
        +    'oobas' => 'OpenOffice.org Basic',
        +    'oorexx' => 'ooRexx',
        +    'oracle11' => 'Oracle 11 SQL',
        +    'oracle8' => 'Oracle 8 SQL',
        +    'oxygene' => 'Oxygene (Delphi Prism)',
        +    'oz' => 'OZ',
        +    'parasail' => 'ParaSail',
        +    'parigp' => 'PARI/GP',
        +    'pascal' => 'Pascal',
        +    'pcre' => 'PCRE',
        +    'per' => 'Per (forms)',
        +    'perl' => 'Perl',
        +    'perl6' => 'Perl 6',
        +    'pf' => 'OpenBSD Packet Filter',
        +    'php' => 'PHP',
        +    'php-brief' => 'PHP (Brief)',
        +    'pic16' => 'PIC16 Assembler',
        +    'pike' => 'Pike',
        +    'pixelbender' => 'Pixel Bender',
        +    'pli' => 'PL/I',
        +    'plsql' => 'PL/SQL',
        +    'postgresql' => 'PostgreSQL',
        +    'povray' => 'POVRAY',
        +    'powerbuilder' => 'PowerBuilder',
        +    'powershell' => 'PowerShell',
        +    'proftpd' => 'ProFTPd config',
        +    'progress' => 'Progress',
        +    'prolog' => 'Prolog',
        +    'properties' => 'Properties',
        +    'providex' => 'ProvideX',
        +    'purebasic' => 'PureBasic',
        +    'pycon' => 'Python (console mode)',
        +    'pys60' => 'Python for S60',
        +    'python' => 'Python',
        +    'qbasic' => 'QuickBASIC',
        +    'racket' => 'Racket',
        +    'rails' => 'Ruby on Rails',
        +    'rbs' => 'RBScript',
        +    'rebol' => 'REBOL',
        +    'reg' => 'Microsoft REGEDIT',
        +    'rexx' => 'Rexx',
        +    'robots' => 'robots.txt',
        +    'rpmspec' => 'RPM Specification File',
        +    'rsplus' => 'R / S+',
        +    'ruby' => 'Ruby',
        +    'sas' => 'SAS',
        +    'scala' => 'Scala',
        +    'scheme' => 'Scheme',
        +    'scilab' => 'SciLab',
        +    'scl' => 'SCL',
        +    'sdlbasic' => 'sdlBasic',
        +    'smalltalk' => 'Smalltalk',
        +    'smarty' => 'Smarty',
        +    'spark' => 'SPARK',
        +    'sparql' => 'SPARQL',
        +    'sql' => 'SQL',
        +    'stonescript' => 'StoneScript',
        +    'systemverilog' => 'SystemVerilog',
        +    'tcl' => 'TCL',
        +    'teraterm' => 'Tera Term Macro',
        +    'text' => 'Plain Text',
        +    'thinbasic' => 'thinBasic',
        +    'tsql' => 'T-SQL',
        +    'typoscript' => 'TypoScript',
        +    'unicon' => 'Unicon',
        +    'upc' => 'UPC',
        +    'urbi' => 'Urbi',
        +    'unrealscript' => 'Unreal Script',
        +    'vala' => 'Vala',
        +    'vb' => 'Visual Basic',
        +    'vbnet' => 'VB.NET',
        +    'vbscript' => 'VB Script',
        +    'vedit' => 'Vedit Macro',
        +    'verilog' => 'Verilog',
        +    'vhdl' => 'VHDL',
        +    'vim' => 'Vim',
        +    'visualfoxpro' => 'Visual FoxPro',
        +    'visualprolog' => 'Visual Prolog',
        +    'whitespace' => 'Whitespace',
        +    'whois' => 'WHOIS (RPSL format)',
        +    'winbatch' => 'WinBatch',
        +    'xbasic' => 'XBasic',
        +    'xml' => 'XML',
        +    'xorg_conf' => 'Xorg Config',
        +    'xpp' => 'X++',
        +    'yaml' => 'YAML',
        +    'z80' => 'ZiLOG Z80 Assembler',
        +    'zxbasic' => 'ZXBasic'
        +);
        +
        +// Popular formats that are listed first." . '
        +$popular_formats=array(' . "
        +    'text',
        +    'html4strict',
        +    'html5',
        +    'css',
        +    'javascript',
        +    'php',
        +    'perl',
        +    'python',
        +    'postgresql',
        +    'sql',
        +    'xml',
        +    'java',
        +    'c',
        +    'csharp',
        +    'cpp',
        +    'markdown'
        +);
        +?>";
        +
        +file_put_contents('../config.php', $data);
        +
        +echo "1";
        +
        +fx:
        +?>
        \ No newline at end of file
        diff --git a/install/index.php b/install/index.php
        new file mode 100644
        index 0000000..ae68775
        --- /dev/null
        +++ b/install/index.php
        @@ -0,0 +1,301 @@
        +
        + *
        + * This program is free software; you can redistribute it and/or
        + * modify it under the terms of the GNU General Public License
        + * as published by the Free Software Foundation; either version 3
        + * of the License, or (at your option) any later version.
        + * 
        + * This program is distributed in the hope that it will be useful,
        + * but WITHOUT ANY WARRANTY; without even the implied warranty of
        + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        + * GNU General Public License in GPL.txt for more details.
        + */
        +	$date = date('jS F Y');
        +	$ip   = $_SERVER['REMOTE_ADDR'];
        +?>
        +
        +
        +
        +
        +
        +Paste 2.0 - Install
        +
        +
        +
        + 
        +
        +     
        +
        +
        +
        +
        +
        +
        + + + +
        + + +
        + +
        + +
        + +
        +
        +
        +
        +
        Pre-installation checks
        + + + + + + + + + Writable'; + } else { + echo ''; + } + ?> + + + + + Writable'; + } else { + echo ''; + } + ?> + + + + + Writable'; + } else { + echo ''; + } + ?> + + +
        FileStatus
        config.phpNot Writable
        tmp/temp.tdataNot Writable
        sitemap.xmlNot Writable
        +
        +
        +
        + + +
        +
        +
        Database Information
        +
        +
        + + Database connection failed. +
        +
        + +
        + +
        +
        + +
        + +
        + +
        +
        + +
        + +
        + +
        +
        + +
        + +
        + +
        +
        + +
        + +
        + +
        +
        +
        + +
        +
        +
        +
        + + + +
        +
        +
        +
        One more step. Configure your Paste installation.
        +
        + —> Admin Account +
        + +
        + +
        +
        +
        + +
        + +
        +
        + +
        +
        +
        +
        + + +
        +
        +
        +
        +
        Installing database schema for Paste. Please wait a moment.
        +
        +
        +
        +
        + + +
        +
        +
        +
        +
        +
        +
        +
        + + +
        + +
        + + + + + +
        + + + + + + \ No newline at end of file diff --git a/install/install.php b/install/install.php new file mode 100644 index 0000000..c05c867 --- /dev/null +++ b/install/install.php @@ -0,0 +1,331 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ + +require_once("../config.php"); + +// PHP <5.5 compatibility +require_once('../includes/password.php'); + +$admin_user = htmlentities(Trim($_POST['admin_user'])); +$admin_pass = password_hash($_POST['admin_pass'], PASSWORD_DEFAULT); +$date = date("j F Y"); +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); +// level up, dirty but meh +$x=2;$path = dirname($_SERVER['PHP_SELF']); while(max(0, --$x)) { $levelup = dirname($path); } + +if (mysqli_connect_errno()) { + echo "Failed to connect:" . mysqli_connect_error() . "
        "; +} + +// Admin +$sql = "CREATE TABLE admin +( +id INT NOT NULL AUTO_INCREMENT, +PRIMARY KEY(id), +user VARCHAR(250), +pass VARCHAR(250) +)"; + // Execute query + + if (mysqli_query($con, $sql)) { + echo "admin table created.
        "; + } else { + echo "Error creating table: " . mysqli_error($con) . "
        "; + } + + $query = "INSERT INTO admin (user,pass) VALUES ('$admin_user','$admin_pass')"; + mysqli_query($con, $query); + +// Admin history +$sql = "CREATE TABLE admin_history +( +id INT NOT NULL AUTO_INCREMENT, +PRIMARY KEY(id), +last_date VARCHAR(255), +ip VARCHAR(255) +)"; + // Execute query + + if (mysqli_query($con, $sql)) { + echo "admin_history table created.
        "; + } else { + echo "Error creating table: " . mysqli_error($con) . "
        "; + } + +// Site info +$sql = "CREATE TABLE site_info +( +id INT NOT NULL AUTO_INCREMENT, +PRIMARY KEY(id), +title VARCHAR(255), +des mediumtext, +keyword mediumtext, +site_name VARCHAR(255), +email VARCHAR(255), +twit VARCHAR(4000), +face VARCHAR(4000), +gplus VARCHAR(4000), +ga VARCHAR(255), +additional_scripts text, +baseurl text +)"; + // Execute query + + if (mysqli_query($con, $sql)) { + echo "site_info table created.
        "; + } else { + echo "Error creating table: " . mysqli_error($con) . "
        "; + } + + $query = "INSERT INTO site_info (title,des,keyword,site_name,email,twit,face,gplus,ga,additional_scripts,baseurl) VALUES ('Paste','Paste can store text, source code or sensitive data for a set period of time.','paste,pastebin.com,pastebin,text,paste,online paste','Paste','','https://twitter.com/','https://www.facebook.com/','https://plus.google.com/','UA-','','" . '//' . $_SERVER['SERVER_NAME'] . $levelup . "')"; + mysqli_query($con, $query); + +// Site Permissions +$sql = "CREATE TABLE site_permissions +( +id int(11) NOT NULL AUTO_INCREMENT, +PRIMARY KEY(id), +disableguest varchar(255) DEFAULT NULL, +siteprivate varchar(255) DEFAULT NULL +) +"; + // Execute query + + if (mysqli_query($con, $sql)) { + echo "site_permissions table created.
        "; + } else { + echo "Error creating table: " . mysqli_error($con) . "
        "; + } + + $query = "INSERT INTO site_permissions (id,disableguest,siteprivate) VALUES (1, 'on', 'on'), (2, 'off', 'off')"; + + mysqli_query($con, $query); + +// Interface +$sql = "CREATE TABLE interface +( +id INT NOT NULL AUTO_INCREMENT, +PRIMARY KEY(id), +theme text, +lang text +)"; + // Execute query + + if (mysqli_query($con, $sql)) { + echo "interface table created.
        "; + } else { + echo "Error creating table: " . mysqli_error($con) . "
        "; + } + + $query = "INSERT INTO interface (theme,lang) VALUES ('default','en.php')"; + mysqli_query($con, $query); + +// Pastes +$sql = "CREATE TABLE pastes +( +id INT NOT NULL AUTO_INCREMENT, +PRIMARY KEY(id), +title text, +content longtext, +visible text, +code text, +expiry text, +password text, +encrypt text, +member text, +date text, +ip text, +now_time text, +views text, +s_date text +)"; + // Execute query + + if (mysqli_query($con, $sql)) { + echo "pastes table created.
        "; + } else { + echo "Error creating table: " . mysqli_error($con) . "
        "; + } + +// Users +$sql = "CREATE TABLE users +( +id INT NOT NULL AUTO_INCREMENT, +PRIMARY KEY(id), +oauth_uid text, +username text, +email_id text, +full_name text, +platform text, +password text, +verified text, +picture text, +date text, +ip text +)"; + // Execute query + + if (mysqli_query($con, $sql)) { + echo "users table created.
        "; + } else { + echo "Error creating table: " . mysqli_error($con) . "
        "; + } + + +// Bans +$sql = "CREATE TABLE ban_user +( +id INT NOT NULL AUTO_INCREMENT, +PRIMARY KEY(id), +ip VARCHAR(255), +last_date VARCHAR(255) +)"; + // Execute query + + if (mysqli_query($con, $sql)) { + echo "ban_user table created.
        "; + } else { + echo "Error creating table: " . mysqli_error($con) . "
        "; + } + + mysqli_query($con, $query); + +// Mail +$sql = "CREATE TABLE mail +( +id INT NOT NULL AUTO_INCREMENT, +PRIMARY KEY(id), +verification text, +smtp_host text, +smtp_username text, +smtp_password text, +smtp_port text, +protocol text, +auth text, +socket text +)"; + // Execute query + + if (mysqli_query($con, $sql)) { + echo "mail table created.
        "; + } else { + echo "Error creating table: " . mysqli_error($con) . "
        "; + } + + $query = "INSERT INTO mail (verification,smtp_host,smtp_username,smtp_password,smtp_port,protocol,auth,socket) VALUES ('enabled','','','','','1','true','ssl')"; + mysqli_query($con, $query); + +// Pages +$sql = "CREATE TABLE pages +( +id INT NOT NULL AUTO_INCREMENT, +PRIMARY KEY(id), +last_date VARCHAR(255), +page_name VARCHAR(255), +page_title mediumtext, +page_content longtext +)"; + // Execute query + + if (mysqli_query($con, $sql)) { + echo "pages table created.
        "; + } else { + echo "Error creating table: " . mysqli_error($con) . "
        "; + } + + mysqli_query($con, $query); + +// Page views +$sql = "CREATE TABLE page_view +( +id INT NOT NULL AUTO_INCREMENT, +PRIMARY KEY(id), +date VARCHAR(255), +tpage VARCHAR(255), +tvisit VARCHAR(255) +)"; + // Execute query + + if (mysqli_query($con, $sql)) { + echo "page_view table created.
        "; + } else { + echo "Error creating table: " . mysqli_error($con) . "
        "; + } + +// Ads +$sql = "CREATE TABLE ads +( +id INT NOT NULL AUTO_INCREMENT, +PRIMARY KEY(id), +text_ads text, +ads_1 text, +ads_2 text +)"; + // Execute query + + if (mysqli_query($con, $sql)) { + echo "Ad related tables created.
        "; + } else { + echo "Error creating table: " . mysqli_error($con) . "
        "; + } + + $query = "INSERT INTO ads (text_ads,ads_1,ads_2) VALUES ('','','')"; + mysqli_query($con, $query); + +// Sitemap options +$sql = "CREATE TABLE sitemap_options +( +id INT NOT NULL AUTO_INCREMENT, +PRIMARY KEY(id), +priority VARCHAR(255), +changefreq VARCHAR(255) +)"; + // Execute query + + if (mysqli_query($con, $sql)) { + echo "sitemap_options table created.
        "; + } else { + echo "Error creating table: " . mysqli_error($con) . "
        "; + } + + $query = "INSERT INTO sitemap_options (id,priority,changefreq) VALUES ('1','0.9','daily')"; + mysqli_query($con, $query); + +// Captcha +$sql = "CREATE TABLE captcha +( +id INT NOT NULL AUTO_INCREMENT, +PRIMARY KEY(id), +cap_e VARCHAR(255), +mode VARCHAR(255), +mul VARCHAR(255), +allowed text, +color mediumtext, +recaptcha_sitekey text, +recaptcha_secretkey text +)"; + // Execute query + + if (mysqli_query($con, $sql)) { + echo "captcha table created.
        "; + } else { + echo "Error creating table: " . mysqli_error($con) . "
        "; + } + + $query = "INSERT INTO captcha (cap_e,mode,mul,allowed,color,recaptcha_sitekey,recaptcha_secretkey) VALUES ('off','Normal','off','ABCDEFGHIJKLMNOPQRSTUVYXYZabcdefghijklmnopqrstuvwxyz0123456789','#000000','','')"; + mysqli_query($con, $query); +?> + +If you received no errors above, you can assume everything went OK. You can now remove the /install directory and proceed to the main site or your dashboard diff --git a/langs/en.php b/langs/en.php new file mode 100644 index 0000000..5a61df4 --- /dev/null +++ b/langs/en.php @@ -0,0 +1,121 @@ +
        Login or Register to submit a new paste. It's free."; +$lang['registertoedit'] = "Login or Register to edit or fork this paste. It's free."; +$lang['editpaste'] = "Edit"; +$lang['forkpaste'] = "Fork"; +$lang['guestmsgtitle'] = $site_name . " is for source code and general debugging text."; +$lang['guestmsgbody'] = "Login or Register to edit, delete and keep track of your pastes and more."; +$lang['emptypastebin'] = "There are no pastes to show."; +$lang['siteprivate'] = "This pastebin is private."; +$lang['image_wrong'] = "Wrong captcha."; +$lang['missing-input-response'] = "The reCAPTCHA response parameter is missing. Please verify your PASTE settings."; +$lang['missing-input-secret'] = "The reCAPTCHA secret parameter is missing. Please add it to your PASTE settings."; +$lang['missing-input-response'] = "The reCAPTCHA response parameter is invalid. Please try to complete the reCAPTCHA again."; +$lang['invalid-input-secret'] = "The reCAPTCHA secret parameter is invalid or malformed. Please double check your PASTE settings."; +$lang['empty_paste'] = "You cannot post an empty paste."; +$lang['large_paste'] = "Your paste is too large. Max size is " . $pastelimit . "MB"; +$lang['paste_db_error'] = "Unable to post to database."; +$lang['error'] = "Something went wrong."; +$lang['archive'] = "Pastes Archive"; +$lang['contact'] = "Contact Us"; +$lang['full_name'] = "Your full name is required."; +$lang['email'] = "Your email address is required."; +$lang['email_invalid'] = "Your email address seems to be invalid."; +$lang['message'] = "Your message is required."; +$lang['login/register'] = "Login/Register"; +$lang['rememberme'] = "Keep me signed in."; +$lang['mail_acc_con'] = "$site_name Account Confirmation"; +$lang['mail_suc'] = "Verification code successfully sent to your email address."; +$lang['email_ver'] = "Email already verified."; +$lang['email_not'] = "Email not found."; +$lang['pass_change'] = "Password changed successfully and sent to your email."; +$lang['notverified'] = "Account not verified."; +$lang['incorrect'] = "Incorrect User/Password"; +$lang['missingfields'] = "All fields must be filled out."; +$lang['userexists'] = "Username already taken."; +$lang['emailexists'] = "Email already registered."; +$lang['registered'] = "Your account was successfully registered."; +$lang['usrinvalid'] = "Your username can only contain letters or numbers."; +$lang['mypastes'] = "My Pastes"; +$lang['pastedeleted'] = "Paste deleted."; +$lang['databaseerror'] = "Unable to post to database."; +$lang['userchanged'] = "Username changed successfully."; +$lang['usernotvalid'] = "Username not vaild."; +$lang['privatepaste'] = "This is a private paste."; +$lang['wrongpassword'] = 'Wrong password.'; +$lang['pwdprotected'] = 'Password protected paste'; +$lang['notfound'] = "Not found"; +$lang['wrongpwd'] = "Wrong password. Try again."; +$lang['myprofile'] = "My Profile"; +$lang['profileerror'] = "Unable to update the profile information "; +$lang['profileupdated'] = "Your profile information is updated "; +$lang['oldpasswrong'] = "Your old password is wrong."; +$lang['archives'] = "Pastes Archive"; +$lang['archivestitle'] = "This page contains the most recently created 100 public pastes."; +$lang['pastetitle'] = "Paste Title"; +$lang['pastetime'] = "Paste Time"; +$lang['pastesyntax'] = "Paste Syntax"; +$lang['pasteviews'] = "Paste Views"; +$lang['wentwrong'] = "Something went wrong."; +$lang['versent'] = "A verification email has been sent to your email address."; +$lang['modpaste'] = "Modify Paste"; +$lang['newpaste'] = "New Paste"; +$lang['highlighting'] = "Syntax Highlighting"; +$lang['expiration'] = "Paste Expiration"; +$lang['visibility'] = "Paste Visibility"; +$lang['pwopt'] = "Password (Optional)"; +$lang['encrypt'] = "Encrypt in database"; +$lang['entercode'] = "Enter Code"; +$lang['almostthere'] = "Almost there. One more step to go."; +$lang['username'] = "Username"; +$lang['autogen'] = "Auto generated name"; +$lang['setuser'] = "Set your Username"; +$lang['keepuser'] = "Keep autogenerated name"; +$lang['enterpwd'] = "Enter the password"; +$lang['totalpastes'] = "Total Pastes:"; +$lang['membtype'] = "Membership Type:"; +$lang['email'] = "Email"; +$lang['fullname'] = "Full Name"; +$lang['chgpwd'] = "Change Password"; +$lang['curpwd'] = "Current Password"; +$lang['newpwd'] = "New Password"; +$lang['confpwd'] = "Confirm Password"; +$lang['mypastes'] = "My Pastes"; +$lang['viewpastes'] = "View all my pastes"; +$lang['recentpastes'] = "Recent Pastes"; +$lang['user_public_pastes'] = "'s Pastes"; +$lang['yourpastes'] = "Your Pastes"; +$lang['mypastestitle'] = "All of your pastes, in one place."; +$lang['delete'] = "Delete"; +$lang['highlighted'] = "The text below is selected, press Ctrl+C to copy to your clipboard. (⌘+C on Mac)"; +$lang['newpaste'] = "New Paste"; +$lang['download'] = "Download"; +$lang['showlineno'] = "Show/Hide line no."; +$lang['copyto'] = "Copy text to clipboard"; +$lang['rawpaste'] = "Raw Paste"; +$lang['membersince'] = "Joined: "; +$lang['delete_error_invalid'] = "Error: Paste not deleted because it does not exist or you do not own the paste."; +$lang['not_logged_in'] = "Error: You must be logged in to do that."; +$lang['public'] = "Public"; +$lang['unlisted'] = "Unlisted"; +$lang['private'] = "Private"; +$lang['hello'] = "Hello"; +$lang['profile-message'] = "This is your profile page where you can manage your pastes.
        All of your public, private and unlisted pastes will be shown here. You can also delete your pastes from this page. If other users visit your page they will only see pastes you have set public."; +$lang['profile-stats'] = "Some of your statistics:"; +$lang['profile-total-pastes'] = "Total Pastes:"; +$lang['profile-total-pub'] = "Total public pastes:"; +$lang['profile-total-unl'] = "Total unlisted pastes:"; +$lang['profile-total-pri'] = "Total private pastes:"; +$lang['profile-total-views'] = "Total views of all your pastes:"; +$lang['embed-hosted-by'] = "hosted by"; +$lang['view-raw'] = "View Raw"; +?> diff --git a/langs/fr.php b/langs/fr.php new file mode 100644 index 0000000..372a5b9 --- /dev/null +++ b/langs/fr.php @@ -0,0 +1,123 @@ +
        Connectez-vous ou Enregistrez-vous pour soumettre un nouveau paste. C'est gratuit !"; +$lang['registertoedit'] = "Connectez-vous ou Enregistrez-vous pour éditer ou dupliquer ce paste. C'est gratuit !"; +$lang['editpaste'] = "Éditer"; +$lang['forkpaste'] = "Dupliquer"; +$lang['guestmsgtitle'] = $site_name . " Pour le code source et le texte général."; +// $lang['guestmsgbody'] = "Connectez-vous ou Enregistrez-vous pour éditer, supprimer et suivre vos pastes et bien plus."; +$lang['guestmsgbody'] = "- Archives
        - Login"; +$lang['emptypastebin'] = "Pas de pastes."; +$lang['siteprivate'] = "Ce pastebin est privé."; +$lang['image_wrong'] = "Erreur de captcha."; +$lang['missing-input-response'] = "Il manque le paramètre réponse de reCAPTCHA. Vérifier la configuration de PASTE."; +$lang['missing-input-secret'] = "Il manque le paramètre secret de reCAPTCHA. Merci de l'ajouter à la configuration de PASTE."; +$lang['missing-input-response'] = "Le paramètre réponse de reCAPTCHA est invalide. Recommencez."; +$lang['invalid-input-secret'] = "Le paramètre secret de reCAPTCHA est invalide ou incorrect. Vérifiez la configuration de PASTE."; +$lang['empty_paste'] = "Vous ne pouvez pas publier un paste vide."; +$lang['large_paste'] = "Le paste est trop volumineux. La taille maximale est " . $pastelimit . "MB"; +$lang['paste_db_error'] = "Impossible de publier dans la base de données."; +$lang['error'] = "Erreur fatale."; +$lang['archive'] = "Archives"; +$lang['contact'] = "Nous contacter"; +$lang['full_name'] = "Le champ nom doit être renseigné."; +$lang['email'] = "Le champ email doit être renseigné."; +$lang['email_invalid'] = "Adresse email invalide."; +$lang['message'] = "Le champ message doit être renseigné."; +$lang['login/register'] = "Se connecter/S'enregistrer"; +$lang['rememberme'] = "Rester connecter."; +$lang['mail_acc_con'] = "Confirmation de votre compte pour $site_name"; +$lang['mail_suc'] = "Le code de vérification a été transmis à votre adresse email."; +$lang['email_ver'] = "Adresse email déjà vérifiée."; +$lang['email_not'] = "Adresse email non trouvée."; +$lang['pass_change'] = "Le mot de passe a été changé et transmis à votre adresse email."; +$lang['notverified'] = "Compte non vérifié."; +$lang['incorrect'] = "Nom d'utilisateur ou mot de passe incorrect."; +$lang['missingfields'] = "Tous les champs doivent être renseignés"; +$lang['userexists'] = "Le nom d'utilisateur existe déjà."; +$lang['emailexists'] = "Adresse email déjà enregistrée."; +$lang['registered'] = "Votre compte a été enregistré."; +$lang['usrinvalid'] = "Votre nom d'utilisateur ne doit contenir que des lettres ou des chiffres."; +$lang['mypastes'] = "Mes Pastes"; +$lang['pastedeleted'] = "Paste supprimé."; +$lang['databaseerror'] = "Impossible d'enregistrer dans la base de données."; +$lang['userchanged'] = "Nom d'utilisateur changé."; +$lang['usernotvalid'] = "Nom d'utilisateur non valide."; +$lang['privatepaste'] = "Ce paste est privé."; +$lang['wrongpassword'] = 'Erreur mot de passe.'; +$lang['pwdprotected'] = 'Ce paste est protégé par mot de passe.'; +$lang['notfound'] = "Non trouvé"; +$lang['wrongpwd'] = "Erreur mot de passe, re-essayez."; +$lang['myprofile'] = "Mon profil"; +$lang['profileerror'] = "Impossible de mettre à jour vos informations de profil."; +$lang['profileupdated'] = "Vos informations de profil ont été mises à jour"; +$lang['oldpasswrong'] = "Erreur ancien mot de passe"; +$lang['archives'] = "Archives"; +$lang['archivestitle'] = "Cet écran réuni les 100 derniers paste enregistrés."; +$lang['pastetitle'] = "Titre du paste"; +$lang['pastetime'] = "Durée de vie du paste"; +$lang['pastesyntax'] = "Syntaxe du paste"; +$lang['pasteviews'] = "Nombre de vues du paste"; +$lang['wentwrong'] = "Erreur fatale."; +$lang['versent'] = "Un email de vérification a été transmis à votre adresse email."; +$lang['modpaste'] = "Modifier le paste"; +$lang['newpaste'] = "Nouveau paste"; +$lang['highlighting'] = "Mise en évidence de la syntaxe."; +$lang['expiration'] = "Durée de vie du paste"; +$lang['visibility'] = "Portée du paste"; +$lang['pwopt'] = "Mot de passe (Optionnel)"; +$lang['encrypt'] = "Crypter dans la base de données"; +$lang['entercode'] = "Entrez le code"; +$lang['almostthere'] = "Vous avez presque terminé, il ne reste qu'une étape"; +$lang['username'] = "Nom d'utilisateur"; +$lang['autogen'] = "Nom généré automatiquement"; +$lang['setuser'] = "Saisir votre nom d'utilisateur"; +$lang['keepuser'] = "Garder le nom généré automatiquement"; +$lang['enterpwd'] = "Saisir le mot de passe"; +$lang['totalpastes'] = "Total pastes:"; +$lang['membtype'] = "Type de compte:"; +$lang['email'] = "Email"; +$lang['fullname'] = "Nom complet"; +$lang['chgpwd'] = "Changer le mot de passe"; +$lang['curpwd'] = "Mot de passe actuel"; +$lang['newpwd'] = "Nouveau mot de passe"; +$lang['confpwd'] = "Confirmez le nouveau mot de passe"; +$lang['mypastes'] = "Mes pastes"; +$lang['viewpastes'] = "Voir tous mes pastes"; +$lang['recentpastes'] = "Pastes récents"; +$lang['user_public_pastes'] = "'s Pastes"; +$lang['yourpastes'] = "Vos pastes"; +$lang['mypastestitle'] = "Tous vos pastes au même endroit."; +$lang['delete'] = "Supprimer"; +$lang['highlighted'] = "Le texte ci-dessus est sélectionné, presser Ctrl+C pour le copier dans votre presse-papier. (⌘+C sur Mac)"; +$lang['newpaste'] = "Nouveau paste"; +$lang['download'] = "Télécharger"; +$lang['showlineno'] = "Afficher/Cacher les numéros de ligne."; +$lang['copyto'] = "Copier le texte dans le presse-papier."; +$lang['rawpaste'] = "Paste brut"; +$lang['membersince'] = "Enregistré depuis : "; +$lang['delete_error_invalid'] = "Erreur : le paste n'a pas été supprimé car il n'existe pas ou vous n'êtes pas son propriétaire."; +$lang['not_logged_in'] = "Erreur : vous devez être connecté."; +$lang['public'] = "Public"; +$lang['unlisted'] = "Fantôme"; +$lang['private'] = "Privé"; +$lang['hello'] = "Bonjour"; +$lang['profile-message'] = "Vous pouvez gérer vos pastes sur cet écran de profil.
        Tous vos pastes publics, privés et fantômes sont listés ici. Vous pouvez également supprimer vos pastes depuis cet écran. Si un autre utilisateur visite votre profil, il ne verra que vos pastes publics."; +$lang['profile-stats'] = "Quelques statistiques :"; +$lang['profile-total-pastes'] = "Nombre total de pastes :"; +$lang['profile-total-pub'] = "Nombre de pastes publics :"; +$lang['profile-total-unl'] = "Nombre de pastes fantômes :"; +$lang['profile-total-pri'] = "Nombre de pastes privés :"; +$lang['profile-total-views'] = "Nombre total de vues :"; +$lang['embed-hosted-by'] = "hébergé par"; +$lang['view-raw'] = "Voir les données brutes"; + +?> diff --git a/langs/index.php b/langs/index.php new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/langs/index.php @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/login.php b/login.php new file mode 100644 index 0000000..b964ba0 --- /dev/null +++ b/login.php @@ -0,0 +1,407 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ + +// PHP <5.5 compatibility +require_once('includes/password.php'); + +session_start(); + +// Required functions +require_once('config.php'); +require_once('includes/functions.php'); +require_once('mail/mail.php'); + +// Current Date & User IP +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; +$data_ip = file_get_contents('tmp/temp.tdata'); + +// Mail +$mail_type = "1"; + +// Check if already logged in +if (isset($_SESSION['token'])) { + header("Location: ./"); +} + +// Database Connection +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); +if (mysqli_connect_errno()) { + die("Unable to connect to database"); +} +// Get site info +$query = "SELECT * FROM site_info"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $title = Trim($row['title']); + $des = Trim($row['des']); + $baseurl = Trim($row['baseurl']); + $keyword = Trim($row['keyword']); + $site_name = Trim($row['site_name']); + $email = Trim($row['email']); + $twit = Trim($row['twit']); + $face = Trim($row['face']); + $gplus = Trim($row['gplus']); + $ga = Trim($row['ga']); + $additional_scripts = Trim($row['additional_scripts']); +} + +$admin_mail = $email; +$admin_name = $site_name; + +// Email information + +$query = "SELECT * FROM mail WHERE id='1'"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $verification = Trim($row['verification']); + $smtp_host = Trim($row['smtp_host']); + $smtp_user = Trim($row['smtp_username']); + $smtp_pass = Trim($row['smtp_password']); + $smtp_port = Trim($row['smtp_port']); + $smtp_protocol = Trim($row['protocol']); + $smtp_auth = Trim($row['auth']); + $smtp_sec = Trim($row['socket']); +} +$mail_type = $smtp_protocol; + +// Check if IP is banned +if ( is_banned($con, $ip) ) die($lang['banned']); // "You have been banned from ".$site_name; + +// Set theme and language +$query = "SELECT * FROM interface"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $default_lang = Trim($row['lang']); + $default_theme = Trim($row['theme']); +} +require_once("langs/$default_lang"); + +// Page title +$p_title = $lang['login/register']; //"Login/Register"; + +// Ads +$query = "SELECT * FROM ads WHERE id='1'"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $text_ads = Trim($row['text_ads']); + $ads_1 = Trim($row['ads_1']); + $ads_2 = Trim($row['ads_2']); +} + +// Logout +if (isset($_GET['logout'])) { + header('Location: ' . $_SERVER['HTTP_REFERER']); + unset($_SESSION['token']); + unset($_SESSION['oauth_uid']); + unset($_SESSION['username']); + session_destroy(); +} + +if (strpos($banned_ip, $ip) !== false) { + die($lang['banned']); //"You have been banned from ".$site_name +} + +// Page views +$query = "SELECT @last_id := MAX(id) FROM page_view"; + +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_id = $row['@last_id := MAX(id)']; +} + +$query = "SELECT * FROM page_view WHERE id=" . Trim($last_id); +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_date = $row['date']; +} + +if ($last_date == $date) { + if (str_contains($data_ip, $ip)) { + $query = "SELECT * FROM page_view WHERE id=" . Trim($last_id); + $result = mysqli_query($con, $query); + + while ($row = mysqli_fetch_array($result)) { + $last_tpage = Trim($row['tpage']); + } + $last_tpage = $last_tpage + 1; + + // IP already exists, update page view + $query = "UPDATE page_view SET tpage=$last_tpage WHERE id=" . Trim($last_id); + mysqli_query($con, $query); + } else { + $query = "SELECT * FROM page_view WHERE id=" . Trim($last_id); + $result = mysqli_query($con, $query); + + while ($row = mysqli_fetch_array($result)) { + $last_tpage = Trim($row['tpage']); + $last_tvisit = Trim($row['tvisit']); + } + $last_tpage = $last_tpage + 1; + $last_tvisit = $last_tvisit + 1; + + // Update both tpage and tvisit. + $query = "UPDATE page_view SET tpage=$last_tpage,tvisit=$last_tvisit WHERE id=" . Trim($last_id); + mysqli_query($con, $query); + file_put_contents('tmp/temp.tdata', $data_ip . "\r\n" . $ip); + } +} else { + // Delete the file and clear data_ip + unlink("tmp/temp.tdata"); + $data_ip = ""; + + // New date is created + $query = "INSERT INTO page_view (date,tpage,tvisit) VALUES ('$date','1','1')"; + mysqli_query($con, $query); + + // Update the IP + file_put_contents('tmp/temp.tdata', $data_ip . "\r\n" . $ip); + +} +if (isset($_GET['resend'])) { + if (isset($_POST['email'])) { + $email = htmlentities(trim($_POST['email'])); + $query = "SELECT * FROM users WHERE email_id='$email'"; + $result = mysqli_query($con, $query); + if (mysqli_num_rows($result) > 0) { + // Username found + while ($row = mysqli_fetch_array($result)) { + $username = $row['username']; + $db_email_id = $row['email_id']; + $db_full_name = $row['full_name']; + $db_platform = $row['platform']; + $db_password = Trim($row['password']); + $db_verified = $row['verified']; + $db_picture = $row['picture']; + $db_date = $row['date']; + $db_ip = $row['ip']; + $db_id = $row['id']; + } + if ($db_verified == '0') { + $protocol = paste_protocol(); + $verify_url = $protocol . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . "/verify.php?username=$username&code=" . Md5('4et4$55765' . $db_email_id . 'd94ereg'); + $sent_mail = $email; + $subject = $lang['mail_acc_con']; // "$site_name Account Confirmation"; + $body = " + Hello $db_full_name, Please verify your account by clicking the link below.

        + + $verify_url

        + + After confirming your account you can log in using your username: $username and the password you used when signing up. + "; + + if ($mail_type == '1') { + default_mail($admin_mail, $admin_name, $sent_mail, $subject, $body); + } else { + smtp_mail($smtp_host, $smtp_port, $smtp_auth, $smtp_user, $smtp_pass, $smtp_sec, $admin_mail, $admin_name, $sent_mail, $subject, $body); + } + $success = $lang['mail_suc']; // "Verification code successfully sent to your email."; + + } else { + $error = $lang['email_ver']; //"Email already verified."; + } + + } else { + $error = $lang['email_not']; // "Email not found."; + } + + } +} + +if (isset($_GET['forgot'])) { + if (isset($_POST['email'])) { + $email = htmlentities(trim($_POST['email'])); + $query = "SELECT * FROM users WHERE email_id='$email'"; + $result = mysqli_query($con, $query); + if (mysqli_num_rows($result) > 0) { + // Username found + while ($row = mysqli_fetch_array($result)) { + $username = $row['username']; + $db_email_id = $row['email_id']; + $db_full_name = $row['full_name']; + $db_platform = $row['platform']; + $db_password = Trim($row['password']); + $db_verified = $row['verified']; + $db_picture = $row['picture']; + $db_date = $row['date']; + $db_ip = $row['ip']; + $db_id = $row['id']; + } + $new_pass = uniqid(rand(), true); + $new_pass_hash = password_hash($new_pass, PASSWORD_DEFAULT); + + $query = "UPDATE users SET password='$new_pass_hash' WHERE username='$username'"; + mysqli_query($con, $query); + if (mysqli_error($con)) { + $error = "Unable to access database."; + } else { + $success = $lang['pass_change']; //"Password changed successfully and sent to your email address."; + $sent_mail = $email; + $subject = "$site_name Password Reset"; + $body = "
        + Hello,

        + + Your password has been reset: $new_pass

        + + You can now login and change your password.
        + "; + if ($mail_type == '1') { + default_mail($admin_mail, $admin_name, $sent_mail, $subject, $body); + } else { + smtp_mail($smtp_host, $smtp_port, $smtp_auth, $smtp_user, $smtp_pass, $smtp_sec, $admin_mail, $admin_name, $sent_mail, $subject, $body); + } + + } + + } else { + $error = $lang['email_not']; //"Email not found"; + } + + } + +} +if ($_SERVER['REQUEST_METHOD'] == POST) { + // Check if logged in + if (isset($_SESSION['token'])) { + header("Location: ./"); + } else { + // Login process + if (isset($_POST['signin'])) { + $username = htmlentities(trim($_POST['username'])); + $password = $_POST['password']; + if ($username != null && $password != null) { + + $query = "SELECT * FROM users WHERE username='$username'"; + $result = mysqli_query($con, $query); + if (mysqli_num_rows($result) > 0) { + // Username found + while ($row = mysqli_fetch_array($result)) { + $db_oauth_uid = $row['oauth_uid']; + $db_email_id = $row['email_id']; + $db_full_name = $row['full_name']; + $db_platform = $row['platform']; + $db_password = $row['password']; + $db_verified = $row['verified']; + $db_picture = $row['picture']; + $db_date = $row['date']; + $db_ip = $row['ip']; + $db_id = $row['id']; + } + + if (password_verify($password, $db_password)) { + if ($db_verified == "1") { + // Login successful + $_SESSION['token'] = Md5($db_id . $username); + $_SESSION['oauth_uid'] = $db_oauth_uid; + $_SESSION['username'] = $username; + + header('Location: ' . $_SERVER['HTTP_REFERER']); + + } elseif ($db_verified == "2") { + // User is banned + $error = $lang['banned']; + } else { + // Account not verified + $error = $lang['notverified']; + } + } else { + // Password wrong + $error = $lang['incorrect']; + + } + } else { + // Username not found + $error = $lang['incorrect']; + } + } else { + $error = $lang['missingfields']; //"All fields must be filled out."; + } + } + + // Register process + if (isset($_POST['signup'])) { + $username = htmlentities(trim($_POST['username'])); + $password = password_hash($_POST['password'], PASSWORD_DEFAULT); + $email = htmlentities(trim($_POST['email'])); + $full_name = htmlentities(trim($_POST['full'])); + if ($username != null && $password != null && $full_name != null && $email != null) { + $res = isValidUsername($username); + if ($res == '1') { + $query = "SELECT * FROM users WHERE username='$username'"; + $result = mysqli_query($con, $query); + if (mysqli_num_rows($result) > 0) { + $error = $lang['userexists']; // "Username already taken."; + } else { + + $query = "SELECT * FROM users WHERE email_id='$email'"; + $result = mysqli_query($con, $query); + if (mysqli_num_rows($result) > 0) { + $error = $lang['emailexists']; // "Email already registered."; + } else { + if ($verification == 'disabled') { + $query = "INSERT INTO users (oauth_uid,username,email_id,full_name,platform,password,verified,picture,date,ip) VALUES ('0','$username','$email','$full_name','Direct','$password','1','NONE','$date','$ip')"; + } else { + $query = "INSERT INTO users (oauth_uid,username,email_id,full_name,platform,password,verified,picture,date,ip) VALUES ('0','$username','$email','$full_name','Direct','$password','0','NONE','$date','$ip')"; + } + mysqli_query($con, $query); + if (mysqli_error($con)) + $error = "Database Error"; + else { + if ($verification == 'disabled') { + $success = $lang['registered']; // "Your account was successfully registered."; + } else { + $success = $lang['registered']; // "Your account was successfully registered."; + $protocol = paste_protocol(); + $verify_url = $protocol . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . "/verify.php?username=$username&code=" . Md5('4et4$55765' . $email . 'd94ereg'); + $sent_mail = $email; + $subject = $lang['mail_acc_con']; // "$site_name Account Confirmation"; + $body = " + Hello $full_name, Your $site_name account has been created. Please verify your account by clicking the link below.

        + + $verify_url

        + + After confirming your account you can log in using your username: $username and the password you used when signing up. + "; + if ($mail_type == '1') { + default_mail($admin_mail, $admin_name, $sent_mail, $subject, $body); + } else { + smtp_mail($smtp_host, $smtp_port, $smtp_auth, $smtp_user, $smtp_pass, $smtp_sec, $admin_mail, $admin_name, $sent_mail, $subject, $body); + } + } + } + } + + } + } else { + $error = $lang['usrinvalid']; // "Username not valid. Usernames can't contain special characters."; + } + } else { + $error = $lang['missingfields']; // "All fields must be filled out"; + } + } + } +} + +// Theme +require_once('theme/' . $default_theme . '/header.php'); +require_once('theme/' . $default_theme . '/login.php'); +require_once('theme/' . $default_theme . '/footer.php'); +?> \ No newline at end of file diff --git a/mail/LICENSE b/mail/LICENSE new file mode 100644 index 0000000..8e0763d --- /dev/null +++ b/mail/LICENSE @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/mail/README.md b/mail/README.md new file mode 100644 index 0000000..96a4df6 --- /dev/null +++ b/mail/README.md @@ -0,0 +1,196 @@ +![PHPMailer](https://raw.github.com/PHPMailer/PHPMailer/master/examples/images/phpmailer.png) + +# PHPMailer - A full-featured email creation and transfer class for PHP + +Build status: [![Build Status](https://travis-ci.org/PHPMailer/PHPMailer.svg)](https://travis-ci.org/PHPMailer/PHPMailer) +[![Scrutinizer Quality Score](https://scrutinizer-ci.com/g/PHPMailer/PHPMailer/badges/quality-score.png?s=3758e21d279becdf847a557a56a3ed16dfec9d5d)](https://scrutinizer-ci.com/g/PHPMailer/PHPMailer/) +[![Code Coverage](https://scrutinizer-ci.com/g/PHPMailer/PHPMailer/badges/coverage.png?s=3fe6ca5fe8cd2cdf96285756e42932f7ca256962)](https://scrutinizer-ci.com/g/PHPMailer/PHPMailer/) + +[![Latest Stable Version](https://poser.pugx.org/phpmailer/phpmailer/v/stable.svg)](https://packagist.org/packages/phpmailer/phpmailer) [![Total Downloads](https://poser.pugx.org/phpmailer/phpmailer/downloads)](https://packagist.org/packages/phpmailer/phpmailer) [![Latest Unstable Version](https://poser.pugx.org/phpmailer/phpmailer/v/unstable.svg)](https://packagist.org/packages/phpmailer/phpmailer) [![License](https://poser.pugx.org/phpmailer/phpmailer/license.svg)](https://packagist.org/packages/phpmailer/phpmailer) + +## Class Features + +- Probably the world's most popular code for sending email from PHP! +- Used by many open-source projects: WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomla! and many more +- Integrated SMTP support - send without a local mail server +- Send emails with multiple TOs, CCs, BCCs and REPLY-TOs +- Multipart/alternative emails for mail clients that do not read HTML email +- Support for UTF-8 content and 8bit, base64, binary, and quoted-printable encodings +- SMTP authentication with LOGIN, PLAIN, NTLM, CRAM-MD5 and Google's XOAUTH2 mechanisms over SSL and TLS transports +- Error messages in 47 languages! +- DKIM and S/MIME signing support +- Compatible with PHP 5.0 and later +- Much more! + +## Why you might need it + +Many PHP developers utilize email in their code. The only PHP function that supports this is the `mail()` function. However, it does not provide any assistance for making use of popular features such as HTML-based emails and attachments. + +Formatting email correctly is surprisingly difficult. There are myriad overlapping RFCs, requiring tight adherence to horribly complicated formatting and encoding rules - the vast majority of code that you'll find online that uses the `mail()` function directly is just plain wrong! +*Please* don't be tempted to do it yourself - if you don't use PHPMailer, there are many other excellent libraries that you should look at before rolling your own - try SwiftMailer, Zend_Mail, eZcomponents etc. + +The PHP `mail()` function usually sends via a local mail server, typically fronted by a `sendmail` binary on Linux, BSD and OS X platforms, however, Windows usually doesn't include a local mail server; PHPMailer's integrated SMTP implementation allows email sending on Windows platforms without a local mail server. + +## License + +This software is distributed under the [LGPL 2.1](http://www.gnu.org/licenses/lgpl-2.1.html) license. Please read LICENSE for information on the +software availability and distribution. + +## Installation & loading + +PHPMailer is available via [Composer/Packagist](https://packagist.org/packages/phpmailer/phpmailer) (using semantic versioning), so just add this line to your `composer.json` file: + +```json +"phpmailer/phpmailer": "~5.2" +``` + +or + +```sh +composer require phpmailer/phpmailer +``` + +If you want to use the Gmail XOAUTH2 authentication class, you will also need to add a dependency on the `league/oauth2-client` package. + +Alternatively, copy the contents of the PHPMailer folder into one of the `include_path` directories specified in your PHP configuration. If you don't speak git or just want a tarball, click the 'zip' button at the top of the page in GitHub. + +If you're not using composer's autoloader, PHPMailer provides an SPL-compatible autoloader, and that is the preferred way of loading the library - just `require '/path/to/PHPMailerAutoload.php';` and everything should work. The autoloader does not throw errors if it can't find classes so it prepends itself to the SPL list, allowing your own (or your framework's) autoloader to catch errors. SPL autoloading was introduced in PHP 5.1.0, so if you are using a version older than that you will need to require/include each class manually. + +PHPMailer does *not* declare a namespace because namespaces were only introduced in PHP 5.3. + +If you want to use Google's XOAUTH2 authentication mechanism, you need to be running at least PHP 5.4, and load the dependencies listed in `composer.json`. + +### Minimal installation + +While installing the entire package manually or with composer is simple, convenient and reliable, you may want to include only vital files in your project. At the very least you will need [class.phpmailer.php](https://github.com/PHPMailer/PHPMailer/tree/master/class.phpmailer.php). If you're using SMTP, you'll need [class.smtp.php](https://github.com/PHPMailer/PHPMailer/tree/master/class.smtp.php), and if you're using POP-before SMTP, you'll need [class.pop3.php](https://github.com/PHPMailer/PHPMailer/tree/master/class.pop3.php). For all of these, we recommend you use [the autoloader](https://github.com/PHPMailer/PHPMailer/tree/master/PHPMailerAutoload.php) too as otherwise you will either have to `require` all classes manually or use some other autoloader. You can skip the [language](https://github.com/PHPMailer/PHPMailer/tree/master/language/) folder if you're not showing errors to users and can make do with English-only errors. You may need the additional classes in the [extras](extras/) folder if you are using those features, including NTLM authentication and ics generation. If you're using Google XOAUTH2 you will need `class.phpmaileroauth.php` and `class.oauth.php` classes too, as well as the composer dependencies. + +## A Simple Example + +```php +SMTPDebug = 3; // Enable verbose debug output + +$mail->isSMTP(); // Set mailer to use SMTP +$mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup SMTP servers +$mail->SMTPAuth = true; // Enable SMTP authentication +$mail->Username = 'user@example.com'; // SMTP username +$mail->Password = 'secret'; // SMTP password +$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted +$mail->Port = 587; // TCP port to connect to + +$mail->setFrom('from@example.com', 'Mailer'); +$mail->addAddress('joe@example.net', 'Joe User'); // Add a recipient +$mail->addAddress('ellen@example.com'); // Name is optional +$mail->addReplyTo('info@example.com', 'Information'); +$mail->addCC('cc@example.com'); +$mail->addBCC('bcc@example.com'); + +$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments +$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name +$mail->isHTML(true); // Set email format to HTML + +$mail->Subject = 'Here is the subject'; +$mail->Body = 'This is the HTML message body in bold!'; +$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; + +if(!$mail->send()) { + echo 'Message could not be sent.'; + echo 'Mailer Error: ' . $mail->ErrorInfo; +} else { + echo 'Message has been sent'; +} +``` + +You'll find plenty more to play with in the [examples](https://github.com/PHPMailer/PHPMailer/tree/master/examples) folder. + +That's it. You should now be ready to use PHPMailer! + +## Localization +PHPMailer defaults to English, but in the [language](https://github.com/PHPMailer/PHPMailer/tree/master/language/) folder you'll find numerous (46 at the time of writing!) translations for PHPMailer error messages that you may encounter. Their filenames contain [ISO 639-1](http://en.wikipedia.org/wiki/ISO_639-1) language code for the translations, for example `fr` for French. To specify a language, you need to tell PHPMailer which one to use, like this: + +```php +// To load the French version +$mail->setLanguage('fr', '/optional/path/to/language/directory/'); +``` + +We welcome corrections and new languages - if you're looking for corrections to do, run the [phpmailerLangTest.php](https://github.com/PHPMailer/PHPMailer/tree/master/test/phpmailerLangTest.php) script in the tests folder and it will show any missing translations. + +## Documentation + +Examples of how to use PHPMailer for common scenarios can be found in the [examples](https://github.com/PHPMailer/PHPMailer/tree/master/examples) folder. If you're looking for a good starting point, we recommend you start with [the Gmail example](https://github.com/PHPMailer/PHPMailer/tree/master/examples/gmail.phps). + +There are tips and a troubleshooting guide in the [GitHub wiki](https://github.com/PHPMailer/PHPMailer/wiki). If you're having trouble, this should be the first place you look as it's the most frequently updated. + +Complete generated API documentation is [available online](http://phpmailer.github.io/PHPMailer/). + +You'll find some basic user-level docs in the [docs](docs/) folder, and you can generate complete API-level documentation using the [generatedocs.sh](https://github.com/PHPMailer/PHPMailer/tree/master/docs/generatedocs.sh) shell script in the docs folder, though you'll need to install [PHPDocumentor](http://www.phpdoc.org) first. You may find [the unit tests](https://github.com/PHPMailer/PHPMailer/tree/master/test/phpmailerTest.php) a good source of how to do various operations such as encryption. + +If the documentation doesn't cover what you need, search the [many questions on Stack Overflow](http://stackoverflow.com/questions/tagged/phpmailer), and before you ask a question about "SMTP Error: Could not connect to SMTP host.", [read the troubleshooting guide](https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting). + +## Tests + +There is a PHPUnit test script in the [test](https://github.com/PHPMailer/PHPMailer/tree/master/test/) folder. + +Build status: [![Build Status](https://travis-ci.org/PHPMailer/PHPMailer.svg)](https://travis-ci.org/PHPMailer/PHPMailer) + +If this isn't passing, is there something you can do to help? + +## Security + +Please disclose any vulnerabilities found responsibly - report any security problems found to the maintainers privately. + +PHPMailer versions prior to 5.2.18 (released December 2016) are vulnerable to [CVE-2016-10033](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-10033) a critical remote code execution vulnerability, responsibly reported by [Dawid Golunski](http://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html). + +PHPMailer versions prior to 5.2.14 (released November 2015) are vulnerable to [CVE-2015-8476](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-8476) an SMTP CRLF injection bug permitting arbitrary message sending. + +PHPMailer versions prior to 5.2.10 (released May 2015) are vulnerable to [CVE-2008-5619](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2008-5619), a remote code execution vulnerability in the bundled html2text library. This file was removed in 5.2.10, so if you are using a version prior to that and make use of the html2text function, it's vitally important that you upgrade and remove this file. + +See [SECURITY](https://github.com/PHPMailer/PHPMailer/tree/master/SECURITY) for more detail on security issues. + +## Contributing + +Please submit bug reports, suggestions and pull requests to the [GitHub issue tracker](https://github.com/PHPMailer/PHPMailer/issues). + +We're particularly interested in fixing edge-cases, expanding test coverage and updating translations. + +With the move to the PHPMailer GitHub organisation, you'll need to update any remote URLs referencing the old GitHub location with a command like this from within your clone: + +```sh +git remote set-url upstream https://github.com/PHPMailer/PHPMailer.git +``` + +Please *don't* use the SourceForge or Google Code projects any more. + +## Sponsorship + +Development time and resources for PHPMailer are provided by [Smartmessages.net](https://info.smartmessages.net/), a powerful email marketing system. + +Smartmessages email marketing + +Other contributions are gladly received, whether in beer ðŸº, T-shirts 👕, Amazon wishlist raids, or cold, hard cash 💰. + +## Changelog + +See [changelog](changelog.md). + +## History +- PHPMailer was originally written in 2001 by Brent R. Matzelle as a [SourceForge project](http://sourceforge.net/projects/phpmailer/). +- Marcus Bointon (coolbru on SF) and Andy Prevost (codeworxtech) took over the project in 2004. +- Became an Apache incubator project on Google Code in 2010, managed by Jim Jagielski. +- Marcus created his fork on [GitHub](https://github.com/Synchro/PHPMailer). +- Jim and Marcus decide to join forces and use GitHub as the canonical and official repo for PHPMailer. +- PHPMailer moves to the [PHPMailer organisation](https://github.com/PHPMailer) on GitHub. + +### What's changed since moving from SourceForge? +- Official successor to the SourceForge and Google Code projects. +- Test suite. +- Continuous integration with Travis-CI. +- Composer support. +- Public development. +- Additional languages and language strings. +- CRAM-MD5 authentication support. +- Preserves full repo history of authors, commits and branches from the original SourceForge project. diff --git a/mail/class.phpmailer.php b/mail/class.phpmailer.php new file mode 100644 index 0000000..6afcf9a --- /dev/null +++ b/mail/class.phpmailer.php @@ -0,0 +1,3983 @@ + + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2012 - 2014 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +/** + * PHPMailer - PHP email creation and transport class. + * @package PHPMailer + * @author Marcus Bointon (Synchro/coolbru) + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + */ +class PHPMailer +{ + /** + * The PHPMailer Version number. + * @var string + */ + public $Version = '5.2.19'; + + /** + * Email priority. + * Options: null (default), 1 = High, 3 = Normal, 5 = low. + * When null, the header is not set at all. + * @var integer + */ + public $Priority = null; + + /** + * The character set of the message. + * @var string + */ + public $CharSet = 'iso-8859-1'; + + /** + * The MIME Content-type of the message. + * @var string + */ + public $ContentType = 'text/plain'; + + /** + * The message encoding. + * Options: "8bit", "7bit", "binary", "base64", and "quoted-printable". + * @var string + */ + public $Encoding = '8bit'; + + /** + * Holds the most recent mailer error message. + * @var string + */ + public $ErrorInfo = ''; + + /** + * The From email address for the message. + * @var string + */ + public $From = 'root@localhost'; + + /** + * The From name of the message. + * @var string + */ + public $FromName = 'Root User'; + + /** + * The Sender email (Return-Path) of the message. + * If not empty, will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode. + * @var string + */ + public $Sender = ''; + + /** + * The Return-Path of the message. + * If empty, it will be set to either From or Sender. + * @var string + * @deprecated Email senders should never set a return-path header; + * it's the receiver's job (RFC5321 section 4.4), so this no longer does anything. + * @link https://tools.ietf.org/html/rfc5321#section-4.4 RFC5321 reference + */ + public $ReturnPath = ''; + + /** + * The Subject of the message. + * @var string + */ + public $Subject = ''; + + /** + * An HTML or plain text message body. + * If HTML then call isHTML(true). + * @var string + */ + public $Body = ''; + + /** + * The plain-text message body. + * This body can be read by mail clients that do not have HTML email + * capability such as mutt & Eudora. + * Clients that can read HTML will view the normal Body. + * @var string + */ + public $AltBody = ''; + + /** + * An iCal message part body. + * Only supported in simple alt or alt_inline message types + * To generate iCal events, use the bundled extras/EasyPeasyICS.php class or iCalcreator + * @link http://sprain.ch/blog/downloads/php-class-easypeasyics-create-ical-files-with-php/ + * @link http://kigkonsult.se/iCalcreator/ + * @var string + */ + public $Ical = ''; + + /** + * The complete compiled MIME message body. + * @access protected + * @var string + */ + protected $MIMEBody = ''; + + /** + * The complete compiled MIME message headers. + * @var string + * @access protected + */ + protected $MIMEHeader = ''; + + /** + * Extra headers that createHeader() doesn't fold in. + * @var string + * @access protected + */ + protected $mailHeader = ''; + + /** + * Word-wrap the message body to this number of chars. + * Set to 0 to not wrap. A useful value here is 78, for RFC2822 section 2.1.1 compliance. + * @var integer + */ + public $WordWrap = 0; + + /** + * Which method to use to send mail. + * Options: "mail", "sendmail", or "smtp". + * @var string + */ + public $Mailer = 'mail'; + + /** + * The path to the sendmail program. + * @var string + */ + public $Sendmail = '/usr/sbin/sendmail'; + + /** + * Whether mail() uses a fully sendmail-compatible MTA. + * One which supports sendmail's "-oi -f" options. + * @var boolean + */ + public $UseSendmailOptions = true; + + /** + * Path to PHPMailer plugins. + * Useful if the SMTP class is not in the PHP include path. + * @var string + * @deprecated Should not be needed now there is an autoloader. + */ + public $PluginDir = ''; + + /** + * The email address that a reading confirmation should be sent to, also known as read receipt. + * @var string + */ + public $ConfirmReadingTo = ''; + + /** + * The hostname to use in the Message-ID header and as default HELO string. + * If empty, PHPMailer attempts to find one with, in order, + * $_SERVER['SERVER_NAME'], gethostname(), php_uname('n'), or the value + * 'localhost.localdomain'. + * @var string + */ + public $Hostname = ''; + + /** + * An ID to be used in the Message-ID header. + * If empty, a unique id will be generated. + * You can set your own, but it must be in the format "", + * as defined in RFC5322 section 3.6.4 or it will be ignored. + * @see https://tools.ietf.org/html/rfc5322#section-3.6.4 + * @var string + */ + public $MessageID = ''; + + /** + * The message Date to be used in the Date header. + * If empty, the current date will be added. + * @var string + */ + public $MessageDate = ''; + + /** + * SMTP hosts. + * Either a single hostname or multiple semicolon-delimited hostnames. + * You can also specify a different port + * for each host by using this format: [hostname:port] + * (e.g. "smtp1.example.com:25;smtp2.example.com"). + * You can also specify encryption type, for example: + * (e.g. "tls://smtp1.example.com:587;ssl://smtp2.example.com:465"). + * Hosts will be tried in order. + * @var string + */ + public $Host = 'localhost'; + + /** + * The default SMTP server port. + * @var integer + * @TODO Why is this needed when the SMTP class takes care of it? + */ + public $Port = 25; + + /** + * The SMTP HELO of the message. + * Default is $Hostname. If $Hostname is empty, PHPMailer attempts to find + * one with the same method described above for $Hostname. + * @var string + * @see PHPMailer::$Hostname + */ + public $Helo = ''; + + /** + * What kind of encryption to use on the SMTP connection. + * Options: '', 'ssl' or 'tls' + * @var string + */ + public $SMTPSecure = ''; + + /** + * Whether to enable TLS encryption automatically if a server supports it, + * even if `SMTPSecure` is not set to 'tls'. + * Be aware that in PHP >= 5.6 this requires that the server's certificates are valid. + * @var boolean + */ + public $SMTPAutoTLS = true; + + /** + * Whether to use SMTP authentication. + * Uses the Username and Password properties. + * @var boolean + * @see PHPMailer::$Username + * @see PHPMailer::$Password + */ + public $SMTPAuth = false; + + /** + * Options array passed to stream_context_create when connecting via SMTP. + * @var array + */ + public $SMTPOptions = array(); + + /** + * SMTP username. + * @var string + */ + public $Username = ''; + + /** + * SMTP password. + * @var string + */ + public $Password = ''; + + /** + * SMTP auth type. + * Options are CRAM-MD5, LOGIN, PLAIN, NTLM, XOAUTH2, attempted in that order if not specified + * @var string + */ + public $AuthType = ''; + + /** + * SMTP realm. + * Used for NTLM auth + * @var string + */ + public $Realm = ''; + + /** + * SMTP workstation. + * Used for NTLM auth + * @var string + */ + public $Workstation = ''; + + /** + * The SMTP server timeout in seconds. + * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2 + * @var integer + */ + public $Timeout = 300; + + /** + * SMTP class debug output mode. + * Debug output level. + * Options: + * * `0` No output + * * `1` Commands + * * `2` Data and commands + * * `3` As 2 plus connection status + * * `4` Low-level data output + * @var integer + * @see SMTP::$do_debug + */ + public $SMTPDebug = 0; + + /** + * How to handle debug output. + * Options: + * * `echo` Output plain-text as-is, appropriate for CLI + * * `html` Output escaped, line breaks converted to `
        `, appropriate for browser output + * * `error_log` Output to error log as configured in php.ini + * + * Alternatively, you can provide a callable expecting two params: a message string and the debug level: + * + * $mail->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";}; + * + * @var string|callable + * @see SMTP::$Debugoutput + */ + public $Debugoutput = 'echo'; + + /** + * Whether to keep SMTP connection open after each message. + * If this is set to true then to close the connection + * requires an explicit call to smtpClose(). + * @var boolean + */ + public $SMTPKeepAlive = false; + + /** + * Whether to split multiple to addresses into multiple messages + * or send them all in one message. + * Only supported in `mail` and `sendmail` transports, not in SMTP. + * @var boolean + */ + public $SingleTo = false; + + /** + * Storage for addresses when SingleTo is enabled. + * @var array + * @TODO This should really not be public + */ + public $SingleToArray = array(); + + /** + * Whether to generate VERP addresses on send. + * Only applicable when sending via SMTP. + * @link https://en.wikipedia.org/wiki/Variable_envelope_return_path + * @link http://www.postfix.org/VERP_README.html Postfix VERP info + * @var boolean + */ + public $do_verp = false; + + /** + * Whether to allow sending messages with an empty body. + * @var boolean + */ + public $AllowEmpty = false; + + /** + * The default line ending. + * @note The default remains "\n". We force CRLF where we know + * it must be used via self::CRLF. + * @var string + */ + public $LE = "\n"; + + /** + * DKIM selector. + * @var string + */ + public $DKIM_selector = ''; + + /** + * DKIM Identity. + * Usually the email address used as the source of the email. + * @var string + */ + public $DKIM_identity = ''; + + /** + * DKIM passphrase. + * Used if your key is encrypted. + * @var string + */ + public $DKIM_passphrase = ''; + + /** + * DKIM signing domain name. + * @example 'example.com' + * @var string + */ + public $DKIM_domain = ''; + + /** + * DKIM private key file path. + * @var string + */ + public $DKIM_private = ''; + + /** + * DKIM private key string. + * If set, takes precedence over `$DKIM_private`. + * @var string + */ + public $DKIM_private_string = ''; + + /** + * Callback Action function name. + * + * The function that handles the result of the send email action. + * It is called out by send() for each email sent. + * + * Value can be any php callable: http://www.php.net/is_callable + * + * Parameters: + * boolean $result result of the send action + * string $to email address of the recipient + * string $cc cc email addresses + * string $bcc bcc email addresses + * string $subject the subject + * string $body the email body + * string $from email address of sender + * @var string + */ + public $action_function = ''; + + /** + * What to put in the X-Mailer header. + * Options: An empty string for PHPMailer default, whitespace for none, or a string to use + * @var string + */ + public $XMailer = ''; + + /** + * Which validator to use by default when validating email addresses. + * May be a callable to inject your own validator, but there are several built-in validators. + * @see PHPMailer::validateAddress() + * @var string|callable + * @static + */ + public static $validator = 'auto'; + + /** + * An instance of the SMTP sender class. + * @var SMTP + * @access protected + */ + protected $smtp = null; + + /** + * The array of 'to' names and addresses. + * @var array + * @access protected + */ + protected $to = array(); + + /** + * The array of 'cc' names and addresses. + * @var array + * @access protected + */ + protected $cc = array(); + + /** + * The array of 'bcc' names and addresses. + * @var array + * @access protected + */ + protected $bcc = array(); + + /** + * The array of reply-to names and addresses. + * @var array + * @access protected + */ + protected $ReplyTo = array(); + + /** + * An array of all kinds of addresses. + * Includes all of $to, $cc, $bcc + * @var array + * @access protected + * @see PHPMailer::$to @see PHPMailer::$cc @see PHPMailer::$bcc + */ + protected $all_recipients = array(); + + /** + * An array of names and addresses queued for validation. + * In send(), valid and non duplicate entries are moved to $all_recipients + * and one of $to, $cc, or $bcc. + * This array is used only for addresses with IDN. + * @var array + * @access protected + * @see PHPMailer::$to @see PHPMailer::$cc @see PHPMailer::$bcc + * @see PHPMailer::$all_recipients + */ + protected $RecipientsQueue = array(); + + /** + * An array of reply-to names and addresses queued for validation. + * In send(), valid and non duplicate entries are moved to $ReplyTo. + * This array is used only for addresses with IDN. + * @var array + * @access protected + * @see PHPMailer::$ReplyTo + */ + protected $ReplyToQueue = array(); + + /** + * The array of attachments. + * @var array + * @access protected + */ + protected $attachment = array(); + + /** + * The array of custom headers. + * @var array + * @access protected + */ + protected $CustomHeader = array(); + + /** + * The most recent Message-ID (including angular brackets). + * @var string + * @access protected + */ + protected $lastMessageID = ''; + + /** + * The message's MIME type. + * @var string + * @access protected + */ + protected $message_type = ''; + + /** + * The array of MIME boundary strings. + * @var array + * @access protected + */ + protected $boundary = array(); + + /** + * The array of available languages. + * @var array + * @access protected + */ + protected $language = array(); + + /** + * The number of errors encountered. + * @var integer + * @access protected + */ + protected $error_count = 0; + + /** + * The S/MIME certificate file path. + * @var string + * @access protected + */ + protected $sign_cert_file = ''; + + /** + * The S/MIME key file path. + * @var string + * @access protected + */ + protected $sign_key_file = ''; + + /** + * The optional S/MIME extra certificates ("CA Chain") file path. + * @var string + * @access protected + */ + protected $sign_extracerts_file = ''; + + /** + * The S/MIME password for the key. + * Used only if the key is encrypted. + * @var string + * @access protected + */ + protected $sign_key_pass = ''; + + /** + * Whether to throw exceptions for errors. + * @var boolean + * @access protected + */ + protected $exceptions = false; + + /** + * Unique ID used for message ID and boundaries. + * @var string + * @access protected + */ + protected $uniqueid = ''; + + /** + * Error severity: message only, continue processing. + */ + const STOP_MESSAGE = 0; + + /** + * Error severity: message, likely ok to continue processing. + */ + const STOP_CONTINUE = 1; + + /** + * Error severity: message, plus full stop, critical error reached. + */ + const STOP_CRITICAL = 2; + + /** + * SMTP RFC standard line ending. + */ + const CRLF = "\r\n"; + + /** + * The maximum line length allowed by RFC 2822 section 2.1.1 + * @var integer + */ + const MAX_LINE_LENGTH = 998; + + /** + * Constructor. + * @param boolean $exceptions Should we throw external exceptions? + */ + public function __construct($exceptions = null) + { + if ($exceptions !== null) { + $this->exceptions = (boolean)$exceptions; + } + } + + /** + * Destructor. + */ + public function __destruct() + { + //Close any open SMTP connection nicely + $this->smtpClose(); + } + + /** + * Call mail() in a safe_mode-aware fashion. + * Also, unless sendmail_path points to sendmail (or something that + * claims to be sendmail), don't pass params (not a perfect fix, + * but it will do) + * @param string $to To + * @param string $subject Subject + * @param string $body Message Body + * @param string $header Additional Header(s) + * @param string $params Params + * @access private + * @return boolean + */ + private function mailPassthru($to, $subject, $body, $header, $params) + { + //Check overloading of mail function to avoid double-encoding + if (ini_get('mbstring.func_overload') & 1) { + $subject = $this->secureHeader($subject); + } else { + $subject = $this->encodeHeader($this->secureHeader($subject)); + } + + //Can't use additional_parameters in safe_mode, calling mail() with null params breaks + //@link http://php.net/manual/en/function.mail.php + if (ini_get('safe_mode') or !$this->UseSendmailOptions or is_null($params)) { + $result = @mail($to, $subject, $body, $header); + } else { + $result = @mail($to, $subject, $body, $header, $params); + } + return $result; + } + /** + * Output debugging info via user-defined method. + * Only generates output if SMTP debug output is enabled (@see SMTP::$do_debug). + * @see PHPMailer::$Debugoutput + * @see PHPMailer::$SMTPDebug + * @param string $str + */ + protected function edebug($str) + { + if ($this->SMTPDebug <= 0) { + return; + } + //Avoid clash with built-in function names + if (!in_array($this->Debugoutput, array('error_log', 'html', 'echo')) and is_callable($this->Debugoutput)) { + call_user_func($this->Debugoutput, $str, $this->SMTPDebug); + return; + } + switch ($this->Debugoutput) { + case 'error_log': + //Don't output, just log + error_log($str); + break; + case 'html': + //Cleans up output a bit for a better looking, HTML-safe output + echo htmlentities( + preg_replace('/[\r\n]+/', '', $str), + ENT_QUOTES, + 'UTF-8' + ) + . "
        \n"; + break; + case 'echo': + default: + //Normalize line breaks + $str = preg_replace('/\r\n?/ms', "\n", $str); + echo gmdate('Y-m-d H:i:s') . "\t" . str_replace( + "\n", + "\n \t ", + trim($str) + ) . "\n"; + } + } + + /** + * Sets message type to HTML or plain. + * @param boolean $isHtml True for HTML mode. + * @return void + */ + public function isHTML($isHtml = true) + { + if ($isHtml) { + $this->ContentType = 'text/html'; + } else { + $this->ContentType = 'text/plain'; + } + } + + /** + * Send messages using SMTP. + * @return void + */ + public function isSMTP() + { + $this->Mailer = 'smtp'; + } + + /** + * Send messages using PHP's mail() function. + * @return void + */ + public function isMail() + { + $this->Mailer = 'mail'; + } + + /** + * Send messages using $Sendmail. + * @return void + */ + public function isSendmail() + { + $ini_sendmail_path = ini_get('sendmail_path'); + + if (!stristr($ini_sendmail_path, 'sendmail')) { + $this->Sendmail = '/usr/sbin/sendmail'; + } else { + $this->Sendmail = $ini_sendmail_path; + } + $this->Mailer = 'sendmail'; + } + + /** + * Send messages using qmail. + * @return void + */ + public function isQmail() + { + $ini_sendmail_path = ini_get('sendmail_path'); + + if (!stristr($ini_sendmail_path, 'qmail')) { + $this->Sendmail = '/var/qmail/bin/qmail-inject'; + } else { + $this->Sendmail = $ini_sendmail_path; + } + $this->Mailer = 'qmail'; + } + + /** + * Add a "To" address. + * @param string $address The email address to send to + * @param string $name + * @return boolean true on success, false if address already used or invalid in some way + */ + public function addAddress($address, $name = '') + { + return $this->addOrEnqueueAnAddress('to', $address, $name); + } + + /** + * Add a "CC" address. + * @note: This function works with the SMTP mailer on win32, not with the "mail" mailer. + * @param string $address The email address to send to + * @param string $name + * @return boolean true on success, false if address already used or invalid in some way + */ + public function addCC($address, $name = '') + { + return $this->addOrEnqueueAnAddress('cc', $address, $name); + } + + /** + * Add a "BCC" address. + * @note: This function works with the SMTP mailer on win32, not with the "mail" mailer. + * @param string $address The email address to send to + * @param string $name + * @return boolean true on success, false if address already used or invalid in some way + */ + public function addBCC($address, $name = '') + { + return $this->addOrEnqueueAnAddress('bcc', $address, $name); + } + + /** + * Add a "Reply-To" address. + * @param string $address The email address to reply to + * @param string $name + * @return boolean true on success, false if address already used or invalid in some way + */ + public function addReplyTo($address, $name = '') + { + return $this->addOrEnqueueAnAddress('Reply-To', $address, $name); + } + + /** + * Add an address to one of the recipient arrays or to the ReplyTo array. Because PHPMailer + * can't validate addresses with an IDN without knowing the PHPMailer::$CharSet (that can still + * be modified after calling this function), addition of such addresses is delayed until send(). + * Addresses that have been added already return false, but do not throw exceptions. + * @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo' + * @param string $address The email address to send, resp. to reply to + * @param string $name + * @throws phpmailerException + * @return boolean true on success, false if address already used or invalid in some way + * @access protected + */ + protected function addOrEnqueueAnAddress($kind, $address, $name) + { + $address = trim($address); + $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim + if (($pos = strrpos($address, '@')) === false) { + // At-sign is misssing. + $error_message = $this->lang('invalid_address') . " (addAnAddress $kind): $address"; + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new phpmailerException($error_message); + } + return false; + } + $params = array($kind, $address, $name); + // Enqueue addresses with IDN until we know the PHPMailer::$CharSet. + if ($this->has8bitChars(substr($address, ++$pos)) and $this->idnSupported()) { + if ($kind != 'Reply-To') { + if (!array_key_exists($address, $this->RecipientsQueue)) { + $this->RecipientsQueue[$address] = $params; + return true; + } + } else { + if (!array_key_exists($address, $this->ReplyToQueue)) { + $this->ReplyToQueue[$address] = $params; + return true; + } + } + return false; + } + // Immediately add standard addresses without IDN. + return call_user_func_array(array($this, 'addAnAddress'), $params); + } + + /** + * Add an address to one of the recipient arrays or to the ReplyTo array. + * Addresses that have been added already return false, but do not throw exceptions. + * @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo' + * @param string $address The email address to send, resp. to reply to + * @param string $name + * @throws phpmailerException + * @return boolean true on success, false if address already used or invalid in some way + * @access protected + */ + protected function addAnAddress($kind, $address, $name = '') + { + if (!in_array($kind, array('to', 'cc', 'bcc', 'Reply-To'))) { + $error_message = $this->lang('Invalid recipient kind: ') . $kind; + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new phpmailerException($error_message); + } + return false; + } + if (!$this->validateAddress($address)) { + $error_message = $this->lang('invalid_address') . " (addAnAddress $kind): $address"; + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new phpmailerException($error_message); + } + return false; + } + if ($kind != 'Reply-To') { + if (!array_key_exists(strtolower($address), $this->all_recipients)) { + array_push($this->$kind, array($address, $name)); + $this->all_recipients[strtolower($address)] = true; + return true; + } + } else { + if (!array_key_exists(strtolower($address), $this->ReplyTo)) { + $this->ReplyTo[strtolower($address)] = array($address, $name); + return true; + } + } + return false; + } + + /** + * Parse and validate a string containing one or more RFC822-style comma-separated email addresses + * of the form "display name
        " into an array of name/address pairs. + * Uses the imap_rfc822_parse_adrlist function if the IMAP extension is available. + * Note that quotes in the name part are removed. + * @param string $addrstr The address list string + * @param bool $useimap Whether to use the IMAP extension to parse the list + * @return array + * @link http://www.andrew.cmu.edu/user/agreen1/testing/mrbs/web/Mail/RFC822.php A more careful implementation + */ + public function parseAddresses($addrstr, $useimap = true) + { + $addresses = array(); + if ($useimap and function_exists('imap_rfc822_parse_adrlist')) { + //Use this built-in parser if it's available + $list = imap_rfc822_parse_adrlist($addrstr, ''); + foreach ($list as $address) { + if ($address->host != '.SYNTAX-ERROR.') { + if ($this->validateAddress($address->mailbox . '@' . $address->host)) { + $addresses[] = array( + 'name' => (property_exists($address, 'personal') ? $address->personal : ''), + 'address' => $address->mailbox . '@' . $address->host + ); + } + } + } + } else { + //Use this simpler parser + $list = explode(',', $addrstr); + foreach ($list as $address) { + $address = trim($address); + //Is there a separate name part? + if (strpos($address, '<') === false) { + //No separate name, just use the whole thing + if ($this->validateAddress($address)) { + $addresses[] = array( + 'name' => '', + 'address' => $address + ); + } + } else { + list($name, $email) = explode('<', $address); + $email = trim(str_replace('>', '', $email)); + if ($this->validateAddress($email)) { + $addresses[] = array( + 'name' => trim(str_replace(array('"', "'"), '', $name)), + 'address' => $email + ); + } + } + } + } + return $addresses; + } + + /** + * Set the From and FromName properties. + * @param string $address + * @param string $name + * @param boolean $auto Whether to also set the Sender address, defaults to true + * @throws phpmailerException + * @return boolean + */ + public function setFrom($address, $name = '', $auto = true) + { + $address = trim($address); + $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim + // Don't validate now addresses with IDN. Will be done in send(). + if (($pos = strrpos($address, '@')) === false or + (!$this->has8bitChars(substr($address, ++$pos)) or !$this->idnSupported()) and + !$this->validateAddress($address)) { + $error_message = $this->lang('invalid_address') . " (setFrom) $address"; + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new phpmailerException($error_message); + } + return false; + } + $this->From = $address; + $this->FromName = $name; + if ($auto) { + if (empty($this->Sender)) { + $this->Sender = $address; + } + } + return true; + } + + /** + * Return the Message-ID header of the last email. + * Technically this is the value from the last time the headers were created, + * but it's also the message ID of the last sent message except in + * pathological cases. + * @return string + */ + public function getLastMessageID() + { + return $this->lastMessageID; + } + + /** + * Check that a string looks like an email address. + * @param string $address The email address to check + * @param string|callable $patternselect A selector for the validation pattern to use : + * * `auto` Pick best pattern automatically; + * * `pcre8` Use the squiloople.com pattern, requires PCRE > 8.0, PHP >= 5.3.2, 5.2.14; + * * `pcre` Use old PCRE implementation; + * * `php` Use PHP built-in FILTER_VALIDATE_EMAIL; + * * `html5` Use the pattern given by the HTML5 spec for 'email' type form input elements. + * * `noregex` Don't use a regex: super fast, really dumb. + * Alternatively you may pass in a callable to inject your own validator, for example: + * PHPMailer::validateAddress('user@example.com', function($address) { + * return (strpos($address, '@') !== false); + * }); + * You can also set the PHPMailer::$validator static to a callable, allowing built-in methods to use your validator. + * @return boolean + * @static + * @access public + */ + public static function validateAddress($address, $patternselect = null) + { + if (is_null($patternselect)) { + $patternselect = self::$validator; + } + if (is_callable($patternselect)) { + return call_user_func($patternselect, $address); + } + //Reject line breaks in addresses; it's valid RFC5322, but not RFC5321 + if (strpos($address, "\n") !== false or strpos($address, "\r") !== false) { + return false; + } + if (!$patternselect or $patternselect == 'auto') { + //Check this constant first so it works when extension_loaded() is disabled by safe mode + //Constant was added in PHP 5.2.4 + if (defined('PCRE_VERSION')) { + //This pattern can get stuck in a recursive loop in PCRE <= 8.0.2 + if (version_compare(PCRE_VERSION, '8.0.3') >= 0) { + $patternselect = 'pcre8'; + } else { + $patternselect = 'pcre'; + } + } elseif (function_exists('extension_loaded') and extension_loaded('pcre')) { + //Fall back to older PCRE + $patternselect = 'pcre'; + } else { + //Filter_var appeared in PHP 5.2.0 and does not require the PCRE extension + if (version_compare(PHP_VERSION, '5.2.0') >= 0) { + $patternselect = 'php'; + } else { + $patternselect = 'noregex'; + } + } + } + switch ($patternselect) { + case 'pcre8': + /** + * Uses the same RFC5322 regex on which FILTER_VALIDATE_EMAIL is based, but allows dotless domains. + * @link http://squiloople.com/2009/12/20/email-address-validation/ + * @copyright 2009-2010 Michael Rushton + * Feel free to use and redistribute this code. But please keep this copyright notice. + */ + return (boolean)preg_match( + '/^(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){255,})(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){65,}@)' . + '((?>(?>(?>((?>(?>(?>\x0D\x0A)?[\t ])+|(?>[\t ]*\x0D\x0A)?[\t ]+)?)(\((?>(?2)' . + '(?>[\x01-\x08\x0B\x0C\x0E-\'*-\[\]-\x7F]|\\\[\x00-\x7F]|(?3)))*(?2)\)))+(?2))|(?2))?)' . + '([!#-\'*+\/-9=?^-~-]+|"(?>(?2)(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\x7F]))*' . + '(?2)")(?>(?1)\.(?1)(?4))*(?1)@(?!(?1)[a-z0-9-]{64,})(?1)(?>([a-z0-9](?>[a-z0-9-]*[a-z0-9])?)' . + '(?>(?1)\.(?!(?1)[a-z0-9-]{64,})(?1)(?5)){0,126}|\[(?:(?>IPv6:(?>([a-f0-9]{1,4})(?>:(?6)){7}' . + '|(?!(?:.*[a-f0-9][:\]]){8,})((?6)(?>:(?6)){0,6})?::(?7)?))|(?>(?>IPv6:(?>(?6)(?>:(?6)){5}:' . + '|(?!(?:.*[a-f0-9]:){6,})(?8)?::(?>((?6)(?>:(?6)){0,4}):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}' . + '|[1-9]?[0-9])(?>\.(?9)){3}))\])(?1)$/isD', + $address + ); + case 'pcre': + //An older regex that doesn't need a recent PCRE + return (boolean)preg_match( + '/^(?!(?>"?(?>\\\[ -~]|[^"])"?){255,})(?!(?>"?(?>\\\[ -~]|[^"])"?){65,}@)(?>' . + '[!#-\'*+\/-9=?^-~-]+|"(?>(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\xFF]))*")' . + '(?>\.(?>[!#-\'*+\/-9=?^-~-]+|"(?>(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\xFF]))*"))*' . + '@(?>(?![a-z0-9-]{64,})(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?)(?>\.(?![a-z0-9-]{64,})' . + '(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?)){0,126}|\[(?:(?>IPv6:(?>(?>[a-f0-9]{1,4})(?>:' . + '[a-f0-9]{1,4}){7}|(?!(?:.*[a-f0-9][:\]]){8,})(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,6})?' . + '::(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,6})?))|(?>(?>IPv6:(?>[a-f0-9]{1,4}(?>:' . + '[a-f0-9]{1,4}){5}:|(?!(?:.*[a-f0-9]:){6,})(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,4})?' . + '::(?>(?:[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,4}):)?))?(?>25[0-5]|2[0-4][0-9]|1[0-9]{2}' . + '|[1-9]?[0-9])(?>\.(?>25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}))\])$/isD', + $address + ); + case 'html5': + /** + * This is the pattern used in the HTML5 spec for validation of 'email' type form input elements. + * @link http://www.whatwg.org/specs/web-apps/current-work/#e-mail-state-(type=email) + */ + return (boolean)preg_match( + '/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}' . + '[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/sD', + $address + ); + case 'noregex': + //No PCRE! Do something _very_ approximate! + //Check the address is 3 chars or longer and contains an @ that's not the first or last char + return (strlen($address) >= 3 + and strpos($address, '@') >= 1 + and strpos($address, '@') != strlen($address) - 1); + case 'php': + default: + return (boolean)filter_var($address, FILTER_VALIDATE_EMAIL); + } + } + + /** + * Tells whether IDNs (Internationalized Domain Names) are supported or not. This requires the + * "intl" and "mbstring" PHP extensions. + * @return bool "true" if required functions for IDN support are present + */ + public function idnSupported() + { + // @TODO: Write our own "idn_to_ascii" function for PHP <= 5.2. + return function_exists('idn_to_ascii') and function_exists('mb_convert_encoding'); + } + + /** + * Converts IDN in given email address to its ASCII form, also known as punycode, if possible. + * Important: Address must be passed in same encoding as currently set in PHPMailer::$CharSet. + * This function silently returns unmodified address if: + * - No conversion is necessary (i.e. domain name is not an IDN, or is already in ASCII form) + * - Conversion to punycode is impossible (e.g. required PHP functions are not available) + * or fails for any reason (e.g. domain has characters not allowed in an IDN) + * @see PHPMailer::$CharSet + * @param string $address The email address to convert + * @return string The encoded address in ASCII form + */ + public function punyencodeAddress($address) + { + // Verify we have required functions, CharSet, and at-sign. + if ($this->idnSupported() and + !empty($this->CharSet) and + ($pos = strrpos($address, '@')) !== false) { + $domain = substr($address, ++$pos); + // Verify CharSet string is a valid one, and domain properly encoded in this CharSet. + if ($this->has8bitChars($domain) and @mb_check_encoding($domain, $this->CharSet)) { + $domain = mb_convert_encoding($domain, 'UTF-8', $this->CharSet); + if (($punycode = defined('INTL_IDNA_VARIANT_UTS46') ? + idn_to_ascii($domain, 0, INTL_IDNA_VARIANT_UTS46) : + idn_to_ascii($domain)) !== false) { + return substr($address, 0, $pos) . $punycode; + } + } + } + return $address; + } + + /** + * Create a message and send it. + * Uses the sending method specified by $Mailer. + * @throws phpmailerException + * @return boolean false on error - See the ErrorInfo property for details of the error. + */ + public function send() + { + try { + if (!$this->preSend()) { + return false; + } + return $this->postSend(); + } catch (phpmailerException $exc) { + $this->mailHeader = ''; + $this->setError($exc->getMessage()); + if ($this->exceptions) { + throw $exc; + } + return false; + } + } + + /** + * Prepare a message for sending. + * @throws phpmailerException + * @return boolean + */ + public function preSend() + { + try { + $this->error_count = 0; // Reset errors + $this->mailHeader = ''; + + // Dequeue recipient and Reply-To addresses with IDN + foreach (array_merge($this->RecipientsQueue, $this->ReplyToQueue) as $params) { + $params[1] = $this->punyencodeAddress($params[1]); + call_user_func_array(array($this, 'addAnAddress'), $params); + } + if ((count($this->to) + count($this->cc) + count($this->bcc)) < 1) { + throw new phpmailerException($this->lang('provide_address'), self::STOP_CRITICAL); + } + + // Validate From, Sender, and ConfirmReadingTo addresses + foreach (array('From', 'Sender', 'ConfirmReadingTo') as $address_kind) { + $this->$address_kind = trim($this->$address_kind); + if (empty($this->$address_kind)) { + continue; + } + $this->$address_kind = $this->punyencodeAddress($this->$address_kind); + if (!$this->validateAddress($this->$address_kind)) { + $error_message = $this->lang('invalid_address') . ' (punyEncode) ' . $this->$address_kind; + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new phpmailerException($error_message); + } + return false; + } + } + + // Set whether the message is multipart/alternative + if ($this->alternativeExists()) { + $this->ContentType = 'multipart/alternative'; + } + + $this->setMessageType(); + // Refuse to send an empty message unless we are specifically allowing it + if (!$this->AllowEmpty and empty($this->Body)) { + throw new phpmailerException($this->lang('empty_message'), self::STOP_CRITICAL); + } + + // Create body before headers in case body makes changes to headers (e.g. altering transfer encoding) + $this->MIMEHeader = ''; + $this->MIMEBody = $this->createBody(); + // createBody may have added some headers, so retain them + $tempheaders = $this->MIMEHeader; + $this->MIMEHeader = $this->createHeader(); + $this->MIMEHeader .= $tempheaders; + + // To capture the complete message when using mail(), create + // an extra header list which createHeader() doesn't fold in + if ($this->Mailer == 'mail') { + if (count($this->to) > 0) { + $this->mailHeader .= $this->addrAppend('To', $this->to); + } else { + $this->mailHeader .= $this->headerLine('To', 'undisclosed-recipients:;'); + } + $this->mailHeader .= $this->headerLine( + 'Subject', + $this->encodeHeader($this->secureHeader(trim($this->Subject))) + ); + } + + // Sign with DKIM if enabled + if (!empty($this->DKIM_domain) + && !empty($this->DKIM_selector) + && (!empty($this->DKIM_private_string) + || (!empty($this->DKIM_private) && file_exists($this->DKIM_private)) + ) + ) { + $header_dkim = $this->DKIM_Add( + $this->MIMEHeader . $this->mailHeader, + $this->encodeHeader($this->secureHeader($this->Subject)), + $this->MIMEBody + ); + $this->MIMEHeader = rtrim($this->MIMEHeader, "\r\n ") . self::CRLF . + str_replace("\r\n", "\n", $header_dkim) . self::CRLF; + } + return true; + } catch (phpmailerException $exc) { + $this->setError($exc->getMessage()); + if ($this->exceptions) { + throw $exc; + } + return false; + } + } + + /** + * Actually send a message. + * Send the email via the selected mechanism + * @throws phpmailerException + * @return boolean + */ + public function postSend() + { + try { + // Choose the mailer and send through it + switch ($this->Mailer) { + case 'sendmail': + case 'qmail': + return $this->sendmailSend($this->MIMEHeader, $this->MIMEBody); + case 'smtp': + return $this->smtpSend($this->MIMEHeader, $this->MIMEBody); + case 'mail': + return $this->mailSend($this->MIMEHeader, $this->MIMEBody); + default: + $sendMethod = $this->Mailer.'Send'; + if (method_exists($this, $sendMethod)) { + return $this->$sendMethod($this->MIMEHeader, $this->MIMEBody); + } + + return $this->mailSend($this->MIMEHeader, $this->MIMEBody); + } + } catch (phpmailerException $exc) { + $this->setError($exc->getMessage()); + $this->edebug($exc->getMessage()); + if ($this->exceptions) { + throw $exc; + } + } + return false; + } + + /** + * Send mail using the $Sendmail program. + * @param string $header The message headers + * @param string $body The message body + * @see PHPMailer::$Sendmail + * @throws phpmailerException + * @access protected + * @return boolean + */ + protected function sendmailSend($header, $body) + { + if (!empty($this->Sender)) { + if ($this->Mailer == 'qmail') { + $sendmail = sprintf('%s -f%s', escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender)); + } else { + $sendmail = sprintf('%s -oi -f%s -t', escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender)); + } + } else { + if ($this->Mailer == 'qmail') { + $sendmail = sprintf('%s', escapeshellcmd($this->Sendmail)); + } else { + $sendmail = sprintf('%s -oi -t', escapeshellcmd($this->Sendmail)); + } + } + if ($this->SingleTo) { + foreach ($this->SingleToArray as $toAddr) { + if (!@$mail = popen($sendmail, 'w')) { + throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + fputs($mail, 'To: ' . $toAddr . "\n"); + fputs($mail, $header); + fputs($mail, $body); + $result = pclose($mail); + $this->doCallback( + ($result == 0), + array($toAddr), + $this->cc, + $this->bcc, + $this->Subject, + $body, + $this->From + ); + if ($result != 0) { + throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + } + } else { + if (!@$mail = popen($sendmail, 'w')) { + throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + fputs($mail, $header); + fputs($mail, $body); + $result = pclose($mail); + $this->doCallback( + ($result == 0), + $this->to, + $this->cc, + $this->bcc, + $this->Subject, + $body, + $this->From + ); + if ($result != 0) { + throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + } + return true; + } + + /** + * Send mail using the PHP mail() function. + * @param string $header The message headers + * @param string $body The message body + * @link http://www.php.net/manual/en/book.mail.php + * @throws phpmailerException + * @access protected + * @return boolean + */ + protected function mailSend($header, $body) + { + $toArr = array(); + foreach ($this->to as $toaddr) { + $toArr[] = $this->addrFormat($toaddr); + } + $to = implode(', ', $toArr); + + $params = null; + //This sets the SMTP envelope sender which gets turned into a return-path header by the receiver + if (!empty($this->Sender) and $this->validateAddress($this->Sender)) { + $params = sprintf('-f%s', escapeshellarg($this->Sender)); + } + if (!empty($this->Sender) and !ini_get('safe_mode') and $this->validateAddress($this->Sender)) { + $old_from = ini_get('sendmail_from'); + ini_set('sendmail_from', $this->Sender); + } + $result = false; + if ($this->SingleTo and count($toArr) > 1) { + foreach ($toArr as $toAddr) { + $result = $this->mailPassthru($toAddr, $this->Subject, $body, $header, $params); + $this->doCallback($result, array($toAddr), $this->cc, $this->bcc, $this->Subject, $body, $this->From); + } + } else { + $result = $this->mailPassthru($to, $this->Subject, $body, $header, $params); + $this->doCallback($result, $this->to, $this->cc, $this->bcc, $this->Subject, $body, $this->From); + } + if (isset($old_from)) { + ini_set('sendmail_from', $old_from); + } + if (!$result) { + throw new phpmailerException($this->lang('instantiate'), self::STOP_CRITICAL); + } + return true; + } + + /** + * Get an instance to use for SMTP operations. + * Override this function to load your own SMTP implementation + * @return SMTP + */ + public function getSMTPInstance() + { + if (!is_object($this->smtp)) { + $this->smtp = new SMTP; + } + return $this->smtp; + } + + /** + * Send mail via SMTP. + * Returns false if there is a bad MAIL FROM, RCPT, or DATA input. + * Uses the PHPMailerSMTP class by default. + * @see PHPMailer::getSMTPInstance() to use a different class. + * @param string $header The message headers + * @param string $body The message body + * @throws phpmailerException + * @uses SMTP + * @access protected + * @return boolean + */ + protected function smtpSend($header, $body) + { + $bad_rcpt = array(); + if (!$this->smtpConnect($this->SMTPOptions)) { + throw new phpmailerException($this->lang('smtp_connect_failed'), self::STOP_CRITICAL); + } + if (!empty($this->Sender) and $this->validateAddress($this->Sender)) { + $smtp_from = $this->Sender; + } else { + $smtp_from = $this->From; + } + if (!$this->smtp->mail($smtp_from)) { + $this->setError($this->lang('from_failed') . $smtp_from . ' : ' . implode(',', $this->smtp->getError())); + throw new phpmailerException($this->ErrorInfo, self::STOP_CRITICAL); + } + + // Attempt to send to all recipients + foreach (array($this->to, $this->cc, $this->bcc) as $togroup) { + foreach ($togroup as $to) { + if (!$this->smtp->recipient($to[0])) { + $error = $this->smtp->getError(); + $bad_rcpt[] = array('to' => $to[0], 'error' => $error['detail']); + $isSent = false; + } else { + $isSent = true; + } + $this->doCallback($isSent, array($to[0]), array(), array(), $this->Subject, $body, $this->From); + } + } + + // Only send the DATA command if we have viable recipients + if ((count($this->all_recipients) > count($bad_rcpt)) and !$this->smtp->data($header . $body)) { + throw new phpmailerException($this->lang('data_not_accepted'), self::STOP_CRITICAL); + } + if ($this->SMTPKeepAlive) { + $this->smtp->reset(); + } else { + $this->smtp->quit(); + $this->smtp->close(); + } + //Create error message for any bad addresses + if (count($bad_rcpt) > 0) { + $errstr = ''; + foreach ($bad_rcpt as $bad) { + $errstr .= $bad['to'] . ': ' . $bad['error']; + } + throw new phpmailerException( + $this->lang('recipients_failed') . $errstr, + self::STOP_CONTINUE + ); + } + return true; + } + + /** + * Initiate a connection to an SMTP server. + * Returns false if the operation failed. + * @param array $options An array of options compatible with stream_context_create() + * @uses SMTP + * @access public + * @throws phpmailerException + * @return boolean + */ + public function smtpConnect($options = null) + { + if (is_null($this->smtp)) { + $this->smtp = $this->getSMTPInstance(); + } + + //If no options are provided, use whatever is set in the instance + if (is_null($options)) { + $options = $this->SMTPOptions; + } + + // Already connected? + if ($this->smtp->connected()) { + return true; + } + + $this->smtp->setTimeout($this->Timeout); + $this->smtp->setDebugLevel($this->SMTPDebug); + $this->smtp->setDebugOutput($this->Debugoutput); + $this->smtp->setVerp($this->do_verp); + $hosts = explode(';', $this->Host); + $lastexception = null; + + foreach ($hosts as $hostentry) { + $hostinfo = array(); + if (!preg_match('/^((ssl|tls):\/\/)*([a-zA-Z0-9\.-]*):?([0-9]*)$/', trim($hostentry), $hostinfo)) { + // Not a valid host entry + continue; + } + // $hostinfo[2]: optional ssl or tls prefix + // $hostinfo[3]: the hostname + // $hostinfo[4]: optional port number + // The host string prefix can temporarily override the current setting for SMTPSecure + // If it's not specified, the default value is used + $prefix = ''; + $secure = $this->SMTPSecure; + $tls = ($this->SMTPSecure == 'tls'); + if ('ssl' == $hostinfo[2] or ('' == $hostinfo[2] and 'ssl' == $this->SMTPSecure)) { + $prefix = 'ssl://'; + $tls = false; // Can't have SSL and TLS at the same time + $secure = 'ssl'; + } elseif ($hostinfo[2] == 'tls') { + $tls = true; + // tls doesn't use a prefix + $secure = 'tls'; + } + //Do we need the OpenSSL extension? + $sslext = defined('OPENSSL_ALGO_SHA1'); + if ('tls' === $secure or 'ssl' === $secure) { + //Check for an OpenSSL constant rather than using extension_loaded, which is sometimes disabled + if (!$sslext) { + throw new phpmailerException($this->lang('extension_missing').'openssl', self::STOP_CRITICAL); + } + } + $host = $hostinfo[3]; + $port = $this->Port; + $tport = (integer)$hostinfo[4]; + if ($tport > 0 and $tport < 65536) { + $port = $tport; + } + if ($this->smtp->connect($prefix . $host, $port, $this->Timeout, $options)) { + try { + if ($this->Helo) { + $hello = $this->Helo; + } else { + $hello = $this->serverHostname(); + } + $this->smtp->hello($hello); + //Automatically enable TLS encryption if: + // * it's not disabled + // * we have openssl extension + // * we are not already using SSL + // * the server offers STARTTLS + if ($this->SMTPAutoTLS and $sslext and $secure != 'ssl' and $this->smtp->getServerExt('STARTTLS')) { + $tls = true; + } + if ($tls) { + if (!$this->smtp->startTLS()) { + throw new phpmailerException($this->lang('connect_host')); + } + // We must resend EHLO after TLS negotiation + $this->smtp->hello($hello); + } + if ($this->SMTPAuth) { + if (!$this->smtp->authenticate( + $this->Username, + $this->Password, + $this->AuthType, + $this->Realm, + $this->Workstation + ) + ) { + throw new phpmailerException($this->lang('authenticate')); + } + } + return true; + } catch (phpmailerException $exc) { + $lastexception = $exc; + $this->edebug($exc->getMessage()); + // We must have connected, but then failed TLS or Auth, so close connection nicely + $this->smtp->quit(); + } + } + } + // If we get here, all connection attempts have failed, so close connection hard + $this->smtp->close(); + // As we've caught all exceptions, just report whatever the last one was + if ($this->exceptions and !is_null($lastexception)) { + throw $lastexception; + } + return false; + } + + /** + * Close the active SMTP session if one exists. + * @return void + */ + public function smtpClose() + { + if (is_a($this->smtp, 'SMTP')) { + if ($this->smtp->connected()) { + $this->smtp->quit(); + $this->smtp->close(); + } + } + } + + /** + * Set the language for error messages. + * Returns false if it cannot load the language file. + * The default language is English. + * @param string $langcode ISO 639-1 2-character language code (e.g. French is "fr") + * @param string $lang_path Path to the language file directory, with trailing separator (slash) + * @return boolean + * @access public + */ + public function setLanguage($langcode = 'en', $lang_path = '') + { + // Backwards compatibility for renamed language codes + $renamed_langcodes = array( + 'br' => 'pt_br', + 'cz' => 'cs', + 'dk' => 'da', + 'no' => 'nb', + 'se' => 'sv', + ); + + if (isset($renamed_langcodes[$langcode])) { + $langcode = $renamed_langcodes[$langcode]; + } + + // Define full set of translatable strings in English + $PHPMAILER_LANG = array( + 'authenticate' => 'SMTP Error: Could not authenticate.', + 'connect_host' => 'SMTP Error: Could not connect to SMTP host.', + 'data_not_accepted' => 'SMTP Error: data not accepted.', + 'empty_message' => 'Message body empty', + 'encoding' => 'Unknown encoding: ', + 'execute' => 'Could not execute: ', + 'file_access' => 'Could not access file: ', + 'file_open' => 'File Error: Could not open file: ', + 'from_failed' => 'The following From address failed: ', + 'instantiate' => 'Could not instantiate mail function.', + 'invalid_address' => 'Invalid address: ', + 'mailer_not_supported' => ' mailer is not supported.', + 'provide_address' => 'You must provide at least one recipient email address.', + 'recipients_failed' => 'SMTP Error: The following recipients failed: ', + 'signing' => 'Signing Error: ', + 'smtp_connect_failed' => 'SMTP connect() failed.', + 'smtp_error' => 'SMTP server error: ', + 'variable_set' => 'Cannot set or reset variable: ', + 'extension_missing' => 'Extension missing: ' + ); + if (empty($lang_path)) { + // Calculate an absolute path so it can work if CWD is not here + $lang_path = dirname(__FILE__). DIRECTORY_SEPARATOR . 'language'. DIRECTORY_SEPARATOR; + } + //Validate $langcode + if (!preg_match('/^[a-z]{2}(?:_[a-zA-Z]{2})?$/', $langcode)) { + $langcode = 'en'; + } + $foundlang = true; + $lang_file = $lang_path . 'phpmailer.lang-' . $langcode . '.php'; + // There is no English translation file + if ($langcode != 'en') { + // Make sure language file path is readable + if (!is_readable($lang_file)) { + $foundlang = false; + } else { + // Overwrite language-specific strings. + // This way we'll never have missing translation keys. + $foundlang = include $lang_file; + } + } + $this->language = $PHPMAILER_LANG; + return (boolean)$foundlang; // Returns false if language not found + } + + /** + * Get the array of strings for the current language. + * @return array + */ + public function getTranslations() + { + return $this->language; + } + + /** + * Create recipient headers. + * @access public + * @param string $type + * @param array $addr An array of recipient, + * where each recipient is a 2-element indexed array with element 0 containing an address + * and element 1 containing a name, like: + * array(array('joe@example.com', 'Joe User'), array('zoe@example.com', 'Zoe User')) + * @return string + */ + public function addrAppend($type, $addr) + { + $addresses = array(); + foreach ($addr as $address) { + $addresses[] = $this->addrFormat($address); + } + return $type . ': ' . implode(', ', $addresses) . $this->LE; + } + + /** + * Format an address for use in a message header. + * @access public + * @param array $addr A 2-element indexed array, element 0 containing an address, element 1 containing a name + * like array('joe@example.com', 'Joe User') + * @return string + */ + public function addrFormat($addr) + { + if (empty($addr[1])) { // No name provided + return $this->secureHeader($addr[0]); + } else { + return $this->encodeHeader($this->secureHeader($addr[1]), 'phrase') . ' <' . $this->secureHeader( + $addr[0] + ) . '>'; + } + } + + /** + * Word-wrap message. + * For use with mailers that do not automatically perform wrapping + * and for quoted-printable encoded messages. + * Original written by philippe. + * @param string $message The message to wrap + * @param integer $length The line length to wrap to + * @param boolean $qp_mode Whether to run in Quoted-Printable mode + * @access public + * @return string + */ + public function wrapText($message, $length, $qp_mode = false) + { + if ($qp_mode) { + $soft_break = sprintf(' =%s', $this->LE); + } else { + $soft_break = $this->LE; + } + // If utf-8 encoding is used, we will need to make sure we don't + // split multibyte characters when we wrap + $is_utf8 = (strtolower($this->CharSet) == 'utf-8'); + $lelen = strlen($this->LE); + $crlflen = strlen(self::CRLF); + + $message = $this->fixEOL($message); + //Remove a trailing line break + if (substr($message, -$lelen) == $this->LE) { + $message = substr($message, 0, -$lelen); + } + + //Split message into lines + $lines = explode($this->LE, $message); + //Message will be rebuilt in here + $message = ''; + foreach ($lines as $line) { + $words = explode(' ', $line); + $buf = ''; + $firstword = true; + foreach ($words as $word) { + if ($qp_mode and (strlen($word) > $length)) { + $space_left = $length - strlen($buf) - $crlflen; + if (!$firstword) { + if ($space_left > 20) { + $len = $space_left; + if ($is_utf8) { + $len = $this->utf8CharBoundary($word, $len); + } elseif (substr($word, $len - 1, 1) == '=') { + $len--; + } elseif (substr($word, $len - 2, 1) == '=') { + $len -= 2; + } + $part = substr($word, 0, $len); + $word = substr($word, $len); + $buf .= ' ' . $part; + $message .= $buf . sprintf('=%s', self::CRLF); + } else { + $message .= $buf . $soft_break; + } + $buf = ''; + } + while (strlen($word) > 0) { + if ($length <= 0) { + break; + } + $len = $length; + if ($is_utf8) { + $len = $this->utf8CharBoundary($word, $len); + } elseif (substr($word, $len - 1, 1) == '=') { + $len--; + } elseif (substr($word, $len - 2, 1) == '=') { + $len -= 2; + } + $part = substr($word, 0, $len); + $word = substr($word, $len); + + if (strlen($word) > 0) { + $message .= $part . sprintf('=%s', self::CRLF); + } else { + $buf = $part; + } + } + } else { + $buf_o = $buf; + if (!$firstword) { + $buf .= ' '; + } + $buf .= $word; + + if (strlen($buf) > $length and $buf_o != '') { + $message .= $buf_o . $soft_break; + $buf = $word; + } + } + $firstword = false; + } + $message .= $buf . self::CRLF; + } + + return $message; + } + + /** + * Find the last character boundary prior to $maxLength in a utf-8 + * quoted-printable encoded string. + * Original written by Colin Brown. + * @access public + * @param string $encodedText utf-8 QP text + * @param integer $maxLength Find the last character boundary prior to this length + * @return integer + */ + public function utf8CharBoundary($encodedText, $maxLength) + { + $foundSplitPos = false; + $lookBack = 3; + while (!$foundSplitPos) { + $lastChunk = substr($encodedText, $maxLength - $lookBack, $lookBack); + $encodedCharPos = strpos($lastChunk, '='); + if (false !== $encodedCharPos) { + // Found start of encoded character byte within $lookBack block. + // Check the encoded byte value (the 2 chars after the '=') + $hex = substr($encodedText, $maxLength - $lookBack + $encodedCharPos + 1, 2); + $dec = hexdec($hex); + if ($dec < 128) { + // Single byte character. + // If the encoded char was found at pos 0, it will fit + // otherwise reduce maxLength to start of the encoded char + if ($encodedCharPos > 0) { + $maxLength = $maxLength - ($lookBack - $encodedCharPos); + } + $foundSplitPos = true; + } elseif ($dec >= 192) { + // First byte of a multi byte character + // Reduce maxLength to split at start of character + $maxLength = $maxLength - ($lookBack - $encodedCharPos); + $foundSplitPos = true; + } elseif ($dec < 192) { + // Middle byte of a multi byte character, look further back + $lookBack += 3; + } + } else { + // No encoded character found + $foundSplitPos = true; + } + } + return $maxLength; + } + + /** + * Apply word wrapping to the message body. + * Wraps the message body to the number of chars set in the WordWrap property. + * You should only do this to plain-text bodies as wrapping HTML tags may break them. + * This is called automatically by createBody(), so you don't need to call it yourself. + * @access public + * @return void + */ + public function setWordWrap() + { + if ($this->WordWrap < 1) { + return; + } + + switch ($this->message_type) { + case 'alt': + case 'alt_inline': + case 'alt_attach': + case 'alt_inline_attach': + $this->AltBody = $this->wrapText($this->AltBody, $this->WordWrap); + break; + default: + $this->Body = $this->wrapText($this->Body, $this->WordWrap); + break; + } + } + + /** + * Assemble message headers. + * @access public + * @return string The assembled headers + */ + public function createHeader() + { + $result = ''; + + if ($this->MessageDate == '') { + $this->MessageDate = self::rfcDate(); + } + $result .= $this->headerLine('Date', $this->MessageDate); + + // To be created automatically by mail() + if ($this->SingleTo) { + if ($this->Mailer != 'mail') { + foreach ($this->to as $toaddr) { + $this->SingleToArray[] = $this->addrFormat($toaddr); + } + } + } else { + if (count($this->to) > 0) { + if ($this->Mailer != 'mail') { + $result .= $this->addrAppend('To', $this->to); + } + } elseif (count($this->cc) == 0) { + $result .= $this->headerLine('To', 'undisclosed-recipients:;'); + } + } + + $result .= $this->addrAppend('From', array(array(trim($this->From), $this->FromName))); + + // sendmail and mail() extract Cc from the header before sending + if (count($this->cc) > 0) { + $result .= $this->addrAppend('Cc', $this->cc); + } + + // sendmail and mail() extract Bcc from the header before sending + if (( + $this->Mailer == 'sendmail' or $this->Mailer == 'qmail' or $this->Mailer == 'mail' + ) + and count($this->bcc) > 0 + ) { + $result .= $this->addrAppend('Bcc', $this->bcc); + } + + if (count($this->ReplyTo) > 0) { + $result .= $this->addrAppend('Reply-To', $this->ReplyTo); + } + + // mail() sets the subject itself + if ($this->Mailer != 'mail') { + $result .= $this->headerLine('Subject', $this->encodeHeader($this->secureHeader($this->Subject))); + } + + // Only allow a custom message ID if it conforms to RFC 5322 section 3.6.4 + // https://tools.ietf.org/html/rfc5322#section-3.6.4 + if ('' != $this->MessageID and preg_match('/^<.*@.*>$/', $this->MessageID)) { + $this->lastMessageID = $this->MessageID; + } else { + $this->lastMessageID = sprintf('<%s@%s>', $this->uniqueid, $this->serverHostname()); + } + $result .= $this->headerLine('Message-ID', $this->lastMessageID); + if (!is_null($this->Priority)) { + $result .= $this->headerLine('X-Priority', $this->Priority); + } + if ($this->XMailer == '') { + $result .= $this->headerLine( + 'X-Mailer', + 'PHPMailer ' . $this->Version . ' (https://github.com/PHPMailer/PHPMailer)' + ); + } else { + $myXmailer = trim($this->XMailer); + if ($myXmailer) { + $result .= $this->headerLine('X-Mailer', $myXmailer); + } + } + + if ($this->ConfirmReadingTo != '') { + $result .= $this->headerLine('Disposition-Notification-To', '<' . $this->ConfirmReadingTo . '>'); + } + + // Add custom headers + foreach ($this->CustomHeader as $header) { + $result .= $this->headerLine( + trim($header[0]), + $this->encodeHeader(trim($header[1])) + ); + } + if (!$this->sign_key_file) { + $result .= $this->headerLine('MIME-Version', '1.0'); + $result .= $this->getMailMIME(); + } + + return $result; + } + + /** + * Get the message MIME type headers. + * @access public + * @return string + */ + public function getMailMIME() + { + $result = ''; + $ismultipart = true; + switch ($this->message_type) { + case 'inline': + $result .= $this->headerLine('Content-Type', 'multipart/related;'); + $result .= $this->textLine("\tboundary=\"" . $this->boundary[1] . '"'); + break; + case 'attach': + case 'inline_attach': + case 'alt_attach': + case 'alt_inline_attach': + $result .= $this->headerLine('Content-Type', 'multipart/mixed;'); + $result .= $this->textLine("\tboundary=\"" . $this->boundary[1] . '"'); + break; + case 'alt': + case 'alt_inline': + $result .= $this->headerLine('Content-Type', 'multipart/alternative;'); + $result .= $this->textLine("\tboundary=\"" . $this->boundary[1] . '"'); + break; + default: + // Catches case 'plain': and case '': + $result .= $this->textLine('Content-Type: ' . $this->ContentType . '; charset=' . $this->CharSet); + $ismultipart = false; + break; + } + // RFC1341 part 5 says 7bit is assumed if not specified + if ($this->Encoding != '7bit') { + // RFC 2045 section 6.4 says multipart MIME parts may only use 7bit, 8bit or binary CTE + if ($ismultipart) { + if ($this->Encoding == '8bit') { + $result .= $this->headerLine('Content-Transfer-Encoding', '8bit'); + } + // The only remaining alternatives are quoted-printable and base64, which are both 7bit compatible + } else { + $result .= $this->headerLine('Content-Transfer-Encoding', $this->Encoding); + } + } + + if ($this->Mailer != 'mail') { + $result .= $this->LE; + } + + return $result; + } + + /** + * Returns the whole MIME message. + * Includes complete headers and body. + * Only valid post preSend(). + * @see PHPMailer::preSend() + * @access public + * @return string + */ + public function getSentMIMEMessage() + { + return rtrim($this->MIMEHeader . $this->mailHeader, "\n\r") . self::CRLF . self::CRLF . $this->MIMEBody; + } + + /** + * Create unique ID + * @return string + */ + protected function generateId() { + return md5(uniqid(time())); + } + + /** + * Assemble the message body. + * Returns an empty string on failure. + * @access public + * @throws phpmailerException + * @return string The assembled message body + */ + public function createBody() + { + $body = ''; + //Create unique IDs and preset boundaries + $this->uniqueid = $this->generateId(); + $this->boundary[1] = 'b1_' . $this->uniqueid; + $this->boundary[2] = 'b2_' . $this->uniqueid; + $this->boundary[3] = 'b3_' . $this->uniqueid; + + if ($this->sign_key_file) { + $body .= $this->getMailMIME() . $this->LE; + } + + $this->setWordWrap(); + + $bodyEncoding = $this->Encoding; + $bodyCharSet = $this->CharSet; + //Can we do a 7-bit downgrade? + if ($bodyEncoding == '8bit' and !$this->has8bitChars($this->Body)) { + $bodyEncoding = '7bit'; + //All ISO 8859, Windows codepage and UTF-8 charsets are ascii compatible up to 7-bit + $bodyCharSet = 'us-ascii'; + } + //If lines are too long, and we're not already using an encoding that will shorten them, + //change to quoted-printable transfer encoding for the body part only + if ('base64' != $this->Encoding and self::hasLineLongerThanMax($this->Body)) { + $bodyEncoding = 'quoted-printable'; + } + + $altBodyEncoding = $this->Encoding; + $altBodyCharSet = $this->CharSet; + //Can we do a 7-bit downgrade? + if ($altBodyEncoding == '8bit' and !$this->has8bitChars($this->AltBody)) { + $altBodyEncoding = '7bit'; + //All ISO 8859, Windows codepage and UTF-8 charsets are ascii compatible up to 7-bit + $altBodyCharSet = 'us-ascii'; + } + //If lines are too long, and we're not already using an encoding that will shorten them, + //change to quoted-printable transfer encoding for the alt body part only + if ('base64' != $altBodyEncoding and self::hasLineLongerThanMax($this->AltBody)) { + $altBodyEncoding = 'quoted-printable'; + } + //Use this as a preamble in all multipart message types + $mimepre = "This is a multi-part message in MIME format." . $this->LE . $this->LE; + switch ($this->message_type) { + case 'inline': + $body .= $mimepre; + $body .= $this->getBoundary($this->boundary[1], $bodyCharSet, '', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->attachAll('inline', $this->boundary[1]); + break; + case 'attach': + $body .= $mimepre; + $body .= $this->getBoundary($this->boundary[1], $bodyCharSet, '', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->attachAll('attachment', $this->boundary[1]); + break; + case 'inline_attach': + $body .= $mimepre; + $body .= $this->textLine('--' . $this->boundary[1]); + $body .= $this->headerLine('Content-Type', 'multipart/related;'); + $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"'); + $body .= $this->LE; + $body .= $this->getBoundary($this->boundary[2], $bodyCharSet, '', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->attachAll('inline', $this->boundary[2]); + $body .= $this->LE; + $body .= $this->attachAll('attachment', $this->boundary[1]); + break; + case 'alt': + $body .= $mimepre; + $body .= $this->getBoundary($this->boundary[1], $altBodyCharSet, 'text/plain', $altBodyEncoding); + $body .= $this->encodeString($this->AltBody, $altBodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->getBoundary($this->boundary[1], $bodyCharSet, 'text/html', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + if (!empty($this->Ical)) { + $body .= $this->getBoundary($this->boundary[1], '', 'text/calendar; method=REQUEST', ''); + $body .= $this->encodeString($this->Ical, $this->Encoding); + $body .= $this->LE . $this->LE; + } + $body .= $this->endBoundary($this->boundary[1]); + break; + case 'alt_inline': + $body .= $mimepre; + $body .= $this->getBoundary($this->boundary[1], $altBodyCharSet, 'text/plain', $altBodyEncoding); + $body .= $this->encodeString($this->AltBody, $altBodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->textLine('--' . $this->boundary[1]); + $body .= $this->headerLine('Content-Type', 'multipart/related;'); + $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"'); + $body .= $this->LE; + $body .= $this->getBoundary($this->boundary[2], $bodyCharSet, 'text/html', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->attachAll('inline', $this->boundary[2]); + $body .= $this->LE; + $body .= $this->endBoundary($this->boundary[1]); + break; + case 'alt_attach': + $body .= $mimepre; + $body .= $this->textLine('--' . $this->boundary[1]); + $body .= $this->headerLine('Content-Type', 'multipart/alternative;'); + $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"'); + $body .= $this->LE; + $body .= $this->getBoundary($this->boundary[2], $altBodyCharSet, 'text/plain', $altBodyEncoding); + $body .= $this->encodeString($this->AltBody, $altBodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->getBoundary($this->boundary[2], $bodyCharSet, 'text/html', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->endBoundary($this->boundary[2]); + $body .= $this->LE; + $body .= $this->attachAll('attachment', $this->boundary[1]); + break; + case 'alt_inline_attach': + $body .= $mimepre; + $body .= $this->textLine('--' . $this->boundary[1]); + $body .= $this->headerLine('Content-Type', 'multipart/alternative;'); + $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"'); + $body .= $this->LE; + $body .= $this->getBoundary($this->boundary[2], $altBodyCharSet, 'text/plain', $altBodyEncoding); + $body .= $this->encodeString($this->AltBody, $altBodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->textLine('--' . $this->boundary[2]); + $body .= $this->headerLine('Content-Type', 'multipart/related;'); + $body .= $this->textLine("\tboundary=\"" . $this->boundary[3] . '"'); + $body .= $this->LE; + $body .= $this->getBoundary($this->boundary[3], $bodyCharSet, 'text/html', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->attachAll('inline', $this->boundary[3]); + $body .= $this->LE; + $body .= $this->endBoundary($this->boundary[2]); + $body .= $this->LE; + $body .= $this->attachAll('attachment', $this->boundary[1]); + break; + default: + // Catch case 'plain' and case '', applies to simple `text/plain` and `text/html` body content types + //Reset the `Encoding` property in case we changed it for line length reasons + $this->Encoding = $bodyEncoding; + $body .= $this->encodeString($this->Body, $this->Encoding); + break; + } + + if ($this->isError()) { + $body = ''; + } elseif ($this->sign_key_file) { + try { + if (!defined('PKCS7_TEXT')) { + throw new phpmailerException($this->lang('extension_missing') . 'openssl'); + } + // @TODO would be nice to use php://temp streams here, but need to wrap for PHP < 5.1 + $file = tempnam(sys_get_temp_dir(), 'mail'); + if (false === file_put_contents($file, $body)) { + throw new phpmailerException($this->lang('signing') . ' Could not write temp file'); + } + $signed = tempnam(sys_get_temp_dir(), 'signed'); + //Workaround for PHP bug https://bugs.php.net/bug.php?id=69197 + if (empty($this->sign_extracerts_file)) { + $sign = @openssl_pkcs7_sign( + $file, + $signed, + 'file://' . realpath($this->sign_cert_file), + array('file://' . realpath($this->sign_key_file), $this->sign_key_pass), + null + ); + } else { + $sign = @openssl_pkcs7_sign( + $file, + $signed, + 'file://' . realpath($this->sign_cert_file), + array('file://' . realpath($this->sign_key_file), $this->sign_key_pass), + null, + PKCS7_DETACHED, + $this->sign_extracerts_file + ); + } + if ($sign) { + @unlink($file); + $body = file_get_contents($signed); + @unlink($signed); + //The message returned by openssl contains both headers and body, so need to split them up + $parts = explode("\n\n", $body, 2); + $this->MIMEHeader .= $parts[0] . $this->LE . $this->LE; + $body = $parts[1]; + } else { + @unlink($file); + @unlink($signed); + throw new phpmailerException($this->lang('signing') . openssl_error_string()); + } + } catch (phpmailerException $exc) { + $body = ''; + if ($this->exceptions) { + throw $exc; + } + } + } + return $body; + } + + /** + * Return the start of a message boundary. + * @access protected + * @param string $boundary + * @param string $charSet + * @param string $contentType + * @param string $encoding + * @return string + */ + protected function getBoundary($boundary, $charSet, $contentType, $encoding) + { + $result = ''; + if ($charSet == '') { + $charSet = $this->CharSet; + } + if ($contentType == '') { + $contentType = $this->ContentType; + } + if ($encoding == '') { + $encoding = $this->Encoding; + } + $result .= $this->textLine('--' . $boundary); + $result .= sprintf('Content-Type: %s; charset=%s', $contentType, $charSet); + $result .= $this->LE; + // RFC1341 part 5 says 7bit is assumed if not specified + if ($encoding != '7bit') { + $result .= $this->headerLine('Content-Transfer-Encoding', $encoding); + } + $result .= $this->LE; + + return $result; + } + + /** + * Return the end of a message boundary. + * @access protected + * @param string $boundary + * @return string + */ + protected function endBoundary($boundary) + { + return $this->LE . '--' . $boundary . '--' . $this->LE; + } + + /** + * Set the message type. + * PHPMailer only supports some preset message types, not arbitrary MIME structures. + * @access protected + * @return void + */ + protected function setMessageType() + { + $type = array(); + if ($this->alternativeExists()) { + $type[] = 'alt'; + } + if ($this->inlineImageExists()) { + $type[] = 'inline'; + } + if ($this->attachmentExists()) { + $type[] = 'attach'; + } + $this->message_type = implode('_', $type); + if ($this->message_type == '') { + //The 'plain' message_type refers to the message having a single body element, not that it is plain-text + $this->message_type = 'plain'; + } + } + + /** + * Format a header line. + * @access public + * @param string $name + * @param string $value + * @return string + */ + public function headerLine($name, $value) + { + return $name . ': ' . $value . $this->LE; + } + + /** + * Return a formatted mail line. + * @access public + * @param string $value + * @return string + */ + public function textLine($value) + { + return $value . $this->LE; + } + + /** + * Add an attachment from a path on the filesystem. + * Returns false if the file could not be found or read. + * @param string $path Path to the attachment. + * @param string $name Overrides the attachment name. + * @param string $encoding File encoding (see $Encoding). + * @param string $type File extension (MIME) type. + * @param string $disposition Disposition to use + * @throws phpmailerException + * @return boolean + */ + public function addAttachment($path, $name = '', $encoding = 'base64', $type = '', $disposition = 'attachment') + { + try { + if (!@is_file($path)) { + throw new phpmailerException($this->lang('file_access') . $path, self::STOP_CONTINUE); + } + + // If a MIME type is not specified, try to work it out from the file name + if ($type == '') { + $type = self::filenameToType($path); + } + + $filename = basename($path); + if ($name == '') { + $name = $filename; + } + + $this->attachment[] = array( + 0 => $path, + 1 => $filename, + 2 => $name, + 3 => $encoding, + 4 => $type, + 5 => false, // isStringAttachment + 6 => $disposition, + 7 => 0 + ); + + } catch (phpmailerException $exc) { + $this->setError($exc->getMessage()); + $this->edebug($exc->getMessage()); + if ($this->exceptions) { + throw $exc; + } + return false; + } + return true; + } + + /** + * Return the array of attachments. + * @return array + */ + public function getAttachments() + { + return $this->attachment; + } + + /** + * Attach all file, string, and binary attachments to the message. + * Returns an empty string on failure. + * @access protected + * @param string $disposition_type + * @param string $boundary + * @return string + */ + protected function attachAll($disposition_type, $boundary) + { + // Return text of body + $mime = array(); + $cidUniq = array(); + $incl = array(); + + // Add all attachments + foreach ($this->attachment as $attachment) { + // Check if it is a valid disposition_filter + if ($attachment[6] == $disposition_type) { + // Check for string attachment + $string = ''; + $path = ''; + $bString = $attachment[5]; + if ($bString) { + $string = $attachment[0]; + } else { + $path = $attachment[0]; + } + + $inclhash = md5(serialize($attachment)); + if (in_array($inclhash, $incl)) { + continue; + } + $incl[] = $inclhash; + $name = $attachment[2]; + $encoding = $attachment[3]; + $type = $attachment[4]; + $disposition = $attachment[6]; + $cid = $attachment[7]; + if ($disposition == 'inline' && array_key_exists($cid, $cidUniq)) { + continue; + } + $cidUniq[$cid] = true; + + $mime[] = sprintf('--%s%s', $boundary, $this->LE); + //Only include a filename property if we have one + if (!empty($name)) { + $mime[] = sprintf( + 'Content-Type: %s; name="%s"%s', + $type, + $this->encodeHeader($this->secureHeader($name)), + $this->LE + ); + } else { + $mime[] = sprintf( + 'Content-Type: %s%s', + $type, + $this->LE + ); + } + // RFC1341 part 5 says 7bit is assumed if not specified + if ($encoding != '7bit') { + $mime[] = sprintf('Content-Transfer-Encoding: %s%s', $encoding, $this->LE); + } + + if ($disposition == 'inline') { + $mime[] = sprintf('Content-ID: <%s>%s', $cid, $this->LE); + } + + // If a filename contains any of these chars, it should be quoted, + // but not otherwise: RFC2183 & RFC2045 5.1 + // Fixes a warning in IETF's msglint MIME checker + // Allow for bypassing the Content-Disposition header totally + if (!(empty($disposition))) { + $encoded_name = $this->encodeHeader($this->secureHeader($name)); + if (preg_match('/[ \(\)<>@,;:\\"\/\[\]\?=]/', $encoded_name)) { + $mime[] = sprintf( + 'Content-Disposition: %s; filename="%s"%s', + $disposition, + $encoded_name, + $this->LE . $this->LE + ); + } else { + if (!empty($encoded_name)) { + $mime[] = sprintf( + 'Content-Disposition: %s; filename=%s%s', + $disposition, + $encoded_name, + $this->LE . $this->LE + ); + } else { + $mime[] = sprintf( + 'Content-Disposition: %s%s', + $disposition, + $this->LE . $this->LE + ); + } + } + } else { + $mime[] = $this->LE; + } + + // Encode as string attachment + if ($bString) { + $mime[] = $this->encodeString($string, $encoding); + if ($this->isError()) { + return ''; + } + $mime[] = $this->LE . $this->LE; + } else { + $mime[] = $this->encodeFile($path, $encoding); + if ($this->isError()) { + return ''; + } + $mime[] = $this->LE . $this->LE; + } + } + } + + $mime[] = sprintf('--%s--%s', $boundary, $this->LE); + + return implode('', $mime); + } + + /** + * Encode a file attachment in requested format. + * Returns an empty string on failure. + * @param string $path The full path to the file + * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable' + * @throws phpmailerException + * @access protected + * @return string + */ + protected function encodeFile($path, $encoding = 'base64') + { + try { + if (!is_readable($path)) { + throw new phpmailerException($this->lang('file_open') . $path, self::STOP_CONTINUE); + } + $magic_quotes = get_magic_quotes_runtime(); + if ($magic_quotes) { + if (version_compare(PHP_VERSION, '5.3.0', '<')) { + set_magic_quotes_runtime(false); + } else { + //Doesn't exist in PHP 5.4, but we don't need to check because + //get_magic_quotes_runtime always returns false in 5.4+ + //so it will never get here + ini_set('magic_quotes_runtime', false); + } + } + $file_buffer = file_get_contents($path); + $file_buffer = $this->encodeString($file_buffer, $encoding); + if ($magic_quotes) { + if (version_compare(PHP_VERSION, '5.3.0', '<')) { + set_magic_quotes_runtime($magic_quotes); + } else { + ini_set('magic_quotes_runtime', $magic_quotes); + } + } + return $file_buffer; + } catch (Exception $exc) { + $this->setError($exc->getMessage()); + return ''; + } + } + + /** + * Encode a string in requested format. + * Returns an empty string on failure. + * @param string $str The text to encode + * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable' + * @access public + * @return string + */ + public function encodeString($str, $encoding = 'base64') + { + $encoded = ''; + switch (strtolower($encoding)) { + case 'base64': + $encoded = chunk_split(base64_encode($str), 76, $this->LE); + break; + case '7bit': + case '8bit': + $encoded = $this->fixEOL($str); + // Make sure it ends with a line break + if (substr($encoded, -(strlen($this->LE))) != $this->LE) { + $encoded .= $this->LE; + } + break; + case 'binary': + $encoded = $str; + break; + case 'quoted-printable': + $encoded = $this->encodeQP($str); + break; + default: + $this->setError($this->lang('encoding') . $encoding); + break; + } + return $encoded; + } + + /** + * Encode a header string optimally. + * Picks shortest of Q, B, quoted-printable or none. + * @access public + * @param string $str + * @param string $position + * @return string + */ + public function encodeHeader($str, $position = 'text') + { + $matchcount = 0; + switch (strtolower($position)) { + case 'phrase': + if (!preg_match('/[\200-\377]/', $str)) { + // Can't use addslashes as we don't know the value of magic_quotes_sybase + $encoded = addcslashes($str, "\0..\37\177\\\""); + if (($str == $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) { + return ($encoded); + } else { + return ("\"$encoded\""); + } + } + $matchcount = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches); + break; + /** @noinspection PhpMissingBreakStatementInspection */ + case 'comment': + $matchcount = preg_match_all('/[()"]/', $str, $matches); + // Intentional fall-through + case 'text': + default: + $matchcount += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches); + break; + } + + //There are no chars that need encoding + if ($matchcount == 0) { + return ($str); + } + + $maxlen = 75 - 7 - strlen($this->CharSet); + // Try to select the encoding which should produce the shortest output + if ($matchcount > strlen($str) / 3) { + // More than a third of the content will need encoding, so B encoding will be most efficient + $encoding = 'B'; + if (function_exists('mb_strlen') && $this->hasMultiBytes($str)) { + // Use a custom function which correctly encodes and wraps long + // multibyte strings without breaking lines within a character + $encoded = $this->base64EncodeWrapMB($str, "\n"); + } else { + $encoded = base64_encode($str); + $maxlen -= $maxlen % 4; + $encoded = trim(chunk_split($encoded, $maxlen, "\n")); + } + } else { + $encoding = 'Q'; + $encoded = $this->encodeQ($str, $position); + $encoded = $this->wrapText($encoded, $maxlen, true); + $encoded = str_replace('=' . self::CRLF, "\n", trim($encoded)); + } + + $encoded = preg_replace('/^(.*)$/m', ' =?' . $this->CharSet . "?$encoding?\\1?=", $encoded); + $encoded = trim(str_replace("\n", $this->LE, $encoded)); + + return $encoded; + } + + /** + * Check if a string contains multi-byte characters. + * @access public + * @param string $str multi-byte text to wrap encode + * @return boolean + */ + public function hasMultiBytes($str) + { + if (function_exists('mb_strlen')) { + return (strlen($str) > mb_strlen($str, $this->CharSet)); + } else { // Assume no multibytes (we can't handle without mbstring functions anyway) + return false; + } + } + + /** + * Does a string contain any 8-bit chars (in any charset)? + * @param string $text + * @return boolean + */ + public function has8bitChars($text) + { + return (boolean)preg_match('/[\x80-\xFF]/', $text); + } + + /** + * Encode and wrap long multibyte strings for mail headers + * without breaking lines within a character. + * Adapted from a function by paravoid + * @link http://www.php.net/manual/en/function.mb-encode-mimeheader.php#60283 + * @access public + * @param string $str multi-byte text to wrap encode + * @param string $linebreak string to use as linefeed/end-of-line + * @return string + */ + public function base64EncodeWrapMB($str, $linebreak = null) + { + $start = '=?' . $this->CharSet . '?B?'; + $end = '?='; + $encoded = ''; + if ($linebreak === null) { + $linebreak = $this->LE; + } + + $mb_length = mb_strlen($str, $this->CharSet); + // Each line must have length <= 75, including $start and $end + $length = 75 - strlen($start) - strlen($end); + // Average multi-byte ratio + $ratio = $mb_length / strlen($str); + // Base64 has a 4:3 ratio + $avgLength = floor($length * $ratio * .75); + + for ($i = 0; $i < $mb_length; $i += $offset) { + $lookBack = 0; + do { + $offset = $avgLength - $lookBack; + $chunk = mb_substr($str, $i, $offset, $this->CharSet); + $chunk = base64_encode($chunk); + $lookBack++; + } while (strlen($chunk) > $length); + $encoded .= $chunk . $linebreak; + } + + // Chomp the last linefeed + $encoded = substr($encoded, 0, -strlen($linebreak)); + return $encoded; + } + + /** + * Encode a string in quoted-printable format. + * According to RFC2045 section 6.7. + * @access public + * @param string $string The text to encode + * @param integer $line_max Number of chars allowed on a line before wrapping + * @return string + * @link http://www.php.net/manual/en/function.quoted-printable-decode.php#89417 Adapted from this comment + */ + public function encodeQP($string, $line_max = 76) + { + // Use native function if it's available (>= PHP5.3) + if (function_exists('quoted_printable_encode')) { + return quoted_printable_encode($string); + } + // Fall back to a pure PHP implementation + $string = str_replace( + array('%20', '%0D%0A.', '%0D%0A', '%'), + array(' ', "\r\n=2E", "\r\n", '='), + rawurlencode($string) + ); + return preg_replace('/[^\r\n]{' . ($line_max - 3) . '}[^=\r\n]{2}/', "$0=\r\n", $string); + } + + /** + * Backward compatibility wrapper for an old QP encoding function that was removed. + * @see PHPMailer::encodeQP() + * @access public + * @param string $string + * @param integer $line_max + * @param boolean $space_conv + * @return string + * @deprecated Use encodeQP instead. + */ + public function encodeQPphp( + $string, + $line_max = 76, + /** @noinspection PhpUnusedParameterInspection */ $space_conv = false + ) { + return $this->encodeQP($string, $line_max); + } + + /** + * Encode a string using Q encoding. + * @link http://tools.ietf.org/html/rfc2047 + * @param string $str the text to encode + * @param string $position Where the text is going to be used, see the RFC for what that means + * @access public + * @return string + */ + public function encodeQ($str, $position = 'text') + { + // There should not be any EOL in the string + $pattern = ''; + $encoded = str_replace(array("\r", "\n"), '', $str); + switch (strtolower($position)) { + case 'phrase': + // RFC 2047 section 5.3 + $pattern = '^A-Za-z0-9!*+\/ -'; + break; + /** @noinspection PhpMissingBreakStatementInspection */ + case 'comment': + // RFC 2047 section 5.2 + $pattern = '\(\)"'; + // intentional fall-through + // for this reason we build the $pattern without including delimiters and [] + case 'text': + default: + // RFC 2047 section 5.1 + // Replace every high ascii, control, =, ? and _ characters + $pattern = '\000-\011\013\014\016-\037\075\077\137\177-\377' . $pattern; + break; + } + $matches = array(); + if (preg_match_all("/[{$pattern}]/", $encoded, $matches)) { + // If the string contains an '=', make sure it's the first thing we replace + // so as to avoid double-encoding + $eqkey = array_search('=', $matches[0]); + if (false !== $eqkey) { + unset($matches[0][$eqkey]); + array_unshift($matches[0], '='); + } + foreach (array_unique($matches[0]) as $char) { + $encoded = str_replace($char, '=' . sprintf('%02X', ord($char)), $encoded); + } + } + // Replace every spaces to _ (more readable than =20) + return str_replace(' ', '_', $encoded); + } + + /** + * Add a string or binary attachment (non-filesystem). + * This method can be used to attach ascii or binary data, + * such as a BLOB record from a database. + * @param string $string String attachment data. + * @param string $filename Name of the attachment. + * @param string $encoding File encoding (see $Encoding). + * @param string $type File extension (MIME) type. + * @param string $disposition Disposition to use + * @return void + */ + public function addStringAttachment( + $string, + $filename, + $encoding = 'base64', + $type = '', + $disposition = 'attachment' + ) { + // If a MIME type is not specified, try to work it out from the file name + if ($type == '') { + $type = self::filenameToType($filename); + } + // Append to $attachment array + $this->attachment[] = array( + 0 => $string, + 1 => $filename, + 2 => basename($filename), + 3 => $encoding, + 4 => $type, + 5 => true, // isStringAttachment + 6 => $disposition, + 7 => 0 + ); + } + + /** + * Add an embedded (inline) attachment from a file. + * This can include images, sounds, and just about any other document type. + * These differ from 'regular' attachments in that they are intended to be + * displayed inline with the message, not just attached for download. + * This is used in HTML messages that embed the images + * the HTML refers to using the $cid value. + * @param string $path Path to the attachment. + * @param string $cid Content ID of the attachment; Use this to reference + * the content when using an embedded image in HTML. + * @param string $name Overrides the attachment name. + * @param string $encoding File encoding (see $Encoding). + * @param string $type File MIME type. + * @param string $disposition Disposition to use + * @return boolean True on successfully adding an attachment + */ + public function addEmbeddedImage($path, $cid, $name = '', $encoding = 'base64', $type = '', $disposition = 'inline') + { + if (!@is_file($path)) { + $this->setError($this->lang('file_access') . $path); + return false; + } + + // If a MIME type is not specified, try to work it out from the file name + if ($type == '') { + $type = self::filenameToType($path); + } + + $filename = basename($path); + if ($name == '') { + $name = $filename; + } + + // Append to $attachment array + $this->attachment[] = array( + 0 => $path, + 1 => $filename, + 2 => $name, + 3 => $encoding, + 4 => $type, + 5 => false, // isStringAttachment + 6 => $disposition, + 7 => $cid + ); + return true; + } + + /** + * Add an embedded stringified attachment. + * This can include images, sounds, and just about any other document type. + * Be sure to set the $type to an image type for images: + * JPEG images use 'image/jpeg', GIF uses 'image/gif', PNG uses 'image/png'. + * @param string $string The attachment binary data. + * @param string $cid Content ID of the attachment; Use this to reference + * the content when using an embedded image in HTML. + * @param string $name + * @param string $encoding File encoding (see $Encoding). + * @param string $type MIME type. + * @param string $disposition Disposition to use + * @return boolean True on successfully adding an attachment + */ + public function addStringEmbeddedImage( + $string, + $cid, + $name = '', + $encoding = 'base64', + $type = '', + $disposition = 'inline' + ) { + // If a MIME type is not specified, try to work it out from the name + if ($type == '' and !empty($name)) { + $type = self::filenameToType($name); + } + + // Append to $attachment array + $this->attachment[] = array( + 0 => $string, + 1 => $name, + 2 => $name, + 3 => $encoding, + 4 => $type, + 5 => true, // isStringAttachment + 6 => $disposition, + 7 => $cid + ); + return true; + } + + /** + * Check if an inline attachment is present. + * @access public + * @return boolean + */ + public function inlineImageExists() + { + foreach ($this->attachment as $attachment) { + if ($attachment[6] == 'inline') { + return true; + } + } + return false; + } + + /** + * Check if an attachment (non-inline) is present. + * @return boolean + */ + public function attachmentExists() + { + foreach ($this->attachment as $attachment) { + if ($attachment[6] == 'attachment') { + return true; + } + } + return false; + } + + /** + * Check if this message has an alternative body set. + * @return boolean + */ + public function alternativeExists() + { + return !empty($this->AltBody); + } + + /** + * Clear queued addresses of given kind. + * @access protected + * @param string $kind 'to', 'cc', or 'bcc' + * @return void + */ + public function clearQueuedAddresses($kind) + { + $RecipientsQueue = $this->RecipientsQueue; + foreach ($RecipientsQueue as $address => $params) { + if ($params[0] == $kind) { + unset($this->RecipientsQueue[$address]); + } + } + } + + /** + * Clear all To recipients. + * @return void + */ + public function clearAddresses() + { + foreach ($this->to as $to) { + unset($this->all_recipients[strtolower($to[0])]); + } + $this->to = array(); + $this->clearQueuedAddresses('to'); + } + + /** + * Clear all CC recipients. + * @return void + */ + public function clearCCs() + { + foreach ($this->cc as $cc) { + unset($this->all_recipients[strtolower($cc[0])]); + } + $this->cc = array(); + $this->clearQueuedAddresses('cc'); + } + + /** + * Clear all BCC recipients. + * @return void + */ + public function clearBCCs() + { + foreach ($this->bcc as $bcc) { + unset($this->all_recipients[strtolower($bcc[0])]); + } + $this->bcc = array(); + $this->clearQueuedAddresses('bcc'); + } + + /** + * Clear all ReplyTo recipients. + * @return void + */ + public function clearReplyTos() + { + $this->ReplyTo = array(); + $this->ReplyToQueue = array(); + } + + /** + * Clear all recipient types. + * @return void + */ + public function clearAllRecipients() + { + $this->to = array(); + $this->cc = array(); + $this->bcc = array(); + $this->all_recipients = array(); + $this->RecipientsQueue = array(); + } + + /** + * Clear all filesystem, string, and binary attachments. + * @return void + */ + public function clearAttachments() + { + $this->attachment = array(); + } + + /** + * Clear all custom headers. + * @return void + */ + public function clearCustomHeaders() + { + $this->CustomHeader = array(); + } + + /** + * Add an error message to the error container. + * @access protected + * @param string $msg + * @return void + */ + protected function setError($msg) + { + $this->error_count++; + if ($this->Mailer == 'smtp' and !is_null($this->smtp)) { + $lasterror = $this->smtp->getError(); + if (!empty($lasterror['error'])) { + $msg .= $this->lang('smtp_error') . $lasterror['error']; + if (!empty($lasterror['detail'])) { + $msg .= ' Detail: '. $lasterror['detail']; + } + if (!empty($lasterror['smtp_code'])) { + $msg .= ' SMTP code: ' . $lasterror['smtp_code']; + } + if (!empty($lasterror['smtp_code_ex'])) { + $msg .= ' Additional SMTP info: ' . $lasterror['smtp_code_ex']; + } + } + } + $this->ErrorInfo = $msg; + } + + /** + * Return an RFC 822 formatted date. + * @access public + * @return string + * @static + */ + public static function rfcDate() + { + // Set the time zone to whatever the default is to avoid 500 errors + // Will default to UTC if it's not set properly in php.ini + date_default_timezone_set(@date_default_timezone_get()); + return date('D, j M Y H:i:s O'); + } + + /** + * Get the server hostname. + * Returns 'localhost.localdomain' if unknown. + * @access protected + * @return string + */ + protected function serverHostname() + { + $result = 'localhost.localdomain'; + if (!empty($this->Hostname)) { + $result = $this->Hostname; + } elseif (isset($_SERVER) and array_key_exists('SERVER_NAME', $_SERVER) and !empty($_SERVER['SERVER_NAME'])) { + $result = $_SERVER['SERVER_NAME']; + } elseif (function_exists('gethostname') && gethostname() !== false) { + $result = gethostname(); + } elseif (php_uname('n') !== false) { + $result = php_uname('n'); + } + return $result; + } + + /** + * Get an error message in the current language. + * @access protected + * @param string $key + * @return string + */ + protected function lang($key) + { + if (count($this->language) < 1) { + $this->setLanguage('en'); // set the default language + } + + if (array_key_exists($key, $this->language)) { + if ($key == 'smtp_connect_failed') { + //Include a link to troubleshooting docs on SMTP connection failure + //this is by far the biggest cause of support questions + //but it's usually not PHPMailer's fault. + return $this->language[$key] . ' https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting'; + } + return $this->language[$key]; + } else { + //Return the key as a fallback + return $key; + } + } + + /** + * Check if an error occurred. + * @access public + * @return boolean True if an error did occur. + */ + public function isError() + { + return ($this->error_count > 0); + } + + /** + * Ensure consistent line endings in a string. + * Changes every end of line from CRLF, CR or LF to $this->LE. + * @access public + * @param string $str String to fixEOL + * @return string + */ + public function fixEOL($str) + { + // Normalise to \n + $nstr = str_replace(array("\r\n", "\r"), "\n", $str); + // Now convert LE as needed + if ($this->LE !== "\n") { + $nstr = str_replace("\n", $this->LE, $nstr); + } + return $nstr; + } + + /** + * Add a custom header. + * $name value can be overloaded to contain + * both header name and value (name:value) + * @access public + * @param string $name Custom header name + * @param string $value Header value + * @return void + */ + public function addCustomHeader($name, $value = null) + { + if ($value === null) { + // Value passed in as name:value + $this->CustomHeader[] = explode(':', $name, 2); + } else { + $this->CustomHeader[] = array($name, $value); + } + } + + /** + * Returns all custom headers. + * @return array + */ + public function getCustomHeaders() + { + return $this->CustomHeader; + } + + /** + * Create a message body from an HTML string. + * Automatically inlines images and creates a plain-text version by converting the HTML, + * overwriting any existing values in Body and AltBody. + * $basedir is used when handling relative image paths, e.g. + * will look for an image file in $basedir/images/a.png and convert it to inline. + * If you don't want to apply these transformations to your HTML, just set Body and AltBody yourself. + * @access public + * @param string $message HTML message string + * @param string $basedir base directory for relative paths to images + * @param boolean|callable $advanced Whether to use the internal HTML to text converter + * or your own custom converter @see PHPMailer::html2text() + * @return string $message The transformed message Body + */ + public function msgHTML($message, $basedir = '', $advanced = false) + { + preg_match_all('/(src|background)=["\'](.*)["\']/Ui', $message, $images); + if (array_key_exists(2, $images)) { + foreach ($images[2] as $imgindex => $url) { + // Convert data URIs into embedded images + if (preg_match('#^data:(image[^;,]*)(;base64)?,#', $url, $match)) { + $data = substr($url, strpos($url, ',')); + if ($match[2]) { + $data = base64_decode($data); + } else { + $data = rawurldecode($data); + } + $cid = md5($url) . '@phpmailer.0'; // RFC2392 S 2 + if ($this->addStringEmbeddedImage($data, $cid, 'embed' . $imgindex, 'base64', $match[1])) { + $message = str_replace( + $images[0][$imgindex], + $images[1][$imgindex] . '="cid:' . $cid . '"', + $message + ); + } + } elseif (substr($url, 0, 4) !== 'cid:' && !preg_match('#^[a-z][a-z0-9+.-]*://#i', $url)) { + // Do not change urls for absolute images (thanks to corvuscorax) + // Do not change urls that are already inline images + $filename = basename($url); + $directory = dirname($url); + if ($directory == '.') { + $directory = ''; + } + $cid = md5($url) . '@phpmailer.0'; // RFC2392 S 2 + if (strlen($basedir) > 1 && substr($basedir, -1) != '/') { + $basedir .= '/'; + } + if (strlen($directory) > 1 && substr($directory, -1) != '/') { + $directory .= '/'; + } + if ($this->addEmbeddedImage( + $basedir . $directory . $filename, + $cid, + $filename, + 'base64', + self::_mime_types((string)self::mb_pathinfo($filename, PATHINFO_EXTENSION)) + ) + ) { + $message = preg_replace( + '/' . $images[1][$imgindex] . '=["\']' . preg_quote($url, '/') . '["\']/Ui', + $images[1][$imgindex] . '="cid:' . $cid . '"', + $message + ); + } + } + } + } + $this->isHTML(true); + // Convert all message body line breaks to CRLF, makes quoted-printable encoding work much better + $this->Body = $this->normalizeBreaks($message); + $this->AltBody = $this->normalizeBreaks($this->html2text($message, $advanced)); + if (!$this->alternativeExists()) { + $this->AltBody = 'To view this email message, open it in a program that understands HTML!' . + self::CRLF . self::CRLF; + } + return $this->Body; + } + + /** + * Convert an HTML string into plain text. + * This is used by msgHTML(). + * Note - older versions of this function used a bundled advanced converter + * which was been removed for license reasons in #232. + * Example usage: + * + * // Use default conversion + * $plain = $mail->html2text($html); + * // Use your own custom converter + * $plain = $mail->html2text($html, function($html) { + * $converter = new MyHtml2text($html); + * return $converter->get_text(); + * }); + * + * @param string $html The HTML text to convert + * @param boolean|callable $advanced Any boolean value to use the internal converter, + * or provide your own callable for custom conversion. + * @return string + */ + public function html2text($html, $advanced = false) + { + if (is_callable($advanced)) { + return call_user_func($advanced, $html); + } + return html_entity_decode( + trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/si', '', $html))), + ENT_QUOTES, + $this->CharSet + ); + } + + /** + * Get the MIME type for a file extension. + * @param string $ext File extension + * @access public + * @return string MIME type of file. + * @static + */ + public static function _mime_types($ext = '') + { + $mimes = array( + 'xl' => 'application/excel', + 'js' => 'application/javascript', + 'hqx' => 'application/mac-binhex40', + 'cpt' => 'application/mac-compactpro', + 'bin' => 'application/macbinary', + 'doc' => 'application/msword', + 'word' => 'application/msword', + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', + 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', + 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', + 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', + 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12', + 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12', + 'class' => 'application/octet-stream', + 'dll' => 'application/octet-stream', + 'dms' => 'application/octet-stream', + 'exe' => 'application/octet-stream', + 'lha' => 'application/octet-stream', + 'lzh' => 'application/octet-stream', + 'psd' => 'application/octet-stream', + 'sea' => 'application/octet-stream', + 'so' => 'application/octet-stream', + 'oda' => 'application/oda', + 'pdf' => 'application/pdf', + 'ai' => 'application/postscript', + 'eps' => 'application/postscript', + 'ps' => 'application/postscript', + 'smi' => 'application/smil', + 'smil' => 'application/smil', + 'mif' => 'application/vnd.mif', + 'xls' => 'application/vnd.ms-excel', + 'ppt' => 'application/vnd.ms-powerpoint', + 'wbxml' => 'application/vnd.wap.wbxml', + 'wmlc' => 'application/vnd.wap.wmlc', + 'dcr' => 'application/x-director', + 'dir' => 'application/x-director', + 'dxr' => 'application/x-director', + 'dvi' => 'application/x-dvi', + 'gtar' => 'application/x-gtar', + 'php3' => 'application/x-httpd-php', + 'php4' => 'application/x-httpd-php', + 'php' => 'application/x-httpd-php', + 'phtml' => 'application/x-httpd-php', + 'phps' => 'application/x-httpd-php-source', + 'swf' => 'application/x-shockwave-flash', + 'sit' => 'application/x-stuffit', + 'tar' => 'application/x-tar', + 'tgz' => 'application/x-tar', + 'xht' => 'application/xhtml+xml', + 'xhtml' => 'application/xhtml+xml', + 'zip' => 'application/zip', + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'mp2' => 'audio/mpeg', + 'mp3' => 'audio/mpeg', + 'mpga' => 'audio/mpeg', + 'aif' => 'audio/x-aiff', + 'aifc' => 'audio/x-aiff', + 'aiff' => 'audio/x-aiff', + 'ram' => 'audio/x-pn-realaudio', + 'rm' => 'audio/x-pn-realaudio', + 'rpm' => 'audio/x-pn-realaudio-plugin', + 'ra' => 'audio/x-realaudio', + 'wav' => 'audio/x-wav', + 'bmp' => 'image/bmp', + 'gif' => 'image/gif', + 'jpeg' => 'image/jpeg', + 'jpe' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'png' => 'image/png', + 'tiff' => 'image/tiff', + 'tif' => 'image/tiff', + 'eml' => 'message/rfc822', + 'css' => 'text/css', + 'html' => 'text/html', + 'htm' => 'text/html', + 'shtml' => 'text/html', + 'log' => 'text/plain', + 'text' => 'text/plain', + 'txt' => 'text/plain', + 'rtx' => 'text/richtext', + 'rtf' => 'text/rtf', + 'vcf' => 'text/vcard', + 'vcard' => 'text/vcard', + 'xml' => 'text/xml', + 'xsl' => 'text/xml', + 'mpeg' => 'video/mpeg', + 'mpe' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'mov' => 'video/quicktime', + 'qt' => 'video/quicktime', + 'rv' => 'video/vnd.rn-realvideo', + 'avi' => 'video/x-msvideo', + 'movie' => 'video/x-sgi-movie' + ); + if (array_key_exists(strtolower($ext), $mimes)) { + return $mimes[strtolower($ext)]; + } + return 'application/octet-stream'; + } + + /** + * Map a file name to a MIME type. + * Defaults to 'application/octet-stream', i.e.. arbitrary binary data. + * @param string $filename A file name or full path, does not need to exist as a file + * @return string + * @static + */ + public static function filenameToType($filename) + { + // In case the path is a URL, strip any query string before getting extension + $qpos = strpos($filename, '?'); + if (false !== $qpos) { + $filename = substr($filename, 0, $qpos); + } + $pathinfo = self::mb_pathinfo($filename); + return self::_mime_types($pathinfo['extension']); + } + + /** + * Multi-byte-safe pathinfo replacement. + * Drop-in replacement for pathinfo(), but multibyte-safe, cross-platform-safe, old-version-safe. + * Works similarly to the one in PHP >= 5.2.0 + * @link http://www.php.net/manual/en/function.pathinfo.php#107461 + * @param string $path A filename or path, does not need to exist as a file + * @param integer|string $options Either a PATHINFO_* constant, + * or a string name to return only the specified piece, allows 'filename' to work on PHP < 5.2 + * @return string|array + * @static + */ + public static function mb_pathinfo($path, $options = null) + { + $ret = array('dirname' => '', 'basename' => '', 'extension' => '', 'filename' => ''); + $pathinfo = array(); + if (preg_match('%^(.*?)[\\\\/]*(([^/\\\\]*?)(\.([^\.\\\\/]+?)|))[\\\\/\.]*$%im', $path, $pathinfo)) { + if (array_key_exists(1, $pathinfo)) { + $ret['dirname'] = $pathinfo[1]; + } + if (array_key_exists(2, $pathinfo)) { + $ret['basename'] = $pathinfo[2]; + } + if (array_key_exists(5, $pathinfo)) { + $ret['extension'] = $pathinfo[5]; + } + if (array_key_exists(3, $pathinfo)) { + $ret['filename'] = $pathinfo[3]; + } + } + switch ($options) { + case PATHINFO_DIRNAME: + case 'dirname': + return $ret['dirname']; + case PATHINFO_BASENAME: + case 'basename': + return $ret['basename']; + case PATHINFO_EXTENSION: + case 'extension': + return $ret['extension']; + case PATHINFO_FILENAME: + case 'filename': + return $ret['filename']; + default: + return $ret; + } + } + + /** + * Set or reset instance properties. + * You should avoid this function - it's more verbose, less efficient, more error-prone and + * harder to debug than setting properties directly. + * Usage Example: + * `$mail->set('SMTPSecure', 'tls');` + * is the same as: + * `$mail->SMTPSecure = 'tls';` + * @access public + * @param string $name The property name to set + * @param mixed $value The value to set the property to + * @return boolean + * @TODO Should this not be using the __set() magic function? + */ + public function set($name, $value = '') + { + if (property_exists($this, $name)) { + $this->$name = $value; + return true; + } else { + $this->setError($this->lang('variable_set') . $name); + return false; + } + } + + /** + * Strip newlines to prevent header injection. + * @access public + * @param string $str + * @return string + */ + public function secureHeader($str) + { + return trim(str_replace(array("\r", "\n"), '', $str)); + } + + /** + * Normalize line breaks in a string. + * Converts UNIX LF, Mac CR and Windows CRLF line breaks into a single line break format. + * Defaults to CRLF (for message bodies) and preserves consecutive breaks. + * @param string $text + * @param string $breaktype What kind of line break to use, defaults to CRLF + * @return string + * @access public + * @static + */ + public static function normalizeBreaks($text, $breaktype = "\r\n") + { + return preg_replace('/(\r\n|\r|\n)/ms', $breaktype, $text); + } + + /** + * Set the public and private key files and password for S/MIME signing. + * @access public + * @param string $cert_filename + * @param string $key_filename + * @param string $key_pass Password for private key + * @param string $extracerts_filename Optional path to chain certificate + */ + public function sign($cert_filename, $key_filename, $key_pass, $extracerts_filename = '') + { + $this->sign_cert_file = $cert_filename; + $this->sign_key_file = $key_filename; + $this->sign_key_pass = $key_pass; + $this->sign_extracerts_file = $extracerts_filename; + } + + /** + * Quoted-Printable-encode a DKIM header. + * @access public + * @param string $txt + * @return string + */ + public function DKIM_QP($txt) + { + $line = ''; + for ($i = 0; $i < strlen($txt); $i++) { + $ord = ord($txt[$i]); + if (((0x21 <= $ord) && ($ord <= 0x3A)) || $ord == 0x3C || ((0x3E <= $ord) && ($ord <= 0x7E))) { + $line .= $txt[$i]; + } else { + $line .= '=' . sprintf('%02X', $ord); + } + } + return $line; + } + + /** + * Generate a DKIM signature. + * @access public + * @param string $signHeader + * @throws phpmailerException + * @return string The DKIM signature value + */ + public function DKIM_Sign($signHeader) + { + if (!defined('PKCS7_TEXT')) { + if ($this->exceptions) { + throw new phpmailerException($this->lang('extension_missing') . 'openssl'); + } + return ''; + } + $privKeyStr = !empty($this->DKIM_private_string) ? $this->DKIM_private_string : file_get_contents($this->DKIM_private); + if ('' != $this->DKIM_passphrase) { + $privKey = openssl_pkey_get_private($privKeyStr, $this->DKIM_passphrase); + } else { + $privKey = openssl_pkey_get_private($privKeyStr); + } + //Workaround for missing digest algorithms in old PHP & OpenSSL versions + //@link http://stackoverflow.com/a/11117338/333340 + if (version_compare(PHP_VERSION, '5.3.0') >= 0 and + in_array('sha256WithRSAEncryption', openssl_get_md_methods(true))) { + if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) { + openssl_pkey_free($privKey); + return base64_encode($signature); + } + } else { + $pinfo = openssl_pkey_get_details($privKey); + $hash = hash('sha256', $signHeader); + //'Magic' constant for SHA256 from RFC3447 + //@link https://tools.ietf.org/html/rfc3447#page-43 + $t = '3031300d060960864801650304020105000420' . $hash; + $pslen = $pinfo['bits'] / 8 - (strlen($t) / 2 + 3); + $eb = pack('H*', '0001' . str_repeat('FF', $pslen) . '00' . $t); + + if (openssl_private_encrypt($eb, $signature, $privKey, OPENSSL_NO_PADDING)) { + openssl_pkey_free($privKey); + return base64_encode($signature); + } + } + openssl_pkey_free($privKey); + return ''; + } + + /** + * Generate a DKIM canonicalization header. + * @access public + * @param string $signHeader Header + * @return string + */ + public function DKIM_HeaderC($signHeader) + { + $signHeader = preg_replace('/\r\n\s+/', ' ', $signHeader); + $lines = explode("\r\n", $signHeader); + foreach ($lines as $key => $line) { + list($heading, $value) = explode(':', $line, 2); + $heading = strtolower($heading); + $value = preg_replace('/\s{2,}/', ' ', $value); // Compress useless spaces + $lines[$key] = $heading . ':' . trim($value); // Don't forget to remove WSP around the value + } + $signHeader = implode("\r\n", $lines); + return $signHeader; + } + + /** + * Generate a DKIM canonicalization body. + * @access public + * @param string $body Message Body + * @return string + */ + public function DKIM_BodyC($body) + { + if ($body == '') { + return "\r\n"; + } + // stabilize line endings + $body = str_replace("\r\n", "\n", $body); + $body = str_replace("\n", "\r\n", $body); + // END stabilize line endings + while (substr($body, strlen($body) - 4, 4) == "\r\n\r\n") { + $body = substr($body, 0, strlen($body) - 2); + } + return $body; + } + + /** + * Create the DKIM header and body in a new message header. + * @access public + * @param string $headers_line Header lines + * @param string $subject Subject + * @param string $body Body + * @return string + */ + public function DKIM_Add($headers_line, $subject, $body) + { + $DKIMsignatureType = 'rsa-sha256'; // Signature & hash algorithms + $DKIMcanonicalization = 'relaxed/simple'; // Canonicalization of header/body + $DKIMquery = 'dns/txt'; // Query method + $DKIMtime = time(); // Signature Timestamp = seconds since 00:00:00 - Jan 1, 1970 (UTC time zone) + $subject_header = "Subject: $subject"; + $headers = explode($this->LE, $headers_line); + $from_header = ''; + $to_header = ''; + $date_header = ''; + $current = ''; + foreach ($headers as $header) { + if (strpos($header, 'From:') === 0) { + $from_header = $header; + $current = 'from_header'; + } elseif (strpos($header, 'To:') === 0) { + $to_header = $header; + $current = 'to_header'; + } elseif (strpos($header, 'Date:') === 0) { + $date_header = $header; + $current = 'date_header'; + } else { + if (!empty($$current) && strpos($header, ' =?') === 0) { + $$current .= $header; + } else { + $current = ''; + } + } + } + $from = str_replace('|', '=7C', $this->DKIM_QP($from_header)); + $to = str_replace('|', '=7C', $this->DKIM_QP($to_header)); + $date = str_replace('|', '=7C', $this->DKIM_QP($date_header)); + $subject = str_replace( + '|', + '=7C', + $this->DKIM_QP($subject_header) + ); // Copied header fields (dkim-quoted-printable) + $body = $this->DKIM_BodyC($body); + $DKIMlen = strlen($body); // Length of body + $DKIMb64 = base64_encode(pack('H*', hash('sha256', $body))); // Base64 of packed binary SHA-256 hash of body + if ('' == $this->DKIM_identity) { + $ident = ''; + } else { + $ident = ' i=' . $this->DKIM_identity . ';'; + } + $dkimhdrs = 'DKIM-Signature: v=1; a=' . + $DKIMsignatureType . '; q=' . + $DKIMquery . '; l=' . + $DKIMlen . '; s=' . + $this->DKIM_selector . + ";\r\n" . + "\tt=" . $DKIMtime . '; c=' . $DKIMcanonicalization . ";\r\n" . + "\th=From:To:Date:Subject;\r\n" . + "\td=" . $this->DKIM_domain . ';' . $ident . "\r\n" . + "\tz=$from\r\n" . + "\t|$to\r\n" . + "\t|$date\r\n" . + "\t|$subject;\r\n" . + "\tbh=" . $DKIMb64 . ";\r\n" . + "\tb="; + $toSign = $this->DKIM_HeaderC( + $from_header . "\r\n" . + $to_header . "\r\n" . + $date_header . "\r\n" . + $subject_header . "\r\n" . + $dkimhdrs + ); + $signed = $this->DKIM_Sign($toSign); + return $dkimhdrs . $signed . "\r\n"; + } + + /** + * Detect if a string contains a line longer than the maximum line length allowed. + * @param string $str + * @return boolean + * @static + */ + public static function hasLineLongerThanMax($str) + { + //+2 to include CRLF line break for a 1000 total + return (boolean)preg_match('/^(.{'.(self::MAX_LINE_LENGTH + 2).',})/m', $str); + } + + /** + * Allows for public read access to 'to' property. + * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included. + * @access public + * @return array + */ + public function getToAddresses() + { + return $this->to; + } + + /** + * Allows for public read access to 'cc' property. + * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included. + * @access public + * @return array + */ + public function getCcAddresses() + { + return $this->cc; + } + + /** + * Allows for public read access to 'bcc' property. + * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included. + * @access public + * @return array + */ + public function getBccAddresses() + { + return $this->bcc; + } + + /** + * Allows for public read access to 'ReplyTo' property. + * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included. + * @access public + * @return array + */ + public function getReplyToAddresses() + { + return $this->ReplyTo; + } + + /** + * Allows for public read access to 'all_recipients' property. + * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included. + * @access public + * @return array + */ + public function getAllRecipientAddresses() + { + return $this->all_recipients; + } + + /** + * Perform a callback. + * @param boolean $isSent + * @param array $to + * @param array $cc + * @param array $bcc + * @param string $subject + * @param string $body + * @param string $from + */ + protected function doCallback($isSent, $to, $cc, $bcc, $subject, $body, $from) + { + if (!empty($this->action_function) && is_callable($this->action_function)) { + $params = array($isSent, $to, $cc, $bcc, $subject, $body, $from); + call_user_func_array($this->action_function, $params); + } + } +} + +/** + * PHPMailer exception handler + * @package PHPMailer + */ +class phpmailerException extends Exception +{ + /** + * Prettify error message output + * @return string + */ + public function errorMessage() + { + $errorMsg = '' . $this->getMessage() . "
        \n"; + return $errorMsg; + } +} diff --git a/mail/class.pop3.php b/mail/class.pop3.php new file mode 100644 index 0000000..32d614b --- /dev/null +++ b/mail/class.pop3.php @@ -0,0 +1,407 @@ + + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2012 - 2014 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +/** + * PHPMailer POP-Before-SMTP Authentication Class. + * Specifically for PHPMailer to use for RFC1939 POP-before-SMTP authentication. + * Does not support APOP. + * @package PHPMailer + * @author Richard Davey (original author) + * @author Marcus Bointon (Synchro/coolbru) + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + */ +class POP3 +{ + /** + * The POP3 PHPMailer Version number. + * @var string + * @access public + */ + public $Version = '5.2.19'; + + /** + * Default POP3 port number. + * @var integer + * @access public + */ + public $POP3_PORT = 110; + + /** + * Default timeout in seconds. + * @var integer + * @access public + */ + public $POP3_TIMEOUT = 30; + + /** + * POP3 Carriage Return + Line Feed. + * @var string + * @access public + * @deprecated Use the constant instead + */ + public $CRLF = "\r\n"; + + /** + * Debug display level. + * Options: 0 = no, 1+ = yes + * @var integer + * @access public + */ + public $do_debug = 0; + + /** + * POP3 mail server hostname. + * @var string + * @access public + */ + public $host; + + /** + * POP3 port number. + * @var integer + * @access public + */ + public $port; + + /** + * POP3 Timeout Value in seconds. + * @var integer + * @access public + */ + public $tval; + + /** + * POP3 username + * @var string + * @access public + */ + public $username; + + /** + * POP3 password. + * @var string + * @access public + */ + public $password; + + /** + * Resource handle for the POP3 connection socket. + * @var resource + * @access protected + */ + protected $pop_conn; + + /** + * Are we connected? + * @var boolean + * @access protected + */ + protected $connected = false; + + /** + * Error container. + * @var array + * @access protected + */ + protected $errors = array(); + + /** + * Line break constant + */ + const CRLF = "\r\n"; + + /** + * Simple static wrapper for all-in-one POP before SMTP + * @param $host + * @param integer|boolean $port The port number to connect to + * @param integer|boolean $timeout The timeout value + * @param string $username + * @param string $password + * @param integer $debug_level + * @return boolean + */ + public static function popBeforeSmtp( + $host, + $port = false, + $timeout = false, + $username = '', + $password = '', + $debug_level = 0 + ) { + $pop = new POP3; + return $pop->authorise($host, $port, $timeout, $username, $password, $debug_level); + } + + /** + * Authenticate with a POP3 server. + * A connect, login, disconnect sequence + * appropriate for POP-before SMTP authorisation. + * @access public + * @param string $host The hostname to connect to + * @param integer|boolean $port The port number to connect to + * @param integer|boolean $timeout The timeout value + * @param string $username + * @param string $password + * @param integer $debug_level + * @return boolean + */ + public function authorise($host, $port = false, $timeout = false, $username = '', $password = '', $debug_level = 0) + { + $this->host = $host; + // If no port value provided, use default + if (false === $port) { + $this->port = $this->POP3_PORT; + } else { + $this->port = (integer)$port; + } + // If no timeout value provided, use default + if (false === $timeout) { + $this->tval = $this->POP3_TIMEOUT; + } else { + $this->tval = (integer)$timeout; + } + $this->do_debug = $debug_level; + $this->username = $username; + $this->password = $password; + // Reset the error log + $this->errors = array(); + // connect + $result = $this->connect($this->host, $this->port, $this->tval); + if ($result) { + $login_result = $this->login($this->username, $this->password); + if ($login_result) { + $this->disconnect(); + return true; + } + } + // We need to disconnect regardless of whether the login succeeded + $this->disconnect(); + return false; + } + + /** + * Connect to a POP3 server. + * @access public + * @param string $host + * @param integer|boolean $port + * @param integer $tval + * @return boolean + */ + public function connect($host, $port = false, $tval = 30) + { + // Are we already connected? + if ($this->connected) { + return true; + } + + //On Windows this will raise a PHP Warning error if the hostname doesn't exist. + //Rather than suppress it with @fsockopen, capture it cleanly instead + set_error_handler(array($this, 'catchWarning')); + + if (false === $port) { + $port = $this->POP3_PORT; + } + + // connect to the POP3 server + $this->pop_conn = fsockopen( + $host, // POP3 Host + $port, // Port # + $errno, // Error Number + $errstr, // Error Message + $tval + ); // Timeout (seconds) + // Restore the error handler + restore_error_handler(); + + // Did we connect? + if (false === $this->pop_conn) { + // It would appear not... + $this->setError(array( + 'error' => "Failed to connect to server $host on port $port", + 'errno' => $errno, + 'errstr' => $errstr + )); + return false; + } + + // Increase the stream time-out + stream_set_timeout($this->pop_conn, $tval, 0); + + // Get the POP3 server response + $pop3_response = $this->getResponse(); + // Check for the +OK + if ($this->checkResponse($pop3_response)) { + // The connection is established and the POP3 server is talking + $this->connected = true; + return true; + } + return false; + } + + /** + * Log in to the POP3 server. + * Does not support APOP (RFC 2828, 4949). + * @access public + * @param string $username + * @param string $password + * @return boolean + */ + public function login($username = '', $password = '') + { + if (!$this->connected) { + $this->setError('Not connected to POP3 server'); + } + if (empty($username)) { + $username = $this->username; + } + if (empty($password)) { + $password = $this->password; + } + + // Send the Username + $this->sendString("USER $username" . self::CRLF); + $pop3_response = $this->getResponse(); + if ($this->checkResponse($pop3_response)) { + // Send the Password + $this->sendString("PASS $password" . self::CRLF); + $pop3_response = $this->getResponse(); + if ($this->checkResponse($pop3_response)) { + return true; + } + } + return false; + } + + /** + * Disconnect from the POP3 server. + * @access public + */ + public function disconnect() + { + $this->sendString('QUIT'); + //The QUIT command may cause the daemon to exit, which will kill our connection + //So ignore errors here + try { + @fclose($this->pop_conn); + } catch (Exception $e) { + //Do nothing + }; + } + + /** + * Get a response from the POP3 server. + * $size is the maximum number of bytes to retrieve + * @param integer $size + * @return string + * @access protected + */ + protected function getResponse($size = 128) + { + $response = fgets($this->pop_conn, $size); + if ($this->do_debug >= 1) { + echo "Server -> Client: $response"; + } + return $response; + } + + /** + * Send raw data to the POP3 server. + * @param string $string + * @return integer + * @access protected + */ + protected function sendString($string) + { + if ($this->pop_conn) { + if ($this->do_debug >= 2) { //Show client messages when debug >= 2 + echo "Client -> Server: $string"; + } + return fwrite($this->pop_conn, $string, strlen($string)); + } + return 0; + } + + /** + * Checks the POP3 server response. + * Looks for for +OK or -ERR. + * @param string $string + * @return boolean + * @access protected + */ + protected function checkResponse($string) + { + if (substr($string, 0, 3) !== '+OK') { + $this->setError(array( + 'error' => "Server reported an error: $string", + 'errno' => 0, + 'errstr' => '' + )); + return false; + } else { + return true; + } + } + + /** + * Add an error to the internal error store. + * Also display debug output if it's enabled. + * @param $error + * @access protected + */ + protected function setError($error) + { + $this->errors[] = $error; + if ($this->do_debug >= 1) { + echo '
        ';
        +            foreach ($this->errors as $error) {
        +                print_r($error);
        +            }
        +            echo '
        '; + } + } + + /** + * Get an array of error messages, if any. + * @return array + */ + public function getErrors() + { + return $this->errors; + } + + /** + * POP3 connection error handler. + * @param integer $errno + * @param string $errstr + * @param string $errfile + * @param integer $errline + * @access protected + */ + protected function catchWarning($errno, $errstr, $errfile, $errline) + { + $this->setError(array( + 'error' => "Connecting to the POP3 server raised a PHP warning: ", + 'errno' => $errno, + 'errstr' => $errstr, + 'errfile' => $errfile, + 'errline' => $errline + )); + } +} diff --git a/mail/class.smtp.php b/mail/class.smtp.php new file mode 100644 index 0000000..04ced65 --- /dev/null +++ b/mail/class.smtp.php @@ -0,0 +1,1249 @@ + + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2014 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +/** + * PHPMailer RFC821 SMTP email transport class. + * Implements RFC 821 SMTP commands and provides some utility methods for sending mail to an SMTP server. + * @package PHPMailer + * @author Chris Ryan + * @author Marcus Bointon + */ +class SMTP +{ + /** + * The PHPMailer SMTP version number. + * @var string + */ + const VERSION = '5.2.19'; + + /** + * SMTP line break constant. + * @var string + */ + const CRLF = "\r\n"; + + /** + * The SMTP port to use if one is not specified. + * @var integer + */ + const DEFAULT_SMTP_PORT = 25; + + /** + * The maximum line length allowed by RFC 2822 section 2.1.1 + * @var integer + */ + const MAX_LINE_LENGTH = 998; + + /** + * Debug level for no output + */ + const DEBUG_OFF = 0; + + /** + * Debug level to show client -> server messages + */ + const DEBUG_CLIENT = 1; + + /** + * Debug level to show client -> server and server -> client messages + */ + const DEBUG_SERVER = 2; + + /** + * Debug level to show connection status, client -> server and server -> client messages + */ + const DEBUG_CONNECTION = 3; + + /** + * Debug level to show all messages + */ + const DEBUG_LOWLEVEL = 4; + + /** + * The PHPMailer SMTP Version number. + * @var string + * @deprecated Use the `VERSION` constant instead + * @see SMTP::VERSION + */ + public $Version = '5.2.19'; + + /** + * SMTP server port number. + * @var integer + * @deprecated This is only ever used as a default value, so use the `DEFAULT_SMTP_PORT` constant instead + * @see SMTP::DEFAULT_SMTP_PORT + */ + public $SMTP_PORT = 25; + + /** + * SMTP reply line ending. + * @var string + * @deprecated Use the `CRLF` constant instead + * @see SMTP::CRLF + */ + public $CRLF = "\r\n"; + + /** + * Debug output level. + * Options: + * * self::DEBUG_OFF (`0`) No debug output, default + * * self::DEBUG_CLIENT (`1`) Client commands + * * self::DEBUG_SERVER (`2`) Client commands and server responses + * * self::DEBUG_CONNECTION (`3`) As DEBUG_SERVER plus connection status + * * self::DEBUG_LOWLEVEL (`4`) Low-level data output, all messages + * @var integer + */ + public $do_debug = self::DEBUG_OFF; + + /** + * How to handle debug output. + * Options: + * * `echo` Output plain-text as-is, appropriate for CLI + * * `html` Output escaped, line breaks converted to `
        `, appropriate for browser output + * * `error_log` Output to error log as configured in php.ini + * + * Alternatively, you can provide a callable expecting two params: a message string and the debug level: + * + * $smtp->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";}; + * + * @var string|callable + */ + public $Debugoutput = 'echo'; + + /** + * Whether to use VERP. + * @link http://en.wikipedia.org/wiki/Variable_envelope_return_path + * @link http://www.postfix.org/VERP_README.html Info on VERP + * @var boolean + */ + public $do_verp = false; + + /** + * The timeout value for connection, in seconds. + * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2 + * This needs to be quite high to function correctly with hosts using greetdelay as an anti-spam measure. + * @link http://tools.ietf.org/html/rfc2821#section-4.5.3.2 + * @var integer + */ + public $Timeout = 300; + + /** + * How long to wait for commands to complete, in seconds. + * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2 + * @var integer + */ + public $Timelimit = 300; + + /** + * @var array patterns to extract smtp transaction id from smtp reply + * Only first capture group will be use, use non-capturing group to deal with it + * Extend this class to override this property to fulfil your needs. + */ + protected $smtp_transaction_id_patterns = array( + 'exim' => '/[0-9]{3} OK id=(.*)/', + 'sendmail' => '/[0-9]{3} 2.0.0 (.*) Message/', + 'postfix' => '/[0-9]{3} 2.0.0 Ok: queued as (.*)/' + ); + + /** + * The socket for the server connection. + * @var resource + */ + protected $smtp_conn; + + /** + * Error information, if any, for the last SMTP command. + * @var array + */ + protected $error = array( + 'error' => '', + 'detail' => '', + 'smtp_code' => '', + 'smtp_code_ex' => '' + ); + + /** + * The reply the server sent to us for HELO. + * If null, no HELO string has yet been received. + * @var string|null + */ + protected $helo_rply = null; + + /** + * The set of SMTP extensions sent in reply to EHLO command. + * Indexes of the array are extension names. + * Value at index 'HELO' or 'EHLO' (according to command that was sent) + * represents the server name. In case of HELO it is the only element of the array. + * Other values can be boolean TRUE or an array containing extension options. + * If null, no HELO/EHLO string has yet been received. + * @var array|null + */ + protected $server_caps = null; + + /** + * The most recent reply received from the server. + * @var string + */ + protected $last_reply = ''; + + /** + * Output debugging info via a user-selected method. + * @see SMTP::$Debugoutput + * @see SMTP::$do_debug + * @param string $str Debug string to output + * @param integer $level The debug level of this message; see DEBUG_* constants + * @return void + */ + protected function edebug($str, $level = 0) + { + if ($level > $this->do_debug) { + return; + } + //Avoid clash with built-in function names + if (!in_array($this->Debugoutput, array('error_log', 'html', 'echo')) and is_callable($this->Debugoutput)) { + call_user_func($this->Debugoutput, $str, $level); + return; + } + switch ($this->Debugoutput) { + case 'error_log': + //Don't output, just log + error_log($str); + break; + case 'html': + //Cleans up output a bit for a better looking, HTML-safe output + echo htmlentities( + preg_replace('/[\r\n]+/', '', $str), + ENT_QUOTES, + 'UTF-8' + ) + . "
        \n"; + break; + case 'echo': + default: + //Normalize line breaks + $str = preg_replace('/(\r\n|\r|\n)/ms', "\n", $str); + echo gmdate('Y-m-d H:i:s') . "\t" . str_replace( + "\n", + "\n \t ", + trim($str) + )."\n"; + } + } + + /** + * Connect to an SMTP server. + * @param string $host SMTP server IP or host name + * @param integer $port The port number to connect to + * @param integer $timeout How long to wait for the connection to open + * @param array $options An array of options for stream_context_create() + * @access public + * @return boolean + */ + public function connect($host, $port = null, $timeout = 30, $options = array()) + { + static $streamok; + //This is enabled by default since 5.0.0 but some providers disable it + //Check this once and cache the result + if (is_null($streamok)) { + $streamok = function_exists('stream_socket_client'); + } + // Clear errors to avoid confusion + $this->setError(''); + // Make sure we are __not__ connected + if ($this->connected()) { + // Already connected, generate error + $this->setError('Already connected to a server'); + return false; + } + if (empty($port)) { + $port = self::DEFAULT_SMTP_PORT; + } + // Connect to the SMTP server + $this->edebug( + "Connection: opening to $host:$port, timeout=$timeout, options=".var_export($options, true), + self::DEBUG_CONNECTION + ); + $errno = 0; + $errstr = ''; + if ($streamok) { + $socket_context = stream_context_create($options); + set_error_handler(array($this, 'errorHandler')); + $this->smtp_conn = stream_socket_client( + $host . ":" . $port, + $errno, + $errstr, + $timeout, + STREAM_CLIENT_CONNECT, + $socket_context + ); + restore_error_handler(); + } else { + //Fall back to fsockopen which should work in more places, but is missing some features + $this->edebug( + "Connection: stream_socket_client not available, falling back to fsockopen", + self::DEBUG_CONNECTION + ); + set_error_handler(array($this, 'errorHandler')); + $this->smtp_conn = fsockopen( + $host, + $port, + $errno, + $errstr, + $timeout + ); + restore_error_handler(); + } + // Verify we connected properly + if (!is_resource($this->smtp_conn)) { + $this->setError( + 'Failed to connect to server', + $errno, + $errstr + ); + $this->edebug( + 'SMTP ERROR: ' . $this->error['error'] + . ": $errstr ($errno)", + self::DEBUG_CLIENT + ); + return false; + } + $this->edebug('Connection: opened', self::DEBUG_CONNECTION); + // SMTP server can take longer to respond, give longer timeout for first read + // Windows does not have support for this timeout function + if (substr(PHP_OS, 0, 3) != 'WIN') { + $max = ini_get('max_execution_time'); + // Don't bother if unlimited + if ($max != 0 && $timeout > $max) { + @set_time_limit($timeout); + } + stream_set_timeout($this->smtp_conn, $timeout, 0); + } + // Get any announcement + $announce = $this->get_lines(); + $this->edebug('SERVER -> CLIENT: ' . $announce, self::DEBUG_SERVER); + return true; + } + + /** + * Initiate a TLS (encrypted) session. + * @access public + * @return boolean + */ + public function startTLS() + { + if (!$this->sendCommand('STARTTLS', 'STARTTLS', 220)) { + return false; + } + + //Allow the best TLS version(s) we can + $crypto_method = STREAM_CRYPTO_METHOD_TLS_CLIENT; + + //PHP 5.6.7 dropped inclusion of TLS 1.1 and 1.2 in STREAM_CRYPTO_METHOD_TLS_CLIENT + //so add them back in manually if we can + if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) { + $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; + $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT; + } + + // Begin encrypted connection + if (!stream_socket_enable_crypto( + $this->smtp_conn, + true, + $crypto_method + )) { + return false; + } + return true; + } + + /** + * Perform SMTP authentication. + * Must be run after hello(). + * @see hello() + * @param string $username The user name + * @param string $password The password + * @param string $authtype The auth type (PLAIN, LOGIN, NTLM, CRAM-MD5, XOAUTH2) + * @param string $realm The auth realm for NTLM + * @param string $workstation The auth workstation for NTLM + * @param null|OAuth $OAuth An optional OAuth instance (@see PHPMailerOAuth) + * @return bool True if successfully authenticated.* @access public + */ + public function authenticate( + $username, + $password, + $authtype = null, + $realm = '', + $workstation = '', + $OAuth = null + ) { + if (!$this->server_caps) { + $this->setError('Authentication is not allowed before HELO/EHLO'); + return false; + } + + if (array_key_exists('EHLO', $this->server_caps)) { + // SMTP extensions are available. Let's try to find a proper authentication method + + if (!array_key_exists('AUTH', $this->server_caps)) { + $this->setError('Authentication is not allowed at this stage'); + // 'at this stage' means that auth may be allowed after the stage changes + // e.g. after STARTTLS + return false; + } + + self::edebug('Auth method requested: ' . ($authtype ? $authtype : 'UNKNOWN'), self::DEBUG_LOWLEVEL); + self::edebug( + 'Auth methods available on the server: ' . implode(',', $this->server_caps['AUTH']), + self::DEBUG_LOWLEVEL + ); + + if (empty($authtype)) { + foreach (array('CRAM-MD5', 'LOGIN', 'PLAIN', 'NTLM', 'XOAUTH2') as $method) { + if (in_array($method, $this->server_caps['AUTH'])) { + $authtype = $method; + break; + } + } + if (empty($authtype)) { + $this->setError('No supported authentication methods found'); + return false; + } + self::edebug('Auth method selected: '.$authtype, self::DEBUG_LOWLEVEL); + } + + if (!in_array($authtype, $this->server_caps['AUTH'])) { + $this->setError("The requested authentication method \"$authtype\" is not supported by the server"); + return false; + } + } elseif (empty($authtype)) { + $authtype = 'LOGIN'; + } + switch ($authtype) { + case 'PLAIN': + // Start authentication + if (!$this->sendCommand('AUTH', 'AUTH PLAIN', 334)) { + return false; + } + // Send encoded username and password + if (!$this->sendCommand( + 'User & Password', + base64_encode("\0" . $username . "\0" . $password), + 235 + ) + ) { + return false; + } + break; + case 'LOGIN': + // Start authentication + if (!$this->sendCommand('AUTH', 'AUTH LOGIN', 334)) { + return false; + } + if (!$this->sendCommand("Username", base64_encode($username), 334)) { + return false; + } + if (!$this->sendCommand("Password", base64_encode($password), 235)) { + return false; + } + break; + case 'XOAUTH2': + //If the OAuth Instance is not set. Can be a case when PHPMailer is used + //instead of PHPMailerOAuth + if (is_null($OAuth)) { + return false; + } + $oauth = $OAuth->getOauth64(); + + // Start authentication + if (!$this->sendCommand('AUTH', 'AUTH XOAUTH2 ' . $oauth, 235)) { + return false; + } + break; + case 'NTLM': + /* + * ntlm_sasl_client.php + * Bundled with Permission + * + * How to telnet in windows: + * http://technet.microsoft.com/en-us/library/aa995718%28EXCHG.65%29.aspx + * PROTOCOL Docs http://curl.haxx.se/rfc/ntlm.html#ntlmSmtpAuthentication + */ + require_once 'extras/ntlm_sasl_client.php'; + $temp = new stdClass; + $ntlm_client = new ntlm_sasl_client_class; + //Check that functions are available + if (!$ntlm_client->initialize($temp)) { + $this->setError($temp->error); + $this->edebug( + 'You need to enable some modules in your php.ini file: ' + . $this->error['error'], + self::DEBUG_CLIENT + ); + return false; + } + //msg1 + $msg1 = $ntlm_client->typeMsg1($realm, $workstation); //msg1 + + if (!$this->sendCommand( + 'AUTH NTLM', + 'AUTH NTLM ' . base64_encode($msg1), + 334 + ) + ) { + return false; + } + //Though 0 based, there is a white space after the 3 digit number + //msg2 + $challenge = substr($this->last_reply, 3); + $challenge = base64_decode($challenge); + $ntlm_res = $ntlm_client->NTLMResponse( + substr($challenge, 24, 8), + $password + ); + //msg3 + $msg3 = $ntlm_client->typeMsg3( + $ntlm_res, + $username, + $realm, + $workstation + ); + // send encoded username + return $this->sendCommand('Username', base64_encode($msg3), 235); + case 'CRAM-MD5': + // Start authentication + if (!$this->sendCommand('AUTH CRAM-MD5', 'AUTH CRAM-MD5', 334)) { + return false; + } + // Get the challenge + $challenge = base64_decode(substr($this->last_reply, 4)); + + // Build the response + $response = $username . ' ' . $this->hmac($challenge, $password); + + // send encoded credentials + return $this->sendCommand('Username', base64_encode($response), 235); + default: + $this->setError("Authentication method \"$authtype\" is not supported"); + return false; + } + return true; + } + + /** + * Calculate an MD5 HMAC hash. + * Works like hash_hmac('md5', $data, $key) + * in case that function is not available + * @param string $data The data to hash + * @param string $key The key to hash with + * @access protected + * @return string + */ + protected function hmac($data, $key) + { + if (function_exists('hash_hmac')) { + return hash_hmac('md5', $data, $key); + } + + // The following borrowed from + // http://php.net/manual/en/function.mhash.php#27225 + + // RFC 2104 HMAC implementation for php. + // Creates an md5 HMAC. + // Eliminates the need to install mhash to compute a HMAC + // by Lance Rushing + + $bytelen = 64; // byte length for md5 + if (strlen($key) > $bytelen) { + $key = pack('H*', md5($key)); + } + $key = str_pad($key, $bytelen, chr(0x00)); + $ipad = str_pad('', $bytelen, chr(0x36)); + $opad = str_pad('', $bytelen, chr(0x5c)); + $k_ipad = $key ^ $ipad; + $k_opad = $key ^ $opad; + + return md5($k_opad . pack('H*', md5($k_ipad . $data))); + } + + /** + * Check connection state. + * @access public + * @return boolean True if connected. + */ + public function connected() + { + if (is_resource($this->smtp_conn)) { + $sock_status = stream_get_meta_data($this->smtp_conn); + if ($sock_status['eof']) { + // The socket is valid but we are not connected + $this->edebug( + 'SMTP NOTICE: EOF caught while checking if connected', + self::DEBUG_CLIENT + ); + $this->close(); + return false; + } + return true; // everything looks good + } + return false; + } + + /** + * Close the socket and clean up the state of the class. + * Don't use this function without first trying to use QUIT. + * @see quit() + * @access public + * @return void + */ + public function close() + { + $this->setError(''); + $this->server_caps = null; + $this->helo_rply = null; + if (is_resource($this->smtp_conn)) { + // close the connection and cleanup + fclose($this->smtp_conn); + $this->smtp_conn = null; //Makes for cleaner serialization + $this->edebug('Connection: closed', self::DEBUG_CONNECTION); + } + } + + /** + * Send an SMTP DATA command. + * Issues a data command and sends the msg_data to the server, + * finializing the mail transaction. $msg_data is the message + * that is to be send with the headers. Each header needs to be + * on a single line followed by a with the message headers + * and the message body being separated by and additional . + * Implements rfc 821: DATA + * @param string $msg_data Message data to send + * @access public + * @return boolean + */ + public function data($msg_data) + { + //This will use the standard timelimit + if (!$this->sendCommand('DATA', 'DATA', 354)) { + return false; + } + + /* The server is ready to accept data! + * According to rfc821 we should not send more than 1000 characters on a single line (including the CRLF) + * so we will break the data up into lines by \r and/or \n then if needed we will break each of those into + * smaller lines to fit within the limit. + * We will also look for lines that start with a '.' and prepend an additional '.'. + * NOTE: this does not count towards line-length limit. + */ + + // Normalize line breaks before exploding + $lines = explode("\n", str_replace(array("\r\n", "\r"), "\n", $msg_data)); + + /* To distinguish between a complete RFC822 message and a plain message body, we check if the first field + * of the first line (':' separated) does not contain a space then it _should_ be a header and we will + * process all lines before a blank line as headers. + */ + + $field = substr($lines[0], 0, strpos($lines[0], ':')); + $in_headers = false; + if (!empty($field) && strpos($field, ' ') === false) { + $in_headers = true; + } + + foreach ($lines as $line) { + $lines_out = array(); + if ($in_headers and $line == '') { + $in_headers = false; + } + //Break this line up into several smaller lines if it's too long + //Micro-optimisation: isset($str[$len]) is faster than (strlen($str) > $len), + while (isset($line[self::MAX_LINE_LENGTH])) { + //Working backwards, try to find a space within the last MAX_LINE_LENGTH chars of the line to break on + //so as to avoid breaking in the middle of a word + $pos = strrpos(substr($line, 0, self::MAX_LINE_LENGTH), ' '); + //Deliberately matches both false and 0 + if (!$pos) { + //No nice break found, add a hard break + $pos = self::MAX_LINE_LENGTH - 1; + $lines_out[] = substr($line, 0, $pos); + $line = substr($line, $pos); + } else { + //Break at the found point + $lines_out[] = substr($line, 0, $pos); + //Move along by the amount we dealt with + $line = substr($line, $pos + 1); + } + //If processing headers add a LWSP-char to the front of new line RFC822 section 3.1.1 + if ($in_headers) { + $line = "\t" . $line; + } + } + $lines_out[] = $line; + + //Send the lines to the server + foreach ($lines_out as $line_out) { + //RFC2821 section 4.5.2 + if (!empty($line_out) and $line_out[0] == '.') { + $line_out = '.' . $line_out; + } + $this->client_send($line_out . self::CRLF); + } + } + + //Message data has been sent, complete the command + //Increase timelimit for end of DATA command + $savetimelimit = $this->Timelimit; + $this->Timelimit = $this->Timelimit * 2; + $result = $this->sendCommand('DATA END', '.', 250); + //Restore timelimit + $this->Timelimit = $savetimelimit; + return $result; + } + + /** + * Send an SMTP HELO or EHLO command. + * Used to identify the sending server to the receiving server. + * This makes sure that client and server are in a known state. + * Implements RFC 821: HELO + * and RFC 2821 EHLO. + * @param string $host The host name or IP to connect to + * @access public + * @return boolean + */ + public function hello($host = '') + { + //Try extended hello first (RFC 2821) + return (boolean)($this->sendHello('EHLO', $host) or $this->sendHello('HELO', $host)); + } + + /** + * Send an SMTP HELO or EHLO command. + * Low-level implementation used by hello() + * @see hello() + * @param string $hello The HELO string + * @param string $host The hostname to say we are + * @access protected + * @return boolean + */ + protected function sendHello($hello, $host) + { + $noerror = $this->sendCommand($hello, $hello . ' ' . $host, 250); + $this->helo_rply = $this->last_reply; + if ($noerror) { + $this->parseHelloFields($hello); + } else { + $this->server_caps = null; + } + return $noerror; + } + + /** + * Parse a reply to HELO/EHLO command to discover server extensions. + * In case of HELO, the only parameter that can be discovered is a server name. + * @access protected + * @param string $type - 'HELO' or 'EHLO' + */ + protected function parseHelloFields($type) + { + $this->server_caps = array(); + $lines = explode("\n", $this->helo_rply); + + foreach ($lines as $n => $s) { + //First 4 chars contain response code followed by - or space + $s = trim(substr($s, 4)); + if (empty($s)) { + continue; + } + $fields = explode(' ', $s); + if (!empty($fields)) { + if (!$n) { + $name = $type; + $fields = $fields[0]; + } else { + $name = array_shift($fields); + switch ($name) { + case 'SIZE': + $fields = ($fields ? $fields[0] : 0); + break; + case 'AUTH': + if (!is_array($fields)) { + $fields = array(); + } + break; + default: + $fields = true; + } + } + $this->server_caps[$name] = $fields; + } + } + } + + /** + * Send an SMTP MAIL command. + * Starts a mail transaction from the email address specified in + * $from. Returns true if successful or false otherwise. If True + * the mail transaction is started and then one or more recipient + * commands may be called followed by a data command. + * Implements rfc 821: MAIL FROM: + * @param string $from Source address of this message + * @access public + * @return boolean + */ + public function mail($from) + { + $useVerp = ($this->do_verp ? ' XVERP' : ''); + return $this->sendCommand( + 'MAIL FROM', + 'MAIL FROM:<' . $from . '>' . $useVerp, + 250 + ); + } + + /** + * Send an SMTP QUIT command. + * Closes the socket if there is no error or the $close_on_error argument is true. + * Implements from rfc 821: QUIT + * @param boolean $close_on_error Should the connection close if an error occurs? + * @access public + * @return boolean + */ + public function quit($close_on_error = true) + { + $noerror = $this->sendCommand('QUIT', 'QUIT', 221); + $err = $this->error; //Save any error + if ($noerror or $close_on_error) { + $this->close(); + $this->error = $err; //Restore any error from the quit command + } + return $noerror; + } + + /** + * Send an SMTP RCPT command. + * Sets the TO argument to $toaddr. + * Returns true if the recipient was accepted false if it was rejected. + * Implements from rfc 821: RCPT TO: + * @param string $address The address the message is being sent to + * @access public + * @return boolean + */ + public function recipient($address) + { + return $this->sendCommand( + 'RCPT TO', + 'RCPT TO:<' . $address . '>', + array(250, 251) + ); + } + + /** + * Send an SMTP RSET command. + * Abort any transaction that is currently in progress. + * Implements rfc 821: RSET + * @access public + * @return boolean True on success. + */ + public function reset() + { + return $this->sendCommand('RSET', 'RSET', 250); + } + + /** + * Send a command to an SMTP server and check its return code. + * @param string $command The command name - not sent to the server + * @param string $commandstring The actual command to send + * @param integer|array $expect One or more expected integer success codes + * @access protected + * @return boolean True on success. + */ + protected function sendCommand($command, $commandstring, $expect) + { + if (!$this->connected()) { + $this->setError("Called $command without being connected"); + return false; + } + //Reject line breaks in all commands + if (strpos($commandstring, "\n") !== false or strpos($commandstring, "\r") !== false) { + $this->setError("Command '$command' contained line breaks"); + return false; + } + $this->client_send($commandstring . self::CRLF); + + $this->last_reply = $this->get_lines(); + // Fetch SMTP code and possible error code explanation + $matches = array(); + if (preg_match("/^([0-9]{3})[ -](?:([0-9]\\.[0-9]\\.[0-9]) )?/", $this->last_reply, $matches)) { + $code = $matches[1]; + $code_ex = (count($matches) > 2 ? $matches[2] : null); + // Cut off error code from each response line + $detail = preg_replace( + "/{$code}[ -]".($code_ex ? str_replace('.', '\\.', $code_ex).' ' : '')."/m", + '', + $this->last_reply + ); + } else { + // Fall back to simple parsing if regex fails + $code = substr($this->last_reply, 0, 3); + $code_ex = null; + $detail = substr($this->last_reply, 4); + } + + $this->edebug('SERVER -> CLIENT: ' . $this->last_reply, self::DEBUG_SERVER); + + if (!in_array($code, (array)$expect)) { + $this->setError( + "$command command failed", + $detail, + $code, + $code_ex + ); + $this->edebug( + 'SMTP ERROR: ' . $this->error['error'] . ': ' . $this->last_reply, + self::DEBUG_CLIENT + ); + return false; + } + + $this->setError(''); + return true; + } + + /** + * Send an SMTP SAML command. + * Starts a mail transaction from the email address specified in $from. + * Returns true if successful or false otherwise. If True + * the mail transaction is started and then one or more recipient + * commands may be called followed by a data command. This command + * will send the message to the users terminal if they are logged + * in and send them an email. + * Implements rfc 821: SAML FROM: + * @param string $from The address the message is from + * @access public + * @return boolean + */ + public function sendAndMail($from) + { + return $this->sendCommand('SAML', "SAML FROM:$from", 250); + } + + /** + * Send an SMTP VRFY command. + * @param string $name The name to verify + * @access public + * @return boolean + */ + public function verify($name) + { + return $this->sendCommand('VRFY', "VRFY $name", array(250, 251)); + } + + /** + * Send an SMTP NOOP command. + * Used to keep keep-alives alive, doesn't actually do anything + * @access public + * @return boolean + */ + public function noop() + { + return $this->sendCommand('NOOP', 'NOOP', 250); + } + + /** + * Send an SMTP TURN command. + * This is an optional command for SMTP that this class does not support. + * This method is here to make the RFC821 Definition complete for this class + * and _may_ be implemented in future + * Implements from rfc 821: TURN + * @access public + * @return boolean + */ + public function turn() + { + $this->setError('The SMTP TURN command is not implemented'); + $this->edebug('SMTP NOTICE: ' . $this->error['error'], self::DEBUG_CLIENT); + return false; + } + + /** + * Send raw data to the server. + * @param string $data The data to send + * @access public + * @return integer|boolean The number of bytes sent to the server or false on error + */ + public function client_send($data) + { + $this->edebug("CLIENT -> SERVER: $data", self::DEBUG_CLIENT); + return fwrite($this->smtp_conn, $data); + } + + /** + * Get the latest error. + * @access public + * @return array + */ + public function getError() + { + return $this->error; + } + + /** + * Get SMTP extensions available on the server + * @access public + * @return array|null + */ + public function getServerExtList() + { + return $this->server_caps; + } + + /** + * A multipurpose method + * The method works in three ways, dependent on argument value and current state + * 1. HELO/EHLO was not sent - returns null and set up $this->error + * 2. HELO was sent + * $name = 'HELO': returns server name + * $name = 'EHLO': returns boolean false + * $name = any string: returns null and set up $this->error + * 3. EHLO was sent + * $name = 'HELO'|'EHLO': returns server name + * $name = any string: if extension $name exists, returns boolean True + * or its options. Otherwise returns boolean False + * In other words, one can use this method to detect 3 conditions: + * - null returned: handshake was not or we don't know about ext (refer to $this->error) + * - false returned: the requested feature exactly not exists + * - positive value returned: the requested feature exists + * @param string $name Name of SMTP extension or 'HELO'|'EHLO' + * @return mixed + */ + public function getServerExt($name) + { + if (!$this->server_caps) { + $this->setError('No HELO/EHLO was sent'); + return null; + } + + // the tight logic knot ;) + if (!array_key_exists($name, $this->server_caps)) { + if ($name == 'HELO') { + return $this->server_caps['EHLO']; + } + if ($name == 'EHLO' || array_key_exists('EHLO', $this->server_caps)) { + return false; + } + $this->setError('HELO handshake was used. Client knows nothing about server extensions'); + return null; + } + + return $this->server_caps[$name]; + } + + /** + * Get the last reply from the server. + * @access public + * @return string + */ + public function getLastReply() + { + return $this->last_reply; + } + + /** + * Read the SMTP server's response. + * Either before eof or socket timeout occurs on the operation. + * With SMTP we can tell if we have more lines to read if the + * 4th character is '-' symbol. If it is a space then we don't + * need to read anything else. + * @access protected + * @return string + */ + protected function get_lines() + { + // If the connection is bad, give up straight away + if (!is_resource($this->smtp_conn)) { + return ''; + } + $data = ''; + $endtime = 0; + stream_set_timeout($this->smtp_conn, $this->Timeout); + if ($this->Timelimit > 0) { + $endtime = time() + $this->Timelimit; + } + while (is_resource($this->smtp_conn) && !feof($this->smtp_conn)) { + $str = @fgets($this->smtp_conn, 515); + $this->edebug("SMTP -> get_lines(): \$data is \"$data\"", self::DEBUG_LOWLEVEL); + $this->edebug("SMTP -> get_lines(): \$str is \"$str\"", self::DEBUG_LOWLEVEL); + $data .= $str; + // If 4th character is a space, we are done reading, break the loop, micro-optimisation over strlen + if ((isset($str[3]) and $str[3] == ' ')) { + break; + } + // Timed-out? Log and break + $info = stream_get_meta_data($this->smtp_conn); + if ($info['timed_out']) { + $this->edebug( + 'SMTP -> get_lines(): timed-out (' . $this->Timeout . ' sec)', + self::DEBUG_LOWLEVEL + ); + break; + } + // Now check if reads took too long + if ($endtime and time() > $endtime) { + $this->edebug( + 'SMTP -> get_lines(): timelimit reached ('. + $this->Timelimit . ' sec)', + self::DEBUG_LOWLEVEL + ); + break; + } + } + return $data; + } + + /** + * Enable or disable VERP address generation. + * @param boolean $enabled + */ + public function setVerp($enabled = false) + { + $this->do_verp = $enabled; + } + + /** + * Get VERP address generation mode. + * @return boolean + */ + public function getVerp() + { + return $this->do_verp; + } + + /** + * Set error messages and codes. + * @param string $message The error message + * @param string $detail Further detail on the error + * @param string $smtp_code An associated SMTP error code + * @param string $smtp_code_ex Extended SMTP code + */ + protected function setError($message, $detail = '', $smtp_code = '', $smtp_code_ex = '') + { + $this->error = array( + 'error' => $message, + 'detail' => $detail, + 'smtp_code' => $smtp_code, + 'smtp_code_ex' => $smtp_code_ex + ); + } + + /** + * Set debug output method. + * @param string|callable $method The name of the mechanism to use for debugging output, or a callable to handle it. + */ + public function setDebugOutput($method = 'echo') + { + $this->Debugoutput = $method; + } + + /** + * Get debug output method. + * @return string + */ + public function getDebugOutput() + { + return $this->Debugoutput; + } + + /** + * Set debug output level. + * @param integer $level + */ + public function setDebugLevel($level = 0) + { + $this->do_debug = $level; + } + + /** + * Get debug output level. + * @return integer + */ + public function getDebugLevel() + { + return $this->do_debug; + } + + /** + * Set SMTP timeout. + * @param integer $timeout + */ + public function setTimeout($timeout = 0) + { + $this->Timeout = $timeout; + } + + /** + * Get SMTP timeout. + * @return integer + */ + public function getTimeout() + { + return $this->Timeout; + } + + /** + * Reports an error number and string. + * @param integer $errno The error number returned by PHP. + * @param string $errmsg The error message returned by PHP. + */ + protected function errorHandler($errno, $errmsg) + { + $notice = 'Connection: Failed to connect to server.'; + $this->setError( + $notice, + $errno, + $errmsg + ); + $this->edebug( + $notice . ' Error number ' . $errno . '. "Error notice: ' . $errmsg, + self::DEBUG_CONNECTION + ); + } + + /** + * Will return the ID of the last smtp transaction based on a list of patterns provided + * in SMTP::$smtp_transaction_id_patterns. + * If no reply has been received yet, it will return null. + * If no pattern has been matched, it will return false. + * @return bool|null|string + */ + public function getLastTransactionID() + { + $reply = $this->getLastReply(); + + if (empty($reply)) { + return null; + } + + foreach($this->smtp_transaction_id_patterns as $smtp_transaction_id_pattern) { + if(preg_match($smtp_transaction_id_pattern, $reply, $matches)) { + return $matches[1]; + } + } + + return false; + } +} diff --git a/mail/index.php b/mail/index.php new file mode 100644 index 0000000..e69de29 diff --git a/mail/mail.php b/mail/mail.php new file mode 100644 index 0000000..88d8519 --- /dev/null +++ b/mail/mail.php @@ -0,0 +1,81 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ +error_reporting(1); + +function default_mail($admin_mail, $admin_name, $sent_mail, $subject, $body) +{ + // Functions + require_once('class.phpmailer.php'); + + $mail = new PHPMailer(); + + $body = stripslashes ($body); + + $mail->AddReplyTo($admin_mail, $admin_name); + + $mail->SetFrom($admin_mail, $admin_name); + + $mail->AddReplyTo($admin_mail, $admin_name); + + $address = $sent_mail; + + $mail->AddAddress($address); + + $mail->Subject = $subject; + + $mail->MsgHTML($body); + + $mail->AltBody = "To view the message, please use an HTML compatible viewer"; + + if (!$mail->Send()) { + $msg = "Mailer Error: " . $mail->ErrorInfo; + } else { + $msg = "Message has been sent"; + } + return $msg; + +} + +function smtp_mail($smtp_host, $smtp_port = 587, $smtp_auth, $smtp_user, $smtp_pass, $smtp_sec = 'tls', $admin_mail, $admin_name, $sent_mail, $subject, $body) +{ + require_once('class.phpmailer.php'); + require_once('class.smtp.php'); + $mail = new PHPMailer; + $mail->IsSMTP(); // Set mailer to use SMTP + $mail->Host = $smtp_host; // Specify main and backup server + $mail->Port = $smtp_port; // Set the SMTP port + $mail->SMTPAuth = $smtp_auth; // Enable SMTP authentication + $mail->Username = $smtp_user; // SMTP username + $mail->Password = $smtp_pass; // SMTP password + $mail->SMTPSecure = $smtp_sec; // Enable encryption, 'ssl' also accepted + + $mail->From = $admin_mail; + $mail->FromName = $admin_name; + $mail->AddAddress($sent_mail); // Add a recipient + + $mail->IsHTML(true); // Set email format to HTML + + $mail->Subject = $subject; + $mail->Body = $body; + $mail->AltBody = "To view this message, please use an HTML compatible viewer"; + + if (!$mail->Send()) { + $msg = 'Mailer Error: ' . $mail->ErrorInfo; + } else { + $msg = 'Message has been sent'; + } + return $msg; +} +?> diff --git a/main.php b/main.php new file mode 100644 index 0000000..01c6ffa --- /dev/null +++ b/main.php @@ -0,0 +1,402 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ + +session_start(); + +$directory = 'install'; + +if (file_exists($directory)) { + header("Location: install"); + exit(); +} + +// Required functions +require_once('config.php'); +require_once('includes/captcha.php'); +require_once('includes/functions.php'); + +// PHP <5.5 compatibility +require_once('includes/password.php'); + +// UTF-8 +header('Content-Type: text/html; charset=utf-8'); + +// Database Connection +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); +if (mysqli_connect_errno()) { + die("Unable to connect to database"); +} + +// Get site info +$query = "SELECT * FROM site_info"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $title = Trim($row['title']); + $des = Trim($row['des']); + $baseurl = Trim($row['baseurl']); + $keyword = Trim($row['keyword']); + $site_name = Trim($row['site_name']); + $email = Trim($row['email']); + $twit = Trim($row['twit']); + $face = Trim($row['face']); + $gplus = Trim($row['gplus']); + $ga = Trim($row['ga']); + $additional_scripts = Trim($row['additional_scripts']); +} + +// Set theme and language +$query = "SELECT * FROM interface"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $default_lang = Trim($row['lang']); + $default_theme = Trim($row['theme']); +} +require_once("langs/$default_lang"); + +// Current date & user IP +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; +$data_ip = file_get_contents('tmp/temp.tdata'); + +// Ads +$query = "SELECT * FROM ads WHERE id='1'"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $text_ads = Trim($row['text_ads']); + $ads_1 = Trim($row['ads_1']); + $ads_2 = Trim($row['ads_2']); +} + +// Sitemap +$query = "Select * From sitemap_options WHERE id='1'"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $priority = $row['priority']; + $changefreq = $row['changefreq']; +} + +// Captcha +$query = "SELECT * FROM captcha where id='1'"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $color = Trim($row['color']); + $mode = Trim($row['mode']); + $mul = Trim($row['mul']); + $allowed = Trim($row['allowed']); + $cap_e = Trim($row['cap_e']); + $recaptcha_sitekey = Trim($row['recaptcha_sitekey']); + $recaptcha_secretkey = Trim($row['recaptcha_secretkey']); +} +if ($_SERVER['REQUEST_METHOD'] == 'POST') { +} else { + if ($cap_e == "on") { + if ($mode == "reCAPTCHA") { + $_SESSION['captcha_mode'] = "recaptcha"; + $_SESSION['captcha'] = $recaptcha_sitekey; + } else { + $_SESSION['captcha_mode'] = "internal"; + $_SESSION['captcha'] = captcha($color, $mode, $mul, $allowed); + } + } else { + $_SESSION['captcha_mode'] = "none"; + } +} + +// Check if IP is banned +if ( is_banned($con, $ip) ) die($lang['banned']); // "You have been banned from ".$site_name; + +// Site permissions +$query = "SELECT * FROM site_permissions where id='1'"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $disableguest = Trim($row['disableguest']); + $siteprivate = Trim($row['siteprivate']); +} + +if ($_SERVER['REQUEST_METHOD'] == 'POST') { +} else { + if ($disableguest == "on") { + $noguests = "on"; + } + if ($siteprivate =="on") { + $privatesite = "on"; + } + if (isset($_SESSION['username'])) { + $noguests = "off"; + } +} + +// Escape from quotes +if (get_magic_quotes_gpc()) { + function callback_stripslashes(&$val, $name) + { + if (get_magic_quotes_gpc()) + $val = stripslashes($val); + } + if (count($_GET)) + array_walk($_GET, 'callback_stripslashes'); + if (count($_POST)) + array_walk($_POST, 'callback_stripslashes'); + if (count($_COOKIE)) + array_walk($_COOKIE, 'callback_stripslashes'); +} + +// Logout +if (isset($_GET['logout'])) { + header('Location: ' . $_SERVER['HTTP_REFERER']); + unset($_SESSION['token']); + unset($_SESSION['oauth_uid']); + unset($_SESSION['username']); + unset($_SESSION['pic']); + session_destroy(); +} + +// Page views +$query = "SELECT @last_id := MAX(id) FROM page_view"; + +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_id = $row['@last_id := MAX(id)']; +} + +$query = "SELECT * FROM page_view WHERE id=" . Trim($last_id); +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_date = $row['date']; +} + +if ($last_date == $date) { + if (str_contains($data_ip, $ip)) { + $query = "SELECT * FROM page_view WHERE id=" . Trim($last_id); + $result = mysqli_query($con, $query); + + while ($row = mysqli_fetch_array($result)) { + $last_tpage = Trim($row['tpage']); + } + $last_tpage = $last_tpage + 1; + + // IP already exists, Update view count + $query = "UPDATE page_view SET tpage=$last_tpage WHERE id=" . Trim($last_id); + mysqli_query($con, $query); + } else { + $query = "SELECT * FROM page_view WHERE id=" . Trim($last_id); + $result = mysqli_query($con, $query); + + while ($row = mysqli_fetch_array($result)) { + $last_tpage = Trim($row['tpage']); + $last_tvisit = Trim($row['tvisit']); + } + $last_tpage = $last_tpage + 1; + $last_tvisit = $last_tvisit + 1; + + // Update both tpage and tvisit. + $query = "UPDATE page_view SET tpage=$last_tpage,tvisit=$last_tvisit WHERE id=" . Trim($last_id); + mysqli_query($con, $query); + file_put_contents('tmp/temp.tdata', $data_ip . "\r\n" . $ip); + } +} else { + // Delete the file and clear data_ip + unlink("tmp/temp.tdata"); + $data_ip = ""; + + // New date is created + $query = "INSERT INTO page_view (date,tpage,tvisit) VALUES ('$date','1','1')"; + mysqli_query($con, $query); + + // Update the IP + file_put_contents('tmp/temp.tdata', $data_ip . "\r\n" . $ip); + +} + +// POST Handler +if ($_SERVER['REQUEST_METHOD'] == 'POST') { + // Check if fields are empty + if (empty($_POST["paste_data"])) { + $error = $lang['empty_paste']; + goto OutPut; + exit; + } + + // Check if fields are only white space + if (trim($_POST["paste_data"]) == '') { + $error = $lang['empty_paste']; + goto OutPut; + exit; + } + + // Set our limits + if (mb_strlen($_POST["paste_data"], '8bit') > 1024 * 1024 * $pastelimit) { + $error = $lang['large_paste']; + goto OutPut; + exit; + } + + // Check POST data status + if (isset($_POST['title']) And isset($_POST['paste_data'])) { + if ($cap_e == "on" && !isset($_SESSION['username'])) { + if ($mode == "reCAPTCHA") { + $response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$recaptcha_secretkey."&response=".$_POST['g-recaptcha-response']); + $response = json_decode($response, true); + if ( $response["success"] == false ) { + // reCAPTCHA Errors + switch( $response["error-codes"][0] ) { + case "missing-input-response": + $error = $lang['missing-input-response']; + break; + case "missing-input-secret": + $error = $lang['missing-input-secret']; + break; + case "invalid-input-response": + $error = $lang['missing-input-response']; + break; + case "invalid-input-secret": + $error = $lang['invalid-input-secret']; + break; + } + goto OutPut; + } + } else { + $scode = strtolower(htmlentities(Trim($_POST['scode']))); + $cap_code = strtolower($_SESSION['captcha']['code']); + if ($cap_code == $scode) { + } else { + $error = $lang['image_wrong']; // Wrong captcha. + goto OutPut; + } + } + } + + $p_title = Trim(htmlspecialchars($_POST['title'])); + if (strlen($p_title)==0) $p_title='Untitled'; + $p_content = htmlspecialchars($_POST['paste_data']); + $p_visible = Trim(htmlspecialchars($_POST['visibility'])); + $p_code = Trim(htmlspecialchars($_POST['format'])); + $p_expiry = Trim(htmlspecialchars($_POST['paste_expire_date'])); + $p_password = $_POST['pass']; + if ($p_password == "" || $p_password == null) { + $p_password = "NONE"; + } else { + $p_password = password_hash($p_password, PASSWORD_DEFAULT); + } + $p_encrypt = Trim(htmlspecialchars($_POST['encrypted'])); + + if ($p_encrypt == "" || $p_encrypt == null) { + $p_encrypt = "0"; + } else { + // Encrypt option + $p_encrypt = "1"; + $p_content = encrypt($p_content); + } + + if (isset($_SESSION['token'])) { + $p_member = Trim($_SESSION['username']); + } else { + $p_member = "Guest"; + } + // Set expiry time + switch ($p_expiry) { + case '10M': + $expires = mktime(date("H"), date("i") + "10", date("s"), date("n"), date("j"), date("Y")); + break; + case '1H': + $expires = mktime(date("H") + "1", date("i"), date("s"), date("n"), date("j"), date("Y")); + case '1D': + $expires = mktime(date("H"), date("i"), date("s"), date("n"), date("j") + "1", date("Y")); + break; + case '1W': + $expires = mktime(date("H"), date("i"), date("s"), date("n"), date("j") + "7", date("Y")); + break; + case '2W': + $expires = mktime(date("H"), date("i"), date("s"), date("n"), date("j") + "14", date("Y")); + break; + case '1M': + $expires = mktime(date("H"), date("i"), date("s"), date("n") + "1", date("j"), date("Y")); + break; + case 'self': + $expires = "SELF"; + break; + case 'N': + $expires = "NULL"; + break; + default: + $expires = "NULL"; + break; + } + $p_title = mysqli_real_escape_string($con, $p_title); + $p_content = mysqli_real_escape_string($con, $p_content); + $p_date = date('jS F Y h:i:s A'); + $date = date('jS F Y'); + $now_time = mktime(date("H"), date("i"), date("s"), date("n"), date("j"), date("Y")); + // Edit existing paste or create new? + if ( isset($_POST['edit'] ) ) { + $edit_paste_id = $_POST['paste_id']; + $query = "UPDATE pastes SET title='$p_title',content='$p_content',visible='$p_visible',code='$p_code',expiry='$expires',password='$p_password',encrypt='$p_encrypt',member='$p_member',date='$p_date',ip='$ip' WHERE id = '$edit_paste_id'"; + } else { + $query = "INSERT INTO pastes (title,content,visible,code,expiry,password,encrypt,member,date,ip,now_time,views,s_date) VALUES + ('$p_title','$p_content','$p_visible','$p_code','$expires','$p_password','$p_encrypt','$p_member','$p_date','$ip','$now_time','0','$date')"; + } + $result = mysqli_query($con, $query); + if (mysqli_error($con)) { + $error = $lang['paste_db_error']; // "Unable to post the paste on database"; + } else { + $query = "SELECT @last_id := MAX(id) FROM pastes"; + $result = mysqli_query($con, $query); + while ($row = mysqli_fetch_array($result)) { + $paste_id = $row['@last_id := MAX(id)']; + } + $success = $paste_id; + if ($p_visible == '0') { + addToSitemap($paste_id, $priority, $changefreq, $mod_rewrite); + } + } + + } else { + $error = $lang['error']; // "Something went wrong"; + } + + // Redirect to paste on successful entry, or on successful edit redirect back to edited paste + if ( isset( $success ) ) { + if ( $mod_rewrite == '1' ) { + if ( isset( $_POST['edit'] ) ) { + $paste_url = "$edit_paste_id"; + } else { + $paste_url = "$success"; + } + } else { + if ( $_POST['edit'] ) { + $paste_url = "paste.php?id=$edit_paste_id"; + } else { + $paste_url = "paste.php?id=$success"; + } + } + header("Location: ".$paste_url.""); + } + +} + +OutPut: +// Theme +require_once('theme/' . $default_theme . '/header.php'); +require_once('theme/' . $default_theme . '/main.php'); +require_once('theme/' . $default_theme . '/footer.php'); +?> diff --git a/oauth.php b/oauth.php new file mode 100644 index 0000000..1ed5e9a --- /dev/null +++ b/oauth.php @@ -0,0 +1,107 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ +session_start(); + +// Required functions +require_once('config.php'); +require_once('includes/functions.php'); + +// Current date & user IP +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; + +// Database Connection +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); +if (mysqli_connect_errno()) { + die("Unable to connect to database"); +} +// Get site info +$query = "SELECT * FROM site_info"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $title = Trim($row['title']); + $des = Trim($row['des']); + $baseurl = Trim($row['baseurl']); + $keyword = Trim($row['keyword']); + $site_name = Trim($row['site_name']); + $email = Trim($row['email']); + $twit = Trim($row['twit']); + $face = Trim($row['face']); + $gplus = Trim($row['gplus']); + $ga = Trim($row['ga']); + $additional_scripts = Trim($row['additional_scripts']); +} + +// Set theme and language +$query = "SELECT * FROM interface"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $default_lang = Trim($row['lang']); + $default_theme = Trim($row['theme']); +} + +require_once("langs/$default_lang"); + +// Page title +$p_title = $lang['login/register']; // "Login/Register"; + +if (isset($_GET['new_user'])) { + $new_user = 1; +} + +$username = $_SESSION['username']; + +// POST Handler +if ($_SERVER['REQUEST_METHOD'] == 'POST') { + if (isset($_POST['user_change'])) { + $new_username = htmlentities(Trim($_POST['new_username'])); + if ($new_username == "" || $new_username == null) { + $error = $lang['usernotvalid']; //"Username not vaild"; + } else { + $res = isValidUsername($new_username); + if ($res == '1') { + $query = "SELECT * FROM users WHERE username='$new_username'"; + $result = mysqli_query($con, $query); + if (mysqli_num_rows($result) > 0) { + $error = $lang['userexists']; //"Username already taken"; + } else { + $client_id = Trim($_SESSION['oauth_uid']); + $query = "UPDATE users SET username='$new_username' WHERE oauth_uid='$client_id'"; + mysqli_query($con, $query); + if (mysqli_error($con)) { + $error = $lang['databaseerror']; // "Unable to access database."; + } else { + $success = $lang['userchanged']; //"Username changed successfully"; + unset($_SESSION['username']); + $_SESSION['username'] = $new_username; + } + } + } else { + $error = $lang['usernotvalid']; //"Username not vaild"; + $username = Trim($_SESSION['username']); + goto OutPut; + } + } + } +} + +OutPut: +// Theme +require_once('theme/' . $default_theme . '/header.php'); +require_once('theme/' . $default_theme . '/oauth.php'); +require_once('theme/' . $default_theme . '/footer.php'); +?> \ No newline at end of file diff --git a/oauth/Google/Auth/Abstract.php b/oauth/Google/Auth/Abstract.php new file mode 100644 index 0000000..0832df3 --- /dev/null +++ b/oauth/Google/Auth/Abstract.php @@ -0,0 +1,35 @@ + + * + */ +abstract class Google_Auth_Abstract +{ + /** + * An utility function that first calls $this->auth->sign($request) and then + * executes makeRequest() on that signed request. Used for when a request + * should be authenticated + * @param Google_Http_Request $request + * @return Google_Http_Request $request + */ + abstract public function authenticatedRequest(Google_Http_Request $request); + abstract public function sign(Google_Http_Request $request); +} diff --git a/oauth/Google/Auth/AppIdentity.php b/oauth/Google/Auth/AppIdentity.php new file mode 100644 index 0000000..0be5917 --- /dev/null +++ b/oauth/Google/Auth/AppIdentity.php @@ -0,0 +1,100 @@ +client = $client; + } + + /** + * Retrieve an access token for the scopes supplied. + */ + public function authenticateForScope($scopes) + { + if ($this->token && $this->tokenScopes == $scopes) { + return $this->token; + } + $memcache = new Memcached(); + $this->token = $memcache->get(self::CACHE_PREFIX . $scopes); + if (!$this->token) { + $this->token = AppIdentityService::getAccessToken($scopes); + if ($this->token) { + $memcache_key = self::CACHE_PREFIX; + if (is_string($scopes)) { + $memcache_key .= $scopes; + } else if (is_array($scopes)) { + $memcache_key .= implode(":", $scopes); + } + $memcache->set($memcache_key, $this->token, self::CACHE_LIFETIME); + } + } + $this->tokenScopes = $scopes; + return $this->token; + } + + /** + * Perform an authenticated / signed apiHttpRequest. + * This function takes the apiHttpRequest, calls apiAuth->sign on it + * (which can modify the request in what ever way fits the auth mechanism) + * and then calls apiCurlIO::makeRequest on the signed request + * + * @param Google_Http_Request $request + * @return Google_Http_Request The resulting HTTP response including the + * responseHttpCode, responseHeaders and responseBody. + */ + public function authenticatedRequest(Google_Http_Request $request) + { + $request = $this->sign($request); + return $this->io->makeRequest($request); + } + + public function sign(Google_Http_Request $request) + { + if (!$this->token) { + // No token, so nothing to do. + return $request; + } + // Add the OAuth2 header to the request + $request->setRequestHeaders( + array('Authorization' => 'Bearer ' . $this->token['access_token']) + ); + + return $request; + } +} diff --git a/oauth/Google/Auth/AssertionCredentials.php b/oauth/Google/Auth/AssertionCredentials.php new file mode 100644 index 0000000..3db0a77 --- /dev/null +++ b/oauth/Google/Auth/AssertionCredentials.php @@ -0,0 +1,138 @@ + + */ +class Google_Auth_AssertionCredentials +{ + const MAX_TOKEN_LIFETIME_SECS = 3600; + + public $serviceAccountName; + public $scopes; + public $privateKey; + public $privateKeyPassword; + public $assertionType; + public $sub; + /** + * @deprecated + * @link http://tools.ietf.org/html/draft-ietf-oauth-json-web-token-06 + */ + public $prn; + private $useCache; + + /** + * @param $serviceAccountName + * @param $scopes array List of scopes + * @param $privateKey + * @param string $privateKeyPassword + * @param string $assertionType + * @param bool|string $sub The email address of the user for which the + * application is requesting delegated access. + * @param bool useCache Whether to generate a cache key and allow + * automatic caching of the generated token. + */ + public function __construct( + $serviceAccountName, + $scopes, + $privateKey, + $privateKeyPassword = 'notasecret', + $assertionType = 'http://oauth.net/grant_type/jwt/1.0/bearer', + $sub = false, + $useCache = true + ) { + $this->serviceAccountName = $serviceAccountName; + $this->scopes = is_string($scopes) ? $scopes : implode(' ', $scopes); + $this->privateKey = $privateKey; + $this->privateKeyPassword = $privateKeyPassword; + $this->assertionType = $assertionType; + $this->sub = $sub; + $this->prn = $sub; + $this->useCache = $useCache; + } + + /** + * Generate a unique key to represent this credential. + * @return string + */ + public function getCacheKey() + { + if (!$this->useCache) { + return false; + } + $h = $this->sub; + $h .= $this->assertionType; + $h .= $this->privateKey; + $h .= $this->scopes; + $h .= $this->serviceAccountName; + return md5($h); + } + + public function generateAssertion() + { + $now = time(); + + $jwtParams = array( + 'aud' => Google_Auth_OAuth2::OAUTH2_TOKEN_URI, + 'scope' => $this->scopes, + 'iat' => $now, + 'exp' => $now + self::MAX_TOKEN_LIFETIME_SECS, + 'iss' => $this->serviceAccountName, + ); + + if ($this->sub !== false) { + $jwtParams['sub'] = $this->sub; + } else if ($this->prn !== false) { + $jwtParams['prn'] = $this->prn; + } + + return $this->makeSignedJwt($jwtParams); + } + + /** + * Creates a signed JWT. + * @param array $payload + * @return string The signed JWT. + */ + private function makeSignedJwt($payload) + { + $header = array('typ' => 'JWT', 'alg' => 'RS256'); + + $payload = json_encode($payload); + // Handle some overzealous escaping in PHP json that seemed to cause some errors + // with claimsets. + $payload = str_replace('\/', '/', $payload); + + $segments = array( + Google_Utils::urlSafeB64Encode(json_encode($header)), + Google_Utils::urlSafeB64Encode($payload) + ); + + $signingInput = implode('.', $segments); + $signer = new Google_Signer_P12($this->privateKey, $this->privateKeyPassword); + $signature = $signer->sign($signingInput); + $segments[] = Google_Utils::urlSafeB64Encode($signature); + + return implode(".", $segments); + } +} diff --git a/oauth/Google/Auth/Exception.php b/oauth/Google/Auth/Exception.php new file mode 100644 index 0000000..65067ee --- /dev/null +++ b/oauth/Google/Auth/Exception.php @@ -0,0 +1,22 @@ + + */ +class Google_Auth_LoginTicket +{ + const USER_ATTR = "sub"; + + // Information from id token envelope. + private $envelope; + + // Information from id token payload. + private $payload; + + /** + * Creates a user based on the supplied token. + * + * @param string $envelope Header from a verified authentication token. + * @param string $payload Information from a verified authentication token. + */ + public function __construct($envelope, $payload) + { + $this->envelope = $envelope; + $this->payload = $payload; + } + + /** + * Returns the numeric identifier for the user. + * @throws Google_Auth_Exception + * @return + */ + public function getUserId() + { + if (array_key_exists(self::USER_ATTR, $this->payload)) { + return $this->payload[self::USER_ATTR]; + } + throw new Google_Auth_Exception("No user_id in token"); + } + + /** + * Returns attributes from the login ticket. This can contain + * various information about the user session. + * @return array + */ + public function getAttributes() + { + return array("envelope" => $this->envelope, "payload" => $this->payload); + } +} diff --git a/oauth/Google/Auth/OAuth2.php b/oauth/Google/Auth/OAuth2.php new file mode 100644 index 0000000..e5b6031 --- /dev/null +++ b/oauth/Google/Auth/OAuth2.php @@ -0,0 +1,595 @@ + + * @author Chirag Shah + * + */ +class Google_Auth_OAuth2 extends Google_Auth_Abstract +{ + const OAUTH2_REVOKE_URI = 'https://accounts.google.com/o/oauth2/revoke'; + const OAUTH2_TOKEN_URI = 'https://accounts.google.com/o/oauth2/token'; + const OAUTH2_AUTH_URL = 'https://accounts.google.com/o/oauth2/auth'; + const CLOCK_SKEW_SECS = 300; // five minutes in seconds + const AUTH_TOKEN_LIFETIME_SECS = 300; // five minutes in seconds + const MAX_TOKEN_LIFETIME_SECS = 86400; // one day in seconds + const OAUTH2_ISSUER = 'accounts.google.com'; + + /** @var Google_Auth_AssertionCredentials $assertionCredentials */ + private $assertionCredentials; + + /** + * @var string The state parameters for CSRF and other forgery protection. + */ + private $state; + + /** + * @var array The token bundle. + */ + private $token = array(); + + /** + * @var Google_Client the base client + */ + private $client; + + /** + * Instantiates the class, but does not initiate the login flow, leaving it + * to the discretion of the caller. + */ + public function __construct(Google_Client $client) + { + $this->client = $client; + } + + /** + * Perform an authenticated / signed apiHttpRequest. + * This function takes the apiHttpRequest, calls apiAuth->sign on it + * (which can modify the request in what ever way fits the auth mechanism) + * and then calls apiCurlIO::makeRequest on the signed request + * + * @param Google_Http_Request $request + * @return Google_Http_Request The resulting HTTP response including the + * responseHttpCode, responseHeaders and responseBody. + */ + public function authenticatedRequest(Google_Http_Request $request) + { + $request = $this->sign($request); + return $this->client->getIo()->makeRequest($request); + } + + /** + * @param string $code + * @throws Google_Auth_Exception + * @return string + */ + public function authenticate($code) + { + if (strlen($code) == 0) { + throw new Google_Auth_Exception("Invalid code"); + } + + // We got here from the redirect from a successful authorization grant, + // fetch the access token + $request = new Google_Http_Request( + self::OAUTH2_TOKEN_URI, + 'POST', + array(), + array( + 'code' => $code, + 'grant_type' => 'authorization_code', + 'redirect_uri' => $this->client->getClassConfig($this, 'redirect_uri'), + 'client_id' => $this->client->getClassConfig($this, 'client_id'), + 'client_secret' => $this->client->getClassConfig($this, 'client_secret') + ) + ); + $request->disableGzip(); + $response = $this->client->getIo()->makeRequest($request); + + if ($response->getResponseHttpCode() == 200) { + $this->setAccessToken($response->getResponseBody()); + $this->token['created'] = time(); + return $this->getAccessToken(); + } else { + $decodedResponse = json_decode($response->getResponseBody(), true); + if ($decodedResponse != null && $decodedResponse['error']) { + $decodedResponse = $decodedResponse['error']; + } + throw new Google_Auth_Exception( + sprintf( + "Error fetching OAuth2 access token, message: '%s'", + $decodedResponse + ), + $response->getResponseHttpCode() + ); + } + } + + /** + * Create a URL to obtain user authorization. + * The authorization endpoint allows the user to first + * authenticate, and then grant/deny the access request. + * @param string $scope The scope is expressed as a list of space-delimited strings. + * @return string + */ + public function createAuthUrl($scope) + { + $params = array( + 'response_type' => 'code', + 'redirect_uri' => $this->client->getClassConfig($this, 'redirect_uri'), + 'client_id' => $this->client->getClassConfig($this, 'client_id'), + 'scope' => $scope, + 'access_type' => $this->client->getClassConfig($this, 'access_type'), + 'approval_prompt' => $this->client->getClassConfig($this, 'approval_prompt'), + ); + + $login_hint = $this->client->getClassConfig($this, 'login_hint'); + if ($login_hint != '') { + $params['login_hint'] = $login_hint; + } + + // If the list of scopes contains plus.login, add request_visible_actions + // to auth URL. + $rva = $this->client->getClassConfig($this, 'request_visible_actions'); + if (strpos($scope, 'plus.login') && strlen($rva) > 0) { + $params['request_visible_actions'] = $rva; + } + + if (isset($this->state)) { + $params['state'] = $this->state; + } + + return self::OAUTH2_AUTH_URL . "?" . http_build_query($params, '', '&'); + } + + /** + * @param string $token + * @throws Google_Auth_Exception + */ + public function setAccessToken($token) + { + $token = json_decode($token, true); + if ($token == null) { + throw new Google_Auth_Exception('Could not json decode the token'); + } + if (! isset($token['access_token'])) { + throw new Google_Auth_Exception("Invalid token format"); + } + $this->token = $token; + } + + public function getAccessToken() + { + return json_encode($this->token); + } + + public function setState($state) + { + $this->state = $state; + } + + public function setAssertionCredentials(Google_Auth_AssertionCredentials $creds) + { + $this->assertionCredentials = $creds; + } + + /** + * Include an accessToken in a given apiHttpRequest. + * @param Google_Http_Request $request + * @return Google_Http_Request + * @throws Google_Auth_Exception + */ + public function sign(Google_Http_Request $request) + { + // add the developer key to the request before signing it + if ($this->client->getClassConfig($this, 'developer_key')) { + $request->setQueryParam('key', $this->client->getClassConfig($this, 'developer_key')); + } + + // Cannot sign the request without an OAuth access token. + if (null == $this->token && null == $this->assertionCredentials) { + return $request; + } + + // Check if the token is set to expire in the next 30 seconds + // (or has already expired). + if ($this->isAccessTokenExpired()) { + if ($this->assertionCredentials) { + $this->refreshTokenWithAssertion(); + } else { + if (! array_key_exists('refresh_token', $this->token)) { + throw new Google_Auth_Exception( + "The OAuth 2.0 access token has expired," + ." and a refresh token is not available. Refresh tokens" + ." are not returned for responses that were auto-approved." + ); + } + $this->refreshToken($this->token['refresh_token']); + } + } + + // Add the OAuth2 header to the request + $request->setRequestHeaders( + array('Authorization' => 'Bearer ' . $this->token['access_token']) + ); + + return $request; + } + + /** + * Fetches a fresh access token with the given refresh token. + * @param string $refreshToken + * @return void + */ + public function refreshToken($refreshToken) + { + $this->refreshTokenRequest( + array( + 'client_id' => $this->client->getClassConfig($this, 'client_id'), + 'client_secret' => $this->client->getClassConfig($this, 'client_secret'), + 'refresh_token' => $refreshToken, + 'grant_type' => 'refresh_token' + ) + ); + } + + /** + * Fetches a fresh access token with a given assertion token. + * @param Google_Auth_AssertionCredentials $assertionCredentials optional. + * @return void + */ + public function refreshTokenWithAssertion($assertionCredentials = null) + { + if (!$assertionCredentials) { + $assertionCredentials = $this->assertionCredentials; + } + + $cacheKey = $assertionCredentials->getCacheKey(); + + if ($cacheKey) { + // We can check whether we have a token available in the + // cache. If it is expired, we can retrieve a new one from + // the assertion. + $token = $this->client->getCache()->get($cacheKey); + if ($token) { + $this->setAccessToken($token); + } + if (!$this->isAccessTokenExpired()) { + return; + } + } + + $this->refreshTokenRequest( + array( + 'grant_type' => 'assertion', + 'assertion_type' => $assertionCredentials->assertionType, + 'assertion' => $assertionCredentials->generateAssertion(), + ) + ); + + if ($cacheKey) { + // Attempt to cache the token. + $this->client->getCache()->set( + $cacheKey, + $this->getAccessToken() + ); + } + } + + private function refreshTokenRequest($params) + { + $http = new Google_Http_Request( + self::OAUTH2_TOKEN_URI, + 'POST', + array(), + $params + ); + $http->disableGzip(); + $request = $this->client->getIo()->makeRequest($http); + + $code = $request->getResponseHttpCode(); + $body = $request->getResponseBody(); + if (200 == $code) { + $token = json_decode($body, true); + if ($token == null) { + throw new Google_Auth_Exception("Could not json decode the access token"); + } + + if (! isset($token['access_token']) || ! isset($token['expires_in'])) { + throw new Google_Auth_Exception("Invalid token format"); + } + + if (isset($token['id_token'])) { + $this->token['id_token'] = $token['id_token']; + } + $this->token['access_token'] = $token['access_token']; + $this->token['expires_in'] = $token['expires_in']; + $this->token['created'] = time(); + } else { + throw new Google_Auth_Exception("Error refreshing the OAuth2 token, message: '$body'", $code); + } + } + + /** + * Revoke an OAuth2 access token or refresh token. This method will revoke the current access + * token, if a token isn't provided. + * @throws Google_Auth_Exception + * @param string|null $token The token (access token or a refresh token) that should be revoked. + * @return boolean Returns True if the revocation was successful, otherwise False. + */ + public function revokeToken($token = null) + { + if (!$token) { + if (!$this->token) { + // Not initialized, no token to actually revoke + return false; + } elseif (array_key_exists('refresh_token', $this->token)) { + $token = $this->token['refresh_token']; + } else { + $token = $this->token['access_token']; + } + } + $request = new Google_Http_Request( + self::OAUTH2_REVOKE_URI, + 'POST', + array(), + "token=$token" + ); + $request->disableGzip(); + $response = $this->client->getIo()->makeRequest($request); + $code = $response->getResponseHttpCode(); + if ($code == 200) { + $this->token = null; + return true; + } + + return false; + } + + /** + * Returns if the access_token is expired. + * @return bool Returns True if the access_token is expired. + */ + public function isAccessTokenExpired() + { + if (!$this->token || !isset($this->token['created'])) { + return true; + } + + // If the token is set to expire in the next 30 seconds. + $expired = ($this->token['created'] + + ($this->token['expires_in'] - 30)) < time(); + + return $expired; + } + + // Gets federated sign-on certificates to use for verifying identity tokens. + // Returns certs as array structure, where keys are key ids, and values + // are PEM encoded certificates. + private function getFederatedSignOnCerts() + { + return $this->retrieveCertsFromLocation( + $this->client->getClassConfig($this, 'federated_signon_certs_url') + ); + } + + /** + * Retrieve and cache a certificates file. + * @param $url location + * @return array certificates + */ + public function retrieveCertsFromLocation($url) + { + // If we're retrieving a local file, just grab it. + if ("http" != substr($url, 0, 4)) { + $file = file_get_contents($url); + if ($file) { + return json_decode($file, true); + } else { + throw new Google_Auth_Exception( + "Failed to retrieve verification certificates: '" . + $url . "'." + ); + } + } + + // This relies on makeRequest caching certificate responses. + $request = $this->client->getIo()->makeRequest( + new Google_Http_Request( + $url + ) + ); + if ($request->getResponseHttpCode() == 200) { + $certs = json_decode($request->getResponseBody(), true); + if ($certs) { + return $certs; + } + } + throw new Google_Auth_Exception( + "Failed to retrieve verification certificates: '" . + $request->getResponseBody() . "'.", + $request->getResponseHttpCode() + ); + } + + /** + * Verifies an id token and returns the authenticated apiLoginTicket. + * Throws an exception if the id token is not valid. + * The audience parameter can be used to control which id tokens are + * accepted. By default, the id token must have been issued to this OAuth2 client. + * + * @param $id_token + * @param $audience + * @return Google_Auth_LoginTicket + */ + public function verifyIdToken($id_token = null, $audience = null) + { + if (!$id_token) { + $id_token = $this->token['id_token']; + } + $certs = $this->getFederatedSignonCerts(); + if (!$audience) { + $audience = $this->client->getClassConfig($this, 'client_id'); + } + + return $this->verifySignedJwtWithCerts($id_token, $certs, $audience, self::OAUTH2_ISSUER); + } + + /** + * Verifies the id token, returns the verified token contents. + * + * @param $jwt the token + * @param $certs array of certificates + * @param $required_audience the expected consumer of the token + * @param [$issuer] the expected issues, defaults to Google + * @param [$max_expiry] the max lifetime of a token, defaults to MAX_TOKEN_LIFETIME_SECS + * @return token information if valid, false if not + */ + public function verifySignedJwtWithCerts( + $jwt, + $certs, + $required_audience, + $issuer = null, + $max_expiry = null + ) { + if (!$max_expiry) { + // Set the maximum time we will accept a token for. + $max_expiry = self::MAX_TOKEN_LIFETIME_SECS; + } + + $segments = explode(".", $jwt); + if (count($segments) != 3) { + throw new Google_Auth_Exception("Wrong number of segments in token: $jwt"); + } + $signed = $segments[0] . "." . $segments[1]; + $signature = Google_Utils::urlSafeB64Decode($segments[2]); + + // Parse envelope. + $envelope = json_decode(Google_Utils::urlSafeB64Decode($segments[0]), true); + if (!$envelope) { + throw new Google_Auth_Exception("Can't parse token envelope: " . $segments[0]); + } + + // Parse token + $json_body = Google_Utils::urlSafeB64Decode($segments[1]); + $payload = json_decode($json_body, true); + if (!$payload) { + throw new Google_Auth_Exception("Can't parse token payload: " . $segments[1]); + } + + // Check signature + $verified = false; + foreach ($certs as $keyName => $pem) { + $public_key = new Google_Verifier_Pem($pem); + if ($public_key->verify($signed, $signature)) { + $verified = true; + break; + } + } + + if (!$verified) { + throw new Google_Auth_Exception("Invalid token signature: $jwt"); + } + + // Check issued-at timestamp + $iat = 0; + if (array_key_exists("iat", $payload)) { + $iat = $payload["iat"]; + } + if (!$iat) { + throw new Google_Auth_Exception("No issue time in token: $json_body"); + } + $earliest = $iat - self::CLOCK_SKEW_SECS; + + // Check expiration timestamp + $now = time(); + $exp = 0; + if (array_key_exists("exp", $payload)) { + $exp = $payload["exp"]; + } + if (!$exp) { + throw new Google_Auth_Exception("No expiration time in token: $json_body"); + } + if ($exp >= $now + $max_expiry) { + throw new Google_Auth_Exception( + sprintf("Expiration time too far in future: %s", $json_body) + ); + } + + $latest = $exp + self::CLOCK_SKEW_SECS; + if ($now < $earliest) { + throw new Google_Auth_Exception( + sprintf( + "Token used too early, %s < %s: %s", + $now, + $earliest, + $json_body + ) + ); + } + if ($now > $latest) { + throw new Google_Auth_Exception( + sprintf( + "Token used too late, %s > %s: %s", + $now, + $latest, + $json_body + ) + ); + } + + $iss = $payload['iss']; + if ($issuer && $iss != $issuer) { + throw new Google_Auth_Exception( + sprintf( + "Invalid issuer, %s != %s: %s", + $iss, + $issuer, + $json_body + ) + ); + } + + // Check audience + $aud = $payload["aud"]; + if ($aud != $required_audience) { + throw new Google_Auth_Exception( + sprintf( + "Wrong recipient, %s != %s:", + $aud, + $required_audience, + $json_body + ) + ); + } + + // All good. + return new Google_Auth_LoginTicket($envelope, $payload); + } +} diff --git a/oauth/Google/Auth/Simple.php b/oauth/Google/Auth/Simple.php new file mode 100644 index 0000000..e83900f --- /dev/null +++ b/oauth/Google/Auth/Simple.php @@ -0,0 +1,62 @@ + + * @author Chirag Shah + */ +class Google_Auth_Simple extends Google_Auth_Abstract +{ + private $key = null; + private $client; + + public function __construct(Google_Client $client, $config = null) + { + $this->client = $client; + } + + /** + * Perform an authenticated / signed apiHttpRequest. + * This function takes the apiHttpRequest, calls apiAuth->sign on it + * (which can modify the request in what ever way fits the auth mechanism) + * and then calls apiCurlIO::makeRequest on the signed request + * + * @param Google_Http_Request $request + * @return Google_Http_Request The resulting HTTP response including the + * responseHttpCode, responseHeaders and responseBody. + */ + public function authenticatedRequest(Google_Http_Request $request) + { + $request = $this->sign($request); + return $this->io->makeRequest($request); + } + + public function sign(Google_Http_Request $request) + { + $key = $this->client->getClassConfig($this, 'developer_key'); + if ($key) { + $request->setQueryParam('key', $key); + } + return $request; + } +} diff --git a/oauth/Google/Cache/Abstract.php b/oauth/Google/Cache/Abstract.php new file mode 100644 index 0000000..ff19f36 --- /dev/null +++ b/oauth/Google/Cache/Abstract.php @@ -0,0 +1,53 @@ + + */ +abstract class Google_Cache_Abstract +{ + + abstract public function __construct(Google_Client $client); + + /** + * Retrieves the data for the given key, or false if they + * key is unknown or expired + * + * @param String $key The key who's data to retrieve + * @param boolean|int $expiration Expiration time in seconds + * + */ + abstract public function get($key, $expiration = false); + + /** + * Store the key => $value set. The $value is serialized + * by this function so can be of any type + * + * @param string $key Key of the data + * @param string $value data + */ + abstract public function set($key, $value); + + /** + * Removes the key/data pair for the given $key + * + * @param String $key + */ + abstract public function delete($key); +} diff --git a/oauth/Google/Cache/Apc.php b/oauth/Google/Cache/Apc.php new file mode 100644 index 0000000..051b537 --- /dev/null +++ b/oauth/Google/Cache/Apc.php @@ -0,0 +1,73 @@ + + */ +class Google_Cache_Apc extends Google_Cache_Abstract +{ + public function __construct(Google_Client $client) + { + if (! function_exists('apc_add') ) { + throw new Google_Cache_Exception("Apc functions not available"); + } + } + + /** + * @inheritDoc + */ + public function get($key, $expiration = false) + { + $ret = apc_fetch($key); + if ($ret === false) { + return false; + } + if (is_numeric($expiration) && (time() - $ret['time'] > $expiration)) { + $this->delete($key); + return false; + } + return $ret['data']; + } + + /** + * @inheritDoc + */ + public function set($key, $value) + { + $rc = apc_store($key, array('time' => time(), 'data' => $value)); + if ($rc == false) { + throw new Google_Cache_Exception("Couldn't store data"); + } + } + + /** + * @inheritDoc + * @param String $key + */ + public function delete($key) + { + apc_delete($key); + } +} diff --git a/oauth/Google/Cache/Exception.php b/oauth/Google/Cache/Exception.php new file mode 100644 index 0000000..23b6246 --- /dev/null +++ b/oauth/Google/Cache/Exception.php @@ -0,0 +1,21 @@ + + */ +class Google_Cache_File extends Google_Cache_Abstract +{ + const MAX_LOCK_RETRIES = 10; + private $path; + private $fh; + + public function __construct(Google_Client $client) + { + $this->path = $client->getClassConfig($this, 'directory'); + } + + public function get($key, $expiration = false) + { + $storageFile = $this->getCacheFile($key); + $data = false; + + if (!file_exists($storageFile)) { + return false; + } + + if ($expiration) { + $mtime = filemtime($storageFile); + if ((time() - $mtime) >= $expiration) { + $this->delete($key); + return false; + } + } + + if ($this->acquireReadLock($storageFile)) { + $data = fread($this->fh, filesize($storageFile)); + $data = unserialize($data); + $this->unlock($storageFile); + } + + return $data; + } + + public function set($key, $value) + { + $storageFile = $this->getWriteableCacheFile($key); + if ($this->acquireWriteLock($storageFile)) { + // We serialize the whole request object, since we don't only want the + // responseContent but also the postBody used, headers, size, etc. + $data = serialize($value); + $result = fwrite($this->fh, $data); + $this->unlock($storageFile); + } + } + + public function delete($key) + { + $file = $this->getCacheFile($key); + if (file_exists($file) && !unlink($file)) { + throw new Google_Cache_Exception("Cache file could not be deleted"); + } + } + + private function getWriteableCacheFile($file) + { + return $this->getCacheFile($file, true); + } + + private function getCacheFile($file, $forWrite = false) + { + return $this->getCacheDir($file, $forWrite) . '/' . md5($file); + } + + private function getCacheDir($file, $forWrite) + { + // use the first 2 characters of the hash as a directory prefix + // this should prevent slowdowns due to huge directory listings + // and thus give some basic amount of scalability + $storageDir = $this->path . '/' . substr(md5($file), 0, 2); + if ($forWrite && ! is_dir($storageDir)) { + if (! mkdir($storageDir, 0755, true)) { + throw new Google_Cache_Exception("Could not create storage directory: $storageDir"); + } + } + return $storageDir; + } + + private function acquireReadLock($storageFile) + { + return $this->acquireLock(LOCK_SH, $storageFile); + } + + private function acquireWriteLock($storageFile) + { + $rc = $this->acquireLock(LOCK_EX, $storageFile); + if (!$rc) { + $this->delete($storageFile); + } + return $rc; + } + + private function acquireLock($type, $storageFile) + { + $mode = $type == LOCK_EX ? "w" : "r"; + $this->fh = fopen($storageFile, $mode); + $count = 0; + while (!flock($this->fh, $type | LOCK_NB)) { + // Sleep for 10ms. + usleep(10000); + if (++$count < self::MAX_LOCK_RETRIES) { + return false; + } + } + return true; + } + + public function unlock($storageFile) + { + if ($this->fh) { + flock($this->fh, LOCK_UN); + } + } +} diff --git a/oauth/Google/Cache/Memcache.php b/oauth/Google/Cache/Memcache.php new file mode 100644 index 0000000..56676c2 --- /dev/null +++ b/oauth/Google/Cache/Memcache.php @@ -0,0 +1,137 @@ + + */ +class Google_Cache_Memcache extends Google_Cache_Abstract +{ + private $connection = false; + private $mc = false; + private $host; + private $port; + + public function __construct(Google_Client $client) + { + if (!function_exists('memcache_connect') && !class_exists("Memcached")) { + throw new Google_Cache_Exception("Memcache functions not available"); + } + if ($client->isAppEngine()) { + // No credentials needed for GAE. + $this->mc = new Memcached(); + $this->connection = true; + } else { + $this->host = $client->getClassConfig($this, 'host'); + $this->port = $client->getClassConfig($this, 'port'); + if (empty($this->host) || empty($this->port)) { + throw new Google_Cache_Exception("You need to supply a valid memcache host and port"); + } + } + } + + /** + * @inheritDoc + */ + public function get($key, $expiration = false) + { + $this->connect(); + $ret = false; + if ($this->mc) { + $ret = $this->mc->get($key); + } else { + $ret = memcache_get($this->connection, $key); + } + if ($ret === false) { + return false; + } + if (is_numeric($expiration) && (time() - $ret['time'] > $expiration)) { + $this->delete($key); + return false; + } + return $ret['data']; + } + + /** + * @inheritDoc + * @param string $key + * @param string $value + * @throws Google_Cache_Exception + */ + public function set($key, $value) + { + $this->connect(); + // we store it with the cache_time default expiration so objects will at + // least get cleaned eventually. + $data = array('time' => time(), 'data' => $value); + $rc = false; + if ($this->mc) { + $rc = $this->mc->set($key, $data); + } else { + $rc = memcache_set($this->connection, $key, $data, false); + } + if ($rc == false) { + throw new Google_Cache_Exception("Couldn't store data in cache"); + } + } + + /** + * @inheritDoc + * @param String $key + */ + public function delete($key) + { + $this->connect(); + if ($this->mc) { + $this->mc->delete($key, 0); + } else { + memcache_delete($this->connection, $key, 0); + } + } + + /** + * Lazy initialiser for memcache connection. Uses pconnect for to take + * advantage of the persistence pool where possible. + */ + private function connect() + { + if ($this->connection) { + return; + } + + if (class_exists("Memcached")) { + $this->mc = new Memcached(); + $this->mc->addServer($this->host, $this->port); + $this->connection = true; + } else { + $this->connection = memcache_pconnect($this->host, $this->port); + } + + if (! $this->connection) { + throw new Google_Cache_Exception("Couldn't connect to memcache server"); + } + } +} diff --git a/oauth/Google/Cache/Null.php b/oauth/Google/Cache/Null.php new file mode 100644 index 0000000..0e33631 --- /dev/null +++ b/oauth/Google/Cache/Null.php @@ -0,0 +1,56 @@ + + * @author Chirag Shah + */ +class Google_Client +{ + const LIBVER = "1.0.5-beta"; + const USER_AGENT_SUFFIX = "google-api-php-client/"; + /** + * @var Google_Auth_Abstract $auth + */ + private $auth; + + /** + * @var Google_IO_Abstract $io + */ + private $io; + + /** + * @var Google_Cache_Abstract $cache + */ + private $cache; + + /** + * @var Google_Config $config + */ + private $config; + + /** + * @var boolean $deferExecution + */ + private $deferExecution = false; + + /** @var array $scopes */ + // Scopes requested by the client + protected $requestedScopes = array(); + + // definitions of services that are discovered. + protected $services = array(); + + // Used to track authenticated state, can't discover services after doing authenticate() + private $authenticated = false; + + /** + * Construct the Google Client. + * + * @param $config Google_Config or string for the ini file to load + */ + public function __construct($config = null) + { + if (is_string($config) && strlen($config)) { + $config = new Google_Config($config); + } else if ( !($config instanceof Google_Config)) { + $config = new Google_Config(); + + if ($this->isAppEngine()) { + // Automatically use Memcache if we're in AppEngine. + $config->setCacheClass('Google_Cache_Memcache'); + } + + if (version_compare(phpversion(), "5.3.4", "<=") || $this->isAppEngine()) { + // Automatically disable compress.zlib, as currently unsupported. + $config->setClassConfig('Google_Http_Request', 'disable_gzip', true); + } + } + + if ($config->getIoClass() == Google_Config::USE_AUTO_IO_SELECTION) { + if (function_exists('curl_version') && function_exists('curl_exec')) { + $config->setIoClass("Google_IO_Curl"); + } else { + $config->setIoClass("Google_IO_Stream"); + } + } + + $this->config = $config; + } + + /** + * Get a string containing the version of the library. + * + * @return string + */ + public function getLibraryVersion() + { + return self::LIBVER; + } + + /** + * Attempt to exchange a code for an valid authentication token. + * Helper wrapped around the OAuth 2.0 implementation. + * + * @param $code string code from accounts.google.com + * @return string token + */ + public function authenticate($code) + { + $this->authenticated = true; + return $this->getAuth()->authenticate($code); + } + + /** + * Set the auth config from the JSON string provided. + * This structure should match the file downloaded from + * the "Download JSON" button on in the Google Developer + * Console. + * @param string $json the configuration json + */ + public function setAuthConfig($json) + { + $data = json_decode($json); + $key = isset($data->installed) ? 'installed' : 'web'; + if (!isset($data->$key)) { + throw new Google_Exception("Invalid client secret JSON file."); + } + $this->setClientId($data->$key->client_id); + $this->setClientSecret($data->$key->client_secret); + if (isset($data->$key->redirect_uris)) { + $this->setRedirectUri($data->$key->redirect_uris[0]); + } + } + + /** + * Set the auth config from the JSON file in the path + * provided. This should match the file downloaded from + * the "Download JSON" button on in the Google Developer + * Console. + * @param string $file the file location of the client json + */ + public function setAuthConfigFile($file) + { + $this->setAuthConfig(file_get_contents($file)); + } + + /** + * @return array + * @visible For Testing + */ + public function prepareScopes() + { + if (empty($this->requestedScopes)) { + throw new Google_Auth_Exception("No scopes specified"); + } + $scopes = implode(' ', $this->requestedScopes); + return $scopes; + } + + /** + * Set the OAuth 2.0 access token using the string that resulted from calling createAuthUrl() + * or Google_Client#getAccessToken(). + * @param string $accessToken JSON encoded string containing in the following format: + * {"access_token":"TOKEN", "refresh_token":"TOKEN", "token_type":"Bearer", + * "expires_in":3600, "id_token":"TOKEN", "created":1320790426} + */ + public function setAccessToken($accessToken) + { + if ($accessToken == 'null') { + $accessToken = null; + } + $this->getAuth()->setAccessToken($accessToken); + } + + + + /** + * Set the authenticator object + * @param Google_Auth_Abstract $auth + */ + public function setAuth(Google_Auth_Abstract $auth) + { + $this->config->setAuthClass(get_class($auth)); + $this->auth = $auth; + } + + /** + * Set the IO object + * @param Google_Io_Abstract $auth + */ + public function setIo(Google_Io_Abstract $io) + { + $this->config->setIoClass(get_class($io)); + $this->io = $io; + } + + /** + * Set the Cache object + * @param Google_Cache_Abstract $auth + */ + public function setCache(Google_Cache_Abstract $cache) + { + $this->config->setCacheClass(get_class($cache)); + $this->cache = $cache; + } + + /** + * Construct the OAuth 2.0 authorization request URI. + * @return string + */ + public function createAuthUrl() + { + $scopes = $this->prepareScopes(); + return $this->getAuth()->createAuthUrl($scopes); + } + + /** + * Get the OAuth 2.0 access token. + * @return string $accessToken JSON encoded string in the following format: + * {"access_token":"TOKEN", "refresh_token":"TOKEN", "token_type":"Bearer", + * "expires_in":3600,"id_token":"TOKEN", "created":1320790426} + */ + public function getAccessToken() + { + $token = $this->getAuth()->getAccessToken(); + // The response is json encoded, so could be the string null. + // It is arguable whether this check should be here or lower + // in the library. + return (null == $token || 'null' == $token || '[]' == $token) ? null : $token; + } + + /** + * Returns if the access_token is expired. + * @return bool Returns True if the access_token is expired. + */ + public function isAccessTokenExpired() + { + return $this->getAuth()->isAccessTokenExpired(); + } + + /** + * Set OAuth 2.0 "state" parameter to achieve per-request customization. + * @see http://tools.ietf.org/html/draft-ietf-oauth-v2-22#section-3.1.2.2 + * @param string $state + */ + public function setState($state) + { + $this->getAuth()->setState($state); + } + + /** + * @param string $accessType Possible values for access_type include: + * {@code "offline"} to request offline access from the user. + * {@code "online"} to request online access from the user. + */ + public function setAccessType($accessType) + { + $this->config->setAccessType($accessType); + } + + /** + * @param string $approvalPrompt Possible values for approval_prompt include: + * {@code "force"} to force the approval UI to appear. (This is the default value) + * {@code "auto"} to request auto-approval when possible. + */ + public function setApprovalPrompt($approvalPrompt) + { + $this->config->setApprovalPrompt($approvalPrompt); + } + + /** + * Set the login hint, email address or sub id. + * @param string $loginHint + */ + public function setLoginHint($loginHint) + { + $this->config->setLoginHint($loginHint); + } + + /** + * Set the application name, this is included in the User-Agent HTTP header. + * @param string $applicationName + */ + public function setApplicationName($applicationName) + { + $this->config->setApplicationName($applicationName); + } + + /** + * Set the OAuth 2.0 Client ID. + * @param string $clientId + */ + public function setClientId($clientId) + { + $this->config->setClientId($clientId); + } + + /** + * Set the OAuth 2.0 Client Secret. + * @param string $clientSecret + */ + public function setClientSecret($clientSecret) + { + $this->config->setClientSecret($clientSecret); + } + + /** + * Set the OAuth 2.0 Redirect URI. + * @param string $redirectUri + */ + public function setRedirectUri($redirectUri) + { + $this->config->setRedirectUri($redirectUri); + } + + /** + * If 'plus.login' is included in the list of requested scopes, you can use + * this method to define types of app activities that your app will write. + * You can find a list of available types here: + * @link https://developers.google.com/+/api/moment-types + * + * @param array $requestVisibleActions Array of app activity types + */ + public function setRequestVisibleActions($requestVisibleActions) + { + if (is_array($requestVisibleActions)) { + $requestVisibleActions = join(" ", $requestVisibleActions); + } + $this->config->setRequestVisibleActions($requestVisibleActions); + } + + /** + * Set the developer key to use, these are obtained through the API Console. + * @see http://code.google.com/apis/console-help/#generatingdevkeys + * @param string $developerKey + */ + public function setDeveloperKey($developerKey) + { + $this->config->setDeveloperKey($developerKey); + } + + /** + * Fetches a fresh OAuth 2.0 access token with the given refresh token. + * @param string $refreshToken + * @return void + */ + public function refreshToken($refreshToken) + { + return $this->getAuth()->refreshToken($refreshToken); + } + + /** + * Revoke an OAuth2 access token or refresh token. This method will revoke the current access + * token, if a token isn't provided. + * @throws Google_Auth_Exception + * @param string|null $token The token (access token or a refresh token) that should be revoked. + * @return boolean Returns True if the revocation was successful, otherwise False. + */ + public function revokeToken($token = null) + { + return $this->getAuth()->revokeToken($token); + } + + /** + * Verify an id_token. This method will verify the current id_token, if one + * isn't provided. + * @throws Google_Auth_Exception + * @param string|null $token The token (id_token) that should be verified. + * @return Google_Auth_LoginTicket Returns an apiLoginTicket if the verification was + * successful. + */ + public function verifyIdToken($token = null) + { + return $this->getAuth()->verifyIdToken($token); + } + + /** + * Verify a JWT that was signed with your own certificates. + * + * @param $jwt the token + * @param $certs array of certificates + * @param $required_audience the expected consumer of the token + * @param [$issuer] the expected issues, defaults to Google + * @param [$max_expiry] the max lifetime of a token, defaults to MAX_TOKEN_LIFETIME_SECS + * @return token information if valid, false if not + */ + public function verifySignedJwt($id_token, $cert_location, $audience, $issuer, $max_expiry = null) + { + $auth = new Google_Auth_OAuth2($this); + $certs = $auth->retrieveCertsFromLocation($cert_location); + return $auth->verifySignedJwtWithCerts($id_token, $certs, $audience, $issuer, $max_expiry); + } + + /** + * @param Google_Auth_AssertionCredentials $creds + * @return void + */ + public function setAssertionCredentials(Google_Auth_AssertionCredentials $creds) + { + $this->getAuth()->setAssertionCredentials($creds); + } + + /** + * Set the scopes to be requested. Must be called before createAuthUrl(). + * Will remove any previously configured scopes. + * @param array $scopes, ie: array('https://www.googleapis.com/auth/plus.login', + * 'https://www.googleapis.com/auth/moderator') + */ + public function setScopes($scopes) + { + $this->requestedScopes = array(); + $this->addScope($scopes); + } + + /** + * This functions adds a scope to be requested as part of the OAuth2.0 flow. + * Will append any scopes not previously requested to the scope parameter. + * A single string will be treated as a scope to request. An array of strings + * will each be appended. + * @param $scope_or_scopes string|array e.g. "profile" + */ + public function addScope($scope_or_scopes) + { + if (is_string($scope_or_scopes) && !in_array($scope_or_scopes, $this->requestedScopes)) { + $this->requestedScopes[] = $scope_or_scopes; + } else if (is_array($scope_or_scopes)) { + foreach ($scope_or_scopes as $scope) { + $this->addScope($scope); + } + } + } + + /** + * Returns the list of scopes requested by the client + * @return array the list of scopes + * + */ + public function getScopes() + { + return $this->requestedScopes; + } + + /** + * Declare whether batch calls should be used. This may increase throughput + * by making multiple requests in one connection. + * + * @param boolean $useBatch True if the batch support should + * be enabled. Defaults to False. + */ + public function setUseBatch($useBatch) + { + // This is actually an alias for setDefer. + $this->setDefer($useBatch); + } + + /** + * Declare whether making API calls should make the call immediately, or + * return a request which can be called with ->execute(); + * + * @param boolean $defer True if calls should not be executed right away. + */ + public function setDefer($defer) + { + $this->deferExecution = $defer; + } + + /** + * Helper method to execute deferred HTTP requests. + * + * @returns object of the type of the expected class or array. + */ + public function execute($request) + { + if ($request instanceof Google_Http_Request) { + $request->setUserAgent( + $this->getApplicationName() + . " " . self::USER_AGENT_SUFFIX + . $this->getLibraryVersion() + ); + if (!$this->getClassConfig("Google_Http_Request", "disable_gzip")) { + $request->enableGzip(); + } + $request->maybeMoveParametersToBody(); + return Google_Http_REST::execute($this, $request); + } else if ($request instanceof Google_Http_Batch) { + return $request->execute(); + } else { + throw new Google_Exception("Do not know how to execute this type of object."); + } + } + + /** + * Whether or not to return raw requests + * @return boolean + */ + public function shouldDefer() + { + return $this->deferExecution; + } + + /** + * @return Google_Auth_Abstract Authentication implementation + */ + public function getAuth() + { + if (!isset($this->auth)) { + $class = $this->config->getAuthClass(); + $this->auth = new $class($this); + } + return $this->auth; + } + + /** + * @return Google_IO_Abstract IO implementation + */ + public function getIo() + { + if (!isset($this->io)) { + $class = $this->config->getIoClass(); + $this->io = new $class($this); + } + return $this->io; + } + + /** + * @return Google_Cache_Abstract Cache implementation + */ + public function getCache() + { + if (!isset($this->cache)) { + $class = $this->config->getCacheClass(); + $this->cache = new $class($this); + } + return $this->cache; + } + + /** + * Retrieve custom configuration for a specific class. + * @param $class string|object - class or instance of class to retrieve + * @param $key string optional - key to retrieve + */ + public function getClassConfig($class, $key = null) + { + if (!is_string($class)) { + $class = get_class($class); + } + return $this->config->getClassConfig($class, $key); + } + + /** + * Set configuration specific to a given class. + * $config->setClassConfig('Google_Cache_File', + * array('directory' => '/tmp/cache')); + * @param $class The class name for the configuration + * @param $config string key or an array of configuration values + * @param $value optional - if $config is a key, the value + * + */ + public function setClassConfig($class, $config, $value = null) + { + if (!is_string($class)) { + $class = get_class($class); + } + return $this->config->setClassConfig($class, $config, $value); + + } + + /** + * @return string the base URL to use for calls to the APIs + */ + public function getBasePath() + { + return $this->config->getBasePath(); + } + + /** + * @return string the name of the application + */ + public function getApplicationName() + { + return $this->config->getApplicationName(); + } + + /** + * Are we running in Google AppEngine? + * return bool + */ + public function isAppEngine() + { + return (isset($_SERVER['SERVER_SOFTWARE']) && + strpos($_SERVER['SERVER_SOFTWARE'], 'Google App Engine') !== false); + } +} diff --git a/oauth/Google/Collection.php b/oauth/Google/Collection.php new file mode 100644 index 0000000..6e7bf9b --- /dev/null +++ b/oauth/Google/Collection.php @@ -0,0 +1,96 @@ +modelData[$this->collection_key]) + && is_array($this->modelData[$this->collection_key])) { + reset($this->modelData[$this->collection_key]); + } + } + + public function current() + { + $this->coerceType($this->key()); + if (is_array($this->modelData[$this->collection_key])) { + return current($this->modelData[$this->collection_key]); + } + } + + public function key() + { + if (isset($this->modelData[$this->collection_key]) + && is_array($this->modelData[$this->collection_key])) { + return key($this->modelData[$this->collection_key]); + } + } + + public function next() + { + return next($this->modelData[$this->collection_key]); + } + + public function valid() + { + $key = $this->key(); + return $key !== null && $key !== false; + } + + public function count() + { + return count($this->modelData[$this->collection_key]); + } + + public function offsetExists ($offset) + { + if (!is_numeric($offset)) { + return parent::offsetExists($offset); + } + return isset($this->modelData[$this->collection_key][$offset]); + } + + public function offsetGet($offset) + { + if (!is_numeric($offset)) { + return parent::offsetGet($offset); + } + $this->coerceType($offset); + return $this->modelData[$this->collection_key][$offset]; + } + + public function offsetSet($offset, $value) + { + if (!is_numeric($offset)) { + return parent::offsetSet($offset, $value); + } + $this->modelData[$this->collection_key][$offset] = $value; + } + + public function offsetUnset($offset) + { + if (!is_numeric($offset)) { + return parent::offsetUnset($offset); + } + unset($this->modelData[$this->collection_key][$offset]); + } + + private function coerceType($offset) + { + $typeKey = $this->keyType($this->collection_key); + if (isset($this->$typeKey) && !is_object($this->modelData[$this->collection_key][$offset])) { + $type = $this->$typeKey; + $this->modelData[$this->collection_key][$offset] = + new $type($this->modelData[$this->collection_key][$offset]); + } + } +} diff --git a/oauth/Google/Config.php b/oauth/Google/Config.php new file mode 100644 index 0000000..05be141 --- /dev/null +++ b/oauth/Google/Config.php @@ -0,0 +1,326 @@ +configuration = array( + // The application_name is included in the User-Agent HTTP header. + 'application_name' => G_Application_Name, + + // Which Authentication, Storage and HTTP IO classes to use. + 'auth_class' => 'Google_Auth_OAuth2', + 'io_class' => self::USE_AUTO_IO_SELECTION, + 'cache_class' => 'Google_Cache_File', + + // Don't change these unless you're working against a special development + // or testing environment. + 'base_path' => 'https://www.googleapis.com', + + // Definition of class specific values, like file paths and so on. + 'classes' => array( + 'Google_IO_Abstract' => array( + 'request_timeout_seconds' => 100, + ), + 'Google_Http_Request' => array( + // Disable the use of gzip on calls if set to true. Defaults to false. + 'disable_gzip' => self::GZIP_ENABLED, + + // We default gzip to disabled on uploads even if gzip is otherwise + // enabled, due to some issues seen with small packet sizes for uploads. + // Please test with this option before enabling gzip for uploads in + // a production environment. + 'enable_gzip_for_uploads' => self::GZIP_UPLOADS_DISABLED, + ), + // If you want to pass in OAuth 2.0 settings, they will need to be + // structured like this. + 'Google_Auth_OAuth2' => array( + // Keys for OAuth 2.0 access, see the API console at + // https://developers.google.com/console + 'client_id' => G_Client_ID, + 'client_secret' => G_Client_Secret, + 'redirect_uri' => G_Redirect_Uri, + // Simple API access key, also from the API console. Ensure you get + // a Server key, and not a Browser key. + 'developer_key' => '', + + // Other parameters. + 'access_type' => 'online', + 'approval_prompt' => 'auto', + 'login_hint' => '', + 'request_visible_actions' => '', + 'federated_signon_certs_url' => + 'https://www.googleapis.com/oauth2/v1/certs', + ), + // Set a default directory for the file cache. + 'Google_Cache_File' => array( + 'directory' => sys_get_temp_dir() . '/Google_Client' + ) + ), + + // Definition of service specific values like scopes, oauth token URLs, + // etc. Example: + 'services' => array( + ), + ); + if ($ini_file_location) { + $ini = parse_ini_file($ini_file_location, true); + if (is_array($ini) && count($ini)) { + $this->configuration = array_merge($this->configuration, $ini); + } + } + } + + /** + * Set configuration specific to a given class. + * $config->setClassConfig('Google_Cache_File', + * array('directory' => '/tmp/cache')); + * @param $class The class name for the configuration + * @param $config string key or an array of configuration values + * @param $value optional - if $config is a key, the value + */ + public function setClassConfig($class, $config, $value = null) + { + if (!is_array($config)) { + if (!isset($this->configuration['classes'][$class])) { + $this->configuration['classes'][$class] = array(); + } + $this->configuration['classes'][$class][$config] = $value; + } else { + $this->configuration['classes'][$class] = $config; + } + } + + public function getClassConfig($class, $key = null) + { + if (!isset($this->configuration['classes'][$class])) { + return null; + } + if ($key === null) { + return $this->configuration['classes'][$class]; + } else { + return $this->configuration['classes'][$class][$key]; + } + } + + /** + * Return the configured cache class. + * @return string + */ + public function getCacheClass() + { + return $this->configuration['cache_class']; + } + + /** + * Return the configured Auth class. + * @return string + */ + public function getAuthClass() + { + return $this->configuration['auth_class']; + } + + /** + * Set the auth class. + * + * @param $class the class name to set + */ + public function setAuthClass($class) + { + $prev = $this->configuration['auth_class']; + if (!isset($this->configuration['classes'][$class]) && + isset($this->configuration['classes'][$prev])) { + $this->configuration['classes'][$class] = + $this->configuration['classes'][$prev]; + } + $this->configuration['auth_class'] = $class; + } + + /** + * Set the IO class. + * + * @param $class the class name to set + */ + public function setIoClass($class) + { + $prev = $this->configuration['io_class']; + if (!isset($this->configuration['classes'][$class]) && + isset($this->configuration['classes'][$prev])) { + $this->configuration['classes'][$class] = + $this->configuration['classes'][$prev]; + } + $this->configuration['io_class'] = $class; + } + + /** + * Set the cache class. + * + * @param $class the class name to set + */ + public function setCacheClass($class) + { + $prev = $this->configuration['cache_class']; + if (!isset($this->configuration['classes'][$class]) && + isset($this->configuration['classes'][$prev])) { + $this->configuration['classes'][$class] = + $this->configuration['classes'][$prev]; + } + $this->configuration['cache_class'] = $class; + } + + /** + * Return the configured IO class. + * @return string + */ + public function getIoClass() + { + return $this->configuration['io_class']; + } + + /** + * Set the application name, this is included in the User-Agent HTTP header. + * @param string $name + */ + public function setApplicationName($name) + { + $this->configuration['application_name'] = $name; + } + + /** + * @return string the name of the application + */ + public function getApplicationName() + { + return $this->configuration['application_name']; + } + + /** + * Set the client ID for the auth class. + * @param $key string - the API console client ID + */ + public function setClientId($clientId) + { + $this->setAuthConfig('client_id', $clientId); + } + + /** + * Set the client secret for the auth class. + * @param $key string - the API console client secret + */ + public function setClientSecret($secret) + { + $this->setAuthConfig('client_secret', $secret); + } + + /** + * Set the redirect uri for the auth class. Note that if using the + * Javascript based sign in flow, this should be the string 'postmessage'. + * @param $key string - the URI that users should be redirected to + */ + public function setRedirectUri($uri) + { + $this->setAuthConfig('redirect_uri', $uri); + } + + /** + * Set the app activities for the auth class. + * @param $rva string a space separated list of app activity types + */ + public function setRequestVisibleActions($rva) + { + $this->setAuthConfig('request_visible_actions', $rva); + } + + /** + * Set the the access type requested (offline or online.) + * @param $access string - the access type + */ + public function setAccessType($access) + { + $this->setAuthConfig('access_type', $access); + } + + /** + * Set when to show the approval prompt (auto or force) + * @param $approval string - the approval request + */ + public function setApprovalPrompt($approval) + { + $this->setAuthConfig('approval_prompt', $approval); + } + + /** + * Set the login hint (email address or sub identifier) + * @param $hint string + */ + public function setLoginHint($hint) + { + $this->setAuthConfig('login_hint', $hint); + } + + /** + * Set the developer key for the auth class. Note that this is separate value + * from the client ID - if it looks like a URL, its a client ID! + * @param $key string - the API console developer key + */ + public function setDeveloperKey($key) + { + $this->setAuthConfig('developer_key', $key); + } + + /** + * @return string the base URL to use for API calls + */ + public function getBasePath() + { + return $this->configuration['base_path']; + } + + /** + * Set the auth configuration for the current auth class. + * @param $key - the key to set + * @param $value - the parameter value + */ + private function setAuthConfig($key, $value) + { + if (!isset($this->configuration['classes'][$this->getAuthClass()])) { + $this->configuration['classes'][$this->getAuthClass()] = array(); + } + $this->configuration['classes'][$this->getAuthClass()][$key] = $value; + } +} diff --git a/oauth/Google/Exception.php b/oauth/Google/Exception.php new file mode 100644 index 0000000..af80269 --- /dev/null +++ b/oauth/Google/Exception.php @@ -0,0 +1,20 @@ + + */ +class Google_Http_Batch +{ + /** @var string Multipart Boundary. */ + private $boundary; + + /** @var array service requests to be executed. */ + private $requests = array(); + + /** @var Google_Client */ + private $client; + + private $expected_classes = array(); + + private $base_path; + + public function __construct(Google_Client $client, $boundary = false) + { + $this->client = $client; + $this->base_path = $this->client->getBasePath(); + $this->expected_classes = array(); + $boundary = (false == $boundary) ? mt_rand() : $boundary; + $this->boundary = str_replace('"', '', $boundary); + } + + public function add(Google_Http_Request $request, $key = false) + { + if (false == $key) { + $key = mt_rand(); + } + + $this->requests[$key] = $request; + } + + public function execute() + { + $body = ''; + + /** @var Google_Http_Request $req */ + foreach ($this->requests as $key => $req) { + $body .= "--{$this->boundary}\n"; + $body .= $req->toBatchString($key) . "\n"; + $this->expected_classes["response-" . $key] = $req->getExpectedClass(); + } + + $body = rtrim($body); + $body .= "\n--{$this->boundary}--"; + + $url = $this->base_path . '/batch'; + $httpRequest = new Google_Http_Request($url, 'POST'); + $httpRequest->setRequestHeaders( + array('Content-Type' => 'multipart/mixed; boundary=' . $this->boundary) + ); + + $httpRequest->setPostBody($body); + $response = $this->client->getIo()->makeRequest($httpRequest); + + return $this->parseResponse($response); + } + + public function parseResponse(Google_Http_Request $response) + { + $contentType = $response->getResponseHeader('content-type'); + $contentType = explode(';', $contentType); + $boundary = false; + foreach ($contentType as $part) { + $part = (explode('=', $part, 2)); + if (isset($part[0]) && 'boundary' == trim($part[0])) { + $boundary = $part[1]; + } + } + + $body = $response->getResponseBody(); + if ($body) { + $body = str_replace("--$boundary--", "--$boundary", $body); + $parts = explode("--$boundary", $body); + $responses = array(); + + foreach ($parts as $part) { + $part = trim($part); + if (!empty($part)) { + list($metaHeaders, $part) = explode("\r\n\r\n", $part, 2); + $metaHeaders = $this->client->getIo()->getHttpResponseHeaders($metaHeaders); + + $status = substr($part, 0, strpos($part, "\n")); + $status = explode(" ", $status); + $status = $status[1]; + + list($partHeaders, $partBody) = $this->client->getIo()->ParseHttpResponse($part, false); + $response = new Google_Http_Request(""); + $response->setResponseHttpCode($status); + $response->setResponseHeaders($partHeaders); + $response->setResponseBody($partBody); + + // Need content id. + $key = $metaHeaders['content-id']; + + if (isset($this->expected_classes[$key]) && + strlen($this->expected_classes[$key]) > 0) { + $class = $this->expected_classes[$key]; + $response->setExpectedClass($class); + } + + try { + $response = Google_Http_REST::decodeHttpResponse($response); + $responses[$key] = $response; + } catch (Google_Service_Exception $e) { + // Store the exception as the response, so succesful responses + // can be processed. + $responses[$key] = $e; + } + } + } + + return $responses; + } + + return null; + } +} diff --git a/oauth/Google/Http/CacheParser.php b/oauth/Google/Http/CacheParser.php new file mode 100644 index 0000000..83f1c8d --- /dev/null +++ b/oauth/Google/Http/CacheParser.php @@ -0,0 +1,184 @@ + + */ +class Google_Http_CacheParser +{ + public static $CACHEABLE_HTTP_METHODS = array('GET', 'HEAD'); + public static $CACHEABLE_STATUS_CODES = array('200', '203', '300', '301'); + + /** + * Check if an HTTP request can be cached by a private local cache. + * + * @static + * @param Google_Http_Request $resp + * @return bool True if the request is cacheable. + * False if the request is uncacheable. + */ + public static function isRequestCacheable(Google_Http_Request $resp) + { + $method = $resp->getRequestMethod(); + if (! in_array($method, self::$CACHEABLE_HTTP_METHODS)) { + return false; + } + + // Don't cache authorized requests/responses. + // [rfc2616-14.8] When a shared cache receives a request containing an + // Authorization field, it MUST NOT return the corresponding response + // as a reply to any other request... + if ($resp->getRequestHeader("authorization")) { + return false; + } + + return true; + } + + /** + * Check if an HTTP response can be cached by a private local cache. + * + * @static + * @param Google_Http_Request $resp + * @return bool True if the response is cacheable. + * False if the response is un-cacheable. + */ + public static function isResponseCacheable(Google_Http_Request $resp) + { + // First, check if the HTTP request was cacheable before inspecting the + // HTTP response. + if (false == self::isRequestCacheable($resp)) { + return false; + } + + $code = $resp->getResponseHttpCode(); + if (! in_array($code, self::$CACHEABLE_STATUS_CODES)) { + return false; + } + + // The resource is uncacheable if the resource is already expired and + // the resource doesn't have an ETag for revalidation. + $etag = $resp->getResponseHeader("etag"); + if (self::isExpired($resp) && $etag == false) { + return false; + } + + // [rfc2616-14.9.2] If [no-store is] sent in a response, a cache MUST NOT + // store any part of either this response or the request that elicited it. + $cacheControl = $resp->getParsedCacheControl(); + if (isset($cacheControl['no-store'])) { + return false; + } + + // Pragma: no-cache is an http request directive, but is occasionally + // used as a response header incorrectly. + $pragma = $resp->getResponseHeader('pragma'); + if ($pragma == 'no-cache' || strpos($pragma, 'no-cache') !== false) { + return false; + } + + // [rfc2616-14.44] Vary: * is extremely difficult to cache. "It implies that + // a cache cannot determine from the request headers of a subsequent request + // whether this response is the appropriate representation." + // Given this, we deem responses with the Vary header as uncacheable. + $vary = $resp->getResponseHeader('vary'); + if ($vary) { + return false; + } + + return true; + } + + /** + * @static + * @param Google_Http_Request $resp + * @return bool True if the HTTP response is considered to be expired. + * False if it is considered to be fresh. + */ + public static function isExpired(Google_Http_Request $resp) + { + // HTTP/1.1 clients and caches MUST treat other invalid date formats, + // especially including the value “0â€, as in the past. + $parsedExpires = false; + $responseHeaders = $resp->getResponseHeaders(); + + if (isset($responseHeaders['expires'])) { + $rawExpires = $responseHeaders['expires']; + // Check for a malformed expires header first. + if (empty($rawExpires) || (is_numeric($rawExpires) && $rawExpires <= 0)) { + return true; + } + + // See if we can parse the expires header. + $parsedExpires = strtotime($rawExpires); + if (false == $parsedExpires || $parsedExpires <= 0) { + return true; + } + } + + // Calculate the freshness of an http response. + $freshnessLifetime = false; + $cacheControl = $resp->getParsedCacheControl(); + if (isset($cacheControl['max-age'])) { + $freshnessLifetime = $cacheControl['max-age']; + } + + $rawDate = $resp->getResponseHeader('date'); + $parsedDate = strtotime($rawDate); + + if (empty($rawDate) || false == $parsedDate) { + // We can't default this to now, as that means future cache reads + // will always pass with the logic below, so we will require a + // date be injected if not supplied. + throw new Google_Exception("All cacheable requests must have creation dates."); + } + + if (false == $freshnessLifetime && isset($responseHeaders['expires'])) { + $freshnessLifetime = $parsedExpires - $parsedDate; + } + + if (false == $freshnessLifetime) { + return true; + } + + // Calculate the age of an http response. + $age = max(0, time() - $parsedDate); + if (isset($responseHeaders['age'])) { + $age = max($age, strtotime($responseHeaders['age'])); + } + + return $freshnessLifetime <= $age; + } + + /** + * Determine if a cache entry should be revalidated with by the origin. + * + * @param Google_Http_Request $response + * @return bool True if the entry is expired, else return false. + */ + public static function mustRevalidate(Google_Http_Request $response) + { + // [13.3] When a cache has a stale entry that it would like to use as a + // response to a client's request, it first has to check with the origin + // server to see if its cached entry is still usable. + return self::isExpired($response); + } +} diff --git a/oauth/Google/Http/MediaFileUpload.php b/oauth/Google/Http/MediaFileUpload.php new file mode 100644 index 0000000..a934f56 --- /dev/null +++ b/oauth/Google/Http/MediaFileUpload.php @@ -0,0 +1,292 @@ + + * + */ +class Google_Http_MediaFileUpload +{ + const UPLOAD_MEDIA_TYPE = 'media'; + const UPLOAD_MULTIPART_TYPE = 'multipart'; + const UPLOAD_RESUMABLE_TYPE = 'resumable'; + + /** @var string $mimeType */ + private $mimeType; + + /** @var string $data */ + private $data; + + /** @var bool $resumable */ + private $resumable; + + /** @var int $chunkSize */ + private $chunkSize; + + /** @var int $size */ + private $size; + + /** @var string $resumeUri */ + private $resumeUri; + + /** @var int $progress */ + private $progress; + + /** @var Google_Client */ + private $client; + + /** @var Google_Http_Request */ + private $request; + + /** @var string */ + private $boundary; + + /** + * Result code from last HTTP call + * @var int + */ + private $httpResultCode; + + /** + * @param $mimeType string + * @param $data string The bytes you want to upload. + * @param $resumable bool + * @param bool $chunkSize File will be uploaded in chunks of this many bytes. + * only used if resumable=True + */ + public function __construct( + Google_Client $client, + Google_Http_Request $request, + $mimeType, + $data, + $resumable = false, + $chunkSize = false, + $boundary = false + ) { + $this->client = $client; + $this->request = $request; + $this->mimeType = $mimeType; + $this->data = $data; + $this->size = strlen($this->data); + $this->resumable = $resumable; + if (!$chunkSize) { + $chunkSize = 256 * 1024; + } + $this->chunkSize = $chunkSize; + $this->progress = 0; + $this->boundary = $boundary; + + // Process Media Request + $this->process(); + } + + /** + * Set the size of the file that is being uploaded. + * @param $size - int file size in bytes + */ + public function setFileSize($size) + { + $this->size = $size; + } + + /** + * Return the progress on the upload + * @return int progress in bytes uploaded. + */ + public function getProgress() + { + return $this->progress; + } + + /** + * Return the HTTP result code from the last call made. + * @return int code + */ + public function getHttpResultCode() + { + return $this->httpResultCode; + } + + /** + * Send the next part of the file to upload. + * @param [$chunk] the next set of bytes to send. If false will used $data passed + * at construct time. + */ + public function nextChunk($chunk = false) + { + if (false == $this->resumeUri) { + $this->resumeUri = $this->getResumeUri(); + } + + if (false == $chunk) { + $chunk = substr($this->data, $this->progress, $this->chunkSize); + } + + $lastBytePos = $this->progress + strlen($chunk) - 1; + $headers = array( + 'content-range' => "bytes $this->progress-$lastBytePos/$this->size", + 'content-type' => $this->request->getRequestHeader('content-type'), + 'content-length' => $this->chunkSize, + 'expect' => '', + ); + + $httpRequest = new Google_Http_Request( + $this->resumeUri, + 'PUT', + $headers, + $chunk + ); + + if ($this->client->getClassConfig("Google_Http_Request", "enable_gzip_for_uploads")) { + $httpRequest->enableGzip(); + } else { + $httpRequest->disableGzip(); + } + + $response = $this->client->getIo()->makeRequest($httpRequest); + $response->setExpectedClass($this->request->getExpectedClass()); + $code = $response->getResponseHttpCode(); + $this->httpResultCode = $code; + + if (308 == $code) { + // Track the amount uploaded. + $range = explode('-', $response->getResponseHeader('range')); + $this->progress = $range[1] + 1; + + // Allow for changing upload URLs. + $location = $response->getResponseHeader('location'); + if ($location) { + $this->resumeUri = $location; + } + + // No problems, but upload not complete. + return false; + } else { + return Google_Http_REST::decodeHttpResponse($response); + } + } + + /** + * @param $meta + * @param $params + * @return array|bool + * @visible for testing + */ + private function process() + { + $postBody = false; + $contentType = false; + + $meta = $this->request->getPostBody(); + $meta = is_string($meta) ? json_decode($meta, true) : $meta; + + $uploadType = $this->getUploadType($meta); + $this->request->setQueryParam('uploadType', $uploadType); + $this->transformToUploadUrl(); + $mimeType = $this->mimeType ? + $this->mimeType : + $this->request->getRequestHeader('content-type'); + + if (self::UPLOAD_RESUMABLE_TYPE == $uploadType) { + $contentType = $mimeType; + $postBody = is_string($meta) ? $meta : json_encode($meta); + } else if (self::UPLOAD_MEDIA_TYPE == $uploadType) { + $contentType = $mimeType; + $postBody = $this->data; + } else if (self::UPLOAD_MULTIPART_TYPE == $uploadType) { + // This is a multipart/related upload. + $boundary = $this->boundary ? $this->boundary : mt_rand(); + $boundary = str_replace('"', '', $boundary); + $contentType = 'multipart/related; boundary=' . $boundary; + $related = "--$boundary\r\n"; + $related .= "Content-Type: application/json; charset=UTF-8\r\n"; + $related .= "\r\n" . json_encode($meta) . "\r\n"; + $related .= "--$boundary\r\n"; + $related .= "Content-Type: $mimeType\r\n"; + $related .= "Content-Transfer-Encoding: base64\r\n"; + $related .= "\r\n" . base64_encode($this->data) . "\r\n"; + $related .= "--$boundary--"; + $postBody = $related; + } + + $this->request->setPostBody($postBody); + + if (isset($contentType) && $contentType) { + $contentTypeHeader['content-type'] = $contentType; + $this->request->setRequestHeaders($contentTypeHeader); + } + } + + private function transformToUploadUrl() + { + $base = $this->request->getBaseComponent(); + $this->request->setBaseComponent($base . '/upload'); + } + + /** + * Valid upload types: + * - resumable (UPLOAD_RESUMABLE_TYPE) + * - media (UPLOAD_MEDIA_TYPE) + * - multipart (UPLOAD_MULTIPART_TYPE) + * @param $meta + * @return string + * @visible for testing + */ + public function getUploadType($meta) + { + if ($this->resumable) { + return self::UPLOAD_RESUMABLE_TYPE; + } + + if (false == $meta && $this->data) { + return self::UPLOAD_MEDIA_TYPE; + } + + return self::UPLOAD_MULTIPART_TYPE; + } + + private function getResumeUri() + { + $result = null; + $body = $this->request->getPostBody(); + if ($body) { + $headers = array( + 'content-type' => 'application/json; charset=UTF-8', + 'content-length' => Google_Utils::getStrLen($body), + 'x-upload-content-type' => $this->mimeType, + 'x-upload-content-length' => $this->size, + 'expect' => '', + ); + $this->request->setRequestHeaders($headers); + } + + $response = $this->client->getIo()->makeRequest($this->request); + $location = $response->getResponseHeader('location'); + $code = $response->getResponseHttpCode(); + + if (200 == $code && true == $location) { + return $location; + } + throw new Google_Exception("Failed to start the resumable upload"); + } +} diff --git a/oauth/Google/Http/REST.php b/oauth/Google/Http/REST.php new file mode 100644 index 0000000..3c318e4 --- /dev/null +++ b/oauth/Google/Http/REST.php @@ -0,0 +1,139 @@ + + * @author Chirag Shah + */ +class Google_Http_REST +{ + /** + * Executes a Google_Http_Request + * + * @param Google_Client $client + * @param Google_Http_Request $req + * @return array decoded result + * @throws Google_Service_Exception on server side error (ie: not authenticated, + * invalid or malformed post body, invalid url) + */ + public static function execute(Google_Client $client, Google_Http_Request $req) + { + $httpRequest = $client->getIo()->makeRequest($req); + $httpRequest->setExpectedClass($req->getExpectedClass()); + return self::decodeHttpResponse($httpRequest); + } + + /** + * Decode an HTTP Response. + * @static + * @throws Google_Service_Exception + * @param Google_Http_Request $response The http response to be decoded. + * @return mixed|null + */ + public static function decodeHttpResponse($response) + { + $code = $response->getResponseHttpCode(); + $body = $response->getResponseBody(); + $decoded = null; + + if ((intVal($code)) >= 300) { + $decoded = json_decode($body, true); + $err = 'Error calling ' . $response->getRequestMethod() . ' ' . $response->getUrl(); + if (isset($decoded['error']) && + isset($decoded['error']['message']) && + isset($decoded['error']['code'])) { + // if we're getting a json encoded error definition, use that instead of the raw response + // body for improved readability + $err .= ": ({$decoded['error']['code']}) {$decoded['error']['message']}"; + } else { + $err .= ": ($code) $body"; + } + + $errors = null; + // Specific check for APIs which don't return error details, such as Blogger. + if (isset($decoded['error']) && isset($decoded['error']['errors'])) { + $errors = $decoded['error']['errors']; + } + + throw new Google_Service_Exception($err, $code, null, $errors); + } + + // Only attempt to decode the response, if the response code wasn't (204) 'no content' + if ($code != '204') { + $decoded = json_decode($body, true); + if ($decoded === null || $decoded === "") { + throw new Google_Service_Exception("Invalid json in service response: $body"); + } + + if ($response->getExpectedClass()) { + $class = $response->getExpectedClass(); + $decoded = new $class($decoded); + } + } + return $decoded; + } + + /** + * Parse/expand request parameters and create a fully qualified + * request uri. + * @static + * @param string $servicePath + * @param string $restPath + * @param array $params + * @return string $requestUrl + */ + public static function createRequestUri($servicePath, $restPath, $params) + { + $requestUrl = $servicePath . $restPath; + $uriTemplateVars = array(); + $queryVars = array(); + foreach ($params as $paramName => $paramSpec) { + if ($paramSpec['type'] == 'boolean') { + $paramSpec['value'] = ($paramSpec['value']) ? 'true' : 'false'; + } + if ($paramSpec['location'] == 'path') { + $uriTemplateVars[$paramName] = $paramSpec['value']; + } else if ($paramSpec['location'] == 'query') { + if (isset($paramSpec['repeated']) && is_array($paramSpec['value'])) { + foreach ($paramSpec['value'] as $value) { + $queryVars[] = $paramName . '=' . rawurlencode($value); + } + } else { + $queryVars[] = $paramName . '=' . rawurlencode($paramSpec['value']); + } + } + } + + if (count($uriTemplateVars)) { + $uriTemplateParser = new Google_Utils_URITemplate(); + $requestUrl = $uriTemplateParser->parse($requestUrl, $uriTemplateVars); + } + + if (count($queryVars)) { + $requestUrl .= '?' . implode($queryVars, '&'); + } + + return $requestUrl; + } +} diff --git a/oauth/Google/Http/Request.php b/oauth/Google/Http/Request.php new file mode 100644 index 0000000..8643694 --- /dev/null +++ b/oauth/Google/Http/Request.php @@ -0,0 +1,476 @@ + + * @author Chirag Shah + * + */ +class Google_Http_Request +{ + const GZIP_UA = " (gzip)"; + + private $batchHeaders = array( + 'Content-Type' => 'application/http', + 'Content-Transfer-Encoding' => 'binary', + 'MIME-Version' => '1.0', + ); + + protected $queryParams; + protected $requestMethod; + protected $requestHeaders; + protected $baseComponent = null; + protected $path; + protected $postBody; + protected $userAgent; + protected $canGzip = null; + + protected $responseHttpCode; + protected $responseHeaders; + protected $responseBody; + + protected $expectedClass; + + public $accessKey; + + public function __construct( + $url, + $method = 'GET', + $headers = array(), + $postBody = null + ) { + $this->setUrl($url); + $this->setRequestMethod($method); + $this->setRequestHeaders($headers); + $this->setPostBody($postBody); + } + + /** + * Misc function that returns the base url component of the $url + * used by the OAuth signing class to calculate the base string + * @return string The base url component of the $url. + */ + public function getBaseComponent() + { + return $this->baseComponent; + } + + /** + * Set the base URL that path and query parameters will be added to. + * @param $baseComponent string + */ + public function setBaseComponent($baseComponent) + { + $this->baseComponent = $baseComponent; + } + + /** + * Enable support for gzipped responses with this request. + */ + public function enableGzip() + { + $this->setRequestHeaders(array("Accept-Encoding" => "gzip")); + $this->canGzip = true; + $this->setUserAgent($this->userAgent); + } + + /** + * Disable support for gzip responses with this request. + */ + public function disableGzip() + { + if ( + isset($this->requestHeaders['accept-encoding']) && + $this->requestHeaders['accept-encoding'] == "gzip" + ) { + unset($this->requestHeaders['accept-encoding']); + } + $this->canGzip = false; + $this->userAgent = str_replace(self::GZIP_UA, "", $this->userAgent); + } + + /** + * Can this request accept a gzip response? + * @return bool + */ + public function canGzip() + { + return $this->canGzip; + } + + /** + * Misc function that returns an array of the query parameters of the current + * url used by the OAuth signing class to calculate the signature + * @return array Query parameters in the query string. + */ + public function getQueryParams() + { + return $this->queryParams; + } + + /** + * Set a new query parameter. + * @param $key - string to set, does not need to be URL encoded + * @param $value - string to set, does not need to be URL encoded + */ + public function setQueryParam($key, $value) + { + $this->queryParams[$key] = $value; + } + + /** + * @return string HTTP Response Code. + */ + public function getResponseHttpCode() + { + return (int) $this->responseHttpCode; + } + + /** + * @param int $responseHttpCode HTTP Response Code. + */ + public function setResponseHttpCode($responseHttpCode) + { + $this->responseHttpCode = $responseHttpCode; + } + + /** + * @return $responseHeaders (array) HTTP Response Headers. + */ + public function getResponseHeaders() + { + return $this->responseHeaders; + } + + /** + * @return string HTTP Response Body + */ + public function getResponseBody() + { + return $this->responseBody; + } + + /** + * Set the class the response to this request should expect. + * + * @param $class string the class name + */ + public function setExpectedClass($class) + { + $this->expectedClass = $class; + } + + /** + * Retrieve the expected class the response should expect. + * @return string class name + */ + public function getExpectedClass() + { + return $this->expectedClass; + } + + /** + * @param array $headers The HTTP response headers + * to be normalized. + */ + public function setResponseHeaders($headers) + { + $headers = Google_Utils::normalize($headers); + if ($this->responseHeaders) { + $headers = array_merge($this->responseHeaders, $headers); + } + + $this->responseHeaders = $headers; + } + + /** + * @param string $key + * @return array|boolean Returns the requested HTTP header or + * false if unavailable. + */ + public function getResponseHeader($key) + { + return isset($this->responseHeaders[$key]) + ? $this->responseHeaders[$key] + : false; + } + + /** + * @param string $responseBody The HTTP response body. + */ + public function setResponseBody($responseBody) + { + $this->responseBody = $responseBody; + } + + /** + * @return string $url The request URL. + */ + public function getUrl() + { + return $this->baseComponent . $this->path . + (count($this->queryParams) ? + "?" . $this->buildQuery($this->queryParams) : + ''); + } + + /** + * @return string $method HTTP Request Method. + */ + public function getRequestMethod() + { + return $this->requestMethod; + } + + /** + * @return array $headers HTTP Request Headers. + */ + public function getRequestHeaders() + { + return $this->requestHeaders; + } + + /** + * @param string $key + * @return array|boolean Returns the requested HTTP header or + * false if unavailable. + */ + public function getRequestHeader($key) + { + return isset($this->requestHeaders[$key]) + ? $this->requestHeaders[$key] + : false; + } + + /** + * @return string $postBody HTTP Request Body. + */ + public function getPostBody() + { + return $this->postBody; + } + + /** + * @param string $url the url to set + */ + public function setUrl($url) + { + if (substr($url, 0, 4) != 'http') { + // Force the path become relative. + if (substr($url, 0, 1) !== '/') { + $url = '/' . $url; + } + } + $parts = parse_url($url); + if (isset($parts['host'])) { + $this->baseComponent = sprintf( + "%s%s%s", + isset($parts['scheme']) ? $parts['scheme'] . "://" : '', + isset($parts['host']) ? $parts['host'] : '', + isset($parts['port']) ? ":" . $parts['port'] : '' + ); + } + $this->path = isset($parts['path']) ? $parts['path'] : ''; + $this->queryParams = array(); + if (isset($parts['query'])) { + $this->queryParams = $this->parseQuery($parts['query']); + } + } + + /** + * @param string $method Set he HTTP Method and normalize + * it to upper-case, as required by HTTP. + * + */ + public function setRequestMethod($method) + { + $this->requestMethod = strtoupper($method); + } + + /** + * @param array $headers The HTTP request headers + * to be set and normalized. + */ + public function setRequestHeaders($headers) + { + $headers = Google_Utils::normalize($headers); + if ($this->requestHeaders) { + $headers = array_merge($this->requestHeaders, $headers); + } + $this->requestHeaders = $headers; + } + + /** + * @param string $postBody the postBody to set + */ + public function setPostBody($postBody) + { + $this->postBody = $postBody; + } + + /** + * Set the User-Agent Header. + * @param string $userAgent The User-Agent. + */ + public function setUserAgent($userAgent) + { + $this->userAgent = $userAgent; + if ($this->canGzip) { + $this->userAgent = $userAgent . self::GZIP_UA; + } + } + + /** + * @return string The User-Agent. + */ + public function getUserAgent() + { + return $this->userAgent; + } + + /** + * Returns a cache key depending on if this was an OAuth signed request + * in which case it will use the non-signed url and access key to make this + * cache key unique per authenticated user, else use the plain request url + * @return string The md5 hash of the request cache key. + */ + public function getCacheKey() + { + $key = $this->getUrl(); + + if (isset($this->accessKey)) { + $key .= $this->accessKey; + } + + if (isset($this->requestHeaders['authorization'])) { + $key .= $this->requestHeaders['authorization']; + } + + return md5($key); + } + + public function getParsedCacheControl() + { + $parsed = array(); + $rawCacheControl = $this->getResponseHeader('cache-control'); + if ($rawCacheControl) { + $rawCacheControl = str_replace(', ', '&', $rawCacheControl); + parse_str($rawCacheControl, $parsed); + } + + return $parsed; + } + + /** + * @param string $id + * @return string A string representation of the HTTP Request. + */ + public function toBatchString($id) + { + $str = ''; + $path = parse_url($this->getUrl(), PHP_URL_PATH) . "?" . + http_build_query($this->queryParams); + $str .= $this->getRequestMethod() . ' ' . $path . " HTTP/1.1\n"; + + foreach ($this->getRequestHeaders() as $key => $val) { + $str .= $key . ': ' . $val . "\n"; + } + + if ($this->getPostBody()) { + $str .= "\n"; + $str .= $this->getPostBody(); + } + + $headers = ''; + foreach ($this->batchHeaders as $key => $val) { + $headers .= $key . ': ' . $val . "\n"; + } + + $headers .= "Content-ID: $id\n"; + $str = $headers . "\n" . $str; + + return $str; + } + + /** + * Our own version of parse_str that allows for multiple variables + * with the same name. + * @param $string - the query string to parse + */ + private function parseQuery($string) + { + $return = array(); + $parts = explode("&", $string); + foreach ($parts as $part) { + list($key, $value) = explode('=', $part, 2); + $value = urldecode($value); + if (isset($return[$key])) { + if (!is_array($return[$key])) { + $return[$key] = array($return[$key]); + } + $return[$key][] = $value; + } else { + $return[$key] = $value; + } + } + return $return; + } + + /** + * A version of build query that allows for multiple + * duplicate keys. + * @param $parts array of key value pairs + */ + private function buildQuery($parts) + { + $return = array(); + foreach ($parts as $key => $value) { + if (is_array($value)) { + foreach ($value as $v) { + $return[] = urlencode($key) . "=" . urlencode($v); + } + } else { + $return[] = urlencode($key) . "=" . urlencode($value); + } + } + return implode('&', $return); + } + + /** + * If we're POSTing and have no body to send, we can send the query + * parameters in there, which avoids length issues with longer query + * params. + */ + public function maybeMoveParametersToBody() + { + if ($this->getRequestMethod() == "POST" && empty($this->postBody)) { + $this->setRequestHeaders( + array( + "content-type" => + "application/x-www-form-urlencoded; charset=UTF-8" + ) + ); + $this->setPostBody($this->buildQuery($this->queryParams)); + $this->queryParams = array(); + } + } +} diff --git a/oauth/Google/IO/Abstract.php b/oauth/Google/IO/Abstract.php new file mode 100644 index 0000000..2d80afd --- /dev/null +++ b/oauth/Google/IO/Abstract.php @@ -0,0 +1,329 @@ + null, "PUT" => null); + + /** @var Google_Client */ + protected $client; + + public function __construct(Google_Client $client) + { + $this->client = $client; + $timeout = $client->getClassConfig('Google_IO_Abstract', 'request_timeout_seconds'); + if ($timeout > 0) { + $this->setTimeout($timeout); + } + } + + /** + * Executes a Google_Http_Request and returns the resulting populated Google_Http_Request + * @param Google_Http_Request $request + * @return Google_Http_Request $request + */ + abstract public function executeRequest(Google_Http_Request $request); + + /** + * Set options that update the transport implementation's behavior. + * @param $options + */ + abstract public function setOptions($options); + + /** + * Set the maximum request time in seconds. + * @param $timeout in seconds + */ + abstract public function setTimeout($timeout); + + /** + * Get the maximum request time in seconds. + * @return timeout in seconds + */ + abstract public function getTimeout(); + + /** + * Test for the presence of a cURL header processing bug + * + * The cURL bug was present in versions prior to 7.30.0 and caused the header + * length to be miscalculated when a "Connection established" header added by + * some proxies was present. + * + * @return boolean + */ + abstract protected function needsQuirk(); + + /** + * @visible for testing. + * Cache the response to an HTTP request if it is cacheable. + * @param Google_Http_Request $request + * @return bool Returns true if the insertion was successful. + * Otherwise, return false. + */ + public function setCachedRequest(Google_Http_Request $request) + { + // Determine if the request is cacheable. + if (Google_Http_CacheParser::isResponseCacheable($request)) { + $this->client->getCache()->set($request->getCacheKey(), $request); + return true; + } + + return false; + } + + /** + * Execute an HTTP Request + * + * @param Google_HttpRequest $request the http request to be executed + * @return Google_HttpRequest http request with the response http code, + * response headers and response body filled in + * @throws Google_IO_Exception on curl or IO error + */ + public function makeRequest(Google_Http_Request $request) + { + // First, check to see if we have a valid cached version. + $cached = $this->getCachedRequest($request); + if ($cached !== false && $cached instanceof Google_Http_Request) { + if (!$this->checkMustRevalidateCachedRequest($cached, $request)) { + return $cached; + } + } + + if (array_key_exists($request->getRequestMethod(), self::$ENTITY_HTTP_METHODS)) { + $request = $this->processEntityRequest($request); + } + + list($responseData, $responseHeaders, $respHttpCode) = $this->executeRequest($request); + + if ($respHttpCode == 304 && $cached) { + // If the server responded NOT_MODIFIED, return the cached request. + $this->updateCachedRequest($cached, $responseHeaders); + return $cached; + } + + if (!isset($responseHeaders['Date']) && !isset($responseHeaders['date'])) { + $responseHeaders['Date'] = date("r"); + } + + $request->setResponseHttpCode($respHttpCode); + $request->setResponseHeaders($responseHeaders); + $request->setResponseBody($responseData); + // Store the request in cache (the function checks to see if the request + // can actually be cached) + $this->setCachedRequest($request); + return $request; + } + + /** + * @visible for testing. + * @param Google_Http_Request $request + * @return Google_Http_Request|bool Returns the cached object or + * false if the operation was unsuccessful. + */ + public function getCachedRequest(Google_Http_Request $request) + { + if (false === Google_Http_CacheParser::isRequestCacheable($request)) { + return false; + } + + return $this->client->getCache()->get($request->getCacheKey()); + } + + /** + * @visible for testing + * Process an http request that contains an enclosed entity. + * @param Google_Http_Request $request + * @return Google_Http_Request Processed request with the enclosed entity. + */ + public function processEntityRequest(Google_Http_Request $request) + { + $postBody = $request->getPostBody(); + $contentType = $request->getRequestHeader("content-type"); + + // Set the default content-type as application/x-www-form-urlencoded. + if (false == $contentType) { + $contentType = self::FORM_URLENCODED; + $request->setRequestHeaders(array('content-type' => $contentType)); + } + + // Force the payload to match the content-type asserted in the header. + if ($contentType == self::FORM_URLENCODED && is_array($postBody)) { + $postBody = http_build_query($postBody, '', '&'); + $request->setPostBody($postBody); + } + + // Make sure the content-length header is set. + if (!$postBody || is_string($postBody)) { + $postsLength = strlen($postBody); + $request->setRequestHeaders(array('content-length' => $postsLength)); + } + + return $request; + } + + /** + * Check if an already cached request must be revalidated, and if so update + * the request with the correct ETag headers. + * @param Google_Http_Request $cached A previously cached response. + * @param Google_Http_Request $request The outbound request. + * return bool If the cached object needs to be revalidated, false if it is + * still current and can be re-used. + */ + protected function checkMustRevalidateCachedRequest($cached, $request) + { + if (Google_Http_CacheParser::mustRevalidate($cached)) { + $addHeaders = array(); + if ($cached->getResponseHeader('etag')) { + // [13.3.4] If an entity tag has been provided by the origin server, + // we must use that entity tag in any cache-conditional request. + $addHeaders['If-None-Match'] = $cached->getResponseHeader('etag'); + } elseif ($cached->getResponseHeader('date')) { + $addHeaders['If-Modified-Since'] = $cached->getResponseHeader('date'); + } + + $request->setRequestHeaders($addHeaders); + return true; + } else { + return false; + } + } + + /** + * Update a cached request, using the headers from the last response. + * @param Google_HttpRequest $cached A previously cached response. + * @param mixed Associative array of response headers from the last request. + */ + protected function updateCachedRequest($cached, $responseHeaders) + { + if (isset($responseHeaders['connection'])) { + $hopByHop = array_merge( + self::$HOP_BY_HOP, + explode( + ',', + $responseHeaders['connection'] + ) + ); + + $endToEnd = array(); + foreach ($hopByHop as $key) { + if (isset($responseHeaders[$key])) { + $endToEnd[$key] = $responseHeaders[$key]; + } + } + $cached->setResponseHeaders($endToEnd); + } + } + + /** + * Used by the IO lib and also the batch processing. + * + * @param $respData + * @param $headerSize + * @return array + */ + public function parseHttpResponse($respData, $headerSize) + { + // check proxy header + foreach (self::$CONNECTION_ESTABLISHED_HEADERS as $established_header) { + if (stripos($respData, $established_header) !== false) { + // existed, remove it + $respData = str_ireplace($established_header, '', $respData); + // Subtract the proxy header size unless the cURL bug prior to 7.30.0 + // is present which prevented the proxy header size from being taken into + // account. + if (!$this->needsQuirk()) { + $headerSize -= strlen($established_header); + } + break; + } + } + + if ($headerSize) { + $responseBody = substr($respData, $headerSize); + $responseHeaders = substr($respData, 0, $headerSize); + } else { + list($responseHeaders, $responseBody) = explode("\r\n\r\n", $respData, 2); + } + + $responseHeaders = $this->getHttpResponseHeaders($responseHeaders); + return array($responseHeaders, $responseBody); + } + + /** + * Parse out headers from raw headers + * @param rawHeaders array or string + * @return array + */ + public function getHttpResponseHeaders($rawHeaders) + { + if (is_array($rawHeaders)) { + return $this->parseArrayHeaders($rawHeaders); + } else { + return $this->parseStringHeaders($rawHeaders); + } + } + + private function parseStringHeaders($rawHeaders) + { + $headers = array(); + $responseHeaderLines = explode("\r\n", $rawHeaders); + foreach ($responseHeaderLines as $headerLine) { + if ($headerLine && strpos($headerLine, ':') !== false) { + list($header, $value) = explode(': ', $headerLine, 2); + $header = strtolower($header); + if (isset($responseHeaders[$header])) { + $headers[$header] .= "\n" . $value; + } else { + $headers[$header] = $value; + } + } + } + return $headers; + } + + private function parseArrayHeaders($rawHeaders) + { + $header_count = count($rawHeaders); + $headers = array(); + + for ($i = 0; $i < $header_count; $i++) { + $header = $rawHeaders[$i]; + // Times will have colons in - so we just want the first match. + $header_parts = explode(': ', $header, 2); + if (count($header_parts) == 2) { + $headers[$header_parts[0]] = $header_parts[1]; + } + } + + return $headers; + } +} diff --git a/oauth/Google/IO/Curl.php b/oauth/Google/IO/Curl.php new file mode 100644 index 0000000..57a0571 --- /dev/null +++ b/oauth/Google/IO/Curl.php @@ -0,0 +1,137 @@ + + */ + +require_once 'Google/IO/Abstract.php'; + +class Google_IO_Curl extends Google_IO_Abstract +{ + // cURL hex representation of version 7.30.0 + const NO_QUIRK_VERSION = 0x071E00; + + private $options = array(); + /** + * Execute an HTTP Request + * + * @param Google_HttpRequest $request the http request to be executed + * @return Google_HttpRequest http request with the response http code, + * response headers and response body filled in + * @throws Google_IO_Exception on curl or IO error + */ + public function executeRequest(Google_Http_Request $request) + { + $curl = curl_init(); + + if ($request->getPostBody()) { + curl_setopt($curl, CURLOPT_POSTFIELDS, $request->getPostBody()); + } + + $requestHeaders = $request->getRequestHeaders(); + if ($requestHeaders && is_array($requestHeaders)) { + $curlHeaders = array(); + foreach ($requestHeaders as $k => $v) { + $curlHeaders[] = "$k: $v"; + } + curl_setopt($curl, CURLOPT_HTTPHEADER, $curlHeaders); + } + + curl_setopt($curl, CURLOPT_URL, $request->getUrl()); + + curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $request->getRequestMethod()); + curl_setopt($curl, CURLOPT_USERAGENT, $request->getUserAgent()); + + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curl, CURLOPT_HEADER, true); + + if ($request->canGzip()) { + curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate'); + } + + foreach ($this->options as $key => $var) { + curl_setopt($curl, $key, $var); + } + + if (!isset($this->options[CURLOPT_CAINFO])) { + curl_setopt($curl, CURLOPT_CAINFO, dirname(__FILE__) . '/cacerts.pem'); + } + + $response = curl_exec($curl); + if ($response === false) { + throw new Google_IO_Exception(curl_error($curl)); + } + $headerSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE); + + list($responseHeaders, $responseBody) = $this->parseHttpResponse($response, $headerSize); + + $responseCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); + + return array($responseBody, $responseHeaders, $responseCode); + } + + /** + * Set options that update the transport implementation's behavior. + * @param $options + */ + public function setOptions($options) + { + $this->options = $options + $this->options; + } + + /** + * Set the maximum request time in seconds. + * @param $timeout in seconds + */ + public function setTimeout($timeout) + { + // Since this timeout is really for putting a bound on the time + // we'll set them both to the same. If you need to specify a longer + // CURLOPT_TIMEOUT, or a tigher CONNECTTIMEOUT, the best thing to + // do is use the setOptions method for the values individually. + $this->options[CURLOPT_CONNECTTIMEOUT] = $timeout; + $this->options[CURLOPT_TIMEOUT] = $timeout; + } + + /** + * Get the maximum request time in seconds. + * @return timeout in seconds + */ + public function getTimeout() + { + return $this->options[CURLOPT_TIMEOUT]; + } + + /** + * Test for the presence of a cURL header processing bug + * + * {@inheritDoc} + * + * @return boolean + */ + protected function needsQuirk() + { + $ver = curl_version(); + $versionNum = $ver['version_number']; + return $versionNum < Google_IO_Curl::NO_QUIRK_VERSION; + } +} diff --git a/oauth/Google/IO/Exception.php b/oauth/Google/IO/Exception.php new file mode 100644 index 0000000..28c2d8c --- /dev/null +++ b/oauth/Google/IO/Exception.php @@ -0,0 +1,22 @@ + + */ + +require_once 'Google/IO/Abstract.php'; + +class Google_IO_Stream extends Google_IO_Abstract +{ + const TIMEOUT = "timeout"; + const ZLIB = "compress.zlib://"; + private $options = array(); + private $trappedErrorNumber; + private $trappedErrorString; + + private static $DEFAULT_HTTP_CONTEXT = array( + "follow_location" => 0, + "ignore_errors" => 1, + ); + + private static $DEFAULT_SSL_CONTEXT = array( + "verify_peer" => true, + ); + + /** + * Execute an HTTP Request + * + * @param Google_HttpRequest $request the http request to be executed + * @return Google_HttpRequest http request with the response http code, + * response headers and response body filled in + * @throws Google_IO_Exception on curl or IO error + */ + public function executeRequest(Google_Http_Request $request) + { + $default_options = stream_context_get_options(stream_context_get_default()); + + $requestHttpContext = array_key_exists('http', $default_options) ? + $default_options['http'] : array(); + + if ($request->getPostBody()) { + $requestHttpContext["content"] = $request->getPostBody(); + } + + $requestHeaders = $request->getRequestHeaders(); + if ($requestHeaders && is_array($requestHeaders)) { + $headers = ""; + foreach ($requestHeaders as $k => $v) { + $headers .= "$k: $v\r\n"; + } + $requestHttpContext["header"] = $headers; + } + + $requestHttpContext["method"] = $request->getRequestMethod(); + $requestHttpContext["user_agent"] = $request->getUserAgent(); + + $requestSslContext = array_key_exists('ssl', $default_options) ? + $default_options['ssl'] : array(); + + if (!array_key_exists("cafile", $requestSslContext)) { + $requestSslContext["cafile"] = dirname(__FILE__) . '/cacerts.pem'; + } + + $options = array( + "http" => array_merge( + self::$DEFAULT_HTTP_CONTEXT, + $requestHttpContext + ), + "ssl" => array_merge( + self::$DEFAULT_SSL_CONTEXT, + $requestSslContext + ) + ); + + $context = stream_context_create($options); + + $url = $request->getUrl(); + + if ($request->canGzip()) { + $url = self::ZLIB . $url; + } + + // We are trapping any thrown errors in this method only and + // throwing an exception. + $this->trappedErrorNumber = null; + $this->trappedErrorString = null; + + // START - error trap. + set_error_handler(array($this, 'trapError')); + $fh = fopen($url, 'r', false, $context); + restore_error_handler(); + // END - error trap. + + if ($this->trappedErrorNumber) { + throw new Google_IO_Exception( + sprintf( + "HTTP Error: Unable to connect: '%s'", + $this->trappedErrorString + ), + $this->trappedErrorNumber + ); + } + + $response_data = false; + $respHttpCode = self::UNKNOWN_CODE; + if ($fh) { + if (isset($this->options[self::TIMEOUT])) { + stream_set_timeout($fh, $this->options[self::TIMEOUT]); + } + + $response_data = stream_get_contents($fh); + fclose($fh); + + $respHttpCode = $this->getHttpResponseCode($http_response_header); + } + + if (false === $response_data) { + throw new Google_IO_Exception( + sprintf( + "HTTP Error: Unable to connect: '%s'", + $respHttpCode + ), + $respHttpCode + ); + } + + $responseHeaders = $this->getHttpResponseHeaders($http_response_header); + + return array($response_data, $responseHeaders, $respHttpCode); + } + + /** + * Set options that update the transport implementation's behavior. + * @param $options + */ + public function setOptions($options) + { + $this->options = $options + $this->options; + } + + /** + * Method to handle errors, used for error handling around + * stream connection methods. + */ + public function trapError($errno, $errstr) + { + $this->trappedErrorNumber = $errno; + $this->trappedErrorString = $errstr; + } + + /** + * Set the maximum request time in seconds. + * @param $timeout in seconds + */ + public function setTimeout($timeout) + { + $this->options[self::TIMEOUT] = $timeout; + } + + /** + * Get the maximum request time in seconds. + * @return timeout in seconds + */ + public function getTimeout() + { + return $this->options[self::TIMEOUT]; + } + + /** + * Test for the presence of a cURL header processing bug + * + * {@inheritDoc} + * + * @return boolean + */ + protected function needsQuirk() + { + return false; + } + + protected function getHttpResponseCode($response_headers) + { + $header_count = count($response_headers); + + for ($i = 0; $i < $header_count; $i++) { + $header = $response_headers[$i]; + if (strncasecmp("HTTP", $header, strlen("HTTP")) == 0) { + $response = explode(' ', $header); + return $response[1]; + } + } + return self::UNKNOWN_CODE; + } +} diff --git a/oauth/Google/IO/cacerts.pem b/oauth/Google/IO/cacerts.pem new file mode 100644 index 0000000..70990f1 --- /dev/null +++ b/oauth/Google/IO/cacerts.pem @@ -0,0 +1,2183 @@ +# Issuer: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. +# Subject: CN=GTE CyberTrust Global Root O=GTE Corporation OU=GTE CyberTrust Solutions, Inc. +# Label: "GTE CyberTrust Global Root" +# Serial: 421 +# MD5 Fingerprint: ca:3d:d3:68:f1:03:5c:d0:32:fa:b8:2b:59:e8:5a:db +# SHA1 Fingerprint: 97:81:79:50:d8:1c:96:70:cc:34:d8:09:cf:79:44:31:36:7e:f4:74 +# SHA256 Fingerprint: a5:31:25:18:8d:21:10:aa:96:4b:02:c7:b7:c6:da:32:03:17:08:94:e5:fb:71:ff:fb:66:67:d5:e6:81:0a:36 +-----BEGIN CERTIFICATE----- +MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD +VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv +bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv +b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV +UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU +cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds +b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH +iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS +r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4 +04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r +GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9 +3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P +lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ +-----END CERTIFICATE----- + +# Issuer: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division +# Subject: CN=Thawte Server CA O=Thawte Consulting cc OU=Certification Services Division +# Label: "Thawte Server CA" +# Serial: 1 +# MD5 Fingerprint: c5:70:c4:a2:ed:53:78:0c:c8:10:53:81:64:cb:d0:1d +# SHA1 Fingerprint: 23:e5:94:94:51:95:f2:41:48:03:b4:d5:64:d2:a3:a3:f5:d8:8b:8c +# SHA256 Fingerprint: b4:41:0b:73:e2:e6:ea:ca:47:fb:c4:2f:8f:a4:01:8a:f4:38:1d:c5:4c:fa:a8:44:50:46:1e:ed:09:45:4d:e9 +-----BEGIN CERTIFICATE----- +MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD +VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm +MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx +MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 +dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl +cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 +DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD +gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 +yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX +L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj +EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG +7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e +QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ +qdq5snUb9kLy78fyGPmJvKP/iiMucEc= +-----END CERTIFICATE----- + +# Issuer: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division +# Subject: CN=Thawte Premium Server CA O=Thawte Consulting cc OU=Certification Services Division +# Label: "Thawte Premium Server CA" +# Serial: 1 +# MD5 Fingerprint: 06:9f:69:79:16:66:90:02:1b:8c:8c:a2:c3:07:6f:3a +# SHA1 Fingerprint: 62:7f:8d:78:27:65:63:99:d2:7d:7f:90:44:c9:fe:b3:f3:3e:fa:9a +# SHA256 Fingerprint: ab:70:36:36:5c:71:54:aa:29:c2:c2:9f:5d:41:91:16:3b:16:2a:22:25:01:13:57:d5:6d:07:ff:a7:bc:1f:72 +-----BEGIN CERTIFICATE----- +MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx +FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD +VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy +dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t +MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB +MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG +A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp +b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl +cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv +bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE +VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ +ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR +uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG +9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI +hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM +pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== +-----END CERTIFICATE----- + +# Issuer: O=Equifax OU=Equifax Secure Certificate Authority +# Subject: O=Equifax OU=Equifax Secure Certificate Authority +# Label: "Equifax Secure CA" +# Serial: 903804111 +# MD5 Fingerprint: 67:cb:9d:c0:13:24:8a:82:9b:b2:17:1e:d1:1b:ec:d4 +# SHA1 Fingerprint: d2:32:09:ad:23:d3:14:23:21:74:e4:0d:7f:9d:62:13:97:86:63:3a +# SHA256 Fingerprint: 08:29:7a:40:47:db:a2:36:80:c7:31:db:6e:31:76:53:ca:78:48:e1:be:bd:3a:0b:01:79:a7:07:f9:2c:f1:78 +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV +UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy +dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 +MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx +dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B +AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f +BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A +cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC +AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ +MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm +aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw +ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj +IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF +MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA +A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y +7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh +1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 +-----END CERTIFICATE----- + +# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority +# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority +# Label: "Verisign Class 3 Public Primary Certification Authority" +# Serial: 149843929435818692848040365716851702463 +# MD5 Fingerprint: 10:fc:63:5d:f6:26:3e:0d:f3:25:be:5f:79:cd:67:67 +# SHA1 Fingerprint: 74:2c:31:92:e6:07:e4:24:eb:45:49:54:2b:e1:bb:c5:3e:61:74:e2 +# SHA256 Fingerprint: e7:68:56:34:ef:ac:f6:9a:ce:93:9a:6b:25:5b:7b:4f:ab:ef:42:93:5b:50:a2:65:ac:b5:cb:60:27:e4:4e:70 +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz +cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 +MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV +BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN +ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE +BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is +I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G +CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do +lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc +AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k +-----END CERTIFICATE----- + +# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network +# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority - G2/(c) 1998 VeriSign, Inc. - For authorized use only/VeriSign Trust Network +# Label: "Verisign Class 3 Public Primary Certification Authority - G2" +# Serial: 167285380242319648451154478808036881606 +# MD5 Fingerprint: a2:33:9b:4c:74:78:73:d4:6c:e7:c1:f3:8d:cb:5c:e9 +# SHA1 Fingerprint: 85:37:1c:a6:e5:50:14:3d:ce:28:03:47:1b:de:3a:09:e8:f8:77:0f +# SHA256 Fingerprint: 83:ce:3c:12:29:68:8a:59:3d:48:5f:81:97:3c:0f:91:95:43:1e:da:37:cc:5e:36:43:0e:79:c7:a8:88:63:8b +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh +c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy +MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp +emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X +DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw +FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg +UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo +YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 +MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB +AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 +pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 +13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID +AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk +U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i +F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY +oJ2daZH9 +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA +# Subject: CN=GlobalSign Root CA O=GlobalSign nv-sa OU=Root CA +# Label: "GlobalSign Root CA" +# Serial: 4835703278459707669005204 +# MD5 Fingerprint: 3e:45:52:15:09:51:92:e1:b7:5d:37:9f:b1:87:29:8a +# SHA1 Fingerprint: b1:bc:96:8b:d4:f4:9d:62:2a:a8:9a:81:f2:15:01:52:a4:1d:82:9c +# SHA256 Fingerprint: eb:d4:10:40:e4:bb:3e:c7:42:c9:e3:81:d3:1e:f2:a4:1a:48:b6:68:5c:96:e7:ce:f3:c1:df:6c:d4:33:1c:99 +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG +A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv +b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw +MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i +YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT +aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ +jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp +xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp +1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG +snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ +U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 +9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E +BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B +AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz +yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE +38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP +AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad +DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME +HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R2 +# Label: "GlobalSign Root CA - R2" +# Serial: 4835703278459682885658125 +# MD5 Fingerprint: 94:14:77:7e:3e:5e:fd:8f:30:bd:41:b0:cf:e7:d0:30 +# SHA1 Fingerprint: 75:e0:ab:b6:13:85:12:27:1c:04:f8:5f:dd:de:38:e4:b7:24:2e:fe +# SHA256 Fingerprint: ca:42:dd:41:74:5f:d0:b8:1e:b9:02:36:2c:f9:d8:bf:71:9d:a1:bd:1b:1e:fc:94:6f:5b:4c:99:f4:2c:1b:9e +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1 +MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL +v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8 +eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq +tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd +C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa +zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB +mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH +V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n +bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG +3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs +J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO +291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS +ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd +AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority +# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 1 Policy Validation Authority +# Label: "ValiCert Class 1 VA" +# Serial: 1 +# MD5 Fingerprint: 65:58:ab:15:ad:57:6c:1e:a8:a7:b5:69:ac:bf:ff:eb +# SHA1 Fingerprint: e5:df:74:3c:b6:01:c4:9b:98:43:dc:ab:8c:e8:6a:81:10:9f:e4:8e +# SHA256 Fingerprint: f4:c1:49:55:1a:30:13:a3:5b:c7:bf:fe:17:a7:f3:44:9b:c1:ab:5b:5a:0a:e7:4b:06:c2:3b:90:00:4c:01:04 +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy +NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y +LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+ +TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y +TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0 +LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW +I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw +nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI +-----END CERTIFICATE----- + +# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority +# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 2 Policy Validation Authority +# Label: "ValiCert Class 2 VA" +# Serial: 1 +# MD5 Fingerprint: a9:23:75:9b:ba:49:36:6e:31:c2:db:f2:e7:66:ba:87 +# SHA1 Fingerprint: 31:7a:2a:d0:7f:2b:33:5e:f5:a1:c3:4e:4b:57:e8:b7:d8:f1:fc:a6 +# SHA256 Fingerprint: 58:d0:17:27:9c:d4:dc:63:ab:dd:b1:96:a6:c9:90:6c:30:c4:e0:87:83:ea:e8:c1:60:99:54:d6:93:55:59:6b +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy +NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY +dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 +WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS +v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v +UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu +IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC +W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd +-----END CERTIFICATE----- + +# Issuer: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority +# Subject: CN=http://www.valicert.com/ O=ValiCert, Inc. OU=ValiCert Class 3 Policy Validation Authority +# Label: "RSA Root Certificate 1" +# Serial: 1 +# MD5 Fingerprint: a2:6f:53:b7:ee:40:db:4a:68:e7:fa:18:d9:10:4b:72 +# SHA1 Fingerprint: 69:bd:8c:f4:9c:d3:00:fb:59:2e:17:93:ca:55:6a:f3:ec:aa:35:fb +# SHA256 Fingerprint: bc:23:f9:8a:31:3c:b9:2d:e3:bb:fc:3a:5a:9f:44:61:ac:39:49:4c:4a:e1:5a:9e:9d:f1:31:e9:9b:73:01:9a +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 +IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz +BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y +aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG +9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMjIzM1oXDTE5MDYy +NjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y +azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw +Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl +cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjmFGWHOjVsQaBalfD +cnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td3zZxFJmP3MKS8edgkpfs +2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89HBFx1cQqY +JJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliE +Zwgs3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJ +n0WuPIqpsHEzXcjFV9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/A +PhmcGcwTTYJBtYze4D1gCCAPRX5ron+jjBXu +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Label: "Verisign Class 3 Public Primary Certification Authority - G3" +# Serial: 206684696279472310254277870180966723415 +# MD5 Fingerprint: cd:68:b6:a7:c7:c4:ce:75:e0:1d:4f:57:44:61:92:09 +# SHA1 Fingerprint: 13:2d:0d:45:53:4b:69:97:cd:b2:d5:c3:39:e2:55:76:60:9b:5c:c6 +# SHA256 Fingerprint: eb:04:cf:5e:b1:f3:9a:fa:76:2f:2b:b1:20:f2:96:cb:a5:20:c1:b9:7d:b1:58:95:65:b8:1c:b9:a1:7b:72:44 +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl +cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu +LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT +aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD +VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT +aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ +bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu +IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b +N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t +KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu +kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm +CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ +Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu +imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te +2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe +DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p +F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt +TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 4 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 4 Public Primary Certification Authority - G3 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 1999 VeriSign, Inc. - For authorized use only +# Label: "Verisign Class 4 Public Primary Certification Authority - G3" +# Serial: 314531972711909413743075096039378935511 +# MD5 Fingerprint: db:c8:f2:27:2e:b1:ea:6a:29:23:5d:fe:56:3e:33:df +# SHA1 Fingerprint: c8:ec:8c:87:92:69:cb:4b:ab:39:e9:8d:7e:57:67:f3:14:95:73:9d +# SHA256 Fingerprint: e3:89:36:0d:0f:db:ae:b3:d2:50:58:4b:47:30:31:4e:22:2f:39:c1:56:a0:20:14:4e:8d:96:05:61:79:15:06 +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl +cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu +LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT +aWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD +VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT +aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ +bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu +IENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK3LpRFpxlmr8Y+1 +GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaStBO3IFsJ ++mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0Gbd +U6LM8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLm +NxdLMEYH5IBtptiWLugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XY +ufTsgsbSPZUd5cBPhMnZo0QoBmrXRazwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ +ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAj/ola09b5KROJ1WrIhVZPMq1 +CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXttmhwwjIDLk5Mq +g6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm +fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c +2NU8Qh0XwRJdRTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/ +bLvSHgCwIe34QWKCudiyxLtGUPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== +-----END CERTIFICATE----- + +# Issuer: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Subject: CN=Entrust.net Secure Server Certification Authority O=Entrust.net OU=www.entrust.net/CPS incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Label: "Entrust.net Secure Server CA" +# Serial: 927650371 +# MD5 Fingerprint: df:f2:80:73:cc:f1:e6:61:73:fc:f5:42:e9:c5:7c:ee +# SHA1 Fingerprint: 99:a6:9b:e6:1a:fe:88:6b:4d:2b:82:00:7c:b8:54:fc:31:7e:15:39 +# SHA256 Fingerprint: 62:f2:40:27:8c:56:4c:4d:d8:bf:7d:9d:4f:6f:36:6e:a8:94:d2:2f:5f:34:d9:89:a9:83:ac:ec:2f:ff:ed:50 +-----BEGIN CERTIFICATE----- +MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC +VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u +ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc +KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u +ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 +MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE +ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j +b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF +bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg +U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ +I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 +wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC +AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb +oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 +BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p +dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk +MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp +b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu +dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 +MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi +E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa +MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI +hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN +95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd +2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= +-----END CERTIFICATE----- + +# Issuer: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Subject: CN=Entrust.net Certification Authority (2048) O=Entrust.net OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/(c) 1999 Entrust.net Limited +# Label: "Entrust.net Premium 2048 Secure Server CA" +# Serial: 946059622 +# MD5 Fingerprint: ba:21:ea:20:d6:dd:db:8f:c1:57:8b:40:ad:a1:fc:fc +# SHA1 Fingerprint: 80:1d:62:d0:7b:44:9d:5c:5c:03:5c:98:ea:61:fa:44:3c:2a:58:fe +# SHA256 Fingerprint: d1:c3:39:ea:27:84:eb:87:0f:93:4f:c5:63:4e:4a:a9:ad:55:05:01:64:01:f2:64:65:d3:7a:57:46:63:35:9f +-----BEGIN CERTIFICATE----- +MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML +RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp +bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 +IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0xOTEy +MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 +LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp +YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG +A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq +K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe +sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX +MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT +XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ +HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH +4QIDAQABo3QwcjARBglghkgBhvhCAQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGA +vtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdERgL7YibkIozH5oSQJFrlwMB0G +CSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEA +WUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo +oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQ +h7A6tcOdBTcSo8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18 +f3v/rxzP5tsHrV7bhZ3QKw0z2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfN +B/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjXOP/swNlQ8C5LWK5Gb9Auw2DaclVy +vUxFnmG6v4SBkgPR0ml8xQ== +-----END CERTIFICATE----- + +# Issuer: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust +# Subject: CN=Baltimore CyberTrust Root O=Baltimore OU=CyberTrust +# Label: "Baltimore CyberTrust Root" +# Serial: 33554617 +# MD5 Fingerprint: ac:b6:94:a5:9c:17:e0:d7:91:52:9b:b1:97:06:a6:e4 +# SHA1 Fingerprint: d4:de:20:d0:5e:66:fc:53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74 +# SHA256 Fingerprint: 16:af:57:a9:f6:76:b0:ab:12:60:95:aa:5e:ba:de:f2:2a:b3:11:19:d6:44:ac:95:cd:4b:93:db:f3:f2:6a:eb +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ +RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD +VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX +DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y +ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy +VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr +mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr +IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK +mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu +XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy +dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye +jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 +BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 +DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 +9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx +jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 +Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz +ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS +R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +# Issuer: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. +# Subject: CN=Equifax Secure Global eBusiness CA-1 O=Equifax Secure Inc. +# Label: "Equifax Secure Global eBusiness CA" +# Serial: 1 +# MD5 Fingerprint: 8f:5d:77:06:27:c4:98:3c:5b:93:78:e7:d7:7d:9b:cc +# SHA1 Fingerprint: 7e:78:4a:10:1c:82:65:cc:2d:e1:f1:6d:47:b4:40:ca:d9:0a:19:45 +# SHA256 Fingerprint: 5f:0b:62:ea:b5:e3:53:ea:65:21:65:16:58:fb:b6:53:59:f4:43:28:0a:4a:fb:d1:04:d7:7d:10:f9:f0:4c:07 +-----BEGIN CERTIFICATE----- +MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT +ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw +MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj +dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l +c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC +UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc +58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ +o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH +MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr +aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA +A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA +Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv +8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV +-----END CERTIFICATE----- + +# Issuer: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. +# Subject: CN=Equifax Secure eBusiness CA-1 O=Equifax Secure Inc. +# Label: "Equifax Secure eBusiness CA 1" +# Serial: 4 +# MD5 Fingerprint: 64:9c:ef:2e:44:fc:c6:8f:52:07:d0:51:73:8f:cb:3d +# SHA1 Fingerprint: da:40:18:8b:91:89:a3:ed:ee:ae:da:97:fe:2f:9d:f5:b7:d1:8a:41 +# SHA256 Fingerprint: cf:56:ff:46:a4:a1:86:10:9d:d9:65:84:b5:ee:b5:8a:51:0c:42:75:b0:e5:f9:4f:40:bb:ae:86:5e:19:f6:73 +-----BEGIN CERTIFICATE----- +MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT +ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw +MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j +LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ +KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo +RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu +WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw +Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD +AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK +eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM +zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ +WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN +/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== +-----END CERTIFICATE----- + +# Issuer: O=Equifax Secure OU=Equifax Secure eBusiness CA-2 +# Subject: O=Equifax Secure OU=Equifax Secure eBusiness CA-2 +# Label: "Equifax Secure eBusiness CA 2" +# Serial: 930140085 +# MD5 Fingerprint: aa:bf:bf:64:97:da:98:1d:6f:c6:08:3a:95:70:33:ca +# SHA1 Fingerprint: 39:4f:f6:85:0b:06:be:52:e5:18:56:cc:10:e1:80:e8:82:b3:85:cc +# SHA256 Fingerprint: 2f:27:4e:48:ab:a4:ac:7b:76:59:33:10:17:75:50:6d:c3:0e:e3:8e:f6:ac:d5:c0:49:32:cf:e0:41:23:42:20 +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2Vj +dXJlIGVCdXNpbmVzcyBDQS0yMB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0 +NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkVxdWlmYXggU2VjdXJlMSYwJAYD +VQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCBnzANBgkqhkiG9w0B +AQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn2Z0G +vxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/ +BPO3QSQ5BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0C +AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEX +MBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJl +IGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTkw +NjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9euSBIplBq +y/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQF +MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA +A4GBAAyGgq3oThr1jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy +0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1 +E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUmV+GRMOrN +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network +# Subject: CN=AddTrust Class 1 CA Root O=AddTrust AB OU=AddTrust TTP Network +# Label: "AddTrust Low-Value Services Root" +# Serial: 1 +# MD5 Fingerprint: 1e:42:95:02:33:92:6b:b9:5f:c0:7f:da:d6:b2:4b:fc +# SHA1 Fingerprint: cc:ab:0e:a0:4c:23:01:d6:69:7b:dd:37:9f:cd:12:eb:24:e3:94:9d +# SHA256 Fingerprint: 8c:72:09:27:9a:c0:4e:27:5e:16:d0:7f:d3:b7:75:e8:01:54:b5:96:80:46:e3:1f:52:dd:25:76:63:24:e9:a7 +-----BEGIN CERTIFICATE----- +MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 +b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMw +MTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYD +VQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUA +A4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ul +CDtbKRY654eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6n +tGO0/7Gcrjyvd7ZWxbWroulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyl +dI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1Zmne3yzxbrww2ywkEtvrNTVokMsAsJch +PXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJuiGMx1I4S+6+JNM3GOGvDC ++Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8wHQYDVR0O +BBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8E +BTADAQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBl +MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFk +ZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENB +IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxtZBsfzQ3duQH6lmM0MkhHma6X +7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0PhiVYrqW9yTkkz +43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY +eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJl +pz/+0WatC7xrmYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOA +WiFeIc9TVPC6b4nbqKqVz4vjccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network +# Subject: CN=AddTrust External CA Root O=AddTrust AB OU=AddTrust External TTP Network +# Label: "AddTrust External Root" +# Serial: 1 +# MD5 Fingerprint: 1d:35:54:04:85:78:b0:3f:42:42:4d:bf:20:73:0a:3f +# SHA1 Fingerprint: 02:fa:f3:e2:91:43:54:68:60:78:57:69:4d:f5:e4:5b:68:85:18:68 +# SHA256 Fingerprint: 68:7f:a4:51:38:22:78:ff:f0:c8:b1:1f:8d:43:d5:76:67:1c:6e:b2:bc:ea:b4:13:fb:83:d9:65:d0:6d:2f:f2 +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs +IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 +MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux +FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h +bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v +dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt +H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 +uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX +mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX +a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN +E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 +WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD +VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 +Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU +cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx +IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN +AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH +YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC +Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX +c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a +mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust Public CA Root O=AddTrust AB OU=AddTrust TTP Network +# Subject: CN=AddTrust Public CA Root O=AddTrust AB OU=AddTrust TTP Network +# Label: "AddTrust Public Services Root" +# Serial: 1 +# MD5 Fingerprint: c1:62:3e:23:c5:82:73:9c:03:59:4b:2b:e9:77:49:7f +# SHA1 Fingerprint: 2a:b6:28:48:5e:78:fb:f3:ad:9e:79:10:dd:6b:df:99:72:2c:96:e5 +# SHA256 Fingerprint: 07:91:ca:07:49:b2:07:82:aa:d3:c7:d7:bd:0c:df:c9:48:58:35:84:3e:b2:d7:99:60:09:ce:43:ab:6c:69:27 +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 +b3JrMSAwHgYDVQQDExdBZGRUcnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAx +MDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtB +ZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIDAeBgNV +BAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV +6tsfSlbunyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nX +GCwwfQ56HmIexkvA/X1id9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnP +dzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSGAa2Il+tmzV7R/9x98oTaunet3IAIx6eH +1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAwHM+A+WD+eeSI8t0A65RF +62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0GA1UdDgQW +BBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDEL +MAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRU +cnVzdCBUVFAgTmV0d29yazEgMB4GA1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJv +b3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4JNojVhaTdt02KLmuG7jD8WS6 +IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL+YPoRNWyQSW/ +iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao +GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh +4SINhwBk/ox9Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQm +XiLsks3/QppEIW1cxeMiHV9HEufOX1362KqxMy3ZdvJOOjMMK7MtkAY= +-----END CERTIFICATE----- + +# Issuer: CN=AddTrust Qualified CA Root O=AddTrust AB OU=AddTrust TTP Network +# Subject: CN=AddTrust Qualified CA Root O=AddTrust AB OU=AddTrust TTP Network +# Label: "AddTrust Qualified Certificates Root" +# Serial: 1 +# MD5 Fingerprint: 27:ec:39:47:cd:da:5a:af:e2:9a:01:65:21:a9:4c:bb +# SHA1 Fingerprint: 4d:23:78:ec:91:95:39:b5:00:7f:75:8f:03:3b:21:1e:c5:4d:8b:cf +# SHA256 Fingerprint: 80:95:21:08:05:db:4b:bc:35:5e:44:28:d8:fd:6e:c2:cd:e3:ab:5f:b9:7a:99:42:98:8e:b8:f4:dc:d0:60:16 +-----BEGIN CERTIFICATE----- +MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 +b3JrMSMwIQYDVQQDExpBZGRUcnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1 +MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcxCzAJBgNVBAYTAlNFMRQwEgYDVQQK +EwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIzAh +BgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwq +xBb/4Oxx64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G +87B4pfYOQnrjfxvM0PC3KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i +2O+tCBGaKZnhqkRFmhJePp1tUvznoD1oL/BLcHwTOK28FSXx1s6rosAx1i+f4P8U +WfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GRwVY18BTcZTYJbqukB8c1 +0cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HUMIHRMB0G +A1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0T +AQH/BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6Fr +pGkwZzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQL +ExRBZGRUcnVzdCBUVFAgTmV0d29yazEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlm +aWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBABmrder4i2VhlRO6aQTv +hsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxGGuoYQ992zPlm +hpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X +dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3 +P6CxB9bpT9zeRXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9Y +iQBCYz95OdBEsIJuQRno3eDBiFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5no +xqE= +-----END CERTIFICATE----- + +# Issuer: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. +# Subject: CN=Entrust Root Certification Authority O=Entrust, Inc. OU=www.entrust.net/CPS is incorporated by reference/(c) 2006 Entrust, Inc. +# Label: "Entrust Root Certification Authority" +# Serial: 1164660820 +# MD5 Fingerprint: d6:a5:c3:ed:5d:dd:3e:00:c1:3d:87:92:1f:1d:3f:e4 +# SHA1 Fingerprint: b3:1e:b1:b7:40:e3:6c:84:02:da:dc:37:d4:4d:f5:d4:67:49:52:f9 +# SHA256 Fingerprint: 73:c1:76:43:4f:1b:c6:d5:ad:f4:5b:0e:76:e7:27:28:7c:8d:e5:76:16:c1:e6:e6:14:1a:2b:2c:bc:7d:8e:4c +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0 +Lm5ldC9DUFMgaXMgaW5jb3Jwb3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMW +KGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsGA1UEAxMkRW50cnVzdCBSb290IENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0MloXDTI2MTEyNzIw +NTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMTkw +NwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSBy +ZWZlcmVuY2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNV +BAMTJEVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBALaVtkNC+sZtKm9I35RMOVcF7sN5EUFo +Nu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYszA9u3g3s+IIRe7bJWKKf4 +4LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOwwCj0Yzfv9 +KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGI +rb68j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi +94DkZfs0Nw4pgHBNrziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOB +sDCBrTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAi +gA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1MzQyWjAfBgNVHSMEGDAWgBRo +kORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DHhmak8fdLQ/uE +vW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9t +O1KzKtvn1ISMY/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6Zua +AGAT/3B+XxFNSRuzFVJ7yVTav52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP +9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTSW3iDVuycNsMm4hH2Z0kdkquM++v/ +eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0tHuu2guQOHXvgR1m +0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Global CA O=GeoTrust Inc. +# Subject: CN=GeoTrust Global CA O=GeoTrust Inc. +# Label: "GeoTrust Global CA" +# Serial: 144470 +# MD5 Fingerprint: f7:75:ab:29:fb:51:4e:b7:77:5e:ff:05:3c:99:8e:f5 +# SHA1 Fingerprint: de:28:f4:a4:ff:e5:b9:2f:a3:c5:03:d1:a3:49:a7:f9:96:2a:82:12 +# SHA256 Fingerprint: ff:85:6a:2d:25:1d:cd:88:d3:66:56:f4:50:12:67:98:cf:ab:aa:de:40:79:9c:72:2d:e4:d2:b5:db:36:a7:3a +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT +MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i +YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg +R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 +9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq +fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv +iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU +1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ +bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW +MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA +ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l +uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn +Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS +tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF +PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un +hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV +5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Global CA 2 O=GeoTrust Inc. +# Subject: CN=GeoTrust Global CA 2 O=GeoTrust Inc. +# Label: "GeoTrust Global CA 2" +# Serial: 1 +# MD5 Fingerprint: 0e:40:a7:6c:de:03:5d:8f:d1:0f:e4:d1:8d:f9:6c:a9 +# SHA1 Fingerprint: a9:e9:78:08:14:37:58:88:f2:05:19:b0:6d:2b:0d:2b:60:16:90:7d +# SHA256 Fingerprint: ca:2d:82:a0:86:77:07:2f:8a:b6:76:4f:f0:35:67:6c:fe:3e:5e:32:5e:01:21:72:df:3f:92:09:6d:b7:9b:85 +-----BEGIN CERTIFICATE----- +MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEW +MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFs +IENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3Qg +R2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDvPE1A +PRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/NTL8 +Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hL +TytCOb1kLUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL +5mkWRxHCJ1kDs6ZgwiFAVvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7 +S4wMcoKK+xfNAGw6EzywhIdLFnopsk/bHdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe +2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNHK266ZUap +EBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6td +EPx7srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv +/NgdRN3ggX+d6YvhZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywN +A0ZF66D0f0hExghAzN4bcLUprbqLOzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0 +abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkCx1YAzUm5s2x7UwQa4qjJqhIF +I8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqFH4z1Ir+rzoPz +4iIprn2DQKi6bA== +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Universal CA O=GeoTrust Inc. +# Subject: CN=GeoTrust Universal CA O=GeoTrust Inc. +# Label: "GeoTrust Universal CA" +# Serial: 1 +# MD5 Fingerprint: 92:65:58:8b:a2:1a:31:72:73:68:5c:b4:a5:7a:07:48 +# SHA1 Fingerprint: e6:21:f3:35:43:79:05:9a:4b:68:30:9d:8a:2f:74:22:15:87:ec:79 +# SHA256 Fingerprint: a0:45:9b:9f:63:b2:25:59:f5:fa:5d:4c:6d:b3:f9:f7:2f:f1:93:42:03:35:78:f0:73:bf:1d:1b:46:cb:b9:12 +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEW +MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVy +c2FsIENBMB4XDTA0MDMwNDA1MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xHjAcBgNVBAMTFUdlb1RydXN0 +IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKYV +VaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9tJPi8 +cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTT +QjOgNB0eRXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFh +F7em6fgemdtzbvQKoiFs7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2v +c7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d8Lsrlh/eezJS/R27tQahsiFepdaVaH/w +mZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7VqnJNk22CDtucvc+081xd +VHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3CgaRr0BHdCX +teGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZ +f9hBZ3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfRe +Bi9Fi1jUIxaS5BZuKGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+ +nhutxx9z3SxPGWX9f5NAEC7S8O08ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB +/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0XG0D08DYj3rWMB8GA1UdIwQY +MBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG +9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fX +IwjhmF7DWgh2qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzyn +ANXH/KttgCJwpQzgXQQpAvvLoJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0z +uzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsKxr2EoyNB3tZ3b4XUhRxQ4K5RirqN +Pnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxFKyDuSN/n3QmOGKja +QI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2DFKW +koRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9 +ER/frslKxfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQt +DF4JbAiXfKM9fJP/P6EUp8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/Sfuvm +bJxPgWp6ZKy7PtXny3YuxadIwVyQD8vIP/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Universal CA 2 O=GeoTrust Inc. +# Subject: CN=GeoTrust Universal CA 2 O=GeoTrust Inc. +# Label: "GeoTrust Universal CA 2" +# Serial: 1 +# MD5 Fingerprint: 34:fc:b8:d0:36:db:9e:14:b3:c2:f2:db:8f:e4:94:c7 +# SHA1 Fingerprint: 37:9a:19:7b:41:85:45:35:0c:a6:03:69:f3:3c:2e:af:47:4f:20:79 +# SHA256 Fingerprint: a0:23:4f:3b:c8:52:7c:a5:62:8e:ec:81:ad:5d:69:89:5d:a5:68:0d:c9:1d:1c:b8:47:7f:33:f8:78:b9:5b:0b +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEW +MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVy +c2FsIENBIDIwHhcNMDQwMzA0MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYD +VQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1 +c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0DE81 +WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUG +FF+3Qs17j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdq +XbboW0W63MOhBW9Wjo8QJqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxL +se4YuU6W3Nx2/zu+z18DwPw76L5GG//aQMJS9/7jOvdqdzXQ2o3rXhhqMcceujwb +KNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2WP0+GfPtDCapkzj4T8Fd +IgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP20gaXT73 +y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRt +hAAnZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgoc +QIgfksILAAX/8sgCSqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4 +Lt1ZrtmhN79UNdxzMk+MBB4zsslG8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAfBgNV +HSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8EBAMCAYYwDQYJ +KoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z +dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQ +L1EuxBRa3ugZ4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgr +Fg5fNuH8KrUwJM/gYwx7WBr+mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSo +ag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpqA1Ihn0CoZ1Dy81of398j9tx4TuaY +T1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpgY+RdM4kX2TGq2tbz +GDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiPpm8m +1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJV +OCiNUW7dFGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH +6aLcr34YEoP9VhdBLtUpgn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwX +QMAJKOSLakhT2+zNVVXxxvjpoixMptEmX36vWkzaH6byHCx+rgIW0lbQL1dTR+iS +-----END CERTIFICATE----- + +# Issuer: CN=America Online Root Certification Authority 1 O=America Online Inc. +# Subject: CN=America Online Root Certification Authority 1 O=America Online Inc. +# Label: "America Online Root Certification Authority 1" +# Serial: 1 +# MD5 Fingerprint: 14:f1:08:ad:9d:fa:64:e2:89:e7:1c:cf:a8:ad:7d:5e +# SHA1 Fingerprint: 39:21:c1:15:c1:5d:0e:ca:5c:cb:5b:c4:f0:7d:21:d8:05:0b:56:6a +# SHA256 Fingerprint: 77:40:73:12:c6:3a:15:3d:5b:c0:0b:4e:51:75:9c:df:da:c2:37:dc:2a:33:b6:79:46:e9:8e:9b:fa:68:0a:e3 +-----BEGIN CERTIFICATE----- +MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP +bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2 +MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft +ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lk +hsmj76CGv2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym +1BW32J/X3HGrfpq/m44zDyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsW +OqMFf6Dch9Wc/HKpoH145LcxVR5lu9RhsCFg7RAycsWSJR74kEoYeEfffjA3PlAb +2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP8c9GsEsPPt2IYriMqQko +O3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAU +AK3Zo/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB +BQUAA4IBAQB8itEfGDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkF +Zu90821fnZmv9ov761KyBZiibyrFVL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAb +LjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft3OJvx8Fi8eNy1gTIdGcL+oir +oQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43gKd8hdIaC2y+C +MMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds +sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 +-----END CERTIFICATE----- + +# Issuer: CN=America Online Root Certification Authority 2 O=America Online Inc. +# Subject: CN=America Online Root Certification Authority 2 O=America Online Inc. +# Label: "America Online Root Certification Authority 2" +# Serial: 1 +# MD5 Fingerprint: d6:ed:3c:ca:e2:66:0f:af:10:43:0d:77:9b:04:09:bf +# SHA1 Fingerprint: 85:b5:ff:67:9b:0c:79:96:1f:c8:6e:44:22:00:46:13:db:17:92:84 +# SHA256 Fingerprint: 7d:3b:46:5a:60:14:e5:26:c0:af:fc:ee:21:27:d2:31:17:27:ad:81:1c:26:84:2d:00:6a:f3:73:06:cc:80:bd +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc +MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP +bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2 +MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft +ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC +206B89enfHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFci +KtZHgVdEglZTvYYUAQv8f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2 +JxhP7JsowtS013wMPgwr38oE18aO6lhOqKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9 +BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JNRvCAOVIyD+OEsnpD8l7e +Xz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0gBe4lL8B +PeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67 +Xnfn6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEq +Z8A9W6Wa6897GqidFEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZ +o2C7HK2JNDJiuEMhBnIMoVxtRsX6Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3 ++L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnjB453cMor9H124HhnAgMBAAGj +YzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3OpaaEg5+31IqEj +FNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmn +xPBUlgtk87FYT15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2 +LHo1YGwRgJfMqZJS5ivmae2p+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzccc +obGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXgJXUjhx5c3LqdsKyzadsXg8n33gy8 +CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//ZoyzH1kUQ7rVyZ2OuMe +IjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgOZtMA +DjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2F +AjgQ5ANh1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUX +Om/9riW99XJZZLF0KjhfGEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPb +AZO1XB4Y3WRayhgoPmMEEf0cjQAPuDffZ4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQl +Zvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuPcX/9XhmgD0uRuMRUvAaw +RY8mkaKO/qk= +-----END CERTIFICATE----- + +# Issuer: CN=AAA Certificate Services O=Comodo CA Limited +# Subject: CN=AAA Certificate Services O=Comodo CA Limited +# Label: "Comodo AAA Services root" +# Serial: 1 +# MD5 Fingerprint: 49:79:04:b0:eb:87:19:ac:47:b0:bc:11:51:9b:74:d0 +# SHA1 Fingerprint: d1:eb:23:a4:6d:17:d6:8f:d9:25:64:c2:f1:f1:60:17:64:d8:e3:49 +# SHA256 Fingerprint: d7:a7:a0:fb:5d:7e:27:31:d7:71:e9:48:4e:bc:de:f7:1d:5f:0c:3e:0a:29:48:78:2b:c8:3e:e0:ea:69:9e:f4 +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj +YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM +GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua +BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe +3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 +YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR +rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm +ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU +oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v +QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t +b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF +AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q +GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 +G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi +l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 +smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +# Issuer: CN=Secure Certificate Services O=Comodo CA Limited +# Subject: CN=Secure Certificate Services O=Comodo CA Limited +# Label: "Comodo Secure Services root" +# Serial: 1 +# MD5 Fingerprint: d3:d9:bd:ae:9f:ac:67:24:b3:c8:1b:52:e1:b9:a9:bd +# SHA1 Fingerprint: 4a:65:d5:f4:1d:ef:39:b8:b8:90:4a:4a:d3:64:81:33:cf:c7:a1:d1 +# SHA256 Fingerprint: bd:81:ce:3b:4f:65:91:d1:1a:67:b5:fc:7a:47:fd:ef:25:52:1b:f9:aa:4e:18:b9:e3:df:2e:34:a7:80:3b:e8 +-----BEGIN CERTIFICATE----- +MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRp +ZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVow +fjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAiBgNV +BAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPM +cm3ye5drswfxdySRXyWP9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3S +HpR7LZQdqnXXs5jLrLxkU0C8j6ysNstcrbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996 +CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rCoznl2yY4rYsK7hljxxwk +3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3Vp6ea5EQz +6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNV +HQ4EFgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1Ud +EwEB/wQFMAMBAf8wgYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2Rv +Y2EuY29tL1NlY3VyZUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRw +Oi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmww +DQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm4J4oqF7Tt/Q0 +5qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj +Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtI +gKvcnDe4IRRLDXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJ +aD61JlfutuC23bkpgHl9j6PwpCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDl +izeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1HRR3B7Hzs/Sk= +-----END CERTIFICATE----- + +# Issuer: CN=Trusted Certificate Services O=Comodo CA Limited +# Subject: CN=Trusted Certificate Services O=Comodo CA Limited +# Label: "Comodo Trusted Services root" +# Serial: 1 +# MD5 Fingerprint: 91:1b:3f:6e:cd:9e:ab:ee:07:fe:1f:71:d2:b3:61:27 +# SHA1 Fingerprint: e1:9f:e3:0e:8b:84:60:9e:80:9b:17:0d:72:a8:c5:ba:6e:14:09:bd +# SHA256 Fingerprint: 3f:06:e5:56:81:d4:96:f5:be:16:9e:b5:38:9f:9f:2b:8f:f6:1e:17:08:df:68:81:72:48:49:cd:5d:27:cb:69 +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEb +MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow +GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0 +aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEwMDAwMDBaFw0yODEyMzEyMzU5NTla +MH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO +BgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUwIwYD +VQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWW +fnJSoBVC21ndZHoa0Lh73TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMt +TGo87IvDktJTdyR0nAducPy9C1t2ul/y/9c3S0pgePfw+spwtOpZqqPOSC+pw7IL +fhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6juljatEPmsbS9Is6FARW +1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsSivnkBbA7 +kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0G +A1UdDgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21v +ZG9jYS5jb20vVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRo +dHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENlcnRpZmljYXRlU2VydmljZXMu +Y3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8NtwuleGFTQQuS9/ +HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 +pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxIS +jBc/lDb+XbDABHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+ +xqFx7D+gIIxmOom0jtTYsU0lR+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/Atyjcn +dBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O9y5Xt5hwXsjEeLBi +-----END CERTIFICATE----- + +# Issuer: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com +# Subject: CN=UTN - DATACorp SGC O=The USERTRUST Network OU=http://www.usertrust.com +# Label: "UTN DATACorp SGC Root CA" +# Serial: 91374294542884689855167577680241077609 +# MD5 Fingerprint: b3:a5:3e:77:21:6d:ac:4a:c0:c9:fb:d5:41:3d:ca:06 +# SHA1 Fingerprint: 58:11:9f:0e:12:82:87:ea:50:fd:d9:87:45:6f:4f:78:dc:fa:d6:d4 +# SHA256 Fingerprint: 85:fb:2f:91:dd:12:27:5a:01:45:b6:36:53:4f:84:02:4a:d6:8b:69:b8:ee:88:68:4f:f7:11:37:58:05:b3:48 +-----BEGIN CERTIFICATE----- +MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCB +kzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug +Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho +dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZBgNVBAMTElVUTiAtIERBVEFDb3Jw +IFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBaMIGTMQswCQYDVQQG +EwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYD +VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cu +dXNlcnRydXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjAN +BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6 +E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ysraP6LnD43m77VkIVni5c7yPeIbkFdicZ +D0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlowHDyUwDAXlCCpVZvNvlK +4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA9P4yPykq +lXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulW +bfXv33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQAB +o4GrMIGoMAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRT +MtGzz3/64PGgXYVOktKeRR20TzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3Js +LnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dDLmNybDAqBgNVHSUEIzAhBggr +BgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3DQEBBQUAA4IB +AQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft +Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyj +j98C5OBxOvG0I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVH +KWss5nbZqSl9Mt3JNjy9rjXxEZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv +2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwPDPafepE39peC4N1xaf92P2BNPM/3 +mfnGV/TJVTl4uix5yaaIK/QI +-----END CERTIFICATE----- + +# Issuer: CN=UTN-USERFirst-Hardware O=The USERTRUST Network OU=http://www.usertrust.com +# Subject: CN=UTN-USERFirst-Hardware O=The USERTRUST Network OU=http://www.usertrust.com +# Label: "UTN USERFirst Hardware Root CA" +# Serial: 91374294542884704022267039221184531197 +# MD5 Fingerprint: 4c:56:41:e5:0d:bb:2b:e8:ca:a3:ed:18:08:ad:43:39 +# SHA1 Fingerprint: 04:83:ed:33:99:ac:36:08:05:87:22:ed:bc:5e:46:00:e3:be:f9:d7 +# SHA256 Fingerprint: 6e:a5:47:41:d0:04:66:7e:ed:1b:48:16:63:4a:a3:a7:9e:6e:4b:96:95:0f:82:79:da:fc:8d:9b:d8:81:21:37 +-----BEGIN CERTIFICATE----- +MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB +lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug +Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho +dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt +SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG +A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe +MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v +d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh +cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn +0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ +M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a +MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd +oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI +DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy +oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0 +dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy +bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF +BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM +//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli +CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE +CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t +3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS +KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== +-----END CERTIFICATE----- + +# Issuer: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com +# Subject: CN=XRamp Global Certification Authority O=XRamp Security Services Inc OU=www.xrampsecurity.com +# Label: "XRamp Global CA Root" +# Serial: 107108908803651509692980124233745014957 +# MD5 Fingerprint: a1:0b:44:b3:ca:10:d8:00:6e:9d:0f:d8:0f:92:0a:d1 +# SHA1 Fingerprint: b8:01:86:d1:eb:9c:86:a5:41:04:cf:30:54:f3:4c:52:b7:e5:58:c6 +# SHA256 Fingerprint: ce:cd:dc:90:50:99:d8:da:df:c5:b1:d2:09:b7:37:cb:e2:c1:8c:fb:2c:10:c0:ff:0b:cf:0d:32:86:fc:1a:a2 +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCB +gjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEk +MCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRY +UmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQxMTAxMTcx +NDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMxHjAcBgNVBAsTFXd3 +dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkgU2Vy +dmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS6 +38eMpSe2OAtp87ZOqCwuIR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCP +KZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMxfoArtYzAQDsRhtDLooY2YKTVMIJt2W7Q +DxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FEzG+gSqmUsE3a56k0enI4 +qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqsAxcZZPRa +JSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNVi +PvryxS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0P +BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASs +jVy16bYbMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0 +eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQEwDQYJKoZIhvcNAQEFBQAD +ggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc/Kh4ZzXxHfAR +vbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLa +IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy +i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ +O+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +# Issuer: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority +# Subject: O=The Go Daddy Group, Inc. OU=Go Daddy Class 2 Certification Authority +# Label: "Go Daddy Class 2 CA" +# Serial: 0 +# MD5 Fingerprint: 91:de:06:25:ab:da:fd:32:17:0c:bb:25:17:2a:84:67 +# SHA1 Fingerprint: 27:96:ba:e6:3f:18:01:e2:77:26:1b:a0:d7:77:70:02:8f:20:ee:e4 +# SHA256 Fingerprint: c3:84:6b:f2:4b:9e:93:ca:64:27:4c:0e:c6:7c:1e:cc:5e:02:4f:fc:ac:d2:d7:40:19:35:0e:81:fe:54:6a:e4 +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh +MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE +YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 +MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo +ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg +MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN +ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA +PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w +wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi +EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY +avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ +YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE +sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h +/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 +IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD +ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy +OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P +TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER +dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf +ReYNnyicsbkqWletNw+vHX/bvZ8= +-----END CERTIFICATE----- + +# Issuer: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority +# Subject: O=Starfield Technologies, Inc. OU=Starfield Class 2 Certification Authority +# Label: "Starfield Class 2 CA" +# Serial: 0 +# MD5 Fingerprint: 32:4a:4b:bb:c8:63:69:9b:be:74:9a:c6:dd:1d:46:24 +# SHA1 Fingerprint: ad:7e:1c:28:b0:64:ef:8f:60:03:40:20:14:c3:d0:e3:37:0e:b5:8a +# SHA256 Fingerprint: 14:65:fa:20:53:97:b8:76:fa:a6:f0:a9:95:8e:55:90:e4:0f:cc:7f:aa:4f:b7:c2:c8:67:75:21:fb:5f:b6:58 +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl +MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp +U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw +NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE +ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp +ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 +DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf +8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN ++lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 +X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa +K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA +1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G +A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR +zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 +YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD +bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w +DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 +L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D +eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp +VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY +WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +# Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing +# Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing +# Label: "StartCom Certification Authority" +# Serial: 1 +# MD5 Fingerprint: 22:4d:8f:8a:fc:f7:35:c2:bb:57:34:90:7b:8b:22:16 +# SHA1 Fingerprint: 3e:2b:f7:f2:03:1b:96:f3:8c:e6:c4:d8:a8:5d:3e:2d:58:47:6a:0f +# SHA256 Fingerprint: c7:66:a9:be:f2:d4:07:1c:86:3a:31:aa:49:20:e8:13:b2:d1:98:60:8c:b7:b7:cf:e2:11:43:b8:36:df:09:ea +-----BEGIN CERTIFICATE----- +MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW +MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg +Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9 +MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi +U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh +cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk +pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf +OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C +Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT +Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi +HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM +Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w ++2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ +Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 +Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B +26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID +AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE +FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9j +ZXJ0LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js +LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM +BgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0 +Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy +dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3Rh +cnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlh +YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg +dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp +bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ +YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT +TCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ +9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8 +jhvh3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW +FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz +ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1 +ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L +EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu +L6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq +yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuC +O3NJo2pXh5Tl1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6V +um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh +NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Assured ID Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Assured ID Root CA" +# Serial: 17154717934120587862167794914071425081 +# MD5 Fingerprint: 87:ce:0b:7b:2a:0e:49:00:e1:58:71:9b:37:a8:93:72 +# SHA1 Fingerprint: 05:63:b8:63:0d:62:d7:5a:bb:c8:ab:1e:4b:df:b5:a8:99:b2:4d:43 +# SHA256 Fingerprint: 3e:90:99:b5:01:5e:8f:48:6c:00:bc:ea:9d:11:1e:e7:21:fa:ba:35:5a:89:bc:f1:df:69:56:1e:3d:c6:32:5c +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv +b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl +cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c +JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP +mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ +wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 +VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ +AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB +AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW +BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun +pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC +dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf +fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm +NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx +H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert Global Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert Global Root CA" +# Serial: 10944719598952040374951832963794454346 +# MD5 Fingerprint: 79:e4:a9:84:0d:7d:3a:96:d7:c0:4f:e2:43:4c:89:2e +# SHA1 Fingerprint: a8:98:5d:3a:65:e5:e5:c4:b2:d7:d6:6d:40:c6:dd:2f:b1:9c:54:36 +# SHA256 Fingerprint: 43:48:a0:e9:44:4c:78:cb:26:5e:05:8d:5e:89:44:b4:d8:4f:96:62:bd:26:db:25:7f:89:34:a4:43:c7:01:61 +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD +QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT +MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j +b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB +CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 +nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt +43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P +T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 +gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO +BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR +TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw +DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr +hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg +06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF +PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls +YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +# Issuer: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com +# Subject: CN=DigiCert High Assurance EV Root CA O=DigiCert Inc OU=www.digicert.com +# Label: "DigiCert High Assurance EV Root CA" +# Serial: 3553400076410547919724730734378100087 +# MD5 Fingerprint: d4:74:de:57:5c:39:b2:d3:9c:85:83:c5:c0:65:49:8a +# SHA1 Fingerprint: 5f:b7:ee:06:33:e2:59:db:ad:0c:4c:9a:e6:d3:8f:1a:61:c7:dc:25 +# SHA256 Fingerprint: 74:31:e5:f4:c3:c1:ce:46:90:77:4f:0b:61:e0:54:40:88:3b:a9:a0:1e:d0:0b:a6:ab:d7:80:6e:d3:b1:18:cf +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug +RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm ++9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW +PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM +xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB +Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 +hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg +EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA +FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec +nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z +eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF +hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 +Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep ++OkuE6N36B9K +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. +# Subject: CN=GeoTrust Primary Certification Authority O=GeoTrust Inc. +# Label: "GeoTrust Primary Certification Authority" +# Serial: 32798226551256963324313806436981982369 +# MD5 Fingerprint: 02:26:c3:01:5e:08:30:37:43:a9:d0:7d:cf:37:e6:bf +# SHA1 Fingerprint: 32:3c:11:8e:1b:f7:b8:b6:52:54:e2:e2:10:0d:d6:02:90:37:f0:96 +# SHA256 Fingerprint: 37:d5:10:06:c5:12:ea:ab:62:64:21:f1:ec:8c:92:01:3f:c5:f8:2a:e9:8e:e5:33:eb:46:19:b8:de:b4:d0:6c +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBY +MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMo +R2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEx +MjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9 +AWbK7hWNb6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjA +ZIVcFU2Ix7e64HXprQU9nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE0 +7e9GceBrAqg1cmuXm2bgyxx5X9gaBGgeRwLmnWDiNpcB3841kt++Z8dtd1k7j53W +kBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGttm/81w7a4DSwDRp35+MI +mO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJ +KoZIhvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ1 +6CePbJC/kRYkRj5KTs4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl +4b7UVXGYNTq+k+qurUKykG/g/CFNNWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6K +oKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHaFloxt/m0cYASSJlyc1pZU8Fj +UjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG1riR/aYNKxoU +AT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- + +# Issuer: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only +# Subject: CN=thawte Primary Root CA O=thawte, Inc. OU=Certification Services Division/(c) 2006 thawte, Inc. - For authorized use only +# Label: "thawte Primary Root CA" +# Serial: 69529181992039203566298953787712940909 +# MD5 Fingerprint: 8c:ca:dc:0b:22:ce:f5:be:72:ac:41:1a:11:a8:d8:12 +# SHA1 Fingerprint: 91:c6:d6:ee:3e:8a:c8:63:84:e5:48:c2:99:29:5c:75:6c:81:7b:81 +# SHA256 Fingerprint: 8d:72:2f:81:a9:c1:13:c0:79:1d:f1:36:a2:96:6d:b2:6c:95:0a:97:1d:b4:6b:41:99:f4:ea:54:b7:8b:fb:9f +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCB +qTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNV +BAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3MDAwMDAwWhcNMzYw +NzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5j +LjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYG +A1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsoPD7gFnUnMekz52hWXMJEEUMDSxuaPFs +W0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ1CRfBsDMRJSUjQJib+ta +3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGcq/gcfomk +6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6 +Sk/KaAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94J +NqR32HuHUETVPm4pafs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XP +r87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUFAAOCAQEAeRHAS7ORtvzw6WfU +DW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeEuzLlQRHAd9mz +YJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2 +/qxAeeWsEG89jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/ +LHbTY5xZ3Y+m4Q6gLkH3LpVHz7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7 +jVaMaA== +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G5 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2006 VeriSign, Inc. - For authorized use only +# Label: "VeriSign Class 3 Public Primary Certification Authority - G5" +# Serial: 33037644167568058970164719475676101450 +# MD5 Fingerprint: cb:17:e4:31:67:3e:e2:09:fe:45:57:93:f3:0a:fa:1c +# SHA1 Fingerprint: 4e:b6:d5:78:49:9b:1c:cf:5f:58:1e:ad:56:be:3d:9b:67:44:a5:e5 +# SHA256 Fingerprint: 9a:cf:ab:7e:43:c8:d8:80:d0:6b:26:2a:94:de:ee:e4:b4:65:99:89:c3:d0:ca:f1:9b:af:64:05:e4:1a:b7:df +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW +ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp +U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y +aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1 +nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex +t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz +SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG +BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+ +rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/ +NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E +BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH +BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv +MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE +p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y +5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK +WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ +4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N +hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +# Issuer: CN=COMODO Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO Certification Authority O=COMODO CA Limited +# Label: "COMODO Certification Authority" +# Serial: 104350513648249232941998508985834464573 +# MD5 Fingerprint: 5c:48:dc:f7:42:72:ec:56:94:6d:1c:cc:71:35:80:75 +# SHA1 Fingerprint: 66:31:bf:9e:f7:4f:9e:b6:c9:d5:a6:0c:ba:6a:be:d1:f7:bd:ef:7b +# SHA256 Fingerprint: 0c:2c:d6:3d:f7:80:6f:a3:99:ed:e8:09:11:6b:57:5b:f8:79:89:f0:65:18:f9:80:8c:86:05:03:17:8b:af:66 +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCB +gTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNV +BAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjEyMDEwMDAw +MDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl +YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFDT01P +RE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3 +UcEbVASY06m/weaKXTuH+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI +2GqGd0S7WWaXUF601CxwRM/aN5VCaTwwxHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8 +Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV4EajcNxo2f8ESIl33rXp ++2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA1KGzqSX+ +DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5O +nKVIrLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW +/zAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6g +PKA6hjhodHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9u +QXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOCAQEAPpiem/Yb6dc5t3iuHXIY +SdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CPOGEIqB6BCsAv +IC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4 +zJVSk/BwJVmcIGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5dd +BA6+C4OmF4O5MBKgxTMVBbkN+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IB +ZQ== +-----END CERTIFICATE----- + +# Issuer: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. +# Subject: CN=Network Solutions Certificate Authority O=Network Solutions L.L.C. +# Label: "Network Solutions Certificate Authority" +# Serial: 116697915152937497490437556386812487904 +# MD5 Fingerprint: d3:f3:a6:16:c0:fa:6b:1d:59:b1:2d:96:4d:0e:11:2e +# SHA1 Fingerprint: 74:f8:a3:c3:ef:e7:b3:90:06:4b:83:90:3c:21:64:60:20:e5:df:ce +# SHA256 Fingerprint: 15:f0:ba:00:a3:ac:7a:f3:ac:88:4c:07:2b:10:11:a0:77:bd:77:c0:97:f4:01:64:b2:f8:59:8a:bd:83:86:0c +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBi +MQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3Jp +dHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMxMjM1OTU5WjBiMQswCQYDVQQGEwJV +UzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydO +ZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwz +c7MEL7xxjOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPP +OCwGJgl6cvf6UDL4wpPTaaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rl +mGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXTcrA/vGp97Eh/jcOrqnErU2lBUzS1sLnF +BgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc/Qzpf14Dl847ABSHJ3A4 +qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMBAAGjgZcw +gZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwu +bmV0c29sc3NsLmNvbS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3Jp +dHkuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc8 +6fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q4LqILPxFzBiwmZVRDuwduIj/ +h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/GGUsyfJj4akH +/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHN +pGxlaKFJdlxDydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +# Issuer: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Subject: CN=COMODO ECC Certification Authority O=COMODO CA Limited +# Label: "COMODO ECC Certification Authority" +# Serial: 41578283867086692638256921589707938090 +# MD5 Fingerprint: 7c:62:ff:74:9d:31:53:5e:68:4a:d5:78:aa:1e:bf:23 +# SHA1 Fingerprint: 9f:74:4e:9f:2b:4d:ba:ec:0f:31:2c:50:b6:56:3b:8e:2d:93:c3:11 +# SHA256 Fingerprint: 17:93:92:7a:06:14:54:97:89:ad:ce:2f:8f:34:f7:f0:b6:6d:0f:3a:e3:a3:b8:4d:21:ec:15:db:ba:4f:ad:c7 +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL +MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE +BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT +IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw +MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy +ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N +T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR +FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J +cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW +BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm +fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv +GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +# Issuer: CN=TC TrustCenter Class 2 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 2 CA +# Subject: CN=TC TrustCenter Class 2 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 2 CA +# Label: "TC TrustCenter Class 2 CA II" +# Serial: 941389028203453866782103406992443 +# MD5 Fingerprint: ce:78:33:5c:59:78:01:6e:18:ea:b9:36:a0:b9:2e:23 +# SHA1 Fingerprint: ae:50:83:ed:7c:f4:5c:bc:8f:61:c6:21:fe:68:5d:79:42:21:15:6e +# SHA256 Fingerprint: e6:b8:f8:76:64:85:f8:07:ae:7f:8d:ac:16:70:46:1f:07:c0:a1:3e:ef:3a:1f:f7:17:53:8d:7a:ba:d3:91:b4 +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjEL +MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV +BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 +Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYwMTEyMTQzODQzWhcNMjUxMjMxMjI1 +OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i +SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UEAxMc +VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jf +tMjWQ+nEdVl//OEd+DFwIxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKg +uNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2J +XjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQXa7pIXSSTYtZgo+U4+lK +8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7uSNQZu+99 +5OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3 +kUrL84J6E1wIqzCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy +dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6 +Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz +JTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290 +Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iS +GNn3Bzn1LL4GdXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprt +ZjluS5TmVfwLG4t3wVMTZonZKNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8 +au0WOB9/WIFaGusyiC2y8zl3gK9etmF1KdsjTYjKUCjLhdLTEKJZbtOTVAB6okaV +hgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kPJOzHdiEoZa5X6AeI +dUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfkvQ== +-----END CERTIFICATE----- + +# Issuer: CN=TC TrustCenter Class 3 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 3 CA +# Subject: CN=TC TrustCenter Class 3 CA II O=TC TrustCenter GmbH OU=TC TrustCenter Class 3 CA +# Label: "TC TrustCenter Class 3 CA II" +# Serial: 1506523511417715638772220530020799 +# MD5 Fingerprint: 56:5f:aa:80:61:12:17:f6:67:21:e6:2b:6d:61:56:8e +# SHA1 Fingerprint: 80:25:ef:f4:6e:70:c8:d4:72:24:65:84:fe:40:3b:8a:8d:6a:db:f5 +# SHA256 Fingerprint: 8d:a0:84:fc:f9:9c:e0:77:22:f8:9b:32:05:93:98:06:fa:5c:b8:11:e1:c8:13:f6:a1:08:c7:d3:36:b3:40:8e +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjEL +MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV +BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 +Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYwMTEyMTQ0MTU3WhcNMjUxMjMxMjI1 +OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i +SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UEAxMc +VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJW +Ht4bNwcwIi9v8Qbxq63WyKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+Q +Vl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo6SI7dYnWRBpl8huXJh0obazovVkdKyT2 +1oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZuV3bOx4a+9P/FRQI2Alq +ukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk2ZyqBwi1 +Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NX +XAek0CSnwPIA1DCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy +dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6 +Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz +JTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290 +Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlN +irTzwppVMXzEO2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8 +TtXqluJucsG7Kv5sbviRmEb8yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6 +g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9IJqDnxrcOfHFcqMRA/07QlIp2+gB +95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal092Y+tTmBvTwtiBj +S+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc5A== +-----END CERTIFICATE----- + +# Issuer: CN=TC TrustCenter Universal CA I O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA +# Subject: CN=TC TrustCenter Universal CA I O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA +# Label: "TC TrustCenter Universal CA I" +# Serial: 601024842042189035295619584734726 +# MD5 Fingerprint: 45:e1:a5:72:c5:a9:36:64:40:9e:f5:e4:58:84:67:8c +# SHA1 Fingerprint: 6b:2f:34:ad:89:58:be:62:fd:b0:6b:5c:ce:bb:9d:d9:4f:4e:39:f3 +# SHA256 Fingerprint: eb:f3:c0:2a:87:89:b1:fb:7d:51:19:95:d6:63:b7:29:06:d9:13:ce:0d:5e:10:56:8a:8a:77:e2:58:61:67:e7 +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTEL +MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV +BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1 +c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcNMDYwMzIyMTU1NDI4WhcNMjUxMjMx +MjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIg +R21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYwJAYD +VQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcN +AQEBBQADggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSR +JJZ4Hgmgm5qVSkr1YnwCqMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3T +fCZdzHd55yx4Oagmcw6iXSVphU9VDprvxrlE4Vc93x9UIuVvZaozhDrzznq+VZeu +jRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtwag+1m7Z3W0hZneTvWq3z +wZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9OgdwZu5GQ +fezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYD +VR0jBBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0G +CSqGSIb3DQEBBQUAA4IBAQAo0uCG1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X1 +7caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/CyvwbZ71q+s2IhtNerNXxTPqYn +8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3ghUJGooWMNjs +ydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT +ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/ +2TYcuiUaUj0a7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY +-----END CERTIFICATE----- + +# Issuer: CN=Cybertrust Global Root O=Cybertrust, Inc +# Subject: CN=Cybertrust Global Root O=Cybertrust, Inc +# Label: "Cybertrust Global Root" +# Serial: 4835703278459682877484360 +# MD5 Fingerprint: 72:e4:4a:87:e3:69:40:80:77:ea:bc:e3:f4:ff:f0:e1 +# SHA1 Fingerprint: 5f:43:e5:b1:bf:f8:78:8c:ac:1c:c7:ca:4a:9a:c6:22:2b:cc:34:c6 +# SHA256 Fingerprint: 96:0a:df:00:63:e9:63:56:75:0c:29:65:dd:0a:08:67:da:0b:9c:bd:6e:77:71:4a:ea:fb:23:49:ab:39:3d:a3 +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYG +A1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2Jh +bCBSb290MB4XDTA2MTIxNTA4MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UE +ChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBS +b290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA+Mi8vRRQZhP/8NN5 +7CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW0ozS +J8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2y +HLtgwEZLAfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iP +t3sMpTjr3kfb1V05/Iin89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNz +FtApD0mpSPCzqrdsxacwOUBdrsTiXSZT8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAY +XSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/ +MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2MDSgMqAw +hi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3Js +MB8GA1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUA +A4IBAQBW7wojoFROlZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMj +Wqd8BfP9IjsO0QbE2zZMcwSO5bAi5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUx +XOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2hO0j9n0Hq0V+09+zv+mKts2o +omcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+TX3EJIrduPuoc +A06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only +# Subject: CN=GeoTrust Primary Certification Authority - G3 O=GeoTrust Inc. OU=(c) 2008 GeoTrust Inc. - For authorized use only +# Label: "GeoTrust Primary Certification Authority - G3" +# Serial: 28809105769928564313984085209975885599 +# MD5 Fingerprint: b5:e8:34:36:c9:10:44:58:48:70:6d:2e:83:d4:b8:05 +# SHA1 Fingerprint: 03:9e:ed:b8:0b:e7:a0:3c:69:53:89:3b:20:d2:d9:32:3a:4c:2a:fd +# SHA256 Fingerprint: b4:78:b8:12:25:0d:f8:78:63:5c:2a:a7:ec:7d:15:5e:aa:62:5e:e8:29:16:e2:cd:29:43:61:88:6c:d1:fb:d4 +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCB +mDELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsT +MChjKSAyMDA4IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s +eTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIzNTk1OVowgZgxCzAJ +BgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0 +BgNVBAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz ++uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5jK/BGvESyiaHAKAxJcCGVn2TAppMSAmUm +hsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdEc5IiaacDiGydY8hS2pgn +5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3CIShwiP/W +JmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exAL +DmKudlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZC +huOl1UcCAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw +HQYDVR0OBBYEFMR5yo6hTgMdHNxr2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IB +AQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9cr5HqQ6XErhK8WTTOd8lNNTB +zU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbEAp7aDHdlDkQN +kv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUH +SJsMC8tJP33st/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2G +spki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- + +# Issuer: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only +# Subject: CN=thawte Primary Root CA - G2 O=thawte, Inc. OU=(c) 2007 thawte, Inc. - For authorized use only +# Label: "thawte Primary Root CA - G2" +# Serial: 71758320672825410020661621085256472406 +# MD5 Fingerprint: 74:9d:ea:60:24:c4:fd:22:53:3e:cc:3a:72:d9:29:4f +# SHA1 Fingerprint: aa:db:bc:22:23:8f:c4:01:a1:27:bb:38:dd:f4:1d:db:08:9e:f0:12 +# SHA256 Fingerprint: a4:31:0d:50:af:18:a6:44:71:90:37:2a:86:af:af:8b:95:1f:fb:43:1d:83:7f:1e:56:88:b4:59:71:ed:15:57 +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMp +IDIwMDcgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAi +BgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMjAeFw0wNzExMDUwMDAw +MDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBGb3Ig +YXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9v +dCBDQSAtIEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/ +BebfowJPDQfGAFG6DAJSLSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6 +papu+7qzcMBniKI11KOasf2twu8x+qi58/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUmtgAMADna3+FGO6Lts6K +DPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUNG4k8VIZ3 +KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41ox +XZ3Krr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- + +# Issuer: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only +# Subject: CN=thawte Primary Root CA - G3 O=thawte, Inc. OU=Certification Services Division/(c) 2008 thawte, Inc. - For authorized use only +# Label: "thawte Primary Root CA - G3" +# Serial: 127614157056681299805556476275995414779 +# MD5 Fingerprint: fb:1b:5d:43:8a:94:cd:44:c6:76:f2:43:4b:47:e7:31 +# SHA1 Fingerprint: f1:8b:53:8d:1b:e9:03:b6:a6:f0:56:43:5b:17:15:89:ca:f3:6b:f2 +# SHA256 Fingerprint: 4b:03:f4:58:07:ad:70:f2:1b:fc:2c:ae:71:c9:fd:e4:60:4c:06:4c:f5:ff:b6:86:ba:e5:db:aa:d7:fd:d3:4c +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCB +rjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMf +Q2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIw +MDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNV +BAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0wODA0MDIwMDAwMDBa +Fw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhhd3Rl +LCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9u +MTgwNgYDVQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXpl +ZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEcz +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr8nLPvb2FvdeHsbnndm +gcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2AtP0LMqmsywCPLLEHd5N/8 +YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC+BsUa0Lf +b1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS9 +9irY7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2S +zhkGcuYMXDhpxwTWvGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUk +OQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNV +HQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJKoZIhvcNAQELBQADggEBABpA +2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweKA3rD6z8KLFIW +oCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7c +KUGRIjxpp7sC8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fM +m7v/OeZWYdMKp8RcTGB7BXcmer/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZu +MdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- + +# Issuer: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only +# Subject: CN=GeoTrust Primary Certification Authority - G2 O=GeoTrust Inc. OU=(c) 2007 GeoTrust Inc. - For authorized use only +# Label: "GeoTrust Primary Certification Authority - G2" +# Serial: 80682863203381065782177908751794619243 +# MD5 Fingerprint: 01:5e:d8:6b:bd:6f:3d:8e:a1:31:f8:12:e0:98:73:6a +# SHA1 Fingerprint: 8d:17:84:d5:37:f3:03:7d:ec:70:fe:57:8b:51:9a:99:e6:10:d7:b0 +# SHA256 Fingerprint: 5e:db:7a:c4:3b:82:a0:6a:87:61:e8:d7:be:49:79:eb:f2:61:1f:7d:d7:9b:f9:1c:1c:6b:56:6a:21:9e:d7:66 +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDEL +MAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChj +KSAyMDA3IEdlb1RydXN0IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2 +MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykgMjAw +NyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNV +BAMTLUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH +MjB2MBAGByqGSM49AgEGBSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcL +So17VDs6bl8VAsBQps8lL33KSLjHUGMcKiEIfJo22Av+0SbFWDEwKCXzXV2juLal +tJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+EVXVMAoG +CCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGT +qQ7mndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBucz +rD6ogRLQy7rQkgu2npaqBA+K +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Universal Root Certification Authority O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2008 VeriSign, Inc. - For authorized use only +# Label: "VeriSign Universal Root Certification Authority" +# Serial: 85209574734084581917763752644031726877 +# MD5 Fingerprint: 8e:ad:b5:01:aa:4d:81:e4:8c:1d:d1:e1:14:00:95:19 +# SHA1 Fingerprint: 36:79:ca:35:66:87:72:30:4d:30:a5:fb:87:3b:0f:a7:7b:b7:0d:54 +# SHA256 Fingerprint: 23:99:56:11:27:a5:71:25:de:8c:ef:ea:61:0d:df:2f:a0:78:b5:c8:06:7f:4e:82:82:90:bf:b8:60:e8:4b:3c +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCB +vTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL +ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJp +U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MTgwNgYDVQQDEy9W +ZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe +Fw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJVUzEX +MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0 +IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9y +IGF1dGhvcml6ZWQgdXNlIG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNh +bCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj1mCOkdeQmIN65lgZOIzF +9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGPMiJhgsWH +H26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+H +LL729fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN +/BMReYTtXlT2NJ8IAfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPT +rJ9VAMf2CGqUuV/c4DPxhGD5WycRtPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0GCCsGAQUFBwEMBGEwX6FdoFsw +WTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2Oa8PPgGrUSBgs +exkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4 +sAPmLGd75JR3Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+ +seQxIcaBlVZaDrHC1LGmWazxY8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz +4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTxP/jgdFcrGJ2BtMQo2pSXpXDrrB2+ +BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+PwGZsY6rp2aQW9IHR +lRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4mJO3 +7M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- + +# Issuer: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only +# Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G4 O=VeriSign, Inc. OU=VeriSign Trust Network/(c) 2007 VeriSign, Inc. - For authorized use only +# Label: "VeriSign Class 3 Public Primary Certification Authority - G4" +# Serial: 63143484348153506665311985501458640051 +# MD5 Fingerprint: 3a:52:e1:e7:fd:6f:3a:e3:6f:f3:6f:99:1b:f9:22:41 +# SHA1 Fingerprint: 22:d5:d8:df:8f:02:31:d1:8d:f7:9d:b7:cf:8a:2d:64:c9:3f:6c:3a +# SHA256 Fingerprint: 69:dd:d7:ea:90:bb:57:c9:3e:13:5d:c8:5e:a6:fc:d5:48:0b:60:32:39:bd:c4:54:fc:75:8b:2a:26:cf:7f:79 +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW +ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp +U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y +aXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJp +U2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwg +SW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2ln +biBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8Utpkmw4tXNherJI9/gHm +GUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGzrl0Bp3ve +fLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJ +aW1hZ2UvZ2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYj +aHR0cDovL2xvZ28udmVyaXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMW +kf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMDA2gAMGUCMGYhDBgmYFo4e1ZC +4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIxAJw9SDkjOVga +FRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- + +# Issuer: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority +# Subject: O=VeriSign, Inc. OU=Class 3 Public Primary Certification Authority +# Label: "Verisign Class 3 Public Primary Certification Authority" +# Serial: 80507572722862485515306429940691309246 +# MD5 Fingerprint: ef:5a:f1:33:ef:f1:cd:bb:51:02:ee:12:14:4b:96:c4 +# SHA1 Fingerprint: a1:db:63:93:91:6f:17:e4:18:55:09:40:04:15:c7:02:40:b0:ae:6b +# SHA256 Fingerprint: a4:b6:b3:99:6f:c2:f3:06:b3:fd:86:81:bd:63:41:3d:8c:50:09:cc:4f:a3:29:c2:cc:f0:e2:fa:1b:14:03:05 +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkG +A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz +cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 +MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV +BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN +ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE +BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is +I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G +CSqGSIb3DQEBBQUAA4GBABByUqkFFBkyCEHwxWsKzH4PIRnN5GfcX6kb5sroc50i +2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWXbj9T/UWZYB2oK0z5XqcJ +2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/D/xwzoiQ +-----END CERTIFICATE----- + +# Issuer: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Subject: CN=GlobalSign O=GlobalSign OU=GlobalSign Root CA - R3 +# Label: "GlobalSign Root CA - R3" +# Serial: 4835703278459759426209954 +# MD5 Fingerprint: c5:df:b8:49:ca:05:13:55:ee:2d:ba:1a:c3:3e:b0:28 +# SHA1 Fingerprint: d6:9b:56:11:48:f0:1c:77:c5:45:78:c1:09:26:df:5b:85:69:76:ad +# SHA256 Fingerprint: cb:b5:22:d7:b7:f1:27:ad:6a:01:13:86:5b:df:1c:d4:10:2e:7d:07:59:af:63:5a:7c:f4:72:0d:c9:63:c5:3b +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G +A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp +Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4 +MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG +A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8 +RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT +gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm +KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd +QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ +XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw +DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o +LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU +RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp +jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK +6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX +mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs +Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH +WD9f +-----END CERTIFICATE----- + +# Issuer: CN=TC TrustCenter Universal CA III O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA +# Subject: CN=TC TrustCenter Universal CA III O=TC TrustCenter GmbH OU=TC TrustCenter Universal CA +# Label: "TC TrustCenter Universal CA III" +# Serial: 2010889993983507346460533407902964 +# MD5 Fingerprint: 9f:dd:db:ab:ff:8e:ff:45:21:5f:f0:6c:9d:8f:fe:2b +# SHA1 Fingerprint: 96:56:cd:7b:57:96:98:95:d0:e1:41:46:68:06:fb:b8:c6:11:06:87 +# SHA256 Fingerprint: 30:9b:4a:87:f6:ca:56:c9:31:69:aa:a9:9c:6d:98:88:54:d7:89:2b:d5:43:7e:2d:07:b2:9c:be:da:55:d3:5d +-----BEGIN CERTIFICATE----- +MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezEL +MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV +BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1 +c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAeFw0wOTA5MDkwODE1MjdaFw0yOTEy +MzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNUQyBUcnVzdENlbnRl +ciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0ExKDAm +BgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF +5+cvAqBNLaT6hdqbJYUtQCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYv +DIRlzg9uwliT6CwLOunBjvvya8o84pxOjuT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8v +zArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+EutCHnNaYlAJ/Uqwa1D7KRT +yGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1M4BDj5yj +dipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBh +MB8GA1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMB +Af8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI +4jANBgkqhkiG9w0BAQUFAAOCAQEAg8ev6n9NCjw5sWi+e22JLumzCecYV42Fmhfz +dkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+KGwWaODIl0YgoGhnYIg5IFHY +aAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhKBgePxLcHsU0G +DeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV +CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPH +LQNjO9Po5KIqwoIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg== +-----END CERTIFICATE----- + +# Issuer: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Subject: CN=Go Daddy Root Certificate Authority - G2 O=GoDaddy.com, Inc. +# Label: "Go Daddy Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 80:3a:bc:22:c1:e6:fb:8d:9b:3b:27:4a:32:1b:9a:01 +# SHA1 Fingerprint: 47:be:ab:c9:22:ea:e8:0e:78:78:34:62:a7:9f:45:c2:54:fd:e6:8b +# SHA256 Fingerprint: 45:14:0b:32:47:eb:9c:c8:c5:b4:f0:d7:b5:30:91:f7:32:92:08:9e:6e:5a:63:e2:74:9d:d3:ac:a9:19:8e:da +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT +EUdvRGFkZHkuY29tLCBJbmMuMTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRp +ZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIz +NTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQH +EwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8GA1UE +AxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKD +E6bFIEMBO4Tx5oVJnyfq9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH +/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD+qK+ihVqf94Lw7YZFAXK6sOoBJQ7Rnwy +DfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutdfMh8+7ArU6SSYmlRJQVh +GkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMlNAJWJwGR +tDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEA +AaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE +FDqahQcQZyi27/a9BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmX +WWcDYfF+OwYxdS2hII5PZYe096acvNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu +9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r5N9ss4UXnT3ZJE95kTXWXwTr +gIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYVN8Gb5DKj7Tjo +2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI +4uJEvlz36hz1 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: d6:39:81:c6:52:7e:96:69:fc:fc:ca:66:ed:05:f2:96 +# SHA1 Fingerprint: b5:1c:06:7c:ee:2b:0c:3d:f8:55:ab:2d:92:f4:fe:39:d4:e7:0f:0e +# SHA256 Fingerprint: 2c:e1:cb:0b:f9:d2:f9:e1:02:99:3f:be:21:51:52:c3:b2:dd:0c:ab:de:1c:68:e5:31:9b:83:91:54:db:b7:f5 +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVs +ZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAw +MFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVj +aG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZp +Y2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL3twQP89o/8ArFvW59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMg +nLRJdzIpVv257IzdIvpy3Cdhl+72WoTsbhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1 +HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNkN3mSwOxGXn/hbVNMYq/N +Hwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7NfZTD4p7dN +dloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0 +HZbUJtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0G +CSqGSIb3DQEBCwUAA4IBAQARWfolTwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjU +sHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx4mcujJUDJi5DnUox9g61DLu3 +4jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUwF5okxBDgBPfg +8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1 +mMpYjn0q7pBZc2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +# Issuer: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Subject: CN=Starfield Services Root Certificate Authority - G2 O=Starfield Technologies, Inc. +# Label: "Starfield Services Root Certificate Authority - G2" +# Serial: 0 +# MD5 Fingerprint: 17:35:74:af:7b:61:1c:eb:f4:f9:3c:e2:ee:40:f9:a2 +# SHA1 Fingerprint: 92:5a:8f:8d:2c:6d:04:e0:66:5f:59:6a:ff:22:d8:63:e8:25:6f:3f +# SHA256 Fingerprint: 56:8d:69:05:a2:c8:87:08:a4:b3:02:51:90:ed:cf:ed:b1:97:4a:60:6a:13:c6:e5:29:0f:cb:2a:e6:3e:da:b5 +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMx +EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoT +HFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVs +ZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNVBAYTAlVTMRAwDgYD +VQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFy +ZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2Vy +dmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20p +OsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm2 +8xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4PahHQUw2eeBGg6345AWh1K +Ts9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLPLJGmpufe +hRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk +6mFBrMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAw +DwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+q +AdcwKziIorhtSpzyEZGDMA0GCSqGSIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMI +bw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPPE95Dz+I0swSdHynVv/heyNXB +ve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTyxQGjhdByPq1z +qwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn +0q23KXB56jzaYyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCN +sSi6 +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Commercial O=AffirmTrust +# Subject: CN=AffirmTrust Commercial O=AffirmTrust +# Label: "AffirmTrust Commercial" +# Serial: 8608355977964138876 +# MD5 Fingerprint: 82:92:ba:5b:ef:cd:8a:6f:a6:3d:55:f9:84:f6:d6:b7 +# SHA1 Fingerprint: f9:b5:b6:32:45:5f:9c:be:ec:57:5f:80:dc:e9:6e:2c:c7:b2:78:b7 +# SHA256 Fingerprint: 03:76:ab:1d:54:c5:f9:80:3c:e4:b2:e2:01:a0:ee:7e:ef:7b:57:b6:36:e8:a9:3c:9b:8d:48:60:c9:6f:5f:a7 +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBDb21tZXJjaWFsMB4XDTEwMDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6EqdbDuKP +Hx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yr +ba0F8PrVC8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPAL +MeIrJmqbTFeurCA+ukV6BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1 +yHp52UKqK39c/s4mT6NmgTWvRLpUHhwwMmWd5jyTXlBOeuM61G7MGvv50jeuJCqr +VwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNVHQ4EFgQUnZPGU4teyq8/ +nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYG +XUPGhi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNj +vbz4YYCanrHOQnDiqX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivt +Z8SOyUOyXGsViQK8YvxO8rUzqrJv0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9g +N53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0khsUlHRUe072o0EclNmsxZt9YC +nlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Networking O=AffirmTrust +# Subject: CN=AffirmTrust Networking O=AffirmTrust +# Label: "AffirmTrust Networking" +# Serial: 8957382827206547757 +# MD5 Fingerprint: 42:65:ca:be:01:9a:9a:4c:a9:8c:41:49:cd:c0:d5:7f +# SHA1 Fingerprint: 29:36:21:02:8b:20:ed:02:f5:66:c5:32:d1:d6:ed:90:9f:45:00:2f +# SHA256 Fingerprint: 0a:81:ec:5a:92:97:77:f1:45:90:4a:f3:8d:5d:50:9f:66:b5:e2:c5:8f:cd:b5:31:05:8b:0e:17:f3:f0:b4:1b +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVz +dCBOZXR3b3JraW5nMB4XDTEwMDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDEL +MAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZp +cm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SEHi3y +YJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbua +kCNrmreIdIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRL +QESxG9fhwoXA3hA/Pe24/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp +6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gbh+0t+nvujArjqWaJGctB+d1ENmHP4ndG +yH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNVHQ4EFgQUBx/S55zawm6i +QLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJ +KoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfO +tDIuUFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzu +QY0x2+c06lkh1QF612S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZ +Lgo/bNjR9eUJtGxUAArgFU2HdW23WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4u +olu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9/ZFvgrG+CJPbFEfxojfHRZ48 +x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Premium O=AffirmTrust +# Subject: CN=AffirmTrust Premium O=AffirmTrust +# Label: "AffirmTrust Premium" +# Serial: 7893706540734352110 +# MD5 Fingerprint: c4:5d:0e:48:b6:ac:28:30:4e:0a:bc:f9:38:16:87:57 +# SHA1 Fingerprint: d8:a6:33:2c:e0:03:6f:b1:85:f6:63:4f:7d:6a:06:65:26:32:28:27 +# SHA256 Fingerprint: 70:a7:3f:7f:37:6b:60:07:42:48:90:45:34:b1:14:82:d5:bf:0e:69:8e:cc:49:8d:f5:25:77:eb:f2:e9:3b:9a +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UE +BhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVz +dCBQcmVtaXVtMB4XDTEwMDEyOTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkG +A1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1U +cnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxBLf +qV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtnBKAQ +JG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ ++jjeRFcV5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrS +s8PhaJyJ+HoAVt70VZVs+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5 +HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmdGPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d7 +70O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5Rp9EixAqnOEhss/n/fauG +V+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NIS+LI+H+S +qHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S +5u046uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4Ia +C1nEWTJ3s7xgaVY5/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TX +OwF0lkLgAOIua+rF7nKsu7/+6qqo+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYE +FJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByvMiPIs0laUZx2 +KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B +8OWycvpEgjNC6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQ +MKSOyARiqcTtNd56l+0OOF6SL5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc +0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK+4w1IX2COPKpVJEZNZOUbWo6xbLQ +u4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmVBtWVyuEklut89pMF +u+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFgIxpH +YoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8 +GKa1qF60g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaO +RtGdFNrHF+QFlozEJLUbzxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6e +KeC2uAloGRwYQw== +-----END CERTIFICATE----- + +# Issuer: CN=AffirmTrust Premium ECC O=AffirmTrust +# Subject: CN=AffirmTrust Premium ECC O=AffirmTrust +# Label: "AffirmTrust Premium ECC" +# Serial: 8401224907861490260 +# MD5 Fingerprint: 64:b0:09:55:cf:b1:d5:99:e2:be:13:ab:a6:5d:ea:4d +# SHA1 Fingerprint: b8:23:6b:00:2f:1d:16:86:53:01:55:6c:11:a4:37:ca:eb:ff:c3:bb +# SHA256 Fingerprint: bd:71:fd:f6:da:97:e4:cf:62:d1:64:7a:dd:25:81:b0:7d:79:ad:f8:39:7e:b4:ec:ba:9c:5e:84:88:82:14:23 +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMC +VVMxFDASBgNVBAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQ +cmVtaXVtIEVDQzAeFw0xMDAxMjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJ +BgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1UcnVzdDEgMB4GA1UEAwwXQWZmaXJt +VHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNMF4bFZ0D +0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQN8O9 +ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0G +A1UdDgQWBBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/Vs +aobgxCd05DhT1wV/GzTjxi+zygk8N53X57hG8f2h4nECMEJZh0PUUd+60wkyWs6I +flc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKMeQ== +-----END CERTIFICATE----- + +# Issuer: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing +# Subject: CN=StartCom Certification Authority O=StartCom Ltd. OU=Secure Digital Certificate Signing +# Label: "StartCom Certification Authority" +# Serial: 45 +# MD5 Fingerprint: c9:3b:0d:84:41:fc:a4:76:79:23:08:57:de:10:19:16 +# SHA1 Fingerprint: a3:f1:33:3f:e2:42:bf:cf:c5:d1:4e:8f:39:42:98:40:68:10:d1:a0 +# SHA256 Fingerprint: e1:78:90:ee:09:a3:fb:f4:f4:8b:9c:41:4a:17:d6:37:b7:a5:06:47:e9:bc:75:23:22:72:7f:cc:17:42:a9:11 +-----BEGIN CERTIFICATE----- +MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEW +MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg +Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM3WhcNMzYwOTE3MTk0NjM2WjB9 +MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi +U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh +cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk +pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf +OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C +Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT +Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi +HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM +Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w ++2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+ +Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3 +Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B +26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID +AQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFul +F2mHMMo0aEPQQa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCC +ATgwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5w +ZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2ludGVybWVk +aWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENvbW1lcmNpYWwgKFN0 +YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0aGUg +c2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0 +aWZpY2F0aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93 +d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgG +CWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5fPGFf59Jb2vKXfuM/gTF +wWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWmN3PH/UvS +Ta0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst +0OcNOrg+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNc +pRJvkrKTlMeIFw6Ttn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKl +CcWw0bdT82AUuoVpaiF8H3VhFyAXe2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVF +P0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA2MFrLH9ZXF2RsXAiV+uKa0hK +1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBsHvUwyKMQ5bLm +KhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE +JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ +8dCAWZvLMdibD4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnm +fyWl8kgAwKQB2j8= +-----END CERTIFICATE----- + +# Issuer: CN=StartCom Certification Authority G2 O=StartCom Ltd. +# Subject: CN=StartCom Certification Authority G2 O=StartCom Ltd. +# Label: "StartCom Certification Authority G2" +# Serial: 59 +# MD5 Fingerprint: 78:4b:fb:9e:64:82:0a:d3:b8:4c:62:f3:64:f2:90:64 +# SHA1 Fingerprint: 31:f1:fd:68:22:63:20:ee:c6:3b:3f:9d:ea:4a:3e:53:7c:7c:39:17 +# SHA256 Fingerprint: c7:ba:65:67:de:93:a7:98:ae:1f:aa:79:1e:71:2d:37:8f:ae:1f:93:c4:39:7f:ea:44:1b:b7:cb:e6:fd:59:95 +-----BEGIN CERTIFICATE----- +MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEW +MBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlm +aWNhdGlvbiBBdXRob3JpdHkgRzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1 +OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjEsMCoG +A1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRzIwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8Oo1XJ +JZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsD +vfOpL9HG4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnoo +D/Uefyf3lLE3PbfHkffiAez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/ +Q0kGi4xDuFby2X8hQxfqp0iVAXV16iulQ5XqFYSdCI0mblWbq9zSOdIxHWDirMxW +RST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbsO+wmETRIjfaAKxojAuuK +HDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8HvKTlXcxN +nw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM +0D4LnMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/i +UUjXuG+v+E5+M5iSFGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9 +Ha90OrInwMEePnWjFqmveiJdnxMaz6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHg +TuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE +AwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJKoZIhvcNAQEL +BQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K +2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfX +UfEpY9Z1zRbkJ4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl +6/2o1PXWT6RbdejF0mCy2wl+JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK +9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG/+gyRr61M3Z3qAFdlsHB1b6uJcDJ +HgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTcnIhT76IxW1hPkWLI +wpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/XldblhY +XzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5l +IxKVCCIcl85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoo +hdVddLHRDiBYmxOlsGOm7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulr +so8uBtjRkcfGEvRM/TAXw8HaOFvjqermobp573PYtlNXLfbQ4ddI +-----END CERTIFICATE----- diff --git a/oauth/Google/Model.php b/oauth/Google/Model.php new file mode 100644 index 0000000..34904ab --- /dev/null +++ b/oauth/Google/Model.php @@ -0,0 +1,250 @@ + + * + */ +class Google_Model implements ArrayAccess +{ + protected $modelData = array(); + protected $processed = array(); + + /** + * Polymorphic - accepts a variable number of arguments dependent + * on the type of the model subclass. + */ + public function __construct() + { + if (func_num_args() == 1 && is_array(func_get_arg(0))) { + // Initialize the model with the array's contents. + $array = func_get_arg(0); + $this->mapTypes($array); + } + } + + public function __get($key) + { + $keyTypeName = $this->keyType($key); + $keyDataType = $this->dataType($key); + if (isset($this->$keyTypeName) && !isset($this->processed[$key])) { + if (isset($this->modelData[$key])) { + $val = $this->modelData[$key]; + } else if (isset($this->$keyDataType) && + ($this->$keyDataType == 'array' || $this->$keyDataType == 'map')) { + $val = array(); + } else { + $val = null; + } + + if ($this->isAssociativeArray($val)) { + if (isset($this->$keyDataType) && 'map' == $this->$keyDataType) { + foreach ($val as $arrayKey => $arrayItem) { + $this->modelData[$key][$arrayKey] = + $this->createObjectFromName($keyTypeName, $arrayItem); + } + } else { + $this->modelData[$key] = $this->createObjectFromName($keyTypeName, $val); + } + } else if (is_array($val)) { + $arrayObject = array(); + foreach ($val as $arrayIndex => $arrayItem) { + $arrayObject[$arrayIndex] = + $this->createObjectFromName($keyTypeName, $arrayItem); + } + $this->modelData[$key] = $arrayObject; + } + $this->processed[$key] = true; + } + + return $this->modelData[$key]; + } + + /** + * Initialize this object's properties from an array. + * + * @param array $array Used to seed this object's properties. + * @return void + */ + protected function mapTypes($array) + { + // Hard initilise simple types, lazy load more complex ones. + foreach ($array as $key => $val) { + if ( !property_exists($this, $this->keyType($key)) && + property_exists($this, $key)) { + $this->$key = $val; + unset($array[$key]); + } elseif (property_exists($this, $camelKey = Google_Utils::camelCase($key))) { + // This checks if property exists as camelCase, leaving it in array as snake_case + // in case of backwards compatibility issues. + $this->$camelKey = $val; + } + } + $this->modelData = $array; + } + + /** + * Create a simplified object suitable for straightforward + * conversion to JSON. This is relatively expensive + * due to the usage of reflection, but shouldn't be called + * a whole lot, and is the most straightforward way to filter. + */ + public function toSimpleObject() + { + $object = new stdClass(); + + // Process all other data. + foreach ($this->modelData as $key => $val) { + $result = $this->getSimpleValue($val); + if ($result !== null) { + $object->$key = $result; + } + } + + // Process all public properties. + $reflect = new ReflectionObject($this); + $props = $reflect->getProperties(ReflectionProperty::IS_PUBLIC); + foreach ($props as $member) { + $name = $member->getName(); + $result = $this->getSimpleValue($this->$name); + if ($result !== null) { + $object->$name = $result; + } + } + + return $object; + } + + /** + * Handle different types of values, primarily + * other objects and map and array data types. + */ + private function getSimpleValue($value) + { + if ($value instanceof Google_Model) { + return $value->toSimpleObject(); + } else if (is_array($value)) { + $return = array(); + foreach ($value as $key => $a_value) { + $a_value = $this->getSimpleValue($a_value); + if ($a_value !== null) { + $return[$key] = $a_value; + } + } + return $return; + } + return $value; + } + + /** + * Returns true only if the array is associative. + * @param array $array + * @return bool True if the array is associative. + */ + protected function isAssociativeArray($array) + { + if (!is_array($array)) { + return false; + } + $keys = array_keys($array); + foreach ($keys as $key) { + if (is_string($key)) { + return true; + } + } + return false; + } + + /** + * Given a variable name, discover its type. + * + * @param $name + * @param $item + * @return object The object from the item. + */ + private function createObjectFromName($name, $item) + { + $type = $this->$name; + return new $type($item); + } + + /** + * Verify if $obj is an array. + * @throws Google_Exception Thrown if $obj isn't an array. + * @param array $obj Items that should be validated. + * @param string $method Method expecting an array as an argument. + */ + public function assertIsArray($obj, $method) + { + if ($obj && !is_array($obj)) { + throw new Google_Exception( + "Incorrect parameter type passed to $method(). Expected an array." + ); + } + } + + public function offsetExists($offset) + { + return isset($this->$offset) || isset($this->modelData[$offset]); + } + + public function offsetGet($offset) + { + return isset($this->$offset) ? + $this->$offset : + $this->__get($offset); + } + + public function offsetSet($offset, $value) + { + if (property_exists($this, $offset)) { + $this->$offset = $value; + } else { + $this->modelData[$offset] = $value; + $this->processed[$offset] = true; + } + } + + public function offsetUnset($offset) + { + unset($this->modelData[$offset]); + } + + protected function keyType($key) + { + return $key . "Type"; + } + + protected function dataType($key) + { + return $key . "DataType"; + } + + public function __isset($key) + { + return isset($this->modelData[$key]); + } + + public function __unset($key) + { + unset($this->modelData[$key]); + } +} diff --git a/oauth/Google/Service.php b/oauth/Google/Service.php new file mode 100644 index 0000000..2e0b6c5 --- /dev/null +++ b/oauth/Google/Service.php @@ -0,0 +1,39 @@ +client = $client; + } + + /** + * Return the associated Google_Client class. + * @return Google_Client + */ + public function getClient() + { + return $this->client; + } +} diff --git a/oauth/Google/Service/AdExchangeBuyer.php b/oauth/Google/Service/AdExchangeBuyer.php new file mode 100644 index 0000000..533b9b2 --- /dev/null +++ b/oauth/Google/Service/AdExchangeBuyer.php @@ -0,0 +1,1997 @@ + + * Accesses your bidding-account information, submits creatives for validation, finds available direct deals, and retrieves performance reports. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_AdExchangeBuyer extends Google_Service +{ + /** Manage your Ad Exchange buyer account configuration. */ + const ADEXCHANGE_BUYER = "https://www.googleapis.com/auth/adexchange.buyer"; + + public $accounts; + public $billingInfo; + public $creatives; + public $directDeals; + public $performanceReport; + public $pretargetingConfig; + + + /** + * Constructs the internal representation of the AdExchangeBuyer service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'adexchangebuyer/v1.3/'; + $this->version = 'v1.3'; + $this->serviceName = 'adexchangebuyer'; + + $this->accounts = new Google_Service_AdExchangeBuyer_Accounts_Resource( + $this, + $this->serviceName, + 'accounts', + array( + 'methods' => array( + 'get' => array( + 'path' => 'accounts/{id}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'accounts', + 'httpMethod' => 'GET', + 'parameters' => array(), + ),'patch' => array( + 'path' => 'accounts/{id}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'accounts/{id}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->billingInfo = new Google_Service_AdExchangeBuyer_BillingInfo_Resource( + $this, + $this->serviceName, + 'billingInfo', + array( + 'methods' => array( + 'get' => array( + 'path' => 'billinginfo/{accountId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'billinginfo', + 'httpMethod' => 'GET', + 'parameters' => array(), + ), + ) + ) + ); + $this->creatives = new Google_Service_AdExchangeBuyer_Creatives_Resource( + $this, + $this->serviceName, + 'creatives', + array( + 'methods' => array( + 'get' => array( + 'path' => 'creatives/{accountId}/{buyerCreativeId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'buyerCreativeId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'creatives', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'list' => array( + 'path' => 'creatives', + 'httpMethod' => 'GET', + 'parameters' => array( + 'statusFilter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'buyerCreativeId' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'accountId' => array( + 'location' => 'query', + 'type' => 'integer', + 'repeated' => true, + ), + ), + ), + ) + ) + ); + $this->directDeals = new Google_Service_AdExchangeBuyer_DirectDeals_Resource( + $this, + $this->serviceName, + 'directDeals', + array( + 'methods' => array( + 'get' => array( + 'path' => 'directdeals/{id}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'directdeals', + 'httpMethod' => 'GET', + 'parameters' => array(), + ), + ) + ) + ); + $this->performanceReport = new Google_Service_AdExchangeBuyer_PerformanceReport_Resource( + $this, + $this->serviceName, + 'performanceReport', + array( + 'methods' => array( + 'list' => array( + 'path' => 'performancereport', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'endDateTime' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'startDateTime' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->pretargetingConfig = new Google_Service_AdExchangeBuyer_PretargetingConfig_Resource( + $this, + $this->serviceName, + 'pretargetingConfig', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'pretargetingconfigs/{accountId}/{configId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'configId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'pretargetingconfigs/{accountId}/{configId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'configId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'pretargetingconfigs/{accountId}', + 'httpMethod' => 'POST', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'pretargetingconfigs/{accountId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => 'pretargetingconfigs/{accountId}/{configId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'configId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'pretargetingconfigs/{accountId}/{configId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'configId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "accounts" collection of methods. + * Typical usage is: + * + * $adexchangebuyerService = new Google_Service_AdExchangeBuyer(...); + * $accounts = $adexchangebuyerService->accounts; + * + */ +class Google_Service_AdExchangeBuyer_Accounts_Resource extends Google_Service_Resource +{ + + /** + * Gets one account by ID. (accounts.get) + * + * @param int $id + * The account id + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeBuyer_Account + */ + public function get($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdExchangeBuyer_Account"); + } + /** + * Retrieves the authenticated user's list of accounts. (accounts.listAccounts) + * + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeBuyer_AccountsList + */ + public function listAccounts($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdExchangeBuyer_AccountsList"); + } + /** + * Updates an existing account. This method supports patch semantics. + * (accounts.patch) + * + * @param int $id + * The account id + * @param Google_Account $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeBuyer_Account + */ + public function patch($id, Google_Service_AdExchangeBuyer_Account $postBody, $optParams = array()) + { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_AdExchangeBuyer_Account"); + } + /** + * Updates an existing account. (accounts.update) + * + * @param int $id + * The account id + * @param Google_Account $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeBuyer_Account + */ + public function update($id, Google_Service_AdExchangeBuyer_Account $postBody, $optParams = array()) + { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_AdExchangeBuyer_Account"); + } +} + +/** + * The "billingInfo" collection of methods. + * Typical usage is: + * + * $adexchangebuyerService = new Google_Service_AdExchangeBuyer(...); + * $billingInfo = $adexchangebuyerService->billingInfo; + * + */ +class Google_Service_AdExchangeBuyer_BillingInfo_Resource extends Google_Service_Resource +{ + + /** + * Returns the billing information for one account specified by account ID. + * (billingInfo.get) + * + * @param int $accountId + * The account id. + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeBuyer_BillingInfo + */ + public function get($accountId, $optParams = array()) + { + $params = array('accountId' => $accountId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdExchangeBuyer_BillingInfo"); + } + /** + * Retrieves a list of billing information for all accounts of the authenticated + * user. (billingInfo.listBillingInfo) + * + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeBuyer_BillingInfoList + */ + public function listBillingInfo($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdExchangeBuyer_BillingInfoList"); + } +} + +/** + * The "creatives" collection of methods. + * Typical usage is: + * + * $adexchangebuyerService = new Google_Service_AdExchangeBuyer(...); + * $creatives = $adexchangebuyerService->creatives; + * + */ +class Google_Service_AdExchangeBuyer_Creatives_Resource extends Google_Service_Resource +{ + + /** + * Gets the status for a single creative. A creative will be available 30-40 + * minutes after submission. (creatives.get) + * + * @param int $accountId + * The id for the account that will serve this creative. + * @param string $buyerCreativeId + * The buyer-specific id for this creative. + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeBuyer_Creative + */ + public function get($accountId, $buyerCreativeId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'buyerCreativeId' => $buyerCreativeId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdExchangeBuyer_Creative"); + } + /** + * Submit a new creative. (creatives.insert) + * + * @param Google_Creative $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeBuyer_Creative + */ + public function insert(Google_Service_AdExchangeBuyer_Creative $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_AdExchangeBuyer_Creative"); + } + /** + * Retrieves a list of the authenticated user's active creatives. A creative + * will be available 30-40 minutes after submission. (creatives.listCreatives) + * + * @param array $optParams Optional parameters. + * + * @opt_param string statusFilter + * When specified, only creatives having the given status are returned. + * @opt_param string pageToken + * A continuation token, used to page through ad clients. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. Optional. + * @opt_param string maxResults + * Maximum number of entries returned on one result page. If not set, the default is 100. Optional. + * @opt_param string buyerCreativeId + * When specified, only creatives for the given buyer creative ids are returned. + * @opt_param int accountId + * When specified, only creatives for the given account ids are returned. + * @return Google_Service_AdExchangeBuyer_CreativesList + */ + public function listCreatives($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdExchangeBuyer_CreativesList"); + } +} + +/** + * The "directDeals" collection of methods. + * Typical usage is: + * + * $adexchangebuyerService = new Google_Service_AdExchangeBuyer(...); + * $directDeals = $adexchangebuyerService->directDeals; + * + */ +class Google_Service_AdExchangeBuyer_DirectDeals_Resource extends Google_Service_Resource +{ + + /** + * Gets one direct deal by ID. (directDeals.get) + * + * @param string $id + * The direct deal id + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeBuyer_DirectDeal + */ + public function get($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdExchangeBuyer_DirectDeal"); + } + /** + * Retrieves the authenticated user's list of direct deals. + * (directDeals.listDirectDeals) + * + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeBuyer_DirectDealsList + */ + public function listDirectDeals($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdExchangeBuyer_DirectDealsList"); + } +} + +/** + * The "performanceReport" collection of methods. + * Typical usage is: + * + * $adexchangebuyerService = new Google_Service_AdExchangeBuyer(...); + * $performanceReport = $adexchangebuyerService->performanceReport; + * + */ +class Google_Service_AdExchangeBuyer_PerformanceReport_Resource extends Google_Service_Resource +{ + + /** + * Retrieves the authenticated user's list of performance metrics. + * (performanceReport.listPerformanceReport) + * + * @param string $accountId + * The account id to get the reports. + * @param string $endDateTime + * The end time of the report in ISO 8601 timestamp format using UTC. + * @param string $startDateTime + * The start time of the report in ISO 8601 timestamp format using UTC. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through performance reports. To retrieve the next page, set + * this parameter to the value of "nextPageToken" from the previous response. Optional. + * @opt_param string maxResults + * Maximum number of entries returned on one result page. If not set, the default is 100. Optional. + * @return Google_Service_AdExchangeBuyer_PerformanceReportList + */ + public function listPerformanceReport($accountId, $endDateTime, $startDateTime, $optParams = array()) + { + $params = array('accountId' => $accountId, 'endDateTime' => $endDateTime, 'startDateTime' => $startDateTime); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdExchangeBuyer_PerformanceReportList"); + } +} + +/** + * The "pretargetingConfig" collection of methods. + * Typical usage is: + * + * $adexchangebuyerService = new Google_Service_AdExchangeBuyer(...); + * $pretargetingConfig = $adexchangebuyerService->pretargetingConfig; + * + */ +class Google_Service_AdExchangeBuyer_PretargetingConfig_Resource extends Google_Service_Resource +{ + + /** + * Deletes an existing pretargeting config. (pretargetingConfig.delete) + * + * @param string $accountId + * The account id to delete the pretargeting config for. + * @param string $configId + * The specific id of the configuration to delete. + * @param array $optParams Optional parameters. + */ + public function delete($accountId, $configId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'configId' => $configId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets a specific pretargeting configuration (pretargetingConfig.get) + * + * @param string $accountId + * The account id to get the pretargeting config for. + * @param string $configId + * The specific id of the configuration to retrieve. + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeBuyer_PretargetingConfig + */ + public function get($accountId, $configId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'configId' => $configId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdExchangeBuyer_PretargetingConfig"); + } + /** + * Inserts a new pretargeting configuration. (pretargetingConfig.insert) + * + * @param string $accountId + * The account id to insert the pretargeting config for. + * @param Google_PretargetingConfig $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeBuyer_PretargetingConfig + */ + public function insert($accountId, Google_Service_AdExchangeBuyer_PretargetingConfig $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_AdExchangeBuyer_PretargetingConfig"); + } + /** + * Retrieves a list of the authenticated user's pretargeting configurations. + * (pretargetingConfig.listPretargetingConfig) + * + * @param string $accountId + * The account id to get the pretargeting configs for. + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeBuyer_PretargetingConfigList + */ + public function listPretargetingConfig($accountId, $optParams = array()) + { + $params = array('accountId' => $accountId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdExchangeBuyer_PretargetingConfigList"); + } + /** + * Updates an existing pretargeting config. This method supports patch + * semantics. (pretargetingConfig.patch) + * + * @param string $accountId + * The account id to update the pretargeting config for. + * @param string $configId + * The specific id of the configuration to update. + * @param Google_PretargetingConfig $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeBuyer_PretargetingConfig + */ + public function patch($accountId, $configId, Google_Service_AdExchangeBuyer_PretargetingConfig $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'configId' => $configId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_AdExchangeBuyer_PretargetingConfig"); + } + /** + * Updates an existing pretargeting config. (pretargetingConfig.update) + * + * @param string $accountId + * The account id to update the pretargeting config for. + * @param string $configId + * The specific id of the configuration to update. + * @param Google_PretargetingConfig $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeBuyer_PretargetingConfig + */ + public function update($accountId, $configId, Google_Service_AdExchangeBuyer_PretargetingConfig $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'configId' => $configId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_AdExchangeBuyer_PretargetingConfig"); + } +} + + + + +class Google_Service_AdExchangeBuyer_Account extends Google_Collection +{ + protected $bidderLocationType = 'Google_Service_AdExchangeBuyer_AccountBidderLocation'; + protected $bidderLocationDataType = 'array'; + public $cookieMatchingNid; + public $cookieMatchingUrl; + public $id; + public $kind; + public $maximumTotalQps; + + public function setBidderLocation($bidderLocation) + { + $this->bidderLocation = $bidderLocation; + } + + public function getBidderLocation() + { + return $this->bidderLocation; + } + + public function setCookieMatchingNid($cookieMatchingNid) + { + $this->cookieMatchingNid = $cookieMatchingNid; + } + + public function getCookieMatchingNid() + { + return $this->cookieMatchingNid; + } + + public function setCookieMatchingUrl($cookieMatchingUrl) + { + $this->cookieMatchingUrl = $cookieMatchingUrl; + } + + public function getCookieMatchingUrl() + { + return $this->cookieMatchingUrl; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMaximumTotalQps($maximumTotalQps) + { + $this->maximumTotalQps = $maximumTotalQps; + } + + public function getMaximumTotalQps() + { + return $this->maximumTotalQps; + } +} + +class Google_Service_AdExchangeBuyer_AccountBidderLocation extends Google_Model +{ + public $maximumQps; + public $region; + public $url; + + public function setMaximumQps($maximumQps) + { + $this->maximumQps = $maximumQps; + } + + public function getMaximumQps() + { + return $this->maximumQps; + } + + public function setRegion($region) + { + $this->region = $region; + } + + public function getRegion() + { + return $this->region; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_AdExchangeBuyer_AccountsList extends Google_Collection +{ + protected $itemsType = 'Google_Service_AdExchangeBuyer_Account'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_AdExchangeBuyer_BillingInfo extends Google_Collection +{ + public $accountId; + public $accountName; + public $billingId; + public $kind; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setAccountName($accountName) + { + $this->accountName = $accountName; + } + + public function getAccountName() + { + return $this->accountName; + } + + public function setBillingId($billingId) + { + $this->billingId = $billingId; + } + + public function getBillingId() + { + return $this->billingId; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_AdExchangeBuyer_BillingInfoList extends Google_Collection +{ + protected $itemsType = 'Google_Service_AdExchangeBuyer_BillingInfo'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_AdExchangeBuyer_Creative extends Google_Collection +{ + public $hTMLSnippet; + public $accountId; + public $advertiserId; + public $advertiserName; + public $agencyId; + public $attribute; + public $buyerCreativeId; + public $clickThroughUrl; + protected $correctionsType = 'Google_Service_AdExchangeBuyer_CreativeCorrections'; + protected $correctionsDataType = 'array'; + protected $disapprovalReasonsType = 'Google_Service_AdExchangeBuyer_CreativeDisapprovalReasons'; + protected $disapprovalReasonsDataType = 'array'; + protected $filteringReasonsType = 'Google_Service_AdExchangeBuyer_CreativeFilteringReasons'; + protected $filteringReasonsDataType = ''; + public $height; + public $kind; + public $productCategories; + public $restrictedCategories; + public $sensitiveCategories; + public $status; + public $vendorType; + public $videoURL; + public $width; + + public function setHTMLSnippet($hTMLSnippet) + { + $this->hTMLSnippet = $hTMLSnippet; + } + + public function getHTMLSnippet() + { + return $this->hTMLSnippet; + } + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setAdvertiserId($advertiserId) + { + $this->advertiserId = $advertiserId; + } + + public function getAdvertiserId() + { + return $this->advertiserId; + } + + public function setAdvertiserName($advertiserName) + { + $this->advertiserName = $advertiserName; + } + + public function getAdvertiserName() + { + return $this->advertiserName; + } + + public function setAgencyId($agencyId) + { + $this->agencyId = $agencyId; + } + + public function getAgencyId() + { + return $this->agencyId; + } + + public function setAttribute($attribute) + { + $this->attribute = $attribute; + } + + public function getAttribute() + { + return $this->attribute; + } + + public function setBuyerCreativeId($buyerCreativeId) + { + $this->buyerCreativeId = $buyerCreativeId; + } + + public function getBuyerCreativeId() + { + return $this->buyerCreativeId; + } + + public function setClickThroughUrl($clickThroughUrl) + { + $this->clickThroughUrl = $clickThroughUrl; + } + + public function getClickThroughUrl() + { + return $this->clickThroughUrl; + } + + public function setCorrections($corrections) + { + $this->corrections = $corrections; + } + + public function getCorrections() + { + return $this->corrections; + } + + public function setDisapprovalReasons($disapprovalReasons) + { + $this->disapprovalReasons = $disapprovalReasons; + } + + public function getDisapprovalReasons() + { + return $this->disapprovalReasons; + } + + public function setFilteringReasons(Google_Service_AdExchangeBuyer_CreativeFilteringReasons $filteringReasons) + { + $this->filteringReasons = $filteringReasons; + } + + public function getFilteringReasons() + { + return $this->filteringReasons; + } + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setProductCategories($productCategories) + { + $this->productCategories = $productCategories; + } + + public function getProductCategories() + { + return $this->productCategories; + } + + public function setRestrictedCategories($restrictedCategories) + { + $this->restrictedCategories = $restrictedCategories; + } + + public function getRestrictedCategories() + { + return $this->restrictedCategories; + } + + public function setSensitiveCategories($sensitiveCategories) + { + $this->sensitiveCategories = $sensitiveCategories; + } + + public function getSensitiveCategories() + { + return $this->sensitiveCategories; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setVendorType($vendorType) + { + $this->vendorType = $vendorType; + } + + public function getVendorType() + { + return $this->vendorType; + } + + public function setVideoURL($videoURL) + { + $this->videoURL = $videoURL; + } + + public function getVideoURL() + { + return $this->videoURL; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_AdExchangeBuyer_CreativeCorrections extends Google_Collection +{ + public $details; + public $reason; + + public function setDetails($details) + { + $this->details = $details; + } + + public function getDetails() + { + return $this->details; + } + + public function setReason($reason) + { + $this->reason = $reason; + } + + public function getReason() + { + return $this->reason; + } +} + +class Google_Service_AdExchangeBuyer_CreativeDisapprovalReasons extends Google_Collection +{ + public $details; + public $reason; + + public function setDetails($details) + { + $this->details = $details; + } + + public function getDetails() + { + return $this->details; + } + + public function setReason($reason) + { + $this->reason = $reason; + } + + public function getReason() + { + return $this->reason; + } +} + +class Google_Service_AdExchangeBuyer_CreativeFilteringReasons extends Google_Collection +{ + public $date; + protected $reasonsType = 'Google_Service_AdExchangeBuyer_CreativeFilteringReasonsReasons'; + protected $reasonsDataType = 'array'; + + public function setDate($date) + { + $this->date = $date; + } + + public function getDate() + { + return $this->date; + } + + public function setReasons($reasons) + { + $this->reasons = $reasons; + } + + public function getReasons() + { + return $this->reasons; + } +} + +class Google_Service_AdExchangeBuyer_CreativeFilteringReasonsReasons extends Google_Model +{ + public $filteringCount; + public $filteringStatus; + + public function setFilteringCount($filteringCount) + { + $this->filteringCount = $filteringCount; + } + + public function getFilteringCount() + { + return $this->filteringCount; + } + + public function setFilteringStatus($filteringStatus) + { + $this->filteringStatus = $filteringStatus; + } + + public function getFilteringStatus() + { + return $this->filteringStatus; + } +} + +class Google_Service_AdExchangeBuyer_CreativesList extends Google_Collection +{ + protected $itemsType = 'Google_Service_AdExchangeBuyer_Creative'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_AdExchangeBuyer_DirectDeal extends Google_Model +{ + public $accountId; + public $advertiser; + public $currencyCode; + public $endTime; + public $fixedCpm; + public $id; + public $kind; + public $name; + public $privateExchangeMinCpm; + public $sellerNetwork; + public $startTime; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setAdvertiser($advertiser) + { + $this->advertiser = $advertiser; + } + + public function getAdvertiser() + { + return $this->advertiser; + } + + public function setCurrencyCode($currencyCode) + { + $this->currencyCode = $currencyCode; + } + + public function getCurrencyCode() + { + return $this->currencyCode; + } + + public function setEndTime($endTime) + { + $this->endTime = $endTime; + } + + public function getEndTime() + { + return $this->endTime; + } + + public function setFixedCpm($fixedCpm) + { + $this->fixedCpm = $fixedCpm; + } + + public function getFixedCpm() + { + return $this->fixedCpm; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPrivateExchangeMinCpm($privateExchangeMinCpm) + { + $this->privateExchangeMinCpm = $privateExchangeMinCpm; + } + + public function getPrivateExchangeMinCpm() + { + return $this->privateExchangeMinCpm; + } + + public function setSellerNetwork($sellerNetwork) + { + $this->sellerNetwork = $sellerNetwork; + } + + public function getSellerNetwork() + { + return $this->sellerNetwork; + } + + public function setStartTime($startTime) + { + $this->startTime = $startTime; + } + + public function getStartTime() + { + return $this->startTime; + } +} + +class Google_Service_AdExchangeBuyer_DirectDealsList extends Google_Collection +{ + protected $directDealsType = 'Google_Service_AdExchangeBuyer_DirectDeal'; + protected $directDealsDataType = 'array'; + public $kind; + + public function setDirectDeals($directDeals) + { + $this->directDeals = $directDeals; + } + + public function getDirectDeals() + { + return $this->directDeals; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_AdExchangeBuyer_PerformanceReport extends Google_Collection +{ + public $calloutStatusRate; + public $cookieMatcherStatusRate; + public $creativeStatusRate; + public $hostedMatchStatusRate; + public $kind; + public $latency50thPercentile; + public $latency85thPercentile; + public $latency95thPercentile; + public $noQuotaInRegion; + public $outOfQuota; + public $pixelMatchRequests; + public $pixelMatchResponses; + public $quotaConfiguredLimit; + public $quotaThrottledLimit; + public $region; + public $timestamp; + + public function setCalloutStatusRate($calloutStatusRate) + { + $this->calloutStatusRate = $calloutStatusRate; + } + + public function getCalloutStatusRate() + { + return $this->calloutStatusRate; + } + + public function setCookieMatcherStatusRate($cookieMatcherStatusRate) + { + $this->cookieMatcherStatusRate = $cookieMatcherStatusRate; + } + + public function getCookieMatcherStatusRate() + { + return $this->cookieMatcherStatusRate; + } + + public function setCreativeStatusRate($creativeStatusRate) + { + $this->creativeStatusRate = $creativeStatusRate; + } + + public function getCreativeStatusRate() + { + return $this->creativeStatusRate; + } + + public function setHostedMatchStatusRate($hostedMatchStatusRate) + { + $this->hostedMatchStatusRate = $hostedMatchStatusRate; + } + + public function getHostedMatchStatusRate() + { + return $this->hostedMatchStatusRate; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLatency50thPercentile($latency50thPercentile) + { + $this->latency50thPercentile = $latency50thPercentile; + } + + public function getLatency50thPercentile() + { + return $this->latency50thPercentile; + } + + public function setLatency85thPercentile($latency85thPercentile) + { + $this->latency85thPercentile = $latency85thPercentile; + } + + public function getLatency85thPercentile() + { + return $this->latency85thPercentile; + } + + public function setLatency95thPercentile($latency95thPercentile) + { + $this->latency95thPercentile = $latency95thPercentile; + } + + public function getLatency95thPercentile() + { + return $this->latency95thPercentile; + } + + public function setNoQuotaInRegion($noQuotaInRegion) + { + $this->noQuotaInRegion = $noQuotaInRegion; + } + + public function getNoQuotaInRegion() + { + return $this->noQuotaInRegion; + } + + public function setOutOfQuota($outOfQuota) + { + $this->outOfQuota = $outOfQuota; + } + + public function getOutOfQuota() + { + return $this->outOfQuota; + } + + public function setPixelMatchRequests($pixelMatchRequests) + { + $this->pixelMatchRequests = $pixelMatchRequests; + } + + public function getPixelMatchRequests() + { + return $this->pixelMatchRequests; + } + + public function setPixelMatchResponses($pixelMatchResponses) + { + $this->pixelMatchResponses = $pixelMatchResponses; + } + + public function getPixelMatchResponses() + { + return $this->pixelMatchResponses; + } + + public function setQuotaConfiguredLimit($quotaConfiguredLimit) + { + $this->quotaConfiguredLimit = $quotaConfiguredLimit; + } + + public function getQuotaConfiguredLimit() + { + return $this->quotaConfiguredLimit; + } + + public function setQuotaThrottledLimit($quotaThrottledLimit) + { + $this->quotaThrottledLimit = $quotaThrottledLimit; + } + + public function getQuotaThrottledLimit() + { + return $this->quotaThrottledLimit; + } + + public function setRegion($region) + { + $this->region = $region; + } + + public function getRegion() + { + return $this->region; + } + + public function setTimestamp($timestamp) + { + $this->timestamp = $timestamp; + } + + public function getTimestamp() + { + return $this->timestamp; + } +} + +class Google_Service_AdExchangeBuyer_PerformanceReportList extends Google_Collection +{ + public $kind; + protected $performanceReportType = 'Google_Service_AdExchangeBuyer_PerformanceReport'; + protected $performanceReportDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPerformanceReport($performanceReport) + { + $this->performanceReport = $performanceReport; + } + + public function getPerformanceReport() + { + return $this->performanceReport; + } +} + +class Google_Service_AdExchangeBuyer_PretargetingConfig extends Google_Collection +{ + public $configId; + public $configName; + public $creativeType; + protected $dimensionsType = 'Google_Service_AdExchangeBuyer_PretargetingConfigDimensions'; + protected $dimensionsDataType = 'array'; + public $excludedContentLabels; + public $excludedGeoCriteriaIds; + protected $excludedPlacementsType = 'Google_Service_AdExchangeBuyer_PretargetingConfigExcludedPlacements'; + protected $excludedPlacementsDataType = 'array'; + public $excludedUserLists; + public $excludedVerticals; + public $geoCriteriaIds; + public $isActive; + public $kind; + public $languages; + public $mobileCarriers; + public $mobileDevices; + public $mobileOperatingSystemVersions; + protected $placementsType = 'Google_Service_AdExchangeBuyer_PretargetingConfigPlacements'; + protected $placementsDataType = 'array'; + public $platforms; + public $supportedCreativeAttributes; + public $userLists; + public $vendorTypes; + public $verticals; + + public function setConfigId($configId) + { + $this->configId = $configId; + } + + public function getConfigId() + { + return $this->configId; + } + + public function setConfigName($configName) + { + $this->configName = $configName; + } + + public function getConfigName() + { + return $this->configName; + } + + public function setCreativeType($creativeType) + { + $this->creativeType = $creativeType; + } + + public function getCreativeType() + { + return $this->creativeType; + } + + public function setDimensions($dimensions) + { + $this->dimensions = $dimensions; + } + + public function getDimensions() + { + return $this->dimensions; + } + + public function setExcludedContentLabels($excludedContentLabels) + { + $this->excludedContentLabels = $excludedContentLabels; + } + + public function getExcludedContentLabels() + { + return $this->excludedContentLabels; + } + + public function setExcludedGeoCriteriaIds($excludedGeoCriteriaIds) + { + $this->excludedGeoCriteriaIds = $excludedGeoCriteriaIds; + } + + public function getExcludedGeoCriteriaIds() + { + return $this->excludedGeoCriteriaIds; + } + + public function setExcludedPlacements($excludedPlacements) + { + $this->excludedPlacements = $excludedPlacements; + } + + public function getExcludedPlacements() + { + return $this->excludedPlacements; + } + + public function setExcludedUserLists($excludedUserLists) + { + $this->excludedUserLists = $excludedUserLists; + } + + public function getExcludedUserLists() + { + return $this->excludedUserLists; + } + + public function setExcludedVerticals($excludedVerticals) + { + $this->excludedVerticals = $excludedVerticals; + } + + public function getExcludedVerticals() + { + return $this->excludedVerticals; + } + + public function setGeoCriteriaIds($geoCriteriaIds) + { + $this->geoCriteriaIds = $geoCriteriaIds; + } + + public function getGeoCriteriaIds() + { + return $this->geoCriteriaIds; + } + + public function setIsActive($isActive) + { + $this->isActive = $isActive; + } + + public function getIsActive() + { + return $this->isActive; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLanguages($languages) + { + $this->languages = $languages; + } + + public function getLanguages() + { + return $this->languages; + } + + public function setMobileCarriers($mobileCarriers) + { + $this->mobileCarriers = $mobileCarriers; + } + + public function getMobileCarriers() + { + return $this->mobileCarriers; + } + + public function setMobileDevices($mobileDevices) + { + $this->mobileDevices = $mobileDevices; + } + + public function getMobileDevices() + { + return $this->mobileDevices; + } + + public function setMobileOperatingSystemVersions($mobileOperatingSystemVersions) + { + $this->mobileOperatingSystemVersions = $mobileOperatingSystemVersions; + } + + public function getMobileOperatingSystemVersions() + { + return $this->mobileOperatingSystemVersions; + } + + public function setPlacements($placements) + { + $this->placements = $placements; + } + + public function getPlacements() + { + return $this->placements; + } + + public function setPlatforms($platforms) + { + $this->platforms = $platforms; + } + + public function getPlatforms() + { + return $this->platforms; + } + + public function setSupportedCreativeAttributes($supportedCreativeAttributes) + { + $this->supportedCreativeAttributes = $supportedCreativeAttributes; + } + + public function getSupportedCreativeAttributes() + { + return $this->supportedCreativeAttributes; + } + + public function setUserLists($userLists) + { + $this->userLists = $userLists; + } + + public function getUserLists() + { + return $this->userLists; + } + + public function setVendorTypes($vendorTypes) + { + $this->vendorTypes = $vendorTypes; + } + + public function getVendorTypes() + { + return $this->vendorTypes; + } + + public function setVerticals($verticals) + { + $this->verticals = $verticals; + } + + public function getVerticals() + { + return $this->verticals; + } +} + +class Google_Service_AdExchangeBuyer_PretargetingConfigDimensions extends Google_Model +{ + public $height; + public $width; + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_AdExchangeBuyer_PretargetingConfigExcludedPlacements extends Google_Model +{ + public $token; + public $type; + + public function setToken($token) + { + $this->token = $token; + } + + public function getToken() + { + return $this->token; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_AdExchangeBuyer_PretargetingConfigList extends Google_Collection +{ + protected $itemsType = 'Google_Service_AdExchangeBuyer_PretargetingConfig'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_AdExchangeBuyer_PretargetingConfigPlacements extends Google_Model +{ + public $token; + public $type; + + public function setToken($token) + { + $this->token = $token; + } + + public function getToken() + { + return $this->token; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} diff --git a/oauth/Google/Service/AdExchangeSeller.php b/oauth/Google/Service/AdExchangeSeller.php new file mode 100644 index 0000000..a09913a --- /dev/null +++ b/oauth/Google/Service/AdExchangeSeller.php @@ -0,0 +1,1996 @@ + + * Gives Ad Exchange seller users access to their inventory and the ability to generate reports + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_AdExchangeSeller extends Google_Service +{ + /** View and manage your Ad Exchange data. */ + const ADEXCHANGE_SELLER = "https://www.googleapis.com/auth/adexchange.seller"; + /** View your Ad Exchange data. */ + const ADEXCHANGE_SELLER_READONLY = "https://www.googleapis.com/auth/adexchange.seller.readonly"; + + public $accounts; + public $adclients; + public $adunits; + public $adunits_customchannels; + public $alerts; + public $customchannels; + public $customchannels_adunits; + public $metadata_dimensions; + public $metadata_metrics; + public $preferreddeals; + public $reports; + public $reports_saved; + public $urlchannels; + + + /** + * Constructs the internal representation of the AdExchangeSeller service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'adexchangeseller/v1.1/'; + $this->version = 'v1.1'; + $this->serviceName = 'adexchangeseller'; + + $this->accounts = new Google_Service_AdExchangeSeller_Accounts_Resource( + $this, + $this->serviceName, + 'accounts', + array( + 'methods' => array( + 'get' => array( + 'path' => 'accounts/{accountId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->adclients = new Google_Service_AdExchangeSeller_Adclients_Resource( + $this, + $this->serviceName, + 'adclients', + array( + 'methods' => array( + 'list' => array( + 'path' => 'adclients', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->adunits = new Google_Service_AdExchangeSeller_Adunits_Resource( + $this, + $this->serviceName, + 'adunits', + array( + 'methods' => array( + 'get' => array( + 'path' => 'adclients/{adClientId}/adunits/{adUnitId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adUnitId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'adclients/{adClientId}/adunits', + 'httpMethod' => 'GET', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'includeInactive' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->adunits_customchannels = new Google_Service_AdExchangeSeller_AdunitsCustomchannels_Resource( + $this, + $this->serviceName, + 'customchannels', + array( + 'methods' => array( + 'list' => array( + 'path' => 'adclients/{adClientId}/adunits/{adUnitId}/customchannels', + 'httpMethod' => 'GET', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adUnitId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->alerts = new Google_Service_AdExchangeSeller_Alerts_Resource( + $this, + $this->serviceName, + 'alerts', + array( + 'methods' => array( + 'list' => array( + 'path' => 'alerts', + 'httpMethod' => 'GET', + 'parameters' => array( + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->customchannels = new Google_Service_AdExchangeSeller_Customchannels_Resource( + $this, + $this->serviceName, + 'customchannels', + array( + 'methods' => array( + 'get' => array( + 'path' => 'adclients/{adClientId}/customchannels/{customChannelId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customChannelId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'adclients/{adClientId}/customchannels', + 'httpMethod' => 'GET', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->customchannels_adunits = new Google_Service_AdExchangeSeller_CustomchannelsAdunits_Resource( + $this, + $this->serviceName, + 'adunits', + array( + 'methods' => array( + 'list' => array( + 'path' => 'adclients/{adClientId}/customchannels/{customChannelId}/adunits', + 'httpMethod' => 'GET', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customChannelId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'includeInactive' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->metadata_dimensions = new Google_Service_AdExchangeSeller_MetadataDimensions_Resource( + $this, + $this->serviceName, + 'dimensions', + array( + 'methods' => array( + 'list' => array( + 'path' => 'metadata/dimensions', + 'httpMethod' => 'GET', + 'parameters' => array(), + ), + ) + ) + ); + $this->metadata_metrics = new Google_Service_AdExchangeSeller_MetadataMetrics_Resource( + $this, + $this->serviceName, + 'metrics', + array( + 'methods' => array( + 'list' => array( + 'path' => 'metadata/metrics', + 'httpMethod' => 'GET', + 'parameters' => array(), + ), + ) + ) + ); + $this->preferreddeals = new Google_Service_AdExchangeSeller_Preferreddeals_Resource( + $this, + $this->serviceName, + 'preferreddeals', + array( + 'methods' => array( + 'get' => array( + 'path' => 'preferreddeals/{dealId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'dealId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'preferreddeals', + 'httpMethod' => 'GET', + 'parameters' => array(), + ), + ) + ) + ); + $this->reports = new Google_Service_AdExchangeSeller_Reports_Resource( + $this, + $this->serviceName, + 'reports', + array( + 'methods' => array( + 'generate' => array( + 'path' => 'reports', + 'httpMethod' => 'GET', + 'parameters' => array( + 'startDate' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'endDate' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'sort' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'metric' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'startIndex' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'dimension' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + ), + ), + ) + ) + ); + $this->reports_saved = new Google_Service_AdExchangeSeller_ReportsSaved_Resource( + $this, + $this->serviceName, + 'saved', + array( + 'methods' => array( + 'generate' => array( + 'path' => 'reports/{savedReportId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'savedReportId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startIndex' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'list' => array( + 'path' => 'reports/saved', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->urlchannels = new Google_Service_AdExchangeSeller_Urlchannels_Resource( + $this, + $this->serviceName, + 'urlchannels', + array( + 'methods' => array( + 'list' => array( + 'path' => 'adclients/{adClientId}/urlchannels', + 'httpMethod' => 'GET', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "accounts" collection of methods. + * Typical usage is: + * + * $adexchangesellerService = new Google_Service_AdExchangeSeller(...); + * $accounts = $adexchangesellerService->accounts; + * + */ +class Google_Service_AdExchangeSeller_Accounts_Resource extends Google_Service_Resource +{ + + /** + * Get information about the selected Ad Exchange account. (accounts.get) + * + * @param string $accountId + * Account to get information about. Tip: 'myaccount' is a valid ID. + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeSeller_Account + */ + public function get($accountId, $optParams = array()) + { + $params = array('accountId' => $accountId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdExchangeSeller_Account"); + } +} + +/** + * The "adclients" collection of methods. + * Typical usage is: + * + * $adexchangesellerService = new Google_Service_AdExchangeSeller(...); + * $adclients = $adexchangesellerService->adclients; + * + */ +class Google_Service_AdExchangeSeller_Adclients_Resource extends Google_Service_Resource +{ + + /** + * List all ad clients in this Ad Exchange account. (adclients.listAdclients) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through ad clients. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of ad clients to include in the response, used for paging. + * @return Google_Service_AdExchangeSeller_AdClients + */ + public function listAdclients($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdExchangeSeller_AdClients"); + } +} + +/** + * The "adunits" collection of methods. + * Typical usage is: + * + * $adexchangesellerService = new Google_Service_AdExchangeSeller(...); + * $adunits = $adexchangesellerService->adunits; + * + */ +class Google_Service_AdExchangeSeller_Adunits_Resource extends Google_Service_Resource +{ + + /** + * Gets the specified ad unit in the specified ad client. (adunits.get) + * + * @param string $adClientId + * Ad client for which to get the ad unit. + * @param string $adUnitId + * Ad unit to retrieve. + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeSeller_AdUnit + */ + public function get($adClientId, $adUnitId, $optParams = array()) + { + $params = array('adClientId' => $adClientId, 'adUnitId' => $adUnitId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdExchangeSeller_AdUnit"); + } + /** + * List all ad units in the specified ad client for this Ad Exchange account. + * (adunits.listAdunits) + * + * @param string $adClientId + * Ad client for which to list ad units. + * @param array $optParams Optional parameters. + * + * @opt_param bool includeInactive + * Whether to include inactive ad units. Default: true. + * @opt_param string pageToken + * A continuation token, used to page through ad units. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of ad units to include in the response, used for paging. + * @return Google_Service_AdExchangeSeller_AdUnits + */ + public function listAdunits($adClientId, $optParams = array()) + { + $params = array('adClientId' => $adClientId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdExchangeSeller_AdUnits"); + } +} + +/** + * The "customchannels" collection of methods. + * Typical usage is: + * + * $adexchangesellerService = new Google_Service_AdExchangeSeller(...); + * $customchannels = $adexchangesellerService->customchannels; + * + */ +class Google_Service_AdExchangeSeller_AdunitsCustomchannels_Resource extends Google_Service_Resource +{ + + /** + * List all custom channels which the specified ad unit belongs to. + * (customchannels.listAdunitsCustomchannels) + * + * @param string $adClientId + * Ad client which contains the ad unit. + * @param string $adUnitId + * Ad unit for which to list custom channels. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through custom channels. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of custom channels to include in the response, used for paging. + * @return Google_Service_AdExchangeSeller_CustomChannels + */ + public function listAdunitsCustomchannels($adClientId, $adUnitId, $optParams = array()) + { + $params = array('adClientId' => $adClientId, 'adUnitId' => $adUnitId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdExchangeSeller_CustomChannels"); + } +} + +/** + * The "alerts" collection of methods. + * Typical usage is: + * + * $adexchangesellerService = new Google_Service_AdExchangeSeller(...); + * $alerts = $adexchangesellerService->alerts; + * + */ +class Google_Service_AdExchangeSeller_Alerts_Resource extends Google_Service_Resource +{ + + /** + * List the alerts for this Ad Exchange account. (alerts.listAlerts) + * + * @param array $optParams Optional parameters. + * + * @opt_param string locale + * The locale to use for translating alert messages. The account locale will be used if this is not + * supplied. The AdSense default (English) will be used if the supplied locale is invalid or + * unsupported. + * @return Google_Service_AdExchangeSeller_Alerts + */ + public function listAlerts($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdExchangeSeller_Alerts"); + } +} + +/** + * The "customchannels" collection of methods. + * Typical usage is: + * + * $adexchangesellerService = new Google_Service_AdExchangeSeller(...); + * $customchannels = $adexchangesellerService->customchannels; + * + */ +class Google_Service_AdExchangeSeller_Customchannels_Resource extends Google_Service_Resource +{ + + /** + * Get the specified custom channel from the specified ad client. + * (customchannels.get) + * + * @param string $adClientId + * Ad client which contains the custom channel. + * @param string $customChannelId + * Custom channel to retrieve. + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeSeller_CustomChannel + */ + public function get($adClientId, $customChannelId, $optParams = array()) + { + $params = array('adClientId' => $adClientId, 'customChannelId' => $customChannelId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdExchangeSeller_CustomChannel"); + } + /** + * List all custom channels in the specified ad client for this Ad Exchange + * account. (customchannels.listCustomchannels) + * + * @param string $adClientId + * Ad client for which to list custom channels. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through custom channels. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of custom channels to include in the response, used for paging. + * @return Google_Service_AdExchangeSeller_CustomChannels + */ + public function listCustomchannels($adClientId, $optParams = array()) + { + $params = array('adClientId' => $adClientId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdExchangeSeller_CustomChannels"); + } +} + +/** + * The "adunits" collection of methods. + * Typical usage is: + * + * $adexchangesellerService = new Google_Service_AdExchangeSeller(...); + * $adunits = $adexchangesellerService->adunits; + * + */ +class Google_Service_AdExchangeSeller_CustomchannelsAdunits_Resource extends Google_Service_Resource +{ + + /** + * List all ad units in the specified custom channel. + * (adunits.listCustomchannelsAdunits) + * + * @param string $adClientId + * Ad client which contains the custom channel. + * @param string $customChannelId + * Custom channel for which to list ad units. + * @param array $optParams Optional parameters. + * + * @opt_param bool includeInactive + * Whether to include inactive ad units. Default: true. + * @opt_param string pageToken + * A continuation token, used to page through ad units. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of ad units to include in the response, used for paging. + * @return Google_Service_AdExchangeSeller_AdUnits + */ + public function listCustomchannelsAdunits($adClientId, $customChannelId, $optParams = array()) + { + $params = array('adClientId' => $adClientId, 'customChannelId' => $customChannelId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdExchangeSeller_AdUnits"); + } +} + +/** + * The "metadata" collection of methods. + * Typical usage is: + * + * $adexchangesellerService = new Google_Service_AdExchangeSeller(...); + * $metadata = $adexchangesellerService->metadata; + * + */ +class Google_Service_AdExchangeSeller_Metadata_Resource extends Google_Service_Resource +{ + +} + +/** + * The "dimensions" collection of methods. + * Typical usage is: + * + * $adexchangesellerService = new Google_Service_AdExchangeSeller(...); + * $dimensions = $adexchangesellerService->dimensions; + * + */ +class Google_Service_AdExchangeSeller_MetadataDimensions_Resource extends Google_Service_Resource +{ + + /** + * List the metadata for the dimensions available to this AdExchange account. + * (dimensions.listMetadataDimensions) + * + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeSeller_Metadata + */ + public function listMetadataDimensions($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdExchangeSeller_Metadata"); + } +} +/** + * The "metrics" collection of methods. + * Typical usage is: + * + * $adexchangesellerService = new Google_Service_AdExchangeSeller(...); + * $metrics = $adexchangesellerService->metrics; + * + */ +class Google_Service_AdExchangeSeller_MetadataMetrics_Resource extends Google_Service_Resource +{ + + /** + * List the metadata for the metrics available to this AdExchange account. + * (metrics.listMetadataMetrics) + * + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeSeller_Metadata + */ + public function listMetadataMetrics($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdExchangeSeller_Metadata"); + } +} + +/** + * The "preferreddeals" collection of methods. + * Typical usage is: + * + * $adexchangesellerService = new Google_Service_AdExchangeSeller(...); + * $preferreddeals = $adexchangesellerService->preferreddeals; + * + */ +class Google_Service_AdExchangeSeller_Preferreddeals_Resource extends Google_Service_Resource +{ + + /** + * Get information about the selected Ad Exchange Preferred Deal. + * (preferreddeals.get) + * + * @param string $dealId + * Preferred deal to get information about. + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeSeller_PreferredDeal + */ + public function get($dealId, $optParams = array()) + { + $params = array('dealId' => $dealId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdExchangeSeller_PreferredDeal"); + } + /** + * List the preferred deals for this Ad Exchange account. + * (preferreddeals.listPreferreddeals) + * + * @param array $optParams Optional parameters. + * @return Google_Service_AdExchangeSeller_PreferredDeals + */ + public function listPreferreddeals($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdExchangeSeller_PreferredDeals"); + } +} + +/** + * The "reports" collection of methods. + * Typical usage is: + * + * $adexchangesellerService = new Google_Service_AdExchangeSeller(...); + * $reports = $adexchangesellerService->reports; + * + */ +class Google_Service_AdExchangeSeller_Reports_Resource extends Google_Service_Resource +{ + + /** + * Generate an Ad Exchange report based on the report request sent in the query + * parameters. Returns the result as JSON; to retrieve output in CSV format + * specify "alt=csv" as a query parameter. (reports.generate) + * + * @param string $startDate + * Start of the date range to report on in "YYYY-MM-DD" format, inclusive. + * @param string $endDate + * End of the date range to report on in "YYYY-MM-DD" format, inclusive. + * @param array $optParams Optional parameters. + * + * @opt_param string sort + * The name of a dimension or metric to sort the resulting report on, optionally prefixed with "+" + * to sort ascending or "-" to sort descending. If no prefix is specified, the column is sorted + * ascending. + * @opt_param string locale + * Optional locale to use for translating report output to a local language. Defaults to "en_US" if + * not specified. + * @opt_param string metric + * Numeric columns to include in the report. + * @opt_param string maxResults + * The maximum number of rows of report data to return. + * @opt_param string filter + * Filters to be run on the report. + * @opt_param string startIndex + * Index of the first row of report data to return. + * @opt_param string dimension + * Dimensions to base the report on. + * @return Google_Service_AdExchangeSeller_Report + */ + public function generate($startDate, $endDate, $optParams = array()) + { + $params = array('startDate' => $startDate, 'endDate' => $endDate); + $params = array_merge($params, $optParams); + return $this->call('generate', array($params), "Google_Service_AdExchangeSeller_Report"); + } +} + +/** + * The "saved" collection of methods. + * Typical usage is: + * + * $adexchangesellerService = new Google_Service_AdExchangeSeller(...); + * $saved = $adexchangesellerService->saved; + * + */ +class Google_Service_AdExchangeSeller_ReportsSaved_Resource extends Google_Service_Resource +{ + + /** + * Generate an Ad Exchange report based on the saved report ID sent in the query + * parameters. (saved.generate) + * + * @param string $savedReportId + * The saved report to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param string locale + * Optional locale to use for translating report output to a local language. Defaults to "en_US" if + * not specified. + * @opt_param int startIndex + * Index of the first row of report data to return. + * @opt_param int maxResults + * The maximum number of rows of report data to return. + * @return Google_Service_AdExchangeSeller_Report + */ + public function generate($savedReportId, $optParams = array()) + { + $params = array('savedReportId' => $savedReportId); + $params = array_merge($params, $optParams); + return $this->call('generate', array($params), "Google_Service_AdExchangeSeller_Report"); + } + /** + * List all saved reports in this Ad Exchange account. (saved.listReportsSaved) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through saved reports. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults + * The maximum number of saved reports to include in the response, used for paging. + * @return Google_Service_AdExchangeSeller_SavedReports + */ + public function listReportsSaved($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdExchangeSeller_SavedReports"); + } +} + +/** + * The "urlchannels" collection of methods. + * Typical usage is: + * + * $adexchangesellerService = new Google_Service_AdExchangeSeller(...); + * $urlchannels = $adexchangesellerService->urlchannels; + * + */ +class Google_Service_AdExchangeSeller_Urlchannels_Resource extends Google_Service_Resource +{ + + /** + * List all URL channels in the specified ad client for this Ad Exchange + * account. (urlchannels.listUrlchannels) + * + * @param string $adClientId + * Ad client for which to list URL channels. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through URL channels. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of URL channels to include in the response, used for paging. + * @return Google_Service_AdExchangeSeller_UrlChannels + */ + public function listUrlchannels($adClientId, $optParams = array()) + { + $params = array('adClientId' => $adClientId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdExchangeSeller_UrlChannels"); + } +} + + + + +class Google_Service_AdExchangeSeller_Account extends Google_Model +{ + public $id; + public $kind; + public $name; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_AdExchangeSeller_AdClient extends Google_Model +{ + public $arcOptIn; + public $id; + public $kind; + public $productCode; + public $supportsReporting; + + public function setArcOptIn($arcOptIn) + { + $this->arcOptIn = $arcOptIn; + } + + public function getArcOptIn() + { + return $this->arcOptIn; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setProductCode($productCode) + { + $this->productCode = $productCode; + } + + public function getProductCode() + { + return $this->productCode; + } + + public function setSupportsReporting($supportsReporting) + { + $this->supportsReporting = $supportsReporting; + } + + public function getSupportsReporting() + { + return $this->supportsReporting; + } +} + +class Google_Service_AdExchangeSeller_AdClients extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_AdExchangeSeller_AdClient'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_AdExchangeSeller_AdUnit extends Google_Model +{ + public $code; + public $id; + public $kind; + public $name; + public $status; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_AdExchangeSeller_AdUnits extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_AdExchangeSeller_AdUnit'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_AdExchangeSeller_Alert extends Google_Model +{ + public $id; + public $kind; + public $message; + public $severity; + public $type; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } + + public function setSeverity($severity) + { + $this->severity = $severity; + } + + public function getSeverity() + { + return $this->severity; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_AdExchangeSeller_Alerts extends Google_Collection +{ + protected $itemsType = 'Google_Service_AdExchangeSeller_Alert'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_AdExchangeSeller_CustomChannel extends Google_Model +{ + public $code; + public $id; + public $kind; + public $name; + protected $targetingInfoType = 'Google_Service_AdExchangeSeller_CustomChannelTargetingInfo'; + protected $targetingInfoDataType = ''; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setTargetingInfo(Google_Service_AdExchangeSeller_CustomChannelTargetingInfo $targetingInfo) + { + $this->targetingInfo = $targetingInfo; + } + + public function getTargetingInfo() + { + return $this->targetingInfo; + } +} + +class Google_Service_AdExchangeSeller_CustomChannelTargetingInfo extends Google_Model +{ + public $adsAppearOn; + public $description; + public $location; + public $siteLanguage; + + public function setAdsAppearOn($adsAppearOn) + { + $this->adsAppearOn = $adsAppearOn; + } + + public function getAdsAppearOn() + { + return $this->adsAppearOn; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setLocation($location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setSiteLanguage($siteLanguage) + { + $this->siteLanguage = $siteLanguage; + } + + public function getSiteLanguage() + { + return $this->siteLanguage; + } +} + +class Google_Service_AdExchangeSeller_CustomChannels extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_AdExchangeSeller_CustomChannel'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_AdExchangeSeller_Metadata extends Google_Collection +{ + protected $itemsType = 'Google_Service_AdExchangeSeller_ReportingMetadataEntry'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_AdExchangeSeller_PreferredDeal extends Google_Model +{ + public $advertiserName; + public $buyerNetworkName; + public $currencyCode; + public $endTime; + public $fixedCpm; + public $id; + public $kind; + public $startTime; + + public function setAdvertiserName($advertiserName) + { + $this->advertiserName = $advertiserName; + } + + public function getAdvertiserName() + { + return $this->advertiserName; + } + + public function setBuyerNetworkName($buyerNetworkName) + { + $this->buyerNetworkName = $buyerNetworkName; + } + + public function getBuyerNetworkName() + { + return $this->buyerNetworkName; + } + + public function setCurrencyCode($currencyCode) + { + $this->currencyCode = $currencyCode; + } + + public function getCurrencyCode() + { + return $this->currencyCode; + } + + public function setEndTime($endTime) + { + $this->endTime = $endTime; + } + + public function getEndTime() + { + return $this->endTime; + } + + public function setFixedCpm($fixedCpm) + { + $this->fixedCpm = $fixedCpm; + } + + public function getFixedCpm() + { + return $this->fixedCpm; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setStartTime($startTime) + { + $this->startTime = $startTime; + } + + public function getStartTime() + { + return $this->startTime; + } +} + +class Google_Service_AdExchangeSeller_PreferredDeals extends Google_Collection +{ + protected $itemsType = 'Google_Service_AdExchangeSeller_PreferredDeal'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_AdExchangeSeller_Report extends Google_Collection +{ + public $averages; + protected $headersType = 'Google_Service_AdExchangeSeller_ReportHeaders'; + protected $headersDataType = 'array'; + public $kind; + public $rows; + public $totalMatchedRows; + public $totals; + public $warnings; + + public function setAverages($averages) + { + $this->averages = $averages; + } + + public function getAverages() + { + return $this->averages; + } + + public function setHeaders($headers) + { + $this->headers = $headers; + } + + public function getHeaders() + { + return $this->headers; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRows($rows) + { + $this->rows = $rows; + } + + public function getRows() + { + return $this->rows; + } + + public function setTotalMatchedRows($totalMatchedRows) + { + $this->totalMatchedRows = $totalMatchedRows; + } + + public function getTotalMatchedRows() + { + return $this->totalMatchedRows; + } + + public function setTotals($totals) + { + $this->totals = $totals; + } + + public function getTotals() + { + return $this->totals; + } + + public function setWarnings($warnings) + { + $this->warnings = $warnings; + } + + public function getWarnings() + { + return $this->warnings; + } +} + +class Google_Service_AdExchangeSeller_ReportHeaders extends Google_Model +{ + public $currency; + public $name; + public $type; + + public function setCurrency($currency) + { + $this->currency = $currency; + } + + public function getCurrency() + { + return $this->currency; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_AdExchangeSeller_ReportingMetadataEntry extends Google_Collection +{ + public $compatibleDimensions; + public $compatibleMetrics; + public $id; + public $kind; + public $requiredDimensions; + public $requiredMetrics; + public $supportedProducts; + + public function setCompatibleDimensions($compatibleDimensions) + { + $this->compatibleDimensions = $compatibleDimensions; + } + + public function getCompatibleDimensions() + { + return $this->compatibleDimensions; + } + + public function setCompatibleMetrics($compatibleMetrics) + { + $this->compatibleMetrics = $compatibleMetrics; + } + + public function getCompatibleMetrics() + { + return $this->compatibleMetrics; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRequiredDimensions($requiredDimensions) + { + $this->requiredDimensions = $requiredDimensions; + } + + public function getRequiredDimensions() + { + return $this->requiredDimensions; + } + + public function setRequiredMetrics($requiredMetrics) + { + $this->requiredMetrics = $requiredMetrics; + } + + public function getRequiredMetrics() + { + return $this->requiredMetrics; + } + + public function setSupportedProducts($supportedProducts) + { + $this->supportedProducts = $supportedProducts; + } + + public function getSupportedProducts() + { + return $this->supportedProducts; + } +} + +class Google_Service_AdExchangeSeller_SavedReport extends Google_Model +{ + public $id; + public $kind; + public $name; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_AdExchangeSeller_SavedReports extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_AdExchangeSeller_SavedReport'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_AdExchangeSeller_UrlChannel extends Google_Model +{ + public $id; + public $kind; + public $urlPattern; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setUrlPattern($urlPattern) + { + $this->urlPattern = $urlPattern; + } + + public function getUrlPattern() + { + return $this->urlPattern; + } +} + +class Google_Service_AdExchangeSeller_UrlChannels extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_AdExchangeSeller_UrlChannel'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} diff --git a/oauth/Google/Service/AdSense.php b/oauth/Google/Service/AdSense.php new file mode 100644 index 0000000..f33c191 --- /dev/null +++ b/oauth/Google/Service/AdSense.php @@ -0,0 +1,3770 @@ + + * Gives AdSense publishers access to their inventory and the ability to generate reports + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_AdSense extends Google_Service +{ + /** View and manage your AdSense data. */ + const ADSENSE = "https://www.googleapis.com/auth/adsense"; + /** View your AdSense data. */ + const ADSENSE_READONLY = "https://www.googleapis.com/auth/adsense.readonly"; + + public $accounts; + public $accounts_adclients; + public $accounts_adunits; + public $accounts_adunits_customchannels; + public $accounts_alerts; + public $accounts_customchannels; + public $accounts_customchannels_adunits; + public $accounts_payments; + public $accounts_reports; + public $accounts_reports_saved; + public $accounts_savedadstyles; + public $accounts_urlchannels; + public $adclients; + public $adunits; + public $adunits_customchannels; + public $alerts; + public $customchannels; + public $customchannels_adunits; + public $metadata_dimensions; + public $metadata_metrics; + public $payments; + public $reports; + public $reports_saved; + public $savedadstyles; + public $urlchannels; + + + /** + * Constructs the internal representation of the AdSense service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'adsense/v1.4/'; + $this->version = 'v1.4'; + $this->serviceName = 'adsense'; + + $this->accounts = new Google_Service_AdSense_Accounts_Resource( + $this, + $this->serviceName, + 'accounts', + array( + 'methods' => array( + 'get' => array( + 'path' => 'accounts/{accountId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'tree' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'list' => array( + 'path' => 'accounts', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->accounts_adclients = new Google_Service_AdSense_AccountsAdclients_Resource( + $this, + $this->serviceName, + 'adclients', + array( + 'methods' => array( + 'list' => array( + 'path' => 'accounts/{accountId}/adclients', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->accounts_adunits = new Google_Service_AdSense_AccountsAdunits_Resource( + $this, + $this->serviceName, + 'adunits', + array( + 'methods' => array( + 'get' => array( + 'path' => 'accounts/{accountId}/adclients/{adClientId}/adunits/{adUnitId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adUnitId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'getAdCode' => array( + 'path' => 'accounts/{accountId}/adclients/{adClientId}/adunits/{adUnitId}/adcode', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adUnitId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'accounts/{accountId}/adclients/{adClientId}/adunits', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'includeInactive' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->accounts_adunits_customchannels = new Google_Service_AdSense_AccountsAdunitsCustomchannels_Resource( + $this, + $this->serviceName, + 'customchannels', + array( + 'methods' => array( + 'list' => array( + 'path' => 'accounts/{accountId}/adclients/{adClientId}/adunits/{adUnitId}/customchannels', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adUnitId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->accounts_alerts = new Google_Service_AdSense_AccountsAlerts_Resource( + $this, + $this->serviceName, + 'alerts', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'accounts/{accountId}/alerts/{alertId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'alertId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'accounts/{accountId}/alerts', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->accounts_customchannels = new Google_Service_AdSense_AccountsCustomchannels_Resource( + $this, + $this->serviceName, + 'customchannels', + array( + 'methods' => array( + 'get' => array( + 'path' => 'accounts/{accountId}/adclients/{adClientId}/customchannels/{customChannelId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customChannelId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'accounts/{accountId}/adclients/{adClientId}/customchannels', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->accounts_customchannels_adunits = new Google_Service_AdSense_AccountsCustomchannelsAdunits_Resource( + $this, + $this->serviceName, + 'adunits', + array( + 'methods' => array( + 'list' => array( + 'path' => 'accounts/{accountId}/adclients/{adClientId}/customchannels/{customChannelId}/adunits', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customChannelId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'includeInactive' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->accounts_payments = new Google_Service_AdSense_AccountsPayments_Resource( + $this, + $this->serviceName, + 'payments', + array( + 'methods' => array( + 'list' => array( + 'path' => 'accounts/{accountId}/payments', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->accounts_reports = new Google_Service_AdSense_AccountsReports_Resource( + $this, + $this->serviceName, + 'reports', + array( + 'methods' => array( + 'generate' => array( + 'path' => 'accounts/{accountId}/reports', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'startDate' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'endDate' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'sort' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'metric' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'currency' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startIndex' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'useTimezoneReporting' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'dimension' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + ), + ), + ) + ) + ); + $this->accounts_reports_saved = new Google_Service_AdSense_AccountsReportsSaved_Resource( + $this, + $this->serviceName, + 'saved', + array( + 'methods' => array( + 'generate' => array( + 'path' => 'accounts/{accountId}/reports/{savedReportId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'savedReportId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startIndex' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'list' => array( + 'path' => 'accounts/{accountId}/reports/saved', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->accounts_savedadstyles = new Google_Service_AdSense_AccountsSavedadstyles_Resource( + $this, + $this->serviceName, + 'savedadstyles', + array( + 'methods' => array( + 'get' => array( + 'path' => 'accounts/{accountId}/savedadstyles/{savedAdStyleId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'savedAdStyleId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'accounts/{accountId}/savedadstyles', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->accounts_urlchannels = new Google_Service_AdSense_AccountsUrlchannels_Resource( + $this, + $this->serviceName, + 'urlchannels', + array( + 'methods' => array( + 'list' => array( + 'path' => 'accounts/{accountId}/adclients/{adClientId}/urlchannels', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->adclients = new Google_Service_AdSense_Adclients_Resource( + $this, + $this->serviceName, + 'adclients', + array( + 'methods' => array( + 'list' => array( + 'path' => 'adclients', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->adunits = new Google_Service_AdSense_Adunits_Resource( + $this, + $this->serviceName, + 'adunits', + array( + 'methods' => array( + 'get' => array( + 'path' => 'adclients/{adClientId}/adunits/{adUnitId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adUnitId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'getAdCode' => array( + 'path' => 'adclients/{adClientId}/adunits/{adUnitId}/adcode', + 'httpMethod' => 'GET', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adUnitId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'adclients/{adClientId}/adunits', + 'httpMethod' => 'GET', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'includeInactive' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->adunits_customchannels = new Google_Service_AdSense_AdunitsCustomchannels_Resource( + $this, + $this->serviceName, + 'customchannels', + array( + 'methods' => array( + 'list' => array( + 'path' => 'adclients/{adClientId}/adunits/{adUnitId}/customchannels', + 'httpMethod' => 'GET', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adUnitId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->alerts = new Google_Service_AdSense_Alerts_Resource( + $this, + $this->serviceName, + 'alerts', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'alerts/{alertId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'alertId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'alerts', + 'httpMethod' => 'GET', + 'parameters' => array( + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->customchannels = new Google_Service_AdSense_Customchannels_Resource( + $this, + $this->serviceName, + 'customchannels', + array( + 'methods' => array( + 'get' => array( + 'path' => 'adclients/{adClientId}/customchannels/{customChannelId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customChannelId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'adclients/{adClientId}/customchannels', + 'httpMethod' => 'GET', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->customchannels_adunits = new Google_Service_AdSense_CustomchannelsAdunits_Resource( + $this, + $this->serviceName, + 'adunits', + array( + 'methods' => array( + 'list' => array( + 'path' => 'adclients/{adClientId}/customchannels/{customChannelId}/adunits', + 'httpMethod' => 'GET', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customChannelId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'includeInactive' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->metadata_dimensions = new Google_Service_AdSense_MetadataDimensions_Resource( + $this, + $this->serviceName, + 'dimensions', + array( + 'methods' => array( + 'list' => array( + 'path' => 'metadata/dimensions', + 'httpMethod' => 'GET', + 'parameters' => array(), + ), + ) + ) + ); + $this->metadata_metrics = new Google_Service_AdSense_MetadataMetrics_Resource( + $this, + $this->serviceName, + 'metrics', + array( + 'methods' => array( + 'list' => array( + 'path' => 'metadata/metrics', + 'httpMethod' => 'GET', + 'parameters' => array(), + ), + ) + ) + ); + $this->payments = new Google_Service_AdSense_Payments_Resource( + $this, + $this->serviceName, + 'payments', + array( + 'methods' => array( + 'list' => array( + 'path' => 'payments', + 'httpMethod' => 'GET', + 'parameters' => array(), + ), + ) + ) + ); + $this->reports = new Google_Service_AdSense_Reports_Resource( + $this, + $this->serviceName, + 'reports', + array( + 'methods' => array( + 'generate' => array( + 'path' => 'reports', + 'httpMethod' => 'GET', + 'parameters' => array( + 'startDate' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'endDate' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'sort' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'metric' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'currency' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startIndex' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'useTimezoneReporting' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'dimension' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'accountId' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + ), + ), + ) + ) + ); + $this->reports_saved = new Google_Service_AdSense_ReportsSaved_Resource( + $this, + $this->serviceName, + 'saved', + array( + 'methods' => array( + 'generate' => array( + 'path' => 'reports/{savedReportId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'savedReportId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startIndex' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'list' => array( + 'path' => 'reports/saved', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->savedadstyles = new Google_Service_AdSense_Savedadstyles_Resource( + $this, + $this->serviceName, + 'savedadstyles', + array( + 'methods' => array( + 'get' => array( + 'path' => 'savedadstyles/{savedAdStyleId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'savedAdStyleId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'savedadstyles', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->urlchannels = new Google_Service_AdSense_Urlchannels_Resource( + $this, + $this->serviceName, + 'urlchannels', + array( + 'methods' => array( + 'list' => array( + 'path' => 'adclients/{adClientId}/urlchannels', + 'httpMethod' => 'GET', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "accounts" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $accounts = $adsenseService->accounts; + * + */ +class Google_Service_AdSense_Accounts_Resource extends Google_Service_Resource +{ + + /** + * Get information about the selected AdSense account. (accounts.get) + * + * @param string $accountId + * Account to get information about. + * @param array $optParams Optional parameters. + * + * @opt_param bool tree + * Whether the tree of sub accounts should be returned. + * @return Google_Service_AdSense_Account + */ + public function get($accountId, $optParams = array()) + { + $params = array('accountId' => $accountId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdSense_Account"); + } + /** + * List all accounts available to this AdSense account. (accounts.listAccounts) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through accounts. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults + * The maximum number of accounts to include in the response, used for paging. + * @return Google_Service_AdSense_Accounts + */ + public function listAccounts($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_Accounts"); + } +} + +/** + * The "adclients" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $adclients = $adsenseService->adclients; + * + */ +class Google_Service_AdSense_AccountsAdclients_Resource extends Google_Service_Resource +{ + + /** + * List all ad clients in the specified account. + * (adclients.listAccountsAdclients) + * + * @param string $accountId + * Account for which to list ad clients. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through ad clients. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults + * The maximum number of ad clients to include in the response, used for paging. + * @return Google_Service_AdSense_AdClients + */ + public function listAccountsAdclients($accountId, $optParams = array()) + { + $params = array('accountId' => $accountId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_AdClients"); + } +} +/** + * The "adunits" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $adunits = $adsenseService->adunits; + * + */ +class Google_Service_AdSense_AccountsAdunits_Resource extends Google_Service_Resource +{ + + /** + * Gets the specified ad unit in the specified ad client for the specified + * account. (adunits.get) + * + * @param string $accountId + * Account to which the ad client belongs. + * @param string $adClientId + * Ad client for which to get the ad unit. + * @param string $adUnitId + * Ad unit to retrieve. + * @param array $optParams Optional parameters. + * @return Google_Service_AdSense_AdUnit + */ + public function get($accountId, $adClientId, $adUnitId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'adUnitId' => $adUnitId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdSense_AdUnit"); + } + /** + * Get ad code for the specified ad unit. (adunits.getAdCode) + * + * @param string $accountId + * Account which contains the ad client. + * @param string $adClientId + * Ad client with contains the ad unit. + * @param string $adUnitId + * Ad unit to get the code for. + * @param array $optParams Optional parameters. + * @return Google_Service_AdSense_AdCode + */ + public function getAdCode($accountId, $adClientId, $adUnitId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'adUnitId' => $adUnitId); + $params = array_merge($params, $optParams); + return $this->call('getAdCode', array($params), "Google_Service_AdSense_AdCode"); + } + /** + * List all ad units in the specified ad client for the specified account. + * (adunits.listAccountsAdunits) + * + * @param string $accountId + * Account to which the ad client belongs. + * @param string $adClientId + * Ad client for which to list ad units. + * @param array $optParams Optional parameters. + * + * @opt_param bool includeInactive + * Whether to include inactive ad units. Default: true. + * @opt_param string pageToken + * A continuation token, used to page through ad units. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults + * The maximum number of ad units to include in the response, used for paging. + * @return Google_Service_AdSense_AdUnits + */ + public function listAccountsAdunits($accountId, $adClientId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_AdUnits"); + } +} + +/** + * The "customchannels" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $customchannels = $adsenseService->customchannels; + * + */ +class Google_Service_AdSense_AccountsAdunitsCustomchannels_Resource extends Google_Service_Resource +{ + + /** + * List all custom channels which the specified ad unit belongs to. + * (customchannels.listAccountsAdunitsCustomchannels) + * + * @param string $accountId + * Account to which the ad client belongs. + * @param string $adClientId + * Ad client which contains the ad unit. + * @param string $adUnitId + * Ad unit for which to list custom channels. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through custom channels. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults + * The maximum number of custom channels to include in the response, used for paging. + * @return Google_Service_AdSense_CustomChannels + */ + public function listAccountsAdunitsCustomchannels($accountId, $adClientId, $adUnitId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'adUnitId' => $adUnitId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_CustomChannels"); + } +} +/** + * The "alerts" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $alerts = $adsenseService->alerts; + * + */ +class Google_Service_AdSense_AccountsAlerts_Resource extends Google_Service_Resource +{ + + /** + * Dismiss (delete) the specified alert from the specified publisher AdSense + * account. (alerts.delete) + * + * @param string $accountId + * Account which contains the ad unit. + * @param string $alertId + * Alert to delete. + * @param array $optParams Optional parameters. + */ + public function delete($accountId, $alertId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'alertId' => $alertId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * List the alerts for the specified AdSense account. + * (alerts.listAccountsAlerts) + * + * @param string $accountId + * Account for which to retrieve the alerts. + * @param array $optParams Optional parameters. + * + * @opt_param string locale + * The locale to use for translating alert messages. The account locale will be used if this is not + * supplied. The AdSense default (English) will be used if the supplied locale is invalid or + * unsupported. + * @return Google_Service_AdSense_Alerts + */ + public function listAccountsAlerts($accountId, $optParams = array()) + { + $params = array('accountId' => $accountId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_Alerts"); + } +} +/** + * The "customchannels" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $customchannels = $adsenseService->customchannels; + * + */ +class Google_Service_AdSense_AccountsCustomchannels_Resource extends Google_Service_Resource +{ + + /** + * Get the specified custom channel from the specified ad client for the + * specified account. (customchannels.get) + * + * @param string $accountId + * Account to which the ad client belongs. + * @param string $adClientId + * Ad client which contains the custom channel. + * @param string $customChannelId + * Custom channel to retrieve. + * @param array $optParams Optional parameters. + * @return Google_Service_AdSense_CustomChannel + */ + public function get($accountId, $adClientId, $customChannelId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'customChannelId' => $customChannelId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdSense_CustomChannel"); + } + /** + * List all custom channels in the specified ad client for the specified + * account. (customchannels.listAccountsCustomchannels) + * + * @param string $accountId + * Account to which the ad client belongs. + * @param string $adClientId + * Ad client for which to list custom channels. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through custom channels. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults + * The maximum number of custom channels to include in the response, used for paging. + * @return Google_Service_AdSense_CustomChannels + */ + public function listAccountsCustomchannels($accountId, $adClientId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_CustomChannels"); + } +} + +/** + * The "adunits" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $adunits = $adsenseService->adunits; + * + */ +class Google_Service_AdSense_AccountsCustomchannelsAdunits_Resource extends Google_Service_Resource +{ + + /** + * List all ad units in the specified custom channel. + * (adunits.listAccountsCustomchannelsAdunits) + * + * @param string $accountId + * Account to which the ad client belongs. + * @param string $adClientId + * Ad client which contains the custom channel. + * @param string $customChannelId + * Custom channel for which to list ad units. + * @param array $optParams Optional parameters. + * + * @opt_param bool includeInactive + * Whether to include inactive ad units. Default: true. + * @opt_param int maxResults + * The maximum number of ad units to include in the response, used for paging. + * @opt_param string pageToken + * A continuation token, used to page through ad units. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @return Google_Service_AdSense_AdUnits + */ + public function listAccountsCustomchannelsAdunits($accountId, $adClientId, $customChannelId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'customChannelId' => $customChannelId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_AdUnits"); + } +} +/** + * The "payments" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $payments = $adsenseService->payments; + * + */ +class Google_Service_AdSense_AccountsPayments_Resource extends Google_Service_Resource +{ + + /** + * List the payments for the specified AdSense account. + * (payments.listAccountsPayments) + * + * @param string $accountId + * Account for which to retrieve the payments. + * @param array $optParams Optional parameters. + * @return Google_Service_AdSense_Payments + */ + public function listAccountsPayments($accountId, $optParams = array()) + { + $params = array('accountId' => $accountId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_Payments"); + } +} +/** + * The "reports" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $reports = $adsenseService->reports; + * + */ +class Google_Service_AdSense_AccountsReports_Resource extends Google_Service_Resource +{ + + /** + * Generate an AdSense report based on the report request sent in the query + * parameters. Returns the result as JSON; to retrieve output in CSV format + * specify "alt=csv" as a query parameter. (reports.generate) + * + * @param string $accountId + * Account upon which to report. + * @param string $startDate + * Start of the date range to report on in "YYYY-MM-DD" format, inclusive. + * @param string $endDate + * End of the date range to report on in "YYYY-MM-DD" format, inclusive. + * @param array $optParams Optional parameters. + * + * @opt_param string sort + * The name of a dimension or metric to sort the resulting report on, optionally prefixed with "+" + * to sort ascending or "-" to sort descending. If no prefix is specified, the column is sorted + * ascending. + * @opt_param string locale + * Optional locale to use for translating report output to a local language. Defaults to "en_US" if + * not specified. + * @opt_param string metric + * Numeric columns to include in the report. + * @opt_param int maxResults + * The maximum number of rows of report data to return. + * @opt_param string filter + * Filters to be run on the report. + * @opt_param string currency + * Optional currency to use when reporting on monetary metrics. Defaults to the account's currency + * if not set. + * @opt_param int startIndex + * Index of the first row of report data to return. + * @opt_param bool useTimezoneReporting + * Whether the report should be generated in the AdSense account's local timezone. If false default + * PST/PDT timezone will be used. + * @opt_param string dimension + * Dimensions to base the report on. + * @return Google_Service_AdSense_AdsenseReportsGenerateResponse + */ + public function generate($accountId, $startDate, $endDate, $optParams = array()) + { + $params = array('accountId' => $accountId, 'startDate' => $startDate, 'endDate' => $endDate); + $params = array_merge($params, $optParams); + return $this->call('generate', array($params), "Google_Service_AdSense_AdsenseReportsGenerateResponse"); + } +} + +/** + * The "saved" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $saved = $adsenseService->saved; + * + */ +class Google_Service_AdSense_AccountsReportsSaved_Resource extends Google_Service_Resource +{ + + /** + * Generate an AdSense report based on the saved report ID sent in the query + * parameters. (saved.generate) + * + * @param string $accountId + * Account to which the saved reports belong. + * @param string $savedReportId + * The saved report to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param string locale + * Optional locale to use for translating report output to a local language. Defaults to "en_US" if + * not specified. + * @opt_param int startIndex + * Index of the first row of report data to return. + * @opt_param int maxResults + * The maximum number of rows of report data to return. + * @return Google_Service_AdSense_AdsenseReportsGenerateResponse + */ + public function generate($accountId, $savedReportId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'savedReportId' => $savedReportId); + $params = array_merge($params, $optParams); + return $this->call('generate', array($params), "Google_Service_AdSense_AdsenseReportsGenerateResponse"); + } + /** + * List all saved reports in the specified AdSense account. + * (saved.listAccountsReportsSaved) + * + * @param string $accountId + * Account to which the saved reports belong. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through saved reports. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults + * The maximum number of saved reports to include in the response, used for paging. + * @return Google_Service_AdSense_SavedReports + */ + public function listAccountsReportsSaved($accountId, $optParams = array()) + { + $params = array('accountId' => $accountId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_SavedReports"); + } +} +/** + * The "savedadstyles" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $savedadstyles = $adsenseService->savedadstyles; + * + */ +class Google_Service_AdSense_AccountsSavedadstyles_Resource extends Google_Service_Resource +{ + + /** + * List a specific saved ad style for the specified account. (savedadstyles.get) + * + * @param string $accountId + * Account for which to get the saved ad style. + * @param string $savedAdStyleId + * Saved ad style to retrieve. + * @param array $optParams Optional parameters. + * @return Google_Service_AdSense_SavedAdStyle + */ + public function get($accountId, $savedAdStyleId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'savedAdStyleId' => $savedAdStyleId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdSense_SavedAdStyle"); + } + /** + * List all saved ad styles in the specified account. + * (savedadstyles.listAccountsSavedadstyles) + * + * @param string $accountId + * Account for which to list saved ad styles. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through saved ad styles. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults + * The maximum number of saved ad styles to include in the response, used for paging. + * @return Google_Service_AdSense_SavedAdStyles + */ + public function listAccountsSavedadstyles($accountId, $optParams = array()) + { + $params = array('accountId' => $accountId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_SavedAdStyles"); + } +} +/** + * The "urlchannels" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $urlchannels = $adsenseService->urlchannels; + * + */ +class Google_Service_AdSense_AccountsUrlchannels_Resource extends Google_Service_Resource +{ + + /** + * List all URL channels in the specified ad client for the specified account. + * (urlchannels.listAccountsUrlchannels) + * + * @param string $accountId + * Account to which the ad client belongs. + * @param string $adClientId + * Ad client for which to list URL channels. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through URL channels. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults + * The maximum number of URL channels to include in the response, used for paging. + * @return Google_Service_AdSense_UrlChannels + */ + public function listAccountsUrlchannels($accountId, $adClientId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_UrlChannels"); + } +} + +/** + * The "adclients" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $adclients = $adsenseService->adclients; + * + */ +class Google_Service_AdSense_Adclients_Resource extends Google_Service_Resource +{ + + /** + * List all ad clients in this AdSense account. (adclients.listAdclients) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through ad clients. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults + * The maximum number of ad clients to include in the response, used for paging. + * @return Google_Service_AdSense_AdClients + */ + public function listAdclients($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_AdClients"); + } +} + +/** + * The "adunits" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $adunits = $adsenseService->adunits; + * + */ +class Google_Service_AdSense_Adunits_Resource extends Google_Service_Resource +{ + + /** + * Gets the specified ad unit in the specified ad client. (adunits.get) + * + * @param string $adClientId + * Ad client for which to get the ad unit. + * @param string $adUnitId + * Ad unit to retrieve. + * @param array $optParams Optional parameters. + * @return Google_Service_AdSense_AdUnit + */ + public function get($adClientId, $adUnitId, $optParams = array()) + { + $params = array('adClientId' => $adClientId, 'adUnitId' => $adUnitId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdSense_AdUnit"); + } + /** + * Get ad code for the specified ad unit. (adunits.getAdCode) + * + * @param string $adClientId + * Ad client with contains the ad unit. + * @param string $adUnitId + * Ad unit to get the code for. + * @param array $optParams Optional parameters. + * @return Google_Service_AdSense_AdCode + */ + public function getAdCode($adClientId, $adUnitId, $optParams = array()) + { + $params = array('adClientId' => $adClientId, 'adUnitId' => $adUnitId); + $params = array_merge($params, $optParams); + return $this->call('getAdCode', array($params), "Google_Service_AdSense_AdCode"); + } + /** + * List all ad units in the specified ad client for this AdSense account. + * (adunits.listAdunits) + * + * @param string $adClientId + * Ad client for which to list ad units. + * @param array $optParams Optional parameters. + * + * @opt_param bool includeInactive + * Whether to include inactive ad units. Default: true. + * @opt_param string pageToken + * A continuation token, used to page through ad units. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults + * The maximum number of ad units to include in the response, used for paging. + * @return Google_Service_AdSense_AdUnits + */ + public function listAdunits($adClientId, $optParams = array()) + { + $params = array('adClientId' => $adClientId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_AdUnits"); + } +} + +/** + * The "customchannels" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $customchannels = $adsenseService->customchannels; + * + */ +class Google_Service_AdSense_AdunitsCustomchannels_Resource extends Google_Service_Resource +{ + + /** + * List all custom channels which the specified ad unit belongs to. + * (customchannels.listAdunitsCustomchannels) + * + * @param string $adClientId + * Ad client which contains the ad unit. + * @param string $adUnitId + * Ad unit for which to list custom channels. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through custom channels. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults + * The maximum number of custom channels to include in the response, used for paging. + * @return Google_Service_AdSense_CustomChannels + */ + public function listAdunitsCustomchannels($adClientId, $adUnitId, $optParams = array()) + { + $params = array('adClientId' => $adClientId, 'adUnitId' => $adUnitId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_CustomChannels"); + } +} + +/** + * The "alerts" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $alerts = $adsenseService->alerts; + * + */ +class Google_Service_AdSense_Alerts_Resource extends Google_Service_Resource +{ + + /** + * Dismiss (delete) the specified alert from the publisher's AdSense account. + * (alerts.delete) + * + * @param string $alertId + * Alert to delete. + * @param array $optParams Optional parameters. + */ + public function delete($alertId, $optParams = array()) + { + $params = array('alertId' => $alertId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * List the alerts for this AdSense account. (alerts.listAlerts) + * + * @param array $optParams Optional parameters. + * + * @opt_param string locale + * The locale to use for translating alert messages. The account locale will be used if this is not + * supplied. The AdSense default (English) will be used if the supplied locale is invalid or + * unsupported. + * @return Google_Service_AdSense_Alerts + */ + public function listAlerts($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_Alerts"); + } +} + +/** + * The "customchannels" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $customchannels = $adsenseService->customchannels; + * + */ +class Google_Service_AdSense_Customchannels_Resource extends Google_Service_Resource +{ + + /** + * Get the specified custom channel from the specified ad client. + * (customchannels.get) + * + * @param string $adClientId + * Ad client which contains the custom channel. + * @param string $customChannelId + * Custom channel to retrieve. + * @param array $optParams Optional parameters. + * @return Google_Service_AdSense_CustomChannel + */ + public function get($adClientId, $customChannelId, $optParams = array()) + { + $params = array('adClientId' => $adClientId, 'customChannelId' => $customChannelId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdSense_CustomChannel"); + } + /** + * List all custom channels in the specified ad client for this AdSense account. + * (customchannels.listCustomchannels) + * + * @param string $adClientId + * Ad client for which to list custom channels. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through custom channels. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults + * The maximum number of custom channels to include in the response, used for paging. + * @return Google_Service_AdSense_CustomChannels + */ + public function listCustomchannels($adClientId, $optParams = array()) + { + $params = array('adClientId' => $adClientId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_CustomChannels"); + } +} + +/** + * The "adunits" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $adunits = $adsenseService->adunits; + * + */ +class Google_Service_AdSense_CustomchannelsAdunits_Resource extends Google_Service_Resource +{ + + /** + * List all ad units in the specified custom channel. + * (adunits.listCustomchannelsAdunits) + * + * @param string $adClientId + * Ad client which contains the custom channel. + * @param string $customChannelId + * Custom channel for which to list ad units. + * @param array $optParams Optional parameters. + * + * @opt_param bool includeInactive + * Whether to include inactive ad units. Default: true. + * @opt_param string pageToken + * A continuation token, used to page through ad units. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults + * The maximum number of ad units to include in the response, used for paging. + * @return Google_Service_AdSense_AdUnits + */ + public function listCustomchannelsAdunits($adClientId, $customChannelId, $optParams = array()) + { + $params = array('adClientId' => $adClientId, 'customChannelId' => $customChannelId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_AdUnits"); + } +} + +/** + * The "metadata" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $metadata = $adsenseService->metadata; + * + */ +class Google_Service_AdSense_Metadata_Resource extends Google_Service_Resource +{ + +} + +/** + * The "dimensions" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $dimensions = $adsenseService->dimensions; + * + */ +class Google_Service_AdSense_MetadataDimensions_Resource extends Google_Service_Resource +{ + + /** + * List the metadata for the dimensions available to this AdSense account. + * (dimensions.listMetadataDimensions) + * + * @param array $optParams Optional parameters. + * @return Google_Service_AdSense_Metadata + */ + public function listMetadataDimensions($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_Metadata"); + } +} +/** + * The "metrics" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $metrics = $adsenseService->metrics; + * + */ +class Google_Service_AdSense_MetadataMetrics_Resource extends Google_Service_Resource +{ + + /** + * List the metadata for the metrics available to this AdSense account. + * (metrics.listMetadataMetrics) + * + * @param array $optParams Optional parameters. + * @return Google_Service_AdSense_Metadata + */ + public function listMetadataMetrics($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_Metadata"); + } +} + +/** + * The "payments" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $payments = $adsenseService->payments; + * + */ +class Google_Service_AdSense_Payments_Resource extends Google_Service_Resource +{ + + /** + * List the payments for this AdSense account. (payments.listPayments) + * + * @param array $optParams Optional parameters. + * @return Google_Service_AdSense_Payments + */ + public function listPayments($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_Payments"); + } +} + +/** + * The "reports" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $reports = $adsenseService->reports; + * + */ +class Google_Service_AdSense_Reports_Resource extends Google_Service_Resource +{ + + /** + * Generate an AdSense report based on the report request sent in the query + * parameters. Returns the result as JSON; to retrieve output in CSV format + * specify "alt=csv" as a query parameter. (reports.generate) + * + * @param string $startDate + * Start of the date range to report on in "YYYY-MM-DD" format, inclusive. + * @param string $endDate + * End of the date range to report on in "YYYY-MM-DD" format, inclusive. + * @param array $optParams Optional parameters. + * + * @opt_param string sort + * The name of a dimension or metric to sort the resulting report on, optionally prefixed with "+" + * to sort ascending or "-" to sort descending. If no prefix is specified, the column is sorted + * ascending. + * @opt_param string locale + * Optional locale to use for translating report output to a local language. Defaults to "en_US" if + * not specified. + * @opt_param string metric + * Numeric columns to include in the report. + * @opt_param int maxResults + * The maximum number of rows of report data to return. + * @opt_param string filter + * Filters to be run on the report. + * @opt_param string currency + * Optional currency to use when reporting on monetary metrics. Defaults to the account's currency + * if not set. + * @opt_param int startIndex + * Index of the first row of report data to return. + * @opt_param bool useTimezoneReporting + * Whether the report should be generated in the AdSense account's local timezone. If false default + * PST/PDT timezone will be used. + * @opt_param string dimension + * Dimensions to base the report on. + * @opt_param string accountId + * Accounts upon which to report. + * @return Google_Service_AdSense_AdsenseReportsGenerateResponse + */ + public function generate($startDate, $endDate, $optParams = array()) + { + $params = array('startDate' => $startDate, 'endDate' => $endDate); + $params = array_merge($params, $optParams); + return $this->call('generate', array($params), "Google_Service_AdSense_AdsenseReportsGenerateResponse"); + } +} + +/** + * The "saved" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $saved = $adsenseService->saved; + * + */ +class Google_Service_AdSense_ReportsSaved_Resource extends Google_Service_Resource +{ + + /** + * Generate an AdSense report based on the saved report ID sent in the query + * parameters. (saved.generate) + * + * @param string $savedReportId + * The saved report to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param string locale + * Optional locale to use for translating report output to a local language. Defaults to "en_US" if + * not specified. + * @opt_param int startIndex + * Index of the first row of report data to return. + * @opt_param int maxResults + * The maximum number of rows of report data to return. + * @return Google_Service_AdSense_AdsenseReportsGenerateResponse + */ + public function generate($savedReportId, $optParams = array()) + { + $params = array('savedReportId' => $savedReportId); + $params = array_merge($params, $optParams); + return $this->call('generate', array($params), "Google_Service_AdSense_AdsenseReportsGenerateResponse"); + } + /** + * List all saved reports in this AdSense account. (saved.listReportsSaved) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through saved reports. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults + * The maximum number of saved reports to include in the response, used for paging. + * @return Google_Service_AdSense_SavedReports + */ + public function listReportsSaved($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_SavedReports"); + } +} + +/** + * The "savedadstyles" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $savedadstyles = $adsenseService->savedadstyles; + * + */ +class Google_Service_AdSense_Savedadstyles_Resource extends Google_Service_Resource +{ + + /** + * Get a specific saved ad style from the user's account. (savedadstyles.get) + * + * @param string $savedAdStyleId + * Saved ad style to retrieve. + * @param array $optParams Optional parameters. + * @return Google_Service_AdSense_SavedAdStyle + */ + public function get($savedAdStyleId, $optParams = array()) + { + $params = array('savedAdStyleId' => $savedAdStyleId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdSense_SavedAdStyle"); + } + /** + * List all saved ad styles in the user's account. + * (savedadstyles.listSavedadstyles) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through saved ad styles. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults + * The maximum number of saved ad styles to include in the response, used for paging. + * @return Google_Service_AdSense_SavedAdStyles + */ + public function listSavedadstyles($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_SavedAdStyles"); + } +} + +/** + * The "urlchannels" collection of methods. + * Typical usage is: + * + * $adsenseService = new Google_Service_AdSense(...); + * $urlchannels = $adsenseService->urlchannels; + * + */ +class Google_Service_AdSense_Urlchannels_Resource extends Google_Service_Resource +{ + + /** + * List all URL channels in the specified ad client for this AdSense account. + * (urlchannels.listUrlchannels) + * + * @param string $adClientId + * Ad client for which to list URL channels. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through URL channels. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param int maxResults + * The maximum number of URL channels to include in the response, used for paging. + * @return Google_Service_AdSense_UrlChannels + */ + public function listUrlchannels($adClientId, $optParams = array()) + { + $params = array('adClientId' => $adClientId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSense_UrlChannels"); + } +} + + + + +class Google_Service_AdSense_Account extends Google_Collection +{ + public $id; + public $kind; + public $name; + public $premium; + protected $subAccountsType = 'Google_Service_AdSense_Account'; + protected $subAccountsDataType = 'array'; + public $timezone; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPremium($premium) + { + $this->premium = $premium; + } + + public function getPremium() + { + return $this->premium; + } + + public function setSubAccounts($subAccounts) + { + $this->subAccounts = $subAccounts; + } + + public function getSubAccounts() + { + return $this->subAccounts; + } + + public function setTimezone($timezone) + { + $this->timezone = $timezone; + } + + public function getTimezone() + { + return $this->timezone; + } +} + +class Google_Service_AdSense_Accounts extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_AdSense_Account'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_AdSense_AdClient extends Google_Model +{ + public $arcOptIn; + public $arcReviewMode; + public $id; + public $kind; + public $productCode; + public $supportsReporting; + + public function setArcOptIn($arcOptIn) + { + $this->arcOptIn = $arcOptIn; + } + + public function getArcOptIn() + { + return $this->arcOptIn; + } + + public function setArcReviewMode($arcReviewMode) + { + $this->arcReviewMode = $arcReviewMode; + } + + public function getArcReviewMode() + { + return $this->arcReviewMode; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setProductCode($productCode) + { + $this->productCode = $productCode; + } + + public function getProductCode() + { + return $this->productCode; + } + + public function setSupportsReporting($supportsReporting) + { + $this->supportsReporting = $supportsReporting; + } + + public function getSupportsReporting() + { + return $this->supportsReporting; + } +} + +class Google_Service_AdSense_AdClients extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_AdSense_AdClient'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_AdSense_AdCode extends Google_Model +{ + public $adCode; + public $kind; + + public function setAdCode($adCode) + { + $this->adCode = $adCode; + } + + public function getAdCode() + { + return $this->adCode; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_AdSense_AdStyle extends Google_Model +{ + protected $colorsType = 'Google_Service_AdSense_AdStyleColors'; + protected $colorsDataType = ''; + public $corners; + protected $fontType = 'Google_Service_AdSense_AdStyleFont'; + protected $fontDataType = ''; + public $kind; + + public function setColors(Google_Service_AdSense_AdStyleColors $colors) + { + $this->colors = $colors; + } + + public function getColors() + { + return $this->colors; + } + + public function setCorners($corners) + { + $this->corners = $corners; + } + + public function getCorners() + { + return $this->corners; + } + + public function setFont(Google_Service_AdSense_AdStyleFont $font) + { + $this->font = $font; + } + + public function getFont() + { + return $this->font; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_AdSense_AdStyleColors extends Google_Model +{ + public $background; + public $border; + public $text; + public $title; + public $url; + + public function setBackground($background) + { + $this->background = $background; + } + + public function getBackground() + { + return $this->background; + } + + public function setBorder($border) + { + $this->border = $border; + } + + public function getBorder() + { + return $this->border; + } + + public function setText($text) + { + $this->text = $text; + } + + public function getText() + { + return $this->text; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_AdSense_AdStyleFont extends Google_Model +{ + public $family; + public $size; + + public function setFamily($family) + { + $this->family = $family; + } + + public function getFamily() + { + return $this->family; + } + + public function setSize($size) + { + $this->size = $size; + } + + public function getSize() + { + return $this->size; + } +} + +class Google_Service_AdSense_AdUnit extends Google_Model +{ + public $code; + protected $contentAdsSettingsType = 'Google_Service_AdSense_AdUnitContentAdsSettings'; + protected $contentAdsSettingsDataType = ''; + protected $customStyleType = 'Google_Service_AdSense_AdStyle'; + protected $customStyleDataType = ''; + protected $feedAdsSettingsType = 'Google_Service_AdSense_AdUnitFeedAdsSettings'; + protected $feedAdsSettingsDataType = ''; + public $id; + public $kind; + protected $mobileContentAdsSettingsType = 'Google_Service_AdSense_AdUnitMobileContentAdsSettings'; + protected $mobileContentAdsSettingsDataType = ''; + public $name; + public $savedStyleId; + public $status; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setContentAdsSettings(Google_Service_AdSense_AdUnitContentAdsSettings $contentAdsSettings) + { + $this->contentAdsSettings = $contentAdsSettings; + } + + public function getContentAdsSettings() + { + return $this->contentAdsSettings; + } + + public function setCustomStyle(Google_Service_AdSense_AdStyle $customStyle) + { + $this->customStyle = $customStyle; + } + + public function getCustomStyle() + { + return $this->customStyle; + } + + public function setFeedAdsSettings(Google_Service_AdSense_AdUnitFeedAdsSettings $feedAdsSettings) + { + $this->feedAdsSettings = $feedAdsSettings; + } + + public function getFeedAdsSettings() + { + return $this->feedAdsSettings; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMobileContentAdsSettings(Google_Service_AdSense_AdUnitMobileContentAdsSettings $mobileContentAdsSettings) + { + $this->mobileContentAdsSettings = $mobileContentAdsSettings; + } + + public function getMobileContentAdsSettings() + { + return $this->mobileContentAdsSettings; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setSavedStyleId($savedStyleId) + { + $this->savedStyleId = $savedStyleId; + } + + public function getSavedStyleId() + { + return $this->savedStyleId; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_AdSense_AdUnitContentAdsSettings extends Google_Model +{ + protected $backupOptionType = 'Google_Service_AdSense_AdUnitContentAdsSettingsBackupOption'; + protected $backupOptionDataType = ''; + public $size; + public $type; + + public function setBackupOption(Google_Service_AdSense_AdUnitContentAdsSettingsBackupOption $backupOption) + { + $this->backupOption = $backupOption; + } + + public function getBackupOption() + { + return $this->backupOption; + } + + public function setSize($size) + { + $this->size = $size; + } + + public function getSize() + { + return $this->size; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_AdSense_AdUnitContentAdsSettingsBackupOption extends Google_Model +{ + public $color; + public $type; + public $url; + + public function setColor($color) + { + $this->color = $color; + } + + public function getColor() + { + return $this->color; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_AdSense_AdUnitFeedAdsSettings extends Google_Model +{ + public $adPosition; + public $frequency; + public $minimumWordCount; + public $type; + + public function setAdPosition($adPosition) + { + $this->adPosition = $adPosition; + } + + public function getAdPosition() + { + return $this->adPosition; + } + + public function setFrequency($frequency) + { + $this->frequency = $frequency; + } + + public function getFrequency() + { + return $this->frequency; + } + + public function setMinimumWordCount($minimumWordCount) + { + $this->minimumWordCount = $minimumWordCount; + } + + public function getMinimumWordCount() + { + return $this->minimumWordCount; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_AdSense_AdUnitMobileContentAdsSettings extends Google_Model +{ + public $markupLanguage; + public $scriptingLanguage; + public $size; + public $type; + + public function setMarkupLanguage($markupLanguage) + { + $this->markupLanguage = $markupLanguage; + } + + public function getMarkupLanguage() + { + return $this->markupLanguage; + } + + public function setScriptingLanguage($scriptingLanguage) + { + $this->scriptingLanguage = $scriptingLanguage; + } + + public function getScriptingLanguage() + { + return $this->scriptingLanguage; + } + + public function setSize($size) + { + $this->size = $size; + } + + public function getSize() + { + return $this->size; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_AdSense_AdUnits extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_AdSense_AdUnit'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_AdSense_AdsenseReportsGenerateResponse extends Google_Collection +{ + public $averages; + public $endDate; + protected $headersType = 'Google_Service_AdSense_AdsenseReportsGenerateResponseHeaders'; + protected $headersDataType = 'array'; + public $kind; + public $rows; + public $startDate; + public $totalMatchedRows; + public $totals; + public $warnings; + + public function setAverages($averages) + { + $this->averages = $averages; + } + + public function getAverages() + { + return $this->averages; + } + + public function setEndDate($endDate) + { + $this->endDate = $endDate; + } + + public function getEndDate() + { + return $this->endDate; + } + + public function setHeaders($headers) + { + $this->headers = $headers; + } + + public function getHeaders() + { + return $this->headers; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRows($rows) + { + $this->rows = $rows; + } + + public function getRows() + { + return $this->rows; + } + + public function setStartDate($startDate) + { + $this->startDate = $startDate; + } + + public function getStartDate() + { + return $this->startDate; + } + + public function setTotalMatchedRows($totalMatchedRows) + { + $this->totalMatchedRows = $totalMatchedRows; + } + + public function getTotalMatchedRows() + { + return $this->totalMatchedRows; + } + + public function setTotals($totals) + { + $this->totals = $totals; + } + + public function getTotals() + { + return $this->totals; + } + + public function setWarnings($warnings) + { + $this->warnings = $warnings; + } + + public function getWarnings() + { + return $this->warnings; + } +} + +class Google_Service_AdSense_AdsenseReportsGenerateResponseHeaders extends Google_Model +{ + public $currency; + public $name; + public $type; + + public function setCurrency($currency) + { + $this->currency = $currency; + } + + public function getCurrency() + { + return $this->currency; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_AdSense_Alert extends Google_Model +{ + public $id; + public $isDismissible; + public $kind; + public $message; + public $severity; + public $type; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setIsDismissible($isDismissible) + { + $this->isDismissible = $isDismissible; + } + + public function getIsDismissible() + { + return $this->isDismissible; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } + + public function setSeverity($severity) + { + $this->severity = $severity; + } + + public function getSeverity() + { + return $this->severity; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_AdSense_Alerts extends Google_Collection +{ + protected $itemsType = 'Google_Service_AdSense_Alert'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_AdSense_CustomChannel extends Google_Model +{ + public $code; + public $id; + public $kind; + public $name; + protected $targetingInfoType = 'Google_Service_AdSense_CustomChannelTargetingInfo'; + protected $targetingInfoDataType = ''; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setTargetingInfo(Google_Service_AdSense_CustomChannelTargetingInfo $targetingInfo) + { + $this->targetingInfo = $targetingInfo; + } + + public function getTargetingInfo() + { + return $this->targetingInfo; + } +} + +class Google_Service_AdSense_CustomChannelTargetingInfo extends Google_Model +{ + public $adsAppearOn; + public $description; + public $location; + public $siteLanguage; + + public function setAdsAppearOn($adsAppearOn) + { + $this->adsAppearOn = $adsAppearOn; + } + + public function getAdsAppearOn() + { + return $this->adsAppearOn; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setLocation($location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setSiteLanguage($siteLanguage) + { + $this->siteLanguage = $siteLanguage; + } + + public function getSiteLanguage() + { + return $this->siteLanguage; + } +} + +class Google_Service_AdSense_CustomChannels extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_AdSense_CustomChannel'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_AdSense_Metadata extends Google_Collection +{ + protected $itemsType = 'Google_Service_AdSense_ReportingMetadataEntry'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_AdSense_Payment extends Google_Model +{ + public $id; + public $kind; + public $paymentAmount; + public $paymentAmountCurrencyCode; + public $paymentDate; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPaymentAmount($paymentAmount) + { + $this->paymentAmount = $paymentAmount; + } + + public function getPaymentAmount() + { + return $this->paymentAmount; + } + + public function setPaymentAmountCurrencyCode($paymentAmountCurrencyCode) + { + $this->paymentAmountCurrencyCode = $paymentAmountCurrencyCode; + } + + public function getPaymentAmountCurrencyCode() + { + return $this->paymentAmountCurrencyCode; + } + + public function setPaymentDate($paymentDate) + { + $this->paymentDate = $paymentDate; + } + + public function getPaymentDate() + { + return $this->paymentDate; + } +} + +class Google_Service_AdSense_Payments extends Google_Collection +{ + protected $itemsType = 'Google_Service_AdSense_Payment'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_AdSense_ReportingMetadataEntry extends Google_Collection +{ + public $compatibleDimensions; + public $compatibleMetrics; + public $id; + public $kind; + public $requiredDimensions; + public $requiredMetrics; + public $supportedProducts; + + public function setCompatibleDimensions($compatibleDimensions) + { + $this->compatibleDimensions = $compatibleDimensions; + } + + public function getCompatibleDimensions() + { + return $this->compatibleDimensions; + } + + public function setCompatibleMetrics($compatibleMetrics) + { + $this->compatibleMetrics = $compatibleMetrics; + } + + public function getCompatibleMetrics() + { + return $this->compatibleMetrics; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRequiredDimensions($requiredDimensions) + { + $this->requiredDimensions = $requiredDimensions; + } + + public function getRequiredDimensions() + { + return $this->requiredDimensions; + } + + public function setRequiredMetrics($requiredMetrics) + { + $this->requiredMetrics = $requiredMetrics; + } + + public function getRequiredMetrics() + { + return $this->requiredMetrics; + } + + public function setSupportedProducts($supportedProducts) + { + $this->supportedProducts = $supportedProducts; + } + + public function getSupportedProducts() + { + return $this->supportedProducts; + } +} + +class Google_Service_AdSense_SavedAdStyle extends Google_Model +{ + protected $adStyleType = 'Google_Service_AdSense_AdStyle'; + protected $adStyleDataType = ''; + public $id; + public $kind; + public $name; + + public function setAdStyle(Google_Service_AdSense_AdStyle $adStyle) + { + $this->adStyle = $adStyle; + } + + public function getAdStyle() + { + return $this->adStyle; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_AdSense_SavedAdStyles extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_AdSense_SavedAdStyle'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_AdSense_SavedReport extends Google_Model +{ + public $id; + public $kind; + public $name; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_AdSense_SavedReports extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_AdSense_SavedReport'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_AdSense_UrlChannel extends Google_Model +{ + public $id; + public $kind; + public $urlPattern; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setUrlPattern($urlPattern) + { + $this->urlPattern = $urlPattern; + } + + public function getUrlPattern() + { + return $this->urlPattern; + } +} + +class Google_Service_AdSense_UrlChannels extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_AdSense_UrlChannel'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} diff --git a/oauth/Google/Service/AdSenseHost.php b/oauth/Google/Service/AdSenseHost.php new file mode 100644 index 0000000..8c1ca20 --- /dev/null +++ b/oauth/Google/Service/AdSenseHost.php @@ -0,0 +1,2281 @@ + + * Gives AdSense Hosts access to report generation, ad code generation, and publisher management capabilities. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_AdSenseHost extends Google_Service +{ + /** View and manage your AdSense host data and associated accounts. */ + const ADSENSEHOST = "https://www.googleapis.com/auth/adsensehost"; + + public $accounts; + public $accounts_adclients; + public $accounts_adunits; + public $accounts_reports; + public $adclients; + public $associationsessions; + public $customchannels; + public $reports; + public $urlchannels; + + + /** + * Constructs the internal representation of the AdSenseHost service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'adsensehost/v4.1/'; + $this->version = 'v4.1'; + $this->serviceName = 'adsensehost'; + + $this->accounts = new Google_Service_AdSenseHost_Accounts_Resource( + $this, + $this->serviceName, + 'accounts', + array( + 'methods' => array( + 'get' => array( + 'path' => 'accounts/{accountId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'accounts', + 'httpMethod' => 'GET', + 'parameters' => array( + 'filterAdClientId' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->accounts_adclients = new Google_Service_AdSenseHost_AccountsAdclients_Resource( + $this, + $this->serviceName, + 'adclients', + array( + 'methods' => array( + 'get' => array( + 'path' => 'accounts/{accountId}/adclients/{adClientId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'accounts/{accountId}/adclients', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->accounts_adunits = new Google_Service_AdSenseHost_AccountsAdunits_Resource( + $this, + $this->serviceName, + 'adunits', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'accounts/{accountId}/adclients/{adClientId}/adunits/{adUnitId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adUnitId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'accounts/{accountId}/adclients/{adClientId}/adunits/{adUnitId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adUnitId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'getAdCode' => array( + 'path' => 'accounts/{accountId}/adclients/{adClientId}/adunits/{adUnitId}/adcode', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adUnitId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'hostCustomChannelId' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + ), + ),'insert' => array( + 'path' => 'accounts/{accountId}/adclients/{adClientId}/adunits', + 'httpMethod' => 'POST', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'accounts/{accountId}/adclients/{adClientId}/adunits', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'includeInactive' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'accounts/{accountId}/adclients/{adClientId}/adunits', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adUnitId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'accounts/{accountId}/adclients/{adClientId}/adunits', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->accounts_reports = new Google_Service_AdSenseHost_AccountsReports_Resource( + $this, + $this->serviceName, + 'reports', + array( + 'methods' => array( + 'generate' => array( + 'path' => 'accounts/{accountId}/reports', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'startDate' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'endDate' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'sort' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'metric' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'startIndex' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'dimension' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + ), + ), + ) + ) + ); + $this->adclients = new Google_Service_AdSenseHost_Adclients_Resource( + $this, + $this->serviceName, + 'adclients', + array( + 'methods' => array( + 'get' => array( + 'path' => 'adclients/{adClientId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'adclients', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->associationsessions = new Google_Service_AdSenseHost_Associationsessions_Resource( + $this, + $this->serviceName, + 'associationsessions', + array( + 'methods' => array( + 'start' => array( + 'path' => 'associationsessions/start', + 'httpMethod' => 'GET', + 'parameters' => array( + 'productCode' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + 'required' => true, + ), + 'websiteUrl' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'websiteLocale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'userLocale' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'verify' => array( + 'path' => 'associationsessions/verify', + 'httpMethod' => 'GET', + 'parameters' => array( + 'token' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->customchannels = new Google_Service_AdSenseHost_Customchannels_Resource( + $this, + $this->serviceName, + 'customchannels', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'adclients/{adClientId}/customchannels/{customChannelId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customChannelId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'adclients/{adClientId}/customchannels/{customChannelId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customChannelId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'adclients/{adClientId}/customchannels', + 'httpMethod' => 'POST', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'adclients/{adClientId}/customchannels', + 'httpMethod' => 'GET', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'adclients/{adClientId}/customchannels', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customChannelId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'adclients/{adClientId}/customchannels', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->reports = new Google_Service_AdSenseHost_Reports_Resource( + $this, + $this->serviceName, + 'reports', + array( + 'methods' => array( + 'generate' => array( + 'path' => 'reports', + 'httpMethod' => 'GET', + 'parameters' => array( + 'startDate' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'endDate' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'sort' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'metric' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'startIndex' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'dimension' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + ), + ), + ) + ) + ); + $this->urlchannels = new Google_Service_AdSenseHost_Urlchannels_Resource( + $this, + $this->serviceName, + 'urlchannels', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'adclients/{adClientId}/urlchannels/{urlChannelId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'urlChannelId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'adclients/{adClientId}/urlchannels', + 'httpMethod' => 'POST', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'adclients/{adClientId}/urlchannels', + 'httpMethod' => 'GET', + 'parameters' => array( + 'adClientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "accounts" collection of methods. + * Typical usage is: + * + * $adsensehostService = new Google_Service_AdSenseHost(...); + * $accounts = $adsensehostService->accounts; + * + */ +class Google_Service_AdSenseHost_Accounts_Resource extends Google_Service_Resource +{ + + /** + * Get information about the selected associated AdSense account. (accounts.get) + * + * @param string $accountId + * Account to get information about. + * @param array $optParams Optional parameters. + * @return Google_Service_AdSenseHost_Account + */ + public function get($accountId, $optParams = array()) + { + $params = array('accountId' => $accountId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdSenseHost_Account"); + } + /** + * List hosted accounts associated with this AdSense account by ad client id. + * (accounts.listAccounts) + * + * @param string $filterAdClientId + * Ad clients to list accounts for. + * @param array $optParams Optional parameters. + * @return Google_Service_AdSenseHost_Accounts + */ + public function listAccounts($filterAdClientId, $optParams = array()) + { + $params = array('filterAdClientId' => $filterAdClientId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSenseHost_Accounts"); + } +} + +/** + * The "adclients" collection of methods. + * Typical usage is: + * + * $adsensehostService = new Google_Service_AdSenseHost(...); + * $adclients = $adsensehostService->adclients; + * + */ +class Google_Service_AdSenseHost_AccountsAdclients_Resource extends Google_Service_Resource +{ + + /** + * Get information about one of the ad clients in the specified publisher's + * AdSense account. (adclients.get) + * + * @param string $accountId + * Account which contains the ad client. + * @param string $adClientId + * Ad client to get. + * @param array $optParams Optional parameters. + * @return Google_Service_AdSenseHost_AdClient + */ + public function get($accountId, $adClientId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdSenseHost_AdClient"); + } + /** + * List all hosted ad clients in the specified hosted account. + * (adclients.listAccountsAdclients) + * + * @param string $accountId + * Account for which to list ad clients. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through ad clients. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of ad clients to include in the response, used for paging. + * @return Google_Service_AdSenseHost_AdClients + */ + public function listAccountsAdclients($accountId, $optParams = array()) + { + $params = array('accountId' => $accountId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSenseHost_AdClients"); + } +} +/** + * The "adunits" collection of methods. + * Typical usage is: + * + * $adsensehostService = new Google_Service_AdSenseHost(...); + * $adunits = $adsensehostService->adunits; + * + */ +class Google_Service_AdSenseHost_AccountsAdunits_Resource extends Google_Service_Resource +{ + + /** + * Delete the specified ad unit from the specified publisher AdSense account. + * (adunits.delete) + * + * @param string $accountId + * Account which contains the ad unit. + * @param string $adClientId + * Ad client for which to get ad unit. + * @param string $adUnitId + * Ad unit to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_AdSenseHost_AdUnit + */ + public function delete($accountId, $adClientId, $adUnitId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'adUnitId' => $adUnitId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_AdSenseHost_AdUnit"); + } + /** + * Get the specified host ad unit in this AdSense account. (adunits.get) + * + * @param string $accountId + * Account which contains the ad unit. + * @param string $adClientId + * Ad client for which to get ad unit. + * @param string $adUnitId + * Ad unit to get. + * @param array $optParams Optional parameters. + * @return Google_Service_AdSenseHost_AdUnit + */ + public function get($accountId, $adClientId, $adUnitId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'adUnitId' => $adUnitId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdSenseHost_AdUnit"); + } + /** + * Get ad code for the specified ad unit, attaching the specified host custom + * channels. (adunits.getAdCode) + * + * @param string $accountId + * Account which contains the ad client. + * @param string $adClientId + * Ad client with contains the ad unit. + * @param string $adUnitId + * Ad unit to get the code for. + * @param array $optParams Optional parameters. + * + * @opt_param string hostCustomChannelId + * Host custom channel to attach to the ad code. + * @return Google_Service_AdSenseHost_AdCode + */ + public function getAdCode($accountId, $adClientId, $adUnitId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'adUnitId' => $adUnitId); + $params = array_merge($params, $optParams); + return $this->call('getAdCode', array($params), "Google_Service_AdSenseHost_AdCode"); + } + /** + * Insert the supplied ad unit into the specified publisher AdSense account. + * (adunits.insert) + * + * @param string $accountId + * Account which will contain the ad unit. + * @param string $adClientId + * Ad client into which to insert the ad unit. + * @param Google_AdUnit $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AdSenseHost_AdUnit + */ + public function insert($accountId, $adClientId, Google_Service_AdSenseHost_AdUnit $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_AdSenseHost_AdUnit"); + } + /** + * List all ad units in the specified publisher's AdSense account. + * (adunits.listAccountsAdunits) + * + * @param string $accountId + * Account which contains the ad client. + * @param string $adClientId + * Ad client for which to list ad units. + * @param array $optParams Optional parameters. + * + * @opt_param bool includeInactive + * Whether to include inactive ad units. Default: true. + * @opt_param string pageToken + * A continuation token, used to page through ad units. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of ad units to include in the response, used for paging. + * @return Google_Service_AdSenseHost_AdUnits + */ + public function listAccountsAdunits($accountId, $adClientId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSenseHost_AdUnits"); + } + /** + * Update the supplied ad unit in the specified publisher AdSense account. This + * method supports patch semantics. (adunits.patch) + * + * @param string $accountId + * Account which contains the ad client. + * @param string $adClientId + * Ad client which contains the ad unit. + * @param string $adUnitId + * Ad unit to get. + * @param Google_AdUnit $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AdSenseHost_AdUnit + */ + public function patch($accountId, $adClientId, $adUnitId, Google_Service_AdSenseHost_AdUnit $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'adUnitId' => $adUnitId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_AdSenseHost_AdUnit"); + } + /** + * Update the supplied ad unit in the specified publisher AdSense account. + * (adunits.update) + * + * @param string $accountId + * Account which contains the ad client. + * @param string $adClientId + * Ad client which contains the ad unit. + * @param Google_AdUnit $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AdSenseHost_AdUnit + */ + public function update($accountId, $adClientId, Google_Service_AdSenseHost_AdUnit $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'adClientId' => $adClientId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_AdSenseHost_AdUnit"); + } +} +/** + * The "reports" collection of methods. + * Typical usage is: + * + * $adsensehostService = new Google_Service_AdSenseHost(...); + * $reports = $adsensehostService->reports; + * + */ +class Google_Service_AdSenseHost_AccountsReports_Resource extends Google_Service_Resource +{ + + /** + * Generate an AdSense report based on the report request sent in the query + * parameters. Returns the result as JSON; to retrieve output in CSV format + * specify "alt=csv" as a query parameter. (reports.generate) + * + * @param string $accountId + * Hosted account upon which to report. + * @param string $startDate + * Start of the date range to report on in "YYYY-MM-DD" format, inclusive. + * @param string $endDate + * End of the date range to report on in "YYYY-MM-DD" format, inclusive. + * @param array $optParams Optional parameters. + * + * @opt_param string sort + * The name of a dimension or metric to sort the resulting report on, optionally prefixed with "+" + * to sort ascending or "-" to sort descending. If no prefix is specified, the column is sorted + * ascending. + * @opt_param string locale + * Optional locale to use for translating report output to a local language. Defaults to "en_US" if + * not specified. + * @opt_param string metric + * Numeric columns to include in the report. + * @opt_param string maxResults + * The maximum number of rows of report data to return. + * @opt_param string filter + * Filters to be run on the report. + * @opt_param string startIndex + * Index of the first row of report data to return. + * @opt_param string dimension + * Dimensions to base the report on. + * @return Google_Service_AdSenseHost_Report + */ + public function generate($accountId, $startDate, $endDate, $optParams = array()) + { + $params = array('accountId' => $accountId, 'startDate' => $startDate, 'endDate' => $endDate); + $params = array_merge($params, $optParams); + return $this->call('generate', array($params), "Google_Service_AdSenseHost_Report"); + } +} + +/** + * The "adclients" collection of methods. + * Typical usage is: + * + * $adsensehostService = new Google_Service_AdSenseHost(...); + * $adclients = $adsensehostService->adclients; + * + */ +class Google_Service_AdSenseHost_Adclients_Resource extends Google_Service_Resource +{ + + /** + * Get information about one of the ad clients in the Host AdSense account. + * (adclients.get) + * + * @param string $adClientId + * Ad client to get. + * @param array $optParams Optional parameters. + * @return Google_Service_AdSenseHost_AdClient + */ + public function get($adClientId, $optParams = array()) + { + $params = array('adClientId' => $adClientId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdSenseHost_AdClient"); + } + /** + * List all host ad clients in this AdSense account. (adclients.listAdclients) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through ad clients. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of ad clients to include in the response, used for paging. + * @return Google_Service_AdSenseHost_AdClients + */ + public function listAdclients($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSenseHost_AdClients"); + } +} + +/** + * The "associationsessions" collection of methods. + * Typical usage is: + * + * $adsensehostService = new Google_Service_AdSenseHost(...); + * $associationsessions = $adsensehostService->associationsessions; + * + */ +class Google_Service_AdSenseHost_Associationsessions_Resource extends Google_Service_Resource +{ + + /** + * Create an association session for initiating an association with an AdSense + * user. (associationsessions.start) + * + * @param string $productCode + * Products to associate with the user. + * @param string $websiteUrl + * The URL of the user's hosted website. + * @param array $optParams Optional parameters. + * + * @opt_param string websiteLocale + * The locale of the user's hosted website. + * @opt_param string userLocale + * The preferred locale of the user. + * @return Google_Service_AdSenseHost_AssociationSession + */ + public function start($productCode, $websiteUrl, $optParams = array()) + { + $params = array('productCode' => $productCode, 'websiteUrl' => $websiteUrl); + $params = array_merge($params, $optParams); + return $this->call('start', array($params), "Google_Service_AdSenseHost_AssociationSession"); + } + /** + * Verify an association session after the association callback returns from + * AdSense signup. (associationsessions.verify) + * + * @param string $token + * The token returned to the association callback URL. + * @param array $optParams Optional parameters. + * @return Google_Service_AdSenseHost_AssociationSession + */ + public function verify($token, $optParams = array()) + { + $params = array('token' => $token); + $params = array_merge($params, $optParams); + return $this->call('verify', array($params), "Google_Service_AdSenseHost_AssociationSession"); + } +} + +/** + * The "customchannels" collection of methods. + * Typical usage is: + * + * $adsensehostService = new Google_Service_AdSenseHost(...); + * $customchannels = $adsensehostService->customchannels; + * + */ +class Google_Service_AdSenseHost_Customchannels_Resource extends Google_Service_Resource +{ + + /** + * Delete a specific custom channel from the host AdSense account. + * (customchannels.delete) + * + * @param string $adClientId + * Ad client from which to delete the custom channel. + * @param string $customChannelId + * Custom channel to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_AdSenseHost_CustomChannel + */ + public function delete($adClientId, $customChannelId, $optParams = array()) + { + $params = array('adClientId' => $adClientId, 'customChannelId' => $customChannelId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_AdSenseHost_CustomChannel"); + } + /** + * Get a specific custom channel from the host AdSense account. + * (customchannels.get) + * + * @param string $adClientId + * Ad client from which to get the custom channel. + * @param string $customChannelId + * Custom channel to get. + * @param array $optParams Optional parameters. + * @return Google_Service_AdSenseHost_CustomChannel + */ + public function get($adClientId, $customChannelId, $optParams = array()) + { + $params = array('adClientId' => $adClientId, 'customChannelId' => $customChannelId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AdSenseHost_CustomChannel"); + } + /** + * Add a new custom channel to the host AdSense account. (customchannels.insert) + * + * @param string $adClientId + * Ad client to which the new custom channel will be added. + * @param Google_CustomChannel $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AdSenseHost_CustomChannel + */ + public function insert($adClientId, Google_Service_AdSenseHost_CustomChannel $postBody, $optParams = array()) + { + $params = array('adClientId' => $adClientId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_AdSenseHost_CustomChannel"); + } + /** + * List all host custom channels in this AdSense account. + * (customchannels.listCustomchannels) + * + * @param string $adClientId + * Ad client for which to list custom channels. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through custom channels. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of custom channels to include in the response, used for paging. + * @return Google_Service_AdSenseHost_CustomChannels + */ + public function listCustomchannels($adClientId, $optParams = array()) + { + $params = array('adClientId' => $adClientId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSenseHost_CustomChannels"); + } + /** + * Update a custom channel in the host AdSense account. This method supports + * patch semantics. (customchannels.patch) + * + * @param string $adClientId + * Ad client in which the custom channel will be updated. + * @param string $customChannelId + * Custom channel to get. + * @param Google_CustomChannel $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AdSenseHost_CustomChannel + */ + public function patch($adClientId, $customChannelId, Google_Service_AdSenseHost_CustomChannel $postBody, $optParams = array()) + { + $params = array('adClientId' => $adClientId, 'customChannelId' => $customChannelId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_AdSenseHost_CustomChannel"); + } + /** + * Update a custom channel in the host AdSense account. (customchannels.update) + * + * @param string $adClientId + * Ad client in which the custom channel will be updated. + * @param Google_CustomChannel $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AdSenseHost_CustomChannel + */ + public function update($adClientId, Google_Service_AdSenseHost_CustomChannel $postBody, $optParams = array()) + { + $params = array('adClientId' => $adClientId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_AdSenseHost_CustomChannel"); + } +} + +/** + * The "reports" collection of methods. + * Typical usage is: + * + * $adsensehostService = new Google_Service_AdSenseHost(...); + * $reports = $adsensehostService->reports; + * + */ +class Google_Service_AdSenseHost_Reports_Resource extends Google_Service_Resource +{ + + /** + * Generate an AdSense report based on the report request sent in the query + * parameters. Returns the result as JSON; to retrieve output in CSV format + * specify "alt=csv" as a query parameter. (reports.generate) + * + * @param string $startDate + * Start of the date range to report on in "YYYY-MM-DD" format, inclusive. + * @param string $endDate + * End of the date range to report on in "YYYY-MM-DD" format, inclusive. + * @param array $optParams Optional parameters. + * + * @opt_param string sort + * The name of a dimension or metric to sort the resulting report on, optionally prefixed with "+" + * to sort ascending or "-" to sort descending. If no prefix is specified, the column is sorted + * ascending. + * @opt_param string locale + * Optional locale to use for translating report output to a local language. Defaults to "en_US" if + * not specified. + * @opt_param string metric + * Numeric columns to include in the report. + * @opt_param string maxResults + * The maximum number of rows of report data to return. + * @opt_param string filter + * Filters to be run on the report. + * @opt_param string startIndex + * Index of the first row of report data to return. + * @opt_param string dimension + * Dimensions to base the report on. + * @return Google_Service_AdSenseHost_Report + */ + public function generate($startDate, $endDate, $optParams = array()) + { + $params = array('startDate' => $startDate, 'endDate' => $endDate); + $params = array_merge($params, $optParams); + return $this->call('generate', array($params), "Google_Service_AdSenseHost_Report"); + } +} + +/** + * The "urlchannels" collection of methods. + * Typical usage is: + * + * $adsensehostService = new Google_Service_AdSenseHost(...); + * $urlchannels = $adsensehostService->urlchannels; + * + */ +class Google_Service_AdSenseHost_Urlchannels_Resource extends Google_Service_Resource +{ + + /** + * Delete a URL channel from the host AdSense account. (urlchannels.delete) + * + * @param string $adClientId + * Ad client from which to delete the URL channel. + * @param string $urlChannelId + * URL channel to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_AdSenseHost_UrlChannel + */ + public function delete($adClientId, $urlChannelId, $optParams = array()) + { + $params = array('adClientId' => $adClientId, 'urlChannelId' => $urlChannelId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_AdSenseHost_UrlChannel"); + } + /** + * Add a new URL channel to the host AdSense account. (urlchannels.insert) + * + * @param string $adClientId + * Ad client to which the new URL channel will be added. + * @param Google_UrlChannel $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AdSenseHost_UrlChannel + */ + public function insert($adClientId, Google_Service_AdSenseHost_UrlChannel $postBody, $optParams = array()) + { + $params = array('adClientId' => $adClientId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_AdSenseHost_UrlChannel"); + } + /** + * List all host URL channels in the host AdSense account. + * (urlchannels.listUrlchannels) + * + * @param string $adClientId + * Ad client for which to list URL channels. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token, used to page through URL channels. To retrieve the next page, set this + * parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of URL channels to include in the response, used for paging. + * @return Google_Service_AdSenseHost_UrlChannels + */ + public function listUrlchannels($adClientId, $optParams = array()) + { + $params = array('adClientId' => $adClientId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AdSenseHost_UrlChannels"); + } +} + + + + +class Google_Service_AdSenseHost_Account extends Google_Model +{ + public $id; + public $kind; + public $name; + public $status; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_AdSenseHost_Accounts extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_AdSenseHost_Account'; + protected $itemsDataType = 'array'; + public $kind; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_AdSenseHost_AdClient extends Google_Model +{ + public $arcOptIn; + public $id; + public $kind; + public $productCode; + public $supportsReporting; + + public function setArcOptIn($arcOptIn) + { + $this->arcOptIn = $arcOptIn; + } + + public function getArcOptIn() + { + return $this->arcOptIn; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setProductCode($productCode) + { + $this->productCode = $productCode; + } + + public function getProductCode() + { + return $this->productCode; + } + + public function setSupportsReporting($supportsReporting) + { + $this->supportsReporting = $supportsReporting; + } + + public function getSupportsReporting() + { + return $this->supportsReporting; + } +} + +class Google_Service_AdSenseHost_AdClients extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_AdSenseHost_AdClient'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_AdSenseHost_AdCode extends Google_Model +{ + public $adCode; + public $kind; + + public function setAdCode($adCode) + { + $this->adCode = $adCode; + } + + public function getAdCode() + { + return $this->adCode; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_AdSenseHost_AdStyle extends Google_Model +{ + protected $colorsType = 'Google_Service_AdSenseHost_AdStyleColors'; + protected $colorsDataType = ''; + public $corners; + protected $fontType = 'Google_Service_AdSenseHost_AdStyleFont'; + protected $fontDataType = ''; + public $kind; + + public function setColors(Google_Service_AdSenseHost_AdStyleColors $colors) + { + $this->colors = $colors; + } + + public function getColors() + { + return $this->colors; + } + + public function setCorners($corners) + { + $this->corners = $corners; + } + + public function getCorners() + { + return $this->corners; + } + + public function setFont(Google_Service_AdSenseHost_AdStyleFont $font) + { + $this->font = $font; + } + + public function getFont() + { + return $this->font; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_AdSenseHost_AdStyleColors extends Google_Model +{ + public $background; + public $border; + public $text; + public $title; + public $url; + + public function setBackground($background) + { + $this->background = $background; + } + + public function getBackground() + { + return $this->background; + } + + public function setBorder($border) + { + $this->border = $border; + } + + public function getBorder() + { + return $this->border; + } + + public function setText($text) + { + $this->text = $text; + } + + public function getText() + { + return $this->text; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_AdSenseHost_AdStyleFont extends Google_Model +{ + public $family; + public $size; + + public function setFamily($family) + { + $this->family = $family; + } + + public function getFamily() + { + return $this->family; + } + + public function setSize($size) + { + $this->size = $size; + } + + public function getSize() + { + return $this->size; + } +} + +class Google_Service_AdSenseHost_AdUnit extends Google_Model +{ + public $code; + protected $contentAdsSettingsType = 'Google_Service_AdSenseHost_AdUnitContentAdsSettings'; + protected $contentAdsSettingsDataType = ''; + protected $customStyleType = 'Google_Service_AdSenseHost_AdStyle'; + protected $customStyleDataType = ''; + public $id; + public $kind; + protected $mobileContentAdsSettingsType = 'Google_Service_AdSenseHost_AdUnitMobileContentAdsSettings'; + protected $mobileContentAdsSettingsDataType = ''; + public $name; + public $status; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setContentAdsSettings(Google_Service_AdSenseHost_AdUnitContentAdsSettings $contentAdsSettings) + { + $this->contentAdsSettings = $contentAdsSettings; + } + + public function getContentAdsSettings() + { + return $this->contentAdsSettings; + } + + public function setCustomStyle(Google_Service_AdSenseHost_AdStyle $customStyle) + { + $this->customStyle = $customStyle; + } + + public function getCustomStyle() + { + return $this->customStyle; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMobileContentAdsSettings(Google_Service_AdSenseHost_AdUnitMobileContentAdsSettings $mobileContentAdsSettings) + { + $this->mobileContentAdsSettings = $mobileContentAdsSettings; + } + + public function getMobileContentAdsSettings() + { + return $this->mobileContentAdsSettings; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_AdSenseHost_AdUnitContentAdsSettings extends Google_Model +{ + protected $backupOptionType = 'Google_Service_AdSenseHost_AdUnitContentAdsSettingsBackupOption'; + protected $backupOptionDataType = ''; + public $size; + public $type; + + public function setBackupOption(Google_Service_AdSenseHost_AdUnitContentAdsSettingsBackupOption $backupOption) + { + $this->backupOption = $backupOption; + } + + public function getBackupOption() + { + return $this->backupOption; + } + + public function setSize($size) + { + $this->size = $size; + } + + public function getSize() + { + return $this->size; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_AdSenseHost_AdUnitContentAdsSettingsBackupOption extends Google_Model +{ + public $color; + public $type; + public $url; + + public function setColor($color) + { + $this->color = $color; + } + + public function getColor() + { + return $this->color; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_AdSenseHost_AdUnitMobileContentAdsSettings extends Google_Model +{ + public $markupLanguage; + public $scriptingLanguage; + public $size; + public $type; + + public function setMarkupLanguage($markupLanguage) + { + $this->markupLanguage = $markupLanguage; + } + + public function getMarkupLanguage() + { + return $this->markupLanguage; + } + + public function setScriptingLanguage($scriptingLanguage) + { + $this->scriptingLanguage = $scriptingLanguage; + } + + public function getScriptingLanguage() + { + return $this->scriptingLanguage; + } + + public function setSize($size) + { + $this->size = $size; + } + + public function getSize() + { + return $this->size; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_AdSenseHost_AdUnits extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_AdSenseHost_AdUnit'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_AdSenseHost_AssociationSession extends Google_Collection +{ + public $accountId; + public $id; + public $kind; + public $productCodes; + public $redirectUrl; + public $status; + public $userLocale; + public $websiteLocale; + public $websiteUrl; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setProductCodes($productCodes) + { + $this->productCodes = $productCodes; + } + + public function getProductCodes() + { + return $this->productCodes; + } + + public function setRedirectUrl($redirectUrl) + { + $this->redirectUrl = $redirectUrl; + } + + public function getRedirectUrl() + { + return $this->redirectUrl; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setUserLocale($userLocale) + { + $this->userLocale = $userLocale; + } + + public function getUserLocale() + { + return $this->userLocale; + } + + public function setWebsiteLocale($websiteLocale) + { + $this->websiteLocale = $websiteLocale; + } + + public function getWebsiteLocale() + { + return $this->websiteLocale; + } + + public function setWebsiteUrl($websiteUrl) + { + $this->websiteUrl = $websiteUrl; + } + + public function getWebsiteUrl() + { + return $this->websiteUrl; + } +} + +class Google_Service_AdSenseHost_CustomChannel extends Google_Model +{ + public $code; + public $id; + public $kind; + public $name; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_AdSenseHost_CustomChannels extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_AdSenseHost_CustomChannel'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_AdSenseHost_Report extends Google_Collection +{ + public $averages; + protected $headersType = 'Google_Service_AdSenseHost_ReportHeaders'; + protected $headersDataType = 'array'; + public $kind; + public $rows; + public $totalMatchedRows; + public $totals; + public $warnings; + + public function setAverages($averages) + { + $this->averages = $averages; + } + + public function getAverages() + { + return $this->averages; + } + + public function setHeaders($headers) + { + $this->headers = $headers; + } + + public function getHeaders() + { + return $this->headers; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRows($rows) + { + $this->rows = $rows; + } + + public function getRows() + { + return $this->rows; + } + + public function setTotalMatchedRows($totalMatchedRows) + { + $this->totalMatchedRows = $totalMatchedRows; + } + + public function getTotalMatchedRows() + { + return $this->totalMatchedRows; + } + + public function setTotals($totals) + { + $this->totals = $totals; + } + + public function getTotals() + { + return $this->totals; + } + + public function setWarnings($warnings) + { + $this->warnings = $warnings; + } + + public function getWarnings() + { + return $this->warnings; + } +} + +class Google_Service_AdSenseHost_ReportHeaders extends Google_Model +{ + public $currency; + public $name; + public $type; + + public function setCurrency($currency) + { + $this->currency = $currency; + } + + public function getCurrency() + { + return $this->currency; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_AdSenseHost_UrlChannel extends Google_Model +{ + public $id; + public $kind; + public $urlPattern; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setUrlPattern($urlPattern) + { + $this->urlPattern = $urlPattern; + } + + public function getUrlPattern() + { + return $this->urlPattern; + } +} + +class Google_Service_AdSenseHost_UrlChannels extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_AdSenseHost_UrlChannel'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} diff --git a/oauth/Google/Service/Admin.php b/oauth/Google/Service/Admin.php new file mode 100644 index 0000000..56fdc9a --- /dev/null +++ b/oauth/Google/Service/Admin.php @@ -0,0 +1,207 @@ + + * Email Migration API lets you migrate emails of users to Google backends. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Admin extends Google_Service +{ + /** Manage email messages of users on your domain. */ + const EMAIL_MIGRATION = "https://www.googleapis.com/auth/email.migration"; + + public $mail; + + + /** + * Constructs the internal representation of the Admin service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'email/v2/users/'; + $this->version = 'email_migration_v2'; + $this->serviceName = 'admin'; + + $this->mail = new Google_Service_Admin_Mail_Resource( + $this, + $this->serviceName, + 'mail', + array( + 'methods' => array( + 'insert' => array( + 'path' => '{userKey}/mail', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "mail" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Admin(...); + * $mail = $adminService->mail; + * + */ +class Google_Service_Admin_Mail_Resource extends Google_Service_Resource +{ + + /** + * Insert Mail into Google's Gmail backends (mail.insert) + * + * @param string $userKey + * The email or immutable id of the user + * @param Google_MailItem $postBody + * @param array $optParams Optional parameters. + */ + public function insert($userKey, Google_Service_Admin_MailItem $postBody, $optParams = array()) + { + $params = array('userKey' => $userKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params)); + } +} + + + + +class Google_Service_Admin_MailItem extends Google_Collection +{ + public $isDeleted; + public $isDraft; + public $isInbox; + public $isSent; + public $isStarred; + public $isTrash; + public $isUnread; + public $kind; + public $labels; + + public function setIsDeleted($isDeleted) + { + $this->isDeleted = $isDeleted; + } + + public function getIsDeleted() + { + return $this->isDeleted; + } + + public function setIsDraft($isDraft) + { + $this->isDraft = $isDraft; + } + + public function getIsDraft() + { + return $this->isDraft; + } + + public function setIsInbox($isInbox) + { + $this->isInbox = $isInbox; + } + + public function getIsInbox() + { + return $this->isInbox; + } + + public function setIsSent($isSent) + { + $this->isSent = $isSent; + } + + public function getIsSent() + { + return $this->isSent; + } + + public function setIsStarred($isStarred) + { + $this->isStarred = $isStarred; + } + + public function getIsStarred() + { + return $this->isStarred; + } + + public function setIsTrash($isTrash) + { + $this->isTrash = $isTrash; + } + + public function getIsTrash() + { + return $this->isTrash; + } + + public function setIsUnread($isUnread) + { + $this->isUnread = $isUnread; + } + + public function getIsUnread() + { + return $this->isUnread; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLabels($labels) + { + $this->labels = $labels; + } + + public function getLabels() + { + return $this->labels; + } +} diff --git a/oauth/Google/Service/Analytics.php b/oauth/Google/Service/Analytics.php new file mode 100644 index 0000000..45c3380 --- /dev/null +++ b/oauth/Google/Service/Analytics.php @@ -0,0 +1,10237 @@ + + * View and manage your Google Analytics data + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Analytics extends Google_Service +{ + /** View and manage your Google Analytics data. */ + const ANALYTICS = "https://www.googleapis.com/auth/analytics"; + /** Edit Google Analytics management entities. */ + const ANALYTICS_EDIT = "https://www.googleapis.com/auth/analytics.edit"; + /** Manage Google Analytics Account users by email address. */ + const ANALYTICS_MANAGE_USERS = "https://www.googleapis.com/auth/analytics.manage.users"; + /** Create a new Google Analytics account along with its default property and view. */ + const ANALYTICS_PROVISION = "https://www.googleapis.com/auth/analytics.provision"; + /** View your Google Analytics data. */ + const ANALYTICS_READONLY = "https://www.googleapis.com/auth/analytics.readonly"; + + public $data_ga; + public $data_mcf; + public $data_realtime; + public $management_accountSummaries; + public $management_accountUserLinks; + public $management_accounts; + public $management_customDataSources; + public $management_dailyUploads; + public $management_experiments; + public $management_filters; + public $management_goals; + public $management_profileFilterLinks; + public $management_profileUserLinks; + public $management_profiles; + public $management_segments; + public $management_unsampledReports; + public $management_uploads; + public $management_webPropertyAdWordsLinks; + public $management_webproperties; + public $management_webpropertyUserLinks; + public $metadata_columns; + public $provisioning; + + + /** + * Constructs the internal representation of the Analytics service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'analytics/v3/'; + $this->version = 'v3'; + $this->serviceName = 'analytics'; + + $this->data_ga = new Google_Service_Analytics_DataGa_Resource( + $this, + $this->serviceName, + 'ga', + array( + 'methods' => array( + 'get' => array( + 'path' => 'data/ga', + 'httpMethod' => 'GET', + 'parameters' => array( + 'ids' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'start-date' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'end-date' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'metrics' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'sort' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'dimensions' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'start-index' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'segment' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'samplingLevel' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'filters' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'output' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->data_mcf = new Google_Service_Analytics_DataMcf_Resource( + $this, + $this->serviceName, + 'mcf', + array( + 'methods' => array( + 'get' => array( + 'path' => 'data/mcf', + 'httpMethod' => 'GET', + 'parameters' => array( + 'ids' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'start-date' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'end-date' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'metrics' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'sort' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'dimensions' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'start-index' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'samplingLevel' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'filters' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->data_realtime = new Google_Service_Analytics_DataRealtime_Resource( + $this, + $this->serviceName, + 'realtime', + array( + 'methods' => array( + 'get' => array( + 'path' => 'data/realtime', + 'httpMethod' => 'GET', + 'parameters' => array( + 'ids' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'metrics' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'sort' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'dimensions' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'filters' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->management_accountSummaries = new Google_Service_Analytics_ManagementAccountSummaries_Resource( + $this, + $this->serviceName, + 'accountSummaries', + array( + 'methods' => array( + 'list' => array( + 'path' => 'management/accountSummaries', + 'httpMethod' => 'GET', + 'parameters' => array( + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'start-index' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->management_accountUserLinks = new Google_Service_Analytics_ManagementAccountUserLinks_Resource( + $this, + $this->serviceName, + 'accountUserLinks', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'management/accounts/{accountId}/entityUserLinks/{linkId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'linkId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'management/accounts/{accountId}/entityUserLinks', + 'httpMethod' => 'POST', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'management/accounts/{accountId}/entityUserLinks', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'start-index' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'update' => array( + 'path' => 'management/accounts/{accountId}/entityUserLinks/{linkId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'linkId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->management_accounts = new Google_Service_Analytics_ManagementAccounts_Resource( + $this, + $this->serviceName, + 'accounts', + array( + 'methods' => array( + 'list' => array( + 'path' => 'management/accounts', + 'httpMethod' => 'GET', + 'parameters' => array( + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'start-index' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->management_customDataSources = new Google_Service_Analytics_ManagementCustomDataSources_Resource( + $this, + $this->serviceName, + 'customDataSources', + array( + 'methods' => array( + 'list' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'start-index' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->management_dailyUploads = new Google_Service_Analytics_ManagementDailyUploads_Resource( + $this, + $this->serviceName, + 'dailyUploads', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/dailyUploads/{date}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customDataSourceId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'date' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'type' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/dailyUploads', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customDataSourceId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'start-date' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'end-date' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'start-index' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'upload' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/dailyUploads/{date}/uploads', + 'httpMethod' => 'POST', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customDataSourceId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'date' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'appendNumber' => array( + 'location' => 'query', + 'type' => 'integer', + 'required' => true, + ), + 'type' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'reset' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ), + ) + ) + ); + $this->management_experiments = new Google_Service_Analytics_ManagementExperiments_Resource( + $this, + $this->serviceName, + 'experiments', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments/{experimentId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'experimentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments/{experimentId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'experimentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments', + 'httpMethod' => 'POST', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'start-index' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments/{experimentId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'experimentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/experiments/{experimentId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'experimentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->management_filters = new Google_Service_Analytics_ManagementFilters_Resource( + $this, + $this->serviceName, + 'filters', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'management/accounts/{accountId}/filters/{filterId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filterId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'management/accounts/{accountId}/filters/{filterId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filterId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'management/accounts/{accountId}/filters', + 'httpMethod' => 'POST', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'management/accounts/{accountId}/filters', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'start-index' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'management/accounts/{accountId}/filters/{filterId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filterId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'management/accounts/{accountId}/filters/{filterId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filterId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->management_goals = new Google_Service_Analytics_ManagementGoals_Resource( + $this, + $this->serviceName, + 'goals', + array( + 'methods' => array( + 'get' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals/{goalId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'goalId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals', + 'httpMethod' => 'POST', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'start-index' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals/{goalId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'goalId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/goals/{goalId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'goalId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->management_profileFilterLinks = new Google_Service_Analytics_ManagementProfileFilterLinks_Resource( + $this, + $this->serviceName, + 'profileFilterLinks', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks/{linkId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'linkId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks/{linkId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'linkId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks', + 'httpMethod' => 'POST', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'start-index' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks/{linkId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'linkId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/profileFilterLinks/{linkId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'linkId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->management_profileUserLinks = new Google_Service_Analytics_ManagementProfileUserLinks_Resource( + $this, + $this->serviceName, + 'profileUserLinks', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/entityUserLinks/{linkId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'linkId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/entityUserLinks', + 'httpMethod' => 'POST', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/entityUserLinks', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'start-index' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'update' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/entityUserLinks/{linkId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'linkId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->management_profiles = new Google_Service_Analytics_ManagementProfiles_Resource( + $this, + $this->serviceName, + 'profiles', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles', + 'httpMethod' => 'POST', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'start-index' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->management_segments = new Google_Service_Analytics_ManagementSegments_Resource( + $this, + $this->serviceName, + 'segments', + array( + 'methods' => array( + 'list' => array( + 'path' => 'management/segments', + 'httpMethod' => 'GET', + 'parameters' => array( + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'start-index' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->management_unsampledReports = new Google_Service_Analytics_ManagementUnsampledReports_Resource( + $this, + $this->serviceName, + 'unsampledReports', + array( + 'methods' => array( + 'get' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/unsampledReports/{unsampledReportId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'unsampledReportId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/unsampledReports', + 'httpMethod' => 'POST', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/profiles/{profileId}/unsampledReports', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'start-index' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->management_uploads = new Google_Service_Analytics_ManagementUploads_Resource( + $this, + $this->serviceName, + 'uploads', + array( + 'methods' => array( + 'deleteUploadData' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/deleteUploadData', + 'httpMethod' => 'POST', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customDataSourceId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/uploads/{uploadId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customDataSourceId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'uploadId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/uploads', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customDataSourceId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'start-index' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'migrateDataImport' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/migrateDataImport', + 'httpMethod' => 'POST', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customDataSourceId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'uploadData' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/customDataSources/{customDataSourceId}/uploads', + 'httpMethod' => 'POST', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customDataSourceId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->management_webPropertyAdWordsLinks = new Google_Service_Analytics_ManagementWebPropertyAdWordsLinks_Resource( + $this, + $this->serviceName, + 'webPropertyAdWordsLinks', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks/{webPropertyAdWordsLinkId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyAdWordsLinkId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks/{webPropertyAdWordsLinkId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyAdWordsLinkId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks', + 'httpMethod' => 'POST', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'start-index' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks/{webPropertyAdWordsLinkId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyAdWordsLinkId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityAdWordsLinks/{webPropertyAdWordsLinkId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyAdWordsLinkId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->management_webproperties = new Google_Service_Analytics_ManagementWebproperties_Resource( + $this, + $this->serviceName, + 'webproperties', + array( + 'methods' => array( + 'get' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'management/accounts/{accountId}/webproperties', + 'httpMethod' => 'POST', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'management/accounts/{accountId}/webproperties', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'start-index' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->management_webpropertyUserLinks = new Google_Service_Analytics_ManagementWebpropertyUserLinks_Resource( + $this, + $this->serviceName, + 'webpropertyUserLinks', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityUserLinks/{linkId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'linkId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityUserLinks', + 'httpMethod' => 'POST', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityUserLinks', + 'httpMethod' => 'GET', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'start-index' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'update' => array( + 'path' => 'management/accounts/{accountId}/webproperties/{webPropertyId}/entityUserLinks/{linkId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'webPropertyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'linkId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->metadata_columns = new Google_Service_Analytics_MetadataColumns_Resource( + $this, + $this->serviceName, + 'columns', + array( + 'methods' => array( + 'list' => array( + 'path' => 'metadata/{reportType}/columns', + 'httpMethod' => 'GET', + 'parameters' => array( + 'reportType' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->provisioning = new Google_Service_Analytics_Provisioning_Resource( + $this, + $this->serviceName, + 'provisioning', + array( + 'methods' => array( + 'createAccountTicket' => array( + 'path' => 'provisioning/createAccountTicket', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + } +} + + +/** + * The "data" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $data = $analyticsService->data; + * + */ +class Google_Service_Analytics_Data_Resource extends Google_Service_Resource +{ + +} + +/** + * The "ga" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $ga = $analyticsService->ga; + * + */ +class Google_Service_Analytics_DataGa_Resource extends Google_Service_Resource +{ + + /** + * Returns Analytics data for a view (profile). (ga.get) + * + * @param string $ids + * Unique table ID for retrieving Analytics data. Table ID is of the form ga:XXXX, where XXXX is + * the Analytics view (profile) ID. + * @param string $startDate + * Start date for fetching Analytics data. Requests can specify a start date formatted as YYYY-MM- + * DD, or as a relative date (e.g., today, yesterday, or 7daysAgo). The default value is 7daysAgo. + * @param string $endDate + * End date for fetching Analytics data. Request can should specify an end date formatted as YYYY- + * MM-DD, or as a relative date (e.g., today, yesterday, or 7daysAgo). The default value is + * yesterday. + * @param string $metrics + * A comma-separated list of Analytics metrics. E.g., 'ga:sessions,ga:pageviews'. At least one + * metric must be specified. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of entries to include in this feed. + * @opt_param string sort + * A comma-separated list of dimensions or metrics that determine the sort order for Analytics + * data. + * @opt_param string dimensions + * A comma-separated list of Analytics dimensions. E.g., 'ga:browser,ga:city'. + * @opt_param int start-index + * An index of the first entity to retrieve. Use this parameter as a pagination mechanism along + * with the max-results parameter. + * @opt_param string segment + * An Analytics segment to be applied to data. + * @opt_param string samplingLevel + * The desired sampling level. + * @opt_param string filters + * A comma-separated list of dimension or metric filters to be applied to Analytics data. + * @opt_param string output + * The selected format for the response. Default format is JSON. + * @return Google_Service_Analytics_GaData + */ + public function get($ids, $startDate, $endDate, $metrics, $optParams = array()) + { + $params = array('ids' => $ids, 'start-date' => $startDate, 'end-date' => $endDate, 'metrics' => $metrics); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Analytics_GaData"); + } +} +/** + * The "mcf" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $mcf = $analyticsService->mcf; + * + */ +class Google_Service_Analytics_DataMcf_Resource extends Google_Service_Resource +{ + + /** + * Returns Analytics Multi-Channel Funnels data for a view (profile). (mcf.get) + * + * @param string $ids + * Unique table ID for retrieving Analytics data. Table ID is of the form ga:XXXX, where XXXX is + * the Analytics view (profile) ID. + * @param string $startDate + * Start date for fetching Analytics data. Requests can specify a start date formatted as YYYY-MM- + * DD, or as a relative date (e.g., today, yesterday, or 7daysAgo). The default value is 7daysAgo. + * @param string $endDate + * End date for fetching Analytics data. Requests can specify a start date formatted as YYYY-MM-DD, + * or as a relative date (e.g., today, yesterday, or 7daysAgo). The default value is 7daysAgo. + * @param string $metrics + * A comma-separated list of Multi-Channel Funnels metrics. E.g., + * 'mcf:totalConversions,mcf:totalConversionValue'. At least one metric must be specified. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of entries to include in this feed. + * @opt_param string sort + * A comma-separated list of dimensions or metrics that determine the sort order for the Analytics + * data. + * @opt_param string dimensions + * A comma-separated list of Multi-Channel Funnels dimensions. E.g., 'mcf:source,mcf:medium'. + * @opt_param int start-index + * An index of the first entity to retrieve. Use this parameter as a pagination mechanism along + * with the max-results parameter. + * @opt_param string samplingLevel + * The desired sampling level. + * @opt_param string filters + * A comma-separated list of dimension or metric filters to be applied to the Analytics data. + * @return Google_Service_Analytics_McfData + */ + public function get($ids, $startDate, $endDate, $metrics, $optParams = array()) + { + $params = array('ids' => $ids, 'start-date' => $startDate, 'end-date' => $endDate, 'metrics' => $metrics); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Analytics_McfData"); + } +} +/** + * The "realtime" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $realtime = $analyticsService->realtime; + * + */ +class Google_Service_Analytics_DataRealtime_Resource extends Google_Service_Resource +{ + + /** + * Returns real time data for a view (profile). (realtime.get) + * + * @param string $ids + * Unique table ID for retrieving real time data. Table ID is of the form ga:XXXX, where XXXX is + * the Analytics view (profile) ID. + * @param string $metrics + * A comma-separated list of real time metrics. E.g., 'rt:activeUsers'. At least one metric must be + * specified. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of entries to include in this feed. + * @opt_param string sort + * A comma-separated list of dimensions or metrics that determine the sort order for real time + * data. + * @opt_param string dimensions + * A comma-separated list of real time dimensions. E.g., 'rt:medium,rt:city'. + * @opt_param string filters + * A comma-separated list of dimension or metric filters to be applied to real time data. + * @return Google_Service_Analytics_RealtimeData + */ + public function get($ids, $metrics, $optParams = array()) + { + $params = array('ids' => $ids, 'metrics' => $metrics); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Analytics_RealtimeData"); + } +} + +/** + * The "management" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $management = $analyticsService->management; + * + */ +class Google_Service_Analytics_Management_Resource extends Google_Service_Resource +{ + +} + +/** + * The "accountSummaries" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $accountSummaries = $analyticsService->accountSummaries; + * + */ +class Google_Service_Analytics_ManagementAccountSummaries_Resource extends Google_Service_Resource +{ + + /** + * Lists account summaries (lightweight tree comprised of + * accounts/properties/profiles) to which the user has access. + * (accountSummaries.listManagementAccountSummaries) + * + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of filters to include in this response. + * @opt_param int start-index + * An index of the first entity to retrieve. Use this parameter as a pagination mechanism along + * with the max-results parameter. + * @return Google_Service_Analytics_AccountSummaries + */ + public function listManagementAccountSummaries($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Analytics_AccountSummaries"); + } +} +/** + * The "accountUserLinks" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $accountUserLinks = $analyticsService->accountUserLinks; + * + */ +class Google_Service_Analytics_ManagementAccountUserLinks_Resource extends Google_Service_Resource +{ + + /** + * Removes a user from the given account. (accountUserLinks.delete) + * + * @param string $accountId + * Account ID to delete the user link for. + * @param string $linkId + * Link ID to delete the user link for. + * @param array $optParams Optional parameters. + */ + public function delete($accountId, $linkId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'linkId' => $linkId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Adds a new user to the given account. (accountUserLinks.insert) + * + * @param string $accountId + * Account ID to create the user link for. + * @param Google_EntityUserLink $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_EntityUserLink + */ + public function insert($accountId, Google_Service_Analytics_EntityUserLink $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Analytics_EntityUserLink"); + } + /** + * Lists account-user links for a given account. + * (accountUserLinks.listManagementAccountUserLinks) + * + * @param string $accountId + * Account ID to retrieve the user links for. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of account-user links to include in this response. + * @opt_param int start-index + * An index of the first account-user link to retrieve. Use this parameter as a pagination + * mechanism along with the max-results parameter. + * @return Google_Service_Analytics_EntityUserLinks + */ + public function listManagementAccountUserLinks($accountId, $optParams = array()) + { + $params = array('accountId' => $accountId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Analytics_EntityUserLinks"); + } + /** + * Updates permissions for an existing user on the given account. + * (accountUserLinks.update) + * + * @param string $accountId + * Account ID to update the account-user link for. + * @param string $linkId + * Link ID to update the account-user link for. + * @param Google_EntityUserLink $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_EntityUserLink + */ + public function update($accountId, $linkId, Google_Service_Analytics_EntityUserLink $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'linkId' => $linkId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Analytics_EntityUserLink"); + } +} +/** + * The "accounts" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $accounts = $analyticsService->accounts; + * + */ +class Google_Service_Analytics_ManagementAccounts_Resource extends Google_Service_Resource +{ + + /** + * Lists all accounts to which the user has access. + * (accounts.listManagementAccounts) + * + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of accounts to include in this response. + * @opt_param int start-index + * An index of the first account to retrieve. Use this parameter as a pagination mechanism along + * with the max-results parameter. + * @return Google_Service_Analytics_Accounts + */ + public function listManagementAccounts($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Analytics_Accounts"); + } +} +/** + * The "customDataSources" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $customDataSources = $analyticsService->customDataSources; + * + */ +class Google_Service_Analytics_ManagementCustomDataSources_Resource extends Google_Service_Resource +{ + + /** + * List custom data sources to which the user has access. + * (customDataSources.listManagementCustomDataSources) + * + * @param string $accountId + * Account Id for the custom data sources to retrieve. + * @param string $webPropertyId + * Web property Id for the custom data sources to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of custom data sources to include in this response. + * @opt_param int start-index + * A 1-based index of the first custom data source to retrieve. Use this parameter as a pagination + * mechanism along with the max-results parameter. + * @return Google_Service_Analytics_CustomDataSources + */ + public function listManagementCustomDataSources($accountId, $webPropertyId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Analytics_CustomDataSources"); + } +} +/** + * The "dailyUploads" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $dailyUploads = $analyticsService->dailyUploads; + * + */ +class Google_Service_Analytics_ManagementDailyUploads_Resource extends Google_Service_Resource +{ + + /** + * Delete uploaded data for the given date. (dailyUploads.delete) + * + * @param string $accountId + * Account Id associated with daily upload delete. + * @param string $webPropertyId + * Web property Id associated with daily upload delete. + * @param string $customDataSourceId + * Custom data source Id associated with daily upload delete. + * @param string $date + * Date for which data is to be deleted. Date should be formatted as YYYY-MM-DD. + * @param string $type + * Type of data for this delete. + * @param array $optParams Optional parameters. + */ + public function delete($accountId, $webPropertyId, $customDataSourceId, $date, $type, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDataSourceId' => $customDataSourceId, 'date' => $date, 'type' => $type); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * List daily uploads to which the user has access. + * (dailyUploads.listManagementDailyUploads) + * + * @param string $accountId + * Account Id for the daily uploads to retrieve. + * @param string $webPropertyId + * Web property Id for the daily uploads to retrieve. + * @param string $customDataSourceId + * Custom data source Id for daily uploads to retrieve. + * @param string $startDate + * Start date of the form YYYY-MM-DD. + * @param string $endDate + * End date of the form YYYY-MM-DD. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of custom data sources to include in this response. + * @opt_param int start-index + * A 1-based index of the first daily upload to retrieve. Use this parameter as a pagination + * mechanism along with the max-results parameter. + * @return Google_Service_Analytics_DailyUploads + */ + public function listManagementDailyUploads($accountId, $webPropertyId, $customDataSourceId, $startDate, $endDate, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDataSourceId' => $customDataSourceId, 'start-date' => $startDate, 'end-date' => $endDate); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Analytics_DailyUploads"); + } + /** + * Update/Overwrite data for a custom data source. (dailyUploads.upload) + * + * @param string $accountId + * Account Id associated with daily upload. + * @param string $webPropertyId + * Web property Id associated with daily upload. + * @param string $customDataSourceId + * Custom data source Id to which the data being uploaded belongs. + * @param string $date + * Date for which data is uploaded. Date should be formatted as YYYY-MM-DD. + * @param int $appendNumber + * Append number for this upload indexed from 1. + * @param string $type + * Type of data for this upload. + * @param array $optParams Optional parameters. + * + * @opt_param bool reset + * Reset/Overwrite all previous appends for this date and start over with this file as the first + * upload. + * @return Google_Service_Analytics_DailyUploadAppend + */ + public function upload($accountId, $webPropertyId, $customDataSourceId, $date, $appendNumber, $type, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDataSourceId' => $customDataSourceId, 'date' => $date, 'appendNumber' => $appendNumber, 'type' => $type); + $params = array_merge($params, $optParams); + return $this->call('upload', array($params), "Google_Service_Analytics_DailyUploadAppend"); + } +} +/** + * The "experiments" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $experiments = $analyticsService->experiments; + * + */ +class Google_Service_Analytics_ManagementExperiments_Resource extends Google_Service_Resource +{ + + /** + * Delete an experiment. (experiments.delete) + * + * @param string $accountId + * Account ID to which the experiment belongs + * @param string $webPropertyId + * Web property ID to which the experiment belongs + * @param string $profileId + * View (Profile) ID to which the experiment belongs + * @param string $experimentId + * ID of the experiment to delete + * @param array $optParams Optional parameters. + */ + public function delete($accountId, $webPropertyId, $profileId, $experimentId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'experimentId' => $experimentId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Returns an experiment to which the user has access. (experiments.get) + * + * @param string $accountId + * Account ID to retrieve the experiment for. + * @param string $webPropertyId + * Web property ID to retrieve the experiment for. + * @param string $profileId + * View (Profile) ID to retrieve the experiment for. + * @param string $experimentId + * Experiment ID to retrieve the experiment for. + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Experiment + */ + public function get($accountId, $webPropertyId, $profileId, $experimentId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'experimentId' => $experimentId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Analytics_Experiment"); + } + /** + * Create a new experiment. (experiments.insert) + * + * @param string $accountId + * Account ID to create the experiment for. + * @param string $webPropertyId + * Web property ID to create the experiment for. + * @param string $profileId + * View (Profile) ID to create the experiment for. + * @param Google_Experiment $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Experiment + */ + public function insert($accountId, $webPropertyId, $profileId, Google_Service_Analytics_Experiment $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Analytics_Experiment"); + } + /** + * Lists experiments to which the user has access. + * (experiments.listManagementExperiments) + * + * @param string $accountId + * Account ID to retrieve experiments for. + * @param string $webPropertyId + * Web property ID to retrieve experiments for. + * @param string $profileId + * View (Profile) ID to retrieve experiments for. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of experiments to include in this response. + * @opt_param int start-index + * An index of the first experiment to retrieve. Use this parameter as a pagination mechanism along + * with the max-results parameter. + * @return Google_Service_Analytics_Experiments + */ + public function listManagementExperiments($accountId, $webPropertyId, $profileId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Analytics_Experiments"); + } + /** + * Update an existing experiment. This method supports patch semantics. + * (experiments.patch) + * + * @param string $accountId + * Account ID of the experiment to update. + * @param string $webPropertyId + * Web property ID of the experiment to update. + * @param string $profileId + * View (Profile) ID of the experiment to update. + * @param string $experimentId + * Experiment ID of the experiment to update. + * @param Google_Experiment $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Experiment + */ + public function patch($accountId, $webPropertyId, $profileId, $experimentId, Google_Service_Analytics_Experiment $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'experimentId' => $experimentId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Analytics_Experiment"); + } + /** + * Update an existing experiment. (experiments.update) + * + * @param string $accountId + * Account ID of the experiment to update. + * @param string $webPropertyId + * Web property ID of the experiment to update. + * @param string $profileId + * View (Profile) ID of the experiment to update. + * @param string $experimentId + * Experiment ID of the experiment to update. + * @param Google_Experiment $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Experiment + */ + public function update($accountId, $webPropertyId, $profileId, $experimentId, Google_Service_Analytics_Experiment $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'experimentId' => $experimentId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Analytics_Experiment"); + } +} +/** + * The "filters" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $filters = $analyticsService->filters; + * + */ +class Google_Service_Analytics_ManagementFilters_Resource extends Google_Service_Resource +{ + + /** + * Delete a filter. (filters.delete) + * + * @param string $accountId + * Account ID to delete the filter for. + * @param string $filterId + * ID of the filter to be deleted. + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Filter + */ + public function delete($accountId, $filterId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'filterId' => $filterId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Analytics_Filter"); + } + /** + * Returns a filters to which the user has access. (filters.get) + * + * @param string $accountId + * Account ID to retrieve filters for. + * @param string $filterId + * Filter ID to retrieve filters for. + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Filter + */ + public function get($accountId, $filterId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'filterId' => $filterId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Analytics_Filter"); + } + /** + * Create a new filter. (filters.insert) + * + * @param string $accountId + * Account ID to create filter for. + * @param Google_Filter $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Filter + */ + public function insert($accountId, Google_Service_Analytics_Filter $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Analytics_Filter"); + } + /** + * Lists all filters for an account (filters.listManagementFilters) + * + * @param string $accountId + * Account ID to retrieve filters for. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of filters to include in this response. + * @opt_param int start-index + * An index of the first entity to retrieve. Use this parameter as a pagination mechanism along + * with the max-results parameter. + * @return Google_Service_Analytics_Filters + */ + public function listManagementFilters($accountId, $optParams = array()) + { + $params = array('accountId' => $accountId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Analytics_Filters"); + } + /** + * Updates an existing filter. This method supports patch semantics. + * (filters.patch) + * + * @param string $accountId + * Account ID to which the filter belongs. + * @param string $filterId + * ID of the filter to be updated. + * @param Google_Filter $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Filter + */ + public function patch($accountId, $filterId, Google_Service_Analytics_Filter $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'filterId' => $filterId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Analytics_Filter"); + } + /** + * Updates an existing filter. (filters.update) + * + * @param string $accountId + * Account ID to which the filter belongs. + * @param string $filterId + * ID of the filter to be updated. + * @param Google_Filter $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Filter + */ + public function update($accountId, $filterId, Google_Service_Analytics_Filter $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'filterId' => $filterId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Analytics_Filter"); + } +} +/** + * The "goals" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $goals = $analyticsService->goals; + * + */ +class Google_Service_Analytics_ManagementGoals_Resource extends Google_Service_Resource +{ + + /** + * Gets a goal to which the user has access. (goals.get) + * + * @param string $accountId + * Account ID to retrieve the goal for. + * @param string $webPropertyId + * Web property ID to retrieve the goal for. + * @param string $profileId + * View (Profile) ID to retrieve the goal for. + * @param string $goalId + * Goal ID to retrieve the goal for. + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Goal + */ + public function get($accountId, $webPropertyId, $profileId, $goalId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'goalId' => $goalId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Analytics_Goal"); + } + /** + * Create a new goal. (goals.insert) + * + * @param string $accountId + * Account ID to create the goal for. + * @param string $webPropertyId + * Web property ID to create the goal for. + * @param string $profileId + * View (Profile) ID to create the goal for. + * @param Google_Goal $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Goal + */ + public function insert($accountId, $webPropertyId, $profileId, Google_Service_Analytics_Goal $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Analytics_Goal"); + } + /** + * Lists goals to which the user has access. (goals.listManagementGoals) + * + * @param string $accountId + * Account ID to retrieve goals for. Can either be a specific account ID or '~all', which refers to + * all the accounts that user has access to. + * @param string $webPropertyId + * Web property ID to retrieve goals for. Can either be a specific web property ID or '~all', which + * refers to all the web properties that user has access to. + * @param string $profileId + * View (Profile) ID to retrieve goals for. Can either be a specific view (profile) ID or '~all', + * which refers to all the views (profiles) that user has access to. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of goals to include in this response. + * @opt_param int start-index + * An index of the first goal to retrieve. Use this parameter as a pagination mechanism along with + * the max-results parameter. + * @return Google_Service_Analytics_Goals + */ + public function listManagementGoals($accountId, $webPropertyId, $profileId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Analytics_Goals"); + } + /** + * Updates an existing view (profile). This method supports patch semantics. + * (goals.patch) + * + * @param string $accountId + * Account ID to update the goal. + * @param string $webPropertyId + * Web property ID to update the goal. + * @param string $profileId + * View (Profile) ID to update the goal. + * @param string $goalId + * Index of the goal to be updated. + * @param Google_Goal $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Goal + */ + public function patch($accountId, $webPropertyId, $profileId, $goalId, Google_Service_Analytics_Goal $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'goalId' => $goalId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Analytics_Goal"); + } + /** + * Updates an existing view (profile). (goals.update) + * + * @param string $accountId + * Account ID to update the goal. + * @param string $webPropertyId + * Web property ID to update the goal. + * @param string $profileId + * View (Profile) ID to update the goal. + * @param string $goalId + * Index of the goal to be updated. + * @param Google_Goal $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Goal + */ + public function update($accountId, $webPropertyId, $profileId, $goalId, Google_Service_Analytics_Goal $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'goalId' => $goalId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Analytics_Goal"); + } +} +/** + * The "profileFilterLinks" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $profileFilterLinks = $analyticsService->profileFilterLinks; + * + */ +class Google_Service_Analytics_ManagementProfileFilterLinks_Resource extends Google_Service_Resource +{ + + /** + * Delete a profile filter link. (profileFilterLinks.delete) + * + * @param string $accountId + * Account ID to which the profile filter link belongs. + * @param string $webPropertyId + * Web property Id to which the profile filter link belongs. + * @param string $profileId + * Profile ID to which the filter link belongs. + * @param string $linkId + * ID of the profile filter link to delete. + * @param array $optParams Optional parameters. + */ + public function delete($accountId, $webPropertyId, $profileId, $linkId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'linkId' => $linkId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Returns a single profile filter link. (profileFilterLinks.get) + * + * @param string $accountId + * Account ID to retrieve profile filter link for. + * @param string $webPropertyId + * Web property Id to retrieve profile filter link for. + * @param string $profileId + * Profile ID to retrieve filter link for. + * @param string $linkId + * ID of the profile filter link. + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_ProfileFilterLink + */ + public function get($accountId, $webPropertyId, $profileId, $linkId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'linkId' => $linkId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Analytics_ProfileFilterLink"); + } + /** + * Create a new profile filter link. (profileFilterLinks.insert) + * + * @param string $accountId + * Account ID to create profile filter link for. + * @param string $webPropertyId + * Web property Id to create profile filter link for. + * @param string $profileId + * Profile ID to create filter link for. + * @param Google_ProfileFilterLink $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_ProfileFilterLink + */ + public function insert($accountId, $webPropertyId, $profileId, Google_Service_Analytics_ProfileFilterLink $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Analytics_ProfileFilterLink"); + } + /** + * Lists all profile filter links for a profile. + * (profileFilterLinks.listManagementProfileFilterLinks) + * + * @param string $accountId + * Account ID to retrieve profile filter links for. + * @param string $webPropertyId + * Web property Id for profile filter links for. Can either be a specific web property ID or + * '~all', which refers to all the web properties that user has access to. + * @param string $profileId + * Profile ID to retrieve filter links for. Can either be a specific profile ID or '~all', which + * refers to all the profiles that user has access to. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of profile filter links to include in this response. + * @opt_param int start-index + * An index of the first entity to retrieve. Use this parameter as a pagination mechanism along + * with the max-results parameter. + * @return Google_Service_Analytics_ProfileFilterLinks + */ + public function listManagementProfileFilterLinks($accountId, $webPropertyId, $profileId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Analytics_ProfileFilterLinks"); + } + /** + * Update an existing profile filter link. This method supports patch semantics. + * (profileFilterLinks.patch) + * + * @param string $accountId + * Account ID to which profile filter link belongs. + * @param string $webPropertyId + * Web property Id to which profile filter link belongs + * @param string $profileId + * Profile ID to which filter link belongs + * @param string $linkId + * ID of the profile filter link to be updated. + * @param Google_ProfileFilterLink $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_ProfileFilterLink + */ + public function patch($accountId, $webPropertyId, $profileId, $linkId, Google_Service_Analytics_ProfileFilterLink $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'linkId' => $linkId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Analytics_ProfileFilterLink"); + } + /** + * Update an existing profile filter link. (profileFilterLinks.update) + * + * @param string $accountId + * Account ID to which profile filter link belongs. + * @param string $webPropertyId + * Web property Id to which profile filter link belongs + * @param string $profileId + * Profile ID to which filter link belongs + * @param string $linkId + * ID of the profile filter link to be updated. + * @param Google_ProfileFilterLink $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_ProfileFilterLink + */ + public function update($accountId, $webPropertyId, $profileId, $linkId, Google_Service_Analytics_ProfileFilterLink $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'linkId' => $linkId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Analytics_ProfileFilterLink"); + } +} +/** + * The "profileUserLinks" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $profileUserLinks = $analyticsService->profileUserLinks; + * + */ +class Google_Service_Analytics_ManagementProfileUserLinks_Resource extends Google_Service_Resource +{ + + /** + * Removes a user from the given view (profile). (profileUserLinks.delete) + * + * @param string $accountId + * Account ID to delete the user link for. + * @param string $webPropertyId + * Web Property ID to delete the user link for. + * @param string $profileId + * View (Profile) ID to delete the user link for. + * @param string $linkId + * Link ID to delete the user link for. + * @param array $optParams Optional parameters. + */ + public function delete($accountId, $webPropertyId, $profileId, $linkId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'linkId' => $linkId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Adds a new user to the given view (profile). (profileUserLinks.insert) + * + * @param string $accountId + * Account ID to create the user link for. + * @param string $webPropertyId + * Web Property ID to create the user link for. + * @param string $profileId + * View (Profile) ID to create the user link for. + * @param Google_EntityUserLink $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_EntityUserLink + */ + public function insert($accountId, $webPropertyId, $profileId, Google_Service_Analytics_EntityUserLink $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Analytics_EntityUserLink"); + } + /** + * Lists profile-user links for a given view (profile). + * (profileUserLinks.listManagementProfileUserLinks) + * + * @param string $accountId + * Account ID which the given view (profile) belongs to. + * @param string $webPropertyId + * Web Property ID which the given view (profile) belongs to. Can either be a specific web property + * ID or '~all', which refers to all the web properties that user has access to. + * @param string $profileId + * View (Profile) ID to retrieve the profile-user links for. Can either be a specific profile ID or + * '~all', which refers to all the profiles that user has access to. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of profile-user links to include in this response. + * @opt_param int start-index + * An index of the first profile-user link to retrieve. Use this parameter as a pagination + * mechanism along with the max-results parameter. + * @return Google_Service_Analytics_EntityUserLinks + */ + public function listManagementProfileUserLinks($accountId, $webPropertyId, $profileId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Analytics_EntityUserLinks"); + } + /** + * Updates permissions for an existing user on the given view (profile). + * (profileUserLinks.update) + * + * @param string $accountId + * Account ID to update the user link for. + * @param string $webPropertyId + * Web Property ID to update the user link for. + * @param string $profileId + * View (Profile ID) to update the user link for. + * @param string $linkId + * Link ID to update the user link for. + * @param Google_EntityUserLink $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_EntityUserLink + */ + public function update($accountId, $webPropertyId, $profileId, $linkId, Google_Service_Analytics_EntityUserLink $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'linkId' => $linkId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Analytics_EntityUserLink"); + } +} +/** + * The "profiles" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $profiles = $analyticsService->profiles; + * + */ +class Google_Service_Analytics_ManagementProfiles_Resource extends Google_Service_Resource +{ + + /** + * Deletes a view (profile). (profiles.delete) + * + * @param string $accountId + * Account ID to delete the view (profile) for. + * @param string $webPropertyId + * Web property ID to delete the view (profile) for. + * @param string $profileId + * ID of the view (profile) to be deleted. + * @param array $optParams Optional parameters. + */ + public function delete($accountId, $webPropertyId, $profileId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets a view (profile) to which the user has access. (profiles.get) + * + * @param string $accountId + * Account ID to retrieve the goal for. + * @param string $webPropertyId + * Web property ID to retrieve the goal for. + * @param string $profileId + * View (Profile) ID to retrieve the goal for. + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Profile + */ + public function get($accountId, $webPropertyId, $profileId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Analytics_Profile"); + } + /** + * Create a new view (profile). (profiles.insert) + * + * @param string $accountId + * Account ID to create the view (profile) for. + * @param string $webPropertyId + * Web property ID to create the view (profile) for. + * @param Google_Profile $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Profile + */ + public function insert($accountId, $webPropertyId, Google_Service_Analytics_Profile $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Analytics_Profile"); + } + /** + * Lists views (profiles) to which the user has access. + * (profiles.listManagementProfiles) + * + * @param string $accountId + * Account ID for the view (profiles) to retrieve. Can either be a specific account ID or '~all', + * which refers to all the accounts to which the user has access. + * @param string $webPropertyId + * Web property ID for the views (profiles) to retrieve. Can either be a specific web property ID + * or '~all', which refers to all the web properties to which the user has access. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of views (profiles) to include in this response. + * @opt_param int start-index + * An index of the first entity to retrieve. Use this parameter as a pagination mechanism along + * with the max-results parameter. + * @return Google_Service_Analytics_Profiles + */ + public function listManagementProfiles($accountId, $webPropertyId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Analytics_Profiles"); + } + /** + * Updates an existing view (profile). This method supports patch semantics. + * (profiles.patch) + * + * @param string $accountId + * Account ID to which the view (profile) belongs + * @param string $webPropertyId + * Web property ID to which the view (profile) belongs + * @param string $profileId + * ID of the view (profile) to be updated. + * @param Google_Profile $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Profile + */ + public function patch($accountId, $webPropertyId, $profileId, Google_Service_Analytics_Profile $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Analytics_Profile"); + } + /** + * Updates an existing view (profile). (profiles.update) + * + * @param string $accountId + * Account ID to which the view (profile) belongs + * @param string $webPropertyId + * Web property ID to which the view (profile) belongs + * @param string $profileId + * ID of the view (profile) to be updated. + * @param Google_Profile $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Profile + */ + public function update($accountId, $webPropertyId, $profileId, Google_Service_Analytics_Profile $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Analytics_Profile"); + } +} +/** + * The "segments" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $segments = $analyticsService->segments; + * + */ +class Google_Service_Analytics_ManagementSegments_Resource extends Google_Service_Resource +{ + + /** + * Lists segments to which the user has access. + * (segments.listManagementSegments) + * + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of segments to include in this response. + * @opt_param int start-index + * An index of the first segment to retrieve. Use this parameter as a pagination mechanism along + * with the max-results parameter. + * @return Google_Service_Analytics_Segments + */ + public function listManagementSegments($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Analytics_Segments"); + } +} +/** + * The "unsampledReports" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $unsampledReports = $analyticsService->unsampledReports; + * + */ +class Google_Service_Analytics_ManagementUnsampledReports_Resource extends Google_Service_Resource +{ + + /** + * Returns a single unsampled report. (unsampledReports.get) + * + * @param string $accountId + * Account ID to retrieve unsampled report for. + * @param string $webPropertyId + * Web property ID to retrieve unsampled reports for. + * @param string $profileId + * View (Profile) ID to retrieve unsampled report for. + * @param string $unsampledReportId + * ID of the unsampled report to retrieve. + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_UnsampledReport + */ + public function get($accountId, $webPropertyId, $profileId, $unsampledReportId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'unsampledReportId' => $unsampledReportId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Analytics_UnsampledReport"); + } + /** + * Create a new unsampled report. (unsampledReports.insert) + * + * @param string $accountId + * Account ID to create the unsampled report for. + * @param string $webPropertyId + * Web property ID to create the unsampled report for. + * @param string $profileId + * View (Profile) ID to create the unsampled report for. + * @param Google_UnsampledReport $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_UnsampledReport + */ + public function insert($accountId, $webPropertyId, $profileId, Google_Service_Analytics_UnsampledReport $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Analytics_UnsampledReport"); + } + /** + * Lists unsampled reports to which the user has access. + * (unsampledReports.listManagementUnsampledReports) + * + * @param string $accountId + * Account ID to retrieve unsampled reports for. Must be a specific account ID, ~all is not + * supported. + * @param string $webPropertyId + * Web property ID to retrieve unsampled reports for. Must be a specific web property ID, ~all is + * not supported. + * @param string $profileId + * View (Profile) ID to retrieve unsampled reports for. Must be a specific view (profile) ID, ~all + * is not supported. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of unsampled reports to include in this response. + * @opt_param int start-index + * An index of the first unsampled report to retrieve. Use this parameter as a pagination mechanism + * along with the max-results parameter. + * @return Google_Service_Analytics_UnsampledReports + */ + public function listManagementUnsampledReports($accountId, $webPropertyId, $profileId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'profileId' => $profileId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Analytics_UnsampledReports"); + } +} +/** + * The "uploads" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $uploads = $analyticsService->uploads; + * + */ +class Google_Service_Analytics_ManagementUploads_Resource extends Google_Service_Resource +{ + + /** + * Delete data associated with a previous upload. (uploads.deleteUploadData) + * + * @param string $accountId + * Account Id for the uploads to be deleted. + * @param string $webPropertyId + * Web property Id for the uploads to be deleted. + * @param string $customDataSourceId + * Custom data source Id for the uploads to be deleted. + * @param Google_AnalyticsDataimportDeleteUploadDataRequest $postBody + * @param array $optParams Optional parameters. + */ + public function deleteUploadData($accountId, $webPropertyId, $customDataSourceId, Google_Service_Analytics_AnalyticsDataimportDeleteUploadDataRequest $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDataSourceId' => $customDataSourceId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('deleteUploadData', array($params)); + } + /** + * List uploads to which the user has access. (uploads.get) + * + * @param string $accountId + * Account Id for the upload to retrieve. + * @param string $webPropertyId + * Web property Id for the upload to retrieve. + * @param string $customDataSourceId + * Custom data source Id for upload to retrieve. + * @param string $uploadId + * Upload Id to retrieve. + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Upload + */ + public function get($accountId, $webPropertyId, $customDataSourceId, $uploadId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDataSourceId' => $customDataSourceId, 'uploadId' => $uploadId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Analytics_Upload"); + } + /** + * List uploads to which the user has access. (uploads.listManagementUploads) + * + * @param string $accountId + * Account Id for the uploads to retrieve. + * @param string $webPropertyId + * Web property Id for the uploads to retrieve. + * @param string $customDataSourceId + * Custom data source Id for uploads to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of uploads to include in this response. + * @opt_param int start-index + * A 1-based index of the first upload to retrieve. Use this parameter as a pagination mechanism + * along with the max-results parameter. + * @return Google_Service_Analytics_Uploads + */ + public function listManagementUploads($accountId, $webPropertyId, $customDataSourceId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDataSourceId' => $customDataSourceId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Analytics_Uploads"); + } + /** + * Migrate custom data source and data imports to latest version. + * (uploads.migrateDataImport) + * + * @param string $accountId + * Account Id for migration. + * @param string $webPropertyId + * Web property Id for migration. + * @param string $customDataSourceId + * Custom data source Id for migration. + * @param array $optParams Optional parameters. + */ + public function migrateDataImport($accountId, $webPropertyId, $customDataSourceId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDataSourceId' => $customDataSourceId); + $params = array_merge($params, $optParams); + return $this->call('migrateDataImport', array($params)); + } + /** + * Upload data for a custom data source. (uploads.uploadData) + * + * @param string $accountId + * Account Id associated with the upload. + * @param string $webPropertyId + * Web property UA-string associated with the upload. + * @param string $customDataSourceId + * Custom data source Id to which the data being uploaded belongs. + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Upload + */ + public function uploadData($accountId, $webPropertyId, $customDataSourceId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'customDataSourceId' => $customDataSourceId); + $params = array_merge($params, $optParams); + return $this->call('uploadData', array($params), "Google_Service_Analytics_Upload"); + } +} +/** + * The "webPropertyAdWordsLinks" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $webPropertyAdWordsLinks = $analyticsService->webPropertyAdWordsLinks; + * + */ +class Google_Service_Analytics_ManagementWebPropertyAdWordsLinks_Resource extends Google_Service_Resource +{ + + /** + * Deletes a web property-AdWords link. (webPropertyAdWordsLinks.delete) + * + * @param string $accountId + * ID of the account which the given web property belongs to. + * @param string $webPropertyId + * Web property ID to delete the AdWords link for. + * @param string $webPropertyAdWordsLinkId + * Web property AdWords link ID. + * @param array $optParams Optional parameters. + */ + public function delete($accountId, $webPropertyId, $webPropertyAdWordsLinkId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'webPropertyAdWordsLinkId' => $webPropertyAdWordsLinkId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Returns a web property-AdWords link to which the user has access. + * (webPropertyAdWordsLinks.get) + * + * @param string $accountId + * ID of the account which the given web property belongs to. + * @param string $webPropertyId + * Web property ID to retrieve the AdWords link for. + * @param string $webPropertyAdWordsLinkId + * Web property-AdWords link ID. + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_EntityAdWordsLink + */ + public function get($accountId, $webPropertyId, $webPropertyAdWordsLinkId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'webPropertyAdWordsLinkId' => $webPropertyAdWordsLinkId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Analytics_EntityAdWordsLink"); + } + /** + * Creates a webProperty-AdWords link. (webPropertyAdWordsLinks.insert) + * + * @param string $accountId + * ID of the Google Analytics account to create the link for. + * @param string $webPropertyId + * Web property ID to create the link for. + * @param Google_EntityAdWordsLink $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_EntityAdWordsLink + */ + public function insert($accountId, $webPropertyId, Google_Service_Analytics_EntityAdWordsLink $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Analytics_EntityAdWordsLink"); + } + /** + * Lists webProperty-AdWords links for a given web property. + * (webPropertyAdWordsLinks.listManagementWebPropertyAdWordsLinks) + * + * @param string $accountId + * ID of the account which the given web property belongs to. + * @param string $webPropertyId + * Web property ID to retrieve the AdWords links for. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of webProperty-AdWords links to include in this response. + * @opt_param int start-index + * An index of the first webProperty-AdWords link to retrieve. Use this parameter as a pagination + * mechanism along with the max-results parameter. + * @return Google_Service_Analytics_EntityAdWordsLinks + */ + public function listManagementWebPropertyAdWordsLinks($accountId, $webPropertyId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Analytics_EntityAdWordsLinks"); + } + /** + * Updates an existing webProperty-AdWords link. This method supports patch + * semantics. (webPropertyAdWordsLinks.patch) + * + * @param string $accountId + * ID of the account which the given web property belongs to. + * @param string $webPropertyId + * Web property ID to retrieve the AdWords link for. + * @param string $webPropertyAdWordsLinkId + * Web property-AdWords link ID. + * @param Google_EntityAdWordsLink $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_EntityAdWordsLink + */ + public function patch($accountId, $webPropertyId, $webPropertyAdWordsLinkId, Google_Service_Analytics_EntityAdWordsLink $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'webPropertyAdWordsLinkId' => $webPropertyAdWordsLinkId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Analytics_EntityAdWordsLink"); + } + /** + * Updates an existing webProperty-AdWords link. + * (webPropertyAdWordsLinks.update) + * + * @param string $accountId + * ID of the account which the given web property belongs to. + * @param string $webPropertyId + * Web property ID to retrieve the AdWords link for. + * @param string $webPropertyAdWordsLinkId + * Web property-AdWords link ID. + * @param Google_EntityAdWordsLink $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_EntityAdWordsLink + */ + public function update($accountId, $webPropertyId, $webPropertyAdWordsLinkId, Google_Service_Analytics_EntityAdWordsLink $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'webPropertyAdWordsLinkId' => $webPropertyAdWordsLinkId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Analytics_EntityAdWordsLink"); + } +} +/** + * The "webproperties" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $webproperties = $analyticsService->webproperties; + * + */ +class Google_Service_Analytics_ManagementWebproperties_Resource extends Google_Service_Resource +{ + + /** + * Gets a web property to which the user has access. (webproperties.get) + * + * @param string $accountId + * Account ID to retrieve the web property for. + * @param string $webPropertyId + * ID to retrieve the web property for. + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Webproperty + */ + public function get($accountId, $webPropertyId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Analytics_Webproperty"); + } + /** + * Create a new property if the account has fewer than 20 properties. Web + * properties are visible in the Google Analytics interface only if they have at + * least one profile. (webproperties.insert) + * + * @param string $accountId + * Account ID to create the web property for. + * @param Google_Webproperty $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Webproperty + */ + public function insert($accountId, Google_Service_Analytics_Webproperty $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Analytics_Webproperty"); + } + /** + * Lists web properties to which the user has access. + * (webproperties.listManagementWebproperties) + * + * @param string $accountId + * Account ID to retrieve web properties for. Can either be a specific account ID or '~all', which + * refers to all the accounts that user has access to. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of web properties to include in this response. + * @opt_param int start-index + * An index of the first entity to retrieve. Use this parameter as a pagination mechanism along + * with the max-results parameter. + * @return Google_Service_Analytics_Webproperties + */ + public function listManagementWebproperties($accountId, $optParams = array()) + { + $params = array('accountId' => $accountId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Analytics_Webproperties"); + } + /** + * Updates an existing web property. This method supports patch semantics. + * (webproperties.patch) + * + * @param string $accountId + * Account ID to which the web property belongs + * @param string $webPropertyId + * Web property ID + * @param Google_Webproperty $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Webproperty + */ + public function patch($accountId, $webPropertyId, Google_Service_Analytics_Webproperty $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Analytics_Webproperty"); + } + /** + * Updates an existing web property. (webproperties.update) + * + * @param string $accountId + * Account ID to which the web property belongs + * @param string $webPropertyId + * Web property ID + * @param Google_Webproperty $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Webproperty + */ + public function update($accountId, $webPropertyId, Google_Service_Analytics_Webproperty $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Analytics_Webproperty"); + } +} +/** + * The "webpropertyUserLinks" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $webpropertyUserLinks = $analyticsService->webpropertyUserLinks; + * + */ +class Google_Service_Analytics_ManagementWebpropertyUserLinks_Resource extends Google_Service_Resource +{ + + /** + * Removes a user from the given web property. (webpropertyUserLinks.delete) + * + * @param string $accountId + * Account ID to delete the user link for. + * @param string $webPropertyId + * Web Property ID to delete the user link for. + * @param string $linkId + * Link ID to delete the user link for. + * @param array $optParams Optional parameters. + */ + public function delete($accountId, $webPropertyId, $linkId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'linkId' => $linkId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Adds a new user to the given web property. (webpropertyUserLinks.insert) + * + * @param string $accountId + * Account ID to create the user link for. + * @param string $webPropertyId + * Web Property ID to create the user link for. + * @param Google_EntityUserLink $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_EntityUserLink + */ + public function insert($accountId, $webPropertyId, Google_Service_Analytics_EntityUserLink $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Analytics_EntityUserLink"); + } + /** + * Lists webProperty-user links for a given web property. + * (webpropertyUserLinks.listManagementWebpropertyUserLinks) + * + * @param string $accountId + * Account ID which the given web property belongs to. + * @param string $webPropertyId + * Web Property ID for the webProperty-user links to retrieve. Can either be a specific web + * property ID or '~all', which refers to all the web properties that user has access to. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of webProperty-user Links to include in this response. + * @opt_param int start-index + * An index of the first webProperty-user link to retrieve. Use this parameter as a pagination + * mechanism along with the max-results parameter. + * @return Google_Service_Analytics_EntityUserLinks + */ + public function listManagementWebpropertyUserLinks($accountId, $webPropertyId, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Analytics_EntityUserLinks"); + } + /** + * Updates permissions for an existing user on the given web property. + * (webpropertyUserLinks.update) + * + * @param string $accountId + * Account ID to update the account-user link for. + * @param string $webPropertyId + * Web property ID to update the account-user link for. + * @param string $linkId + * Link ID to update the account-user link for. + * @param Google_EntityUserLink $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_EntityUserLink + */ + public function update($accountId, $webPropertyId, $linkId, Google_Service_Analytics_EntityUserLink $postBody, $optParams = array()) + { + $params = array('accountId' => $accountId, 'webPropertyId' => $webPropertyId, 'linkId' => $linkId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Analytics_EntityUserLink"); + } +} + +/** + * The "metadata" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $metadata = $analyticsService->metadata; + * + */ +class Google_Service_Analytics_Metadata_Resource extends Google_Service_Resource +{ + +} + +/** + * The "columns" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $columns = $analyticsService->columns; + * + */ +class Google_Service_Analytics_MetadataColumns_Resource extends Google_Service_Resource +{ + + /** + * Lists all columns for a report type (columns.listMetadataColumns) + * + * @param string $reportType + * Report type. Allowed Values: 'ga'. Where 'ga' corresponds to the Core Reporting API + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_Columns + */ + public function listMetadataColumns($reportType, $optParams = array()) + { + $params = array('reportType' => $reportType); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Analytics_Columns"); + } +} + +/** + * The "provisioning" collection of methods. + * Typical usage is: + * + * $analyticsService = new Google_Service_Analytics(...); + * $provisioning = $analyticsService->provisioning; + * + */ +class Google_Service_Analytics_Provisioning_Resource extends Google_Service_Resource +{ + + /** + * Creates an account ticket. (provisioning.createAccountTicket) + * + * @param Google_AccountTicket $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Analytics_AccountTicket + */ + public function createAccountTicket(Google_Service_Analytics_AccountTicket $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('createAccountTicket', array($params), "Google_Service_Analytics_AccountTicket"); + } +} + + + + +class Google_Service_Analytics_Account extends Google_Model +{ + protected $childLinkType = 'Google_Service_Analytics_AccountChildLink'; + protected $childLinkDataType = ''; + public $created; + public $id; + public $kind; + public $name; + protected $permissionsType = 'Google_Service_Analytics_AccountPermissions'; + protected $permissionsDataType = ''; + public $selfLink; + public $updated; + + public function setChildLink(Google_Service_Analytics_AccountChildLink $childLink) + { + $this->childLink = $childLink; + } + + public function getChildLink() + { + return $this->childLink; + } + + public function setCreated($created) + { + $this->created = $created; + } + + public function getCreated() + { + return $this->created; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPermissions(Google_Service_Analytics_AccountPermissions $permissions) + { + $this->permissions = $permissions; + } + + public function getPermissions() + { + return $this->permissions; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } +} + +class Google_Service_Analytics_AccountChildLink extends Google_Model +{ + public $href; + public $type; + + public function setHref($href) + { + $this->href = $href; + } + + public function getHref() + { + return $this->href; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Analytics_AccountPermissions extends Google_Collection +{ + public $effective; + + public function setEffective($effective) + { + $this->effective = $effective; + } + + public function getEffective() + { + return $this->effective; + } +} + +class Google_Service_Analytics_AccountRef extends Google_Model +{ + public $href; + public $id; + public $kind; + public $name; + + public function setHref($href) + { + $this->href = $href; + } + + public function getHref() + { + return $this->href; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_Analytics_AccountSummaries extends Google_Collection +{ + protected $itemsType = 'Google_Service_Analytics_AccountSummary'; + protected $itemsDataType = 'array'; + public $itemsPerPage; + public $kind; + public $nextLink; + public $previousLink; + public $startIndex; + public $totalResults; + public $username; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + + public function getPreviousLink() + { + return $this->previousLink; + } + + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + + public function getStartIndex() + { + return $this->startIndex; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } + + public function setUsername($username) + { + $this->username = $username; + } + + public function getUsername() + { + return $this->username; + } +} + +class Google_Service_Analytics_AccountSummary extends Google_Collection +{ + public $id; + public $kind; + public $name; + protected $webPropertiesType = 'Google_Service_Analytics_WebPropertySummary'; + protected $webPropertiesDataType = 'array'; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setWebProperties($webProperties) + { + $this->webProperties = $webProperties; + } + + public function getWebProperties() + { + return $this->webProperties; + } +} + +class Google_Service_Analytics_AccountTicket extends Google_Model +{ + protected $accountType = 'Google_Service_Analytics_Account'; + protected $accountDataType = ''; + public $id; + public $kind; + protected $profileType = 'Google_Service_Analytics_Profile'; + protected $profileDataType = ''; + public $redirectUri; + protected $webpropertyType = 'Google_Service_Analytics_Webproperty'; + protected $webpropertyDataType = ''; + + public function setAccount(Google_Service_Analytics_Account $account) + { + $this->account = $account; + } + + public function getAccount() + { + return $this->account; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setProfile(Google_Service_Analytics_Profile $profile) + { + $this->profile = $profile; + } + + public function getProfile() + { + return $this->profile; + } + + public function setRedirectUri($redirectUri) + { + $this->redirectUri = $redirectUri; + } + + public function getRedirectUri() + { + return $this->redirectUri; + } + + public function setWebproperty(Google_Service_Analytics_Webproperty $webproperty) + { + $this->webproperty = $webproperty; + } + + public function getWebproperty() + { + return $this->webproperty; + } +} + +class Google_Service_Analytics_Accounts extends Google_Collection +{ + protected $itemsType = 'Google_Service_Analytics_Account'; + protected $itemsDataType = 'array'; + public $itemsPerPage; + public $kind; + public $nextLink; + public $previousLink; + public $startIndex; + public $totalResults; + public $username; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + + public function getPreviousLink() + { + return $this->previousLink; + } + + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + + public function getStartIndex() + { + return $this->startIndex; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } + + public function setUsername($username) + { + $this->username = $username; + } + + public function getUsername() + { + return $this->username; + } +} + +class Google_Service_Analytics_AdWordsAccount extends Google_Model +{ + public $autoTaggingEnabled; + public $customerId; + public $kind; + + public function setAutoTaggingEnabled($autoTaggingEnabled) + { + $this->autoTaggingEnabled = $autoTaggingEnabled; + } + + public function getAutoTaggingEnabled() + { + return $this->autoTaggingEnabled; + } + + public function setCustomerId($customerId) + { + $this->customerId = $customerId; + } + + public function getCustomerId() + { + return $this->customerId; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Analytics_AnalyticsDataimportDeleteUploadDataRequest extends Google_Collection +{ + public $customDataImportUids; + + public function setCustomDataImportUids($customDataImportUids) + { + $this->customDataImportUids = $customDataImportUids; + } + + public function getCustomDataImportUids() + { + return $this->customDataImportUids; + } +} + +class Google_Service_Analytics_Column extends Google_Model +{ + public $attributes; + public $id; + public $kind; + + public function setAttributes($attributes) + { + $this->attributes = $attributes; + } + + public function getAttributes() + { + return $this->attributes; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Analytics_ColumnAttributes extends Google_Model +{ + +} + +class Google_Service_Analytics_Columns extends Google_Collection +{ + public $attributeNames; + public $etag; + protected $itemsType = 'Google_Service_Analytics_Column'; + protected $itemsDataType = 'array'; + public $kind; + public $totalResults; + + public function setAttributeNames($attributeNames) + { + $this->attributeNames = $attributeNames; + } + + public function getAttributeNames() + { + return $this->attributeNames; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } +} + +class Google_Service_Analytics_CustomDataSource extends Google_Collection +{ + public $accountId; + protected $childLinkType = 'Google_Service_Analytics_CustomDataSourceChildLink'; + protected $childLinkDataType = ''; + public $created; + public $description; + public $id; + public $importBehavior; + public $kind; + public $name; + protected $parentLinkType = 'Google_Service_Analytics_CustomDataSourceParentLink'; + protected $parentLinkDataType = ''; + public $profilesLinked; + public $selfLink; + public $type; + public $updated; + public $uploadType; + public $webPropertyId; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setChildLink(Google_Service_Analytics_CustomDataSourceChildLink $childLink) + { + $this->childLink = $childLink; + } + + public function getChildLink() + { + return $this->childLink; + } + + public function setCreated($created) + { + $this->created = $created; + } + + public function getCreated() + { + return $this->created; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImportBehavior($importBehavior) + { + $this->importBehavior = $importBehavior; + } + + public function getImportBehavior() + { + return $this->importBehavior; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setParentLink(Google_Service_Analytics_CustomDataSourceParentLink $parentLink) + { + $this->parentLink = $parentLink; + } + + public function getParentLink() + { + return $this->parentLink; + } + + public function setProfilesLinked($profilesLinked) + { + $this->profilesLinked = $profilesLinked; + } + + public function getProfilesLinked() + { + return $this->profilesLinked; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setUploadType($uploadType) + { + $this->uploadType = $uploadType; + } + + public function getUploadType() + { + return $this->uploadType; + } + + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} + +class Google_Service_Analytics_CustomDataSourceChildLink extends Google_Model +{ + public $href; + public $type; + + public function setHref($href) + { + $this->href = $href; + } + + public function getHref() + { + return $this->href; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Analytics_CustomDataSourceParentLink extends Google_Model +{ + public $href; + public $type; + + public function setHref($href) + { + $this->href = $href; + } + + public function getHref() + { + return $this->href; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Analytics_CustomDataSources extends Google_Collection +{ + protected $itemsType = 'Google_Service_Analytics_CustomDataSource'; + protected $itemsDataType = 'array'; + public $itemsPerPage; + public $kind; + public $nextLink; + public $previousLink; + public $startIndex; + public $totalResults; + public $username; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + + public function getPreviousLink() + { + return $this->previousLink; + } + + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + + public function getStartIndex() + { + return $this->startIndex; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } + + public function setUsername($username) + { + $this->username = $username; + } + + public function getUsername() + { + return $this->username; + } +} + +class Google_Service_Analytics_DailyUpload extends Google_Collection +{ + public $accountId; + public $appendCount; + public $createdTime; + public $customDataSourceId; + public $date; + public $kind; + public $modifiedTime; + protected $parentLinkType = 'Google_Service_Analytics_DailyUploadParentLink'; + protected $parentLinkDataType = ''; + protected $recentChangesType = 'Google_Service_Analytics_DailyUploadRecentChanges'; + protected $recentChangesDataType = 'array'; + public $selfLink; + public $webPropertyId; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setAppendCount($appendCount) + { + $this->appendCount = $appendCount; + } + + public function getAppendCount() + { + return $this->appendCount; + } + + public function setCreatedTime($createdTime) + { + $this->createdTime = $createdTime; + } + + public function getCreatedTime() + { + return $this->createdTime; + } + + public function setCustomDataSourceId($customDataSourceId) + { + $this->customDataSourceId = $customDataSourceId; + } + + public function getCustomDataSourceId() + { + return $this->customDataSourceId; + } + + public function setDate($date) + { + $this->date = $date; + } + + public function getDate() + { + return $this->date; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setModifiedTime($modifiedTime) + { + $this->modifiedTime = $modifiedTime; + } + + public function getModifiedTime() + { + return $this->modifiedTime; + } + + public function setParentLink(Google_Service_Analytics_DailyUploadParentLink $parentLink) + { + $this->parentLink = $parentLink; + } + + public function getParentLink() + { + return $this->parentLink; + } + + public function setRecentChanges($recentChanges) + { + $this->recentChanges = $recentChanges; + } + + public function getRecentChanges() + { + return $this->recentChanges; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} + +class Google_Service_Analytics_DailyUploadAppend extends Google_Model +{ + public $accountId; + public $appendNumber; + public $customDataSourceId; + public $date; + public $kind; + public $nextAppendLink; + public $webPropertyId; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setAppendNumber($appendNumber) + { + $this->appendNumber = $appendNumber; + } + + public function getAppendNumber() + { + return $this->appendNumber; + } + + public function setCustomDataSourceId($customDataSourceId) + { + $this->customDataSourceId = $customDataSourceId; + } + + public function getCustomDataSourceId() + { + return $this->customDataSourceId; + } + + public function setDate($date) + { + $this->date = $date; + } + + public function getDate() + { + return $this->date; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextAppendLink($nextAppendLink) + { + $this->nextAppendLink = $nextAppendLink; + } + + public function getNextAppendLink() + { + return $this->nextAppendLink; + } + + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} + +class Google_Service_Analytics_DailyUploadParentLink extends Google_Model +{ + public $href; + public $type; + + public function setHref($href) + { + $this->href = $href; + } + + public function getHref() + { + return $this->href; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Analytics_DailyUploadRecentChanges extends Google_Model +{ + public $change; + public $time; + + public function setChange($change) + { + $this->change = $change; + } + + public function getChange() + { + return $this->change; + } + + public function setTime($time) + { + $this->time = $time; + } + + public function getTime() + { + return $this->time; + } +} + +class Google_Service_Analytics_DailyUploads extends Google_Collection +{ + protected $itemsType = 'Google_Service_Analytics_DailyUpload'; + protected $itemsDataType = 'array'; + public $itemsPerPage; + public $kind; + public $nextLink; + public $previousLink; + public $startIndex; + public $totalResults; + public $username; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + + public function getPreviousLink() + { + return $this->previousLink; + } + + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + + public function getStartIndex() + { + return $this->startIndex; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } + + public function setUsername($username) + { + $this->username = $username; + } + + public function getUsername() + { + return $this->username; + } +} + +class Google_Service_Analytics_EntityAdWordsLink extends Google_Collection +{ + protected $adWordsAccountsType = 'Google_Service_Analytics_AdWordsAccount'; + protected $adWordsAccountsDataType = 'array'; + protected $entityType = 'Google_Service_Analytics_EntityAdWordsLinkEntity'; + protected $entityDataType = ''; + public $id; + public $kind; + public $name; + public $profileIds; + public $selfLink; + + public function setAdWordsAccounts($adWordsAccounts) + { + $this->adWordsAccounts = $adWordsAccounts; + } + + public function getAdWordsAccounts() + { + return $this->adWordsAccounts; + } + + public function setEntity(Google_Service_Analytics_EntityAdWordsLinkEntity $entity) + { + $this->entity = $entity; + } + + public function getEntity() + { + return $this->entity; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setProfileIds($profileIds) + { + $this->profileIds = $profileIds; + } + + public function getProfileIds() + { + return $this->profileIds; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Analytics_EntityAdWordsLinkEntity extends Google_Model +{ + protected $webPropertyRefType = 'Google_Service_Analytics_WebPropertyRef'; + protected $webPropertyRefDataType = ''; + + public function setWebPropertyRef(Google_Service_Analytics_WebPropertyRef $webPropertyRef) + { + $this->webPropertyRef = $webPropertyRef; + } + + public function getWebPropertyRef() + { + return $this->webPropertyRef; + } +} + +class Google_Service_Analytics_EntityAdWordsLinks extends Google_Collection +{ + protected $itemsType = 'Google_Service_Analytics_EntityAdWordsLink'; + protected $itemsDataType = 'array'; + public $itemsPerPage; + public $kind; + public $nextLink; + public $previousLink; + public $startIndex; + public $totalResults; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + + public function getPreviousLink() + { + return $this->previousLink; + } + + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + + public function getStartIndex() + { + return $this->startIndex; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } +} + +class Google_Service_Analytics_EntityUserLink extends Google_Model +{ + protected $entityType = 'Google_Service_Analytics_EntityUserLinkEntity'; + protected $entityDataType = ''; + public $id; + public $kind; + protected $permissionsType = 'Google_Service_Analytics_EntityUserLinkPermissions'; + protected $permissionsDataType = ''; + public $selfLink; + protected $userRefType = 'Google_Service_Analytics_UserRef'; + protected $userRefDataType = ''; + + public function setEntity(Google_Service_Analytics_EntityUserLinkEntity $entity) + { + $this->entity = $entity; + } + + public function getEntity() + { + return $this->entity; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPermissions(Google_Service_Analytics_EntityUserLinkPermissions $permissions) + { + $this->permissions = $permissions; + } + + public function getPermissions() + { + return $this->permissions; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setUserRef(Google_Service_Analytics_UserRef $userRef) + { + $this->userRef = $userRef; + } + + public function getUserRef() + { + return $this->userRef; + } +} + +class Google_Service_Analytics_EntityUserLinkEntity extends Google_Model +{ + protected $accountRefType = 'Google_Service_Analytics_AccountRef'; + protected $accountRefDataType = ''; + protected $profileRefType = 'Google_Service_Analytics_ProfileRef'; + protected $profileRefDataType = ''; + protected $webPropertyRefType = 'Google_Service_Analytics_WebPropertyRef'; + protected $webPropertyRefDataType = ''; + + public function setAccountRef(Google_Service_Analytics_AccountRef $accountRef) + { + $this->accountRef = $accountRef; + } + + public function getAccountRef() + { + return $this->accountRef; + } + + public function setProfileRef(Google_Service_Analytics_ProfileRef $profileRef) + { + $this->profileRef = $profileRef; + } + + public function getProfileRef() + { + return $this->profileRef; + } + + public function setWebPropertyRef(Google_Service_Analytics_WebPropertyRef $webPropertyRef) + { + $this->webPropertyRef = $webPropertyRef; + } + + public function getWebPropertyRef() + { + return $this->webPropertyRef; + } +} + +class Google_Service_Analytics_EntityUserLinkPermissions extends Google_Collection +{ + public $effective; + public $local; + + public function setEffective($effective) + { + $this->effective = $effective; + } + + public function getEffective() + { + return $this->effective; + } + + public function setLocal($local) + { + $this->local = $local; + } + + public function getLocal() + { + return $this->local; + } +} + +class Google_Service_Analytics_EntityUserLinks extends Google_Collection +{ + protected $itemsType = 'Google_Service_Analytics_EntityUserLink'; + protected $itemsDataType = 'array'; + public $itemsPerPage; + public $kind; + public $nextLink; + public $previousLink; + public $startIndex; + public $totalResults; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + + public function getPreviousLink() + { + return $this->previousLink; + } + + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + + public function getStartIndex() + { + return $this->startIndex; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } +} + +class Google_Service_Analytics_Experiment extends Google_Collection +{ + public $accountId; + public $created; + public $description; + public $editableInGaUi; + public $endTime; + public $equalWeighting; + public $id; + public $internalWebPropertyId; + public $kind; + public $minimumExperimentLengthInDays; + public $name; + public $objectiveMetric; + public $optimizationType; + protected $parentLinkType = 'Google_Service_Analytics_ExperimentParentLink'; + protected $parentLinkDataType = ''; + public $profileId; + public $reasonExperimentEnded; + public $rewriteVariationUrlsAsOriginal; + public $selfLink; + public $servingFramework; + public $snippet; + public $startTime; + public $status; + public $trafficCoverage; + public $updated; + protected $variationsType = 'Google_Service_Analytics_ExperimentVariations'; + protected $variationsDataType = 'array'; + public $webPropertyId; + public $winnerConfidenceLevel; + public $winnerFound; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setCreated($created) + { + $this->created = $created; + } + + public function getCreated() + { + return $this->created; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setEditableInGaUi($editableInGaUi) + { + $this->editableInGaUi = $editableInGaUi; + } + + public function getEditableInGaUi() + { + return $this->editableInGaUi; + } + + public function setEndTime($endTime) + { + $this->endTime = $endTime; + } + + public function getEndTime() + { + return $this->endTime; + } + + public function setEqualWeighting($equalWeighting) + { + $this->equalWeighting = $equalWeighting; + } + + public function getEqualWeighting() + { + return $this->equalWeighting; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMinimumExperimentLengthInDays($minimumExperimentLengthInDays) + { + $this->minimumExperimentLengthInDays = $minimumExperimentLengthInDays; + } + + public function getMinimumExperimentLengthInDays() + { + return $this->minimumExperimentLengthInDays; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setObjectiveMetric($objectiveMetric) + { + $this->objectiveMetric = $objectiveMetric; + } + + public function getObjectiveMetric() + { + return $this->objectiveMetric; + } + + public function setOptimizationType($optimizationType) + { + $this->optimizationType = $optimizationType; + } + + public function getOptimizationType() + { + return $this->optimizationType; + } + + public function setParentLink(Google_Service_Analytics_ExperimentParentLink $parentLink) + { + $this->parentLink = $parentLink; + } + + public function getParentLink() + { + return $this->parentLink; + } + + public function setProfileId($profileId) + { + $this->profileId = $profileId; + } + + public function getProfileId() + { + return $this->profileId; + } + + public function setReasonExperimentEnded($reasonExperimentEnded) + { + $this->reasonExperimentEnded = $reasonExperimentEnded; + } + + public function getReasonExperimentEnded() + { + return $this->reasonExperimentEnded; + } + + public function setRewriteVariationUrlsAsOriginal($rewriteVariationUrlsAsOriginal) + { + $this->rewriteVariationUrlsAsOriginal = $rewriteVariationUrlsAsOriginal; + } + + public function getRewriteVariationUrlsAsOriginal() + { + return $this->rewriteVariationUrlsAsOriginal; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setServingFramework($servingFramework) + { + $this->servingFramework = $servingFramework; + } + + public function getServingFramework() + { + return $this->servingFramework; + } + + public function setSnippet($snippet) + { + $this->snippet = $snippet; + } + + public function getSnippet() + { + return $this->snippet; + } + + public function setStartTime($startTime) + { + $this->startTime = $startTime; + } + + public function getStartTime() + { + return $this->startTime; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setTrafficCoverage($trafficCoverage) + { + $this->trafficCoverage = $trafficCoverage; + } + + public function getTrafficCoverage() + { + return $this->trafficCoverage; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setVariations($variations) + { + $this->variations = $variations; + } + + public function getVariations() + { + return $this->variations; + } + + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + + public function getWebPropertyId() + { + return $this->webPropertyId; + } + + public function setWinnerConfidenceLevel($winnerConfidenceLevel) + { + $this->winnerConfidenceLevel = $winnerConfidenceLevel; + } + + public function getWinnerConfidenceLevel() + { + return $this->winnerConfidenceLevel; + } + + public function setWinnerFound($winnerFound) + { + $this->winnerFound = $winnerFound; + } + + public function getWinnerFound() + { + return $this->winnerFound; + } +} + +class Google_Service_Analytics_ExperimentParentLink extends Google_Model +{ + public $href; + public $type; + + public function setHref($href) + { + $this->href = $href; + } + + public function getHref() + { + return $this->href; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Analytics_ExperimentVariations extends Google_Model +{ + public $name; + public $status; + public $url; + public $weight; + public $won; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } + + public function setWeight($weight) + { + $this->weight = $weight; + } + + public function getWeight() + { + return $this->weight; + } + + public function setWon($won) + { + $this->won = $won; + } + + public function getWon() + { + return $this->won; + } +} + +class Google_Service_Analytics_Experiments extends Google_Collection +{ + protected $itemsType = 'Google_Service_Analytics_Experiment'; + protected $itemsDataType = 'array'; + public $itemsPerPage; + public $kind; + public $nextLink; + public $previousLink; + public $startIndex; + public $totalResults; + public $username; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + + public function getPreviousLink() + { + return $this->previousLink; + } + + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + + public function getStartIndex() + { + return $this->startIndex; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } + + public function setUsername($username) + { + $this->username = $username; + } + + public function getUsername() + { + return $this->username; + } +} + +class Google_Service_Analytics_Filter extends Google_Model +{ + public $accountId; + protected $advancedDetailsType = 'Google_Service_Analytics_FilterAdvancedDetails'; + protected $advancedDetailsDataType = ''; + public $created; + protected $excludeDetailsType = 'Google_Service_Analytics_FilterExpression'; + protected $excludeDetailsDataType = ''; + public $id; + protected $includeDetailsType = 'Google_Service_Analytics_FilterExpression'; + protected $includeDetailsDataType = ''; + public $kind; + protected $lowercaseDetailsType = 'Google_Service_Analytics_FilterLowercaseDetails'; + protected $lowercaseDetailsDataType = ''; + public $name; + protected $parentLinkType = 'Google_Service_Analytics_FilterParentLink'; + protected $parentLinkDataType = ''; + protected $searchAndReplaceDetailsType = 'Google_Service_Analytics_FilterSearchAndReplaceDetails'; + protected $searchAndReplaceDetailsDataType = ''; + public $selfLink; + public $type; + public $updated; + protected $uppercaseDetailsType = 'Google_Service_Analytics_FilterUppercaseDetails'; + protected $uppercaseDetailsDataType = ''; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setAdvancedDetails(Google_Service_Analytics_FilterAdvancedDetails $advancedDetails) + { + $this->advancedDetails = $advancedDetails; + } + + public function getAdvancedDetails() + { + return $this->advancedDetails; + } + + public function setCreated($created) + { + $this->created = $created; + } + + public function getCreated() + { + return $this->created; + } + + public function setExcludeDetails(Google_Service_Analytics_FilterExpression $excludeDetails) + { + $this->excludeDetails = $excludeDetails; + } + + public function getExcludeDetails() + { + return $this->excludeDetails; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setIncludeDetails(Google_Service_Analytics_FilterExpression $includeDetails) + { + $this->includeDetails = $includeDetails; + } + + public function getIncludeDetails() + { + return $this->includeDetails; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLowercaseDetails(Google_Service_Analytics_FilterLowercaseDetails $lowercaseDetails) + { + $this->lowercaseDetails = $lowercaseDetails; + } + + public function getLowercaseDetails() + { + return $this->lowercaseDetails; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setParentLink(Google_Service_Analytics_FilterParentLink $parentLink) + { + $this->parentLink = $parentLink; + } + + public function getParentLink() + { + return $this->parentLink; + } + + public function setSearchAndReplaceDetails(Google_Service_Analytics_FilterSearchAndReplaceDetails $searchAndReplaceDetails) + { + $this->searchAndReplaceDetails = $searchAndReplaceDetails; + } + + public function getSearchAndReplaceDetails() + { + return $this->searchAndReplaceDetails; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setUppercaseDetails(Google_Service_Analytics_FilterUppercaseDetails $uppercaseDetails) + { + $this->uppercaseDetails = $uppercaseDetails; + } + + public function getUppercaseDetails() + { + return $this->uppercaseDetails; + } +} + +class Google_Service_Analytics_FilterAdvancedDetails extends Google_Model +{ + public $caseSensitive; + public $extractA; + public $extractB; + public $fieldA; + public $fieldARequired; + public $fieldB; + public $fieldBRequired; + public $outputConstructor; + public $outputToField; + public $overrideOutputField; + + public function setCaseSensitive($caseSensitive) + { + $this->caseSensitive = $caseSensitive; + } + + public function getCaseSensitive() + { + return $this->caseSensitive; + } + + public function setExtractA($extractA) + { + $this->extractA = $extractA; + } + + public function getExtractA() + { + return $this->extractA; + } + + public function setExtractB($extractB) + { + $this->extractB = $extractB; + } + + public function getExtractB() + { + return $this->extractB; + } + + public function setFieldA($fieldA) + { + $this->fieldA = $fieldA; + } + + public function getFieldA() + { + return $this->fieldA; + } + + public function setFieldARequired($fieldARequired) + { + $this->fieldARequired = $fieldARequired; + } + + public function getFieldARequired() + { + return $this->fieldARequired; + } + + public function setFieldB($fieldB) + { + $this->fieldB = $fieldB; + } + + public function getFieldB() + { + return $this->fieldB; + } + + public function setFieldBRequired($fieldBRequired) + { + $this->fieldBRequired = $fieldBRequired; + } + + public function getFieldBRequired() + { + return $this->fieldBRequired; + } + + public function setOutputConstructor($outputConstructor) + { + $this->outputConstructor = $outputConstructor; + } + + public function getOutputConstructor() + { + return $this->outputConstructor; + } + + public function setOutputToField($outputToField) + { + $this->outputToField = $outputToField; + } + + public function getOutputToField() + { + return $this->outputToField; + } + + public function setOverrideOutputField($overrideOutputField) + { + $this->overrideOutputField = $overrideOutputField; + } + + public function getOverrideOutputField() + { + return $this->overrideOutputField; + } +} + +class Google_Service_Analytics_FilterExpression extends Google_Model +{ + public $caseSensitive; + public $expressionValue; + public $field; + public $kind; + public $matchType; + + public function setCaseSensitive($caseSensitive) + { + $this->caseSensitive = $caseSensitive; + } + + public function getCaseSensitive() + { + return $this->caseSensitive; + } + + public function setExpressionValue($expressionValue) + { + $this->expressionValue = $expressionValue; + } + + public function getExpressionValue() + { + return $this->expressionValue; + } + + public function setField($field) + { + $this->field = $field; + } + + public function getField() + { + return $this->field; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMatchType($matchType) + { + $this->matchType = $matchType; + } + + public function getMatchType() + { + return $this->matchType; + } +} + +class Google_Service_Analytics_FilterLowercaseDetails extends Google_Model +{ + public $field; + + public function setField($field) + { + $this->field = $field; + } + + public function getField() + { + return $this->field; + } +} + +class Google_Service_Analytics_FilterParentLink extends Google_Model +{ + public $href; + public $type; + + public function setHref($href) + { + $this->href = $href; + } + + public function getHref() + { + return $this->href; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Analytics_FilterRef extends Google_Model +{ + public $accountId; + public $href; + public $id; + public $kind; + public $name; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setHref($href) + { + $this->href = $href; + } + + public function getHref() + { + return $this->href; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_Analytics_FilterSearchAndReplaceDetails extends Google_Model +{ + public $caseSensitive; + public $field; + public $replaceString; + public $searchString; + + public function setCaseSensitive($caseSensitive) + { + $this->caseSensitive = $caseSensitive; + } + + public function getCaseSensitive() + { + return $this->caseSensitive; + } + + public function setField($field) + { + $this->field = $field; + } + + public function getField() + { + return $this->field; + } + + public function setReplaceString($replaceString) + { + $this->replaceString = $replaceString; + } + + public function getReplaceString() + { + return $this->replaceString; + } + + public function setSearchString($searchString) + { + $this->searchString = $searchString; + } + + public function getSearchString() + { + return $this->searchString; + } +} + +class Google_Service_Analytics_FilterUppercaseDetails extends Google_Model +{ + public $field; + + public function setField($field) + { + $this->field = $field; + } + + public function getField() + { + return $this->field; + } +} + +class Google_Service_Analytics_Filters extends Google_Collection +{ + protected $itemsType = 'Google_Service_Analytics_Filter'; + protected $itemsDataType = 'array'; + public $itemsPerPage; + public $kind; + public $nextLink; + public $previousLink; + public $startIndex; + public $totalResults; + public $username; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + + public function getPreviousLink() + { + return $this->previousLink; + } + + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + + public function getStartIndex() + { + return $this->startIndex; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } + + public function setUsername($username) + { + $this->username = $username; + } + + public function getUsername() + { + return $this->username; + } +} + +class Google_Service_Analytics_GaData extends Google_Collection +{ + protected $columnHeadersType = 'Google_Service_Analytics_GaDataColumnHeaders'; + protected $columnHeadersDataType = 'array'; + public $containsSampledData; + protected $dataTableType = 'Google_Service_Analytics_GaDataDataTable'; + protected $dataTableDataType = ''; + public $id; + public $itemsPerPage; + public $kind; + public $nextLink; + public $previousLink; + protected $profileInfoType = 'Google_Service_Analytics_GaDataProfileInfo'; + protected $profileInfoDataType = ''; + protected $queryType = 'Google_Service_Analytics_GaDataQuery'; + protected $queryDataType = ''; + public $rows; + public $sampleSize; + public $sampleSpace; + public $selfLink; + public $totalResults; + public $totalsForAllResults; + + public function setColumnHeaders($columnHeaders) + { + $this->columnHeaders = $columnHeaders; + } + + public function getColumnHeaders() + { + return $this->columnHeaders; + } + + public function setContainsSampledData($containsSampledData) + { + $this->containsSampledData = $containsSampledData; + } + + public function getContainsSampledData() + { + return $this->containsSampledData; + } + + public function setDataTable(Google_Service_Analytics_GaDataDataTable $dataTable) + { + $this->dataTable = $dataTable; + } + + public function getDataTable() + { + return $this->dataTable; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + + public function getPreviousLink() + { + return $this->previousLink; + } + + public function setProfileInfo(Google_Service_Analytics_GaDataProfileInfo $profileInfo) + { + $this->profileInfo = $profileInfo; + } + + public function getProfileInfo() + { + return $this->profileInfo; + } + + public function setQuery(Google_Service_Analytics_GaDataQuery $query) + { + $this->query = $query; + } + + public function getQuery() + { + return $this->query; + } + + public function setRows($rows) + { + $this->rows = $rows; + } + + public function getRows() + { + return $this->rows; + } + + public function setSampleSize($sampleSize) + { + $this->sampleSize = $sampleSize; + } + + public function getSampleSize() + { + return $this->sampleSize; + } + + public function setSampleSpace($sampleSpace) + { + $this->sampleSpace = $sampleSpace; + } + + public function getSampleSpace() + { + return $this->sampleSpace; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } + + public function setTotalsForAllResults($totalsForAllResults) + { + $this->totalsForAllResults = $totalsForAllResults; + } + + public function getTotalsForAllResults() + { + return $this->totalsForAllResults; + } +} + +class Google_Service_Analytics_GaDataColumnHeaders extends Google_Model +{ + public $columnType; + public $dataType; + public $name; + + public function setColumnType($columnType) + { + $this->columnType = $columnType; + } + + public function getColumnType() + { + return $this->columnType; + } + + public function setDataType($dataType) + { + $this->dataType = $dataType; + } + + public function getDataType() + { + return $this->dataType; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_Analytics_GaDataDataTable extends Google_Collection +{ + protected $colsType = 'Google_Service_Analytics_GaDataDataTableCols'; + protected $colsDataType = 'array'; + protected $rowsType = 'Google_Service_Analytics_GaDataDataTableRows'; + protected $rowsDataType = 'array'; + + public function setCols($cols) + { + $this->cols = $cols; + } + + public function getCols() + { + return $this->cols; + } + + public function setRows($rows) + { + $this->rows = $rows; + } + + public function getRows() + { + return $this->rows; + } +} + +class Google_Service_Analytics_GaDataDataTableCols extends Google_Model +{ + public $id; + public $label; + public $type; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setLabel($label) + { + $this->label = $label; + } + + public function getLabel() + { + return $this->label; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Analytics_GaDataDataTableRows extends Google_Collection +{ + protected $cType = 'Google_Service_Analytics_GaDataDataTableRowsC'; + protected $cDataType = 'array'; + + public function setC($c) + { + $this->c = $c; + } + + public function getC() + { + return $this->c; + } +} + +class Google_Service_Analytics_GaDataDataTableRowsC extends Google_Model +{ + public $v; + + public function setV($v) + { + $this->v = $v; + } + + public function getV() + { + return $this->v; + } +} + +class Google_Service_Analytics_GaDataProfileInfo extends Google_Model +{ + public $accountId; + public $internalWebPropertyId; + public $profileId; + public $profileName; + public $tableId; + public $webPropertyId; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + + public function setProfileId($profileId) + { + $this->profileId = $profileId; + } + + public function getProfileId() + { + return $this->profileId; + } + + public function setProfileName($profileName) + { + $this->profileName = $profileName; + } + + public function getProfileName() + { + return $this->profileName; + } + + public function setTableId($tableId) + { + $this->tableId = $tableId; + } + + public function getTableId() + { + return $this->tableId; + } + + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} + +class Google_Service_Analytics_GaDataQuery extends Google_Collection +{ + public $dimensions; + public $endDate; + public $filters; + public $ids; + public $maxResults; + public $metrics; + public $samplingLevel; + public $segment; + public $sort; + public $startDate; + public $startIndex; + + public function setDimensions($dimensions) + { + $this->dimensions = $dimensions; + } + + public function getDimensions() + { + return $this->dimensions; + } + + public function setEndDate($endDate) + { + $this->endDate = $endDate; + } + + public function getEndDate() + { + return $this->endDate; + } + + public function setFilters($filters) + { + $this->filters = $filters; + } + + public function getFilters() + { + return $this->filters; + } + + public function setIds($ids) + { + $this->ids = $ids; + } + + public function getIds() + { + return $this->ids; + } + + public function setMaxResults($maxResults) + { + $this->maxResults = $maxResults; + } + + public function getMaxResults() + { + return $this->maxResults; + } + + public function setMetrics($metrics) + { + $this->metrics = $metrics; + } + + public function getMetrics() + { + return $this->metrics; + } + + public function setSamplingLevel($samplingLevel) + { + $this->samplingLevel = $samplingLevel; + } + + public function getSamplingLevel() + { + return $this->samplingLevel; + } + + public function setSegment($segment) + { + $this->segment = $segment; + } + + public function getSegment() + { + return $this->segment; + } + + public function setSort($sort) + { + $this->sort = $sort; + } + + public function getSort() + { + return $this->sort; + } + + public function setStartDate($startDate) + { + $this->startDate = $startDate; + } + + public function getStartDate() + { + return $this->startDate; + } + + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + + public function getStartIndex() + { + return $this->startIndex; + } +} + +class Google_Service_Analytics_GaDataTotalsForAllResults extends Google_Model +{ + +} + +class Google_Service_Analytics_Goal extends Google_Model +{ + public $accountId; + public $active; + public $created; + protected $eventDetailsType = 'Google_Service_Analytics_GoalEventDetails'; + protected $eventDetailsDataType = ''; + public $id; + public $internalWebPropertyId; + public $kind; + public $name; + protected $parentLinkType = 'Google_Service_Analytics_GoalParentLink'; + protected $parentLinkDataType = ''; + public $profileId; + public $selfLink; + public $type; + public $updated; + protected $urlDestinationDetailsType = 'Google_Service_Analytics_GoalUrlDestinationDetails'; + protected $urlDestinationDetailsDataType = ''; + public $value; + protected $visitNumPagesDetailsType = 'Google_Service_Analytics_GoalVisitNumPagesDetails'; + protected $visitNumPagesDetailsDataType = ''; + protected $visitTimeOnSiteDetailsType = 'Google_Service_Analytics_GoalVisitTimeOnSiteDetails'; + protected $visitTimeOnSiteDetailsDataType = ''; + public $webPropertyId; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setActive($active) + { + $this->active = $active; + } + + public function getActive() + { + return $this->active; + } + + public function setCreated($created) + { + $this->created = $created; + } + + public function getCreated() + { + return $this->created; + } + + public function setEventDetails(Google_Service_Analytics_GoalEventDetails $eventDetails) + { + $this->eventDetails = $eventDetails; + } + + public function getEventDetails() + { + return $this->eventDetails; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setParentLink(Google_Service_Analytics_GoalParentLink $parentLink) + { + $this->parentLink = $parentLink; + } + + public function getParentLink() + { + return $this->parentLink; + } + + public function setProfileId($profileId) + { + $this->profileId = $profileId; + } + + public function getProfileId() + { + return $this->profileId; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setUrlDestinationDetails(Google_Service_Analytics_GoalUrlDestinationDetails $urlDestinationDetails) + { + $this->urlDestinationDetails = $urlDestinationDetails; + } + + public function getUrlDestinationDetails() + { + return $this->urlDestinationDetails; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } + + public function setVisitNumPagesDetails(Google_Service_Analytics_GoalVisitNumPagesDetails $visitNumPagesDetails) + { + $this->visitNumPagesDetails = $visitNumPagesDetails; + } + + public function getVisitNumPagesDetails() + { + return $this->visitNumPagesDetails; + } + + public function setVisitTimeOnSiteDetails(Google_Service_Analytics_GoalVisitTimeOnSiteDetails $visitTimeOnSiteDetails) + { + $this->visitTimeOnSiteDetails = $visitTimeOnSiteDetails; + } + + public function getVisitTimeOnSiteDetails() + { + return $this->visitTimeOnSiteDetails; + } + + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} + +class Google_Service_Analytics_GoalEventDetails extends Google_Collection +{ + protected $eventConditionsType = 'Google_Service_Analytics_GoalEventDetailsEventConditions'; + protected $eventConditionsDataType = 'array'; + public $useEventValue; + + public function setEventConditions($eventConditions) + { + $this->eventConditions = $eventConditions; + } + + public function getEventConditions() + { + return $this->eventConditions; + } + + public function setUseEventValue($useEventValue) + { + $this->useEventValue = $useEventValue; + } + + public function getUseEventValue() + { + return $this->useEventValue; + } +} + +class Google_Service_Analytics_GoalEventDetailsEventConditions extends Google_Model +{ + public $comparisonType; + public $comparisonValue; + public $expression; + public $matchType; + public $type; + + public function setComparisonType($comparisonType) + { + $this->comparisonType = $comparisonType; + } + + public function getComparisonType() + { + return $this->comparisonType; + } + + public function setComparisonValue($comparisonValue) + { + $this->comparisonValue = $comparisonValue; + } + + public function getComparisonValue() + { + return $this->comparisonValue; + } + + public function setExpression($expression) + { + $this->expression = $expression; + } + + public function getExpression() + { + return $this->expression; + } + + public function setMatchType($matchType) + { + $this->matchType = $matchType; + } + + public function getMatchType() + { + return $this->matchType; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Analytics_GoalParentLink extends Google_Model +{ + public $href; + public $type; + + public function setHref($href) + { + $this->href = $href; + } + + public function getHref() + { + return $this->href; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Analytics_GoalUrlDestinationDetails extends Google_Collection +{ + public $caseSensitive; + public $firstStepRequired; + public $matchType; + protected $stepsType = 'Google_Service_Analytics_GoalUrlDestinationDetailsSteps'; + protected $stepsDataType = 'array'; + public $url; + + public function setCaseSensitive($caseSensitive) + { + $this->caseSensitive = $caseSensitive; + } + + public function getCaseSensitive() + { + return $this->caseSensitive; + } + + public function setFirstStepRequired($firstStepRequired) + { + $this->firstStepRequired = $firstStepRequired; + } + + public function getFirstStepRequired() + { + return $this->firstStepRequired; + } + + public function setMatchType($matchType) + { + $this->matchType = $matchType; + } + + public function getMatchType() + { + return $this->matchType; + } + + public function setSteps($steps) + { + $this->steps = $steps; + } + + public function getSteps() + { + return $this->steps; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Analytics_GoalUrlDestinationDetailsSteps extends Google_Model +{ + public $name; + public $number; + public $url; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNumber($number) + { + $this->number = $number; + } + + public function getNumber() + { + return $this->number; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Analytics_GoalVisitNumPagesDetails extends Google_Model +{ + public $comparisonType; + public $comparisonValue; + + public function setComparisonType($comparisonType) + { + $this->comparisonType = $comparisonType; + } + + public function getComparisonType() + { + return $this->comparisonType; + } + + public function setComparisonValue($comparisonValue) + { + $this->comparisonValue = $comparisonValue; + } + + public function getComparisonValue() + { + return $this->comparisonValue; + } +} + +class Google_Service_Analytics_GoalVisitTimeOnSiteDetails extends Google_Model +{ + public $comparisonType; + public $comparisonValue; + + public function setComparisonType($comparisonType) + { + $this->comparisonType = $comparisonType; + } + + public function getComparisonType() + { + return $this->comparisonType; + } + + public function setComparisonValue($comparisonValue) + { + $this->comparisonValue = $comparisonValue; + } + + public function getComparisonValue() + { + return $this->comparisonValue; + } +} + +class Google_Service_Analytics_Goals extends Google_Collection +{ + protected $itemsType = 'Google_Service_Analytics_Goal'; + protected $itemsDataType = 'array'; + public $itemsPerPage; + public $kind; + public $nextLink; + public $previousLink; + public $startIndex; + public $totalResults; + public $username; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + + public function getPreviousLink() + { + return $this->previousLink; + } + + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + + public function getStartIndex() + { + return $this->startIndex; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } + + public function setUsername($username) + { + $this->username = $username; + } + + public function getUsername() + { + return $this->username; + } +} + +class Google_Service_Analytics_McfData extends Google_Collection +{ + protected $columnHeadersType = 'Google_Service_Analytics_McfDataColumnHeaders'; + protected $columnHeadersDataType = 'array'; + public $containsSampledData; + public $id; + public $itemsPerPage; + public $kind; + public $nextLink; + public $previousLink; + protected $profileInfoType = 'Google_Service_Analytics_McfDataProfileInfo'; + protected $profileInfoDataType = ''; + protected $queryType = 'Google_Service_Analytics_McfDataQuery'; + protected $queryDataType = ''; + protected $rowsType = 'Google_Service_Analytics_McfDataRows'; + protected $rowsDataType = 'array'; + public $sampleSize; + public $sampleSpace; + public $selfLink; + public $totalResults; + public $totalsForAllResults; + + public function setColumnHeaders($columnHeaders) + { + $this->columnHeaders = $columnHeaders; + } + + public function getColumnHeaders() + { + return $this->columnHeaders; + } + + public function setContainsSampledData($containsSampledData) + { + $this->containsSampledData = $containsSampledData; + } + + public function getContainsSampledData() + { + return $this->containsSampledData; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + + public function getPreviousLink() + { + return $this->previousLink; + } + + public function setProfileInfo(Google_Service_Analytics_McfDataProfileInfo $profileInfo) + { + $this->profileInfo = $profileInfo; + } + + public function getProfileInfo() + { + return $this->profileInfo; + } + + public function setQuery(Google_Service_Analytics_McfDataQuery $query) + { + $this->query = $query; + } + + public function getQuery() + { + return $this->query; + } + + public function setRows($rows) + { + $this->rows = $rows; + } + + public function getRows() + { + return $this->rows; + } + + public function setSampleSize($sampleSize) + { + $this->sampleSize = $sampleSize; + } + + public function getSampleSize() + { + return $this->sampleSize; + } + + public function setSampleSpace($sampleSpace) + { + $this->sampleSpace = $sampleSpace; + } + + public function getSampleSpace() + { + return $this->sampleSpace; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } + + public function setTotalsForAllResults($totalsForAllResults) + { + $this->totalsForAllResults = $totalsForAllResults; + } + + public function getTotalsForAllResults() + { + return $this->totalsForAllResults; + } +} + +class Google_Service_Analytics_McfDataColumnHeaders extends Google_Model +{ + public $columnType; + public $dataType; + public $name; + + public function setColumnType($columnType) + { + $this->columnType = $columnType; + } + + public function getColumnType() + { + return $this->columnType; + } + + public function setDataType($dataType) + { + $this->dataType = $dataType; + } + + public function getDataType() + { + return $this->dataType; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_Analytics_McfDataProfileInfo extends Google_Model +{ + public $accountId; + public $internalWebPropertyId; + public $profileId; + public $profileName; + public $tableId; + public $webPropertyId; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + + public function setProfileId($profileId) + { + $this->profileId = $profileId; + } + + public function getProfileId() + { + return $this->profileId; + } + + public function setProfileName($profileName) + { + $this->profileName = $profileName; + } + + public function getProfileName() + { + return $this->profileName; + } + + public function setTableId($tableId) + { + $this->tableId = $tableId; + } + + public function getTableId() + { + return $this->tableId; + } + + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} + +class Google_Service_Analytics_McfDataQuery extends Google_Collection +{ + public $dimensions; + public $endDate; + public $filters; + public $ids; + public $maxResults; + public $metrics; + public $samplingLevel; + public $segment; + public $sort; + public $startDate; + public $startIndex; + + public function setDimensions($dimensions) + { + $this->dimensions = $dimensions; + } + + public function getDimensions() + { + return $this->dimensions; + } + + public function setEndDate($endDate) + { + $this->endDate = $endDate; + } + + public function getEndDate() + { + return $this->endDate; + } + + public function setFilters($filters) + { + $this->filters = $filters; + } + + public function getFilters() + { + return $this->filters; + } + + public function setIds($ids) + { + $this->ids = $ids; + } + + public function getIds() + { + return $this->ids; + } + + public function setMaxResults($maxResults) + { + $this->maxResults = $maxResults; + } + + public function getMaxResults() + { + return $this->maxResults; + } + + public function setMetrics($metrics) + { + $this->metrics = $metrics; + } + + public function getMetrics() + { + return $this->metrics; + } + + public function setSamplingLevel($samplingLevel) + { + $this->samplingLevel = $samplingLevel; + } + + public function getSamplingLevel() + { + return $this->samplingLevel; + } + + public function setSegment($segment) + { + $this->segment = $segment; + } + + public function getSegment() + { + return $this->segment; + } + + public function setSort($sort) + { + $this->sort = $sort; + } + + public function getSort() + { + return $this->sort; + } + + public function setStartDate($startDate) + { + $this->startDate = $startDate; + } + + public function getStartDate() + { + return $this->startDate; + } + + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + + public function getStartIndex() + { + return $this->startIndex; + } +} + +class Google_Service_Analytics_McfDataRows extends Google_Collection +{ + protected $conversionPathValueType = 'Google_Service_Analytics_McfDataRowsConversionPathValue'; + protected $conversionPathValueDataType = 'array'; + public $primitiveValue; + + public function setConversionPathValue($conversionPathValue) + { + $this->conversionPathValue = $conversionPathValue; + } + + public function getConversionPathValue() + { + return $this->conversionPathValue; + } + + public function setPrimitiveValue($primitiveValue) + { + $this->primitiveValue = $primitiveValue; + } + + public function getPrimitiveValue() + { + return $this->primitiveValue; + } +} + +class Google_Service_Analytics_McfDataRowsConversionPathValue extends Google_Model +{ + public $interactionType; + public $nodeValue; + + public function setInteractionType($interactionType) + { + $this->interactionType = $interactionType; + } + + public function getInteractionType() + { + return $this->interactionType; + } + + public function setNodeValue($nodeValue) + { + $this->nodeValue = $nodeValue; + } + + public function getNodeValue() + { + return $this->nodeValue; + } +} + +class Google_Service_Analytics_McfDataTotalsForAllResults extends Google_Model +{ + +} + +class Google_Service_Analytics_Profile extends Google_Model +{ + public $accountId; + protected $childLinkType = 'Google_Service_Analytics_ProfileChildLink'; + protected $childLinkDataType = ''; + public $created; + public $currency; + public $defaultPage; + public $eCommerceTracking; + public $excludeQueryParameters; + public $id; + public $internalWebPropertyId; + public $kind; + public $name; + protected $parentLinkType = 'Google_Service_Analytics_ProfileParentLink'; + protected $parentLinkDataType = ''; + protected $permissionsType = 'Google_Service_Analytics_ProfilePermissions'; + protected $permissionsDataType = ''; + public $selfLink; + public $siteSearchCategoryParameters; + public $siteSearchQueryParameters; + public $stripSiteSearchCategoryParameters; + public $stripSiteSearchQueryParameters; + public $timezone; + public $type; + public $updated; + public $webPropertyId; + public $websiteUrl; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setChildLink(Google_Service_Analytics_ProfileChildLink $childLink) + { + $this->childLink = $childLink; + } + + public function getChildLink() + { + return $this->childLink; + } + + public function setCreated($created) + { + $this->created = $created; + } + + public function getCreated() + { + return $this->created; + } + + public function setCurrency($currency) + { + $this->currency = $currency; + } + + public function getCurrency() + { + return $this->currency; + } + + public function setDefaultPage($defaultPage) + { + $this->defaultPage = $defaultPage; + } + + public function getDefaultPage() + { + return $this->defaultPage; + } + + public function setECommerceTracking($eCommerceTracking) + { + $this->eCommerceTracking = $eCommerceTracking; + } + + public function getECommerceTracking() + { + return $this->eCommerceTracking; + } + + public function setExcludeQueryParameters($excludeQueryParameters) + { + $this->excludeQueryParameters = $excludeQueryParameters; + } + + public function getExcludeQueryParameters() + { + return $this->excludeQueryParameters; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setParentLink(Google_Service_Analytics_ProfileParentLink $parentLink) + { + $this->parentLink = $parentLink; + } + + public function getParentLink() + { + return $this->parentLink; + } + + public function setPermissions(Google_Service_Analytics_ProfilePermissions $permissions) + { + $this->permissions = $permissions; + } + + public function getPermissions() + { + return $this->permissions; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setSiteSearchCategoryParameters($siteSearchCategoryParameters) + { + $this->siteSearchCategoryParameters = $siteSearchCategoryParameters; + } + + public function getSiteSearchCategoryParameters() + { + return $this->siteSearchCategoryParameters; + } + + public function setSiteSearchQueryParameters($siteSearchQueryParameters) + { + $this->siteSearchQueryParameters = $siteSearchQueryParameters; + } + + public function getSiteSearchQueryParameters() + { + return $this->siteSearchQueryParameters; + } + + public function setStripSiteSearchCategoryParameters($stripSiteSearchCategoryParameters) + { + $this->stripSiteSearchCategoryParameters = $stripSiteSearchCategoryParameters; + } + + public function getStripSiteSearchCategoryParameters() + { + return $this->stripSiteSearchCategoryParameters; + } + + public function setStripSiteSearchQueryParameters($stripSiteSearchQueryParameters) + { + $this->stripSiteSearchQueryParameters = $stripSiteSearchQueryParameters; + } + + public function getStripSiteSearchQueryParameters() + { + return $this->stripSiteSearchQueryParameters; + } + + public function setTimezone($timezone) + { + $this->timezone = $timezone; + } + + public function getTimezone() + { + return $this->timezone; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + + public function getWebPropertyId() + { + return $this->webPropertyId; + } + + public function setWebsiteUrl($websiteUrl) + { + $this->websiteUrl = $websiteUrl; + } + + public function getWebsiteUrl() + { + return $this->websiteUrl; + } +} + +class Google_Service_Analytics_ProfileChildLink extends Google_Model +{ + public $href; + public $type; + + public function setHref($href) + { + $this->href = $href; + } + + public function getHref() + { + return $this->href; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Analytics_ProfileFilterLink extends Google_Model +{ + protected $filterRefType = 'Google_Service_Analytics_FilterRef'; + protected $filterRefDataType = ''; + public $id; + public $kind; + protected $profileRefType = 'Google_Service_Analytics_ProfileRef'; + protected $profileRefDataType = ''; + public $rank; + public $selfLink; + + public function setFilterRef(Google_Service_Analytics_FilterRef $filterRef) + { + $this->filterRef = $filterRef; + } + + public function getFilterRef() + { + return $this->filterRef; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setProfileRef(Google_Service_Analytics_ProfileRef $profileRef) + { + $this->profileRef = $profileRef; + } + + public function getProfileRef() + { + return $this->profileRef; + } + + public function setRank($rank) + { + $this->rank = $rank; + } + + public function getRank() + { + return $this->rank; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Analytics_ProfileFilterLinks extends Google_Collection +{ + protected $itemsType = 'Google_Service_Analytics_ProfileFilterLink'; + protected $itemsDataType = 'array'; + public $itemsPerPage; + public $kind; + public $nextLink; + public $previousLink; + public $startIndex; + public $totalResults; + public $username; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + + public function getPreviousLink() + { + return $this->previousLink; + } + + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + + public function getStartIndex() + { + return $this->startIndex; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } + + public function setUsername($username) + { + $this->username = $username; + } + + public function getUsername() + { + return $this->username; + } +} + +class Google_Service_Analytics_ProfileParentLink extends Google_Model +{ + public $href; + public $type; + + public function setHref($href) + { + $this->href = $href; + } + + public function getHref() + { + return $this->href; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Analytics_ProfilePermissions extends Google_Collection +{ + public $effective; + + public function setEffective($effective) + { + $this->effective = $effective; + } + + public function getEffective() + { + return $this->effective; + } +} + +class Google_Service_Analytics_ProfileRef extends Google_Model +{ + public $accountId; + public $href; + public $id; + public $internalWebPropertyId; + public $kind; + public $name; + public $webPropertyId; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setHref($href) + { + $this->href = $href; + } + + public function getHref() + { + return $this->href; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} + +class Google_Service_Analytics_ProfileSummary extends Google_Model +{ + public $id; + public $kind; + public $name; + public $type; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Analytics_Profiles extends Google_Collection +{ + protected $itemsType = 'Google_Service_Analytics_Profile'; + protected $itemsDataType = 'array'; + public $itemsPerPage; + public $kind; + public $nextLink; + public $previousLink; + public $startIndex; + public $totalResults; + public $username; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + + public function getPreviousLink() + { + return $this->previousLink; + } + + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + + public function getStartIndex() + { + return $this->startIndex; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } + + public function setUsername($username) + { + $this->username = $username; + } + + public function getUsername() + { + return $this->username; + } +} + +class Google_Service_Analytics_RealtimeData extends Google_Collection +{ + protected $columnHeadersType = 'Google_Service_Analytics_RealtimeDataColumnHeaders'; + protected $columnHeadersDataType = 'array'; + public $id; + public $kind; + protected $profileInfoType = 'Google_Service_Analytics_RealtimeDataProfileInfo'; + protected $profileInfoDataType = ''; + protected $queryType = 'Google_Service_Analytics_RealtimeDataQuery'; + protected $queryDataType = ''; + public $rows; + public $selfLink; + public $totalResults; + public $totalsForAllResults; + + public function setColumnHeaders($columnHeaders) + { + $this->columnHeaders = $columnHeaders; + } + + public function getColumnHeaders() + { + return $this->columnHeaders; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setProfileInfo(Google_Service_Analytics_RealtimeDataProfileInfo $profileInfo) + { + $this->profileInfo = $profileInfo; + } + + public function getProfileInfo() + { + return $this->profileInfo; + } + + public function setQuery(Google_Service_Analytics_RealtimeDataQuery $query) + { + $this->query = $query; + } + + public function getQuery() + { + return $this->query; + } + + public function setRows($rows) + { + $this->rows = $rows; + } + + public function getRows() + { + return $this->rows; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } + + public function setTotalsForAllResults($totalsForAllResults) + { + $this->totalsForAllResults = $totalsForAllResults; + } + + public function getTotalsForAllResults() + { + return $this->totalsForAllResults; + } +} + +class Google_Service_Analytics_RealtimeDataColumnHeaders extends Google_Model +{ + public $columnType; + public $dataType; + public $name; + + public function setColumnType($columnType) + { + $this->columnType = $columnType; + } + + public function getColumnType() + { + return $this->columnType; + } + + public function setDataType($dataType) + { + $this->dataType = $dataType; + } + + public function getDataType() + { + return $this->dataType; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_Analytics_RealtimeDataProfileInfo extends Google_Model +{ + public $accountId; + public $internalWebPropertyId; + public $profileId; + public $profileName; + public $tableId; + public $webPropertyId; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + + public function setProfileId($profileId) + { + $this->profileId = $profileId; + } + + public function getProfileId() + { + return $this->profileId; + } + + public function setProfileName($profileName) + { + $this->profileName = $profileName; + } + + public function getProfileName() + { + return $this->profileName; + } + + public function setTableId($tableId) + { + $this->tableId = $tableId; + } + + public function getTableId() + { + return $this->tableId; + } + + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} + +class Google_Service_Analytics_RealtimeDataQuery extends Google_Collection +{ + public $dimensions; + public $filters; + public $ids; + public $maxResults; + public $metrics; + public $sort; + + public function setDimensions($dimensions) + { + $this->dimensions = $dimensions; + } + + public function getDimensions() + { + return $this->dimensions; + } + + public function setFilters($filters) + { + $this->filters = $filters; + } + + public function getFilters() + { + return $this->filters; + } + + public function setIds($ids) + { + $this->ids = $ids; + } + + public function getIds() + { + return $this->ids; + } + + public function setMaxResults($maxResults) + { + $this->maxResults = $maxResults; + } + + public function getMaxResults() + { + return $this->maxResults; + } + + public function setMetrics($metrics) + { + $this->metrics = $metrics; + } + + public function getMetrics() + { + return $this->metrics; + } + + public function setSort($sort) + { + $this->sort = $sort; + } + + public function getSort() + { + return $this->sort; + } +} + +class Google_Service_Analytics_RealtimeDataTotalsForAllResults extends Google_Model +{ + +} + +class Google_Service_Analytics_Segment extends Google_Model +{ + public $created; + public $definition; + public $id; + public $kind; + public $name; + public $segmentId; + public $selfLink; + public $type; + public $updated; + + public function setCreated($created) + { + $this->created = $created; + } + + public function getCreated() + { + return $this->created; + } + + public function setDefinition($definition) + { + $this->definition = $definition; + } + + public function getDefinition() + { + return $this->definition; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setSegmentId($segmentId) + { + $this->segmentId = $segmentId; + } + + public function getSegmentId() + { + return $this->segmentId; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } +} + +class Google_Service_Analytics_Segments extends Google_Collection +{ + protected $itemsType = 'Google_Service_Analytics_Segment'; + protected $itemsDataType = 'array'; + public $itemsPerPage; + public $kind; + public $nextLink; + public $previousLink; + public $startIndex; + public $totalResults; + public $username; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + + public function getPreviousLink() + { + return $this->previousLink; + } + + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + + public function getStartIndex() + { + return $this->startIndex; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } + + public function setUsername($username) + { + $this->username = $username; + } + + public function getUsername() + { + return $this->username; + } +} + +class Google_Service_Analytics_UnsampledReport extends Google_Model +{ + public $accountId; + protected $cloudStorageDownloadDetailsType = 'Google_Service_Analytics_UnsampledReportCloudStorageDownloadDetails'; + protected $cloudStorageDownloadDetailsDataType = ''; + public $created; + public $dimensions; + public $downloadType; + protected $driveDownloadDetailsType = 'Google_Service_Analytics_UnsampledReportDriveDownloadDetails'; + protected $driveDownloadDetailsDataType = ''; + public $endDate; + public $filters; + public $id; + public $kind; + public $metrics; + public $profileId; + public $segment; + public $selfLink; + public $startDate; + public $status; + public $title; + public $updated; + public $webPropertyId; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setCloudStorageDownloadDetails(Google_Service_Analytics_UnsampledReportCloudStorageDownloadDetails $cloudStorageDownloadDetails) + { + $this->cloudStorageDownloadDetails = $cloudStorageDownloadDetails; + } + + public function getCloudStorageDownloadDetails() + { + return $this->cloudStorageDownloadDetails; + } + + public function setCreated($created) + { + $this->created = $created; + } + + public function getCreated() + { + return $this->created; + } + + public function setDimensions($dimensions) + { + $this->dimensions = $dimensions; + } + + public function getDimensions() + { + return $this->dimensions; + } + + public function setDownloadType($downloadType) + { + $this->downloadType = $downloadType; + } + + public function getDownloadType() + { + return $this->downloadType; + } + + public function setDriveDownloadDetails(Google_Service_Analytics_UnsampledReportDriveDownloadDetails $driveDownloadDetails) + { + $this->driveDownloadDetails = $driveDownloadDetails; + } + + public function getDriveDownloadDetails() + { + return $this->driveDownloadDetails; + } + + public function setEndDate($endDate) + { + $this->endDate = $endDate; + } + + public function getEndDate() + { + return $this->endDate; + } + + public function setFilters($filters) + { + $this->filters = $filters; + } + + public function getFilters() + { + return $this->filters; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMetrics($metrics) + { + $this->metrics = $metrics; + } + + public function getMetrics() + { + return $this->metrics; + } + + public function setProfileId($profileId) + { + $this->profileId = $profileId; + } + + public function getProfileId() + { + return $this->profileId; + } + + public function setSegment($segment) + { + $this->segment = $segment; + } + + public function getSegment() + { + return $this->segment; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setStartDate($startDate) + { + $this->startDate = $startDate; + } + + public function getStartDate() + { + return $this->startDate; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setWebPropertyId($webPropertyId) + { + $this->webPropertyId = $webPropertyId; + } + + public function getWebPropertyId() + { + return $this->webPropertyId; + } +} + +class Google_Service_Analytics_UnsampledReportCloudStorageDownloadDetails extends Google_Model +{ + public $bucketId; + public $objectId; + + public function setBucketId($bucketId) + { + $this->bucketId = $bucketId; + } + + public function getBucketId() + { + return $this->bucketId; + } + + public function setObjectId($objectId) + { + $this->objectId = $objectId; + } + + public function getObjectId() + { + return $this->objectId; + } +} + +class Google_Service_Analytics_UnsampledReportDriveDownloadDetails extends Google_Model +{ + public $documentId; + + public function setDocumentId($documentId) + { + $this->documentId = $documentId; + } + + public function getDocumentId() + { + return $this->documentId; + } +} + +class Google_Service_Analytics_UnsampledReports extends Google_Collection +{ + protected $itemsType = 'Google_Service_Analytics_UnsampledReport'; + protected $itemsDataType = 'array'; + public $itemsPerPage; + public $kind; + public $nextLink; + public $previousLink; + public $startIndex; + public $totalResults; + public $username; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + + public function getPreviousLink() + { + return $this->previousLink; + } + + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + + public function getStartIndex() + { + return $this->startIndex; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } + + public function setUsername($username) + { + $this->username = $username; + } + + public function getUsername() + { + return $this->username; + } +} + +class Google_Service_Analytics_Upload extends Google_Collection +{ + public $accountId; + public $customDataSourceId; + public $errors; + public $id; + public $kind; + public $status; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setCustomDataSourceId($customDataSourceId) + { + $this->customDataSourceId = $customDataSourceId; + } + + public function getCustomDataSourceId() + { + return $this->customDataSourceId; + } + + public function setErrors($errors) + { + $this->errors = $errors; + } + + public function getErrors() + { + return $this->errors; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_Analytics_Uploads extends Google_Collection +{ + protected $itemsType = 'Google_Service_Analytics_Upload'; + protected $itemsDataType = 'array'; + public $itemsPerPage; + public $kind; + public $nextLink; + public $previousLink; + public $startIndex; + public $totalResults; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + + public function getPreviousLink() + { + return $this->previousLink; + } + + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + + public function getStartIndex() + { + return $this->startIndex; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } +} + +class Google_Service_Analytics_UserRef extends Google_Model +{ + public $email; + public $id; + public $kind; + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Analytics_WebPropertyRef extends Google_Model +{ + public $accountId; + public $href; + public $id; + public $internalWebPropertyId; + public $kind; + public $name; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setHref($href) + { + $this->href = $href; + } + + public function getHref() + { + return $this->href; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_Analytics_WebPropertySummary extends Google_Collection +{ + public $id; + public $internalWebPropertyId; + public $kind; + public $level; + public $name; + protected $profilesType = 'Google_Service_Analytics_ProfileSummary'; + protected $profilesDataType = 'array'; + public $websiteUrl; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLevel($level) + { + $this->level = $level; + } + + public function getLevel() + { + return $this->level; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setProfiles($profiles) + { + $this->profiles = $profiles; + } + + public function getProfiles() + { + return $this->profiles; + } + + public function setWebsiteUrl($websiteUrl) + { + $this->websiteUrl = $websiteUrl; + } + + public function getWebsiteUrl() + { + return $this->websiteUrl; + } +} + +class Google_Service_Analytics_Webproperties extends Google_Collection +{ + protected $itemsType = 'Google_Service_Analytics_Webproperty'; + protected $itemsDataType = 'array'; + public $itemsPerPage; + public $kind; + public $nextLink; + public $previousLink; + public $startIndex; + public $totalResults; + public $username; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setPreviousLink($previousLink) + { + $this->previousLink = $previousLink; + } + + public function getPreviousLink() + { + return $this->previousLink; + } + + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + + public function getStartIndex() + { + return $this->startIndex; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } + + public function setUsername($username) + { + $this->username = $username; + } + + public function getUsername() + { + return $this->username; + } +} + +class Google_Service_Analytics_Webproperty extends Google_Model +{ + public $accountId; + protected $childLinkType = 'Google_Service_Analytics_WebpropertyChildLink'; + protected $childLinkDataType = ''; + public $created; + public $defaultProfileId; + public $id; + public $industryVertical; + public $internalWebPropertyId; + public $kind; + public $level; + public $name; + protected $parentLinkType = 'Google_Service_Analytics_WebpropertyParentLink'; + protected $parentLinkDataType = ''; + protected $permissionsType = 'Google_Service_Analytics_WebpropertyPermissions'; + protected $permissionsDataType = ''; + public $profileCount; + public $selfLink; + public $updated; + public $websiteUrl; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setChildLink(Google_Service_Analytics_WebpropertyChildLink $childLink) + { + $this->childLink = $childLink; + } + + public function getChildLink() + { + return $this->childLink; + } + + public function setCreated($created) + { + $this->created = $created; + } + + public function getCreated() + { + return $this->created; + } + + public function setDefaultProfileId($defaultProfileId) + { + $this->defaultProfileId = $defaultProfileId; + } + + public function getDefaultProfileId() + { + return $this->defaultProfileId; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setIndustryVertical($industryVertical) + { + $this->industryVertical = $industryVertical; + } + + public function getIndustryVertical() + { + return $this->industryVertical; + } + + public function setInternalWebPropertyId($internalWebPropertyId) + { + $this->internalWebPropertyId = $internalWebPropertyId; + } + + public function getInternalWebPropertyId() + { + return $this->internalWebPropertyId; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLevel($level) + { + $this->level = $level; + } + + public function getLevel() + { + return $this->level; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setParentLink(Google_Service_Analytics_WebpropertyParentLink $parentLink) + { + $this->parentLink = $parentLink; + } + + public function getParentLink() + { + return $this->parentLink; + } + + public function setPermissions(Google_Service_Analytics_WebpropertyPermissions $permissions) + { + $this->permissions = $permissions; + } + + public function getPermissions() + { + return $this->permissions; + } + + public function setProfileCount($profileCount) + { + $this->profileCount = $profileCount; + } + + public function getProfileCount() + { + return $this->profileCount; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setWebsiteUrl($websiteUrl) + { + $this->websiteUrl = $websiteUrl; + } + + public function getWebsiteUrl() + { + return $this->websiteUrl; + } +} + +class Google_Service_Analytics_WebpropertyChildLink extends Google_Model +{ + public $href; + public $type; + + public function setHref($href) + { + $this->href = $href; + } + + public function getHref() + { + return $this->href; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Analytics_WebpropertyParentLink extends Google_Model +{ + public $href; + public $type; + + public function setHref($href) + { + $this->href = $href; + } + + public function getHref() + { + return $this->href; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Analytics_WebpropertyPermissions extends Google_Collection +{ + public $effective; + + public function setEffective($effective) + { + $this->effective = $effective; + } + + public function getEffective() + { + return $this->effective; + } +} diff --git a/oauth/Google/Service/AndroidPublisher.php b/oauth/Google/Service/AndroidPublisher.php new file mode 100644 index 0000000..41a94e0 --- /dev/null +++ b/oauth/Google/Service/AndroidPublisher.php @@ -0,0 +1,3213 @@ + + * Lets Android application developers access their Google Play accounts. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_AndroidPublisher extends Google_Service +{ + /** View and manage your Google Play Android Developer account. */ + const ANDROIDPUBLISHER = "https://www.googleapis.com/auth/androidpublisher"; + + public $edits; + public $edits_apklistings; + public $edits_apks; + public $edits_details; + public $edits_expansionfiles; + public $edits_images; + public $edits_listings; + public $edits_testers; + public $edits_tracks; + public $inappproducts; + public $purchases_products; + public $purchases_subscriptions; + + + /** + * Constructs the internal representation of the AndroidPublisher service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'androidpublisher/v2/applications/'; + $this->version = 'v2'; + $this->serviceName = 'androidpublisher'; + + $this->edits = new Google_Service_AndroidPublisher_Edits_Resource( + $this, + $this->serviceName, + 'edits', + array( + 'methods' => array( + 'commit' => array( + 'path' => '{packageName}/edits/{editId}:commit', + 'httpMethod' => 'POST', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => '{packageName}/edits/{editId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{packageName}/edits/{editId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{packageName}/edits', + 'httpMethod' => 'POST', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->edits_apklistings = new Google_Service_AndroidPublisher_EditsApklistings_Resource( + $this, + $this->serviceName, + 'apklistings', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{packageName}/edits/{editId}/apks/{apkVersionCode}/listings/{language}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'apkVersionCode' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'language' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'deleteall' => array( + 'path' => '{packageName}/edits/{editId}/apks/{apkVersionCode}/listings', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'apkVersionCode' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{packageName}/edits/{editId}/apks/{apkVersionCode}/listings/{language}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'apkVersionCode' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'language' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{packageName}/edits/{editId}/apks/{apkVersionCode}/listings', + 'httpMethod' => 'GET', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'apkVersionCode' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => '{packageName}/edits/{editId}/apks/{apkVersionCode}/listings/{language}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'apkVersionCode' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'language' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => '{packageName}/edits/{editId}/apks/{apkVersionCode}/listings/{language}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'apkVersionCode' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'language' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->edits_apks = new Google_Service_AndroidPublisher_EditsApks_Resource( + $this, + $this->serviceName, + 'apks', + array( + 'methods' => array( + 'list' => array( + 'path' => '{packageName}/edits/{editId}/apks', + 'httpMethod' => 'GET', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'upload' => array( + 'path' => '{packageName}/edits/{editId}/apks', + 'httpMethod' => 'POST', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->edits_details = new Google_Service_AndroidPublisher_EditsDetails_Resource( + $this, + $this->serviceName, + 'details', + array( + 'methods' => array( + 'get' => array( + 'path' => '{packageName}/edits/{editId}/details', + 'httpMethod' => 'GET', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => '{packageName}/edits/{editId}/details', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => '{packageName}/edits/{editId}/details', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->edits_expansionfiles = new Google_Service_AndroidPublisher_EditsExpansionfiles_Resource( + $this, + $this->serviceName, + 'expansionfiles', + array( + 'methods' => array( + 'get' => array( + 'path' => '{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'apkVersionCode' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'expansionFileType' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => '{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'apkVersionCode' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'expansionFileType' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => '{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'apkVersionCode' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'expansionFileType' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'upload' => array( + 'path' => '{packageName}/edits/{editId}/apks/{apkVersionCode}/expansionFiles/{expansionFileType}', + 'httpMethod' => 'POST', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'apkVersionCode' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'expansionFileType' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->edits_images = new Google_Service_AndroidPublisher_EditsImages_Resource( + $this, + $this->serviceName, + 'images', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{packageName}/edits/{editId}/listings/{language}/{imageType}/{imageId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'imageType' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'imageId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'deleteall' => array( + 'path' => '{packageName}/edits/{editId}/listings/{language}/{imageType}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'imageType' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{packageName}/edits/{editId}/listings/{language}/{imageType}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'imageType' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'upload' => array( + 'path' => '{packageName}/edits/{editId}/listings/{language}/{imageType}', + 'httpMethod' => 'POST', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'imageType' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->edits_listings = new Google_Service_AndroidPublisher_EditsListings_Resource( + $this, + $this->serviceName, + 'listings', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{packageName}/edits/{editId}/listings/{language}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'deleteall' => array( + 'path' => '{packageName}/edits/{editId}/listings', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{packageName}/edits/{editId}/listings/{language}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{packageName}/edits/{editId}/listings', + 'httpMethod' => 'GET', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => '{packageName}/edits/{editId}/listings/{language}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => '{packageName}/edits/{editId}/listings/{language}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->edits_testers = new Google_Service_AndroidPublisher_EditsTesters_Resource( + $this, + $this->serviceName, + 'testers', + array( + 'methods' => array( + 'get' => array( + 'path' => '{packageName}/edits/{editId}/testers/{track}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'track' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => '{packageName}/edits/{editId}/testers/{track}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'track' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => '{packageName}/edits/{editId}/testers/{track}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'track' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->edits_tracks = new Google_Service_AndroidPublisher_EditsTracks_Resource( + $this, + $this->serviceName, + 'tracks', + array( + 'methods' => array( + 'get' => array( + 'path' => '{packageName}/edits/{editId}/tracks/{track}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'track' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{packageName}/edits/{editId}/tracks', + 'httpMethod' => 'GET', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => '{packageName}/edits/{editId}/tracks/{track}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'track' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => '{packageName}/edits/{editId}/tracks/{track}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'editId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'track' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->inappproducts = new Google_Service_AndroidPublisher_Inappproducts_Resource( + $this, + $this->serviceName, + 'inappproducts', + array( + 'methods' => array( + 'batch' => array( + 'path' => 'inappproducts/batch', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'delete' => array( + 'path' => '{packageName}/inappproducts/{sku}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sku' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{packageName}/inappproducts/{sku}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sku' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{packageName}/inappproducts', + 'httpMethod' => 'POST', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'autoConvertMissingPrices' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'list' => array( + 'path' => '{packageName}/inappproducts', + 'httpMethod' => 'GET', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'token' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startIndex' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => '{packageName}/inappproducts/{sku}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sku' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'autoConvertMissingPrices' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'update' => array( + 'path' => '{packageName}/inappproducts/{sku}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sku' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'autoConvertMissingPrices' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ), + ) + ) + ); + $this->purchases_products = new Google_Service_AndroidPublisher_PurchasesProducts_Resource( + $this, + $this->serviceName, + 'products', + array( + 'methods' => array( + 'get' => array( + 'path' => '{packageName}/purchases/products/{productId}/tokens/{token}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'productId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'token' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->purchases_subscriptions = new Google_Service_AndroidPublisher_PurchasesSubscriptions_Resource( + $this, + $this->serviceName, + 'subscriptions', + array( + 'methods' => array( + 'cancel' => array( + 'path' => '{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}:cancel', + 'httpMethod' => 'POST', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'subscriptionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'token' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{packageName}/purchases/subscriptions/{subscriptionId}/tokens/{token}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'packageName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'subscriptionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'token' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "edits" collection of methods. + * Typical usage is: + * + * $androidpublisherService = new Google_Service_AndroidPublisher(...); + * $edits = $androidpublisherService->edits; + * + */ +class Google_Service_AndroidPublisher_Edits_Resource extends Google_Service_Resource +{ + + /** + * Commits/applies the changes made in this edit back to the app. (edits.commit) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_AppEdit + */ + public function commit($packageName, $editId, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId); + $params = array_merge($params, $optParams); + return $this->call('commit', array($params), "Google_Service_AndroidPublisher_AppEdit"); + } + /** + * Deletes an edit for an app. Creating a new edit will automatically delete any + * of your previous edits so this method need only be called if you want to + * preemptively abandon an edit. (edits.delete) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param array $optParams Optional parameters. + */ + public function delete($packageName, $editId, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Returns information about the edit specified. Calls will fail if the edit is + * no long active (e.g. has been deleted, superseded or expired). (edits.get) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_AppEdit + */ + public function get($packageName, $editId, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AndroidPublisher_AppEdit"); + } + /** + * Creates a new edit for an app, populated with the app's current state. + * (edits.insert) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param Google_AppEdit $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_AppEdit + */ + public function insert($packageName, Google_Service_AndroidPublisher_AppEdit $postBody, $optParams = array()) + { + $params = array('packageName' => $packageName, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_AndroidPublisher_AppEdit"); + } +} + +/** + * The "apklistings" collection of methods. + * Typical usage is: + * + * $androidpublisherService = new Google_Service_AndroidPublisher(...); + * $apklistings = $androidpublisherService->apklistings; + * + */ +class Google_Service_AndroidPublisher_EditsApklistings_Resource extends Google_Service_Resource +{ + + /** + * Deletes the APK-specific localized listing for a specified APK and language + * code. (apklistings.delete) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param int $apkVersionCode + * The APK version code whose APK-specific listings should be read or modified. + * @param string $language + * The language code (a BCP-47 language tag) of the APK-specific localized listing to read or + * modify. For example, to select Austrian German, pass "de-AT". + * @param array $optParams Optional parameters. + */ + public function delete($packageName, $editId, $apkVersionCode, $language, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'apkVersionCode' => $apkVersionCode, 'language' => $language); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Deletes all the APK-specific localized listings for a specified APK. + * (apklistings.deleteall) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param int $apkVersionCode + * The APK version code whose APK-specific listings should be read or modified. + * @param array $optParams Optional parameters. + */ + public function deleteall($packageName, $editId, $apkVersionCode, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'apkVersionCode' => $apkVersionCode); + $params = array_merge($params, $optParams); + return $this->call('deleteall', array($params)); + } + /** + * Fetches the APK-specific localized listing for a specified APK and language + * code. (apklistings.get) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param int $apkVersionCode + * The APK version code whose APK-specific listings should be read or modified. + * @param string $language + * The language code (a BCP-47 language tag) of the APK-specific localized listing to read or + * modify. For example, to select Austrian German, pass "de-AT". + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_ApkListing + */ + public function get($packageName, $editId, $apkVersionCode, $language, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'apkVersionCode' => $apkVersionCode, 'language' => $language); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AndroidPublisher_ApkListing"); + } + /** + * Lists all the APK-specific localized listings for a specified APK. + * (apklistings.listEditsApklistings) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param int $apkVersionCode + * The APK version code whose APK-specific listings should be read or modified. + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_ApkListingsListResponse + */ + public function listEditsApklistings($packageName, $editId, $apkVersionCode, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'apkVersionCode' => $apkVersionCode); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AndroidPublisher_ApkListingsListResponse"); + } + /** + * Updates or creates the APK-specific localized listing for a specified APK and + * language code. This method supports patch semantics. (apklistings.patch) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param int $apkVersionCode + * The APK version code whose APK-specific listings should be read or modified. + * @param string $language + * The language code (a BCP-47 language tag) of the APK-specific localized listing to read or + * modify. For example, to select Austrian German, pass "de-AT". + * @param Google_ApkListing $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_ApkListing + */ + public function patch($packageName, $editId, $apkVersionCode, $language, Google_Service_AndroidPublisher_ApkListing $postBody, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'apkVersionCode' => $apkVersionCode, 'language' => $language, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_AndroidPublisher_ApkListing"); + } + /** + * Updates or creates the APK-specific localized listing for a specified APK and + * language code. (apklistings.update) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param int $apkVersionCode + * The APK version code whose APK-specific listings should be read or modified. + * @param string $language + * The language code (a BCP-47 language tag) of the APK-specific localized listing to read or + * modify. For example, to select Austrian German, pass "de-AT". + * @param Google_ApkListing $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_ApkListing + */ + public function update($packageName, $editId, $apkVersionCode, $language, Google_Service_AndroidPublisher_ApkListing $postBody, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'apkVersionCode' => $apkVersionCode, 'language' => $language, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_AndroidPublisher_ApkListing"); + } +} +/** + * The "apks" collection of methods. + * Typical usage is: + * + * $androidpublisherService = new Google_Service_AndroidPublisher(...); + * $apks = $androidpublisherService->apks; + * + */ +class Google_Service_AndroidPublisher_EditsApks_Resource extends Google_Service_Resource +{ + + /** + * (apks.listEditsApks) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_ApksListResponse + */ + public function listEditsApks($packageName, $editId, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AndroidPublisher_ApksListResponse"); + } + /** + * (apks.upload) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_Apk + */ + public function upload($packageName, $editId, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId); + $params = array_merge($params, $optParams); + return $this->call('upload', array($params), "Google_Service_AndroidPublisher_Apk"); + } +} +/** + * The "details" collection of methods. + * Typical usage is: + * + * $androidpublisherService = new Google_Service_AndroidPublisher(...); + * $details = $androidpublisherService->details; + * + */ +class Google_Service_AndroidPublisher_EditsDetails_Resource extends Google_Service_Resource +{ + + /** + * Fetches app details for this edit. This includes the default language and + * developer support contact information. (details.get) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_AppDetails + */ + public function get($packageName, $editId, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AndroidPublisher_AppDetails"); + } + /** + * Updates app details for this edit. This method supports patch semantics. + * (details.patch) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param Google_AppDetails $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_AppDetails + */ + public function patch($packageName, $editId, Google_Service_AndroidPublisher_AppDetails $postBody, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_AndroidPublisher_AppDetails"); + } + /** + * Updates app details for this edit. (details.update) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param Google_AppDetails $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_AppDetails + */ + public function update($packageName, $editId, Google_Service_AndroidPublisher_AppDetails $postBody, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_AndroidPublisher_AppDetails"); + } +} +/** + * The "expansionfiles" collection of methods. + * Typical usage is: + * + * $androidpublisherService = new Google_Service_AndroidPublisher(...); + * $expansionfiles = $androidpublisherService->expansionfiles; + * + */ +class Google_Service_AndroidPublisher_EditsExpansionfiles_Resource extends Google_Service_Resource +{ + + /** + * Fetches the Expansion File configuration for the APK specified. + * (expansionfiles.get) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param int $apkVersionCode + * The version code of the APK whose Expansion File configuration is being read or modified. + * @param string $expansionFileType + * + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_ExpansionFile + */ + public function get($packageName, $editId, $apkVersionCode, $expansionFileType, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'apkVersionCode' => $apkVersionCode, 'expansionFileType' => $expansionFileType); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AndroidPublisher_ExpansionFile"); + } + /** + * Updates the APK's Expansion File configuration to reference another APK's + * Expansion Files. To add a new Expansion File use the Upload method. This + * method supports patch semantics. (expansionfiles.patch) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param int $apkVersionCode + * The version code of the APK whose Expansion File configuration is being read or modified. + * @param string $expansionFileType + * + * @param Google_ExpansionFile $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_ExpansionFile + */ + public function patch($packageName, $editId, $apkVersionCode, $expansionFileType, Google_Service_AndroidPublisher_ExpansionFile $postBody, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'apkVersionCode' => $apkVersionCode, 'expansionFileType' => $expansionFileType, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_AndroidPublisher_ExpansionFile"); + } + /** + * Updates the APK's Expansion File configuration to reference another APK's + * Expansion Files. To add a new Expansion File use the Upload method. + * (expansionfiles.update) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param int $apkVersionCode + * The version code of the APK whose Expansion File configuration is being read or modified. + * @param string $expansionFileType + * + * @param Google_ExpansionFile $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_ExpansionFile + */ + public function update($packageName, $editId, $apkVersionCode, $expansionFileType, Google_Service_AndroidPublisher_ExpansionFile $postBody, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'apkVersionCode' => $apkVersionCode, 'expansionFileType' => $expansionFileType, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_AndroidPublisher_ExpansionFile"); + } + /** + * Uploads and attaches a new Expansion File to the APK specified. + * (expansionfiles.upload) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param int $apkVersionCode + * The version code of the APK whose Expansion File configuration is being read or modified. + * @param string $expansionFileType + * + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_ExpansionFilesUploadResponse + */ + public function upload($packageName, $editId, $apkVersionCode, $expansionFileType, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'apkVersionCode' => $apkVersionCode, 'expansionFileType' => $expansionFileType); + $params = array_merge($params, $optParams); + return $this->call('upload', array($params), "Google_Service_AndroidPublisher_ExpansionFilesUploadResponse"); + } +} +/** + * The "images" collection of methods. + * Typical usage is: + * + * $androidpublisherService = new Google_Service_AndroidPublisher(...); + * $images = $androidpublisherService->images; + * + */ +class Google_Service_AndroidPublisher_EditsImages_Resource extends Google_Service_Resource +{ + + /** + * Deletes the image (specified by id) from the edit. (images.delete) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param string $language + * The language code (a BCP-47 language tag) of the localized listing whose images are to read or + * modified. For example, to select Austrian German, pass "de-AT". + * @param string $imageType + * + * @param string $imageId + * Unique identifier an image within the set of images attached to this edit. + * @param array $optParams Optional parameters. + */ + public function delete($packageName, $editId, $language, $imageType, $imageId, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'language' => $language, 'imageType' => $imageType, 'imageId' => $imageId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Deletes all images for the specified language and image type. + * (images.deleteall) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param string $language + * The language code (a BCP-47 language tag) of the localized listing whose images are to read or + * modified. For example, to select Austrian German, pass "de-AT". + * @param string $imageType + * + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_ImagesDeleteAllResponse + */ + public function deleteall($packageName, $editId, $language, $imageType, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'language' => $language, 'imageType' => $imageType); + $params = array_merge($params, $optParams); + return $this->call('deleteall', array($params), "Google_Service_AndroidPublisher_ImagesDeleteAllResponse"); + } + /** + * Lists all images for the specified language and image type. + * (images.listEditsImages) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param string $language + * The language code (a BCP-47 language tag) of the localized listing whose images are to read or + * modified. For example, to select Austrian German, pass "de-AT". + * @param string $imageType + * + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_ImagesListResponse + */ + public function listEditsImages($packageName, $editId, $language, $imageType, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'language' => $language, 'imageType' => $imageType); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AndroidPublisher_ImagesListResponse"); + } + /** + * Uploads a new image and adds it to the list of images for the specified + * language and image type. (images.upload) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param string $language + * The language code (a BCP-47 language tag) of the localized listing whose images are to read or + * modified. For example, to select Austrian German, pass "de-AT". + * @param string $imageType + * + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_ImagesUploadResponse + */ + public function upload($packageName, $editId, $language, $imageType, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'language' => $language, 'imageType' => $imageType); + $params = array_merge($params, $optParams); + return $this->call('upload', array($params), "Google_Service_AndroidPublisher_ImagesUploadResponse"); + } +} +/** + * The "listings" collection of methods. + * Typical usage is: + * + * $androidpublisherService = new Google_Service_AndroidPublisher(...); + * $listings = $androidpublisherService->listings; + * + */ +class Google_Service_AndroidPublisher_EditsListings_Resource extends Google_Service_Resource +{ + + /** + * Deletes the specified localized store listing from an edit. (listings.delete) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param string $language + * The language code (a BCP-47 language tag) of the localized listing to read or modify. For + * example, to select Austrian German, pass "de-AT". + * @param array $optParams Optional parameters. + */ + public function delete($packageName, $editId, $language, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'language' => $language); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Deletes all localized listings from an edit. (listings.deleteall) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param array $optParams Optional parameters. + */ + public function deleteall($packageName, $editId, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId); + $params = array_merge($params, $optParams); + return $this->call('deleteall', array($params)); + } + /** + * Fetches information about a localized store listing. (listings.get) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param string $language + * The language code (a BCP-47 language tag) of the localized listing to read or modify. For + * example, to select Austrian German, pass "de-AT". + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_Listing + */ + public function get($packageName, $editId, $language, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'language' => $language); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AndroidPublisher_Listing"); + } + /** + * Returns all of the localized store listings attached to this edit. + * (listings.listEditsListings) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_ListingsListResponse + */ + public function listEditsListings($packageName, $editId, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AndroidPublisher_ListingsListResponse"); + } + /** + * Creates or updates a localized store listing. This method supports patch + * semantics. (listings.patch) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param string $language + * The language code (a BCP-47 language tag) of the localized listing to read or modify. For + * example, to select Austrian German, pass "de-AT". + * @param Google_Listing $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_Listing + */ + public function patch($packageName, $editId, $language, Google_Service_AndroidPublisher_Listing $postBody, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'language' => $language, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_AndroidPublisher_Listing"); + } + /** + * Creates or updates a localized store listing. (listings.update) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param string $language + * The language code (a BCP-47 language tag) of the localized listing to read or modify. For + * example, to select Austrian German, pass "de-AT". + * @param Google_Listing $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_Listing + */ + public function update($packageName, $editId, $language, Google_Service_AndroidPublisher_Listing $postBody, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'language' => $language, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_AndroidPublisher_Listing"); + } +} +/** + * The "testers" collection of methods. + * Typical usage is: + * + * $androidpublisherService = new Google_Service_AndroidPublisher(...); + * $testers = $androidpublisherService->testers; + * + */ +class Google_Service_AndroidPublisher_EditsTesters_Resource extends Google_Service_Resource +{ + + /** + * (testers.get) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param string $track + * + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_Testers + */ + public function get($packageName, $editId, $track, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'track' => $track); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AndroidPublisher_Testers"); + } + /** + * (testers.patch) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param string $track + * + * @param Google_Testers $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_Testers + */ + public function patch($packageName, $editId, $track, Google_Service_AndroidPublisher_Testers $postBody, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'track' => $track, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_AndroidPublisher_Testers"); + } + /** + * (testers.update) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param string $track + * + * @param Google_Testers $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_Testers + */ + public function update($packageName, $editId, $track, Google_Service_AndroidPublisher_Testers $postBody, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'track' => $track, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_AndroidPublisher_Testers"); + } +} +/** + * The "tracks" collection of methods. + * Typical usage is: + * + * $androidpublisherService = new Google_Service_AndroidPublisher(...); + * $tracks = $androidpublisherService->tracks; + * + */ +class Google_Service_AndroidPublisher_EditsTracks_Resource extends Google_Service_Resource +{ + + /** + * Fetches the track configuration for the specified track type. Includes the + * APK version codes that are in this track. (tracks.get) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param string $track + * The track type to read or modify. + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_Track + */ + public function get($packageName, $editId, $track, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'track' => $track); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AndroidPublisher_Track"); + } + /** + * Lists all the track configurations for this edit. (tracks.listEditsTracks) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_TracksListResponse + */ + public function listEditsTracks($packageName, $editId, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AndroidPublisher_TracksListResponse"); + } + /** + * Updates the track configuration for the specified track type. This method + * supports patch semantics. (tracks.patch) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param string $track + * The track type to read or modify. + * @param Google_Track $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_Track + */ + public function patch($packageName, $editId, $track, Google_Service_AndroidPublisher_Track $postBody, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'track' => $track, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_AndroidPublisher_Track"); + } + /** + * Updates the track configuration for the specified track type. (tracks.update) + * + * @param string $packageName + * Unique identifier for the Android app that is being updated; for example, "com.spiffygame". + * @param string $editId + * Unique identifier for this edit. + * @param string $track + * The track type to read or modify. + * @param Google_Track $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_Track + */ + public function update($packageName, $editId, $track, Google_Service_AndroidPublisher_Track $postBody, $optParams = array()) + { + $params = array('packageName' => $packageName, 'editId' => $editId, 'track' => $track, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_AndroidPublisher_Track"); + } +} + +/** + * The "inappproducts" collection of methods. + * Typical usage is: + * + * $androidpublisherService = new Google_Service_AndroidPublisher(...); + * $inappproducts = $androidpublisherService->inappproducts; + * + */ +class Google_Service_AndroidPublisher_Inappproducts_Resource extends Google_Service_Resource +{ + + /** + * (inappproducts.batch) + * + * @param Google_InappproductsBatchRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_InappproductsBatchResponse + */ + public function batch(Google_Service_AndroidPublisher_InappproductsBatchRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('batch', array($params), "Google_Service_AndroidPublisher_InappproductsBatchResponse"); + } + /** + * Delete an in-app product for an app. (inappproducts.delete) + * + * @param string $packageName + * Unique identifier for the Android app with the in-app product; for example, "com.spiffygame". + * @param string $sku + * Unique identifier for the in-app product. + * @param array $optParams Optional parameters. + */ + public function delete($packageName, $sku, $optParams = array()) + { + $params = array('packageName' => $packageName, 'sku' => $sku); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Returns information about the in-app product specified. (inappproducts.get) + * + * @param string $packageName + * + * @param string $sku + * Unique identifier for the in-app product. + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_InAppProduct + */ + public function get($packageName, $sku, $optParams = array()) + { + $params = array('packageName' => $packageName, 'sku' => $sku); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AndroidPublisher_InAppProduct"); + } + /** + * Creates a new in-app product for an app. (inappproducts.insert) + * + * @param string $packageName + * Unique identifier for the Android app; for example, "com.spiffygame". + * @param Google_InAppProduct $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool autoConvertMissingPrices + * If true the prices for all regions targeted by the parent app that don't have a price specified + * for this in-app product will be auto converted to the target currency based on the default + * price. Defaults to false. + * @return Google_Service_AndroidPublisher_InAppProduct + */ + public function insert($packageName, Google_Service_AndroidPublisher_InAppProduct $postBody, $optParams = array()) + { + $params = array('packageName' => $packageName, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_AndroidPublisher_InAppProduct"); + } + /** + * List all the in-app products for an Android app, both subscriptions and + * managed in-app products.. (inappproducts.listInappproducts) + * + * @param string $packageName + * Unique identifier for the Android app with in-app products; for example, "com.spiffygame". + * @param array $optParams Optional parameters. + * + * @opt_param string token + * + * @opt_param string startIndex + * + * @opt_param string maxResults + * + * @return Google_Service_AndroidPublisher_InappproductsListResponse + */ + public function listInappproducts($packageName, $optParams = array()) + { + $params = array('packageName' => $packageName); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AndroidPublisher_InappproductsListResponse"); + } + /** + * Updates the details of an in-app product. This method supports patch + * semantics. (inappproducts.patch) + * + * @param string $packageName + * Unique identifier for the Android app with the in-app product; for example, "com.spiffygame". + * @param string $sku + * Unique identifier for the in-app product. + * @param Google_InAppProduct $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool autoConvertMissingPrices + * If true the prices for all regions targeted by the parent app that don't have a price specified + * for this in-app product will be auto converted to the target currency based on the default + * price. Defaults to false. + * @return Google_Service_AndroidPublisher_InAppProduct + */ + public function patch($packageName, $sku, Google_Service_AndroidPublisher_InAppProduct $postBody, $optParams = array()) + { + $params = array('packageName' => $packageName, 'sku' => $sku, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_AndroidPublisher_InAppProduct"); + } + /** + * Updates the details of an in-app product. (inappproducts.update) + * + * @param string $packageName + * Unique identifier for the Android app with the in-app product; for example, "com.spiffygame". + * @param string $sku + * Unique identifier for the in-app product. + * @param Google_InAppProduct $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool autoConvertMissingPrices + * If true the prices for all regions targeted by the parent app that don't have a price specified + * for this in-app product will be auto converted to the target currency based on the default + * price. Defaults to false. + * @return Google_Service_AndroidPublisher_InAppProduct + */ + public function update($packageName, $sku, Google_Service_AndroidPublisher_InAppProduct $postBody, $optParams = array()) + { + $params = array('packageName' => $packageName, 'sku' => $sku, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_AndroidPublisher_InAppProduct"); + } +} + +/** + * The "purchases" collection of methods. + * Typical usage is: + * + * $androidpublisherService = new Google_Service_AndroidPublisher(...); + * $purchases = $androidpublisherService->purchases; + * + */ +class Google_Service_AndroidPublisher_Purchases_Resource extends Google_Service_Resource +{ + +} + +/** + * The "products" collection of methods. + * Typical usage is: + * + * $androidpublisherService = new Google_Service_AndroidPublisher(...); + * $products = $androidpublisherService->products; + * + */ +class Google_Service_AndroidPublisher_PurchasesProducts_Resource extends Google_Service_Resource +{ + + /** + * Checks the purchase and consumption status of an inapp item. (products.get) + * + * @param string $packageName + * The package name of the application the inapp product was sold in (for example, + * 'com.some.thing'). + * @param string $productId + * The inapp product SKU (for example, 'com.some.thing.inapp1'). + * @param string $token + * The token provided to the user's device when the inapp product was purchased. + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_ProductPurchase + */ + public function get($packageName, $productId, $token, $optParams = array()) + { + $params = array('packageName' => $packageName, 'productId' => $productId, 'token' => $token); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AndroidPublisher_ProductPurchase"); + } +} +/** + * The "subscriptions" collection of methods. + * Typical usage is: + * + * $androidpublisherService = new Google_Service_AndroidPublisher(...); + * $subscriptions = $androidpublisherService->subscriptions; + * + */ +class Google_Service_AndroidPublisher_PurchasesSubscriptions_Resource extends Google_Service_Resource +{ + + /** + * Cancels a user's subscription purchase. The subscription remains valid until + * its expiration time. (subscriptions.cancel) + * + * @param string $packageName + * The package name of the application for which this subscription was purchased (for example, + * 'com.some.thing'). + * @param string $subscriptionId + * The purchased subscription ID (for example, 'monthly001'). + * @param string $token + * The token provided to the user's device when the subscription was purchased. + * @param array $optParams Optional parameters. + */ + public function cancel($packageName, $subscriptionId, $token, $optParams = array()) + { + $params = array('packageName' => $packageName, 'subscriptionId' => $subscriptionId, 'token' => $token); + $params = array_merge($params, $optParams); + return $this->call('cancel', array($params)); + } + /** + * Checks whether a user's subscription purchase is valid and returns its expiry + * time. (subscriptions.get) + * + * @param string $packageName + * The package name of the application for which this subscription was purchased (for example, + * 'com.some.thing'). + * @param string $subscriptionId + * The purchased subscription ID (for example, 'monthly001'). + * @param string $token + * The token provided to the user's device when the subscription was purchased. + * @param array $optParams Optional parameters. + * @return Google_Service_AndroidPublisher_SubscriptionPurchase + */ + public function get($packageName, $subscriptionId, $token, $optParams = array()) + { + $params = array('packageName' => $packageName, 'subscriptionId' => $subscriptionId, 'token' => $token); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AndroidPublisher_SubscriptionPurchase"); + } +} + + + + +class Google_Service_AndroidPublisher_Apk extends Google_Model +{ + protected $binaryType = 'Google_Service_AndroidPublisher_ApkBinary'; + protected $binaryDataType = ''; + public $versionCode; + + public function setBinary(Google_Service_AndroidPublisher_ApkBinary $binary) + { + $this->binary = $binary; + } + + public function getBinary() + { + return $this->binary; + } + + public function setVersionCode($versionCode) + { + $this->versionCode = $versionCode; + } + + public function getVersionCode() + { + return $this->versionCode; + } +} + +class Google_Service_AndroidPublisher_ApkBinary extends Google_Model +{ + public $sha1; + + public function setSha1($sha1) + { + $this->sha1 = $sha1; + } + + public function getSha1() + { + return $this->sha1; + } +} + +class Google_Service_AndroidPublisher_ApkListing extends Google_Model +{ + public $language; + public $recentChanges; + + public function setLanguage($language) + { + $this->language = $language; + } + + public function getLanguage() + { + return $this->language; + } + + public function setRecentChanges($recentChanges) + { + $this->recentChanges = $recentChanges; + } + + public function getRecentChanges() + { + return $this->recentChanges; + } +} + +class Google_Service_AndroidPublisher_ApkListingsListResponse extends Google_Collection +{ + public $kind; + protected $listingsType = 'Google_Service_AndroidPublisher_ApkListing'; + protected $listingsDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setListings($listings) + { + $this->listings = $listings; + } + + public function getListings() + { + return $this->listings; + } +} + +class Google_Service_AndroidPublisher_ApksListResponse extends Google_Collection +{ + protected $apksType = 'Google_Service_AndroidPublisher_Apk'; + protected $apksDataType = 'array'; + public $kind; + + public function setApks($apks) + { + $this->apks = $apks; + } + + public function getApks() + { + return $this->apks; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_AndroidPublisher_AppDetails extends Google_Model +{ + public $contactEmail; + public $contactPhone; + public $contactWebsite; + public $defaultLanguage; + + public function setContactEmail($contactEmail) + { + $this->contactEmail = $contactEmail; + } + + public function getContactEmail() + { + return $this->contactEmail; + } + + public function setContactPhone($contactPhone) + { + $this->contactPhone = $contactPhone; + } + + public function getContactPhone() + { + return $this->contactPhone; + } + + public function setContactWebsite($contactWebsite) + { + $this->contactWebsite = $contactWebsite; + } + + public function getContactWebsite() + { + return $this->contactWebsite; + } + + public function setDefaultLanguage($defaultLanguage) + { + $this->defaultLanguage = $defaultLanguage; + } + + public function getDefaultLanguage() + { + return $this->defaultLanguage; + } +} + +class Google_Service_AndroidPublisher_AppEdit extends Google_Model +{ + public $expiryTimeSeconds; + public $id; + + public function setExpiryTimeSeconds($expiryTimeSeconds) + { + $this->expiryTimeSeconds = $expiryTimeSeconds; + } + + public function getExpiryTimeSeconds() + { + return $this->expiryTimeSeconds; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } +} + +class Google_Service_AndroidPublisher_ExpansionFile extends Google_Model +{ + public $fileSize; + public $referencesVersion; + + public function setFileSize($fileSize) + { + $this->fileSize = $fileSize; + } + + public function getFileSize() + { + return $this->fileSize; + } + + public function setReferencesVersion($referencesVersion) + { + $this->referencesVersion = $referencesVersion; + } + + public function getReferencesVersion() + { + return $this->referencesVersion; + } +} + +class Google_Service_AndroidPublisher_ExpansionFilesUploadResponse extends Google_Model +{ + protected $expansionFileType = 'Google_Service_AndroidPublisher_ExpansionFile'; + protected $expansionFileDataType = ''; + + public function setExpansionFile(Google_Service_AndroidPublisher_ExpansionFile $expansionFile) + { + $this->expansionFile = $expansionFile; + } + + public function getExpansionFile() + { + return $this->expansionFile; + } +} + +class Google_Service_AndroidPublisher_Image extends Google_Model +{ + public $id; + public $sha1; + public $url; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setSha1($sha1) + { + $this->sha1 = $sha1; + } + + public function getSha1() + { + return $this->sha1; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_AndroidPublisher_ImagesDeleteAllResponse extends Google_Collection +{ + protected $deletedType = 'Google_Service_AndroidPublisher_Image'; + protected $deletedDataType = 'array'; + + public function setDeleted($deleted) + { + $this->deleted = $deleted; + } + + public function getDeleted() + { + return $this->deleted; + } +} + +class Google_Service_AndroidPublisher_ImagesListResponse extends Google_Collection +{ + protected $imagesType = 'Google_Service_AndroidPublisher_Image'; + protected $imagesDataType = 'array'; + + public function setImages($images) + { + $this->images = $images; + } + + public function getImages() + { + return $this->images; + } +} + +class Google_Service_AndroidPublisher_ImagesUploadResponse extends Google_Model +{ + protected $imageType = 'Google_Service_AndroidPublisher_Image'; + protected $imageDataType = ''; + + public function setImage(Google_Service_AndroidPublisher_Image $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } +} + +class Google_Service_AndroidPublisher_InAppProduct extends Google_Model +{ + public $defaultLanguage; + protected $defaultPriceType = 'Google_Service_AndroidPublisher_Price'; + protected $defaultPriceDataType = ''; + protected $listingsType = 'Google_Service_AndroidPublisher_InAppProductListing'; + protected $listingsDataType = 'map'; + public $packageName; + protected $pricesType = 'Google_Service_AndroidPublisher_Price'; + protected $pricesDataType = 'map'; + public $purchaseType; + public $sku; + public $status; + public $subscriptionPeriod; + public $trialPeriod; + + public function setDefaultLanguage($defaultLanguage) + { + $this->defaultLanguage = $defaultLanguage; + } + + public function getDefaultLanguage() + { + return $this->defaultLanguage; + } + + public function setDefaultPrice(Google_Service_AndroidPublisher_Price $defaultPrice) + { + $this->defaultPrice = $defaultPrice; + } + + public function getDefaultPrice() + { + return $this->defaultPrice; + } + + public function setListings($listings) + { + $this->listings = $listings; + } + + public function getListings() + { + return $this->listings; + } + + public function setPackageName($packageName) + { + $this->packageName = $packageName; + } + + public function getPackageName() + { + return $this->packageName; + } + + public function setPrices($prices) + { + $this->prices = $prices; + } + + public function getPrices() + { + return $this->prices; + } + + public function setPurchaseType($purchaseType) + { + $this->purchaseType = $purchaseType; + } + + public function getPurchaseType() + { + return $this->purchaseType; + } + + public function setSku($sku) + { + $this->sku = $sku; + } + + public function getSku() + { + return $this->sku; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setSubscriptionPeriod($subscriptionPeriod) + { + $this->subscriptionPeriod = $subscriptionPeriod; + } + + public function getSubscriptionPeriod() + { + return $this->subscriptionPeriod; + } + + public function setTrialPeriod($trialPeriod) + { + $this->trialPeriod = $trialPeriod; + } + + public function getTrialPeriod() + { + return $this->trialPeriod; + } +} + +class Google_Service_AndroidPublisher_InAppProductListing extends Google_Model +{ + public $description; + public $title; + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_AndroidPublisher_InAppProductListings extends Google_Model +{ + +} + +class Google_Service_AndroidPublisher_InAppProductPrices extends Google_Model +{ + +} + +class Google_Service_AndroidPublisher_InappproductsBatchRequest extends Google_Collection +{ + protected $entrysType = 'Google_Service_AndroidPublisher_InappproductsBatchRequestEntry'; + protected $entrysDataType = 'array'; + + public function setEntrys($entrys) + { + $this->entrys = $entrys; + } + + public function getEntrys() + { + return $this->entrys; + } +} + +class Google_Service_AndroidPublisher_InappproductsBatchRequestEntry extends Google_Model +{ + public $batchId; + protected $inappproductsinsertrequestType = 'Google_Service_AndroidPublisher_InappproductsInsertRequest'; + protected $inappproductsinsertrequestDataType = ''; + protected $inappproductsupdaterequestType = 'Google_Service_AndroidPublisher_InappproductsUpdateRequest'; + protected $inappproductsupdaterequestDataType = ''; + public $methodName; + + public function setBatchId($batchId) + { + $this->batchId = $batchId; + } + + public function getBatchId() + { + return $this->batchId; + } + + public function setInappproductsinsertrequest(Google_Service_AndroidPublisher_InappproductsInsertRequest $inappproductsinsertrequest) + { + $this->inappproductsinsertrequest = $inappproductsinsertrequest; + } + + public function getInappproductsinsertrequest() + { + return $this->inappproductsinsertrequest; + } + + public function setInappproductsupdaterequest(Google_Service_AndroidPublisher_InappproductsUpdateRequest $inappproductsupdaterequest) + { + $this->inappproductsupdaterequest = $inappproductsupdaterequest; + } + + public function getInappproductsupdaterequest() + { + return $this->inappproductsupdaterequest; + } + + public function setMethodName($methodName) + { + $this->methodName = $methodName; + } + + public function getMethodName() + { + return $this->methodName; + } +} + +class Google_Service_AndroidPublisher_InappproductsBatchResponse extends Google_Collection +{ + protected $entrysType = 'Google_Service_AndroidPublisher_InappproductsBatchResponseEntry'; + protected $entrysDataType = 'array'; + public $kind; + + public function setEntrys($entrys) + { + $this->entrys = $entrys; + } + + public function getEntrys() + { + return $this->entrys; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_AndroidPublisher_InappproductsBatchResponseEntry extends Google_Model +{ + public $batchId; + protected $inappproductsinsertresponseType = 'Google_Service_AndroidPublisher_InappproductsInsertResponse'; + protected $inappproductsinsertresponseDataType = ''; + protected $inappproductsupdateresponseType = 'Google_Service_AndroidPublisher_InappproductsUpdateResponse'; + protected $inappproductsupdateresponseDataType = ''; + + public function setBatchId($batchId) + { + $this->batchId = $batchId; + } + + public function getBatchId() + { + return $this->batchId; + } + + public function setInappproductsinsertresponse(Google_Service_AndroidPublisher_InappproductsInsertResponse $inappproductsinsertresponse) + { + $this->inappproductsinsertresponse = $inappproductsinsertresponse; + } + + public function getInappproductsinsertresponse() + { + return $this->inappproductsinsertresponse; + } + + public function setInappproductsupdateresponse(Google_Service_AndroidPublisher_InappproductsUpdateResponse $inappproductsupdateresponse) + { + $this->inappproductsupdateresponse = $inappproductsupdateresponse; + } + + public function getInappproductsupdateresponse() + { + return $this->inappproductsupdateresponse; + } +} + +class Google_Service_AndroidPublisher_InappproductsInsertRequest extends Google_Model +{ + protected $inappproductType = 'Google_Service_AndroidPublisher_InAppProduct'; + protected $inappproductDataType = ''; + + public function setInappproduct(Google_Service_AndroidPublisher_InAppProduct $inappproduct) + { + $this->inappproduct = $inappproduct; + } + + public function getInappproduct() + { + return $this->inappproduct; + } +} + +class Google_Service_AndroidPublisher_InappproductsInsertResponse extends Google_Model +{ + protected $inappproductType = 'Google_Service_AndroidPublisher_InAppProduct'; + protected $inappproductDataType = ''; + + public function setInappproduct(Google_Service_AndroidPublisher_InAppProduct $inappproduct) + { + $this->inappproduct = $inappproduct; + } + + public function getInappproduct() + { + return $this->inappproduct; + } +} + +class Google_Service_AndroidPublisher_InappproductsListResponse extends Google_Collection +{ + protected $inappproductType = 'Google_Service_AndroidPublisher_InAppProduct'; + protected $inappproductDataType = 'array'; + public $kind; + protected $pageInfoType = 'Google_Service_AndroidPublisher_PageInfo'; + protected $pageInfoDataType = ''; + protected $tokenPaginationType = 'Google_Service_AndroidPublisher_TokenPagination'; + protected $tokenPaginationDataType = ''; + + public function setInappproduct($inappproduct) + { + $this->inappproduct = $inappproduct; + } + + public function getInappproduct() + { + return $this->inappproduct; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPageInfo(Google_Service_AndroidPublisher_PageInfo $pageInfo) + { + $this->pageInfo = $pageInfo; + } + + public function getPageInfo() + { + return $this->pageInfo; + } + + public function setTokenPagination(Google_Service_AndroidPublisher_TokenPagination $tokenPagination) + { + $this->tokenPagination = $tokenPagination; + } + + public function getTokenPagination() + { + return $this->tokenPagination; + } +} + +class Google_Service_AndroidPublisher_InappproductsUpdateRequest extends Google_Model +{ + protected $inappproductType = 'Google_Service_AndroidPublisher_InAppProduct'; + protected $inappproductDataType = ''; + + public function setInappproduct(Google_Service_AndroidPublisher_InAppProduct $inappproduct) + { + $this->inappproduct = $inappproduct; + } + + public function getInappproduct() + { + return $this->inappproduct; + } +} + +class Google_Service_AndroidPublisher_InappproductsUpdateResponse extends Google_Model +{ + protected $inappproductType = 'Google_Service_AndroidPublisher_InAppProduct'; + protected $inappproductDataType = ''; + + public function setInappproduct(Google_Service_AndroidPublisher_InAppProduct $inappproduct) + { + $this->inappproduct = $inappproduct; + } + + public function getInappproduct() + { + return $this->inappproduct; + } +} + +class Google_Service_AndroidPublisher_Listing extends Google_Model +{ + public $fullDescription; + public $language; + public $shortDescription; + public $title; + public $video; + + public function setFullDescription($fullDescription) + { + $this->fullDescription = $fullDescription; + } + + public function getFullDescription() + { + return $this->fullDescription; + } + + public function setLanguage($language) + { + $this->language = $language; + } + + public function getLanguage() + { + return $this->language; + } + + public function setShortDescription($shortDescription) + { + $this->shortDescription = $shortDescription; + } + + public function getShortDescription() + { + return $this->shortDescription; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setVideo($video) + { + $this->video = $video; + } + + public function getVideo() + { + return $this->video; + } +} + +class Google_Service_AndroidPublisher_ListingsListResponse extends Google_Collection +{ + public $kind; + protected $listingsType = 'Google_Service_AndroidPublisher_Listing'; + protected $listingsDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setListings($listings) + { + $this->listings = $listings; + } + + public function getListings() + { + return $this->listings; + } +} + +class Google_Service_AndroidPublisher_PageInfo extends Google_Model +{ + public $resultPerPage; + public $startIndex; + public $totalResults; + + public function setResultPerPage($resultPerPage) + { + $this->resultPerPage = $resultPerPage; + } + + public function getResultPerPage() + { + return $this->resultPerPage; + } + + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + + public function getStartIndex() + { + return $this->startIndex; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } +} + +class Google_Service_AndroidPublisher_Price extends Google_Model +{ + public $currency; + public $priceMicros; + + public function setCurrency($currency) + { + $this->currency = $currency; + } + + public function getCurrency() + { + return $this->currency; + } + + public function setPriceMicros($priceMicros) + { + $this->priceMicros = $priceMicros; + } + + public function getPriceMicros() + { + return $this->priceMicros; + } +} + +class Google_Service_AndroidPublisher_ProductPurchase extends Google_Model +{ + public $consumptionState; + public $developerPayload; + public $kind; + public $purchaseState; + public $purchaseTimeMillis; + + public function setConsumptionState($consumptionState) + { + $this->consumptionState = $consumptionState; + } + + public function getConsumptionState() + { + return $this->consumptionState; + } + + public function setDeveloperPayload($developerPayload) + { + $this->developerPayload = $developerPayload; + } + + public function getDeveloperPayload() + { + return $this->developerPayload; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPurchaseState($purchaseState) + { + $this->purchaseState = $purchaseState; + } + + public function getPurchaseState() + { + return $this->purchaseState; + } + + public function setPurchaseTimeMillis($purchaseTimeMillis) + { + $this->purchaseTimeMillis = $purchaseTimeMillis; + } + + public function getPurchaseTimeMillis() + { + return $this->purchaseTimeMillis; + } +} + +class Google_Service_AndroidPublisher_SubscriptionPurchase extends Google_Model +{ + public $autoRenewing; + public $expiryTimeMillis; + public $kind; + public $startTimeMillis; + + public function setAutoRenewing($autoRenewing) + { + $this->autoRenewing = $autoRenewing; + } + + public function getAutoRenewing() + { + return $this->autoRenewing; + } + + public function setExpiryTimeMillis($expiryTimeMillis) + { + $this->expiryTimeMillis = $expiryTimeMillis; + } + + public function getExpiryTimeMillis() + { + return $this->expiryTimeMillis; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setStartTimeMillis($startTimeMillis) + { + $this->startTimeMillis = $startTimeMillis; + } + + public function getStartTimeMillis() + { + return $this->startTimeMillis; + } +} + +class Google_Service_AndroidPublisher_Testers extends Google_Collection +{ + public $googleGroups; + public $googlePlusCommunities; + + public function setGoogleGroups($googleGroups) + { + $this->googleGroups = $googleGroups; + } + + public function getGoogleGroups() + { + return $this->googleGroups; + } + + public function setGooglePlusCommunities($googlePlusCommunities) + { + $this->googlePlusCommunities = $googlePlusCommunities; + } + + public function getGooglePlusCommunities() + { + return $this->googlePlusCommunities; + } +} + +class Google_Service_AndroidPublisher_TokenPagination extends Google_Model +{ + public $nextPageToken; + public $previousPageToken; + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPreviousPageToken($previousPageToken) + { + $this->previousPageToken = $previousPageToken; + } + + public function getPreviousPageToken() + { + return $this->previousPageToken; + } +} + +class Google_Service_AndroidPublisher_Track extends Google_Collection +{ + public $track; + public $userFraction; + public $versionCodes; + + public function setTrack($track) + { + $this->track = $track; + } + + public function getTrack() + { + return $this->track; + } + + public function setUserFraction($userFraction) + { + $this->userFraction = $userFraction; + } + + public function getUserFraction() + { + return $this->userFraction; + } + + public function setVersionCodes($versionCodes) + { + $this->versionCodes = $versionCodes; + } + + public function getVersionCodes() + { + return $this->versionCodes; + } +} + +class Google_Service_AndroidPublisher_TracksListResponse extends Google_Collection +{ + public $kind; + protected $tracksType = 'Google_Service_AndroidPublisher_Track'; + protected $tracksDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setTracks($tracks) + { + $this->tracks = $tracks; + } + + public function getTracks() + { + return $this->tracks; + } +} diff --git a/oauth/Google/Service/AppState.php b/oauth/Google/Service/AppState.php new file mode 100644 index 0000000..fa5311a --- /dev/null +++ b/oauth/Google/Service/AppState.php @@ -0,0 +1,374 @@ + + * The Google App State API. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_AppState extends Google_Service +{ + /** View and manage your data for this application. */ + const APPSTATE = "https://www.googleapis.com/auth/appstate"; + + public $states; + + + /** + * Constructs the internal representation of the AppState service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'appstate/v1/'; + $this->version = 'v1'; + $this->serviceName = 'appstate'; + + $this->states = new Google_Service_AppState_States_Resource( + $this, + $this->serviceName, + 'states', + array( + 'methods' => array( + 'clear' => array( + 'path' => 'states/{stateKey}/clear', + 'httpMethod' => 'POST', + 'parameters' => array( + 'stateKey' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'currentDataVersion' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'delete' => array( + 'path' => 'states/{stateKey}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'stateKey' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'states/{stateKey}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'stateKey' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'states', + 'httpMethod' => 'GET', + 'parameters' => array( + 'includeData' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'update' => array( + 'path' => 'states/{stateKey}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'stateKey' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'currentStateVersion' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "states" collection of methods. + * Typical usage is: + * + * $appstateService = new Google_Service_AppState(...); + * $states = $appstateService->states; + * + */ +class Google_Service_AppState_States_Resource extends Google_Service_Resource +{ + + /** + * Clears (sets to empty) the data for the passed key if and only if the passed + * version matches the currently stored version. This method results in a + * conflict error on version mismatch. (states.clear) + * + * @param int $stateKey + * The key for the data to be retrieved. + * @param array $optParams Optional parameters. + * + * @opt_param string currentDataVersion + * The version of the data to be cleared. Version strings are returned by the server. + * @return Google_Service_AppState_WriteResult + */ + public function clear($stateKey, $optParams = array()) + { + $params = array('stateKey' => $stateKey); + $params = array_merge($params, $optParams); + return $this->call('clear', array($params), "Google_Service_AppState_WriteResult"); + } + /** + * Deletes a key and the data associated with it. The key is removed and no + * longer counts against the key quota. Note that since this method is not safe + * in the face of concurrent modifications, it should only be used for + * development and testing purposes. Invoking this method in shipping code can + * result in data loss and data corruption. (states.delete) + * + * @param int $stateKey + * The key for the data to be retrieved. + * @param array $optParams Optional parameters. + */ + public function delete($stateKey, $optParams = array()) + { + $params = array('stateKey' => $stateKey); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves the data corresponding to the passed key. If the key does not exist + * on the server, an HTTP 404 will be returned. (states.get) + * + * @param int $stateKey + * The key for the data to be retrieved. + * @param array $optParams Optional parameters. + * @return Google_Service_AppState_GetResponse + */ + public function get($stateKey, $optParams = array()) + { + $params = array('stateKey' => $stateKey); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_AppState_GetResponse"); + } + /** + * Lists all the states keys, and optionally the state data. (states.listStates) + * + * @param array $optParams Optional parameters. + * + * @opt_param bool includeData + * Whether to include the full data in addition to the version number + * @return Google_Service_AppState_ListResponse + */ + public function listStates($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_AppState_ListResponse"); + } + /** + * Update the data associated with the input key if and only if the passed + * version matches the currently stored version. This method is safe in the face + * of concurrent writes. Maximum per-key size is 128KB. (states.update) + * + * @param int $stateKey + * The key for the data to be retrieved. + * @param Google_UpdateRequest $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string currentStateVersion + * The version of the app state your application is attempting to update. If this does not match + * the current version, this method will return a conflict error. If there is no data stored on the + * server for this key, the update will succeed irrespective of the value of this parameter. + * @return Google_Service_AppState_WriteResult + */ + public function update($stateKey, Google_Service_AppState_UpdateRequest $postBody, $optParams = array()) + { + $params = array('stateKey' => $stateKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_AppState_WriteResult"); + } +} + + + + +class Google_Service_AppState_GetResponse extends Google_Model +{ + public $currentStateVersion; + public $data; + public $kind; + public $stateKey; + + public function setCurrentStateVersion($currentStateVersion) + { + $this->currentStateVersion = $currentStateVersion; + } + + public function getCurrentStateVersion() + { + return $this->currentStateVersion; + } + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setStateKey($stateKey) + { + $this->stateKey = $stateKey; + } + + public function getStateKey() + { + return $this->stateKey; + } +} + +class Google_Service_AppState_ListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_AppState_GetResponse'; + protected $itemsDataType = 'array'; + public $kind; + public $maximumKeyCount; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMaximumKeyCount($maximumKeyCount) + { + $this->maximumKeyCount = $maximumKeyCount; + } + + public function getMaximumKeyCount() + { + return $this->maximumKeyCount; + } +} + +class Google_Service_AppState_UpdateRequest extends Google_Model +{ + public $data; + public $kind; + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_AppState_WriteResult extends Google_Model +{ + public $currentStateVersion; + public $kind; + public $stateKey; + + public function setCurrentStateVersion($currentStateVersion) + { + $this->currentStateVersion = $currentStateVersion; + } + + public function getCurrentStateVersion() + { + return $this->currentStateVersion; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setStateKey($stateKey) + { + $this->stateKey = $stateKey; + } + + public function getStateKey() + { + return $this->stateKey; + } +} diff --git a/oauth/Google/Service/Appsactivity.php b/oauth/Google/Service/Appsactivity.php new file mode 100644 index 0000000..8da66da --- /dev/null +++ b/oauth/Google/Service/Appsactivity.php @@ -0,0 +1,588 @@ + + * Provides a historical view of activity. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Appsactivity extends Google_Service +{ + /** View historical activity for Google services. */ + const ACTIVITY = "https://www.googleapis.com/auth/activity"; + /** View and manage the files and documents in your Google Drive. */ + const DRIVE = "https://www.googleapis.com/auth/drive"; + /** View metadata for files and documents in your Google Drive. */ + const DRIVE_METADATA_READONLY = "https://www.googleapis.com/auth/drive.metadata.readonly"; + /** View the files and documents in your Google Drive. */ + const DRIVE_READONLY = "https://www.googleapis.com/auth/drive.readonly"; + + public $activities; + + + /** + * Constructs the internal representation of the Appsactivity service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'appsactivity/v1/'; + $this->version = 'v1'; + $this->serviceName = 'appsactivity'; + + $this->activities = new Google_Service_Appsactivity_Activities_Resource( + $this, + $this->serviceName, + 'activities', + array( + 'methods' => array( + 'list' => array( + 'path' => 'activities', + 'httpMethod' => 'GET', + 'parameters' => array( + 'drive.ancestorId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageSize' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'userId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'groupingStrategy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'drive.fileId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "activities" collection of methods. + * Typical usage is: + * + * $appsactivityService = new Google_Service_Appsactivity(...); + * $activities = $appsactivityService->activities; + * + */ +class Google_Service_Appsactivity_Activities_Resource extends Google_Service_Resource +{ + + /** + * Returns a list of activities visible to the current logged in user. Visible + * activities are determined by the visiblity settings of the object that was + * acted on, e.g. Drive files a user can see. An activity is a record of past + * events. Multiple events may be merged if they are similar. A request is + * scoped to activities from a given Google service using the source parameter. + * (activities.listActivities) + * + * @param array $optParams Optional parameters. + * + * @opt_param string drive.ancestorId + * Identifies the Drive folder containing the items for which to return activities. + * @opt_param int pageSize + * The maximum number of events to return on a page. The response includes a continuation token if + * there are more events. + * @opt_param string pageToken + * A token to retrieve a specific page of results. + * @opt_param string userId + * Indicates the user to return activity for. Use the special value me to indicate the currently + * authenticated user. + * @opt_param string groupingStrategy + * Indicates the strategy to use when grouping singleEvents items in the associated combinedEvent + * object. + * @opt_param string drive.fileId + * Identifies the Drive item to return activities for. + * @opt_param string source + * The Google service from which to return activities. Possible values of source are: + - + * drive.google.com + * @return Google_Service_Appsactivity_ListActivitiesResponse + */ + public function listActivities($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Appsactivity_ListActivitiesResponse"); + } +} + + + + +class Google_Service_Appsactivity_Activity extends Google_Collection +{ + protected $combinedEventType = 'Google_Service_Appsactivity_Event'; + protected $combinedEventDataType = ''; + protected $singleEventsType = 'Google_Service_Appsactivity_Event'; + protected $singleEventsDataType = 'array'; + + public function setCombinedEvent(Google_Service_Appsactivity_Event $combinedEvent) + { + $this->combinedEvent = $combinedEvent; + } + + public function getCombinedEvent() + { + return $this->combinedEvent; + } + + public function setSingleEvents($singleEvents) + { + $this->singleEvents = $singleEvents; + } + + public function getSingleEvents() + { + return $this->singleEvents; + } +} + +class Google_Service_Appsactivity_Event extends Google_Collection +{ + public $additionalEventTypes; + public $eventTimeMillis; + public $fromUserDeletion; + protected $moveType = 'Google_Service_Appsactivity_Move'; + protected $moveDataType = ''; + protected $permissionChangesType = 'Google_Service_Appsactivity_PermissionChange'; + protected $permissionChangesDataType = 'array'; + public $primaryEventType; + protected $renameType = 'Google_Service_Appsactivity_Rename'; + protected $renameDataType = ''; + protected $targetType = 'Google_Service_Appsactivity_Target'; + protected $targetDataType = ''; + protected $userType = 'Google_Service_Appsactivity_User'; + protected $userDataType = ''; + + public function setAdditionalEventTypes($additionalEventTypes) + { + $this->additionalEventTypes = $additionalEventTypes; + } + + public function getAdditionalEventTypes() + { + return $this->additionalEventTypes; + } + + public function setEventTimeMillis($eventTimeMillis) + { + $this->eventTimeMillis = $eventTimeMillis; + } + + public function getEventTimeMillis() + { + return $this->eventTimeMillis; + } + + public function setFromUserDeletion($fromUserDeletion) + { + $this->fromUserDeletion = $fromUserDeletion; + } + + public function getFromUserDeletion() + { + return $this->fromUserDeletion; + } + + public function setMove(Google_Service_Appsactivity_Move $move) + { + $this->move = $move; + } + + public function getMove() + { + return $this->move; + } + + public function setPermissionChanges($permissionChanges) + { + $this->permissionChanges = $permissionChanges; + } + + public function getPermissionChanges() + { + return $this->permissionChanges; + } + + public function setPrimaryEventType($primaryEventType) + { + $this->primaryEventType = $primaryEventType; + } + + public function getPrimaryEventType() + { + return $this->primaryEventType; + } + + public function setRename(Google_Service_Appsactivity_Rename $rename) + { + $this->rename = $rename; + } + + public function getRename() + { + return $this->rename; + } + + public function setTarget(Google_Service_Appsactivity_Target $target) + { + $this->target = $target; + } + + public function getTarget() + { + return $this->target; + } + + public function setUser(Google_Service_Appsactivity_User $user) + { + $this->user = $user; + } + + public function getUser() + { + return $this->user; + } +} + +class Google_Service_Appsactivity_ListActivitiesResponse extends Google_Collection +{ + protected $activitiesType = 'Google_Service_Appsactivity_Activity'; + protected $activitiesDataType = 'array'; + public $nextPageToken; + + public function setActivities($activities) + { + $this->activities = $activities; + } + + public function getActivities() + { + return $this->activities; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Appsactivity_Move extends Google_Collection +{ + protected $addedParentsType = 'Google_Service_Appsactivity_Parent'; + protected $addedParentsDataType = 'array'; + protected $removedParentsType = 'Google_Service_Appsactivity_Parent'; + protected $removedParentsDataType = 'array'; + + public function setAddedParents($addedParents) + { + $this->addedParents = $addedParents; + } + + public function getAddedParents() + { + return $this->addedParents; + } + + public function setRemovedParents($removedParents) + { + $this->removedParents = $removedParents; + } + + public function getRemovedParents() + { + return $this->removedParents; + } +} + +class Google_Service_Appsactivity_Parent extends Google_Model +{ + public $id; + public $isRoot; + public $title; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setIsRoot($isRoot) + { + $this->isRoot = $isRoot; + } + + public function getIsRoot() + { + return $this->isRoot; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_Appsactivity_Permission extends Google_Model +{ + public $name; + public $permissionId; + public $role; + public $type; + protected $userType = 'Google_Service_Appsactivity_User'; + protected $userDataType = ''; + public $withLink; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPermissionId($permissionId) + { + $this->permissionId = $permissionId; + } + + public function getPermissionId() + { + return $this->permissionId; + } + + public function setRole($role) + { + $this->role = $role; + } + + public function getRole() + { + return $this->role; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUser(Google_Service_Appsactivity_User $user) + { + $this->user = $user; + } + + public function getUser() + { + return $this->user; + } + + public function setWithLink($withLink) + { + $this->withLink = $withLink; + } + + public function getWithLink() + { + return $this->withLink; + } +} + +class Google_Service_Appsactivity_PermissionChange extends Google_Collection +{ + protected $addedPermissionsType = 'Google_Service_Appsactivity_Permission'; + protected $addedPermissionsDataType = 'array'; + protected $removedPermissionsType = 'Google_Service_Appsactivity_Permission'; + protected $removedPermissionsDataType = 'array'; + + public function setAddedPermissions($addedPermissions) + { + $this->addedPermissions = $addedPermissions; + } + + public function getAddedPermissions() + { + return $this->addedPermissions; + } + + public function setRemovedPermissions($removedPermissions) + { + $this->removedPermissions = $removedPermissions; + } + + public function getRemovedPermissions() + { + return $this->removedPermissions; + } +} + +class Google_Service_Appsactivity_Photo extends Google_Model +{ + public $url; + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Appsactivity_Rename extends Google_Model +{ + public $newTitle; + public $oldTitle; + + public function setNewTitle($newTitle) + { + $this->newTitle = $newTitle; + } + + public function getNewTitle() + { + return $this->newTitle; + } + + public function setOldTitle($oldTitle) + { + $this->oldTitle = $oldTitle; + } + + public function getOldTitle() + { + return $this->oldTitle; + } +} + +class Google_Service_Appsactivity_Target extends Google_Model +{ + public $id; + public $mimeType; + public $name; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setMimeType($mimeType) + { + $this->mimeType = $mimeType; + } + + public function getMimeType() + { + return $this->mimeType; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_Appsactivity_User extends Google_Model +{ + public $name; + protected $photoType = 'Google_Service_Appsactivity_Photo'; + protected $photoDataType = ''; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPhoto(Google_Service_Appsactivity_Photo $photo) + { + $this->photo = $photo; + } + + public function getPhoto() + { + return $this->photo; + } +} diff --git a/oauth/Google/Service/Audit.php b/oauth/Google/Service/Audit.php new file mode 100644 index 0000000..973cd55 --- /dev/null +++ b/oauth/Google/Service/Audit.php @@ -0,0 +1,438 @@ + + * Lets you access user activities in your enterprise made through various applications. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Audit extends Google_Service +{ + + + public $activities; + + + /** + * Constructs the internal representation of the Audit service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'apps/reporting/audit/v1/'; + $this->version = 'v1'; + $this->serviceName = 'audit'; + + $this->activities = new Google_Service_Audit_Activities_Resource( + $this, + $this->serviceName, + 'activities', + array( + 'methods' => array( + 'list' => array( + 'path' => '{customerId}/{applicationId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'applicationId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'actorEmail' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'actorApplicationId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'actorIpAddress' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'caller' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'eventName' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startTime' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'endTime' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'continuationToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "activities" collection of methods. + * Typical usage is: + * + * $auditService = new Google_Service_Audit(...); + * $activities = $auditService->activities; + * + */ +class Google_Service_Audit_Activities_Resource extends Google_Service_Resource +{ + + /** + * Retrieves a list of activities for a specific customer and application. + * (activities.listActivities) + * + * @param string $customerId + * Represents the customer who is the owner of target object on which action was performed. + * @param string $applicationId + * Application ID of the application on which the event was performed. + * @param array $optParams Optional parameters. + * + * @opt_param string actorEmail + * Email address of the user who performed the action. + * @opt_param string actorApplicationId + * Application ID of the application which interacted on behalf of the user while performing the + * event. + * @opt_param string actorIpAddress + * IP Address of host where the event was performed. Supports both IPv4 and IPv6 addresses. + * @opt_param string caller + * Type of the caller. + * @opt_param int maxResults + * Number of activity records to be shown in each page. + * @opt_param string eventName + * Name of the event being queried. + * @opt_param string startTime + * Return events which occured at or after this time. + * @opt_param string endTime + * Return events which occured at or before this time. + * @opt_param string continuationToken + * Next page URL. + * @return Google_Service_Audit_Activities + */ + public function listActivities($customerId, $applicationId, $optParams = array()) + { + $params = array('customerId' => $customerId, 'applicationId' => $applicationId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Audit_Activities"); + } +} + + + + +class Google_Service_Audit_Activities extends Google_Collection +{ + protected $itemsType = 'Google_Service_Audit_Activity'; + protected $itemsDataType = 'array'; + public $kind; + public $next; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNext($next) + { + $this->next = $next; + } + + public function getNext() + { + return $this->next; + } +} + +class Google_Service_Audit_Activity extends Google_Collection +{ + protected $actorType = 'Google_Service_Audit_ActivityActor'; + protected $actorDataType = ''; + protected $eventsType = 'Google_Service_Audit_ActivityEvents'; + protected $eventsDataType = 'array'; + protected $idType = 'Google_Service_Audit_ActivityId'; + protected $idDataType = ''; + public $ipAddress; + public $kind; + public $ownerDomain; + + public function setActor(Google_Service_Audit_ActivityActor $actor) + { + $this->actor = $actor; + } + + public function getActor() + { + return $this->actor; + } + + public function setEvents($events) + { + $this->events = $events; + } + + public function getEvents() + { + return $this->events; + } + + public function setId(Google_Service_Audit_ActivityId $id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setIpAddress($ipAddress) + { + $this->ipAddress = $ipAddress; + } + + public function getIpAddress() + { + return $this->ipAddress; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setOwnerDomain($ownerDomain) + { + $this->ownerDomain = $ownerDomain; + } + + public function getOwnerDomain() + { + return $this->ownerDomain; + } +} + +class Google_Service_Audit_ActivityActor extends Google_Model +{ + public $applicationId; + public $callerType; + public $email; + public $key; + + public function setApplicationId($applicationId) + { + $this->applicationId = $applicationId; + } + + public function getApplicationId() + { + return $this->applicationId; + } + + public function setCallerType($callerType) + { + $this->callerType = $callerType; + } + + public function getCallerType() + { + return $this->callerType; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } +} + +class Google_Service_Audit_ActivityEvents extends Google_Collection +{ + public $eventType; + public $name; + protected $parametersType = 'Google_Service_Audit_ActivityEventsParameters'; + protected $parametersDataType = 'array'; + + public function setEventType($eventType) + { + $this->eventType = $eventType; + } + + public function getEventType() + { + return $this->eventType; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setParameters($parameters) + { + $this->parameters = $parameters; + } + + public function getParameters() + { + return $this->parameters; + } +} + +class Google_Service_Audit_ActivityEventsParameters extends Google_Model +{ + public $name; + public $value; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Audit_ActivityId extends Google_Model +{ + public $applicationId; + public $customerId; + public $time; + public $uniqQualifier; + + public function setApplicationId($applicationId) + { + $this->applicationId = $applicationId; + } + + public function getApplicationId() + { + return $this->applicationId; + } + + public function setCustomerId($customerId) + { + $this->customerId = $customerId; + } + + public function getCustomerId() + { + return $this->customerId; + } + + public function setTime($time) + { + $this->time = $time; + } + + public function getTime() + { + return $this->time; + } + + public function setUniqQualifier($uniqQualifier) + { + $this->uniqQualifier = $uniqQualifier; + } + + public function getUniqQualifier() + { + return $this->uniqQualifier; + } +} diff --git a/oauth/Google/Service/Autoscaler.php b/oauth/Google/Service/Autoscaler.php new file mode 100644 index 0000000..5a31425 --- /dev/null +++ b/oauth/Google/Service/Autoscaler.php @@ -0,0 +1,1134 @@ + + * The Google Compute Engine Autoscaler API provides autoscaling for groups of Cloud VMs. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Autoscaler extends Google_Service +{ + /** View and manage your Google Compute Engine resources. */ + const COMPUTE = "https://www.googleapis.com/auth/compute"; + /** View your Google Compute Engine resources. */ + const COMPUTE_READONLY = "https://www.googleapis.com/auth/compute.readonly"; + + public $autoscalers; + public $zoneOperations; + + + /** + * Constructs the internal representation of the Autoscaler service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'autoscaler/v1beta2/'; + $this->version = 'v1beta2'; + $this->serviceName = 'autoscaler'; + + $this->autoscalers = new Google_Service_Autoscaler_Autoscalers_Resource( + $this, + $this->serviceName, + 'autoscalers', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'projects/{project}/zones/{zone}/autoscalers/{autoscaler}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'autoscaler' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'projects/{project}/zones/{zone}/autoscalers/{autoscaler}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'autoscaler' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'projects/{project}/zones/{zone}/autoscalers', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'projects/{project}/zones/{zone}/autoscalers', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'projects/{project}/zones/{zone}/autoscalers/{autoscaler}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'autoscaler' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'projects/{project}/zones/{zone}/autoscalers/{autoscaler}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'autoscaler' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->zoneOperations = new Google_Service_Autoscaler_ZoneOperations_Resource( + $this, + $this->serviceName, + 'zoneOperations', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{project}/zones/{zone}/operations/{operation}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'operation' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/zones/{zone}/operations/{operation}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'operation' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/zones/{zone}/operations', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "autoscalers" collection of methods. + * Typical usage is: + * + * $autoscalerService = new Google_Service_Autoscaler(...); + * $autoscalers = $autoscalerService->autoscalers; + * + */ +class Google_Service_Autoscaler_Autoscalers_Resource extends Google_Service_Resource +{ + + /** + * Deletes the specified Autoscaler resource. (autoscalers.delete) + * + * @param string $project + * Project ID of Autoscaler resource. + * @param string $zone + * Zone name of Autoscaler resource. + * @param string $autoscaler + * Name of the Autoscaler resource. + * @param array $optParams Optional parameters. + * @return Google_Service_Autoscaler_Operation + */ + public function delete($project, $zone, $autoscaler, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'autoscaler' => $autoscaler); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Autoscaler_Operation"); + } + /** + * Gets the specified Autoscaler resource. (autoscalers.get) + * + * @param string $project + * Project ID of Autoscaler resource. + * @param string $zone + * Zone name of Autoscaler resource. + * @param string $autoscaler + * Name of the Autoscaler resource. + * @param array $optParams Optional parameters. + * @return Google_Service_Autoscaler_Autoscaler + */ + public function get($project, $zone, $autoscaler, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'autoscaler' => $autoscaler); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Autoscaler_Autoscaler"); + } + /** + * Adds new Autoscaler resource. (autoscalers.insert) + * + * @param string $project + * Project ID of Autoscaler resource. + * @param string $zone + * Zone name of Autoscaler resource. + * @param Google_Autoscaler $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Autoscaler_Operation + */ + public function insert($project, $zone, Google_Service_Autoscaler_Autoscaler $postBody, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Autoscaler_Operation"); + } + /** + * Lists all Autoscaler resources in this zone. (autoscalers.listAutoscalers) + * + * @param string $project + * Project ID of Autoscaler resource. + * @param string $zone + * Zone name of Autoscaler resource. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * + * @opt_param string pageToken + * + * @opt_param string maxResults + * + * @return Google_Service_Autoscaler_AutoscalerListResponse + */ + public function listAutoscalers($project, $zone, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Autoscaler_AutoscalerListResponse"); + } + /** + * Update the entire content of the Autoscaler resource. This method supports + * patch semantics. (autoscalers.patch) + * + * @param string $project + * Project ID of Autoscaler resource. + * @param string $zone + * Zone name of Autoscaler resource. + * @param string $autoscaler + * Name of the Autoscaler resource. + * @param Google_Autoscaler $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Autoscaler_Operation + */ + public function patch($project, $zone, $autoscaler, Google_Service_Autoscaler_Autoscaler $postBody, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'autoscaler' => $autoscaler, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Autoscaler_Operation"); + } + /** + * Update the entire content of the Autoscaler resource. (autoscalers.update) + * + * @param string $project + * Project ID of Autoscaler resource. + * @param string $zone + * Zone name of Autoscaler resource. + * @param string $autoscaler + * Name of the Autoscaler resource. + * @param Google_Autoscaler $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Autoscaler_Operation + */ + public function update($project, $zone, $autoscaler, Google_Service_Autoscaler_Autoscaler $postBody, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'autoscaler' => $autoscaler, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Autoscaler_Operation"); + } +} + +/** + * The "zoneOperations" collection of methods. + * Typical usage is: + * + * $autoscalerService = new Google_Service_Autoscaler(...); + * $zoneOperations = $autoscalerService->zoneOperations; + * + */ +class Google_Service_Autoscaler_ZoneOperations_Resource extends Google_Service_Resource +{ + + /** + * Deletes the specified zone-specific operation resource. + * (zoneOperations.delete) + * + * @param string $project + * + * @param string $zone + * + * @param string $operation + * + * @param array $optParams Optional parameters. + */ + public function delete($project, $zone, $operation, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'operation' => $operation); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves the specified zone-specific operation resource. + * (zoneOperations.get) + * + * @param string $project + * + * @param string $zone + * + * @param string $operation + * + * @param array $optParams Optional parameters. + * @return Google_Service_Autoscaler_Operation + */ + public function get($project, $zone, $operation, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'operation' => $operation); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Autoscaler_Operation"); + } + /** + * Retrieves the list of operation resources contained within the specified + * zone. (zoneOperations.listZoneOperations) + * + * @param string $project + * + * @param string $zone + * + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * + * @opt_param string pageToken + * + * @opt_param string maxResults + * + * @return Google_Service_Autoscaler_OperationList + */ + public function listZoneOperations($project, $zone, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Autoscaler_OperationList"); + } +} + + + + +class Google_Service_Autoscaler_Autoscaler extends Google_Model +{ + protected $autoscalingPolicyType = 'Google_Service_Autoscaler_AutoscalingPolicy'; + protected $autoscalingPolicyDataType = ''; + public $creationTimestamp; + public $description; + public $id; + public $name; + public $selfLink; + public $target; + + public function setAutoscalingPolicy(Google_Service_Autoscaler_AutoscalingPolicy $autoscalingPolicy) + { + $this->autoscalingPolicy = $autoscalingPolicy; + } + + public function getAutoscalingPolicy() + { + return $this->autoscalingPolicy; + } + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTarget($target) + { + $this->target = $target; + } + + public function getTarget() + { + return $this->target; + } +} + +class Google_Service_Autoscaler_AutoscalerListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_Autoscaler_Autoscaler'; + protected $itemsDataType = 'array'; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Autoscaler_AutoscalingPolicy extends Google_Collection +{ + public $coolDownPeriodSec; + protected $cpuUtilizationType = 'Google_Service_Autoscaler_AutoscalingPolicyCpuUtilization'; + protected $cpuUtilizationDataType = ''; + protected $customMetricUtilizationsType = 'Google_Service_Autoscaler_AutoscalingPolicyCustomMetricUtilization'; + protected $customMetricUtilizationsDataType = 'array'; + protected $loadBalancingUtilizationType = 'Google_Service_Autoscaler_AutoscalingPolicyLoadBalancingUtilization'; + protected $loadBalancingUtilizationDataType = ''; + public $maxNumReplicas; + public $minNumReplicas; + + public function setCoolDownPeriodSec($coolDownPeriodSec) + { + $this->coolDownPeriodSec = $coolDownPeriodSec; + } + + public function getCoolDownPeriodSec() + { + return $this->coolDownPeriodSec; + } + + public function setCpuUtilization(Google_Service_Autoscaler_AutoscalingPolicyCpuUtilization $cpuUtilization) + { + $this->cpuUtilization = $cpuUtilization; + } + + public function getCpuUtilization() + { + return $this->cpuUtilization; + } + + public function setCustomMetricUtilizations($customMetricUtilizations) + { + $this->customMetricUtilizations = $customMetricUtilizations; + } + + public function getCustomMetricUtilizations() + { + return $this->customMetricUtilizations; + } + + public function setLoadBalancingUtilization(Google_Service_Autoscaler_AutoscalingPolicyLoadBalancingUtilization $loadBalancingUtilization) + { + $this->loadBalancingUtilization = $loadBalancingUtilization; + } + + public function getLoadBalancingUtilization() + { + return $this->loadBalancingUtilization; + } + + public function setMaxNumReplicas($maxNumReplicas) + { + $this->maxNumReplicas = $maxNumReplicas; + } + + public function getMaxNumReplicas() + { + return $this->maxNumReplicas; + } + + public function setMinNumReplicas($minNumReplicas) + { + $this->minNumReplicas = $minNumReplicas; + } + + public function getMinNumReplicas() + { + return $this->minNumReplicas; + } +} + +class Google_Service_Autoscaler_AutoscalingPolicyCpuUtilization extends Google_Model +{ + public $utilizationTarget; + + public function setUtilizationTarget($utilizationTarget) + { + $this->utilizationTarget = $utilizationTarget; + } + + public function getUtilizationTarget() + { + return $this->utilizationTarget; + } +} + +class Google_Service_Autoscaler_AutoscalingPolicyCustomMetricUtilization extends Google_Model +{ + public $metric; + public $utilizationTarget; + + public function setMetric($metric) + { + $this->metric = $metric; + } + + public function getMetric() + { + return $this->metric; + } + + public function setUtilizationTarget($utilizationTarget) + { + $this->utilizationTarget = $utilizationTarget; + } + + public function getUtilizationTarget() + { + return $this->utilizationTarget; + } +} + +class Google_Service_Autoscaler_AutoscalingPolicyLoadBalancingUtilization extends Google_Model +{ + public $utilizationTarget; + + public function setUtilizationTarget($utilizationTarget) + { + $this->utilizationTarget = $utilizationTarget; + } + + public function getUtilizationTarget() + { + return $this->utilizationTarget; + } +} + +class Google_Service_Autoscaler_Operation extends Google_Collection +{ + public $clientOperationId; + public $creationTimestamp; + public $endTime; + protected $errorType = 'Google_Service_Autoscaler_OperationError'; + protected $errorDataType = ''; + public $httpErrorMessage; + public $httpErrorStatusCode; + public $id; + public $insertTime; + public $kind; + public $name; + public $operationType; + public $progress; + public $region; + public $selfLink; + public $startTime; + public $status; + public $statusMessage; + public $targetId; + public $targetLink; + public $user; + protected $warningsType = 'Google_Service_Autoscaler_OperationWarnings'; + protected $warningsDataType = 'array'; + public $zone; + + public function setClientOperationId($clientOperationId) + { + $this->clientOperationId = $clientOperationId; + } + + public function getClientOperationId() + { + return $this->clientOperationId; + } + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setEndTime($endTime) + { + $this->endTime = $endTime; + } + + public function getEndTime() + { + return $this->endTime; + } + + public function setError(Google_Service_Autoscaler_OperationError $error) + { + $this->error = $error; + } + + public function getError() + { + return $this->error; + } + + public function setHttpErrorMessage($httpErrorMessage) + { + $this->httpErrorMessage = $httpErrorMessage; + } + + public function getHttpErrorMessage() + { + return $this->httpErrorMessage; + } + + public function setHttpErrorStatusCode($httpErrorStatusCode) + { + $this->httpErrorStatusCode = $httpErrorStatusCode; + } + + public function getHttpErrorStatusCode() + { + return $this->httpErrorStatusCode; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInsertTime($insertTime) + { + $this->insertTime = $insertTime; + } + + public function getInsertTime() + { + return $this->insertTime; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setOperationType($operationType) + { + $this->operationType = $operationType; + } + + public function getOperationType() + { + return $this->operationType; + } + + public function setProgress($progress) + { + $this->progress = $progress; + } + + public function getProgress() + { + return $this->progress; + } + + public function setRegion($region) + { + $this->region = $region; + } + + public function getRegion() + { + return $this->region; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setStartTime($startTime) + { + $this->startTime = $startTime; + } + + public function getStartTime() + { + return $this->startTime; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setStatusMessage($statusMessage) + { + $this->statusMessage = $statusMessage; + } + + public function getStatusMessage() + { + return $this->statusMessage; + } + + public function setTargetId($targetId) + { + $this->targetId = $targetId; + } + + public function getTargetId() + { + return $this->targetId; + } + + public function setTargetLink($targetLink) + { + $this->targetLink = $targetLink; + } + + public function getTargetLink() + { + return $this->targetLink; + } + + public function setUser($user) + { + $this->user = $user; + } + + public function getUser() + { + return $this->user; + } + + public function setWarnings($warnings) + { + $this->warnings = $warnings; + } + + public function getWarnings() + { + return $this->warnings; + } + + public function setZone($zone) + { + $this->zone = $zone; + } + + public function getZone() + { + return $this->zone; + } +} + +class Google_Service_Autoscaler_OperationError extends Google_Collection +{ + protected $errorsType = 'Google_Service_Autoscaler_OperationErrorErrors'; + protected $errorsDataType = 'array'; + + public function setErrors($errors) + { + $this->errors = $errors; + } + + public function getErrors() + { + return $this->errors; + } +} + +class Google_Service_Autoscaler_OperationErrorErrors extends Google_Model +{ + public $code; + public $location; + public $message; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setLocation($location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_Autoscaler_OperationList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Autoscaler_Operation'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Autoscaler_OperationWarnings extends Google_Collection +{ + public $code; + protected $dataType = 'Google_Service_Autoscaler_OperationWarningsData'; + protected $dataDataType = 'array'; + public $message; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_Autoscaler_OperationWarningsData extends Google_Model +{ + public $key; + public $value; + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} diff --git a/oauth/Google/Service/Bigquery.php b/oauth/Google/Service/Bigquery.php new file mode 100644 index 0000000..a5fd7cf --- /dev/null +++ b/oauth/Google/Service/Bigquery.php @@ -0,0 +1,3410 @@ + + * A data platform for customers to create, manage, share and query data. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Bigquery extends Google_Service +{ + /** View and manage your data in Google BigQuery. */ + const BIGQUERY = "https://www.googleapis.com/auth/bigquery"; + /** Insert data into Google BigQuery. */ + const BIGQUERY_INSERTDATA = "https://www.googleapis.com/auth/bigquery.insertdata"; + /** View and manage your data across Google Cloud Platform services. */ + const CLOUD_PLATFORM = "https://www.googleapis.com/auth/cloud-platform"; + /** Manage your data and permissions in Google Cloud Storage. */ + const DEVSTORAGE_FULL_CONTROL = "https://www.googleapis.com/auth/devstorage.full_control"; + /** View your data in Google Cloud Storage. */ + const DEVSTORAGE_READ_ONLY = "https://www.googleapis.com/auth/devstorage.read_only"; + /** Manage your data in Google Cloud Storage. */ + const DEVSTORAGE_READ_WRITE = "https://www.googleapis.com/auth/devstorage.read_write"; + + public $datasets; + public $jobs; + public $projects; + public $tabledata; + public $tables; + + + /** + * Constructs the internal representation of the Bigquery service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'bigquery/v2/'; + $this->version = 'v2'; + $this->serviceName = 'bigquery'; + + $this->datasets = new Google_Service_Bigquery_Datasets_Resource( + $this, + $this->serviceName, + 'datasets', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'projects/{projectId}/datasets/{datasetId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'deleteContents' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'get' => array( + 'path' => 'projects/{projectId}/datasets/{datasetId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'projects/{projectId}/datasets', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'projects/{projectId}/datasets', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'all' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'projects/{projectId}/datasets/{datasetId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'projects/{projectId}/datasets/{datasetId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->jobs = new Google_Service_Bigquery_Jobs_Resource( + $this, + $this->serviceName, + 'jobs', + array( + 'methods' => array( + 'get' => array( + 'path' => 'projects/{projectId}/jobs/{jobId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'jobId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'getQueryResults' => array( + 'path' => 'projects/{projectId}/queries/{jobId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'jobId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'timeoutMs' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startIndex' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'projects/{projectId}/jobs', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'projects/{projectId}/jobs', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'stateFilter' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'allUsers' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'query' => array( + 'path' => 'projects/{projectId}/queries', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->projects = new Google_Service_Bigquery_Projects_Resource( + $this, + $this->serviceName, + 'projects', + array( + 'methods' => array( + 'list' => array( + 'path' => 'projects', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->tabledata = new Google_Service_Bigquery_Tabledata_Resource( + $this, + $this->serviceName, + 'tabledata', + array( + 'methods' => array( + 'insertAll' => array( + 'path' => 'projects/{projectId}/datasets/{datasetId}/tables/{tableId}/insertAll', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'projects/{projectId}/datasets/{datasetId}/tables/{tableId}/data', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startIndex' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->tables = new Google_Service_Bigquery_Tables_Resource( + $this, + $this->serviceName, + 'tables', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'projects/{projectId}/datasets/{datasetId}/tables/{tableId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'projects/{projectId}/datasets/{datasetId}/tables/{tableId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'projects/{projectId}/datasets/{datasetId}/tables', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'projects/{projectId}/datasets/{datasetId}/tables', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'projects/{projectId}/datasets/{datasetId}/tables/{tableId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'projects/{projectId}/datasets/{datasetId}/tables/{tableId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "datasets" collection of methods. + * Typical usage is: + * + * $bigqueryService = new Google_Service_Bigquery(...); + * $datasets = $bigqueryService->datasets; + * + */ +class Google_Service_Bigquery_Datasets_Resource extends Google_Service_Resource +{ + + /** + * Deletes the dataset specified by the datasetId value. Before you can delete a + * dataset, you must delete all its tables, either manually or by specifying + * deleteContents. Immediately after deletion, you can create another dataset + * with the same name. (datasets.delete) + * + * @param string $projectId + * Project ID of the dataset being deleted + * @param string $datasetId + * Dataset ID of dataset being deleted + * @param array $optParams Optional parameters. + * + * @opt_param bool deleteContents + * If True, delete all the tables in the dataset. If False and the dataset contains tables, the + * request will fail. Default is False + */ + public function delete($projectId, $datasetId, $optParams = array()) + { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Returns the dataset specified by datasetID. (datasets.get) + * + * @param string $projectId + * Project ID of the requested dataset + * @param string $datasetId + * Dataset ID of the requested dataset + * @param array $optParams Optional parameters. + * @return Google_Service_Bigquery_Dataset + */ + public function get($projectId, $datasetId, $optParams = array()) + { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Bigquery_Dataset"); + } + /** + * Creates a new empty dataset. (datasets.insert) + * + * @param string $projectId + * Project ID of the new dataset + * @param Google_Dataset $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Bigquery_Dataset + */ + public function insert($projectId, Google_Service_Bigquery_Dataset $postBody, $optParams = array()) + { + $params = array('projectId' => $projectId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Bigquery_Dataset"); + } + /** + * Lists all the datasets in the specified project to which the caller has read + * access; however, a project owner can list (but not necessarily get) all + * datasets in his project. (datasets.listDatasets) + * + * @param string $projectId + * Project ID of the datasets to be listed + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Page token, returned by a previous call, to request the next page of results + * @opt_param bool all + * Whether to list all datasets, including hidden ones + * @opt_param string maxResults + * The maximum number of results to return + * @return Google_Service_Bigquery_DatasetList + */ + public function listDatasets($projectId, $optParams = array()) + { + $params = array('projectId' => $projectId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Bigquery_DatasetList"); + } + /** + * Updates information in an existing dataset. The update method replaces the + * entire dataset resource, whereas the patch method only replaces fields that + * are provided in the submitted dataset resource. This method supports patch + * semantics. (datasets.patch) + * + * @param string $projectId + * Project ID of the dataset being updated + * @param string $datasetId + * Dataset ID of the dataset being updated + * @param Google_Dataset $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Bigquery_Dataset + */ + public function patch($projectId, $datasetId, Google_Service_Bigquery_Dataset $postBody, $optParams = array()) + { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Bigquery_Dataset"); + } + /** + * Updates information in an existing dataset. The update method replaces the + * entire dataset resource, whereas the patch method only replaces fields that + * are provided in the submitted dataset resource. (datasets.update) + * + * @param string $projectId + * Project ID of the dataset being updated + * @param string $datasetId + * Dataset ID of the dataset being updated + * @param Google_Dataset $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Bigquery_Dataset + */ + public function update($projectId, $datasetId, Google_Service_Bigquery_Dataset $postBody, $optParams = array()) + { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Bigquery_Dataset"); + } +} + +/** + * The "jobs" collection of methods. + * Typical usage is: + * + * $bigqueryService = new Google_Service_Bigquery(...); + * $jobs = $bigqueryService->jobs; + * + */ +class Google_Service_Bigquery_Jobs_Resource extends Google_Service_Resource +{ + + /** + * Retrieves the specified job by ID. (jobs.get) + * + * @param string $projectId + * Project ID of the requested job + * @param string $jobId + * Job ID of the requested job + * @param array $optParams Optional parameters. + * @return Google_Service_Bigquery_Job + */ + public function get($projectId, $jobId, $optParams = array()) + { + $params = array('projectId' => $projectId, 'jobId' => $jobId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Bigquery_Job"); + } + /** + * Retrieves the results of a query job. (jobs.getQueryResults) + * + * @param string $projectId + * Project ID of the query job + * @param string $jobId + * Job ID of the query job + * @param array $optParams Optional parameters. + * + * @opt_param string timeoutMs + * How long to wait for the query to complete, in milliseconds, before returning. Default is to + * return immediately. If the timeout passes before the job completes, the request will fail with a + * TIMEOUT error + * @opt_param string maxResults + * Maximum number of results to read + * @opt_param string pageToken + * Page token, returned by a previous call, to request the next page of results + * @opt_param string startIndex + * Zero-based index of the starting row + * @return Google_Service_Bigquery_GetQueryResultsResponse + */ + public function getQueryResults($projectId, $jobId, $optParams = array()) + { + $params = array('projectId' => $projectId, 'jobId' => $jobId); + $params = array_merge($params, $optParams); + return $this->call('getQueryResults', array($params), "Google_Service_Bigquery_GetQueryResultsResponse"); + } + /** + * Starts a new asynchronous job. (jobs.insert) + * + * @param string $projectId + * Project ID of the project that will be billed for the job + * @param Google_Job $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Bigquery_Job + */ + public function insert($projectId, Google_Service_Bigquery_Job $postBody, $optParams = array()) + { + $params = array('projectId' => $projectId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Bigquery_Job"); + } + /** + * Lists all the Jobs in the specified project that were started by the user. + * (jobs.listJobs) + * + * @param string $projectId + * Project ID of the jobs to list + * @param array $optParams Optional parameters. + * + * @opt_param string projection + * Restrict information returned to a set of selected fields + * @opt_param string stateFilter + * Filter for job state + * @opt_param bool allUsers + * Whether to display jobs owned by all users in the project. Default false + * @opt_param string maxResults + * Maximum number of results to return + * @opt_param string pageToken + * Page token, returned by a previous call, to request the next page of results + * @return Google_Service_Bigquery_JobList + */ + public function listJobs($projectId, $optParams = array()) + { + $params = array('projectId' => $projectId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Bigquery_JobList"); + } + /** + * Runs a BigQuery SQL query synchronously and returns query results if the + * query completes within a specified timeout. (jobs.query) + * + * @param string $projectId + * Project ID of the project billed for the query + * @param Google_QueryRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Bigquery_QueryResponse + */ + public function query($projectId, Google_Service_Bigquery_QueryRequest $postBody, $optParams = array()) + { + $params = array('projectId' => $projectId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('query', array($params), "Google_Service_Bigquery_QueryResponse"); + } +} + +/** + * The "projects" collection of methods. + * Typical usage is: + * + * $bigqueryService = new Google_Service_Bigquery(...); + * $projects = $bigqueryService->projects; + * + */ +class Google_Service_Bigquery_Projects_Resource extends Google_Service_Resource +{ + + /** + * Lists the projects to which you have at least read access. + * (projects.listProjects) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Page token, returned by a previous call, to request the next page of results + * @opt_param string maxResults + * Maximum number of results to return + * @return Google_Service_Bigquery_ProjectList + */ + public function listProjects($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Bigquery_ProjectList"); + } +} + +/** + * The "tabledata" collection of methods. + * Typical usage is: + * + * $bigqueryService = new Google_Service_Bigquery(...); + * $tabledata = $bigqueryService->tabledata; + * + */ +class Google_Service_Bigquery_Tabledata_Resource extends Google_Service_Resource +{ + + /** + * Streams data into BigQuery one record at a time without needing to run a load + * job. (tabledata.insertAll) + * + * @param string $projectId + * Project ID of the destination table. + * @param string $datasetId + * Dataset ID of the destination table. + * @param string $tableId + * Table ID of the destination table. + * @param Google_TableDataInsertAllRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Bigquery_TableDataInsertAllResponse + */ + public function insertAll($projectId, $datasetId, $tableId, Google_Service_Bigquery_TableDataInsertAllRequest $postBody, $optParams = array()) + { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId, 'tableId' => $tableId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insertAll', array($params), "Google_Service_Bigquery_TableDataInsertAllResponse"); + } + /** + * Retrieves table data from a specified set of rows. (tabledata.listTabledata) + * + * @param string $projectId + * Project ID of the table to read + * @param string $datasetId + * Dataset ID of the table to read + * @param string $tableId + * Table ID of the table to read + * @param array $optParams Optional parameters. + * + * @opt_param string maxResults + * Maximum number of results to return + * @opt_param string pageToken + * Page token, returned by a previous call, identifying the result set + * @opt_param string startIndex + * Zero-based index of the starting row to read + * @return Google_Service_Bigquery_TableDataList + */ + public function listTabledata($projectId, $datasetId, $tableId, $optParams = array()) + { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId, 'tableId' => $tableId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Bigquery_TableDataList"); + } +} + +/** + * The "tables" collection of methods. + * Typical usage is: + * + * $bigqueryService = new Google_Service_Bigquery(...); + * $tables = $bigqueryService->tables; + * + */ +class Google_Service_Bigquery_Tables_Resource extends Google_Service_Resource +{ + + /** + * Deletes the table specified by tableId from the dataset. If the table + * contains data, all the data will be deleted. (tables.delete) + * + * @param string $projectId + * Project ID of the table to delete + * @param string $datasetId + * Dataset ID of the table to delete + * @param string $tableId + * Table ID of the table to delete + * @param array $optParams Optional parameters. + */ + public function delete($projectId, $datasetId, $tableId, $optParams = array()) + { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId, 'tableId' => $tableId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets the specified table resource by table ID. This method does not return + * the data in the table, it only returns the table resource, which describes + * the structure of this table. (tables.get) + * + * @param string $projectId + * Project ID of the requested table + * @param string $datasetId + * Dataset ID of the requested table + * @param string $tableId + * Table ID of the requested table + * @param array $optParams Optional parameters. + * @return Google_Service_Bigquery_Table + */ + public function get($projectId, $datasetId, $tableId, $optParams = array()) + { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId, 'tableId' => $tableId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Bigquery_Table"); + } + /** + * Creates a new, empty table in the dataset. (tables.insert) + * + * @param string $projectId + * Project ID of the new table + * @param string $datasetId + * Dataset ID of the new table + * @param Google_Table $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Bigquery_Table + */ + public function insert($projectId, $datasetId, Google_Service_Bigquery_Table $postBody, $optParams = array()) + { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Bigquery_Table"); + } + /** + * Lists all tables in the specified dataset. (tables.listTables) + * + * @param string $projectId + * Project ID of the tables to list + * @param string $datasetId + * Dataset ID of the tables to list + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Page token, returned by a previous call, to request the next page of results + * @opt_param string maxResults + * Maximum number of results to return + * @return Google_Service_Bigquery_TableList + */ + public function listTables($projectId, $datasetId, $optParams = array()) + { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Bigquery_TableList"); + } + /** + * Updates information in an existing table. The update method replaces the + * entire table resource, whereas the patch method only replaces fields that are + * provided in the submitted table resource. This method supports patch + * semantics. (tables.patch) + * + * @param string $projectId + * Project ID of the table to update + * @param string $datasetId + * Dataset ID of the table to update + * @param string $tableId + * Table ID of the table to update + * @param Google_Table $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Bigquery_Table + */ + public function patch($projectId, $datasetId, $tableId, Google_Service_Bigquery_Table $postBody, $optParams = array()) + { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId, 'tableId' => $tableId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Bigquery_Table"); + } + /** + * Updates information in an existing table. The update method replaces the + * entire table resource, whereas the patch method only replaces fields that are + * provided in the submitted table resource. (tables.update) + * + * @param string $projectId + * Project ID of the table to update + * @param string $datasetId + * Dataset ID of the table to update + * @param string $tableId + * Table ID of the table to update + * @param Google_Table $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Bigquery_Table + */ + public function update($projectId, $datasetId, $tableId, Google_Service_Bigquery_Table $postBody, $optParams = array()) + { + $params = array('projectId' => $projectId, 'datasetId' => $datasetId, 'tableId' => $tableId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Bigquery_Table"); + } +} + + + + +class Google_Service_Bigquery_Dataset extends Google_Collection +{ + protected $accessType = 'Google_Service_Bigquery_DatasetAccess'; + protected $accessDataType = 'array'; + public $creationTime; + protected $datasetReferenceType = 'Google_Service_Bigquery_DatasetReference'; + protected $datasetReferenceDataType = ''; + public $description; + public $etag; + public $friendlyName; + public $id; + public $kind; + public $lastModifiedTime; + public $selfLink; + + public function setAccess($access) + { + $this->access = $access; + } + + public function getAccess() + { + return $this->access; + } + + public function setCreationTime($creationTime) + { + $this->creationTime = $creationTime; + } + + public function getCreationTime() + { + return $this->creationTime; + } + + public function setDatasetReference(Google_Service_Bigquery_DatasetReference $datasetReference) + { + $this->datasetReference = $datasetReference; + } + + public function getDatasetReference() + { + return $this->datasetReference; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setFriendlyName($friendlyName) + { + $this->friendlyName = $friendlyName; + } + + public function getFriendlyName() + { + return $this->friendlyName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastModifiedTime($lastModifiedTime) + { + $this->lastModifiedTime = $lastModifiedTime; + } + + public function getLastModifiedTime() + { + return $this->lastModifiedTime; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Bigquery_DatasetAccess extends Google_Model +{ + public $domain; + public $groupByEmail; + public $role; + public $specialGroup; + public $userByEmail; + + public function setDomain($domain) + { + $this->domain = $domain; + } + + public function getDomain() + { + return $this->domain; + } + + public function setGroupByEmail($groupByEmail) + { + $this->groupByEmail = $groupByEmail; + } + + public function getGroupByEmail() + { + return $this->groupByEmail; + } + + public function setRole($role) + { + $this->role = $role; + } + + public function getRole() + { + return $this->role; + } + + public function setSpecialGroup($specialGroup) + { + $this->specialGroup = $specialGroup; + } + + public function getSpecialGroup() + { + return $this->specialGroup; + } + + public function setUserByEmail($userByEmail) + { + $this->userByEmail = $userByEmail; + } + + public function getUserByEmail() + { + return $this->userByEmail; + } +} + +class Google_Service_Bigquery_DatasetList extends Google_Collection +{ + protected $datasetsType = 'Google_Service_Bigquery_DatasetListDatasets'; + protected $datasetsDataType = 'array'; + public $etag; + public $kind; + public $nextPageToken; + + public function setDatasets($datasets) + { + $this->datasets = $datasets; + } + + public function getDatasets() + { + return $this->datasets; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Bigquery_DatasetListDatasets extends Google_Model +{ + protected $datasetReferenceType = 'Google_Service_Bigquery_DatasetReference'; + protected $datasetReferenceDataType = ''; + public $friendlyName; + public $id; + public $kind; + + public function setDatasetReference(Google_Service_Bigquery_DatasetReference $datasetReference) + { + $this->datasetReference = $datasetReference; + } + + public function getDatasetReference() + { + return $this->datasetReference; + } + + public function setFriendlyName($friendlyName) + { + $this->friendlyName = $friendlyName; + } + + public function getFriendlyName() + { + return $this->friendlyName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Bigquery_DatasetReference extends Google_Model +{ + public $datasetId; + public $projectId; + + public function setDatasetId($datasetId) + { + $this->datasetId = $datasetId; + } + + public function getDatasetId() + { + return $this->datasetId; + } + + public function setProjectId($projectId) + { + $this->projectId = $projectId; + } + + public function getProjectId() + { + return $this->projectId; + } +} + +class Google_Service_Bigquery_ErrorProto extends Google_Model +{ + public $debugInfo; + public $location; + public $message; + public $reason; + + public function setDebugInfo($debugInfo) + { + $this->debugInfo = $debugInfo; + } + + public function getDebugInfo() + { + return $this->debugInfo; + } + + public function setLocation($location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } + + public function setReason($reason) + { + $this->reason = $reason; + } + + public function getReason() + { + return $this->reason; + } +} + +class Google_Service_Bigquery_GetQueryResultsResponse extends Google_Collection +{ + public $cacheHit; + public $etag; + public $jobComplete; + protected $jobReferenceType = 'Google_Service_Bigquery_JobReference'; + protected $jobReferenceDataType = ''; + public $kind; + public $pageToken; + protected $rowsType = 'Google_Service_Bigquery_TableRow'; + protected $rowsDataType = 'array'; + protected $schemaType = 'Google_Service_Bigquery_TableSchema'; + protected $schemaDataType = ''; + public $totalRows; + + public function setCacheHit($cacheHit) + { + $this->cacheHit = $cacheHit; + } + + public function getCacheHit() + { + return $this->cacheHit; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setJobComplete($jobComplete) + { + $this->jobComplete = $jobComplete; + } + + public function getJobComplete() + { + return $this->jobComplete; + } + + public function setJobReference(Google_Service_Bigquery_JobReference $jobReference) + { + $this->jobReference = $jobReference; + } + + public function getJobReference() + { + return $this->jobReference; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPageToken($pageToken) + { + $this->pageToken = $pageToken; + } + + public function getPageToken() + { + return $this->pageToken; + } + + public function setRows($rows) + { + $this->rows = $rows; + } + + public function getRows() + { + return $this->rows; + } + + public function setSchema(Google_Service_Bigquery_TableSchema $schema) + { + $this->schema = $schema; + } + + public function getSchema() + { + return $this->schema; + } + + public function setTotalRows($totalRows) + { + $this->totalRows = $totalRows; + } + + public function getTotalRows() + { + return $this->totalRows; + } +} + +class Google_Service_Bigquery_Job extends Google_Model +{ + protected $configurationType = 'Google_Service_Bigquery_JobConfiguration'; + protected $configurationDataType = ''; + public $etag; + public $id; + protected $jobReferenceType = 'Google_Service_Bigquery_JobReference'; + protected $jobReferenceDataType = ''; + public $kind; + public $selfLink; + protected $statisticsType = 'Google_Service_Bigquery_JobStatistics'; + protected $statisticsDataType = ''; + protected $statusType = 'Google_Service_Bigquery_JobStatus'; + protected $statusDataType = ''; + + public function setConfiguration(Google_Service_Bigquery_JobConfiguration $configuration) + { + $this->configuration = $configuration; + } + + public function getConfiguration() + { + return $this->configuration; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setJobReference(Google_Service_Bigquery_JobReference $jobReference) + { + $this->jobReference = $jobReference; + } + + public function getJobReference() + { + return $this->jobReference; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setStatistics(Google_Service_Bigquery_JobStatistics $statistics) + { + $this->statistics = $statistics; + } + + public function getStatistics() + { + return $this->statistics; + } + + public function setStatus(Google_Service_Bigquery_JobStatus $status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_Bigquery_JobConfiguration extends Google_Model +{ + protected $copyType = 'Google_Service_Bigquery_JobConfigurationTableCopy'; + protected $copyDataType = ''; + public $dryRun; + protected $extractType = 'Google_Service_Bigquery_JobConfigurationExtract'; + protected $extractDataType = ''; + protected $linkType = 'Google_Service_Bigquery_JobConfigurationLink'; + protected $linkDataType = ''; + protected $loadType = 'Google_Service_Bigquery_JobConfigurationLoad'; + protected $loadDataType = ''; + protected $queryType = 'Google_Service_Bigquery_JobConfigurationQuery'; + protected $queryDataType = ''; + + public function setCopy(Google_Service_Bigquery_JobConfigurationTableCopy $copy) + { + $this->copy = $copy; + } + + public function getCopy() + { + return $this->copy; + } + + public function setDryRun($dryRun) + { + $this->dryRun = $dryRun; + } + + public function getDryRun() + { + return $this->dryRun; + } + + public function setExtract(Google_Service_Bigquery_JobConfigurationExtract $extract) + { + $this->extract = $extract; + } + + public function getExtract() + { + return $this->extract; + } + + public function setLink(Google_Service_Bigquery_JobConfigurationLink $link) + { + $this->link = $link; + } + + public function getLink() + { + return $this->link; + } + + public function setLoad(Google_Service_Bigquery_JobConfigurationLoad $load) + { + $this->load = $load; + } + + public function getLoad() + { + return $this->load; + } + + public function setQuery(Google_Service_Bigquery_JobConfigurationQuery $query) + { + $this->query = $query; + } + + public function getQuery() + { + return $this->query; + } +} + +class Google_Service_Bigquery_JobConfigurationExtract extends Google_Collection +{ + public $compression; + public $destinationFormat; + public $destinationUri; + public $destinationUris; + public $fieldDelimiter; + public $printHeader; + protected $sourceTableType = 'Google_Service_Bigquery_TableReference'; + protected $sourceTableDataType = ''; + + public function setCompression($compression) + { + $this->compression = $compression; + } + + public function getCompression() + { + return $this->compression; + } + + public function setDestinationFormat($destinationFormat) + { + $this->destinationFormat = $destinationFormat; + } + + public function getDestinationFormat() + { + return $this->destinationFormat; + } + + public function setDestinationUri($destinationUri) + { + $this->destinationUri = $destinationUri; + } + + public function getDestinationUri() + { + return $this->destinationUri; + } + + public function setDestinationUris($destinationUris) + { + $this->destinationUris = $destinationUris; + } + + public function getDestinationUris() + { + return $this->destinationUris; + } + + public function setFieldDelimiter($fieldDelimiter) + { + $this->fieldDelimiter = $fieldDelimiter; + } + + public function getFieldDelimiter() + { + return $this->fieldDelimiter; + } + + public function setPrintHeader($printHeader) + { + $this->printHeader = $printHeader; + } + + public function getPrintHeader() + { + return $this->printHeader; + } + + public function setSourceTable(Google_Service_Bigquery_TableReference $sourceTable) + { + $this->sourceTable = $sourceTable; + } + + public function getSourceTable() + { + return $this->sourceTable; + } +} + +class Google_Service_Bigquery_JobConfigurationLink extends Google_Collection +{ + public $createDisposition; + protected $destinationTableType = 'Google_Service_Bigquery_TableReference'; + protected $destinationTableDataType = ''; + public $sourceUri; + public $writeDisposition; + + public function setCreateDisposition($createDisposition) + { + $this->createDisposition = $createDisposition; + } + + public function getCreateDisposition() + { + return $this->createDisposition; + } + + public function setDestinationTable(Google_Service_Bigquery_TableReference $destinationTable) + { + $this->destinationTable = $destinationTable; + } + + public function getDestinationTable() + { + return $this->destinationTable; + } + + public function setSourceUri($sourceUri) + { + $this->sourceUri = $sourceUri; + } + + public function getSourceUri() + { + return $this->sourceUri; + } + + public function setWriteDisposition($writeDisposition) + { + $this->writeDisposition = $writeDisposition; + } + + public function getWriteDisposition() + { + return $this->writeDisposition; + } +} + +class Google_Service_Bigquery_JobConfigurationLoad extends Google_Collection +{ + public $allowJaggedRows; + public $allowQuotedNewlines; + public $createDisposition; + protected $destinationTableType = 'Google_Service_Bigquery_TableReference'; + protected $destinationTableDataType = ''; + public $encoding; + public $fieldDelimiter; + public $ignoreUnknownValues; + public $maxBadRecords; + public $quote; + protected $schemaType = 'Google_Service_Bigquery_TableSchema'; + protected $schemaDataType = ''; + public $schemaInline; + public $schemaInlineFormat; + public $skipLeadingRows; + public $sourceFormat; + public $sourceUris; + public $writeDisposition; + + public function setAllowJaggedRows($allowJaggedRows) + { + $this->allowJaggedRows = $allowJaggedRows; + } + + public function getAllowJaggedRows() + { + return $this->allowJaggedRows; + } + + public function setAllowQuotedNewlines($allowQuotedNewlines) + { + $this->allowQuotedNewlines = $allowQuotedNewlines; + } + + public function getAllowQuotedNewlines() + { + return $this->allowQuotedNewlines; + } + + public function setCreateDisposition($createDisposition) + { + $this->createDisposition = $createDisposition; + } + + public function getCreateDisposition() + { + return $this->createDisposition; + } + + public function setDestinationTable(Google_Service_Bigquery_TableReference $destinationTable) + { + $this->destinationTable = $destinationTable; + } + + public function getDestinationTable() + { + return $this->destinationTable; + } + + public function setEncoding($encoding) + { + $this->encoding = $encoding; + } + + public function getEncoding() + { + return $this->encoding; + } + + public function setFieldDelimiter($fieldDelimiter) + { + $this->fieldDelimiter = $fieldDelimiter; + } + + public function getFieldDelimiter() + { + return $this->fieldDelimiter; + } + + public function setIgnoreUnknownValues($ignoreUnknownValues) + { + $this->ignoreUnknownValues = $ignoreUnknownValues; + } + + public function getIgnoreUnknownValues() + { + return $this->ignoreUnknownValues; + } + + public function setMaxBadRecords($maxBadRecords) + { + $this->maxBadRecords = $maxBadRecords; + } + + public function getMaxBadRecords() + { + return $this->maxBadRecords; + } + + public function setQuote($quote) + { + $this->quote = $quote; + } + + public function getQuote() + { + return $this->quote; + } + + public function setSchema(Google_Service_Bigquery_TableSchema $schema) + { + $this->schema = $schema; + } + + public function getSchema() + { + return $this->schema; + } + + public function setSchemaInline($schemaInline) + { + $this->schemaInline = $schemaInline; + } + + public function getSchemaInline() + { + return $this->schemaInline; + } + + public function setSchemaInlineFormat($schemaInlineFormat) + { + $this->schemaInlineFormat = $schemaInlineFormat; + } + + public function getSchemaInlineFormat() + { + return $this->schemaInlineFormat; + } + + public function setSkipLeadingRows($skipLeadingRows) + { + $this->skipLeadingRows = $skipLeadingRows; + } + + public function getSkipLeadingRows() + { + return $this->skipLeadingRows; + } + + public function setSourceFormat($sourceFormat) + { + $this->sourceFormat = $sourceFormat; + } + + public function getSourceFormat() + { + return $this->sourceFormat; + } + + public function setSourceUris($sourceUris) + { + $this->sourceUris = $sourceUris; + } + + public function getSourceUris() + { + return $this->sourceUris; + } + + public function setWriteDisposition($writeDisposition) + { + $this->writeDisposition = $writeDisposition; + } + + public function getWriteDisposition() + { + return $this->writeDisposition; + } +} + +class Google_Service_Bigquery_JobConfigurationQuery extends Google_Model +{ + public $allowLargeResults; + public $createDisposition; + protected $defaultDatasetType = 'Google_Service_Bigquery_DatasetReference'; + protected $defaultDatasetDataType = ''; + protected $destinationTableType = 'Google_Service_Bigquery_TableReference'; + protected $destinationTableDataType = ''; + public $flattenResults; + public $preserveNulls; + public $priority; + public $query; + public $useQueryCache; + public $writeDisposition; + + public function setAllowLargeResults($allowLargeResults) + { + $this->allowLargeResults = $allowLargeResults; + } + + public function getAllowLargeResults() + { + return $this->allowLargeResults; + } + + public function setCreateDisposition($createDisposition) + { + $this->createDisposition = $createDisposition; + } + + public function getCreateDisposition() + { + return $this->createDisposition; + } + + public function setDefaultDataset(Google_Service_Bigquery_DatasetReference $defaultDataset) + { + $this->defaultDataset = $defaultDataset; + } + + public function getDefaultDataset() + { + return $this->defaultDataset; + } + + public function setDestinationTable(Google_Service_Bigquery_TableReference $destinationTable) + { + $this->destinationTable = $destinationTable; + } + + public function getDestinationTable() + { + return $this->destinationTable; + } + + public function setFlattenResults($flattenResults) + { + $this->flattenResults = $flattenResults; + } + + public function getFlattenResults() + { + return $this->flattenResults; + } + + public function setPreserveNulls($preserveNulls) + { + $this->preserveNulls = $preserveNulls; + } + + public function getPreserveNulls() + { + return $this->preserveNulls; + } + + public function setPriority($priority) + { + $this->priority = $priority; + } + + public function getPriority() + { + return $this->priority; + } + + public function setQuery($query) + { + $this->query = $query; + } + + public function getQuery() + { + return $this->query; + } + + public function setUseQueryCache($useQueryCache) + { + $this->useQueryCache = $useQueryCache; + } + + public function getUseQueryCache() + { + return $this->useQueryCache; + } + + public function setWriteDisposition($writeDisposition) + { + $this->writeDisposition = $writeDisposition; + } + + public function getWriteDisposition() + { + return $this->writeDisposition; + } +} + +class Google_Service_Bigquery_JobConfigurationTableCopy extends Google_Collection +{ + public $createDisposition; + protected $destinationTableType = 'Google_Service_Bigquery_TableReference'; + protected $destinationTableDataType = ''; + protected $sourceTableType = 'Google_Service_Bigquery_TableReference'; + protected $sourceTableDataType = ''; + protected $sourceTablesType = 'Google_Service_Bigquery_TableReference'; + protected $sourceTablesDataType = 'array'; + public $writeDisposition; + + public function setCreateDisposition($createDisposition) + { + $this->createDisposition = $createDisposition; + } + + public function getCreateDisposition() + { + return $this->createDisposition; + } + + public function setDestinationTable(Google_Service_Bigquery_TableReference $destinationTable) + { + $this->destinationTable = $destinationTable; + } + + public function getDestinationTable() + { + return $this->destinationTable; + } + + public function setSourceTable(Google_Service_Bigquery_TableReference $sourceTable) + { + $this->sourceTable = $sourceTable; + } + + public function getSourceTable() + { + return $this->sourceTable; + } + + public function setSourceTables($sourceTables) + { + $this->sourceTables = $sourceTables; + } + + public function getSourceTables() + { + return $this->sourceTables; + } + + public function setWriteDisposition($writeDisposition) + { + $this->writeDisposition = $writeDisposition; + } + + public function getWriteDisposition() + { + return $this->writeDisposition; + } +} + +class Google_Service_Bigquery_JobList extends Google_Collection +{ + public $etag; + protected $jobsType = 'Google_Service_Bigquery_JobListJobs'; + protected $jobsDataType = 'array'; + public $kind; + public $nextPageToken; + public $totalItems; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setJobs($jobs) + { + $this->jobs = $jobs; + } + + public function getJobs() + { + return $this->jobs; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_Bigquery_JobListJobs extends Google_Model +{ + protected $configurationType = 'Google_Service_Bigquery_JobConfiguration'; + protected $configurationDataType = ''; + protected $errorResultType = 'Google_Service_Bigquery_ErrorProto'; + protected $errorResultDataType = ''; + public $id; + protected $jobReferenceType = 'Google_Service_Bigquery_JobReference'; + protected $jobReferenceDataType = ''; + public $kind; + public $state; + protected $statisticsType = 'Google_Service_Bigquery_JobStatistics'; + protected $statisticsDataType = ''; + protected $statusType = 'Google_Service_Bigquery_JobStatus'; + protected $statusDataType = ''; + public $userEmail; + + public function setConfiguration(Google_Service_Bigquery_JobConfiguration $configuration) + { + $this->configuration = $configuration; + } + + public function getConfiguration() + { + return $this->configuration; + } + + public function setErrorResult(Google_Service_Bigquery_ErrorProto $errorResult) + { + $this->errorResult = $errorResult; + } + + public function getErrorResult() + { + return $this->errorResult; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setJobReference(Google_Service_Bigquery_JobReference $jobReference) + { + $this->jobReference = $jobReference; + } + + public function getJobReference() + { + return $this->jobReference; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setState($state) + { + $this->state = $state; + } + + public function getState() + { + return $this->state; + } + + public function setStatistics(Google_Service_Bigquery_JobStatistics $statistics) + { + $this->statistics = $statistics; + } + + public function getStatistics() + { + return $this->statistics; + } + + public function setStatus(Google_Service_Bigquery_JobStatus $status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setUserEmail($userEmail) + { + $this->userEmail = $userEmail; + } + + public function getUserEmail() + { + return $this->userEmail; + } +} + +class Google_Service_Bigquery_JobReference extends Google_Model +{ + public $jobId; + public $projectId; + + public function setJobId($jobId) + { + $this->jobId = $jobId; + } + + public function getJobId() + { + return $this->jobId; + } + + public function setProjectId($projectId) + { + $this->projectId = $projectId; + } + + public function getProjectId() + { + return $this->projectId; + } +} + +class Google_Service_Bigquery_JobStatistics extends Google_Model +{ + public $creationTime; + public $endTime; + protected $loadType = 'Google_Service_Bigquery_JobStatistics3'; + protected $loadDataType = ''; + protected $queryType = 'Google_Service_Bigquery_JobStatistics2'; + protected $queryDataType = ''; + public $startTime; + public $totalBytesProcessed; + + public function setCreationTime($creationTime) + { + $this->creationTime = $creationTime; + } + + public function getCreationTime() + { + return $this->creationTime; + } + + public function setEndTime($endTime) + { + $this->endTime = $endTime; + } + + public function getEndTime() + { + return $this->endTime; + } + + public function setLoad(Google_Service_Bigquery_JobStatistics3 $load) + { + $this->load = $load; + } + + public function getLoad() + { + return $this->load; + } + + public function setQuery(Google_Service_Bigquery_JobStatistics2 $query) + { + $this->query = $query; + } + + public function getQuery() + { + return $this->query; + } + + public function setStartTime($startTime) + { + $this->startTime = $startTime; + } + + public function getStartTime() + { + return $this->startTime; + } + + public function setTotalBytesProcessed($totalBytesProcessed) + { + $this->totalBytesProcessed = $totalBytesProcessed; + } + + public function getTotalBytesProcessed() + { + return $this->totalBytesProcessed; + } +} + +class Google_Service_Bigquery_JobStatistics2 extends Google_Model +{ + public $cacheHit; + public $totalBytesProcessed; + + public function setCacheHit($cacheHit) + { + $this->cacheHit = $cacheHit; + } + + public function getCacheHit() + { + return $this->cacheHit; + } + + public function setTotalBytesProcessed($totalBytesProcessed) + { + $this->totalBytesProcessed = $totalBytesProcessed; + } + + public function getTotalBytesProcessed() + { + return $this->totalBytesProcessed; + } +} + +class Google_Service_Bigquery_JobStatistics3 extends Google_Model +{ + public $inputFileBytes; + public $inputFiles; + public $outputBytes; + public $outputRows; + + public function setInputFileBytes($inputFileBytes) + { + $this->inputFileBytes = $inputFileBytes; + } + + public function getInputFileBytes() + { + return $this->inputFileBytes; + } + + public function setInputFiles($inputFiles) + { + $this->inputFiles = $inputFiles; + } + + public function getInputFiles() + { + return $this->inputFiles; + } + + public function setOutputBytes($outputBytes) + { + $this->outputBytes = $outputBytes; + } + + public function getOutputBytes() + { + return $this->outputBytes; + } + + public function setOutputRows($outputRows) + { + $this->outputRows = $outputRows; + } + + public function getOutputRows() + { + return $this->outputRows; + } +} + +class Google_Service_Bigquery_JobStatus extends Google_Collection +{ + protected $errorResultType = 'Google_Service_Bigquery_ErrorProto'; + protected $errorResultDataType = ''; + protected $errorsType = 'Google_Service_Bigquery_ErrorProto'; + protected $errorsDataType = 'array'; + public $state; + + public function setErrorResult(Google_Service_Bigquery_ErrorProto $errorResult) + { + $this->errorResult = $errorResult; + } + + public function getErrorResult() + { + return $this->errorResult; + } + + public function setErrors($errors) + { + $this->errors = $errors; + } + + public function getErrors() + { + return $this->errors; + } + + public function setState($state) + { + $this->state = $state; + } + + public function getState() + { + return $this->state; + } +} + +class Google_Service_Bigquery_JsonObject extends Google_Model +{ + +} + +class Google_Service_Bigquery_ProjectList extends Google_Collection +{ + public $etag; + public $kind; + public $nextPageToken; + protected $projectsType = 'Google_Service_Bigquery_ProjectListProjects'; + protected $projectsDataType = 'array'; + public $totalItems; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setProjects($projects) + { + $this->projects = $projects; + } + + public function getProjects() + { + return $this->projects; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_Bigquery_ProjectListProjects extends Google_Model +{ + public $friendlyName; + public $id; + public $kind; + public $numericId; + protected $projectReferenceType = 'Google_Service_Bigquery_ProjectReference'; + protected $projectReferenceDataType = ''; + + public function setFriendlyName($friendlyName) + { + $this->friendlyName = $friendlyName; + } + + public function getFriendlyName() + { + return $this->friendlyName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNumericId($numericId) + { + $this->numericId = $numericId; + } + + public function getNumericId() + { + return $this->numericId; + } + + public function setProjectReference(Google_Service_Bigquery_ProjectReference $projectReference) + { + $this->projectReference = $projectReference; + } + + public function getProjectReference() + { + return $this->projectReference; + } +} + +class Google_Service_Bigquery_ProjectReference extends Google_Model +{ + public $projectId; + + public function setProjectId($projectId) + { + $this->projectId = $projectId; + } + + public function getProjectId() + { + return $this->projectId; + } +} + +class Google_Service_Bigquery_QueryRequest extends Google_Model +{ + protected $defaultDatasetType = 'Google_Service_Bigquery_DatasetReference'; + protected $defaultDatasetDataType = ''; + public $dryRun; + public $kind; + public $maxResults; + public $preserveNulls; + public $query; + public $timeoutMs; + public $useQueryCache; + + public function setDefaultDataset(Google_Service_Bigquery_DatasetReference $defaultDataset) + { + $this->defaultDataset = $defaultDataset; + } + + public function getDefaultDataset() + { + return $this->defaultDataset; + } + + public function setDryRun($dryRun) + { + $this->dryRun = $dryRun; + } + + public function getDryRun() + { + return $this->dryRun; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMaxResults($maxResults) + { + $this->maxResults = $maxResults; + } + + public function getMaxResults() + { + return $this->maxResults; + } + + public function setPreserveNulls($preserveNulls) + { + $this->preserveNulls = $preserveNulls; + } + + public function getPreserveNulls() + { + return $this->preserveNulls; + } + + public function setQuery($query) + { + $this->query = $query; + } + + public function getQuery() + { + return $this->query; + } + + public function setTimeoutMs($timeoutMs) + { + $this->timeoutMs = $timeoutMs; + } + + public function getTimeoutMs() + { + return $this->timeoutMs; + } + + public function setUseQueryCache($useQueryCache) + { + $this->useQueryCache = $useQueryCache; + } + + public function getUseQueryCache() + { + return $this->useQueryCache; + } +} + +class Google_Service_Bigquery_QueryResponse extends Google_Collection +{ + public $cacheHit; + public $jobComplete; + protected $jobReferenceType = 'Google_Service_Bigquery_JobReference'; + protected $jobReferenceDataType = ''; + public $kind; + public $pageToken; + protected $rowsType = 'Google_Service_Bigquery_TableRow'; + protected $rowsDataType = 'array'; + protected $schemaType = 'Google_Service_Bigquery_TableSchema'; + protected $schemaDataType = ''; + public $totalBytesProcessed; + public $totalRows; + + public function setCacheHit($cacheHit) + { + $this->cacheHit = $cacheHit; + } + + public function getCacheHit() + { + return $this->cacheHit; + } + + public function setJobComplete($jobComplete) + { + $this->jobComplete = $jobComplete; + } + + public function getJobComplete() + { + return $this->jobComplete; + } + + public function setJobReference(Google_Service_Bigquery_JobReference $jobReference) + { + $this->jobReference = $jobReference; + } + + public function getJobReference() + { + return $this->jobReference; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPageToken($pageToken) + { + $this->pageToken = $pageToken; + } + + public function getPageToken() + { + return $this->pageToken; + } + + public function setRows($rows) + { + $this->rows = $rows; + } + + public function getRows() + { + return $this->rows; + } + + public function setSchema(Google_Service_Bigquery_TableSchema $schema) + { + $this->schema = $schema; + } + + public function getSchema() + { + return $this->schema; + } + + public function setTotalBytesProcessed($totalBytesProcessed) + { + $this->totalBytesProcessed = $totalBytesProcessed; + } + + public function getTotalBytesProcessed() + { + return $this->totalBytesProcessed; + } + + public function setTotalRows($totalRows) + { + $this->totalRows = $totalRows; + } + + public function getTotalRows() + { + return $this->totalRows; + } +} + +class Google_Service_Bigquery_Table extends Google_Model +{ + public $creationTime; + public $description; + public $etag; + public $expirationTime; + public $friendlyName; + public $id; + public $kind; + public $lastModifiedTime; + public $numBytes; + public $numRows; + protected $schemaType = 'Google_Service_Bigquery_TableSchema'; + protected $schemaDataType = ''; + public $selfLink; + protected $tableReferenceType = 'Google_Service_Bigquery_TableReference'; + protected $tableReferenceDataType = ''; + public $type; + protected $viewType = 'Google_Service_Bigquery_ViewDefinition'; + protected $viewDataType = ''; + + public function setCreationTime($creationTime) + { + $this->creationTime = $creationTime; + } + + public function getCreationTime() + { + return $this->creationTime; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setExpirationTime($expirationTime) + { + $this->expirationTime = $expirationTime; + } + + public function getExpirationTime() + { + return $this->expirationTime; + } + + public function setFriendlyName($friendlyName) + { + $this->friendlyName = $friendlyName; + } + + public function getFriendlyName() + { + return $this->friendlyName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastModifiedTime($lastModifiedTime) + { + $this->lastModifiedTime = $lastModifiedTime; + } + + public function getLastModifiedTime() + { + return $this->lastModifiedTime; + } + + public function setNumBytes($numBytes) + { + $this->numBytes = $numBytes; + } + + public function getNumBytes() + { + return $this->numBytes; + } + + public function setNumRows($numRows) + { + $this->numRows = $numRows; + } + + public function getNumRows() + { + return $this->numRows; + } + + public function setSchema(Google_Service_Bigquery_TableSchema $schema) + { + $this->schema = $schema; + } + + public function getSchema() + { + return $this->schema; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTableReference(Google_Service_Bigquery_TableReference $tableReference) + { + $this->tableReference = $tableReference; + } + + public function getTableReference() + { + return $this->tableReference; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setView(Google_Service_Bigquery_ViewDefinition $view) + { + $this->view = $view; + } + + public function getView() + { + return $this->view; + } +} + +class Google_Service_Bigquery_TableCell extends Google_Model +{ + public $v; + + public function setV($v) + { + $this->v = $v; + } + + public function getV() + { + return $this->v; + } +} + +class Google_Service_Bigquery_TableDataInsertAllRequest extends Google_Collection +{ + public $kind; + protected $rowsType = 'Google_Service_Bigquery_TableDataInsertAllRequestRows'; + protected $rowsDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRows($rows) + { + $this->rows = $rows; + } + + public function getRows() + { + return $this->rows; + } +} + +class Google_Service_Bigquery_TableDataInsertAllRequestRows extends Google_Model +{ + public $insertId; + public $json; + + public function setInsertId($insertId) + { + $this->insertId = $insertId; + } + + public function getInsertId() + { + return $this->insertId; + } + + public function setJson($json) + { + $this->json = $json; + } + + public function getJson() + { + return $this->json; + } +} + +class Google_Service_Bigquery_TableDataInsertAllResponse extends Google_Collection +{ + protected $insertErrorsType = 'Google_Service_Bigquery_TableDataInsertAllResponseInsertErrors'; + protected $insertErrorsDataType = 'array'; + public $kind; + + public function setInsertErrors($insertErrors) + { + $this->insertErrors = $insertErrors; + } + + public function getInsertErrors() + { + return $this->insertErrors; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Bigquery_TableDataInsertAllResponseInsertErrors extends Google_Collection +{ + protected $errorsType = 'Google_Service_Bigquery_ErrorProto'; + protected $errorsDataType = 'array'; + public $index; + + public function setErrors($errors) + { + $this->errors = $errors; + } + + public function getErrors() + { + return $this->errors; + } + + public function setIndex($index) + { + $this->index = $index; + } + + public function getIndex() + { + return $this->index; + } +} + +class Google_Service_Bigquery_TableDataList extends Google_Collection +{ + public $etag; + public $kind; + public $pageToken; + protected $rowsType = 'Google_Service_Bigquery_TableRow'; + protected $rowsDataType = 'array'; + public $totalRows; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPageToken($pageToken) + { + $this->pageToken = $pageToken; + } + + public function getPageToken() + { + return $this->pageToken; + } + + public function setRows($rows) + { + $this->rows = $rows; + } + + public function getRows() + { + return $this->rows; + } + + public function setTotalRows($totalRows) + { + $this->totalRows = $totalRows; + } + + public function getTotalRows() + { + return $this->totalRows; + } +} + +class Google_Service_Bigquery_TableFieldSchema extends Google_Collection +{ + public $description; + protected $fieldsType = 'Google_Service_Bigquery_TableFieldSchema'; + protected $fieldsDataType = 'array'; + public $mode; + public $name; + public $type; + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setFields($fields) + { + $this->fields = $fields; + } + + public function getFields() + { + return $this->fields; + } + + public function setMode($mode) + { + $this->mode = $mode; + } + + public function getMode() + { + return $this->mode; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Bigquery_TableList extends Google_Collection +{ + public $etag; + public $kind; + public $nextPageToken; + protected $tablesType = 'Google_Service_Bigquery_TableListTables'; + protected $tablesDataType = 'array'; + public $totalItems; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setTables($tables) + { + $this->tables = $tables; + } + + public function getTables() + { + return $this->tables; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_Bigquery_TableListTables extends Google_Model +{ + public $friendlyName; + public $id; + public $kind; + protected $tableReferenceType = 'Google_Service_Bigquery_TableReference'; + protected $tableReferenceDataType = ''; + public $type; + + public function setFriendlyName($friendlyName) + { + $this->friendlyName = $friendlyName; + } + + public function getFriendlyName() + { + return $this->friendlyName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setTableReference(Google_Service_Bigquery_TableReference $tableReference) + { + $this->tableReference = $tableReference; + } + + public function getTableReference() + { + return $this->tableReference; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Bigquery_TableReference extends Google_Model +{ + public $datasetId; + public $projectId; + public $tableId; + + public function setDatasetId($datasetId) + { + $this->datasetId = $datasetId; + } + + public function getDatasetId() + { + return $this->datasetId; + } + + public function setProjectId($projectId) + { + $this->projectId = $projectId; + } + + public function getProjectId() + { + return $this->projectId; + } + + public function setTableId($tableId) + { + $this->tableId = $tableId; + } + + public function getTableId() + { + return $this->tableId; + } +} + +class Google_Service_Bigquery_TableRow extends Google_Collection +{ + protected $fType = 'Google_Service_Bigquery_TableCell'; + protected $fDataType = 'array'; + + public function setF($f) + { + $this->f = $f; + } + + public function getF() + { + return $this->f; + } +} + +class Google_Service_Bigquery_TableSchema extends Google_Collection +{ + protected $fieldsType = 'Google_Service_Bigquery_TableFieldSchema'; + protected $fieldsDataType = 'array'; + + public function setFields($fields) + { + $this->fields = $fields; + } + + public function getFields() + { + return $this->fields; + } +} + +class Google_Service_Bigquery_ViewDefinition extends Google_Model +{ + public $query; + + public function setQuery($query) + { + $this->query = $query; + } + + public function getQuery() + { + return $this->query; + } +} diff --git a/oauth/Google/Service/Blogger.php b/oauth/Google/Service/Blogger.php new file mode 100644 index 0000000..2438429 --- /dev/null +++ b/oauth/Google/Service/Blogger.php @@ -0,0 +1,3465 @@ + + * API for access to the data within Blogger. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Blogger extends Google_Service +{ + /** Manage your Blogger account. */ + const BLOGGER = "https://www.googleapis.com/auth/blogger"; + /** View your Blogger account. */ + const BLOGGER_READONLY = "https://www.googleapis.com/auth/blogger.readonly"; + + public $blogUserInfos; + public $blogs; + public $comments; + public $pageViews; + public $pages; + public $postUserInfos; + public $posts; + public $users; + + + /** + * Constructs the internal representation of the Blogger service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'blogger/v3/'; + $this->version = 'v3'; + $this->serviceName = 'blogger'; + + $this->blogUserInfos = new Google_Service_Blogger_BlogUserInfos_Resource( + $this, + $this->serviceName, + 'blogUserInfos', + array( + 'methods' => array( + 'get' => array( + 'path' => 'users/{userId}/blogs/{blogId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'maxPosts' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->blogs = new Google_Service_Blogger_Blogs_Resource( + $this, + $this->serviceName, + 'blogs', + array( + 'methods' => array( + 'get' => array( + 'path' => 'blogs/{blogId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'maxPosts' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'view' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'getByUrl' => array( + 'path' => 'blogs/byurl', + 'httpMethod' => 'GET', + 'parameters' => array( + 'url' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'view' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'listByUser' => array( + 'path' => 'users/{userId}/blogs', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'fetchUserInfo' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'status' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'role' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'view' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->comments = new Google_Service_Blogger_Comments_Resource( + $this, + $this->serviceName, + 'comments', + array( + 'methods' => array( + 'approve' => array( + 'path' => 'blogs/{blogId}/posts/{postId}/comments/{commentId}/approve', + 'httpMethod' => 'POST', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'postId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => 'blogs/{blogId}/posts/{postId}/comments/{commentId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'postId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'blogs/{blogId}/posts/{postId}/comments/{commentId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'postId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'view' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'blogs/{blogId}/posts/{postId}/comments', + 'httpMethod' => 'GET', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'postId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'status' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'startDate' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'endDate' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'fetchBodies' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'view' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'listByBlog' => array( + 'path' => 'blogs/{blogId}/comments', + 'httpMethod' => 'GET', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'startDate' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'endDate' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'fetchBodies' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'markAsSpam' => array( + 'path' => 'blogs/{blogId}/posts/{postId}/comments/{commentId}/spam', + 'httpMethod' => 'POST', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'postId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'removeContent' => array( + 'path' => 'blogs/{blogId}/posts/{postId}/comments/{commentId}/removecontent', + 'httpMethod' => 'POST', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'postId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->pageViews = new Google_Service_Blogger_PageViews_Resource( + $this, + $this->serviceName, + 'pageViews', + array( + 'methods' => array( + 'get' => array( + 'path' => 'blogs/{blogId}/pageviews', + 'httpMethod' => 'GET', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'range' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + ), + ), + ) + ) + ); + $this->pages = new Google_Service_Blogger_Pages_Resource( + $this, + $this->serviceName, + 'pages', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'blogs/{blogId}/pages/{pageId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'blogs/{blogId}/pages/{pageId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'view' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'blogs/{blogId}/pages', + 'httpMethod' => 'POST', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'isDraft' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'list' => array( + 'path' => 'blogs/{blogId}/pages', + 'httpMethod' => 'GET', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'status' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'fetchBodies' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'view' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'blogs/{blogId}/pages/{pageId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'revert' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'publish' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'publish' => array( + 'path' => 'blogs/{blogId}/pages/{pageId}/publish', + 'httpMethod' => 'POST', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'revert' => array( + 'path' => 'blogs/{blogId}/pages/{pageId}/revert', + 'httpMethod' => 'POST', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'blogs/{blogId}/pages/{pageId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'revert' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'publish' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ), + ) + ) + ); + $this->postUserInfos = new Google_Service_Blogger_PostUserInfos_Resource( + $this, + $this->serviceName, + 'postUserInfos', + array( + 'methods' => array( + 'get' => array( + 'path' => 'users/{userId}/blogs/{blogId}/posts/{postId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'postId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'maxComments' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'list' => array( + 'path' => 'users/{userId}/blogs/{blogId}/posts', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startDate' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'endDate' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'labels' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'status' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'fetchBodies' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'view' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->posts = new Google_Service_Blogger_Posts_Resource( + $this, + $this->serviceName, + 'posts', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'blogs/{blogId}/posts/{postId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'postId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'blogs/{blogId}/posts/{postId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'postId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'fetchBody' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxComments' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'fetchImages' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'view' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'getByPath' => array( + 'path' => 'blogs/{blogId}/posts/bypath', + 'httpMethod' => 'GET', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'path' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'maxComments' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'view' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'blogs/{blogId}/posts', + 'httpMethod' => 'POST', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'fetchImages' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'isDraft' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'fetchBody' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'list' => array( + 'path' => 'blogs/{blogId}/posts', + 'httpMethod' => 'GET', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startDate' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'endDate' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'labels' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'fetchImages' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'status' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'fetchBodies' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'view' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'blogs/{blogId}/posts/{postId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'postId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'revert' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'publish' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'fetchBody' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxComments' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'fetchImages' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'publish' => array( + 'path' => 'blogs/{blogId}/posts/{postId}/publish', + 'httpMethod' => 'POST', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'postId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'publishDate' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'revert' => array( + 'path' => 'blogs/{blogId}/posts/{postId}/revert', + 'httpMethod' => 'POST', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'postId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'search' => array( + 'path' => 'blogs/{blogId}/posts/search', + 'httpMethod' => 'GET', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'q' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'fetchBodies' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'update' => array( + 'path' => 'blogs/{blogId}/posts/{postId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'blogId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'postId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'revert' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'publish' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'fetchBody' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxComments' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'fetchImages' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ), + ) + ) + ); + $this->users = new Google_Service_Blogger_Users_Resource( + $this, + $this->serviceName, + 'users', + array( + 'methods' => array( + 'get' => array( + 'path' => 'users/{userId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "blogUserInfos" collection of methods. + * Typical usage is: + * + * $bloggerService = new Google_Service_Blogger(...); + * $blogUserInfos = $bloggerService->blogUserInfos; + * + */ +class Google_Service_Blogger_BlogUserInfos_Resource extends Google_Service_Resource +{ + + /** + * Gets one blog and user info pair by blogId and userId. (blogUserInfos.get) + * + * @param string $userId + * ID of the user whose blogs are to be fetched. Either the word 'self' (sans quote marks) or the + * user's profile identifier. + * @param string $blogId + * The ID of the blog to get. + * @param array $optParams Optional parameters. + * + * @opt_param string maxPosts + * Maximum number of posts to pull back with the blog. + * @return Google_Service_Blogger_BlogUserInfo + */ + public function get($userId, $blogId, $optParams = array()) + { + $params = array('userId' => $userId, 'blogId' => $blogId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Blogger_BlogUserInfo"); + } +} + +/** + * The "blogs" collection of methods. + * Typical usage is: + * + * $bloggerService = new Google_Service_Blogger(...); + * $blogs = $bloggerService->blogs; + * + */ +class Google_Service_Blogger_Blogs_Resource extends Google_Service_Resource +{ + + /** + * Gets one blog by ID. (blogs.get) + * + * @param string $blogId + * The ID of the blog to get. + * @param array $optParams Optional parameters. + * + * @opt_param string maxPosts + * Maximum number of posts to pull back with the blog. + * @opt_param string view + * Access level with which to view the blog. Note that some fields require elevated access. + * @return Google_Service_Blogger_Blog + */ + public function get($blogId, $optParams = array()) + { + $params = array('blogId' => $blogId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Blogger_Blog"); + } + /** + * Retrieve a Blog by URL. (blogs.getByUrl) + * + * @param string $url + * The URL of the blog to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param string view + * Access level with which to view the blog. Note that some fields require elevated access. + * @return Google_Service_Blogger_Blog + */ + public function getByUrl($url, $optParams = array()) + { + $params = array('url' => $url); + $params = array_merge($params, $optParams); + return $this->call('getByUrl', array($params), "Google_Service_Blogger_Blog"); + } + /** + * Retrieves a list of blogs, possibly filtered. (blogs.listByUser) + * + * @param string $userId + * ID of the user whose blogs are to be fetched. Either the word 'self' (sans quote marks) or the + * user's profile identifier. + * @param array $optParams Optional parameters. + * + * @opt_param bool fetchUserInfo + * Whether the response is a list of blogs with per-user information instead of just blogs. + * @opt_param string status + * Blog statuses to include in the result (default: Live blogs only). Note that ADMIN access is + * required to view deleted blogs. + * @opt_param string role + * User access types for blogs to include in the results, e.g. AUTHOR will return blogs where the + * user has author level access. If no roles are specified, defaults to ADMIN and AUTHOR roles. + * @opt_param string view + * Access level with which to view the blogs. Note that some fields require elevated access. + * @return Google_Service_Blogger_BlogList + */ + public function listByUser($userId, $optParams = array()) + { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('listByUser', array($params), "Google_Service_Blogger_BlogList"); + } +} + +/** + * The "comments" collection of methods. + * Typical usage is: + * + * $bloggerService = new Google_Service_Blogger(...); + * $comments = $bloggerService->comments; + * + */ +class Google_Service_Blogger_Comments_Resource extends Google_Service_Resource +{ + + /** + * Marks a comment as not spam. (comments.approve) + * + * @param string $blogId + * The ID of the Blog. + * @param string $postId + * The ID of the Post. + * @param string $commentId + * The ID of the comment to mark as not spam. + * @param array $optParams Optional parameters. + * @return Google_Service_Blogger_Comment + */ + public function approve($blogId, $postId, $commentId, $optParams = array()) + { + $params = array('blogId' => $blogId, 'postId' => $postId, 'commentId' => $commentId); + $params = array_merge($params, $optParams); + return $this->call('approve', array($params), "Google_Service_Blogger_Comment"); + } + /** + * Delete a comment by ID. (comments.delete) + * + * @param string $blogId + * The ID of the Blog. + * @param string $postId + * The ID of the Post. + * @param string $commentId + * The ID of the comment to delete. + * @param array $optParams Optional parameters. + */ + public function delete($blogId, $postId, $commentId, $optParams = array()) + { + $params = array('blogId' => $blogId, 'postId' => $postId, 'commentId' => $commentId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets one comment by ID. (comments.get) + * + * @param string $blogId + * ID of the blog to containing the comment. + * @param string $postId + * ID of the post to fetch posts from. + * @param string $commentId + * The ID of the comment to get. + * @param array $optParams Optional parameters. + * + * @opt_param string view + * Access level for the requested comment (default: READER). Note that some comments will require + * elevated permissions, for example comments where the parent posts which is in a draft state, or + * comments that are pending moderation. + * @return Google_Service_Blogger_Comment + */ + public function get($blogId, $postId, $commentId, $optParams = array()) + { + $params = array('blogId' => $blogId, 'postId' => $postId, 'commentId' => $commentId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Blogger_Comment"); + } + /** + * Retrieves the comments for a post, possibly filtered. (comments.listComments) + * + * @param string $blogId + * ID of the blog to fetch comments from. + * @param string $postId + * ID of the post to fetch posts from. + * @param array $optParams Optional parameters. + * + * @opt_param string status + * + * @opt_param string startDate + * Earliest date of comment to fetch, a date-time with RFC 3339 formatting. + * @opt_param string endDate + * Latest date of comment to fetch, a date-time with RFC 3339 formatting. + * @opt_param string maxResults + * Maximum number of comments to include in the result. + * @opt_param string pageToken + * Continuation token if request is paged. + * @opt_param bool fetchBodies + * Whether the body content of the comments is included. + * @opt_param string view + * Access level with which to view the returned result. Note that some fields require elevated + * access. + * @return Google_Service_Blogger_CommentList + */ + public function listComments($blogId, $postId, $optParams = array()) + { + $params = array('blogId' => $blogId, 'postId' => $postId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Blogger_CommentList"); + } + /** + * Retrieves the comments for a blog, across all posts, possibly filtered. + * (comments.listByBlog) + * + * @param string $blogId + * ID of the blog to fetch comments from. + * @param array $optParams Optional parameters. + * + * @opt_param string startDate + * Earliest date of comment to fetch, a date-time with RFC 3339 formatting. + * @opt_param string endDate + * Latest date of comment to fetch, a date-time with RFC 3339 formatting. + * @opt_param string maxResults + * Maximum number of comments to include in the result. + * @opt_param string pageToken + * Continuation token if request is paged. + * @opt_param bool fetchBodies + * Whether the body content of the comments is included. + * @return Google_Service_Blogger_CommentList + */ + public function listByBlog($blogId, $optParams = array()) + { + $params = array('blogId' => $blogId); + $params = array_merge($params, $optParams); + return $this->call('listByBlog', array($params), "Google_Service_Blogger_CommentList"); + } + /** + * Marks a comment as spam. (comments.markAsSpam) + * + * @param string $blogId + * The ID of the Blog. + * @param string $postId + * The ID of the Post. + * @param string $commentId + * The ID of the comment to mark as spam. + * @param array $optParams Optional parameters. + * @return Google_Service_Blogger_Comment + */ + public function markAsSpam($blogId, $postId, $commentId, $optParams = array()) + { + $params = array('blogId' => $blogId, 'postId' => $postId, 'commentId' => $commentId); + $params = array_merge($params, $optParams); + return $this->call('markAsSpam', array($params), "Google_Service_Blogger_Comment"); + } + /** + * Removes the content of a comment. (comments.removeContent) + * + * @param string $blogId + * The ID of the Blog. + * @param string $postId + * The ID of the Post. + * @param string $commentId + * The ID of the comment to delete content from. + * @param array $optParams Optional parameters. + * @return Google_Service_Blogger_Comment + */ + public function removeContent($blogId, $postId, $commentId, $optParams = array()) + { + $params = array('blogId' => $blogId, 'postId' => $postId, 'commentId' => $commentId); + $params = array_merge($params, $optParams); + return $this->call('removeContent', array($params), "Google_Service_Blogger_Comment"); + } +} + +/** + * The "pageViews" collection of methods. + * Typical usage is: + * + * $bloggerService = new Google_Service_Blogger(...); + * $pageViews = $bloggerService->pageViews; + * + */ +class Google_Service_Blogger_PageViews_Resource extends Google_Service_Resource +{ + + /** + * Retrieve pageview stats for a Blog. (pageViews.get) + * + * @param string $blogId + * The ID of the blog to get. + * @param array $optParams Optional parameters. + * + * @opt_param string range + * + * @return Google_Service_Blogger_Pageviews + */ + public function get($blogId, $optParams = array()) + { + $params = array('blogId' => $blogId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Blogger_Pageviews"); + } +} + +/** + * The "pages" collection of methods. + * Typical usage is: + * + * $bloggerService = new Google_Service_Blogger(...); + * $pages = $bloggerService->pages; + * + */ +class Google_Service_Blogger_Pages_Resource extends Google_Service_Resource +{ + + /** + * Delete a page by ID. (pages.delete) + * + * @param string $blogId + * The ID of the Blog. + * @param string $pageId + * The ID of the Page. + * @param array $optParams Optional parameters. + */ + public function delete($blogId, $pageId, $optParams = array()) + { + $params = array('blogId' => $blogId, 'pageId' => $pageId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets one blog page by ID. (pages.get) + * + * @param string $blogId + * ID of the blog containing the page. + * @param string $pageId + * The ID of the page to get. + * @param array $optParams Optional parameters. + * + * @opt_param string view + * + * @return Google_Service_Blogger_Page + */ + public function get($blogId, $pageId, $optParams = array()) + { + $params = array('blogId' => $blogId, 'pageId' => $pageId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Blogger_Page"); + } + /** + * Add a page. (pages.insert) + * + * @param string $blogId + * ID of the blog to add the page to. + * @param Google_Page $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool isDraft + * Whether to create the page as a draft (default: false). + * @return Google_Service_Blogger_Page + */ + public function insert($blogId, Google_Service_Blogger_Page $postBody, $optParams = array()) + { + $params = array('blogId' => $blogId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Blogger_Page"); + } + /** + * Retrieves the pages for a blog, optionally including non-LIVE statuses. + * (pages.listPages) + * + * @param string $blogId + * ID of the blog to fetch pages from. + * @param array $optParams Optional parameters. + * + * @opt_param string status + * + * @opt_param bool fetchBodies + * Whether to retrieve the Page bodies. + * @opt_param string view + * Access level with which to view the returned result. Note that some fields require elevated + * access. + * @return Google_Service_Blogger_PageList + */ + public function listPages($blogId, $optParams = array()) + { + $params = array('blogId' => $blogId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Blogger_PageList"); + } + /** + * Update a page. This method supports patch semantics. (pages.patch) + * + * @param string $blogId + * The ID of the Blog. + * @param string $pageId + * The ID of the Page. + * @param Google_Page $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool revert + * Whether a revert action should be performed when the page is updated (default: false). + * @opt_param bool publish + * Whether a publish action should be performed when the page is updated (default: false). + * @return Google_Service_Blogger_Page + */ + public function patch($blogId, $pageId, Google_Service_Blogger_Page $postBody, $optParams = array()) + { + $params = array('blogId' => $blogId, 'pageId' => $pageId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Blogger_Page"); + } + /** + * Publishes a draft page. (pages.publish) + * + * @param string $blogId + * The ID of the blog. + * @param string $pageId + * The ID of the page. + * @param array $optParams Optional parameters. + * @return Google_Service_Blogger_Page + */ + public function publish($blogId, $pageId, $optParams = array()) + { + $params = array('blogId' => $blogId, 'pageId' => $pageId); + $params = array_merge($params, $optParams); + return $this->call('publish', array($params), "Google_Service_Blogger_Page"); + } + /** + * Revert a published or scheduled page to draft state. (pages.revert) + * + * @param string $blogId + * The ID of the blog. + * @param string $pageId + * The ID of the page. + * @param array $optParams Optional parameters. + * @return Google_Service_Blogger_Page + */ + public function revert($blogId, $pageId, $optParams = array()) + { + $params = array('blogId' => $blogId, 'pageId' => $pageId); + $params = array_merge($params, $optParams); + return $this->call('revert', array($params), "Google_Service_Blogger_Page"); + } + /** + * Update a page. (pages.update) + * + * @param string $blogId + * The ID of the Blog. + * @param string $pageId + * The ID of the Page. + * @param Google_Page $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool revert + * Whether a revert action should be performed when the page is updated (default: false). + * @opt_param bool publish + * Whether a publish action should be performed when the page is updated (default: false). + * @return Google_Service_Blogger_Page + */ + public function update($blogId, $pageId, Google_Service_Blogger_Page $postBody, $optParams = array()) + { + $params = array('blogId' => $blogId, 'pageId' => $pageId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Blogger_Page"); + } +} + +/** + * The "postUserInfos" collection of methods. + * Typical usage is: + * + * $bloggerService = new Google_Service_Blogger(...); + * $postUserInfos = $bloggerService->postUserInfos; + * + */ +class Google_Service_Blogger_PostUserInfos_Resource extends Google_Service_Resource +{ + + /** + * Gets one post and user info pair, by post ID and user ID. The post user info + * contains per-user information about the post, such as access rights, specific + * to the user. (postUserInfos.get) + * + * @param string $userId + * ID of the user for the per-user information to be fetched. Either the word 'self' (sans quote + * marks) or the user's profile identifier. + * @param string $blogId + * The ID of the blog. + * @param string $postId + * The ID of the post to get. + * @param array $optParams Optional parameters. + * + * @opt_param string maxComments + * Maximum number of comments to pull back on a post. + * @return Google_Service_Blogger_PostUserInfo + */ + public function get($userId, $blogId, $postId, $optParams = array()) + { + $params = array('userId' => $userId, 'blogId' => $blogId, 'postId' => $postId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Blogger_PostUserInfo"); + } + /** + * Retrieves a list of post and post user info pairs, possibly filtered. The + * post user info contains per-user information about the post, such as access + * rights, specific to the user. (postUserInfos.listPostUserInfos) + * + * @param string $userId + * ID of the user for the per-user information to be fetched. Either the word 'self' (sans quote + * marks) or the user's profile identifier. + * @param string $blogId + * ID of the blog to fetch posts from. + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy + * Sort order applied to search results. Default is published. + * @opt_param string startDate + * Earliest post date to fetch, a date-time with RFC 3339 formatting. + * @opt_param string endDate + * Latest post date to fetch, a date-time with RFC 3339 formatting. + * @opt_param string labels + * Comma-separated list of labels to search for. + * @opt_param string maxResults + * Maximum number of posts to fetch. + * @opt_param string pageToken + * Continuation token if the request is paged. + * @opt_param string status + * + * @opt_param bool fetchBodies + * Whether the body content of posts is included. Default is false. + * @opt_param string view + * Access level with which to view the returned result. Note that some fields require elevated + * access. + * @return Google_Service_Blogger_PostUserInfosList + */ + public function listPostUserInfos($userId, $blogId, $optParams = array()) + { + $params = array('userId' => $userId, 'blogId' => $blogId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Blogger_PostUserInfosList"); + } +} + +/** + * The "posts" collection of methods. + * Typical usage is: + * + * $bloggerService = new Google_Service_Blogger(...); + * $posts = $bloggerService->posts; + * + */ +class Google_Service_Blogger_Posts_Resource extends Google_Service_Resource +{ + + /** + * Delete a post by ID. (posts.delete) + * + * @param string $blogId + * The ID of the Blog. + * @param string $postId + * The ID of the Post. + * @param array $optParams Optional parameters. + */ + public function delete($blogId, $postId, $optParams = array()) + { + $params = array('blogId' => $blogId, 'postId' => $postId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Get a post by ID. (posts.get) + * + * @param string $blogId + * ID of the blog to fetch the post from. + * @param string $postId + * The ID of the post + * @param array $optParams Optional parameters. + * + * @opt_param bool fetchBody + * Whether the body content of the post is included (default: true). This should be set to false + * when the post bodies are not required, to help minimize traffic. + * @opt_param string maxComments + * Maximum number of comments to pull back on a post. + * @opt_param bool fetchImages + * Whether image URL metadata for each post is included (default: false). + * @opt_param string view + * Access level with which to view the returned result. Note that some fields require elevated + * access. + * @return Google_Service_Blogger_Post + */ + public function get($blogId, $postId, $optParams = array()) + { + $params = array('blogId' => $blogId, 'postId' => $postId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Blogger_Post"); + } + /** + * Retrieve a Post by Path. (posts.getByPath) + * + * @param string $blogId + * ID of the blog to fetch the post from. + * @param string $path + * Path of the Post to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param string maxComments + * Maximum number of comments to pull back on a post. + * @opt_param string view + * Access level with which to view the returned result. Note that some fields require elevated + * access. + * @return Google_Service_Blogger_Post + */ + public function getByPath($blogId, $path, $optParams = array()) + { + $params = array('blogId' => $blogId, 'path' => $path); + $params = array_merge($params, $optParams); + return $this->call('getByPath', array($params), "Google_Service_Blogger_Post"); + } + /** + * Add a post. (posts.insert) + * + * @param string $blogId + * ID of the blog to add the post to. + * @param Google_Post $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool fetchImages + * Whether image URL metadata for each post is included in the returned result (default: false). + * @opt_param bool isDraft + * Whether to create the post as a draft (default: false). + * @opt_param bool fetchBody + * Whether the body content of the post is included with the result (default: true). + * @return Google_Service_Blogger_Post + */ + public function insert($blogId, Google_Service_Blogger_Post $postBody, $optParams = array()) + { + $params = array('blogId' => $blogId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Blogger_Post"); + } + /** + * Retrieves a list of posts, possibly filtered. (posts.listPosts) + * + * @param string $blogId + * ID of the blog to fetch posts from. + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy + * Sort search results + * @opt_param string startDate + * Earliest post date to fetch, a date-time with RFC 3339 formatting. + * @opt_param string endDate + * Latest post date to fetch, a date-time with RFC 3339 formatting. + * @opt_param string labels + * Comma-separated list of labels to search for. + * @opt_param string maxResults + * Maximum number of posts to fetch. + * @opt_param bool fetchImages + * Whether image URL metadata for each post is included. + * @opt_param string pageToken + * Continuation token if the request is paged. + * @opt_param string status + * Statuses to include in the results. + * @opt_param bool fetchBodies + * Whether the body content of posts is included (default: true). This should be set to false when + * the post bodies are not required, to help minimize traffic. + * @opt_param string view + * Access level with which to view the returned result. Note that some fields require escalated + * access. + * @return Google_Service_Blogger_PostList + */ + public function listPosts($blogId, $optParams = array()) + { + $params = array('blogId' => $blogId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Blogger_PostList"); + } + /** + * Update a post. This method supports patch semantics. (posts.patch) + * + * @param string $blogId + * The ID of the Blog. + * @param string $postId + * The ID of the Post. + * @param Google_Post $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool revert + * Whether a revert action should be performed when the post is updated (default: false). + * @opt_param bool publish + * Whether a publish action should be performed when the post is updated (default: false). + * @opt_param bool fetchBody + * Whether the body content of the post is included with the result (default: true). + * @opt_param string maxComments + * Maximum number of comments to retrieve with the returned post. + * @opt_param bool fetchImages + * Whether image URL metadata for each post is included in the returned result (default: false). + * @return Google_Service_Blogger_Post + */ + public function patch($blogId, $postId, Google_Service_Blogger_Post $postBody, $optParams = array()) + { + $params = array('blogId' => $blogId, 'postId' => $postId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Blogger_Post"); + } + /** + * Publishes a draft post, optionally at the specific time of the given + * publishDate parameter. (posts.publish) + * + * @param string $blogId + * The ID of the Blog. + * @param string $postId + * The ID of the Post. + * @param array $optParams Optional parameters. + * + * @opt_param string publishDate + * Optional date and time to schedule the publishing of the Blog. If no publishDate parameter is + * given, the post is either published at the a previously saved schedule date (if present), or the + * current time. If a future date is given, the post will be scheduled to be published. + * @return Google_Service_Blogger_Post + */ + public function publish($blogId, $postId, $optParams = array()) + { + $params = array('blogId' => $blogId, 'postId' => $postId); + $params = array_merge($params, $optParams); + return $this->call('publish', array($params), "Google_Service_Blogger_Post"); + } + /** + * Revert a published or scheduled post to draft state. (posts.revert) + * + * @param string $blogId + * The ID of the Blog. + * @param string $postId + * The ID of the Post. + * @param array $optParams Optional parameters. + * @return Google_Service_Blogger_Post + */ + public function revert($blogId, $postId, $optParams = array()) + { + $params = array('blogId' => $blogId, 'postId' => $postId); + $params = array_merge($params, $optParams); + return $this->call('revert', array($params), "Google_Service_Blogger_Post"); + } + /** + * Search for a post. (posts.search) + * + * @param string $blogId + * ID of the blog to fetch the post from. + * @param string $q + * Query terms to search this blog for matching posts. + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy + * Sort search results + * @opt_param bool fetchBodies + * Whether the body content of posts is included (default: true). This should be set to false when + * the post bodies are not required, to help minimize traffic. + * @return Google_Service_Blogger_PostList + */ + public function search($blogId, $q, $optParams = array()) + { + $params = array('blogId' => $blogId, 'q' => $q); + $params = array_merge($params, $optParams); + return $this->call('search', array($params), "Google_Service_Blogger_PostList"); + } + /** + * Update a post. (posts.update) + * + * @param string $blogId + * The ID of the Blog. + * @param string $postId + * The ID of the Post. + * @param Google_Post $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool revert + * Whether a revert action should be performed when the post is updated (default: false). + * @opt_param bool publish + * Whether a publish action should be performed when the post is updated (default: false). + * @opt_param bool fetchBody + * Whether the body content of the post is included with the result (default: true). + * @opt_param string maxComments + * Maximum number of comments to retrieve with the returned post. + * @opt_param bool fetchImages + * Whether image URL metadata for each post is included in the returned result (default: false). + * @return Google_Service_Blogger_Post + */ + public function update($blogId, $postId, Google_Service_Blogger_Post $postBody, $optParams = array()) + { + $params = array('blogId' => $blogId, 'postId' => $postId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Blogger_Post"); + } +} + +/** + * The "users" collection of methods. + * Typical usage is: + * + * $bloggerService = new Google_Service_Blogger(...); + * $users = $bloggerService->users; + * + */ +class Google_Service_Blogger_Users_Resource extends Google_Service_Resource +{ + + /** + * Gets one user by ID. (users.get) + * + * @param string $userId + * The ID of the user to get. + * @param array $optParams Optional parameters. + * @return Google_Service_Blogger_User + */ + public function get($userId, $optParams = array()) + { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Blogger_User"); + } +} + + + + +class Google_Service_Blogger_Blog extends Google_Model +{ + public $customMetaData; + public $description; + public $id; + public $kind; + protected $localeType = 'Google_Service_Blogger_BlogLocale'; + protected $localeDataType = ''; + public $name; + protected $pagesType = 'Google_Service_Blogger_BlogPages'; + protected $pagesDataType = ''; + protected $postsType = 'Google_Service_Blogger_BlogPosts'; + protected $postsDataType = ''; + public $published; + public $selfLink; + public $status; + public $updated; + public $url; + + public function setCustomMetaData($customMetaData) + { + $this->customMetaData = $customMetaData; + } + + public function getCustomMetaData() + { + return $this->customMetaData; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLocale(Google_Service_Blogger_BlogLocale $locale) + { + $this->locale = $locale; + } + + public function getLocale() + { + return $this->locale; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPages(Google_Service_Blogger_BlogPages $pages) + { + $this->pages = $pages; + } + + public function getPages() + { + return $this->pages; + } + + public function setPosts(Google_Service_Blogger_BlogPosts $posts) + { + $this->posts = $posts; + } + + public function getPosts() + { + return $this->posts; + } + + public function setPublished($published) + { + $this->published = $published; + } + + public function getPublished() + { + return $this->published; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Blogger_BlogList extends Google_Collection +{ + protected $blogUserInfosType = 'Google_Service_Blogger_BlogUserInfo'; + protected $blogUserInfosDataType = 'array'; + protected $itemsType = 'Google_Service_Blogger_Blog'; + protected $itemsDataType = 'array'; + public $kind; + + public function setBlogUserInfos($blogUserInfos) + { + $this->blogUserInfos = $blogUserInfos; + } + + public function getBlogUserInfos() + { + return $this->blogUserInfos; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Blogger_BlogLocale extends Google_Model +{ + public $country; + public $language; + public $variant; + + public function setCountry($country) + { + $this->country = $country; + } + + public function getCountry() + { + return $this->country; + } + + public function setLanguage($language) + { + $this->language = $language; + } + + public function getLanguage() + { + return $this->language; + } + + public function setVariant($variant) + { + $this->variant = $variant; + } + + public function getVariant() + { + return $this->variant; + } +} + +class Google_Service_Blogger_BlogPages extends Google_Model +{ + public $selfLink; + public $totalItems; + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_Blogger_BlogPerUserInfo extends Google_Model +{ + public $blogId; + public $hasAdminAccess; + public $kind; + public $photosAlbumKey; + public $role; + public $userId; + + public function setBlogId($blogId) + { + $this->blogId = $blogId; + } + + public function getBlogId() + { + return $this->blogId; + } + + public function setHasAdminAccess($hasAdminAccess) + { + $this->hasAdminAccess = $hasAdminAccess; + } + + public function getHasAdminAccess() + { + return $this->hasAdminAccess; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPhotosAlbumKey($photosAlbumKey) + { + $this->photosAlbumKey = $photosAlbumKey; + } + + public function getPhotosAlbumKey() + { + return $this->photosAlbumKey; + } + + public function setRole($role) + { + $this->role = $role; + } + + public function getRole() + { + return $this->role; + } + + public function setUserId($userId) + { + $this->userId = $userId; + } + + public function getUserId() + { + return $this->userId; + } +} + +class Google_Service_Blogger_BlogPosts extends Google_Collection +{ + protected $itemsType = 'Google_Service_Blogger_Post'; + protected $itemsDataType = 'array'; + public $selfLink; + public $totalItems; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_Blogger_BlogUserInfo extends Google_Model +{ + protected $blogType = 'Google_Service_Blogger_Blog'; + protected $blogDataType = ''; + protected $blogUserInfoType = 'Google_Service_Blogger_BlogPerUserInfo'; + protected $blogUserInfoDataType = ''; + public $kind; + + public function setBlog(Google_Service_Blogger_Blog $blog) + { + $this->blog = $blog; + } + + public function getBlog() + { + return $this->blog; + } + + public function setBlogUserInfo(Google_Service_Blogger_BlogPerUserInfo $blogUserInfo) + { + $this->blogUserInfo = $blogUserInfo; + } + + public function getBlogUserInfo() + { + return $this->blogUserInfo; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Blogger_Comment extends Google_Model +{ + protected $authorType = 'Google_Service_Blogger_CommentAuthor'; + protected $authorDataType = ''; + protected $blogType = 'Google_Service_Blogger_CommentBlog'; + protected $blogDataType = ''; + public $content; + public $id; + protected $inReplyToType = 'Google_Service_Blogger_CommentInReplyTo'; + protected $inReplyToDataType = ''; + public $kind; + protected $postType = 'Google_Service_Blogger_CommentPost'; + protected $postDataType = ''; + public $published; + public $selfLink; + public $status; + public $updated; + + public function setAuthor(Google_Service_Blogger_CommentAuthor $author) + { + $this->author = $author; + } + + public function getAuthor() + { + return $this->author; + } + + public function setBlog(Google_Service_Blogger_CommentBlog $blog) + { + $this->blog = $blog; + } + + public function getBlog() + { + return $this->blog; + } + + public function setContent($content) + { + $this->content = $content; + } + + public function getContent() + { + return $this->content; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInReplyTo(Google_Service_Blogger_CommentInReplyTo $inReplyTo) + { + $this->inReplyTo = $inReplyTo; + } + + public function getInReplyTo() + { + return $this->inReplyTo; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPost(Google_Service_Blogger_CommentPost $post) + { + $this->post = $post; + } + + public function getPost() + { + return $this->post; + } + + public function setPublished($published) + { + $this->published = $published; + } + + public function getPublished() + { + return $this->published; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } +} + +class Google_Service_Blogger_CommentAuthor extends Google_Model +{ + public $displayName; + public $id; + protected $imageType = 'Google_Service_Blogger_CommentAuthorImage'; + protected $imageDataType = ''; + public $url; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImage(Google_Service_Blogger_CommentAuthorImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Blogger_CommentAuthorImage extends Google_Model +{ + public $url; + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Blogger_CommentBlog extends Google_Model +{ + public $id; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } +} + +class Google_Service_Blogger_CommentInReplyTo extends Google_Model +{ + public $id; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } +} + +class Google_Service_Blogger_CommentList extends Google_Collection +{ + protected $itemsType = 'Google_Service_Blogger_Comment'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $prevPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPrevPageToken($prevPageToken) + { + $this->prevPageToken = $prevPageToken; + } + + public function getPrevPageToken() + { + return $this->prevPageToken; + } +} + +class Google_Service_Blogger_CommentPost extends Google_Model +{ + public $id; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } +} + +class Google_Service_Blogger_Page extends Google_Model +{ + protected $authorType = 'Google_Service_Blogger_PageAuthor'; + protected $authorDataType = ''; + protected $blogType = 'Google_Service_Blogger_PageBlog'; + protected $blogDataType = ''; + public $content; + public $etag; + public $id; + public $kind; + public $published; + public $selfLink; + public $status; + public $title; + public $updated; + public $url; + + public function setAuthor(Google_Service_Blogger_PageAuthor $author) + { + $this->author = $author; + } + + public function getAuthor() + { + return $this->author; + } + + public function setBlog(Google_Service_Blogger_PageBlog $blog) + { + $this->blog = $blog; + } + + public function getBlog() + { + return $this->blog; + } + + public function setContent($content) + { + $this->content = $content; + } + + public function getContent() + { + return $this->content; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPublished($published) + { + $this->published = $published; + } + + public function getPublished() + { + return $this->published; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Blogger_PageAuthor extends Google_Model +{ + public $displayName; + public $id; + protected $imageType = 'Google_Service_Blogger_PageAuthorImage'; + protected $imageDataType = ''; + public $url; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImage(Google_Service_Blogger_PageAuthorImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Blogger_PageAuthorImage extends Google_Model +{ + public $url; + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Blogger_PageBlog extends Google_Model +{ + public $id; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } +} + +class Google_Service_Blogger_PageList extends Google_Collection +{ + protected $itemsType = 'Google_Service_Blogger_Page'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Blogger_Pageviews extends Google_Collection +{ + public $blogId; + protected $countsType = 'Google_Service_Blogger_PageviewsCounts'; + protected $countsDataType = 'array'; + public $kind; + + public function setBlogId($blogId) + { + $this->blogId = $blogId; + } + + public function getBlogId() + { + return $this->blogId; + } + + public function setCounts($counts) + { + $this->counts = $counts; + } + + public function getCounts() + { + return $this->counts; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Blogger_PageviewsCounts extends Google_Model +{ + public $count; + public $timeRange; + + public function setCount($count) + { + $this->count = $count; + } + + public function getCount() + { + return $this->count; + } + + public function setTimeRange($timeRange) + { + $this->timeRange = $timeRange; + } + + public function getTimeRange() + { + return $this->timeRange; + } +} + +class Google_Service_Blogger_Post extends Google_Collection +{ + protected $authorType = 'Google_Service_Blogger_PostAuthor'; + protected $authorDataType = ''; + protected $blogType = 'Google_Service_Blogger_PostBlog'; + protected $blogDataType = ''; + public $content; + public $customMetaData; + public $etag; + public $id; + protected $imagesType = 'Google_Service_Blogger_PostImages'; + protected $imagesDataType = 'array'; + public $kind; + public $labels; + protected $locationType = 'Google_Service_Blogger_PostLocation'; + protected $locationDataType = ''; + public $published; + public $readerComments; + protected $repliesType = 'Google_Service_Blogger_PostReplies'; + protected $repliesDataType = ''; + public $selfLink; + public $status; + public $title; + public $titleLink; + public $updated; + public $url; + + public function setAuthor(Google_Service_Blogger_PostAuthor $author) + { + $this->author = $author; + } + + public function getAuthor() + { + return $this->author; + } + + public function setBlog(Google_Service_Blogger_PostBlog $blog) + { + $this->blog = $blog; + } + + public function getBlog() + { + return $this->blog; + } + + public function setContent($content) + { + $this->content = $content; + } + + public function getContent() + { + return $this->content; + } + + public function setCustomMetaData($customMetaData) + { + $this->customMetaData = $customMetaData; + } + + public function getCustomMetaData() + { + return $this->customMetaData; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImages($images) + { + $this->images = $images; + } + + public function getImages() + { + return $this->images; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLabels($labels) + { + $this->labels = $labels; + } + + public function getLabels() + { + return $this->labels; + } + + public function setLocation(Google_Service_Blogger_PostLocation $location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setPublished($published) + { + $this->published = $published; + } + + public function getPublished() + { + return $this->published; + } + + public function setReaderComments($readerComments) + { + $this->readerComments = $readerComments; + } + + public function getReaderComments() + { + return $this->readerComments; + } + + public function setReplies(Google_Service_Blogger_PostReplies $replies) + { + $this->replies = $replies; + } + + public function getReplies() + { + return $this->replies; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setTitleLink($titleLink) + { + $this->titleLink = $titleLink; + } + + public function getTitleLink() + { + return $this->titleLink; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Blogger_PostAuthor extends Google_Model +{ + public $displayName; + public $id; + protected $imageType = 'Google_Service_Blogger_PostAuthorImage'; + protected $imageDataType = ''; + public $url; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImage(Google_Service_Blogger_PostAuthorImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Blogger_PostAuthorImage extends Google_Model +{ + public $url; + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Blogger_PostBlog extends Google_Model +{ + public $id; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } +} + +class Google_Service_Blogger_PostImages extends Google_Model +{ + public $url; + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Blogger_PostList extends Google_Collection +{ + protected $itemsType = 'Google_Service_Blogger_Post'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Blogger_PostLocation extends Google_Model +{ + public $lat; + public $lng; + public $name; + public $span; + + public function setLat($lat) + { + $this->lat = $lat; + } + + public function getLat() + { + return $this->lat; + } + + public function setLng($lng) + { + $this->lng = $lng; + } + + public function getLng() + { + return $this->lng; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setSpan($span) + { + $this->span = $span; + } + + public function getSpan() + { + return $this->span; + } +} + +class Google_Service_Blogger_PostPerUserInfo extends Google_Model +{ + public $blogId; + public $hasEditAccess; + public $kind; + public $postId; + public $userId; + + public function setBlogId($blogId) + { + $this->blogId = $blogId; + } + + public function getBlogId() + { + return $this->blogId; + } + + public function setHasEditAccess($hasEditAccess) + { + $this->hasEditAccess = $hasEditAccess; + } + + public function getHasEditAccess() + { + return $this->hasEditAccess; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPostId($postId) + { + $this->postId = $postId; + } + + public function getPostId() + { + return $this->postId; + } + + public function setUserId($userId) + { + $this->userId = $userId; + } + + public function getUserId() + { + return $this->userId; + } +} + +class Google_Service_Blogger_PostReplies extends Google_Collection +{ + protected $itemsType = 'Google_Service_Blogger_Comment'; + protected $itemsDataType = 'array'; + public $selfLink; + public $totalItems; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_Blogger_PostUserInfo extends Google_Model +{ + public $kind; + protected $postType = 'Google_Service_Blogger_Post'; + protected $postDataType = ''; + protected $postUserInfoType = 'Google_Service_Blogger_PostPerUserInfo'; + protected $postUserInfoDataType = ''; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPost(Google_Service_Blogger_Post $post) + { + $this->post = $post; + } + + public function getPost() + { + return $this->post; + } + + public function setPostUserInfo(Google_Service_Blogger_PostPerUserInfo $postUserInfo) + { + $this->postUserInfo = $postUserInfo; + } + + public function getPostUserInfo() + { + return $this->postUserInfo; + } +} + +class Google_Service_Blogger_PostUserInfosList extends Google_Collection +{ + protected $itemsType = 'Google_Service_Blogger_PostUserInfo'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Blogger_User extends Google_Model +{ + public $about; + protected $blogsType = 'Google_Service_Blogger_UserBlogs'; + protected $blogsDataType = ''; + public $created; + public $displayName; + public $id; + public $kind; + protected $localeType = 'Google_Service_Blogger_UserLocale'; + protected $localeDataType = ''; + public $selfLink; + public $url; + + public function setAbout($about) + { + $this->about = $about; + } + + public function getAbout() + { + return $this->about; + } + + public function setBlogs(Google_Service_Blogger_UserBlogs $blogs) + { + $this->blogs = $blogs; + } + + public function getBlogs() + { + return $this->blogs; + } + + public function setCreated($created) + { + $this->created = $created; + } + + public function getCreated() + { + return $this->created; + } + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLocale(Google_Service_Blogger_UserLocale $locale) + { + $this->locale = $locale; + } + + public function getLocale() + { + return $this->locale; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Blogger_UserBlogs extends Google_Model +{ + public $selfLink; + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Blogger_UserLocale extends Google_Model +{ + public $country; + public $language; + public $variant; + + public function setCountry($country) + { + $this->country = $country; + } + + public function getCountry() + { + return $this->country; + } + + public function setLanguage($language) + { + $this->language = $language; + } + + public function getLanguage() + { + return $this->language; + } + + public function setVariant($variant) + { + $this->variant = $variant; + } + + public function getVariant() + { + return $this->variant; + } +} diff --git a/oauth/Google/Service/Books.php b/oauth/Google/Service/Books.php new file mode 100644 index 0000000..5321663 --- /dev/null +++ b/oauth/Google/Service/Books.php @@ -0,0 +1,6762 @@ + + * Lets you search for books and manage your Google Books library. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Books extends Google_Service +{ + /** Manage your books. */ + const BOOKS = "https://www.googleapis.com/auth/books"; + + public $bookshelves; + public $bookshelves_volumes; + public $cloudloading; + public $layers; + public $layers_annotationData; + public $layers_volumeAnnotations; + public $myconfig; + public $mylibrary_annotations; + public $mylibrary_bookshelves; + public $mylibrary_bookshelves_volumes; + public $mylibrary_readingpositions; + public $promooffer; + public $volumes; + public $volumes_associated; + public $volumes_mybooks; + public $volumes_recommended; + public $volumes_useruploaded; + + + /** + * Constructs the internal representation of the Books service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'books/v1/'; + $this->version = 'v1'; + $this->serviceName = 'books'; + + $this->bookshelves = new Google_Service_Books_Bookshelves_Resource( + $this, + $this->serviceName, + 'bookshelves', + array( + 'methods' => array( + 'get' => array( + 'path' => 'users/{userId}/bookshelves/{shelf}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'shelf' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'users/{userId}/bookshelves', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->bookshelves_volumes = new Google_Service_Books_BookshelvesVolumes_Resource( + $this, + $this->serviceName, + 'volumes', + array( + 'methods' => array( + 'list' => array( + 'path' => 'users/{userId}/bookshelves/{shelf}/volumes', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'shelf' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'showPreorders' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startIndex' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->cloudloading = new Google_Service_Books_Cloudloading_Resource( + $this, + $this->serviceName, + 'cloudloading', + array( + 'methods' => array( + 'addBook' => array( + 'path' => 'cloudloading/addBook', + 'httpMethod' => 'POST', + 'parameters' => array( + 'upload_client_token' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'drive_document_id' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'mime_type' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'name' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'deleteBook' => array( + 'path' => 'cloudloading/deleteBook', + 'httpMethod' => 'POST', + 'parameters' => array( + 'volumeId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ),'updateBook' => array( + 'path' => 'cloudloading/updateBook', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->layers = new Google_Service_Books_Layers_Resource( + $this, + $this->serviceName, + 'layers', + array( + 'methods' => array( + 'get' => array( + 'path' => 'volumes/{volumeId}/layersummary/{summaryId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'volumeId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'summaryId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'contentVersion' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'volumes/{volumeId}/layersummary', + 'httpMethod' => 'GET', + 'parameters' => array( + 'volumeId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'contentVersion' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->layers_annotationData = new Google_Service_Books_LayersAnnotationData_Resource( + $this, + $this->serviceName, + 'annotationData', + array( + 'methods' => array( + 'get' => array( + 'path' => 'volumes/{volumeId}/layers/{layerId}/data/{annotationDataId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'volumeId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'layerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'annotationDataId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'contentVersion' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'scale' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'allowWebDefinitions' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'h' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'w' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'list' => array( + 'path' => 'volumes/{volumeId}/layers/{layerId}/data', + 'httpMethod' => 'GET', + 'parameters' => array( + 'volumeId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'layerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'contentVersion' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'scale' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'h' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'updatedMax' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'annotationDataId' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'w' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'updatedMin' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->layers_volumeAnnotations = new Google_Service_Books_LayersVolumeAnnotations_Resource( + $this, + $this->serviceName, + 'volumeAnnotations', + array( + 'methods' => array( + 'get' => array( + 'path' => 'volumes/{volumeId}/layers/{layerId}/annotations/{annotationId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'volumeId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'layerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'annotationId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'volumes/{volumeId}/layers/{layerId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'volumeId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'layerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'contentVersion' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'showDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'volumeAnnotationsVersion' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'endPosition' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'endOffset' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'updatedMin' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'updatedMax' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startOffset' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startPosition' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->myconfig = new Google_Service_Books_Myconfig_Resource( + $this, + $this->serviceName, + 'myconfig', + array( + 'methods' => array( + 'releaseDownloadAccess' => array( + 'path' => 'myconfig/releaseDownloadAccess', + 'httpMethod' => 'POST', + 'parameters' => array( + 'volumeIds' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + 'required' => true, + ), + 'cpksver' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'requestAccess' => array( + 'path' => 'myconfig/requestAccess', + 'httpMethod' => 'POST', + 'parameters' => array( + 'source' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'volumeId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'nonce' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'cpksver' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'licenseTypes' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'syncVolumeLicenses' => array( + 'path' => 'myconfig/syncVolumeLicenses', + 'httpMethod' => 'POST', + 'parameters' => array( + 'source' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'nonce' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'cpksver' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'features' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showPreorders' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'volumeIds' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + ), + ), + ) + ) + ); + $this->mylibrary_annotations = new Google_Service_Books_MylibraryAnnotations_Resource( + $this, + $this->serviceName, + 'annotations', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'mylibrary/annotations/{annotationId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'annotationId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'get' => array( + 'path' => 'mylibrary/annotations/{annotationId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'annotationId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'mylibrary/annotations', + 'httpMethod' => 'POST', + 'parameters' => array( + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showOnlySummaryInResponse' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'list' => array( + 'path' => 'mylibrary/annotations', + 'httpMethod' => 'GET', + 'parameters' => array( + 'showDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'updatedMin' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'layerIds' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'volumeId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageIds' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'contentVersion' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'layerId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'updatedMax' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'summary' => array( + 'path' => 'mylibrary/annotations/summary', + 'httpMethod' => 'POST', + 'parameters' => array( + 'layerIds' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + 'required' => true, + ), + 'volumeId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'mylibrary/annotations/{annotationId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'annotationId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->mylibrary_bookshelves = new Google_Service_Books_MylibraryBookshelves_Resource( + $this, + $this->serviceName, + 'bookshelves', + array( + 'methods' => array( + 'addVolume' => array( + 'path' => 'mylibrary/bookshelves/{shelf}/addVolume', + 'httpMethod' => 'POST', + 'parameters' => array( + 'shelf' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'volumeId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'clearVolumes' => array( + 'path' => 'mylibrary/bookshelves/{shelf}/clearVolumes', + 'httpMethod' => 'POST', + 'parameters' => array( + 'shelf' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'get' => array( + 'path' => 'mylibrary/bookshelves/{shelf}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'shelf' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'mylibrary/bookshelves', + 'httpMethod' => 'GET', + 'parameters' => array( + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'moveVolume' => array( + 'path' => 'mylibrary/bookshelves/{shelf}/moveVolume', + 'httpMethod' => 'POST', + 'parameters' => array( + 'shelf' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'volumeId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'volumePosition' => array( + 'location' => 'query', + 'type' => 'integer', + 'required' => true, + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'removeVolume' => array( + 'path' => 'mylibrary/bookshelves/{shelf}/removeVolume', + 'httpMethod' => 'POST', + 'parameters' => array( + 'shelf' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'volumeId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->mylibrary_bookshelves_volumes = new Google_Service_Books_MylibraryBookshelvesVolumes_Resource( + $this, + $this->serviceName, + 'volumes', + array( + 'methods' => array( + 'list' => array( + 'path' => 'mylibrary/bookshelves/{shelf}/volumes', + 'httpMethod' => 'GET', + 'parameters' => array( + 'shelf' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'country' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showPreorders' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'q' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startIndex' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->mylibrary_readingpositions = new Google_Service_Books_MylibraryReadingpositions_Resource( + $this, + $this->serviceName, + 'readingpositions', + array( + 'methods' => array( + 'get' => array( + 'path' => 'mylibrary/readingpositions/{volumeId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'volumeId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'contentVersion' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'setPosition' => array( + 'path' => 'mylibrary/readingpositions/{volumeId}/setPosition', + 'httpMethod' => 'POST', + 'parameters' => array( + 'volumeId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'timestamp' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'position' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'deviceCookie' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'contentVersion' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'action' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->promooffer = new Google_Service_Books_Promooffer_Resource( + $this, + $this->serviceName, + 'promooffer', + array( + 'methods' => array( + 'accept' => array( + 'path' => 'promooffer/accept', + 'httpMethod' => 'POST', + 'parameters' => array( + 'product' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'volumeId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'offerId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'androidId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'device' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'model' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'serial' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'manufacturer' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'dismiss' => array( + 'path' => 'promooffer/dismiss', + 'httpMethod' => 'POST', + 'parameters' => array( + 'product' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'offerId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'androidId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'device' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'model' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'serial' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'manufacturer' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'get' => array( + 'path' => 'promooffer/get', + 'httpMethod' => 'GET', + 'parameters' => array( + 'product' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'androidId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'device' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'model' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'serial' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'manufacturer' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->volumes = new Google_Service_Books_Volumes_Resource( + $this, + $this->serviceName, + 'volumes', + array( + 'methods' => array( + 'get' => array( + 'path' => 'volumes/{volumeId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'volumeId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'country' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'partner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'volumes', + 'httpMethod' => 'GET', + 'parameters' => array( + 'q' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'libraryRestrict' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'langRestrict' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showPreorders' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'printType' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startIndex' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'download' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'partner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->volumes_associated = new Google_Service_Books_VolumesAssociated_Resource( + $this, + $this->serviceName, + 'associated', + array( + 'methods' => array( + 'list' => array( + 'path' => 'volumes/{volumeId}/associated', + 'httpMethod' => 'GET', + 'parameters' => array( + 'volumeId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'association' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->volumes_mybooks = new Google_Service_Books_VolumesMybooks_Resource( + $this, + $this->serviceName, + 'mybooks', + array( + 'methods' => array( + 'list' => array( + 'path' => 'volumes/mybooks', + 'httpMethod' => 'GET', + 'parameters' => array( + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startIndex' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'acquireMethod' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'processingState' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + ), + ), + ) + ) + ); + $this->volumes_recommended = new Google_Service_Books_VolumesRecommended_Resource( + $this, + $this->serviceName, + 'recommended', + array( + 'methods' => array( + 'list' => array( + 'path' => 'volumes/recommended', + 'httpMethod' => 'GET', + 'parameters' => array( + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'rate' => array( + 'path' => 'volumes/recommended/rate', + 'httpMethod' => 'POST', + 'parameters' => array( + 'rating' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'volumeId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->volumes_useruploaded = new Google_Service_Books_VolumesUseruploaded_Resource( + $this, + $this->serviceName, + 'useruploaded', + array( + 'methods' => array( + 'list' => array( + 'path' => 'volumes/useruploaded', + 'httpMethod' => 'GET', + 'parameters' => array( + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'volumeId' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startIndex' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'processingState' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "bookshelves" collection of methods. + * Typical usage is: + * + * $booksService = new Google_Service_Books(...); + * $bookshelves = $booksService->bookshelves; + * + */ +class Google_Service_Books_Bookshelves_Resource extends Google_Service_Resource +{ + + /** + * Retrieves metadata for a specific bookshelf for the specified user. + * (bookshelves.get) + * + * @param string $userId + * ID of user for whom to retrieve bookshelves. + * @param string $shelf + * ID of bookshelf to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param string source + * String to identify the originator of this request. + * @return Google_Service_Books_Bookshelf + */ + public function get($userId, $shelf, $optParams = array()) + { + $params = array('userId' => $userId, 'shelf' => $shelf); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Books_Bookshelf"); + } + /** + * Retrieves a list of public bookshelves for the specified user. + * (bookshelves.listBookshelves) + * + * @param string $userId + * ID of user for whom to retrieve bookshelves. + * @param array $optParams Optional parameters. + * + * @opt_param string source + * String to identify the originator of this request. + * @return Google_Service_Books_Bookshelves + */ + public function listBookshelves($userId, $optParams = array()) + { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Books_Bookshelves"); + } +} + +/** + * The "volumes" collection of methods. + * Typical usage is: + * + * $booksService = new Google_Service_Books(...); + * $volumes = $booksService->volumes; + * + */ +class Google_Service_Books_BookshelvesVolumes_Resource extends Google_Service_Resource +{ + + /** + * Retrieves volumes in a specific bookshelf for the specified user. + * (volumes.listBookshelvesVolumes) + * + * @param string $userId + * ID of user for whom to retrieve bookshelf volumes. + * @param string $shelf + * ID of bookshelf to retrieve volumes. + * @param array $optParams Optional parameters. + * + * @opt_param bool showPreorders + * Set to true to show pre-ordered books. Defaults to false. + * @opt_param string maxResults + * Maximum number of results to return + * @opt_param string source + * String to identify the originator of this request. + * @opt_param string startIndex + * Index of the first element to return (starts at 0) + * @return Google_Service_Books_Volumes + */ + public function listBookshelvesVolumes($userId, $shelf, $optParams = array()) + { + $params = array('userId' => $userId, 'shelf' => $shelf); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Books_Volumes"); + } +} + +/** + * The "cloudloading" collection of methods. + * Typical usage is: + * + * $booksService = new Google_Service_Books(...); + * $cloudloading = $booksService->cloudloading; + * + */ +class Google_Service_Books_Cloudloading_Resource extends Google_Service_Resource +{ + + /** + * (cloudloading.addBook) + * + * @param array $optParams Optional parameters. + * + * @opt_param string upload_client_token + * + * @opt_param string drive_document_id + * A drive document id. The upload_client_token must not be set. + * @opt_param string mime_type + * The document MIME type. It can be set only if the drive_document_id is set. + * @opt_param string name + * The document name. It can be set only if the drive_document_id is set. + * @return Google_Service_Books_BooksCloudloadingResource + */ + public function addBook($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('addBook', array($params), "Google_Service_Books_BooksCloudloadingResource"); + } + /** + * Remove the book and its contents (cloudloading.deleteBook) + * + * @param string $volumeId + * The id of the book to be removed. + * @param array $optParams Optional parameters. + */ + public function deleteBook($volumeId, $optParams = array()) + { + $params = array('volumeId' => $volumeId); + $params = array_merge($params, $optParams); + return $this->call('deleteBook', array($params)); + } + /** + * (cloudloading.updateBook) + * + * @param Google_BooksCloudloadingResource $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Books_BooksCloudloadingResource + */ + public function updateBook(Google_Service_Books_BooksCloudloadingResource $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('updateBook', array($params), "Google_Service_Books_BooksCloudloadingResource"); + } +} + +/** + * The "layers" collection of methods. + * Typical usage is: + * + * $booksService = new Google_Service_Books(...); + * $layers = $booksService->layers; + * + */ +class Google_Service_Books_Layers_Resource extends Google_Service_Resource +{ + + /** + * Gets the layer summary for a volume. (layers.get) + * + * @param string $volumeId + * The volume to retrieve layers for. + * @param string $summaryId + * The ID for the layer to get the summary for. + * @param array $optParams Optional parameters. + * + * @opt_param string source + * String to identify the originator of this request. + * @opt_param string contentVersion + * The content version for the requested volume. + * @return Google_Service_Books_Layersummary + */ + public function get($volumeId, $summaryId, $optParams = array()) + { + $params = array('volumeId' => $volumeId, 'summaryId' => $summaryId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Books_Layersummary"); + } + /** + * List the layer summaries for a volume. (layers.listLayers) + * + * @param string $volumeId + * The volume to retrieve layers for. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The value of the nextToken from the previous page. + * @opt_param string contentVersion + * The content version for the requested volume. + * @opt_param string maxResults + * Maximum number of results to return + * @opt_param string source + * String to identify the originator of this request. + * @return Google_Service_Books_Layersummaries + */ + public function listLayers($volumeId, $optParams = array()) + { + $params = array('volumeId' => $volumeId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Books_Layersummaries"); + } +} + +/** + * The "annotationData" collection of methods. + * Typical usage is: + * + * $booksService = new Google_Service_Books(...); + * $annotationData = $booksService->annotationData; + * + */ +class Google_Service_Books_LayersAnnotationData_Resource extends Google_Service_Resource +{ + + /** + * Gets the annotation data. (annotationData.get) + * + * @param string $volumeId + * The volume to retrieve annotations for. + * @param string $layerId + * The ID for the layer to get the annotations. + * @param string $annotationDataId + * The ID of the annotation data to retrieve. + * @param string $contentVersion + * The content version for the volume you are trying to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param int scale + * The requested scale for the image. + * @opt_param string source + * String to identify the originator of this request. + * @opt_param bool allowWebDefinitions + * For the dictionary layer. Whether or not to allow web definitions. + * @opt_param int h + * The requested pixel height for any images. If height is provided width must also be provided. + * @opt_param string locale + * The locale information for the data. ISO-639-1 language and ISO-3166-1 country code. Ex: + * 'en_US'. + * @opt_param int w + * The requested pixel width for any images. If width is provided height must also be provided. + * @return Google_Service_Books_Annotationdata + */ + public function get($volumeId, $layerId, $annotationDataId, $contentVersion, $optParams = array()) + { + $params = array('volumeId' => $volumeId, 'layerId' => $layerId, 'annotationDataId' => $annotationDataId, 'contentVersion' => $contentVersion); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Books_Annotationdata"); + } + /** + * Gets the annotation data for a volume and layer. + * (annotationData.listLayersAnnotationData) + * + * @param string $volumeId + * The volume to retrieve annotation data for. + * @param string $layerId + * The ID for the layer to get the annotation data. + * @param string $contentVersion + * The content version for the requested volume. + * @param array $optParams Optional parameters. + * + * @opt_param int scale + * The requested scale for the image. + * @opt_param string source + * String to identify the originator of this request. + * @opt_param string locale + * The locale information for the data. ISO-639-1 language and ISO-3166-1 country code. Ex: + * 'en_US'. + * @opt_param int h + * The requested pixel height for any images. If height is provided width must also be provided. + * @opt_param string updatedMax + * RFC 3339 timestamp to restrict to items updated prior to this timestamp (exclusive). + * @opt_param string maxResults + * Maximum number of results to return + * @opt_param string annotationDataId + * The list of Annotation Data Ids to retrieve. Pagination is ignored if this is set. + * @opt_param string pageToken + * The value of the nextToken from the previous page. + * @opt_param int w + * The requested pixel width for any images. If width is provided height must also be provided. + * @opt_param string updatedMin + * RFC 3339 timestamp to restrict to items updated since this timestamp (inclusive). + * @return Google_Service_Books_Annotationsdata + */ + public function listLayersAnnotationData($volumeId, $layerId, $contentVersion, $optParams = array()) + { + $params = array('volumeId' => $volumeId, 'layerId' => $layerId, 'contentVersion' => $contentVersion); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Books_Annotationsdata"); + } +} +/** + * The "volumeAnnotations" collection of methods. + * Typical usage is: + * + * $booksService = new Google_Service_Books(...); + * $volumeAnnotations = $booksService->volumeAnnotations; + * + */ +class Google_Service_Books_LayersVolumeAnnotations_Resource extends Google_Service_Resource +{ + + /** + * Gets the volume annotation. (volumeAnnotations.get) + * + * @param string $volumeId + * The volume to retrieve annotations for. + * @param string $layerId + * The ID for the layer to get the annotations. + * @param string $annotationId + * The ID of the volume annotation to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param string locale + * The locale information for the data. ISO-639-1 language and ISO-3166-1 country code. Ex: + * 'en_US'. + * @opt_param string source + * String to identify the originator of this request. + * @return Google_Service_Books_Volumeannotation + */ + public function get($volumeId, $layerId, $annotationId, $optParams = array()) + { + $params = array('volumeId' => $volumeId, 'layerId' => $layerId, 'annotationId' => $annotationId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Books_Volumeannotation"); + } + /** + * Gets the volume annotations for a volume and layer. + * (volumeAnnotations.listLayersVolumeAnnotations) + * + * @param string $volumeId + * The volume to retrieve annotations for. + * @param string $layerId + * The ID for the layer to get the annotations. + * @param string $contentVersion + * The content version for the requested volume. + * @param array $optParams Optional parameters. + * + * @opt_param bool showDeleted + * Set to true to return deleted annotations. updatedMin must be in the request to use this. + * Defaults to false. + * @opt_param string volumeAnnotationsVersion + * The version of the volume annotations that you are requesting. + * @opt_param string endPosition + * The end position to end retrieving data from. + * @opt_param string endOffset + * The end offset to end retrieving data from. + * @opt_param string locale + * The locale information for the data. ISO-639-1 language and ISO-3166-1 country code. Ex: + * 'en_US'. + * @opt_param string updatedMin + * RFC 3339 timestamp to restrict to items updated since this timestamp (inclusive). + * @opt_param string updatedMax + * RFC 3339 timestamp to restrict to items updated prior to this timestamp (exclusive). + * @opt_param string maxResults + * Maximum number of results to return + * @opt_param string pageToken + * The value of the nextToken from the previous page. + * @opt_param string source + * String to identify the originator of this request. + * @opt_param string startOffset + * The start offset to start retrieving data from. + * @opt_param string startPosition + * The start position to start retrieving data from. + * @return Google_Service_Books_Volumeannotations + */ + public function listLayersVolumeAnnotations($volumeId, $layerId, $contentVersion, $optParams = array()) + { + $params = array('volumeId' => $volumeId, 'layerId' => $layerId, 'contentVersion' => $contentVersion); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Books_Volumeannotations"); + } +} + +/** + * The "myconfig" collection of methods. + * Typical usage is: + * + * $booksService = new Google_Service_Books(...); + * $myconfig = $booksService->myconfig; + * + */ +class Google_Service_Books_Myconfig_Resource extends Google_Service_Resource +{ + + /** + * Release downloaded content access restriction. + * (myconfig.releaseDownloadAccess) + * + * @param string $volumeIds + * The volume(s) to release restrictions for. + * @param string $cpksver + * The device/version ID from which to release the restriction. + * @param array $optParams Optional parameters. + * + * @opt_param string locale + * ISO-639-1, ISO-3166-1 codes for message localization, i.e. en_US. + * @opt_param string source + * String to identify the originator of this request. + * @return Google_Service_Books_DownloadAccesses + */ + public function releaseDownloadAccess($volumeIds, $cpksver, $optParams = array()) + { + $params = array('volumeIds' => $volumeIds, 'cpksver' => $cpksver); + $params = array_merge($params, $optParams); + return $this->call('releaseDownloadAccess', array($params), "Google_Service_Books_DownloadAccesses"); + } + /** + * Request concurrent and download access restrictions. (myconfig.requestAccess) + * + * @param string $source + * String to identify the originator of this request. + * @param string $volumeId + * The volume to request concurrent/download restrictions for. + * @param string $nonce + * The client nonce value. + * @param string $cpksver + * The device/version ID from which to request the restrictions. + * @param array $optParams Optional parameters. + * + * @opt_param string licenseTypes + * The type of access license to request. If not specified, the default is BOTH. + * @opt_param string locale + * ISO-639-1, ISO-3166-1 codes for message localization, i.e. en_US. + * @return Google_Service_Books_RequestAccess + */ + public function requestAccess($source, $volumeId, $nonce, $cpksver, $optParams = array()) + { + $params = array('source' => $source, 'volumeId' => $volumeId, 'nonce' => $nonce, 'cpksver' => $cpksver); + $params = array_merge($params, $optParams); + return $this->call('requestAccess', array($params), "Google_Service_Books_RequestAccess"); + } + /** + * Request downloaded content access for specified volumes on the My eBooks + * shelf. (myconfig.syncVolumeLicenses) + * + * @param string $source + * String to identify the originator of this request. + * @param string $nonce + * The client nonce value. + * @param string $cpksver + * The device/version ID from which to release the restriction. + * @param array $optParams Optional parameters. + * + * @opt_param string features + * List of features supported by the client, i.e., 'RENTALS' + * @opt_param string locale + * ISO-639-1, ISO-3166-1 codes for message localization, i.e. en_US. + * @opt_param bool showPreorders + * Set to true to show pre-ordered books. Defaults to false. + * @opt_param string volumeIds + * The volume(s) to request download restrictions for. + * @return Google_Service_Books_Volumes + */ + public function syncVolumeLicenses($source, $nonce, $cpksver, $optParams = array()) + { + $params = array('source' => $source, 'nonce' => $nonce, 'cpksver' => $cpksver); + $params = array_merge($params, $optParams); + return $this->call('syncVolumeLicenses', array($params), "Google_Service_Books_Volumes"); + } +} + +/** + * The "mylibrary" collection of methods. + * Typical usage is: + * + * $booksService = new Google_Service_Books(...); + * $mylibrary = $booksService->mylibrary; + * + */ +class Google_Service_Books_Mylibrary_Resource extends Google_Service_Resource +{ + +} + +/** + * The "annotations" collection of methods. + * Typical usage is: + * + * $booksService = new Google_Service_Books(...); + * $annotations = $booksService->annotations; + * + */ +class Google_Service_Books_MylibraryAnnotations_Resource extends Google_Service_Resource +{ + + /** + * Deletes an annotation. (annotations.delete) + * + * @param string $annotationId + * The ID for the annotation to delete. + * @param array $optParams Optional parameters. + * + * @opt_param string source + * String to identify the originator of this request. + */ + public function delete($annotationId, $optParams = array()) + { + $params = array('annotationId' => $annotationId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets an annotation by its ID. (annotations.get) + * + * @param string $annotationId + * The ID for the annotation to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param string source + * String to identify the originator of this request. + * @return Google_Service_Books_Annotation + */ + public function get($annotationId, $optParams = array()) + { + $params = array('annotationId' => $annotationId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Books_Annotation"); + } + /** + * Inserts a new annotation. (annotations.insert) + * + * @param Google_Annotation $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string source + * String to identify the originator of this request. + * @opt_param bool showOnlySummaryInResponse + * Requests that only the summary of the specified layer be provided in the response. + * @return Google_Service_Books_Annotation + */ + public function insert(Google_Service_Books_Annotation $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Books_Annotation"); + } + /** + * Retrieves a list of annotations, possibly filtered. + * (annotations.listMylibraryAnnotations) + * + * @param array $optParams Optional parameters. + * + * @opt_param bool showDeleted + * Set to true to return deleted annotations. updatedMin must be in the request to use this. + * Defaults to false. + * @opt_param string updatedMin + * RFC 3339 timestamp to restrict to items updated since this timestamp (inclusive). + * @opt_param string layerIds + * The layer ID(s) to limit annotation by. + * @opt_param string volumeId + * The volume to restrict annotations to. + * @opt_param string maxResults + * Maximum number of results to return + * @opt_param string pageToken + * The value of the nextToken from the previous page. + * @opt_param string pageIds + * The page ID(s) for the volume that is being queried. + * @opt_param string contentVersion + * The content version for the requested volume. + * @opt_param string source + * String to identify the originator of this request. + * @opt_param string layerId + * The layer ID to limit annotation by. + * @opt_param string updatedMax + * RFC 3339 timestamp to restrict to items updated prior to this timestamp (exclusive). + * @return Google_Service_Books_Annotations + */ + public function listMylibraryAnnotations($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Books_Annotations"); + } + /** + * Gets the summary of specified layers. (annotations.summary) + * + * @param string $layerIds + * Array of layer IDs to get the summary for. + * @param string $volumeId + * Volume id to get the summary for. + * @param array $optParams Optional parameters. + * @return Google_Service_Books_AnnotationsSummary + */ + public function summary($layerIds, $volumeId, $optParams = array()) + { + $params = array('layerIds' => $layerIds, 'volumeId' => $volumeId); + $params = array_merge($params, $optParams); + return $this->call('summary', array($params), "Google_Service_Books_AnnotationsSummary"); + } + /** + * Updates an existing annotation. (annotations.update) + * + * @param string $annotationId + * The ID for the annotation to update. + * @param Google_Annotation $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string source + * String to identify the originator of this request. + * @return Google_Service_Books_Annotation + */ + public function update($annotationId, Google_Service_Books_Annotation $postBody, $optParams = array()) + { + $params = array('annotationId' => $annotationId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Books_Annotation"); + } +} +/** + * The "bookshelves" collection of methods. + * Typical usage is: + * + * $booksService = new Google_Service_Books(...); + * $bookshelves = $booksService->bookshelves; + * + */ +class Google_Service_Books_MylibraryBookshelves_Resource extends Google_Service_Resource +{ + + /** + * Adds a volume to a bookshelf. (bookshelves.addVolume) + * + * @param string $shelf + * ID of bookshelf to which to add a volume. + * @param string $volumeId + * ID of volume to add. + * @param array $optParams Optional parameters. + * + * @opt_param string source + * String to identify the originator of this request. + */ + public function addVolume($shelf, $volumeId, $optParams = array()) + { + $params = array('shelf' => $shelf, 'volumeId' => $volumeId); + $params = array_merge($params, $optParams); + return $this->call('addVolume', array($params)); + } + /** + * Clears all volumes from a bookshelf. (bookshelves.clearVolumes) + * + * @param string $shelf + * ID of bookshelf from which to remove a volume. + * @param array $optParams Optional parameters. + * + * @opt_param string source + * String to identify the originator of this request. + */ + public function clearVolumes($shelf, $optParams = array()) + { + $params = array('shelf' => $shelf); + $params = array_merge($params, $optParams); + return $this->call('clearVolumes', array($params)); + } + /** + * Retrieves metadata for a specific bookshelf belonging to the authenticated + * user. (bookshelves.get) + * + * @param string $shelf + * ID of bookshelf to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param string source + * String to identify the originator of this request. + * @return Google_Service_Books_Bookshelf + */ + public function get($shelf, $optParams = array()) + { + $params = array('shelf' => $shelf); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Books_Bookshelf"); + } + /** + * Retrieves a list of bookshelves belonging to the authenticated user. + * (bookshelves.listMylibraryBookshelves) + * + * @param array $optParams Optional parameters. + * + * @opt_param string source + * String to identify the originator of this request. + * @return Google_Service_Books_Bookshelves + */ + public function listMylibraryBookshelves($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Books_Bookshelves"); + } + /** + * Moves a volume within a bookshelf. (bookshelves.moveVolume) + * + * @param string $shelf + * ID of bookshelf with the volume. + * @param string $volumeId + * ID of volume to move. + * @param int $volumePosition + * Position on shelf to move the item (0 puts the item before the current first item, 1 puts it + * between the first and the second and so on.) + * @param array $optParams Optional parameters. + * + * @opt_param string source + * String to identify the originator of this request. + */ + public function moveVolume($shelf, $volumeId, $volumePosition, $optParams = array()) + { + $params = array('shelf' => $shelf, 'volumeId' => $volumeId, 'volumePosition' => $volumePosition); + $params = array_merge($params, $optParams); + return $this->call('moveVolume', array($params)); + } + /** + * Removes a volume from a bookshelf. (bookshelves.removeVolume) + * + * @param string $shelf + * ID of bookshelf from which to remove a volume. + * @param string $volumeId + * ID of volume to remove. + * @param array $optParams Optional parameters. + * + * @opt_param string source + * String to identify the originator of this request. + */ + public function removeVolume($shelf, $volumeId, $optParams = array()) + { + $params = array('shelf' => $shelf, 'volumeId' => $volumeId); + $params = array_merge($params, $optParams); + return $this->call('removeVolume', array($params)); + } +} + +/** + * The "volumes" collection of methods. + * Typical usage is: + * + * $booksService = new Google_Service_Books(...); + * $volumes = $booksService->volumes; + * + */ +class Google_Service_Books_MylibraryBookshelvesVolumes_Resource extends Google_Service_Resource +{ + + /** + * Gets volume information for volumes on a bookshelf. + * (volumes.listMylibraryBookshelvesVolumes) + * + * @param string $shelf + * The bookshelf ID or name retrieve volumes for. + * @param array $optParams Optional parameters. + * + * @opt_param string projection + * Restrict information returned to a set of selected fields. + * @opt_param string country + * ISO-3166-1 code to override the IP-based location. + * @opt_param bool showPreorders + * Set to true to show pre-ordered books. Defaults to false. + * @opt_param string maxResults + * Maximum number of results to return + * @opt_param string q + * Full-text search query string in this bookshelf. + * @opt_param string source + * String to identify the originator of this request. + * @opt_param string startIndex + * Index of the first element to return (starts at 0) + * @return Google_Service_Books_Volumes + */ + public function listMylibraryBookshelvesVolumes($shelf, $optParams = array()) + { + $params = array('shelf' => $shelf); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Books_Volumes"); + } +} +/** + * The "readingpositions" collection of methods. + * Typical usage is: + * + * $booksService = new Google_Service_Books(...); + * $readingpositions = $booksService->readingpositions; + * + */ +class Google_Service_Books_MylibraryReadingpositions_Resource extends Google_Service_Resource +{ + + /** + * Retrieves my reading position information for a volume. + * (readingpositions.get) + * + * @param string $volumeId + * ID of volume for which to retrieve a reading position. + * @param array $optParams Optional parameters. + * + * @opt_param string source + * String to identify the originator of this request. + * @opt_param string contentVersion + * Volume content version for which this reading position is requested. + * @return Google_Service_Books_ReadingPosition + */ + public function get($volumeId, $optParams = array()) + { + $params = array('volumeId' => $volumeId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Books_ReadingPosition"); + } + /** + * Sets my reading position information for a volume. + * (readingpositions.setPosition) + * + * @param string $volumeId + * ID of volume for which to update the reading position. + * @param string $timestamp + * RFC 3339 UTC format timestamp associated with this reading position. + * @param string $position + * Position string for the new volume reading position. + * @param array $optParams Optional parameters. + * + * @opt_param string deviceCookie + * Random persistent device cookie optional on set position. + * @opt_param string source + * String to identify the originator of this request. + * @opt_param string contentVersion + * Volume content version for which this reading position applies. + * @opt_param string action + * Action that caused this reading position to be set. + */ + public function setPosition($volumeId, $timestamp, $position, $optParams = array()) + { + $params = array('volumeId' => $volumeId, 'timestamp' => $timestamp, 'position' => $position); + $params = array_merge($params, $optParams); + return $this->call('setPosition', array($params)); + } +} + +/** + * The "promooffer" collection of methods. + * Typical usage is: + * + * $booksService = new Google_Service_Books(...); + * $promooffer = $booksService->promooffer; + * + */ +class Google_Service_Books_Promooffer_Resource extends Google_Service_Resource +{ + + /** + * (promooffer.accept) + * + * @param array $optParams Optional parameters. + * + * @opt_param string product + * device product + * @opt_param string volumeId + * Volume id to exercise the offer + * @opt_param string offerId + * + * @opt_param string androidId + * device android_id + * @opt_param string device + * device device + * @opt_param string model + * device model + * @opt_param string serial + * device serial + * @opt_param string manufacturer + * device manufacturer + */ + public function accept($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('accept', array($params)); + } + /** + * (promooffer.dismiss) + * + * @param array $optParams Optional parameters. + * + * @opt_param string product + * device product + * @opt_param string offerId + * Offer to dimiss + * @opt_param string androidId + * device android_id + * @opt_param string device + * device device + * @opt_param string model + * device model + * @opt_param string serial + * device serial + * @opt_param string manufacturer + * device manufacturer + */ + public function dismiss($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('dismiss', array($params)); + } + /** + * Returns a list of promo offers available to the user (promooffer.get) + * + * @param array $optParams Optional parameters. + * + * @opt_param string product + * device product + * @opt_param string androidId + * device android_id + * @opt_param string device + * device device + * @opt_param string model + * device model + * @opt_param string serial + * device serial + * @opt_param string manufacturer + * device manufacturer + * @return Google_Service_Books_Offers + */ + public function get($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Books_Offers"); + } +} + +/** + * The "volumes" collection of methods. + * Typical usage is: + * + * $booksService = new Google_Service_Books(...); + * $volumes = $booksService->volumes; + * + */ +class Google_Service_Books_Volumes_Resource extends Google_Service_Resource +{ + + /** + * Gets volume information for a single volume. (volumes.get) + * + * @param string $volumeId + * ID of volume to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param string source + * String to identify the originator of this request. + * @opt_param string country + * ISO-3166-1 code to override the IP-based location. + * @opt_param string projection + * Restrict information returned to a set of selected fields. + * @opt_param string partner + * Brand results for partner ID. + * @return Google_Service_Books_Volume + */ + public function get($volumeId, $optParams = array()) + { + $params = array('volumeId' => $volumeId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Books_Volume"); + } + /** + * Performs a book search. (volumes.listVolumes) + * + * @param string $q + * Full-text search query string. + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy + * Sort search results. + * @opt_param string projection + * Restrict information returned to a set of selected fields. + * @opt_param string libraryRestrict + * Restrict search to this user's library. + * @opt_param string langRestrict + * Restrict results to books with this language code. + * @opt_param bool showPreorders + * Set to true to show books available for preorder. Defaults to false. + * @opt_param string printType + * Restrict to books or magazines. + * @opt_param string maxResults + * Maximum number of results to return. + * @opt_param string filter + * Filter search results. + * @opt_param string source + * String to identify the originator of this request. + * @opt_param string startIndex + * Index of the first result to return (starts at 0) + * @opt_param string download + * Restrict to volumes by download availability. + * @opt_param string partner + * Restrict and brand results for partner ID. + * @return Google_Service_Books_Volumes + */ + public function listVolumes($q, $optParams = array()) + { + $params = array('q' => $q); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Books_Volumes"); + } +} + +/** + * The "associated" collection of methods. + * Typical usage is: + * + * $booksService = new Google_Service_Books(...); + * $associated = $booksService->associated; + * + */ +class Google_Service_Books_VolumesAssociated_Resource extends Google_Service_Resource +{ + + /** + * Return a list of associated books. (associated.listVolumesAssociated) + * + * @param string $volumeId + * ID of the source volume. + * @param array $optParams Optional parameters. + * + * @opt_param string locale + * ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'. Used for generating + * recommendations. + * @opt_param string source + * String to identify the originator of this request. + * @opt_param string association + * Association type. + * @return Google_Service_Books_Volumes + */ + public function listVolumesAssociated($volumeId, $optParams = array()) + { + $params = array('volumeId' => $volumeId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Books_Volumes"); + } +} +/** + * The "mybooks" collection of methods. + * Typical usage is: + * + * $booksService = new Google_Service_Books(...); + * $mybooks = $booksService->mybooks; + * + */ +class Google_Service_Books_VolumesMybooks_Resource extends Google_Service_Resource +{ + + /** + * Return a list of books in My Library. (mybooks.listVolumesMybooks) + * + * @param array $optParams Optional parameters. + * + * @opt_param string locale + * ISO-639-1 language and ISO-3166-1 country code. Ex:'en_US'. Used for generating recommendations. + * @opt_param string startIndex + * Index of the first result to return (starts at 0) + * @opt_param string maxResults + * Maximum number of results to return. + * @opt_param string source + * String to identify the originator of this request. + * @opt_param string acquireMethod + * How the book was aquired + * @opt_param string processingState + * The processing state of the user uploaded volumes to be returned. Applicable only if the + * UPLOADED is specified in the acquireMethod. + * @return Google_Service_Books_Volumes + */ + public function listVolumesMybooks($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Books_Volumes"); + } +} +/** + * The "recommended" collection of methods. + * Typical usage is: + * + * $booksService = new Google_Service_Books(...); + * $recommended = $booksService->recommended; + * + */ +class Google_Service_Books_VolumesRecommended_Resource extends Google_Service_Resource +{ + + /** + * Return a list of recommended books for the current user. + * (recommended.listVolumesRecommended) + * + * @param array $optParams Optional parameters. + * + * @opt_param string locale + * ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'. Used for generating + * recommendations. + * @opt_param string source + * String to identify the originator of this request. + * @return Google_Service_Books_Volumes + */ + public function listVolumesRecommended($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Books_Volumes"); + } + /** + * Rate a recommended book for the current user. (recommended.rate) + * + * @param string $rating + * Rating to be given to the volume. + * @param string $volumeId + * ID of the source volume. + * @param array $optParams Optional parameters. + * + * @opt_param string locale + * ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'. Used for generating + * recommendations. + * @opt_param string source + * String to identify the originator of this request. + * @return Google_Service_Books_BooksVolumesRecommendedRateResponse + */ + public function rate($rating, $volumeId, $optParams = array()) + { + $params = array('rating' => $rating, 'volumeId' => $volumeId); + $params = array_merge($params, $optParams); + return $this->call('rate', array($params), "Google_Service_Books_BooksVolumesRecommendedRateResponse"); + } +} +/** + * The "useruploaded" collection of methods. + * Typical usage is: + * + * $booksService = new Google_Service_Books(...); + * $useruploaded = $booksService->useruploaded; + * + */ +class Google_Service_Books_VolumesUseruploaded_Resource extends Google_Service_Resource +{ + + /** + * Return a list of books uploaded by the current user. + * (useruploaded.listVolumesUseruploaded) + * + * @param array $optParams Optional parameters. + * + * @opt_param string locale + * ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'. Used for generating + * recommendations. + * @opt_param string volumeId + * The ids of the volumes to be returned. If not specified all that match the processingState are + * returned. + * @opt_param string maxResults + * Maximum number of results to return. + * @opt_param string source + * String to identify the originator of this request. + * @opt_param string startIndex + * Index of the first result to return (starts at 0) + * @opt_param string processingState + * The processing state of the user uploaded volumes to be returned. + * @return Google_Service_Books_Volumes + */ + public function listVolumesUseruploaded($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Books_Volumes"); + } +} + + + + +class Google_Service_Books_Annotation extends Google_Collection +{ + public $afterSelectedText; + public $beforeSelectedText; + protected $clientVersionRangesType = 'Google_Service_Books_AnnotationClientVersionRanges'; + protected $clientVersionRangesDataType = ''; + public $created; + protected $currentVersionRangesType = 'Google_Service_Books_AnnotationCurrentVersionRanges'; + protected $currentVersionRangesDataType = ''; + public $data; + public $deleted; + public $highlightStyle; + public $id; + public $kind; + public $layerId; + protected $layerSummaryType = 'Google_Service_Books_AnnotationLayerSummary'; + protected $layerSummaryDataType = ''; + public $pageIds; + public $selectedText; + public $selfLink; + public $updated; + public $volumeId; + + public function setAfterSelectedText($afterSelectedText) + { + $this->afterSelectedText = $afterSelectedText; + } + + public function getAfterSelectedText() + { + return $this->afterSelectedText; + } + + public function setBeforeSelectedText($beforeSelectedText) + { + $this->beforeSelectedText = $beforeSelectedText; + } + + public function getBeforeSelectedText() + { + return $this->beforeSelectedText; + } + + public function setClientVersionRanges(Google_Service_Books_AnnotationClientVersionRanges $clientVersionRanges) + { + $this->clientVersionRanges = $clientVersionRanges; + } + + public function getClientVersionRanges() + { + return $this->clientVersionRanges; + } + + public function setCreated($created) + { + $this->created = $created; + } + + public function getCreated() + { + return $this->created; + } + + public function setCurrentVersionRanges(Google_Service_Books_AnnotationCurrentVersionRanges $currentVersionRanges) + { + $this->currentVersionRanges = $currentVersionRanges; + } + + public function getCurrentVersionRanges() + { + return $this->currentVersionRanges; + } + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setDeleted($deleted) + { + $this->deleted = $deleted; + } + + public function getDeleted() + { + return $this->deleted; + } + + public function setHighlightStyle($highlightStyle) + { + $this->highlightStyle = $highlightStyle; + } + + public function getHighlightStyle() + { + return $this->highlightStyle; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLayerId($layerId) + { + $this->layerId = $layerId; + } + + public function getLayerId() + { + return $this->layerId; + } + + public function setLayerSummary(Google_Service_Books_AnnotationLayerSummary $layerSummary) + { + $this->layerSummary = $layerSummary; + } + + public function getLayerSummary() + { + return $this->layerSummary; + } + + public function setPageIds($pageIds) + { + $this->pageIds = $pageIds; + } + + public function getPageIds() + { + return $this->pageIds; + } + + public function setSelectedText($selectedText) + { + $this->selectedText = $selectedText; + } + + public function getSelectedText() + { + return $this->selectedText; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setVolumeId($volumeId) + { + $this->volumeId = $volumeId; + } + + public function getVolumeId() + { + return $this->volumeId; + } +} + +class Google_Service_Books_AnnotationClientVersionRanges extends Google_Model +{ + protected $cfiRangeType = 'Google_Service_Books_BooksAnnotationsRange'; + protected $cfiRangeDataType = ''; + public $contentVersion; + protected $gbImageRangeType = 'Google_Service_Books_BooksAnnotationsRange'; + protected $gbImageRangeDataType = ''; + protected $gbTextRangeType = 'Google_Service_Books_BooksAnnotationsRange'; + protected $gbTextRangeDataType = ''; + protected $imageCfiRangeType = 'Google_Service_Books_BooksAnnotationsRange'; + protected $imageCfiRangeDataType = ''; + + public function setCfiRange(Google_Service_Books_BooksAnnotationsRange $cfiRange) + { + $this->cfiRange = $cfiRange; + } + + public function getCfiRange() + { + return $this->cfiRange; + } + + public function setContentVersion($contentVersion) + { + $this->contentVersion = $contentVersion; + } + + public function getContentVersion() + { + return $this->contentVersion; + } + + public function setGbImageRange(Google_Service_Books_BooksAnnotationsRange $gbImageRange) + { + $this->gbImageRange = $gbImageRange; + } + + public function getGbImageRange() + { + return $this->gbImageRange; + } + + public function setGbTextRange(Google_Service_Books_BooksAnnotationsRange $gbTextRange) + { + $this->gbTextRange = $gbTextRange; + } + + public function getGbTextRange() + { + return $this->gbTextRange; + } + + public function setImageCfiRange(Google_Service_Books_BooksAnnotationsRange $imageCfiRange) + { + $this->imageCfiRange = $imageCfiRange; + } + + public function getImageCfiRange() + { + return $this->imageCfiRange; + } +} + +class Google_Service_Books_AnnotationCurrentVersionRanges extends Google_Model +{ + protected $cfiRangeType = 'Google_Service_Books_BooksAnnotationsRange'; + protected $cfiRangeDataType = ''; + public $contentVersion; + protected $gbImageRangeType = 'Google_Service_Books_BooksAnnotationsRange'; + protected $gbImageRangeDataType = ''; + protected $gbTextRangeType = 'Google_Service_Books_BooksAnnotationsRange'; + protected $gbTextRangeDataType = ''; + protected $imageCfiRangeType = 'Google_Service_Books_BooksAnnotationsRange'; + protected $imageCfiRangeDataType = ''; + + public function setCfiRange(Google_Service_Books_BooksAnnotationsRange $cfiRange) + { + $this->cfiRange = $cfiRange; + } + + public function getCfiRange() + { + return $this->cfiRange; + } + + public function setContentVersion($contentVersion) + { + $this->contentVersion = $contentVersion; + } + + public function getContentVersion() + { + return $this->contentVersion; + } + + public function setGbImageRange(Google_Service_Books_BooksAnnotationsRange $gbImageRange) + { + $this->gbImageRange = $gbImageRange; + } + + public function getGbImageRange() + { + return $this->gbImageRange; + } + + public function setGbTextRange(Google_Service_Books_BooksAnnotationsRange $gbTextRange) + { + $this->gbTextRange = $gbTextRange; + } + + public function getGbTextRange() + { + return $this->gbTextRange; + } + + public function setImageCfiRange(Google_Service_Books_BooksAnnotationsRange $imageCfiRange) + { + $this->imageCfiRange = $imageCfiRange; + } + + public function getImageCfiRange() + { + return $this->imageCfiRange; + } +} + +class Google_Service_Books_AnnotationLayerSummary extends Google_Model +{ + public $allowedCharacterCount; + public $limitType; + public $remainingCharacterCount; + + public function setAllowedCharacterCount($allowedCharacterCount) + { + $this->allowedCharacterCount = $allowedCharacterCount; + } + + public function getAllowedCharacterCount() + { + return $this->allowedCharacterCount; + } + + public function setLimitType($limitType) + { + $this->limitType = $limitType; + } + + public function getLimitType() + { + return $this->limitType; + } + + public function setRemainingCharacterCount($remainingCharacterCount) + { + $this->remainingCharacterCount = $remainingCharacterCount; + } + + public function getRemainingCharacterCount() + { + return $this->remainingCharacterCount; + } +} + +class Google_Service_Books_Annotationdata extends Google_Model +{ + public $annotationType; + public $data; + public $encodedData; + public $id; + public $kind; + public $layerId; + public $selfLink; + public $updated; + public $volumeId; + + public function setAnnotationType($annotationType) + { + $this->annotationType = $annotationType; + } + + public function getAnnotationType() + { + return $this->annotationType; + } + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setEncodedData($encodedData) + { + $this->encodedData = $encodedData; + } + + public function getEncodedData() + { + return $this->encodedData; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLayerId($layerId) + { + $this->layerId = $layerId; + } + + public function getLayerId() + { + return $this->layerId; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setVolumeId($volumeId) + { + $this->volumeId = $volumeId; + } + + public function getVolumeId() + { + return $this->volumeId; + } +} + +class Google_Service_Books_Annotations extends Google_Collection +{ + protected $itemsType = 'Google_Service_Books_Annotation'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $totalItems; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_Books_AnnotationsSummary extends Google_Collection +{ + public $kind; + protected $layersType = 'Google_Service_Books_AnnotationsSummaryLayers'; + protected $layersDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLayers($layers) + { + $this->layers = $layers; + } + + public function getLayers() + { + return $this->layers; + } +} + +class Google_Service_Books_AnnotationsSummaryLayers extends Google_Model +{ + public $allowedCharacterCount; + public $layerId; + public $limitType; + public $remainingCharacterCount; + public $updated; + + public function setAllowedCharacterCount($allowedCharacterCount) + { + $this->allowedCharacterCount = $allowedCharacterCount; + } + + public function getAllowedCharacterCount() + { + return $this->allowedCharacterCount; + } + + public function setLayerId($layerId) + { + $this->layerId = $layerId; + } + + public function getLayerId() + { + return $this->layerId; + } + + public function setLimitType($limitType) + { + $this->limitType = $limitType; + } + + public function getLimitType() + { + return $this->limitType; + } + + public function setRemainingCharacterCount($remainingCharacterCount) + { + $this->remainingCharacterCount = $remainingCharacterCount; + } + + public function getRemainingCharacterCount() + { + return $this->remainingCharacterCount; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } +} + +class Google_Service_Books_Annotationsdata extends Google_Collection +{ + protected $itemsType = 'Google_Service_Books_Annotationdata'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $totalItems; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_Books_BooksAnnotationsRange extends Google_Model +{ + public $endOffset; + public $endPosition; + public $startOffset; + public $startPosition; + + public function setEndOffset($endOffset) + { + $this->endOffset = $endOffset; + } + + public function getEndOffset() + { + return $this->endOffset; + } + + public function setEndPosition($endPosition) + { + $this->endPosition = $endPosition; + } + + public function getEndPosition() + { + return $this->endPosition; + } + + public function setStartOffset($startOffset) + { + $this->startOffset = $startOffset; + } + + public function getStartOffset() + { + return $this->startOffset; + } + + public function setStartPosition($startPosition) + { + $this->startPosition = $startPosition; + } + + public function getStartPosition() + { + return $this->startPosition; + } +} + +class Google_Service_Books_BooksCloudloadingResource extends Google_Model +{ + public $author; + public $processingState; + public $title; + public $volumeId; + + public function setAuthor($author) + { + $this->author = $author; + } + + public function getAuthor() + { + return $this->author; + } + + public function setProcessingState($processingState) + { + $this->processingState = $processingState; + } + + public function getProcessingState() + { + return $this->processingState; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setVolumeId($volumeId) + { + $this->volumeId = $volumeId; + } + + public function getVolumeId() + { + return $this->volumeId; + } +} + +class Google_Service_Books_BooksVolumesRecommendedRateResponse extends Google_Model +{ + public $consistencyToken; + + public function setConsistencyToken($consistencyToken) + { + $this->consistencyToken = $consistencyToken; + } + + public function getConsistencyToken() + { + return $this->consistencyToken; + } +} + +class Google_Service_Books_Bookshelf extends Google_Model +{ + public $access; + public $created; + public $description; + public $id; + public $kind; + public $selfLink; + public $title; + public $updated; + public $volumeCount; + public $volumesLastUpdated; + + public function setAccess($access) + { + $this->access = $access; + } + + public function getAccess() + { + return $this->access; + } + + public function setCreated($created) + { + $this->created = $created; + } + + public function getCreated() + { + return $this->created; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setVolumeCount($volumeCount) + { + $this->volumeCount = $volumeCount; + } + + public function getVolumeCount() + { + return $this->volumeCount; + } + + public function setVolumesLastUpdated($volumesLastUpdated) + { + $this->volumesLastUpdated = $volumesLastUpdated; + } + + public function getVolumesLastUpdated() + { + return $this->volumesLastUpdated; + } +} + +class Google_Service_Books_Bookshelves extends Google_Collection +{ + protected $itemsType = 'Google_Service_Books_Bookshelf'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Books_ConcurrentAccessRestriction extends Google_Model +{ + public $deviceAllowed; + public $kind; + public $maxConcurrentDevices; + public $message; + public $nonce; + public $reasonCode; + public $restricted; + public $signature; + public $source; + public $timeWindowSeconds; + public $volumeId; + + public function setDeviceAllowed($deviceAllowed) + { + $this->deviceAllowed = $deviceAllowed; + } + + public function getDeviceAllowed() + { + return $this->deviceAllowed; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMaxConcurrentDevices($maxConcurrentDevices) + { + $this->maxConcurrentDevices = $maxConcurrentDevices; + } + + public function getMaxConcurrentDevices() + { + return $this->maxConcurrentDevices; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } + + public function setNonce($nonce) + { + $this->nonce = $nonce; + } + + public function getNonce() + { + return $this->nonce; + } + + public function setReasonCode($reasonCode) + { + $this->reasonCode = $reasonCode; + } + + public function getReasonCode() + { + return $this->reasonCode; + } + + public function setRestricted($restricted) + { + $this->restricted = $restricted; + } + + public function getRestricted() + { + return $this->restricted; + } + + public function setSignature($signature) + { + $this->signature = $signature; + } + + public function getSignature() + { + return $this->signature; + } + + public function setSource($source) + { + $this->source = $source; + } + + public function getSource() + { + return $this->source; + } + + public function setTimeWindowSeconds($timeWindowSeconds) + { + $this->timeWindowSeconds = $timeWindowSeconds; + } + + public function getTimeWindowSeconds() + { + return $this->timeWindowSeconds; + } + + public function setVolumeId($volumeId) + { + $this->volumeId = $volumeId; + } + + public function getVolumeId() + { + return $this->volumeId; + } +} + +class Google_Service_Books_Dictlayerdata extends Google_Model +{ + protected $commonType = 'Google_Service_Books_DictlayerdataCommon'; + protected $commonDataType = ''; + protected $dictType = 'Google_Service_Books_DictlayerdataDict'; + protected $dictDataType = ''; + public $kind; + + public function setCommon(Google_Service_Books_DictlayerdataCommon $common) + { + $this->common = $common; + } + + public function getCommon() + { + return $this->common; + } + + public function setDict(Google_Service_Books_DictlayerdataDict $dict) + { + $this->dict = $dict; + } + + public function getDict() + { + return $this->dict; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Books_DictlayerdataCommon extends Google_Model +{ + public $title; + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_Books_DictlayerdataDict extends Google_Collection +{ + protected $sourceType = 'Google_Service_Books_DictlayerdataDictSource'; + protected $sourceDataType = ''; + protected $wordsType = 'Google_Service_Books_DictlayerdataDictWords'; + protected $wordsDataType = 'array'; + + public function setSource(Google_Service_Books_DictlayerdataDictSource $source) + { + $this->source = $source; + } + + public function getSource() + { + return $this->source; + } + + public function setWords($words) + { + $this->words = $words; + } + + public function getWords() + { + return $this->words; + } +} + +class Google_Service_Books_DictlayerdataDictSource extends Google_Model +{ + public $attribution; + public $url; + + public function setAttribution($attribution) + { + $this->attribution = $attribution; + } + + public function getAttribution() + { + return $this->attribution; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Books_DictlayerdataDictWords extends Google_Collection +{ + protected $derivativesType = 'Google_Service_Books_DictlayerdataDictWordsDerivatives'; + protected $derivativesDataType = 'array'; + protected $examplesType = 'Google_Service_Books_DictlayerdataDictWordsExamples'; + protected $examplesDataType = 'array'; + protected $sensesType = 'Google_Service_Books_DictlayerdataDictWordsSenses'; + protected $sensesDataType = 'array'; + protected $sourceType = 'Google_Service_Books_DictlayerdataDictWordsSource'; + protected $sourceDataType = ''; + + public function setDerivatives($derivatives) + { + $this->derivatives = $derivatives; + } + + public function getDerivatives() + { + return $this->derivatives; + } + + public function setExamples($examples) + { + $this->examples = $examples; + } + + public function getExamples() + { + return $this->examples; + } + + public function setSenses($senses) + { + $this->senses = $senses; + } + + public function getSenses() + { + return $this->senses; + } + + public function setSource(Google_Service_Books_DictlayerdataDictWordsSource $source) + { + $this->source = $source; + } + + public function getSource() + { + return $this->source; + } +} + +class Google_Service_Books_DictlayerdataDictWordsDerivatives extends Google_Model +{ + protected $sourceType = 'Google_Service_Books_DictlayerdataDictWordsDerivativesSource'; + protected $sourceDataType = ''; + public $text; + + public function setSource(Google_Service_Books_DictlayerdataDictWordsDerivativesSource $source) + { + $this->source = $source; + } + + public function getSource() + { + return $this->source; + } + + public function setText($text) + { + $this->text = $text; + } + + public function getText() + { + return $this->text; + } +} + +class Google_Service_Books_DictlayerdataDictWordsDerivativesSource extends Google_Model +{ + public $attribution; + public $url; + + public function setAttribution($attribution) + { + $this->attribution = $attribution; + } + + public function getAttribution() + { + return $this->attribution; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Books_DictlayerdataDictWordsExamples extends Google_Model +{ + protected $sourceType = 'Google_Service_Books_DictlayerdataDictWordsExamplesSource'; + protected $sourceDataType = ''; + public $text; + + public function setSource(Google_Service_Books_DictlayerdataDictWordsExamplesSource $source) + { + $this->source = $source; + } + + public function getSource() + { + return $this->source; + } + + public function setText($text) + { + $this->text = $text; + } + + public function getText() + { + return $this->text; + } +} + +class Google_Service_Books_DictlayerdataDictWordsExamplesSource extends Google_Model +{ + public $attribution; + public $url; + + public function setAttribution($attribution) + { + $this->attribution = $attribution; + } + + public function getAttribution() + { + return $this->attribution; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Books_DictlayerdataDictWordsSenses extends Google_Collection +{ + protected $conjugationsType = 'Google_Service_Books_DictlayerdataDictWordsSensesConjugations'; + protected $conjugationsDataType = 'array'; + protected $definitionsType = 'Google_Service_Books_DictlayerdataDictWordsSensesDefinitions'; + protected $definitionsDataType = 'array'; + public $partOfSpeech; + public $pronunciation; + public $pronunciationUrl; + protected $sourceType = 'Google_Service_Books_DictlayerdataDictWordsSensesSource'; + protected $sourceDataType = ''; + public $syllabification; + protected $synonymsType = 'Google_Service_Books_DictlayerdataDictWordsSensesSynonyms'; + protected $synonymsDataType = 'array'; + + public function setConjugations($conjugations) + { + $this->conjugations = $conjugations; + } + + public function getConjugations() + { + return $this->conjugations; + } + + public function setDefinitions($definitions) + { + $this->definitions = $definitions; + } + + public function getDefinitions() + { + return $this->definitions; + } + + public function setPartOfSpeech($partOfSpeech) + { + $this->partOfSpeech = $partOfSpeech; + } + + public function getPartOfSpeech() + { + return $this->partOfSpeech; + } + + public function setPronunciation($pronunciation) + { + $this->pronunciation = $pronunciation; + } + + public function getPronunciation() + { + return $this->pronunciation; + } + + public function setPronunciationUrl($pronunciationUrl) + { + $this->pronunciationUrl = $pronunciationUrl; + } + + public function getPronunciationUrl() + { + return $this->pronunciationUrl; + } + + public function setSource(Google_Service_Books_DictlayerdataDictWordsSensesSource $source) + { + $this->source = $source; + } + + public function getSource() + { + return $this->source; + } + + public function setSyllabification($syllabification) + { + $this->syllabification = $syllabification; + } + + public function getSyllabification() + { + return $this->syllabification; + } + + public function setSynonyms($synonyms) + { + $this->synonyms = $synonyms; + } + + public function getSynonyms() + { + return $this->synonyms; + } +} + +class Google_Service_Books_DictlayerdataDictWordsSensesConjugations extends Google_Model +{ + public $type; + public $value; + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Books_DictlayerdataDictWordsSensesDefinitions extends Google_Collection +{ + public $definition; + protected $examplesType = 'Google_Service_Books_DictlayerdataDictWordsSensesDefinitionsExamples'; + protected $examplesDataType = 'array'; + + public function setDefinition($definition) + { + $this->definition = $definition; + } + + public function getDefinition() + { + return $this->definition; + } + + public function setExamples($examples) + { + $this->examples = $examples; + } + + public function getExamples() + { + return $this->examples; + } +} + +class Google_Service_Books_DictlayerdataDictWordsSensesDefinitionsExamples extends Google_Model +{ + protected $sourceType = 'Google_Service_Books_DictlayerdataDictWordsSensesDefinitionsExamplesSource'; + protected $sourceDataType = ''; + public $text; + + public function setSource(Google_Service_Books_DictlayerdataDictWordsSensesDefinitionsExamplesSource $source) + { + $this->source = $source; + } + + public function getSource() + { + return $this->source; + } + + public function setText($text) + { + $this->text = $text; + } + + public function getText() + { + return $this->text; + } +} + +class Google_Service_Books_DictlayerdataDictWordsSensesDefinitionsExamplesSource extends Google_Model +{ + public $attribution; + public $url; + + public function setAttribution($attribution) + { + $this->attribution = $attribution; + } + + public function getAttribution() + { + return $this->attribution; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Books_DictlayerdataDictWordsSensesSource extends Google_Model +{ + public $attribution; + public $url; + + public function setAttribution($attribution) + { + $this->attribution = $attribution; + } + + public function getAttribution() + { + return $this->attribution; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Books_DictlayerdataDictWordsSensesSynonyms extends Google_Model +{ + protected $sourceType = 'Google_Service_Books_DictlayerdataDictWordsSensesSynonymsSource'; + protected $sourceDataType = ''; + public $text; + + public function setSource(Google_Service_Books_DictlayerdataDictWordsSensesSynonymsSource $source) + { + $this->source = $source; + } + + public function getSource() + { + return $this->source; + } + + public function setText($text) + { + $this->text = $text; + } + + public function getText() + { + return $this->text; + } +} + +class Google_Service_Books_DictlayerdataDictWordsSensesSynonymsSource extends Google_Model +{ + public $attribution; + public $url; + + public function setAttribution($attribution) + { + $this->attribution = $attribution; + } + + public function getAttribution() + { + return $this->attribution; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Books_DictlayerdataDictWordsSource extends Google_Model +{ + public $attribution; + public $url; + + public function setAttribution($attribution) + { + $this->attribution = $attribution; + } + + public function getAttribution() + { + return $this->attribution; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Books_DownloadAccessRestriction extends Google_Model +{ + public $deviceAllowed; + public $downloadsAcquired; + public $justAcquired; + public $kind; + public $maxDownloadDevices; + public $message; + public $nonce; + public $reasonCode; + public $restricted; + public $signature; + public $source; + public $volumeId; + + public function setDeviceAllowed($deviceAllowed) + { + $this->deviceAllowed = $deviceAllowed; + } + + public function getDeviceAllowed() + { + return $this->deviceAllowed; + } + + public function setDownloadsAcquired($downloadsAcquired) + { + $this->downloadsAcquired = $downloadsAcquired; + } + + public function getDownloadsAcquired() + { + return $this->downloadsAcquired; + } + + public function setJustAcquired($justAcquired) + { + $this->justAcquired = $justAcquired; + } + + public function getJustAcquired() + { + return $this->justAcquired; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMaxDownloadDevices($maxDownloadDevices) + { + $this->maxDownloadDevices = $maxDownloadDevices; + } + + public function getMaxDownloadDevices() + { + return $this->maxDownloadDevices; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } + + public function setNonce($nonce) + { + $this->nonce = $nonce; + } + + public function getNonce() + { + return $this->nonce; + } + + public function setReasonCode($reasonCode) + { + $this->reasonCode = $reasonCode; + } + + public function getReasonCode() + { + return $this->reasonCode; + } + + public function setRestricted($restricted) + { + $this->restricted = $restricted; + } + + public function getRestricted() + { + return $this->restricted; + } + + public function setSignature($signature) + { + $this->signature = $signature; + } + + public function getSignature() + { + return $this->signature; + } + + public function setSource($source) + { + $this->source = $source; + } + + public function getSource() + { + return $this->source; + } + + public function setVolumeId($volumeId) + { + $this->volumeId = $volumeId; + } + + public function getVolumeId() + { + return $this->volumeId; + } +} + +class Google_Service_Books_DownloadAccesses extends Google_Collection +{ + protected $downloadAccessListType = 'Google_Service_Books_DownloadAccessRestriction'; + protected $downloadAccessListDataType = 'array'; + public $kind; + + public function setDownloadAccessList($downloadAccessList) + { + $this->downloadAccessList = $downloadAccessList; + } + + public function getDownloadAccessList() + { + return $this->downloadAccessList; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Books_Geolayerdata extends Google_Model +{ + protected $commonType = 'Google_Service_Books_GeolayerdataCommon'; + protected $commonDataType = ''; + protected $geoType = 'Google_Service_Books_GeolayerdataGeo'; + protected $geoDataType = ''; + public $kind; + + public function setCommon(Google_Service_Books_GeolayerdataCommon $common) + { + $this->common = $common; + } + + public function getCommon() + { + return $this->common; + } + + public function setGeo(Google_Service_Books_GeolayerdataGeo $geo) + { + $this->geo = $geo; + } + + public function getGeo() + { + return $this->geo; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Books_GeolayerdataCommon extends Google_Model +{ + public $lang; + public $previewImageUrl; + public $snippet; + public $snippetUrl; + public $title; + + public function setLang($lang) + { + $this->lang = $lang; + } + + public function getLang() + { + return $this->lang; + } + + public function setPreviewImageUrl($previewImageUrl) + { + $this->previewImageUrl = $previewImageUrl; + } + + public function getPreviewImageUrl() + { + return $this->previewImageUrl; + } + + public function setSnippet($snippet) + { + $this->snippet = $snippet; + } + + public function getSnippet() + { + return $this->snippet; + } + + public function setSnippetUrl($snippetUrl) + { + $this->snippetUrl = $snippetUrl; + } + + public function getSnippetUrl() + { + return $this->snippetUrl; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_Books_GeolayerdataGeo extends Google_Collection +{ + protected $boundaryType = 'Google_Service_Books_GeolayerdataGeoBoundary'; + protected $boundaryDataType = 'array'; + public $cachePolicy; + public $countryCode; + public $latitude; + public $longitude; + public $mapType; + protected $viewportType = 'Google_Service_Books_GeolayerdataGeoViewport'; + protected $viewportDataType = ''; + public $zoom; + + public function setBoundary($boundary) + { + $this->boundary = $boundary; + } + + public function getBoundary() + { + return $this->boundary; + } + + public function setCachePolicy($cachePolicy) + { + $this->cachePolicy = $cachePolicy; + } + + public function getCachePolicy() + { + return $this->cachePolicy; + } + + public function setCountryCode($countryCode) + { + $this->countryCode = $countryCode; + } + + public function getCountryCode() + { + return $this->countryCode; + } + + public function setLatitude($latitude) + { + $this->latitude = $latitude; + } + + public function getLatitude() + { + return $this->latitude; + } + + public function setLongitude($longitude) + { + $this->longitude = $longitude; + } + + public function getLongitude() + { + return $this->longitude; + } + + public function setMapType($mapType) + { + $this->mapType = $mapType; + } + + public function getMapType() + { + return $this->mapType; + } + + public function setViewport(Google_Service_Books_GeolayerdataGeoViewport $viewport) + { + $this->viewport = $viewport; + } + + public function getViewport() + { + return $this->viewport; + } + + public function setZoom($zoom) + { + $this->zoom = $zoom; + } + + public function getZoom() + { + return $this->zoom; + } +} + +class Google_Service_Books_GeolayerdataGeoBoundary extends Google_Model +{ + public $latitude; + public $longitude; + + public function setLatitude($latitude) + { + $this->latitude = $latitude; + } + + public function getLatitude() + { + return $this->latitude; + } + + public function setLongitude($longitude) + { + $this->longitude = $longitude; + } + + public function getLongitude() + { + return $this->longitude; + } +} + +class Google_Service_Books_GeolayerdataGeoViewport extends Google_Model +{ + protected $hiType = 'Google_Service_Books_GeolayerdataGeoViewportHi'; + protected $hiDataType = ''; + protected $loType = 'Google_Service_Books_GeolayerdataGeoViewportLo'; + protected $loDataType = ''; + + public function setHi(Google_Service_Books_GeolayerdataGeoViewportHi $hi) + { + $this->hi = $hi; + } + + public function getHi() + { + return $this->hi; + } + + public function setLo(Google_Service_Books_GeolayerdataGeoViewportLo $lo) + { + $this->lo = $lo; + } + + public function getLo() + { + return $this->lo; + } +} + +class Google_Service_Books_GeolayerdataGeoViewportHi extends Google_Model +{ + public $latitude; + public $longitude; + + public function setLatitude($latitude) + { + $this->latitude = $latitude; + } + + public function getLatitude() + { + return $this->latitude; + } + + public function setLongitude($longitude) + { + $this->longitude = $longitude; + } + + public function getLongitude() + { + return $this->longitude; + } +} + +class Google_Service_Books_GeolayerdataGeoViewportLo extends Google_Model +{ + public $latitude; + public $longitude; + + public function setLatitude($latitude) + { + $this->latitude = $latitude; + } + + public function getLatitude() + { + return $this->latitude; + } + + public function setLongitude($longitude) + { + $this->longitude = $longitude; + } + + public function getLongitude() + { + return $this->longitude; + } +} + +class Google_Service_Books_Layersummaries extends Google_Collection +{ + protected $itemsType = 'Google_Service_Books_Layersummary'; + protected $itemsDataType = 'array'; + public $kind; + public $totalItems; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_Books_Layersummary extends Google_Collection +{ + public $annotationCount; + public $annotationTypes; + public $annotationsDataLink; + public $annotationsLink; + public $contentVersion; + public $dataCount; + public $id; + public $kind; + public $layerId; + public $selfLink; + public $updated; + public $volumeAnnotationsVersion; + public $volumeId; + + public function setAnnotationCount($annotationCount) + { + $this->annotationCount = $annotationCount; + } + + public function getAnnotationCount() + { + return $this->annotationCount; + } + + public function setAnnotationTypes($annotationTypes) + { + $this->annotationTypes = $annotationTypes; + } + + public function getAnnotationTypes() + { + return $this->annotationTypes; + } + + public function setAnnotationsDataLink($annotationsDataLink) + { + $this->annotationsDataLink = $annotationsDataLink; + } + + public function getAnnotationsDataLink() + { + return $this->annotationsDataLink; + } + + public function setAnnotationsLink($annotationsLink) + { + $this->annotationsLink = $annotationsLink; + } + + public function getAnnotationsLink() + { + return $this->annotationsLink; + } + + public function setContentVersion($contentVersion) + { + $this->contentVersion = $contentVersion; + } + + public function getContentVersion() + { + return $this->contentVersion; + } + + public function setDataCount($dataCount) + { + $this->dataCount = $dataCount; + } + + public function getDataCount() + { + return $this->dataCount; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLayerId($layerId) + { + $this->layerId = $layerId; + } + + public function getLayerId() + { + return $this->layerId; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setVolumeAnnotationsVersion($volumeAnnotationsVersion) + { + $this->volumeAnnotationsVersion = $volumeAnnotationsVersion; + } + + public function getVolumeAnnotationsVersion() + { + return $this->volumeAnnotationsVersion; + } + + public function setVolumeId($volumeId) + { + $this->volumeId = $volumeId; + } + + public function getVolumeId() + { + return $this->volumeId; + } +} + +class Google_Service_Books_Offers extends Google_Collection +{ + protected $itemsType = 'Google_Service_Books_OffersItems'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Books_OffersItems extends Google_Collection +{ + public $artUrl; + public $id; + protected $itemsType = 'Google_Service_Books_OffersItemsItems'; + protected $itemsDataType = 'array'; + + public function setArtUrl($artUrl) + { + $this->artUrl = $artUrl; + } + + public function getArtUrl() + { + return $this->artUrl; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } +} + +class Google_Service_Books_OffersItemsItems extends Google_Model +{ + public $author; + public $canonicalVolumeLink; + public $coverUrl; + public $description; + public $title; + public $volumeId; + + public function setAuthor($author) + { + $this->author = $author; + } + + public function getAuthor() + { + return $this->author; + } + + public function setCanonicalVolumeLink($canonicalVolumeLink) + { + $this->canonicalVolumeLink = $canonicalVolumeLink; + } + + public function getCanonicalVolumeLink() + { + return $this->canonicalVolumeLink; + } + + public function setCoverUrl($coverUrl) + { + $this->coverUrl = $coverUrl; + } + + public function getCoverUrl() + { + return $this->coverUrl; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setVolumeId($volumeId) + { + $this->volumeId = $volumeId; + } + + public function getVolumeId() + { + return $this->volumeId; + } +} + +class Google_Service_Books_ReadingPosition extends Google_Model +{ + public $epubCfiPosition; + public $gbImagePosition; + public $gbTextPosition; + public $kind; + public $pdfPosition; + public $updated; + public $volumeId; + + public function setEpubCfiPosition($epubCfiPosition) + { + $this->epubCfiPosition = $epubCfiPosition; + } + + public function getEpubCfiPosition() + { + return $this->epubCfiPosition; + } + + public function setGbImagePosition($gbImagePosition) + { + $this->gbImagePosition = $gbImagePosition; + } + + public function getGbImagePosition() + { + return $this->gbImagePosition; + } + + public function setGbTextPosition($gbTextPosition) + { + $this->gbTextPosition = $gbTextPosition; + } + + public function getGbTextPosition() + { + return $this->gbTextPosition; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPdfPosition($pdfPosition) + { + $this->pdfPosition = $pdfPosition; + } + + public function getPdfPosition() + { + return $this->pdfPosition; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setVolumeId($volumeId) + { + $this->volumeId = $volumeId; + } + + public function getVolumeId() + { + return $this->volumeId; + } +} + +class Google_Service_Books_RequestAccess extends Google_Model +{ + protected $concurrentAccessType = 'Google_Service_Books_ConcurrentAccessRestriction'; + protected $concurrentAccessDataType = ''; + protected $downloadAccessType = 'Google_Service_Books_DownloadAccessRestriction'; + protected $downloadAccessDataType = ''; + public $kind; + + public function setConcurrentAccess(Google_Service_Books_ConcurrentAccessRestriction $concurrentAccess) + { + $this->concurrentAccess = $concurrentAccess; + } + + public function getConcurrentAccess() + { + return $this->concurrentAccess; + } + + public function setDownloadAccess(Google_Service_Books_DownloadAccessRestriction $downloadAccess) + { + $this->downloadAccess = $downloadAccess; + } + + public function getDownloadAccess() + { + return $this->downloadAccess; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Books_Review extends Google_Model +{ + protected $authorType = 'Google_Service_Books_ReviewAuthor'; + protected $authorDataType = ''; + public $content; + public $date; + public $fullTextUrl; + public $kind; + public $rating; + protected $sourceType = 'Google_Service_Books_ReviewSource'; + protected $sourceDataType = ''; + public $title; + public $type; + public $volumeId; + + public function setAuthor(Google_Service_Books_ReviewAuthor $author) + { + $this->author = $author; + } + + public function getAuthor() + { + return $this->author; + } + + public function setContent($content) + { + $this->content = $content; + } + + public function getContent() + { + return $this->content; + } + + public function setDate($date) + { + $this->date = $date; + } + + public function getDate() + { + return $this->date; + } + + public function setFullTextUrl($fullTextUrl) + { + $this->fullTextUrl = $fullTextUrl; + } + + public function getFullTextUrl() + { + return $this->fullTextUrl; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRating($rating) + { + $this->rating = $rating; + } + + public function getRating() + { + return $this->rating; + } + + public function setSource(Google_Service_Books_ReviewSource $source) + { + $this->source = $source; + } + + public function getSource() + { + return $this->source; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setVolumeId($volumeId) + { + $this->volumeId = $volumeId; + } + + public function getVolumeId() + { + return $this->volumeId; + } +} + +class Google_Service_Books_ReviewAuthor extends Google_Model +{ + public $displayName; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } +} + +class Google_Service_Books_ReviewSource extends Google_Model +{ + public $description; + public $extraDescription; + public $url; + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setExtraDescription($extraDescription) + { + $this->extraDescription = $extraDescription; + } + + public function getExtraDescription() + { + return $this->extraDescription; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Books_Volume extends Google_Model +{ + protected $accessInfoType = 'Google_Service_Books_VolumeAccessInfo'; + protected $accessInfoDataType = ''; + public $etag; + public $id; + public $kind; + protected $layerInfoType = 'Google_Service_Books_VolumeLayerInfo'; + protected $layerInfoDataType = ''; + protected $recommendedInfoType = 'Google_Service_Books_VolumeRecommendedInfo'; + protected $recommendedInfoDataType = ''; + protected $saleInfoType = 'Google_Service_Books_VolumeSaleInfo'; + protected $saleInfoDataType = ''; + protected $searchInfoType = 'Google_Service_Books_VolumeSearchInfo'; + protected $searchInfoDataType = ''; + public $selfLink; + protected $userInfoType = 'Google_Service_Books_VolumeUserInfo'; + protected $userInfoDataType = ''; + protected $volumeInfoType = 'Google_Service_Books_VolumeVolumeInfo'; + protected $volumeInfoDataType = ''; + + public function setAccessInfo(Google_Service_Books_VolumeAccessInfo $accessInfo) + { + $this->accessInfo = $accessInfo; + } + + public function getAccessInfo() + { + return $this->accessInfo; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLayerInfo(Google_Service_Books_VolumeLayerInfo $layerInfo) + { + $this->layerInfo = $layerInfo; + } + + public function getLayerInfo() + { + return $this->layerInfo; + } + + public function setRecommendedInfo(Google_Service_Books_VolumeRecommendedInfo $recommendedInfo) + { + $this->recommendedInfo = $recommendedInfo; + } + + public function getRecommendedInfo() + { + return $this->recommendedInfo; + } + + public function setSaleInfo(Google_Service_Books_VolumeSaleInfo $saleInfo) + { + $this->saleInfo = $saleInfo; + } + + public function getSaleInfo() + { + return $this->saleInfo; + } + + public function setSearchInfo(Google_Service_Books_VolumeSearchInfo $searchInfo) + { + $this->searchInfo = $searchInfo; + } + + public function getSearchInfo() + { + return $this->searchInfo; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setUserInfo(Google_Service_Books_VolumeUserInfo $userInfo) + { + $this->userInfo = $userInfo; + } + + public function getUserInfo() + { + return $this->userInfo; + } + + public function setVolumeInfo(Google_Service_Books_VolumeVolumeInfo $volumeInfo) + { + $this->volumeInfo = $volumeInfo; + } + + public function getVolumeInfo() + { + return $this->volumeInfo; + } +} + +class Google_Service_Books_VolumeAccessInfo extends Google_Model +{ + public $accessViewStatus; + public $country; + protected $downloadAccessType = 'Google_Service_Books_DownloadAccessRestriction'; + protected $downloadAccessDataType = ''; + public $driveImportedContentLink; + public $embeddable; + protected $epubType = 'Google_Service_Books_VolumeAccessInfoEpub'; + protected $epubDataType = ''; + public $explicitOfflineLicenseManagement; + protected $pdfType = 'Google_Service_Books_VolumeAccessInfoPdf'; + protected $pdfDataType = ''; + public $publicDomain; + public $quoteSharingAllowed; + public $textToSpeechPermission; + public $viewOrderUrl; + public $viewability; + public $webReaderLink; + + public function setAccessViewStatus($accessViewStatus) + { + $this->accessViewStatus = $accessViewStatus; + } + + public function getAccessViewStatus() + { + return $this->accessViewStatus; + } + + public function setCountry($country) + { + $this->country = $country; + } + + public function getCountry() + { + return $this->country; + } + + public function setDownloadAccess(Google_Service_Books_DownloadAccessRestriction $downloadAccess) + { + $this->downloadAccess = $downloadAccess; + } + + public function getDownloadAccess() + { + return $this->downloadAccess; + } + + public function setDriveImportedContentLink($driveImportedContentLink) + { + $this->driveImportedContentLink = $driveImportedContentLink; + } + + public function getDriveImportedContentLink() + { + return $this->driveImportedContentLink; + } + + public function setEmbeddable($embeddable) + { + $this->embeddable = $embeddable; + } + + public function getEmbeddable() + { + return $this->embeddable; + } + + public function setEpub(Google_Service_Books_VolumeAccessInfoEpub $epub) + { + $this->epub = $epub; + } + + public function getEpub() + { + return $this->epub; + } + + public function setExplicitOfflineLicenseManagement($explicitOfflineLicenseManagement) + { + $this->explicitOfflineLicenseManagement = $explicitOfflineLicenseManagement; + } + + public function getExplicitOfflineLicenseManagement() + { + return $this->explicitOfflineLicenseManagement; + } + + public function setPdf(Google_Service_Books_VolumeAccessInfoPdf $pdf) + { + $this->pdf = $pdf; + } + + public function getPdf() + { + return $this->pdf; + } + + public function setPublicDomain($publicDomain) + { + $this->publicDomain = $publicDomain; + } + + public function getPublicDomain() + { + return $this->publicDomain; + } + + public function setQuoteSharingAllowed($quoteSharingAllowed) + { + $this->quoteSharingAllowed = $quoteSharingAllowed; + } + + public function getQuoteSharingAllowed() + { + return $this->quoteSharingAllowed; + } + + public function setTextToSpeechPermission($textToSpeechPermission) + { + $this->textToSpeechPermission = $textToSpeechPermission; + } + + public function getTextToSpeechPermission() + { + return $this->textToSpeechPermission; + } + + public function setViewOrderUrl($viewOrderUrl) + { + $this->viewOrderUrl = $viewOrderUrl; + } + + public function getViewOrderUrl() + { + return $this->viewOrderUrl; + } + + public function setViewability($viewability) + { + $this->viewability = $viewability; + } + + public function getViewability() + { + return $this->viewability; + } + + public function setWebReaderLink($webReaderLink) + { + $this->webReaderLink = $webReaderLink; + } + + public function getWebReaderLink() + { + return $this->webReaderLink; + } +} + +class Google_Service_Books_VolumeAccessInfoEpub extends Google_Model +{ + public $acsTokenLink; + public $downloadLink; + public $isAvailable; + + public function setAcsTokenLink($acsTokenLink) + { + $this->acsTokenLink = $acsTokenLink; + } + + public function getAcsTokenLink() + { + return $this->acsTokenLink; + } + + public function setDownloadLink($downloadLink) + { + $this->downloadLink = $downloadLink; + } + + public function getDownloadLink() + { + return $this->downloadLink; + } + + public function setIsAvailable($isAvailable) + { + $this->isAvailable = $isAvailable; + } + + public function getIsAvailable() + { + return $this->isAvailable; + } +} + +class Google_Service_Books_VolumeAccessInfoPdf extends Google_Model +{ + public $acsTokenLink; + public $downloadLink; + public $isAvailable; + + public function setAcsTokenLink($acsTokenLink) + { + $this->acsTokenLink = $acsTokenLink; + } + + public function getAcsTokenLink() + { + return $this->acsTokenLink; + } + + public function setDownloadLink($downloadLink) + { + $this->downloadLink = $downloadLink; + } + + public function getDownloadLink() + { + return $this->downloadLink; + } + + public function setIsAvailable($isAvailable) + { + $this->isAvailable = $isAvailable; + } + + public function getIsAvailable() + { + return $this->isAvailable; + } +} + +class Google_Service_Books_VolumeLayerInfo extends Google_Collection +{ + protected $layersType = 'Google_Service_Books_VolumeLayerInfoLayers'; + protected $layersDataType = 'array'; + + public function setLayers($layers) + { + $this->layers = $layers; + } + + public function getLayers() + { + return $this->layers; + } +} + +class Google_Service_Books_VolumeLayerInfoLayers extends Google_Model +{ + public $layerId; + public $volumeAnnotationsVersion; + + public function setLayerId($layerId) + { + $this->layerId = $layerId; + } + + public function getLayerId() + { + return $this->layerId; + } + + public function setVolumeAnnotationsVersion($volumeAnnotationsVersion) + { + $this->volumeAnnotationsVersion = $volumeAnnotationsVersion; + } + + public function getVolumeAnnotationsVersion() + { + return $this->volumeAnnotationsVersion; + } +} + +class Google_Service_Books_VolumeRecommendedInfo extends Google_Model +{ + public $explanation; + + public function setExplanation($explanation) + { + $this->explanation = $explanation; + } + + public function getExplanation() + { + return $this->explanation; + } +} + +class Google_Service_Books_VolumeSaleInfo extends Google_Collection +{ + public $buyLink; + public $country; + public $isEbook; + protected $listPriceType = 'Google_Service_Books_VolumeSaleInfoListPrice'; + protected $listPriceDataType = ''; + protected $offersType = 'Google_Service_Books_VolumeSaleInfoOffers'; + protected $offersDataType = 'array'; + public $onSaleDate; + protected $retailPriceType = 'Google_Service_Books_VolumeSaleInfoRetailPrice'; + protected $retailPriceDataType = ''; + public $saleability; + + public function setBuyLink($buyLink) + { + $this->buyLink = $buyLink; + } + + public function getBuyLink() + { + return $this->buyLink; + } + + public function setCountry($country) + { + $this->country = $country; + } + + public function getCountry() + { + return $this->country; + } + + public function setIsEbook($isEbook) + { + $this->isEbook = $isEbook; + } + + public function getIsEbook() + { + return $this->isEbook; + } + + public function setListPrice(Google_Service_Books_VolumeSaleInfoListPrice $listPrice) + { + $this->listPrice = $listPrice; + } + + public function getListPrice() + { + return $this->listPrice; + } + + public function setOffers($offers) + { + $this->offers = $offers; + } + + public function getOffers() + { + return $this->offers; + } + + public function setOnSaleDate($onSaleDate) + { + $this->onSaleDate = $onSaleDate; + } + + public function getOnSaleDate() + { + return $this->onSaleDate; + } + + public function setRetailPrice(Google_Service_Books_VolumeSaleInfoRetailPrice $retailPrice) + { + $this->retailPrice = $retailPrice; + } + + public function getRetailPrice() + { + return $this->retailPrice; + } + + public function setSaleability($saleability) + { + $this->saleability = $saleability; + } + + public function getSaleability() + { + return $this->saleability; + } +} + +class Google_Service_Books_VolumeSaleInfoListPrice extends Google_Model +{ + public $amount; + public $currencyCode; + + public function setAmount($amount) + { + $this->amount = $amount; + } + + public function getAmount() + { + return $this->amount; + } + + public function setCurrencyCode($currencyCode) + { + $this->currencyCode = $currencyCode; + } + + public function getCurrencyCode() + { + return $this->currencyCode; + } +} + +class Google_Service_Books_VolumeSaleInfoOffers extends Google_Model +{ + public $finskyOfferType; + protected $listPriceType = 'Google_Service_Books_VolumeSaleInfoOffersListPrice'; + protected $listPriceDataType = ''; + protected $rentalDurationType = 'Google_Service_Books_VolumeSaleInfoOffersRentalDuration'; + protected $rentalDurationDataType = ''; + protected $retailPriceType = 'Google_Service_Books_VolumeSaleInfoOffersRetailPrice'; + protected $retailPriceDataType = ''; + + public function setFinskyOfferType($finskyOfferType) + { + $this->finskyOfferType = $finskyOfferType; + } + + public function getFinskyOfferType() + { + return $this->finskyOfferType; + } + + public function setListPrice(Google_Service_Books_VolumeSaleInfoOffersListPrice $listPrice) + { + $this->listPrice = $listPrice; + } + + public function getListPrice() + { + return $this->listPrice; + } + + public function setRentalDuration(Google_Service_Books_VolumeSaleInfoOffersRentalDuration $rentalDuration) + { + $this->rentalDuration = $rentalDuration; + } + + public function getRentalDuration() + { + return $this->rentalDuration; + } + + public function setRetailPrice(Google_Service_Books_VolumeSaleInfoOffersRetailPrice $retailPrice) + { + $this->retailPrice = $retailPrice; + } + + public function getRetailPrice() + { + return $this->retailPrice; + } +} + +class Google_Service_Books_VolumeSaleInfoOffersListPrice extends Google_Model +{ + public $amountInMicros; + public $currencyCode; + + public function setAmountInMicros($amountInMicros) + { + $this->amountInMicros = $amountInMicros; + } + + public function getAmountInMicros() + { + return $this->amountInMicros; + } + + public function setCurrencyCode($currencyCode) + { + $this->currencyCode = $currencyCode; + } + + public function getCurrencyCode() + { + return $this->currencyCode; + } +} + +class Google_Service_Books_VolumeSaleInfoOffersRentalDuration extends Google_Model +{ + public $count; + public $unit; + + public function setCount($count) + { + $this->count = $count; + } + + public function getCount() + { + return $this->count; + } + + public function setUnit($unit) + { + $this->unit = $unit; + } + + public function getUnit() + { + return $this->unit; + } +} + +class Google_Service_Books_VolumeSaleInfoOffersRetailPrice extends Google_Model +{ + public $amountInMicros; + public $currencyCode; + + public function setAmountInMicros($amountInMicros) + { + $this->amountInMicros = $amountInMicros; + } + + public function getAmountInMicros() + { + return $this->amountInMicros; + } + + public function setCurrencyCode($currencyCode) + { + $this->currencyCode = $currencyCode; + } + + public function getCurrencyCode() + { + return $this->currencyCode; + } +} + +class Google_Service_Books_VolumeSaleInfoRetailPrice extends Google_Model +{ + public $amount; + public $currencyCode; + + public function setAmount($amount) + { + $this->amount = $amount; + } + + public function getAmount() + { + return $this->amount; + } + + public function setCurrencyCode($currencyCode) + { + $this->currencyCode = $currencyCode; + } + + public function getCurrencyCode() + { + return $this->currencyCode; + } +} + +class Google_Service_Books_VolumeSearchInfo extends Google_Model +{ + public $textSnippet; + + public function setTextSnippet($textSnippet) + { + $this->textSnippet = $textSnippet; + } + + public function getTextSnippet() + { + return $this->textSnippet; + } +} + +class Google_Service_Books_VolumeUserInfo extends Google_Model +{ + protected $copyType = 'Google_Service_Books_VolumeUserInfoCopy'; + protected $copyDataType = ''; + public $isInMyBooks; + public $isPreordered; + public $isPurchased; + public $isUploaded; + protected $readingPositionType = 'Google_Service_Books_ReadingPosition'; + protected $readingPositionDataType = ''; + protected $rentalPeriodType = 'Google_Service_Books_VolumeUserInfoRentalPeriod'; + protected $rentalPeriodDataType = ''; + public $rentalState; + protected $reviewType = 'Google_Service_Books_Review'; + protected $reviewDataType = ''; + public $updated; + protected $userUploadedVolumeInfoType = 'Google_Service_Books_VolumeUserInfoUserUploadedVolumeInfo'; + protected $userUploadedVolumeInfoDataType = ''; + + public function setCopy(Google_Service_Books_VolumeUserInfoCopy $copy) + { + $this->copy = $copy; + } + + public function getCopy() + { + return $this->copy; + } + + public function setIsInMyBooks($isInMyBooks) + { + $this->isInMyBooks = $isInMyBooks; + } + + public function getIsInMyBooks() + { + return $this->isInMyBooks; + } + + public function setIsPreordered($isPreordered) + { + $this->isPreordered = $isPreordered; + } + + public function getIsPreordered() + { + return $this->isPreordered; + } + + public function setIsPurchased($isPurchased) + { + $this->isPurchased = $isPurchased; + } + + public function getIsPurchased() + { + return $this->isPurchased; + } + + public function setIsUploaded($isUploaded) + { + $this->isUploaded = $isUploaded; + } + + public function getIsUploaded() + { + return $this->isUploaded; + } + + public function setReadingPosition(Google_Service_Books_ReadingPosition $readingPosition) + { + $this->readingPosition = $readingPosition; + } + + public function getReadingPosition() + { + return $this->readingPosition; + } + + public function setRentalPeriod(Google_Service_Books_VolumeUserInfoRentalPeriod $rentalPeriod) + { + $this->rentalPeriod = $rentalPeriod; + } + + public function getRentalPeriod() + { + return $this->rentalPeriod; + } + + public function setRentalState($rentalState) + { + $this->rentalState = $rentalState; + } + + public function getRentalState() + { + return $this->rentalState; + } + + public function setReview(Google_Service_Books_Review $review) + { + $this->review = $review; + } + + public function getReview() + { + return $this->review; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setUserUploadedVolumeInfo(Google_Service_Books_VolumeUserInfoUserUploadedVolumeInfo $userUploadedVolumeInfo) + { + $this->userUploadedVolumeInfo = $userUploadedVolumeInfo; + } + + public function getUserUploadedVolumeInfo() + { + return $this->userUploadedVolumeInfo; + } +} + +class Google_Service_Books_VolumeUserInfoCopy extends Google_Model +{ + public $allowedCharacterCount; + public $limitType; + public $remainingCharacterCount; + public $updated; + + public function setAllowedCharacterCount($allowedCharacterCount) + { + $this->allowedCharacterCount = $allowedCharacterCount; + } + + public function getAllowedCharacterCount() + { + return $this->allowedCharacterCount; + } + + public function setLimitType($limitType) + { + $this->limitType = $limitType; + } + + public function getLimitType() + { + return $this->limitType; + } + + public function setRemainingCharacterCount($remainingCharacterCount) + { + $this->remainingCharacterCount = $remainingCharacterCount; + } + + public function getRemainingCharacterCount() + { + return $this->remainingCharacterCount; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } +} + +class Google_Service_Books_VolumeUserInfoRentalPeriod extends Google_Model +{ + public $endUtcSec; + public $startUtcSec; + + public function setEndUtcSec($endUtcSec) + { + $this->endUtcSec = $endUtcSec; + } + + public function getEndUtcSec() + { + return $this->endUtcSec; + } + + public function setStartUtcSec($startUtcSec) + { + $this->startUtcSec = $startUtcSec; + } + + public function getStartUtcSec() + { + return $this->startUtcSec; + } +} + +class Google_Service_Books_VolumeUserInfoUserUploadedVolumeInfo extends Google_Model +{ + public $processingState; + + public function setProcessingState($processingState) + { + $this->processingState = $processingState; + } + + public function getProcessingState() + { + return $this->processingState; + } +} + +class Google_Service_Books_VolumeVolumeInfo extends Google_Collection +{ + public $authors; + public $averageRating; + public $canonicalVolumeLink; + public $categories; + public $contentVersion; + public $description; + protected $dimensionsType = 'Google_Service_Books_VolumeVolumeInfoDimensions'; + protected $dimensionsDataType = ''; + protected $imageLinksType = 'Google_Service_Books_VolumeVolumeInfoImageLinks'; + protected $imageLinksDataType = ''; + protected $industryIdentifiersType = 'Google_Service_Books_VolumeVolumeInfoIndustryIdentifiers'; + protected $industryIdentifiersDataType = 'array'; + public $infoLink; + public $language; + public $mainCategory; + public $pageCount; + public $previewLink; + public $printType; + public $printedPageCount; + public $publishedDate; + public $publisher; + public $ratingsCount; + public $readingModes; + public $subtitle; + public $title; + + public function setAuthors($authors) + { + $this->authors = $authors; + } + + public function getAuthors() + { + return $this->authors; + } + + public function setAverageRating($averageRating) + { + $this->averageRating = $averageRating; + } + + public function getAverageRating() + { + return $this->averageRating; + } + + public function setCanonicalVolumeLink($canonicalVolumeLink) + { + $this->canonicalVolumeLink = $canonicalVolumeLink; + } + + public function getCanonicalVolumeLink() + { + return $this->canonicalVolumeLink; + } + + public function setCategories($categories) + { + $this->categories = $categories; + } + + public function getCategories() + { + return $this->categories; + } + + public function setContentVersion($contentVersion) + { + $this->contentVersion = $contentVersion; + } + + public function getContentVersion() + { + return $this->contentVersion; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDimensions(Google_Service_Books_VolumeVolumeInfoDimensions $dimensions) + { + $this->dimensions = $dimensions; + } + + public function getDimensions() + { + return $this->dimensions; + } + + public function setImageLinks(Google_Service_Books_VolumeVolumeInfoImageLinks $imageLinks) + { + $this->imageLinks = $imageLinks; + } + + public function getImageLinks() + { + return $this->imageLinks; + } + + public function setIndustryIdentifiers($industryIdentifiers) + { + $this->industryIdentifiers = $industryIdentifiers; + } + + public function getIndustryIdentifiers() + { + return $this->industryIdentifiers; + } + + public function setInfoLink($infoLink) + { + $this->infoLink = $infoLink; + } + + public function getInfoLink() + { + return $this->infoLink; + } + + public function setLanguage($language) + { + $this->language = $language; + } + + public function getLanguage() + { + return $this->language; + } + + public function setMainCategory($mainCategory) + { + $this->mainCategory = $mainCategory; + } + + public function getMainCategory() + { + return $this->mainCategory; + } + + public function setPageCount($pageCount) + { + $this->pageCount = $pageCount; + } + + public function getPageCount() + { + return $this->pageCount; + } + + public function setPreviewLink($previewLink) + { + $this->previewLink = $previewLink; + } + + public function getPreviewLink() + { + return $this->previewLink; + } + + public function setPrintType($printType) + { + $this->printType = $printType; + } + + public function getPrintType() + { + return $this->printType; + } + + public function setPrintedPageCount($printedPageCount) + { + $this->printedPageCount = $printedPageCount; + } + + public function getPrintedPageCount() + { + return $this->printedPageCount; + } + + public function setPublishedDate($publishedDate) + { + $this->publishedDate = $publishedDate; + } + + public function getPublishedDate() + { + return $this->publishedDate; + } + + public function setPublisher($publisher) + { + $this->publisher = $publisher; + } + + public function getPublisher() + { + return $this->publisher; + } + + public function setRatingsCount($ratingsCount) + { + $this->ratingsCount = $ratingsCount; + } + + public function getRatingsCount() + { + return $this->ratingsCount; + } + + public function setReadingModes($readingModes) + { + $this->readingModes = $readingModes; + } + + public function getReadingModes() + { + return $this->readingModes; + } + + public function setSubtitle($subtitle) + { + $this->subtitle = $subtitle; + } + + public function getSubtitle() + { + return $this->subtitle; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_Books_VolumeVolumeInfoDimensions extends Google_Model +{ + public $height; + public $thickness; + public $width; + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setThickness($thickness) + { + $this->thickness = $thickness; + } + + public function getThickness() + { + return $this->thickness; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_Books_VolumeVolumeInfoImageLinks extends Google_Model +{ + public $extraLarge; + public $large; + public $medium; + public $small; + public $smallThumbnail; + public $thumbnail; + + public function setExtraLarge($extraLarge) + { + $this->extraLarge = $extraLarge; + } + + public function getExtraLarge() + { + return $this->extraLarge; + } + + public function setLarge($large) + { + $this->large = $large; + } + + public function getLarge() + { + return $this->large; + } + + public function setMedium($medium) + { + $this->medium = $medium; + } + + public function getMedium() + { + return $this->medium; + } + + public function setSmall($small) + { + $this->small = $small; + } + + public function getSmall() + { + return $this->small; + } + + public function setSmallThumbnail($smallThumbnail) + { + $this->smallThumbnail = $smallThumbnail; + } + + public function getSmallThumbnail() + { + return $this->smallThumbnail; + } + + public function setThumbnail($thumbnail) + { + $this->thumbnail = $thumbnail; + } + + public function getThumbnail() + { + return $this->thumbnail; + } +} + +class Google_Service_Books_VolumeVolumeInfoIndustryIdentifiers extends Google_Model +{ + public $identifier; + public $type; + + public function setIdentifier($identifier) + { + $this->identifier = $identifier; + } + + public function getIdentifier() + { + return $this->identifier; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Books_Volumeannotation extends Google_Collection +{ + public $annotationDataId; + public $annotationDataLink; + public $annotationType; + protected $contentRangesType = 'Google_Service_Books_VolumeannotationContentRanges'; + protected $contentRangesDataType = ''; + public $data; + public $deleted; + public $id; + public $kind; + public $layerId; + public $pageIds; + public $selectedText; + public $selfLink; + public $updated; + public $volumeId; + + public function setAnnotationDataId($annotationDataId) + { + $this->annotationDataId = $annotationDataId; + } + + public function getAnnotationDataId() + { + return $this->annotationDataId; + } + + public function setAnnotationDataLink($annotationDataLink) + { + $this->annotationDataLink = $annotationDataLink; + } + + public function getAnnotationDataLink() + { + return $this->annotationDataLink; + } + + public function setAnnotationType($annotationType) + { + $this->annotationType = $annotationType; + } + + public function getAnnotationType() + { + return $this->annotationType; + } + + public function setContentRanges(Google_Service_Books_VolumeannotationContentRanges $contentRanges) + { + $this->contentRanges = $contentRanges; + } + + public function getContentRanges() + { + return $this->contentRanges; + } + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setDeleted($deleted) + { + $this->deleted = $deleted; + } + + public function getDeleted() + { + return $this->deleted; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLayerId($layerId) + { + $this->layerId = $layerId; + } + + public function getLayerId() + { + return $this->layerId; + } + + public function setPageIds($pageIds) + { + $this->pageIds = $pageIds; + } + + public function getPageIds() + { + return $this->pageIds; + } + + public function setSelectedText($selectedText) + { + $this->selectedText = $selectedText; + } + + public function getSelectedText() + { + return $this->selectedText; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setVolumeId($volumeId) + { + $this->volumeId = $volumeId; + } + + public function getVolumeId() + { + return $this->volumeId; + } +} + +class Google_Service_Books_VolumeannotationContentRanges extends Google_Model +{ + protected $cfiRangeType = 'Google_Service_Books_BooksAnnotationsRange'; + protected $cfiRangeDataType = ''; + public $contentVersion; + protected $gbImageRangeType = 'Google_Service_Books_BooksAnnotationsRange'; + protected $gbImageRangeDataType = ''; + protected $gbTextRangeType = 'Google_Service_Books_BooksAnnotationsRange'; + protected $gbTextRangeDataType = ''; + + public function setCfiRange(Google_Service_Books_BooksAnnotationsRange $cfiRange) + { + $this->cfiRange = $cfiRange; + } + + public function getCfiRange() + { + return $this->cfiRange; + } + + public function setContentVersion($contentVersion) + { + $this->contentVersion = $contentVersion; + } + + public function getContentVersion() + { + return $this->contentVersion; + } + + public function setGbImageRange(Google_Service_Books_BooksAnnotationsRange $gbImageRange) + { + $this->gbImageRange = $gbImageRange; + } + + public function getGbImageRange() + { + return $this->gbImageRange; + } + + public function setGbTextRange(Google_Service_Books_BooksAnnotationsRange $gbTextRange) + { + $this->gbTextRange = $gbTextRange; + } + + public function getGbTextRange() + { + return $this->gbTextRange; + } +} + +class Google_Service_Books_Volumeannotations extends Google_Collection +{ + protected $itemsType = 'Google_Service_Books_Volumeannotation'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $totalItems; + public $version; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } + + public function setVersion($version) + { + $this->version = $version; + } + + public function getVersion() + { + return $this->version; + } +} + +class Google_Service_Books_Volumes extends Google_Collection +{ + protected $itemsType = 'Google_Service_Books_Volume'; + protected $itemsDataType = 'array'; + public $kind; + public $totalItems; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} diff --git a/oauth/Google/Service/Calendar.php b/oauth/Google/Service/Calendar.php new file mode 100644 index 0000000..adb1042 --- /dev/null +++ b/oauth/Google/Service/Calendar.php @@ -0,0 +1,4005 @@ + + * Lets you manipulate events and other calendar data. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Calendar extends Google_Service +{ + /** Manage your calendars. */ + const CALENDAR = "https://www.googleapis.com/auth/calendar"; + /** View your calendars. */ + const CALENDAR_READONLY = "https://www.googleapis.com/auth/calendar.readonly"; + + public $acl; + public $calendarList; + public $calendars; + public $channels; + public $colors; + public $events; + public $freebusy; + public $settings; + + + /** + * Constructs the internal representation of the Calendar service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'calendar/v3/'; + $this->version = 'v3'; + $this->serviceName = 'calendar'; + + $this->acl = new Google_Service_Calendar_Acl_Resource( + $this, + $this->serviceName, + 'acl', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'calendars/{calendarId}/acl/{ruleId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ruleId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'calendars/{calendarId}/acl/{ruleId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ruleId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'calendars/{calendarId}/acl', + 'httpMethod' => 'POST', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'calendars/{calendarId}/acl', + 'httpMethod' => 'GET', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'syncToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'showDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'patch' => array( + 'path' => 'calendars/{calendarId}/acl/{ruleId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ruleId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'calendars/{calendarId}/acl/{ruleId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ruleId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'watch' => array( + 'path' => 'calendars/{calendarId}/acl/watch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'syncToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'showDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ), + ) + ) + ); + $this->calendarList = new Google_Service_Calendar_CalendarList_Resource( + $this, + $this->serviceName, + 'calendarList', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'users/me/calendarList/{calendarId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'users/me/calendarList/{calendarId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'users/me/calendarList', + 'httpMethod' => 'POST', + 'parameters' => array( + 'colorRgbFormat' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'list' => array( + 'path' => 'users/me/calendarList', + 'httpMethod' => 'GET', + 'parameters' => array( + 'syncToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'minAccessRole' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showHidden' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'patch' => array( + 'path' => 'users/me/calendarList/{calendarId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'colorRgbFormat' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'update' => array( + 'path' => 'users/me/calendarList/{calendarId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'colorRgbFormat' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'watch' => array( + 'path' => 'users/me/calendarList/watch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'syncToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'minAccessRole' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showHidden' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ), + ) + ) + ); + $this->calendars = new Google_Service_Calendar_Calendars_Resource( + $this, + $this->serviceName, + 'calendars', + array( + 'methods' => array( + 'clear' => array( + 'path' => 'calendars/{calendarId}/clear', + 'httpMethod' => 'POST', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => 'calendars/{calendarId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'calendars/{calendarId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'calendars', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'patch' => array( + 'path' => 'calendars/{calendarId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'calendars/{calendarId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->channels = new Google_Service_Calendar_Channels_Resource( + $this, + $this->serviceName, + 'channels', + array( + 'methods' => array( + 'stop' => array( + 'path' => 'channels/stop', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->colors = new Google_Service_Calendar_Colors_Resource( + $this, + $this->serviceName, + 'colors', + array( + 'methods' => array( + 'get' => array( + 'path' => 'colors', + 'httpMethod' => 'GET', + 'parameters' => array(), + ), + ) + ) + ); + $this->events = new Google_Service_Calendar_Events_Resource( + $this, + $this->serviceName, + 'events', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'calendars/{calendarId}/events/{eventId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'eventId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sendNotifications' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'get' => array( + 'path' => 'calendars/{calendarId}/events/{eventId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'eventId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'timeZone' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'alwaysIncludeEmail' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxAttendees' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'import' => array( + 'path' => 'calendars/{calendarId}/events/import', + 'httpMethod' => 'POST', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'calendars/{calendarId}/events', + 'httpMethod' => 'POST', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sendNotifications' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxAttendees' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'instances' => array( + 'path' => 'calendars/{calendarId}/events/{eventId}/instances', + 'httpMethod' => 'GET', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'eventId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'showDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'timeMax' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'alwaysIncludeEmail' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'timeMin' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'timeZone' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'originalStart' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxAttendees' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'list' => array( + 'path' => 'calendars/{calendarId}/events', + 'httpMethod' => 'GET', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showHiddenInvitations' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'syncToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'iCalUID' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'updatedMin' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'singleEvents' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'timeMax' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'alwaysIncludeEmail' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'q' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'timeMin' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'timeZone' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'privateExtendedProperty' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'sharedExtendedProperty' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'maxAttendees' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'move' => array( + 'path' => 'calendars/{calendarId}/events/{eventId}/move', + 'httpMethod' => 'POST', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'eventId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'destination' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'sendNotifications' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'patch' => array( + 'path' => 'calendars/{calendarId}/events/{eventId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'eventId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sendNotifications' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'alwaysIncludeEmail' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxAttendees' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'quickAdd' => array( + 'path' => 'calendars/{calendarId}/events/quickAdd', + 'httpMethod' => 'POST', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'text' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'sendNotifications' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'update' => array( + 'path' => 'calendars/{calendarId}/events/{eventId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'eventId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sendNotifications' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'alwaysIncludeEmail' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxAttendees' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'watch' => array( + 'path' => 'calendars/{calendarId}/events/watch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'calendarId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showHiddenInvitations' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'syncToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'iCalUID' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'updatedMin' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'singleEvents' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'timeMax' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'alwaysIncludeEmail' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'q' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'timeMin' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'timeZone' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'privateExtendedProperty' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'sharedExtendedProperty' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'maxAttendees' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->freebusy = new Google_Service_Calendar_Freebusy_Resource( + $this, + $this->serviceName, + 'freebusy', + array( + 'methods' => array( + 'query' => array( + 'path' => 'freeBusy', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->settings = new Google_Service_Calendar_Settings_Resource( + $this, + $this->serviceName, + 'settings', + array( + 'methods' => array( + 'get' => array( + 'path' => 'users/me/settings/{setting}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'setting' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'users/me/settings', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'syncToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'watch' => array( + 'path' => 'users/me/settings/watch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'syncToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "acl" collection of methods. + * Typical usage is: + * + * $calendarService = new Google_Service_Calendar(...); + * $acl = $calendarService->acl; + * + */ +class Google_Service_Calendar_Acl_Resource extends Google_Service_Resource +{ + + /** + * Deletes an access control rule. (acl.delete) + * + * @param string $calendarId + * Calendar identifier. + * @param string $ruleId + * ACL rule identifier. + * @param array $optParams Optional parameters. + */ + public function delete($calendarId, $ruleId, $optParams = array()) + { + $params = array('calendarId' => $calendarId, 'ruleId' => $ruleId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Returns an access control rule. (acl.get) + * + * @param string $calendarId + * Calendar identifier. + * @param string $ruleId + * ACL rule identifier. + * @param array $optParams Optional parameters. + * @return Google_Service_Calendar_AclRule + */ + public function get($calendarId, $ruleId, $optParams = array()) + { + $params = array('calendarId' => $calendarId, 'ruleId' => $ruleId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Calendar_AclRule"); + } + /** + * Creates an access control rule. (acl.insert) + * + * @param string $calendarId + * Calendar identifier. + * @param Google_AclRule $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Calendar_AclRule + */ + public function insert($calendarId, Google_Service_Calendar_AclRule $postBody, $optParams = array()) + { + $params = array('calendarId' => $calendarId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Calendar_AclRule"); + } + /** + * Returns the rules in the access control list for the calendar. (acl.listAcl) + * + * @param string $calendarId + * Calendar identifier. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Token specifying which result page to return. Optional. + * @opt_param string syncToken + * Token obtained from the nextSyncToken field returned on the last page of results from the + * previous list request. It makes the result of this list request contain only entries that have + * changed since then. All entries deleted since the previous list request will always be in the + * result set and it is not allowed to set showDeleted to False. + If the syncToken expires, the + * server will respond with a 410 GONE response code and the client should clear its storage and + * perform a full synchronization without any syncToken. + Learn more about incremental + * synchronization. + Optional. The default is to return all entries. + * @opt_param int maxResults + * Maximum number of entries returned on one result page. By default the value is 100 entries. The + * page size can never be larger than 250 entries. Optional. + * @opt_param bool showDeleted + * Whether to include deleted ACLs in the result. Deleted ACLs are represented by role equal to + * "none". Deleted ACLs will always be included if syncToken is provided. Optional. The default is + * False. + * @return Google_Service_Calendar_Acl + */ + public function listAcl($calendarId, $optParams = array()) + { + $params = array('calendarId' => $calendarId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Calendar_Acl"); + } + /** + * Updates an access control rule. This method supports patch semantics. + * (acl.patch) + * + * @param string $calendarId + * Calendar identifier. + * @param string $ruleId + * ACL rule identifier. + * @param Google_AclRule $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Calendar_AclRule + */ + public function patch($calendarId, $ruleId, Google_Service_Calendar_AclRule $postBody, $optParams = array()) + { + $params = array('calendarId' => $calendarId, 'ruleId' => $ruleId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Calendar_AclRule"); + } + /** + * Updates an access control rule. (acl.update) + * + * @param string $calendarId + * Calendar identifier. + * @param string $ruleId + * ACL rule identifier. + * @param Google_AclRule $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Calendar_AclRule + */ + public function update($calendarId, $ruleId, Google_Service_Calendar_AclRule $postBody, $optParams = array()) + { + $params = array('calendarId' => $calendarId, 'ruleId' => $ruleId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Calendar_AclRule"); + } + /** + * Watch for changes to ACL resources. (acl.watch) + * + * @param string $calendarId + * Calendar identifier. + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Token specifying which result page to return. Optional. + * @opt_param string syncToken + * Token obtained from the nextSyncToken field returned on the last page of results from the + * previous list request. It makes the result of this list request contain only entries that have + * changed since then. All entries deleted since the previous list request will always be in the + * result set and it is not allowed to set showDeleted to False. + If the syncToken expires, the + * server will respond with a 410 GONE response code and the client should clear its storage and + * perform a full synchronization without any syncToken. + Learn more about incremental + * synchronization. + Optional. The default is to return all entries. + * @opt_param int maxResults + * Maximum number of entries returned on one result page. By default the value is 100 entries. The + * page size can never be larger than 250 entries. Optional. + * @opt_param bool showDeleted + * Whether to include deleted ACLs in the result. Deleted ACLs are represented by role equal to + * "none". Deleted ACLs will always be included if syncToken is provided. Optional. The default is + * False. + * @return Google_Service_Calendar_Channel + */ + public function watch($calendarId, Google_Service_Calendar_Channel $postBody, $optParams = array()) + { + $params = array('calendarId' => $calendarId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('watch', array($params), "Google_Service_Calendar_Channel"); + } +} + +/** + * The "calendarList" collection of methods. + * Typical usage is: + * + * $calendarService = new Google_Service_Calendar(...); + * $calendarList = $calendarService->calendarList; + * + */ +class Google_Service_Calendar_CalendarList_Resource extends Google_Service_Resource +{ + + /** + * Deletes an entry on the user's calendar list. (calendarList.delete) + * + * @param string $calendarId + * Calendar identifier. + * @param array $optParams Optional parameters. + */ + public function delete($calendarId, $optParams = array()) + { + $params = array('calendarId' => $calendarId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Returns an entry on the user's calendar list. (calendarList.get) + * + * @param string $calendarId + * Calendar identifier. + * @param array $optParams Optional parameters. + * @return Google_Service_Calendar_CalendarListEntry + */ + public function get($calendarId, $optParams = array()) + { + $params = array('calendarId' => $calendarId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Calendar_CalendarListEntry"); + } + /** + * Adds an entry to the user's calendar list. (calendarList.insert) + * + * @param Google_CalendarListEntry $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool colorRgbFormat + * Whether to use the foregroundColor and backgroundColor fields to write the calendar colors + * (RGB). If this feature is used, the index-based colorId field will be set to the best matching + * option automatically. Optional. The default is False. + * @return Google_Service_Calendar_CalendarListEntry + */ + public function insert(Google_Service_Calendar_CalendarListEntry $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Calendar_CalendarListEntry"); + } + /** + * Returns entries on the user's calendar list. (calendarList.listCalendarList) + * + * @param array $optParams Optional parameters. + * + * @opt_param string syncToken + * Token obtained from the nextSyncToken field returned on the last page of results from the + * previous list request. It makes the result of this list request contain only entries that have + * changed since then. If only read-only fields such as calendar properties or ACLs have changed, + * the entry won't be returned. All entries deleted and hidden since the previous list request will + * always be in the result set and it is not allowed to set showDeleted neither showHidden to + * False. + To ensure client state consistency minAccessRole query parameter cannot be specified + * together with nextSyncToken. + If the syncToken expires, the server will respond with a 410 GONE + * response code and the client should clear its storage and perform a full synchronization without + * any syncToken. + Learn more about incremental synchronization. + Optional. The default is to return + * all entries. + * @opt_param bool showDeleted + * Whether to include deleted calendar list entries in the result. Optional. The default is False. + * @opt_param string minAccessRole + * The minimum access role for the user in the returned entires. Optional. The default is no + * restriction. + * @opt_param int maxResults + * Maximum number of entries returned on one result page. By default the value is 100 entries. The + * page size can never be larger than 250 entries. Optional. + * @opt_param string pageToken + * Token specifying which result page to return. Optional. + * @opt_param bool showHidden + * Whether to show hidden entries. Optional. The default is False. + * @return Google_Service_Calendar_CalendarList + */ + public function listCalendarList($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Calendar_CalendarList"); + } + /** + * Updates an entry on the user's calendar list. This method supports patch + * semantics. (calendarList.patch) + * + * @param string $calendarId + * Calendar identifier. + * @param Google_CalendarListEntry $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool colorRgbFormat + * Whether to use the foregroundColor and backgroundColor fields to write the calendar colors + * (RGB). If this feature is used, the index-based colorId field will be set to the best matching + * option automatically. Optional. The default is False. + * @return Google_Service_Calendar_CalendarListEntry + */ + public function patch($calendarId, Google_Service_Calendar_CalendarListEntry $postBody, $optParams = array()) + { + $params = array('calendarId' => $calendarId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Calendar_CalendarListEntry"); + } + /** + * Updates an entry on the user's calendar list. (calendarList.update) + * + * @param string $calendarId + * Calendar identifier. + * @param Google_CalendarListEntry $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool colorRgbFormat + * Whether to use the foregroundColor and backgroundColor fields to write the calendar colors + * (RGB). If this feature is used, the index-based colorId field will be set to the best matching + * option automatically. Optional. The default is False. + * @return Google_Service_Calendar_CalendarListEntry + */ + public function update($calendarId, Google_Service_Calendar_CalendarListEntry $postBody, $optParams = array()) + { + $params = array('calendarId' => $calendarId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Calendar_CalendarListEntry"); + } + /** + * Watch for changes to CalendarList resources. (calendarList.watch) + * + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string syncToken + * Token obtained from the nextSyncToken field returned on the last page of results from the + * previous list request. It makes the result of this list request contain only entries that have + * changed since then. If only read-only fields such as calendar properties or ACLs have changed, + * the entry won't be returned. All entries deleted and hidden since the previous list request will + * always be in the result set and it is not allowed to set showDeleted neither showHidden to + * False. + To ensure client state consistency minAccessRole query parameter cannot be specified + * together with nextSyncToken. + If the syncToken expires, the server will respond with a 410 GONE + * response code and the client should clear its storage and perform a full synchronization without + * any syncToken. + Learn more about incremental synchronization. + Optional. The default is to return + * all entries. + * @opt_param bool showDeleted + * Whether to include deleted calendar list entries in the result. Optional. The default is False. + * @opt_param string minAccessRole + * The minimum access role for the user in the returned entires. Optional. The default is no + * restriction. + * @opt_param int maxResults + * Maximum number of entries returned on one result page. By default the value is 100 entries. The + * page size can never be larger than 250 entries. Optional. + * @opt_param string pageToken + * Token specifying which result page to return. Optional. + * @opt_param bool showHidden + * Whether to show hidden entries. Optional. The default is False. + * @return Google_Service_Calendar_Channel + */ + public function watch(Google_Service_Calendar_Channel $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('watch', array($params), "Google_Service_Calendar_Channel"); + } +} + +/** + * The "calendars" collection of methods. + * Typical usage is: + * + * $calendarService = new Google_Service_Calendar(...); + * $calendars = $calendarService->calendars; + * + */ +class Google_Service_Calendar_Calendars_Resource extends Google_Service_Resource +{ + + /** + * Clears a primary calendar. This operation deletes all data associated with + * the primary calendar of an account and cannot be undone. (calendars.clear) + * + * @param string $calendarId + * Calendar identifier. + * @param array $optParams Optional parameters. + */ + public function clear($calendarId, $optParams = array()) + { + $params = array('calendarId' => $calendarId); + $params = array_merge($params, $optParams); + return $this->call('clear', array($params)); + } + /** + * Deletes a secondary calendar. (calendars.delete) + * + * @param string $calendarId + * Calendar identifier. + * @param array $optParams Optional parameters. + */ + public function delete($calendarId, $optParams = array()) + { + $params = array('calendarId' => $calendarId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Returns metadata for a calendar. (calendars.get) + * + * @param string $calendarId + * Calendar identifier. + * @param array $optParams Optional parameters. + * @return Google_Service_Calendar_Calendar + */ + public function get($calendarId, $optParams = array()) + { + $params = array('calendarId' => $calendarId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Calendar_Calendar"); + } + /** + * Creates a secondary calendar. (calendars.insert) + * + * @param Google_Calendar $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Calendar_Calendar + */ + public function insert(Google_Service_Calendar_Calendar $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Calendar_Calendar"); + } + /** + * Updates metadata for a calendar. This method supports patch semantics. + * (calendars.patch) + * + * @param string $calendarId + * Calendar identifier. + * @param Google_Calendar $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Calendar_Calendar + */ + public function patch($calendarId, Google_Service_Calendar_Calendar $postBody, $optParams = array()) + { + $params = array('calendarId' => $calendarId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Calendar_Calendar"); + } + /** + * Updates metadata for a calendar. (calendars.update) + * + * @param string $calendarId + * Calendar identifier. + * @param Google_Calendar $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Calendar_Calendar + */ + public function update($calendarId, Google_Service_Calendar_Calendar $postBody, $optParams = array()) + { + $params = array('calendarId' => $calendarId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Calendar_Calendar"); + } +} + +/** + * The "channels" collection of methods. + * Typical usage is: + * + * $calendarService = new Google_Service_Calendar(...); + * $channels = $calendarService->channels; + * + */ +class Google_Service_Calendar_Channels_Resource extends Google_Service_Resource +{ + + /** + * Stop watching resources through this channel (channels.stop) + * + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + */ + public function stop(Google_Service_Calendar_Channel $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('stop', array($params)); + } +} + +/** + * The "colors" collection of methods. + * Typical usage is: + * + * $calendarService = new Google_Service_Calendar(...); + * $colors = $calendarService->colors; + * + */ +class Google_Service_Calendar_Colors_Resource extends Google_Service_Resource +{ + + /** + * Returns the color definitions for calendars and events. (colors.get) + * + * @param array $optParams Optional parameters. + * @return Google_Service_Calendar_Colors + */ + public function get($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Calendar_Colors"); + } +} + +/** + * The "events" collection of methods. + * Typical usage is: + * + * $calendarService = new Google_Service_Calendar(...); + * $events = $calendarService->events; + * + */ +class Google_Service_Calendar_Events_Resource extends Google_Service_Resource +{ + + /** + * Deletes an event. (events.delete) + * + * @param string $calendarId + * Calendar identifier. + * @param string $eventId + * Event identifier. + * @param array $optParams Optional parameters. + * + * @opt_param bool sendNotifications + * Whether to send notifications about the deletion of the event. Optional. The default is False. + */ + public function delete($calendarId, $eventId, $optParams = array()) + { + $params = array('calendarId' => $calendarId, 'eventId' => $eventId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Returns an event. (events.get) + * + * @param string $calendarId + * Calendar identifier. + * @param string $eventId + * Event identifier. + * @param array $optParams Optional parameters. + * + * @opt_param string timeZone + * Time zone used in the response. Optional. The default is the time zone of the calendar. + * @opt_param bool alwaysIncludeEmail + * Whether to always include a value in the email field for the organizer, creator and attendees, + * even if no real email is available (i.e. a generated, non-working value will be provided). The + * use of this option is discouraged and should only be used by clients which cannot handle the + * absence of an email address value in the mentioned places. Optional. The default is False. + * @opt_param int maxAttendees + * The maximum number of attendees to include in the response. If there are more than the specified + * number of attendees, only the participant is returned. Optional. + * @return Google_Service_Calendar_Event + */ + public function get($calendarId, $eventId, $optParams = array()) + { + $params = array('calendarId' => $calendarId, 'eventId' => $eventId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Calendar_Event"); + } + /** + * Imports an event. This operation is used to add a private copy of an existing + * event to a calendar. (events.import) + * + * @param string $calendarId + * Calendar identifier. + * @param Google_Event $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Calendar_Event + */ + public function import($calendarId, Google_Service_Calendar_Event $postBody, $optParams = array()) + { + $params = array('calendarId' => $calendarId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('import', array($params), "Google_Service_Calendar_Event"); + } + /** + * Creates an event. (events.insert) + * + * @param string $calendarId + * Calendar identifier. + * @param Google_Event $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool sendNotifications + * Whether to send notifications about the creation of the new event. Optional. The default is + * False. + * @opt_param int maxAttendees + * The maximum number of attendees to include in the response. If there are more than the specified + * number of attendees, only the participant is returned. Optional. + * @return Google_Service_Calendar_Event + */ + public function insert($calendarId, Google_Service_Calendar_Event $postBody, $optParams = array()) + { + $params = array('calendarId' => $calendarId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Calendar_Event"); + } + /** + * Returns instances of the specified recurring event. (events.instances) + * + * @param string $calendarId + * Calendar identifier. + * @param string $eventId + * Recurring event identifier. + * @param array $optParams Optional parameters. + * + * @opt_param bool showDeleted + * Whether to include deleted events (with status equals "cancelled") in the result. Cancelled + * instances of recurring events will still be included if singleEvents is False. Optional. The + * default is False. + * @opt_param string timeMax + * Upper bound (exclusive) for an event's start time to filter by. Optional. The default is not to + * filter by start time. + * @opt_param bool alwaysIncludeEmail + * Whether to always include a value in the email field for the organizer, creator and attendees, + * even if no real email is available (i.e. a generated, non-working value will be provided). The + * use of this option is discouraged and should only be used by clients which cannot handle the + * absence of an email address value in the mentioned places. Optional. The default is False. + * @opt_param int maxResults + * Maximum number of events returned on one result page. By default the value is 250 events. The + * page size can never be larger than 2500 events. Optional. + * @opt_param string pageToken + * Token specifying which result page to return. Optional. + * @opt_param string timeMin + * Lower bound (inclusive) for an event's end time to filter by. Optional. The default is not to + * filter by end time. + * @opt_param string timeZone + * Time zone used in the response. Optional. The default is the time zone of the calendar. + * @opt_param string originalStart + * The original start time of the instance in the result. Optional. + * @opt_param int maxAttendees + * The maximum number of attendees to include in the response. If there are more than the specified + * number of attendees, only the participant is returned. Optional. + * @return Google_Service_Calendar_Events + */ + public function instances($calendarId, $eventId, $optParams = array()) + { + $params = array('calendarId' => $calendarId, 'eventId' => $eventId); + $params = array_merge($params, $optParams); + return $this->call('instances', array($params), "Google_Service_Calendar_Events"); + } + /** + * Returns events on the specified calendar. (events.listEvents) + * + * @param string $calendarId + * Calendar identifier. + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy + * The order of the events returned in the result. Optional. The default is an unspecified, stable + * order. + * @opt_param bool showHiddenInvitations + * Whether to include hidden invitations in the result. Optional. The default is False. + * @opt_param string syncToken + * Token obtained from the nextSyncToken field returned on the last page of results from the + * previous list request. It makes the result of this list request contain only entries that have + * changed since then. All events deleted since the previous list request will always be in the + * result set and it is not allowed to set showDeleted to False. + There are several query parameters + * that cannot be specified together with nextSyncToken to ensure consistency of the client state. + * These are: + - iCalUID + - orderBy + - privateExtendedProperty + - q + - sharedExtendedProperty + - + * timeMin + - timeMax + - updatedMin If the syncToken expires, the server will respond with a 410 + * GONE response code and the client should clear its storage and perform a full synchronization + * without any syncToken. + Learn more about incremental synchronization. + Optional. The default is to + * return all entries. + * @opt_param bool showDeleted + * Whether to include deleted events (with status equals "cancelled") in the result. Cancelled + * instances of recurring events (but not the underlying recurring event) will still be included if + * showDeleted and singleEvents are both False. If showDeleted and singleEvents are both True, only + * single instances of deleted events (but not the underlying recurring events) are returned. + * Optional. The default is False. + * @opt_param string iCalUID + * Specifies event ID in the iCalendar format to be included in the response. Optional. + * @opt_param string updatedMin + * Lower bound for an event's last modification time (as a RFC 3339 timestamp) to filter by. When + * specified, entries deleted since this time will always be included regardless of showDeleted. + * Optional. The default is not to filter by last modification time. + * @opt_param bool singleEvents + * Whether to expand recurring events into instances and only return single one-off events and + * instances of recurring events, but not the underlying recurring events themselves. Optional. The + * default is False. + * @opt_param string timeMax + * Upper bound (exclusive) for an event's start time to filter by. Optional. The default is not to + * filter by start time. + * @opt_param bool alwaysIncludeEmail + * Whether to always include a value in the email field for the organizer, creator and attendees, + * even if no real email is available (i.e. a generated, non-working value will be provided). The + * use of this option is discouraged and should only be used by clients which cannot handle the + * absence of an email address value in the mentioned places. Optional. The default is False. + * @opt_param int maxResults + * Maximum number of events returned on one result page. By default the value is 250 events. The + * page size can never be larger than 2500 events. Optional. + * @opt_param string q + * Free text search terms to find events that match these terms in any field, except for extended + * properties. Optional. + * @opt_param string pageToken + * Token specifying which result page to return. Optional. + * @opt_param string timeMin + * Lower bound (inclusive) for an event's end time to filter by. Optional. The default is not to + * filter by end time. + * @opt_param string timeZone + * Time zone used in the response. Optional. The default is the time zone of the calendar. + * @opt_param string privateExtendedProperty + * Extended properties constraint specified as propertyName=value. Matches only private properties. + * This parameter might be repeated multiple times to return events that match all given + * constraints. + * @opt_param string sharedExtendedProperty + * Extended properties constraint specified as propertyName=value. Matches only shared properties. + * This parameter might be repeated multiple times to return events that match all given + * constraints. + * @opt_param int maxAttendees + * The maximum number of attendees to include in the response. If there are more than the specified + * number of attendees, only the participant is returned. Optional. + * @return Google_Service_Calendar_Events + */ + public function listEvents($calendarId, $optParams = array()) + { + $params = array('calendarId' => $calendarId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Calendar_Events"); + } + /** + * Moves an event to another calendar, i.e. changes an event's organizer. + * (events.move) + * + * @param string $calendarId + * Calendar identifier of the source calendar where the event currently is on. + * @param string $eventId + * Event identifier. + * @param string $destination + * Calendar identifier of the target calendar where the event is to be moved to. + * @param array $optParams Optional parameters. + * + * @opt_param bool sendNotifications + * Whether to send notifications about the change of the event's organizer. Optional. The default + * is False. + * @return Google_Service_Calendar_Event + */ + public function move($calendarId, $eventId, $destination, $optParams = array()) + { + $params = array('calendarId' => $calendarId, 'eventId' => $eventId, 'destination' => $destination); + $params = array_merge($params, $optParams); + return $this->call('move', array($params), "Google_Service_Calendar_Event"); + } + /** + * Updates an event. This method supports patch semantics. (events.patch) + * + * @param string $calendarId + * Calendar identifier. + * @param string $eventId + * Event identifier. + * @param Google_Event $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool sendNotifications + * Whether to send notifications about the event update (e.g. attendee's responses, title changes, + * etc.). Optional. The default is False. + * @opt_param bool alwaysIncludeEmail + * Whether to always include a value in the email field for the organizer, creator and attendees, + * even if no real email is available (i.e. a generated, non-working value will be provided). The + * use of this option is discouraged and should only be used by clients which cannot handle the + * absence of an email address value in the mentioned places. Optional. The default is False. + * @opt_param int maxAttendees + * The maximum number of attendees to include in the response. If there are more than the specified + * number of attendees, only the participant is returned. Optional. + * @return Google_Service_Calendar_Event + */ + public function patch($calendarId, $eventId, Google_Service_Calendar_Event $postBody, $optParams = array()) + { + $params = array('calendarId' => $calendarId, 'eventId' => $eventId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Calendar_Event"); + } + /** + * Creates an event based on a simple text string. (events.quickAdd) + * + * @param string $calendarId + * Calendar identifier. + * @param string $text + * The text describing the event to be created. + * @param array $optParams Optional parameters. + * + * @opt_param bool sendNotifications + * Whether to send notifications about the creation of the event. Optional. The default is False. + * @return Google_Service_Calendar_Event + */ + public function quickAdd($calendarId, $text, $optParams = array()) + { + $params = array('calendarId' => $calendarId, 'text' => $text); + $params = array_merge($params, $optParams); + return $this->call('quickAdd', array($params), "Google_Service_Calendar_Event"); + } + /** + * Updates an event. (events.update) + * + * @param string $calendarId + * Calendar identifier. + * @param string $eventId + * Event identifier. + * @param Google_Event $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool sendNotifications + * Whether to send notifications about the event update (e.g. attendee's responses, title changes, + * etc.). Optional. The default is False. + * @opt_param bool alwaysIncludeEmail + * Whether to always include a value in the email field for the organizer, creator and attendees, + * even if no real email is available (i.e. a generated, non-working value will be provided). The + * use of this option is discouraged and should only be used by clients which cannot handle the + * absence of an email address value in the mentioned places. Optional. The default is False. + * @opt_param int maxAttendees + * The maximum number of attendees to include in the response. If there are more than the specified + * number of attendees, only the participant is returned. Optional. + * @return Google_Service_Calendar_Event + */ + public function update($calendarId, $eventId, Google_Service_Calendar_Event $postBody, $optParams = array()) + { + $params = array('calendarId' => $calendarId, 'eventId' => $eventId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Calendar_Event"); + } + /** + * Watch for changes to Events resources. (events.watch) + * + * @param string $calendarId + * Calendar identifier. + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy + * The order of the events returned in the result. Optional. The default is an unspecified, stable + * order. + * @opt_param bool showHiddenInvitations + * Whether to include hidden invitations in the result. Optional. The default is False. + * @opt_param string syncToken + * Token obtained from the nextSyncToken field returned on the last page of results from the + * previous list request. It makes the result of this list request contain only entries that have + * changed since then. All events deleted since the previous list request will always be in the + * result set and it is not allowed to set showDeleted to False. + There are several query parameters + * that cannot be specified together with nextSyncToken to ensure consistency of the client state. + * These are: + - iCalUID + - orderBy + - privateExtendedProperty + - q + - sharedExtendedProperty + - + * timeMin + - timeMax + - updatedMin If the syncToken expires, the server will respond with a 410 + * GONE response code and the client should clear its storage and perform a full synchronization + * without any syncToken. + Learn more about incremental synchronization. + Optional. The default is to + * return all entries. + * @opt_param bool showDeleted + * Whether to include deleted events (with status equals "cancelled") in the result. Cancelled + * instances of recurring events (but not the underlying recurring event) will still be included if + * showDeleted and singleEvents are both False. If showDeleted and singleEvents are both True, only + * single instances of deleted events (but not the underlying recurring events) are returned. + * Optional. The default is False. + * @opt_param string iCalUID + * Specifies event ID in the iCalendar format to be included in the response. Optional. + * @opt_param string updatedMin + * Lower bound for an event's last modification time (as a RFC 3339 timestamp) to filter by. When + * specified, entries deleted since this time will always be included regardless of showDeleted. + * Optional. The default is not to filter by last modification time. + * @opt_param bool singleEvents + * Whether to expand recurring events into instances and only return single one-off events and + * instances of recurring events, but not the underlying recurring events themselves. Optional. The + * default is False. + * @opt_param string timeMax + * Upper bound (exclusive) for an event's start time to filter by. Optional. The default is not to + * filter by start time. + * @opt_param bool alwaysIncludeEmail + * Whether to always include a value in the email field for the organizer, creator and attendees, + * even if no real email is available (i.e. a generated, non-working value will be provided). The + * use of this option is discouraged and should only be used by clients which cannot handle the + * absence of an email address value in the mentioned places. Optional. The default is False. + * @opt_param int maxResults + * Maximum number of events returned on one result page. By default the value is 250 events. The + * page size can never be larger than 2500 events. Optional. + * @opt_param string q + * Free text search terms to find events that match these terms in any field, except for extended + * properties. Optional. + * @opt_param string pageToken + * Token specifying which result page to return. Optional. + * @opt_param string timeMin + * Lower bound (inclusive) for an event's end time to filter by. Optional. The default is not to + * filter by end time. + * @opt_param string timeZone + * Time zone used in the response. Optional. The default is the time zone of the calendar. + * @opt_param string privateExtendedProperty + * Extended properties constraint specified as propertyName=value. Matches only private properties. + * This parameter might be repeated multiple times to return events that match all given + * constraints. + * @opt_param string sharedExtendedProperty + * Extended properties constraint specified as propertyName=value. Matches only shared properties. + * This parameter might be repeated multiple times to return events that match all given + * constraints. + * @opt_param int maxAttendees + * The maximum number of attendees to include in the response. If there are more than the specified + * number of attendees, only the participant is returned. Optional. + * @return Google_Service_Calendar_Channel + */ + public function watch($calendarId, Google_Service_Calendar_Channel $postBody, $optParams = array()) + { + $params = array('calendarId' => $calendarId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('watch', array($params), "Google_Service_Calendar_Channel"); + } +} + +/** + * The "freebusy" collection of methods. + * Typical usage is: + * + * $calendarService = new Google_Service_Calendar(...); + * $freebusy = $calendarService->freebusy; + * + */ +class Google_Service_Calendar_Freebusy_Resource extends Google_Service_Resource +{ + + /** + * Returns free/busy information for a set of calendars. (freebusy.query) + * + * @param Google_FreeBusyRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Calendar_FreeBusyResponse + */ + public function query(Google_Service_Calendar_FreeBusyRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('query', array($params), "Google_Service_Calendar_FreeBusyResponse"); + } +} + +/** + * The "settings" collection of methods. + * Typical usage is: + * + * $calendarService = new Google_Service_Calendar(...); + * $settings = $calendarService->settings; + * + */ +class Google_Service_Calendar_Settings_Resource extends Google_Service_Resource +{ + + /** + * Returns a single user setting. (settings.get) + * + * @param string $setting + * The id of the user setting. + * @param array $optParams Optional parameters. + * @return Google_Service_Calendar_Setting + */ + public function get($setting, $optParams = array()) + { + $params = array('setting' => $setting); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Calendar_Setting"); + } + /** + * Returns all user settings for the authenticated user. (settings.listSettings) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Token specifying which result page to return. Optional. + * @opt_param int maxResults + * Maximum number of entries returned on one result page. By default the value is 100 entries. The + * page size can never be larger than 250 entries. Optional. + * @opt_param string syncToken + * Token obtained from the nextSyncToken field returned on the last page of results from the + * previous list request. It makes the result of this list request contain only entries that have + * changed since then. + If the syncToken expires, the server will respond with a 410 GONE response + * code and the client should clear its storage and perform a full synchronization without any + * syncToken. + Learn more about incremental synchronization. + Optional. The default is to return all + * entries. + * @return Google_Service_Calendar_Settings + */ + public function listSettings($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Calendar_Settings"); + } + /** + * Watch for changes to Settings resources. (settings.watch) + * + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Token specifying which result page to return. Optional. + * @opt_param int maxResults + * Maximum number of entries returned on one result page. By default the value is 100 entries. The + * page size can never be larger than 250 entries. Optional. + * @opt_param string syncToken + * Token obtained from the nextSyncToken field returned on the last page of results from the + * previous list request. It makes the result of this list request contain only entries that have + * changed since then. + If the syncToken expires, the server will respond with a 410 GONE response + * code and the client should clear its storage and perform a full synchronization without any + * syncToken. + Learn more about incremental synchronization. + Optional. The default is to return all + * entries. + * @return Google_Service_Calendar_Channel + */ + public function watch(Google_Service_Calendar_Channel $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('watch', array($params), "Google_Service_Calendar_Channel"); + } +} + + + + +class Google_Service_Calendar_Acl extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Calendar_AclRule'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $nextSyncToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setNextSyncToken($nextSyncToken) + { + $this->nextSyncToken = $nextSyncToken; + } + + public function getNextSyncToken() + { + return $this->nextSyncToken; + } +} + +class Google_Service_Calendar_AclRule extends Google_Model +{ + public $etag; + public $id; + public $kind; + public $role; + protected $scopeType = 'Google_Service_Calendar_AclRuleScope'; + protected $scopeDataType = ''; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRole($role) + { + $this->role = $role; + } + + public function getRole() + { + return $this->role; + } + + public function setScope(Google_Service_Calendar_AclRuleScope $scope) + { + $this->scope = $scope; + } + + public function getScope() + { + return $this->scope; + } +} + +class Google_Service_Calendar_AclRuleScope extends Google_Model +{ + public $type; + public $value; + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Calendar_Calendar extends Google_Model +{ + public $description; + public $etag; + public $id; + public $kind; + public $location; + public $summary; + public $timeZone; + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLocation($location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setSummary($summary) + { + $this->summary = $summary; + } + + public function getSummary() + { + return $this->summary; + } + + public function setTimeZone($timeZone) + { + $this->timeZone = $timeZone; + } + + public function getTimeZone() + { + return $this->timeZone; + } +} + +class Google_Service_Calendar_CalendarList extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Calendar_CalendarListEntry'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $nextSyncToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setNextSyncToken($nextSyncToken) + { + $this->nextSyncToken = $nextSyncToken; + } + + public function getNextSyncToken() + { + return $this->nextSyncToken; + } +} + +class Google_Service_Calendar_CalendarListEntry extends Google_Collection +{ + public $accessRole; + public $backgroundColor; + public $colorId; + protected $defaultRemindersType = 'Google_Service_Calendar_EventReminder'; + protected $defaultRemindersDataType = 'array'; + public $deleted; + public $description; + public $etag; + public $foregroundColor; + public $hidden; + public $id; + public $kind; + public $location; + protected $notificationSettingsType = 'Google_Service_Calendar_CalendarListEntryNotificationSettings'; + protected $notificationSettingsDataType = ''; + public $primary; + public $selected; + public $summary; + public $summaryOverride; + public $timeZone; + + public function setAccessRole($accessRole) + { + $this->accessRole = $accessRole; + } + + public function getAccessRole() + { + return $this->accessRole; + } + + public function setBackgroundColor($backgroundColor) + { + $this->backgroundColor = $backgroundColor; + } + + public function getBackgroundColor() + { + return $this->backgroundColor; + } + + public function setColorId($colorId) + { + $this->colorId = $colorId; + } + + public function getColorId() + { + return $this->colorId; + } + + public function setDefaultReminders($defaultReminders) + { + $this->defaultReminders = $defaultReminders; + } + + public function getDefaultReminders() + { + return $this->defaultReminders; + } + + public function setDeleted($deleted) + { + $this->deleted = $deleted; + } + + public function getDeleted() + { + return $this->deleted; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setForegroundColor($foregroundColor) + { + $this->foregroundColor = $foregroundColor; + } + + public function getForegroundColor() + { + return $this->foregroundColor; + } + + public function setHidden($hidden) + { + $this->hidden = $hidden; + } + + public function getHidden() + { + return $this->hidden; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLocation($location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setNotificationSettings(Google_Service_Calendar_CalendarListEntryNotificationSettings $notificationSettings) + { + $this->notificationSettings = $notificationSettings; + } + + public function getNotificationSettings() + { + return $this->notificationSettings; + } + + public function setPrimary($primary) + { + $this->primary = $primary; + } + + public function getPrimary() + { + return $this->primary; + } + + public function setSelected($selected) + { + $this->selected = $selected; + } + + public function getSelected() + { + return $this->selected; + } + + public function setSummary($summary) + { + $this->summary = $summary; + } + + public function getSummary() + { + return $this->summary; + } + + public function setSummaryOverride($summaryOverride) + { + $this->summaryOverride = $summaryOverride; + } + + public function getSummaryOverride() + { + return $this->summaryOverride; + } + + public function setTimeZone($timeZone) + { + $this->timeZone = $timeZone; + } + + public function getTimeZone() + { + return $this->timeZone; + } +} + +class Google_Service_Calendar_CalendarListEntryNotificationSettings extends Google_Collection +{ + protected $notificationsType = 'Google_Service_Calendar_CalendarNotification'; + protected $notificationsDataType = 'array'; + + public function setNotifications($notifications) + { + $this->notifications = $notifications; + } + + public function getNotifications() + { + return $this->notifications; + } +} + +class Google_Service_Calendar_CalendarNotification extends Google_Model +{ + public $method; + public $type; + + public function setMethod($method) + { + $this->method = $method; + } + + public function getMethod() + { + return $this->method; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Calendar_Channel extends Google_Model +{ + public $address; + public $expiration; + public $id; + public $kind; + public $params; + public $payload; + public $resourceId; + public $resourceUri; + public $token; + public $type; + + public function setAddress($address) + { + $this->address = $address; + } + + public function getAddress() + { + return $this->address; + } + + public function setExpiration($expiration) + { + $this->expiration = $expiration; + } + + public function getExpiration() + { + return $this->expiration; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setParams($params) + { + $this->params = $params; + } + + public function getParams() + { + return $this->params; + } + + public function setPayload($payload) + { + $this->payload = $payload; + } + + public function getPayload() + { + return $this->payload; + } + + public function setResourceId($resourceId) + { + $this->resourceId = $resourceId; + } + + public function getResourceId() + { + return $this->resourceId; + } + + public function setResourceUri($resourceUri) + { + $this->resourceUri = $resourceUri; + } + + public function getResourceUri() + { + return $this->resourceUri; + } + + public function setToken($token) + { + $this->token = $token; + } + + public function getToken() + { + return $this->token; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Calendar_ChannelParams extends Google_Model +{ + +} + +class Google_Service_Calendar_ColorDefinition extends Google_Model +{ + public $background; + public $foreground; + + public function setBackground($background) + { + $this->background = $background; + } + + public function getBackground() + { + return $this->background; + } + + public function setForeground($foreground) + { + $this->foreground = $foreground; + } + + public function getForeground() + { + return $this->foreground; + } +} + +class Google_Service_Calendar_Colors extends Google_Model +{ + protected $calendarType = 'Google_Service_Calendar_ColorDefinition'; + protected $calendarDataType = 'map'; + protected $eventType = 'Google_Service_Calendar_ColorDefinition'; + protected $eventDataType = 'map'; + public $kind; + public $updated; + + public function setCalendar($calendar) + { + $this->calendar = $calendar; + } + + public function getCalendar() + { + return $this->calendar; + } + + public function setEvent($event) + { + $this->event = $event; + } + + public function getEvent() + { + return $this->event; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } +} + +class Google_Service_Calendar_ColorsCalendar extends Google_Model +{ + +} + +class Google_Service_Calendar_ColorsEvent extends Google_Model +{ + +} + +class Google_Service_Calendar_Error extends Google_Model +{ + public $domain; + public $reason; + + public function setDomain($domain) + { + $this->domain = $domain; + } + + public function getDomain() + { + return $this->domain; + } + + public function setReason($reason) + { + $this->reason = $reason; + } + + public function getReason() + { + return $this->reason; + } +} + +class Google_Service_Calendar_Event extends Google_Collection +{ + public $anyoneCanAddSelf; + protected $attendeesType = 'Google_Service_Calendar_EventAttendee'; + protected $attendeesDataType = 'array'; + public $attendeesOmitted; + public $colorId; + public $created; + protected $creatorType = 'Google_Service_Calendar_EventCreator'; + protected $creatorDataType = ''; + public $description; + protected $endType = 'Google_Service_Calendar_EventDateTime'; + protected $endDataType = ''; + public $endTimeUnspecified; + public $etag; + protected $extendedPropertiesType = 'Google_Service_Calendar_EventExtendedProperties'; + protected $extendedPropertiesDataType = ''; + protected $gadgetType = 'Google_Service_Calendar_EventGadget'; + protected $gadgetDataType = ''; + public $guestsCanInviteOthers; + public $guestsCanModify; + public $guestsCanSeeOtherGuests; + public $hangoutLink; + public $htmlLink; + public $iCalUID; + public $id; + public $kind; + public $location; + public $locked; + protected $organizerType = 'Google_Service_Calendar_EventOrganizer'; + protected $organizerDataType = ''; + protected $originalStartTimeType = 'Google_Service_Calendar_EventDateTime'; + protected $originalStartTimeDataType = ''; + public $privateCopy; + public $recurrence; + public $recurringEventId; + protected $remindersType = 'Google_Service_Calendar_EventReminders'; + protected $remindersDataType = ''; + public $sequence; + protected $sourceType = 'Google_Service_Calendar_EventSource'; + protected $sourceDataType = ''; + protected $startType = 'Google_Service_Calendar_EventDateTime'; + protected $startDataType = ''; + public $status; + public $summary; + public $transparency; + public $updated; + public $visibility; + + public function setAnyoneCanAddSelf($anyoneCanAddSelf) + { + $this->anyoneCanAddSelf = $anyoneCanAddSelf; + } + + public function getAnyoneCanAddSelf() + { + return $this->anyoneCanAddSelf; + } + + public function setAttendees($attendees) + { + $this->attendees = $attendees; + } + + public function getAttendees() + { + return $this->attendees; + } + + public function setAttendeesOmitted($attendeesOmitted) + { + $this->attendeesOmitted = $attendeesOmitted; + } + + public function getAttendeesOmitted() + { + return $this->attendeesOmitted; + } + + public function setColorId($colorId) + { + $this->colorId = $colorId; + } + + public function getColorId() + { + return $this->colorId; + } + + public function setCreated($created) + { + $this->created = $created; + } + + public function getCreated() + { + return $this->created; + } + + public function setCreator(Google_Service_Calendar_EventCreator $creator) + { + $this->creator = $creator; + } + + public function getCreator() + { + return $this->creator; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setEnd(Google_Service_Calendar_EventDateTime $end) + { + $this->end = $end; + } + + public function getEnd() + { + return $this->end; + } + + public function setEndTimeUnspecified($endTimeUnspecified) + { + $this->endTimeUnspecified = $endTimeUnspecified; + } + + public function getEndTimeUnspecified() + { + return $this->endTimeUnspecified; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setExtendedProperties(Google_Service_Calendar_EventExtendedProperties $extendedProperties) + { + $this->extendedProperties = $extendedProperties; + } + + public function getExtendedProperties() + { + return $this->extendedProperties; + } + + public function setGadget(Google_Service_Calendar_EventGadget $gadget) + { + $this->gadget = $gadget; + } + + public function getGadget() + { + return $this->gadget; + } + + public function setGuestsCanInviteOthers($guestsCanInviteOthers) + { + $this->guestsCanInviteOthers = $guestsCanInviteOthers; + } + + public function getGuestsCanInviteOthers() + { + return $this->guestsCanInviteOthers; + } + + public function setGuestsCanModify($guestsCanModify) + { + $this->guestsCanModify = $guestsCanModify; + } + + public function getGuestsCanModify() + { + return $this->guestsCanModify; + } + + public function setGuestsCanSeeOtherGuests($guestsCanSeeOtherGuests) + { + $this->guestsCanSeeOtherGuests = $guestsCanSeeOtherGuests; + } + + public function getGuestsCanSeeOtherGuests() + { + return $this->guestsCanSeeOtherGuests; + } + + public function setHangoutLink($hangoutLink) + { + $this->hangoutLink = $hangoutLink; + } + + public function getHangoutLink() + { + return $this->hangoutLink; + } + + public function setHtmlLink($htmlLink) + { + $this->htmlLink = $htmlLink; + } + + public function getHtmlLink() + { + return $this->htmlLink; + } + + public function setICalUID($iCalUID) + { + $this->iCalUID = $iCalUID; + } + + public function getICalUID() + { + return $this->iCalUID; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLocation($location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setLocked($locked) + { + $this->locked = $locked; + } + + public function getLocked() + { + return $this->locked; + } + + public function setOrganizer(Google_Service_Calendar_EventOrganizer $organizer) + { + $this->organizer = $organizer; + } + + public function getOrganizer() + { + return $this->organizer; + } + + public function setOriginalStartTime(Google_Service_Calendar_EventDateTime $originalStartTime) + { + $this->originalStartTime = $originalStartTime; + } + + public function getOriginalStartTime() + { + return $this->originalStartTime; + } + + public function setPrivateCopy($privateCopy) + { + $this->privateCopy = $privateCopy; + } + + public function getPrivateCopy() + { + return $this->privateCopy; + } + + public function setRecurrence($recurrence) + { + $this->recurrence = $recurrence; + } + + public function getRecurrence() + { + return $this->recurrence; + } + + public function setRecurringEventId($recurringEventId) + { + $this->recurringEventId = $recurringEventId; + } + + public function getRecurringEventId() + { + return $this->recurringEventId; + } + + public function setReminders(Google_Service_Calendar_EventReminders $reminders) + { + $this->reminders = $reminders; + } + + public function getReminders() + { + return $this->reminders; + } + + public function setSequence($sequence) + { + $this->sequence = $sequence; + } + + public function getSequence() + { + return $this->sequence; + } + + public function setSource(Google_Service_Calendar_EventSource $source) + { + $this->source = $source; + } + + public function getSource() + { + return $this->source; + } + + public function setStart(Google_Service_Calendar_EventDateTime $start) + { + $this->start = $start; + } + + public function getStart() + { + return $this->start; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setSummary($summary) + { + $this->summary = $summary; + } + + public function getSummary() + { + return $this->summary; + } + + public function setTransparency($transparency) + { + $this->transparency = $transparency; + } + + public function getTransparency() + { + return $this->transparency; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setVisibility($visibility) + { + $this->visibility = $visibility; + } + + public function getVisibility() + { + return $this->visibility; + } +} + +class Google_Service_Calendar_EventAttendee extends Google_Model +{ + public $additionalGuests; + public $comment; + public $displayName; + public $email; + public $id; + public $optional; + public $organizer; + public $resource; + public $responseStatus; + public $self; + + public function setAdditionalGuests($additionalGuests) + { + $this->additionalGuests = $additionalGuests; + } + + public function getAdditionalGuests() + { + return $this->additionalGuests; + } + + public function setComment($comment) + { + $this->comment = $comment; + } + + public function getComment() + { + return $this->comment; + } + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setOptional($optional) + { + $this->optional = $optional; + } + + public function getOptional() + { + return $this->optional; + } + + public function setOrganizer($organizer) + { + $this->organizer = $organizer; + } + + public function getOrganizer() + { + return $this->organizer; + } + + public function setResource($resource) + { + $this->resource = $resource; + } + + public function getResource() + { + return $this->resource; + } + + public function setResponseStatus($responseStatus) + { + $this->responseStatus = $responseStatus; + } + + public function getResponseStatus() + { + return $this->responseStatus; + } + + public function setSelf($self) + { + $this->self = $self; + } + + public function getSelf() + { + return $this->self; + } +} + +class Google_Service_Calendar_EventCreator extends Google_Model +{ + public $displayName; + public $email; + public $id; + public $self; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setSelf($self) + { + $this->self = $self; + } + + public function getSelf() + { + return $this->self; + } +} + +class Google_Service_Calendar_EventDateTime extends Google_Model +{ + public $date; + public $dateTime; + public $timeZone; + + public function setDate($date) + { + $this->date = $date; + } + + public function getDate() + { + return $this->date; + } + + public function setDateTime($dateTime) + { + $this->dateTime = $dateTime; + } + + public function getDateTime() + { + return $this->dateTime; + } + + public function setTimeZone($timeZone) + { + $this->timeZone = $timeZone; + } + + public function getTimeZone() + { + return $this->timeZone; + } +} + +class Google_Service_Calendar_EventExtendedProperties extends Google_Model +{ + public $private; + public $shared; + + public function setPrivate($private) + { + $this->private = $private; + } + + public function getPrivate() + { + return $this->private; + } + + public function setShared($shared) + { + $this->shared = $shared; + } + + public function getShared() + { + return $this->shared; + } +} + +class Google_Service_Calendar_EventExtendedPropertiesPrivate extends Google_Model +{ + +} + +class Google_Service_Calendar_EventExtendedPropertiesShared extends Google_Model +{ + +} + +class Google_Service_Calendar_EventGadget extends Google_Model +{ + public $display; + public $height; + public $iconLink; + public $link; + public $preferences; + public $title; + public $type; + public $width; + + public function setDisplay($display) + { + $this->display = $display; + } + + public function getDisplay() + { + return $this->display; + } + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setIconLink($iconLink) + { + $this->iconLink = $iconLink; + } + + public function getIconLink() + { + return $this->iconLink; + } + + public function setLink($link) + { + $this->link = $link; + } + + public function getLink() + { + return $this->link; + } + + public function setPreferences($preferences) + { + $this->preferences = $preferences; + } + + public function getPreferences() + { + return $this->preferences; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_Calendar_EventGadgetPreferences extends Google_Model +{ + +} + +class Google_Service_Calendar_EventOrganizer extends Google_Model +{ + public $displayName; + public $email; + public $id; + public $self; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setSelf($self) + { + $this->self = $self; + } + + public function getSelf() + { + return $this->self; + } +} + +class Google_Service_Calendar_EventReminder extends Google_Model +{ + public $method; + public $minutes; + + public function setMethod($method) + { + $this->method = $method; + } + + public function getMethod() + { + return $this->method; + } + + public function setMinutes($minutes) + { + $this->minutes = $minutes; + } + + public function getMinutes() + { + return $this->minutes; + } +} + +class Google_Service_Calendar_EventReminders extends Google_Collection +{ + protected $overridesType = 'Google_Service_Calendar_EventReminder'; + protected $overridesDataType = 'array'; + public $useDefault; + + public function setOverrides($overrides) + { + $this->overrides = $overrides; + } + + public function getOverrides() + { + return $this->overrides; + } + + public function setUseDefault($useDefault) + { + $this->useDefault = $useDefault; + } + + public function getUseDefault() + { + return $this->useDefault; + } +} + +class Google_Service_Calendar_EventSource extends Google_Model +{ + public $title; + public $url; + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Calendar_Events extends Google_Collection +{ + public $accessRole; + protected $defaultRemindersType = 'Google_Service_Calendar_EventReminder'; + protected $defaultRemindersDataType = 'array'; + public $description; + public $etag; + protected $itemsType = 'Google_Service_Calendar_Event'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $nextSyncToken; + public $summary; + public $timeZone; + public $updated; + + public function setAccessRole($accessRole) + { + $this->accessRole = $accessRole; + } + + public function getAccessRole() + { + return $this->accessRole; + } + + public function setDefaultReminders($defaultReminders) + { + $this->defaultReminders = $defaultReminders; + } + + public function getDefaultReminders() + { + return $this->defaultReminders; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setNextSyncToken($nextSyncToken) + { + $this->nextSyncToken = $nextSyncToken; + } + + public function getNextSyncToken() + { + return $this->nextSyncToken; + } + + public function setSummary($summary) + { + $this->summary = $summary; + } + + public function getSummary() + { + return $this->summary; + } + + public function setTimeZone($timeZone) + { + $this->timeZone = $timeZone; + } + + public function getTimeZone() + { + return $this->timeZone; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } +} + +class Google_Service_Calendar_FreeBusyCalendar extends Google_Collection +{ + protected $busyType = 'Google_Service_Calendar_TimePeriod'; + protected $busyDataType = 'array'; + protected $errorsType = 'Google_Service_Calendar_Error'; + protected $errorsDataType = 'array'; + + public function setBusy($busy) + { + $this->busy = $busy; + } + + public function getBusy() + { + return $this->busy; + } + + public function setErrors($errors) + { + $this->errors = $errors; + } + + public function getErrors() + { + return $this->errors; + } +} + +class Google_Service_Calendar_FreeBusyGroup extends Google_Collection +{ + public $calendars; + protected $errorsType = 'Google_Service_Calendar_Error'; + protected $errorsDataType = 'array'; + + public function setCalendars($calendars) + { + $this->calendars = $calendars; + } + + public function getCalendars() + { + return $this->calendars; + } + + public function setErrors($errors) + { + $this->errors = $errors; + } + + public function getErrors() + { + return $this->errors; + } +} + +class Google_Service_Calendar_FreeBusyRequest extends Google_Collection +{ + public $calendarExpansionMax; + public $groupExpansionMax; + protected $itemsType = 'Google_Service_Calendar_FreeBusyRequestItem'; + protected $itemsDataType = 'array'; + public $timeMax; + public $timeMin; + public $timeZone; + + public function setCalendarExpansionMax($calendarExpansionMax) + { + $this->calendarExpansionMax = $calendarExpansionMax; + } + + public function getCalendarExpansionMax() + { + return $this->calendarExpansionMax; + } + + public function setGroupExpansionMax($groupExpansionMax) + { + $this->groupExpansionMax = $groupExpansionMax; + } + + public function getGroupExpansionMax() + { + return $this->groupExpansionMax; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setTimeMax($timeMax) + { + $this->timeMax = $timeMax; + } + + public function getTimeMax() + { + return $this->timeMax; + } + + public function setTimeMin($timeMin) + { + $this->timeMin = $timeMin; + } + + public function getTimeMin() + { + return $this->timeMin; + } + + public function setTimeZone($timeZone) + { + $this->timeZone = $timeZone; + } + + public function getTimeZone() + { + return $this->timeZone; + } +} + +class Google_Service_Calendar_FreeBusyRequestItem extends Google_Model +{ + public $id; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } +} + +class Google_Service_Calendar_FreeBusyResponse extends Google_Model +{ + protected $calendarsType = 'Google_Service_Calendar_FreeBusyCalendar'; + protected $calendarsDataType = 'map'; + protected $groupsType = 'Google_Service_Calendar_FreeBusyGroup'; + protected $groupsDataType = 'map'; + public $kind; + public $timeMax; + public $timeMin; + + public function setCalendars($calendars) + { + $this->calendars = $calendars; + } + + public function getCalendars() + { + return $this->calendars; + } + + public function setGroups($groups) + { + $this->groups = $groups; + } + + public function getGroups() + { + return $this->groups; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setTimeMax($timeMax) + { + $this->timeMax = $timeMax; + } + + public function getTimeMax() + { + return $this->timeMax; + } + + public function setTimeMin($timeMin) + { + $this->timeMin = $timeMin; + } + + public function getTimeMin() + { + return $this->timeMin; + } +} + +class Google_Service_Calendar_FreeBusyResponseCalendars extends Google_Model +{ + +} + +class Google_Service_Calendar_FreeBusyResponseGroups extends Google_Model +{ + +} + +class Google_Service_Calendar_Setting extends Google_Model +{ + public $etag; + public $id; + public $kind; + public $value; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Calendar_Settings extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Calendar_Setting'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $nextSyncToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setNextSyncToken($nextSyncToken) + { + $this->nextSyncToken = $nextSyncToken; + } + + public function getNextSyncToken() + { + return $this->nextSyncToken; + } +} + +class Google_Service_Calendar_TimePeriod extends Google_Model +{ + public $end; + public $start; + + public function setEnd($end) + { + $this->end = $end; + } + + public function getEnd() + { + return $this->end; + } + + public function setStart($start) + { + $this->start = $start; + } + + public function getStart() + { + return $this->start; + } +} diff --git a/oauth/Google/Service/CivicInfo.php b/oauth/Google/Service/CivicInfo.php new file mode 100644 index 0000000..daa6586 --- /dev/null +++ b/oauth/Google/Service/CivicInfo.php @@ -0,0 +1,1628 @@ + + * An API for accessing civic information. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_CivicInfo extends Google_Service +{ + + + public $divisions; + public $elections; + public $representatives; + + + /** + * Constructs the internal representation of the CivicInfo service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'civicinfo/v1/'; + $this->version = 'v1'; + $this->serviceName = 'civicinfo'; + + $this->divisions = new Google_Service_CivicInfo_Divisions_Resource( + $this, + $this->serviceName, + 'divisions', + array( + 'methods' => array( + 'search' => array( + 'path' => 'representatives/division_search', + 'httpMethod' => 'GET', + 'parameters' => array( + 'query' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->elections = new Google_Service_CivicInfo_Elections_Resource( + $this, + $this->serviceName, + 'elections', + array( + 'methods' => array( + 'electionQuery' => array( + 'path' => 'elections', + 'httpMethod' => 'GET', + 'parameters' => array(), + ),'voterInfoQuery' => array( + 'path' => 'voterinfo/{electionId}/lookup', + 'httpMethod' => 'POST', + 'parameters' => array( + 'electionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'officialOnly' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ), + ) + ) + ); + $this->representatives = new Google_Service_CivicInfo_Representatives_Resource( + $this, + $this->serviceName, + 'representatives', + array( + 'methods' => array( + 'representativeInfoQuery' => array( + 'path' => 'representatives/lookup', + 'httpMethod' => 'POST', + 'parameters' => array( + 'ocdId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'includeOffices' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'recursive' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "divisions" collection of methods. + * Typical usage is: + * + * $civicinfoService = new Google_Service_CivicInfo(...); + * $divisions = $civicinfoService->divisions; + * + */ +class Google_Service_CivicInfo_Divisions_Resource extends Google_Service_Resource +{ + + /** + * Searches for political divisions by their natural name or OCD ID. + * (divisions.search) + * + * @param array $optParams Optional parameters. + * + * @opt_param string query + * The search query. Queries can cover any parts of a OCD ID or a human readable division name. All + * words given in the query are treated as required patterns. In addition to that, most query + * operators of the Apache Lucene library are supported. See + * http://lucene.apache.org/core/2_9_4/queryparsersyntax.html + * @return Google_Service_CivicInfo_DivisionSearchResponse + */ + public function search($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('search', array($params), "Google_Service_CivicInfo_DivisionSearchResponse"); + } +} + +/** + * The "elections" collection of methods. + * Typical usage is: + * + * $civicinfoService = new Google_Service_CivicInfo(...); + * $elections = $civicinfoService->elections; + * + */ +class Google_Service_CivicInfo_Elections_Resource extends Google_Service_Resource +{ + + /** + * List of available elections to query. (elections.electionQuery) + * + * @param array $optParams Optional parameters. + * @return Google_Service_CivicInfo_ElectionsQueryResponse + */ + public function electionQuery($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('electionQuery', array($params), "Google_Service_CivicInfo_ElectionsQueryResponse"); + } + /** + * Looks up information relevant to a voter based on the voter's registered + * address. (elections.voterInfoQuery) + * + * @param string $electionId + * The unique ID of the election to look up. A list of election IDs can be obtained at + * https://www.googleapis.com/civicinfo/{version}/elections + * @param Google_VoterInfoRequest $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool officialOnly + * If set to true, only data from official state sources will be returned. + * @return Google_Service_CivicInfo_VoterInfoResponse + */ + public function voterInfoQuery($electionId, Google_Service_CivicInfo_VoterInfoRequest $postBody, $optParams = array()) + { + $params = array('electionId' => $electionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('voterInfoQuery', array($params), "Google_Service_CivicInfo_VoterInfoResponse"); + } +} + +/** + * The "representatives" collection of methods. + * Typical usage is: + * + * $civicinfoService = new Google_Service_CivicInfo(...); + * $representatives = $civicinfoService->representatives; + * + */ +class Google_Service_CivicInfo_Representatives_Resource extends Google_Service_Resource +{ + + /** + * Looks up political geography and representative information based on an + * address or Open Civic Data division identifier. + * (representatives.representativeInfoQuery) + * + * @param Google_RepresentativeInfoRequest $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string ocdId + * The division to look up. May only be specified if the address field is not given in the request + * body. + * @opt_param bool includeOffices + * Whether to return information about offices and officials. If false, only the top-level district + * information will be returned. + * @opt_param bool recursive + * When ocd_id is supplied, return all divisions which are hierarchically nested within the queried + * division. For example, if querying ocd-division/country:us/district:dc, this would also return + * all DC's wards and ANCs. + * @return Google_Service_CivicInfo_RepresentativeInfoResponse + */ + public function representativeInfoQuery(Google_Service_CivicInfo_RepresentativeInfoRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('representativeInfoQuery', array($params), "Google_Service_CivicInfo_RepresentativeInfoResponse"); + } +} + + + + +class Google_Service_CivicInfo_AdministrationRegion extends Google_Collection +{ + protected $electionAdministrationBodyType = 'Google_Service_CivicInfo_AdministrativeBody'; + protected $electionAdministrationBodyDataType = ''; + public $id; + protected $localJurisdictionType = 'Google_Service_CivicInfo_AdministrationRegion'; + protected $localJurisdictionDataType = ''; + public $name; + protected $sourcesType = 'Google_Service_CivicInfo_Source'; + protected $sourcesDataType = 'array'; + + public function setElectionAdministrationBody(Google_Service_CivicInfo_AdministrativeBody $electionAdministrationBody) + { + $this->electionAdministrationBody = $electionAdministrationBody; + } + + public function getElectionAdministrationBody() + { + return $this->electionAdministrationBody; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setLocalJurisdiction(Google_Service_CivicInfo_AdministrationRegion $localJurisdiction) + { + $this->localJurisdiction = $localJurisdiction; + } + + public function getLocalJurisdiction() + { + return $this->localJurisdiction; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setSources($sources) + { + $this->sources = $sources; + } + + public function getSources() + { + return $this->sources; + } +} + +class Google_Service_CivicInfo_AdministrativeBody extends Google_Collection +{ + public $absenteeVotingInfoUrl; + public $ballotInfoUrl; + protected $correspondenceAddressType = 'Google_Service_CivicInfo_SimpleAddressType'; + protected $correspondenceAddressDataType = ''; + public $electionInfoUrl; + protected $electionOfficialsType = 'Google_Service_CivicInfo_ElectionOfficial'; + protected $electionOfficialsDataType = 'array'; + public $electionRegistrationConfirmationUrl; + public $electionRegistrationUrl; + public $electionRulesUrl; + public $hoursOfOperation; + public $name; + protected $physicalAddressType = 'Google_Service_CivicInfo_SimpleAddressType'; + protected $physicalAddressDataType = ''; + public $voterServices; + public $votingLocationFinderUrl; + + public function setAbsenteeVotingInfoUrl($absenteeVotingInfoUrl) + { + $this->absenteeVotingInfoUrl = $absenteeVotingInfoUrl; + } + + public function getAbsenteeVotingInfoUrl() + { + return $this->absenteeVotingInfoUrl; + } + + public function setBallotInfoUrl($ballotInfoUrl) + { + $this->ballotInfoUrl = $ballotInfoUrl; + } + + public function getBallotInfoUrl() + { + return $this->ballotInfoUrl; + } + + public function setCorrespondenceAddress(Google_Service_CivicInfo_SimpleAddressType $correspondenceAddress) + { + $this->correspondenceAddress = $correspondenceAddress; + } + + public function getCorrespondenceAddress() + { + return $this->correspondenceAddress; + } + + public function setElectionInfoUrl($electionInfoUrl) + { + $this->electionInfoUrl = $electionInfoUrl; + } + + public function getElectionInfoUrl() + { + return $this->electionInfoUrl; + } + + public function setElectionOfficials($electionOfficials) + { + $this->electionOfficials = $electionOfficials; + } + + public function getElectionOfficials() + { + return $this->electionOfficials; + } + + public function setElectionRegistrationConfirmationUrl($electionRegistrationConfirmationUrl) + { + $this->electionRegistrationConfirmationUrl = $electionRegistrationConfirmationUrl; + } + + public function getElectionRegistrationConfirmationUrl() + { + return $this->electionRegistrationConfirmationUrl; + } + + public function setElectionRegistrationUrl($electionRegistrationUrl) + { + $this->electionRegistrationUrl = $electionRegistrationUrl; + } + + public function getElectionRegistrationUrl() + { + return $this->electionRegistrationUrl; + } + + public function setElectionRulesUrl($electionRulesUrl) + { + $this->electionRulesUrl = $electionRulesUrl; + } + + public function getElectionRulesUrl() + { + return $this->electionRulesUrl; + } + + public function setHoursOfOperation($hoursOfOperation) + { + $this->hoursOfOperation = $hoursOfOperation; + } + + public function getHoursOfOperation() + { + return $this->hoursOfOperation; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPhysicalAddress(Google_Service_CivicInfo_SimpleAddressType $physicalAddress) + { + $this->physicalAddress = $physicalAddress; + } + + public function getPhysicalAddress() + { + return $this->physicalAddress; + } + + public function setVoterServices($voterServices) + { + $this->voterServices = $voterServices; + } + + public function getVoterServices() + { + return $this->voterServices; + } + + public function setVotingLocationFinderUrl($votingLocationFinderUrl) + { + $this->votingLocationFinderUrl = $votingLocationFinderUrl; + } + + public function getVotingLocationFinderUrl() + { + return $this->votingLocationFinderUrl; + } +} + +class Google_Service_CivicInfo_Candidate extends Google_Collection +{ + public $candidateUrl; + protected $channelsType = 'Google_Service_CivicInfo_Channel'; + protected $channelsDataType = 'array'; + public $email; + public $name; + public $orderOnBallot; + public $party; + public $phone; + public $photoUrl; + + public function setCandidateUrl($candidateUrl) + { + $this->candidateUrl = $candidateUrl; + } + + public function getCandidateUrl() + { + return $this->candidateUrl; + } + + public function setChannels($channels) + { + $this->channels = $channels; + } + + public function getChannels() + { + return $this->channels; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setOrderOnBallot($orderOnBallot) + { + $this->orderOnBallot = $orderOnBallot; + } + + public function getOrderOnBallot() + { + return $this->orderOnBallot; + } + + public function setParty($party) + { + $this->party = $party; + } + + public function getParty() + { + return $this->party; + } + + public function setPhone($phone) + { + $this->phone = $phone; + } + + public function getPhone() + { + return $this->phone; + } + + public function setPhotoUrl($photoUrl) + { + $this->photoUrl = $photoUrl; + } + + public function getPhotoUrl() + { + return $this->photoUrl; + } +} + +class Google_Service_CivicInfo_Channel extends Google_Model +{ + public $id; + public $type; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_CivicInfo_Contest extends Google_Collection +{ + public $ballotPlacement; + protected $candidatesType = 'Google_Service_CivicInfo_Candidate'; + protected $candidatesDataType = 'array'; + protected $districtType = 'Google_Service_CivicInfo_ElectoralDistrict'; + protected $districtDataType = ''; + public $electorateSpecifications; + public $id; + public $level; + public $numberElected; + public $numberVotingFor; + public $office; + public $primaryParty; + public $referendumSubtitle; + public $referendumTitle; + public $referendumUrl; + protected $sourcesType = 'Google_Service_CivicInfo_Source'; + protected $sourcesDataType = 'array'; + public $special; + public $type; + + public function setBallotPlacement($ballotPlacement) + { + $this->ballotPlacement = $ballotPlacement; + } + + public function getBallotPlacement() + { + return $this->ballotPlacement; + } + + public function setCandidates($candidates) + { + $this->candidates = $candidates; + } + + public function getCandidates() + { + return $this->candidates; + } + + public function setDistrict(Google_Service_CivicInfo_ElectoralDistrict $district) + { + $this->district = $district; + } + + public function getDistrict() + { + return $this->district; + } + + public function setElectorateSpecifications($electorateSpecifications) + { + $this->electorateSpecifications = $electorateSpecifications; + } + + public function getElectorateSpecifications() + { + return $this->electorateSpecifications; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setLevel($level) + { + $this->level = $level; + } + + public function getLevel() + { + return $this->level; + } + + public function setNumberElected($numberElected) + { + $this->numberElected = $numberElected; + } + + public function getNumberElected() + { + return $this->numberElected; + } + + public function setNumberVotingFor($numberVotingFor) + { + $this->numberVotingFor = $numberVotingFor; + } + + public function getNumberVotingFor() + { + return $this->numberVotingFor; + } + + public function setOffice($office) + { + $this->office = $office; + } + + public function getOffice() + { + return $this->office; + } + + public function setPrimaryParty($primaryParty) + { + $this->primaryParty = $primaryParty; + } + + public function getPrimaryParty() + { + return $this->primaryParty; + } + + public function setReferendumSubtitle($referendumSubtitle) + { + $this->referendumSubtitle = $referendumSubtitle; + } + + public function getReferendumSubtitle() + { + return $this->referendumSubtitle; + } + + public function setReferendumTitle($referendumTitle) + { + $this->referendumTitle = $referendumTitle; + } + + public function getReferendumTitle() + { + return $this->referendumTitle; + } + + public function setReferendumUrl($referendumUrl) + { + $this->referendumUrl = $referendumUrl; + } + + public function getReferendumUrl() + { + return $this->referendumUrl; + } + + public function setSources($sources) + { + $this->sources = $sources; + } + + public function getSources() + { + return $this->sources; + } + + public function setSpecial($special) + { + $this->special = $special; + } + + public function getSpecial() + { + return $this->special; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_CivicInfo_DivisionSearchResponse extends Google_Collection +{ + public $kind; + protected $resultsType = 'Google_Service_CivicInfo_DivisionSearchResult'; + protected $resultsDataType = 'array'; + public $status; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setResults($results) + { + $this->results = $results; + } + + public function getResults() + { + return $this->results; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_CivicInfo_DivisionSearchResult extends Google_Collection +{ + public $aliases; + public $name; + public $ocdId; + + public function setAliases($aliases) + { + $this->aliases = $aliases; + } + + public function getAliases() + { + return $this->aliases; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setOcdId($ocdId) + { + $this->ocdId = $ocdId; + } + + public function getOcdId() + { + return $this->ocdId; + } +} + +class Google_Service_CivicInfo_Election extends Google_Model +{ + public $electionDay; + public $id; + public $name; + + public function setElectionDay($electionDay) + { + $this->electionDay = $electionDay; + } + + public function getElectionDay() + { + return $this->electionDay; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_CivicInfo_ElectionOfficial extends Google_Model +{ + public $emailAddress; + public $faxNumber; + public $name; + public $officePhoneNumber; + public $title; + + public function setEmailAddress($emailAddress) + { + $this->emailAddress = $emailAddress; + } + + public function getEmailAddress() + { + return $this->emailAddress; + } + + public function setFaxNumber($faxNumber) + { + $this->faxNumber = $faxNumber; + } + + public function getFaxNumber() + { + return $this->faxNumber; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setOfficePhoneNumber($officePhoneNumber) + { + $this->officePhoneNumber = $officePhoneNumber; + } + + public function getOfficePhoneNumber() + { + return $this->officePhoneNumber; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_CivicInfo_ElectionsQueryResponse extends Google_Collection +{ + protected $electionsType = 'Google_Service_CivicInfo_Election'; + protected $electionsDataType = 'array'; + public $kind; + + public function setElections($elections) + { + $this->elections = $elections; + } + + public function getElections() + { + return $this->elections; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_CivicInfo_ElectoralDistrict extends Google_Model +{ + public $id; + public $name; + public $scope; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setScope($scope) + { + $this->scope = $scope; + } + + public function getScope() + { + return $this->scope; + } +} + +class Google_Service_CivicInfo_GeographicDivision extends Google_Collection +{ + public $alsoKnownAs; + public $name; + public $officeIds; + public $scope; + + public function setAlsoKnownAs($alsoKnownAs) + { + $this->alsoKnownAs = $alsoKnownAs; + } + + public function getAlsoKnownAs() + { + return $this->alsoKnownAs; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setOfficeIds($officeIds) + { + $this->officeIds = $officeIds; + } + + public function getOfficeIds() + { + return $this->officeIds; + } + + public function setScope($scope) + { + $this->scope = $scope; + } + + public function getScope() + { + return $this->scope; + } +} + +class Google_Service_CivicInfo_Office extends Google_Collection +{ + public $divisionId; + public $level; + public $name; + public $officialIds; + protected $sourcesType = 'Google_Service_CivicInfo_Source'; + protected $sourcesDataType = 'array'; + + public function setDivisionId($divisionId) + { + $this->divisionId = $divisionId; + } + + public function getDivisionId() + { + return $this->divisionId; + } + + public function setLevel($level) + { + $this->level = $level; + } + + public function getLevel() + { + return $this->level; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setOfficialIds($officialIds) + { + $this->officialIds = $officialIds; + } + + public function getOfficialIds() + { + return $this->officialIds; + } + + public function setSources($sources) + { + $this->sources = $sources; + } + + public function getSources() + { + return $this->sources; + } +} + +class Google_Service_CivicInfo_Official extends Google_Collection +{ + protected $addressType = 'Google_Service_CivicInfo_SimpleAddressType'; + protected $addressDataType = 'array'; + protected $channelsType = 'Google_Service_CivicInfo_Channel'; + protected $channelsDataType = 'array'; + public $emails; + public $name; + public $party; + public $phones; + public $photoUrl; + public $urls; + + public function setAddress($address) + { + $this->address = $address; + } + + public function getAddress() + { + return $this->address; + } + + public function setChannels($channels) + { + $this->channels = $channels; + } + + public function getChannels() + { + return $this->channels; + } + + public function setEmails($emails) + { + $this->emails = $emails; + } + + public function getEmails() + { + return $this->emails; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setParty($party) + { + $this->party = $party; + } + + public function getParty() + { + return $this->party; + } + + public function setPhones($phones) + { + $this->phones = $phones; + } + + public function getPhones() + { + return $this->phones; + } + + public function setPhotoUrl($photoUrl) + { + $this->photoUrl = $photoUrl; + } + + public function getPhotoUrl() + { + return $this->photoUrl; + } + + public function setUrls($urls) + { + $this->urls = $urls; + } + + public function getUrls() + { + return $this->urls; + } +} + +class Google_Service_CivicInfo_PollingLocation extends Google_Collection +{ + protected $addressType = 'Google_Service_CivicInfo_SimpleAddressType'; + protected $addressDataType = ''; + public $endDate; + public $id; + public $name; + public $notes; + public $pollingHours; + protected $sourcesType = 'Google_Service_CivicInfo_Source'; + protected $sourcesDataType = 'array'; + public $startDate; + public $voterServices; + + public function setAddress(Google_Service_CivicInfo_SimpleAddressType $address) + { + $this->address = $address; + } + + public function getAddress() + { + return $this->address; + } + + public function setEndDate($endDate) + { + $this->endDate = $endDate; + } + + public function getEndDate() + { + return $this->endDate; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNotes($notes) + { + $this->notes = $notes; + } + + public function getNotes() + { + return $this->notes; + } + + public function setPollingHours($pollingHours) + { + $this->pollingHours = $pollingHours; + } + + public function getPollingHours() + { + return $this->pollingHours; + } + + public function setSources($sources) + { + $this->sources = $sources; + } + + public function getSources() + { + return $this->sources; + } + + public function setStartDate($startDate) + { + $this->startDate = $startDate; + } + + public function getStartDate() + { + return $this->startDate; + } + + public function setVoterServices($voterServices) + { + $this->voterServices = $voterServices; + } + + public function getVoterServices() + { + return $this->voterServices; + } +} + +class Google_Service_CivicInfo_RepresentativeInfoRequest extends Google_Model +{ + public $address; + + public function setAddress($address) + { + $this->address = $address; + } + + public function getAddress() + { + return $this->address; + } +} + +class Google_Service_CivicInfo_RepresentativeInfoResponse extends Google_Model +{ + protected $divisionsType = 'Google_Service_CivicInfo_GeographicDivision'; + protected $divisionsDataType = 'map'; + public $kind; + protected $normalizedInputType = 'Google_Service_CivicInfo_SimpleAddressType'; + protected $normalizedInputDataType = ''; + protected $officesType = 'Google_Service_CivicInfo_Office'; + protected $officesDataType = 'map'; + protected $officialsType = 'Google_Service_CivicInfo_Official'; + protected $officialsDataType = 'map'; + public $status; + + public function setDivisions($divisions) + { + $this->divisions = $divisions; + } + + public function getDivisions() + { + return $this->divisions; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNormalizedInput(Google_Service_CivicInfo_SimpleAddressType $normalizedInput) + { + $this->normalizedInput = $normalizedInput; + } + + public function getNormalizedInput() + { + return $this->normalizedInput; + } + + public function setOffices($offices) + { + $this->offices = $offices; + } + + public function getOffices() + { + return $this->offices; + } + + public function setOfficials($officials) + { + $this->officials = $officials; + } + + public function getOfficials() + { + return $this->officials; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_CivicInfo_RepresentativeInfoResponseDivisions extends Google_Model +{ + +} + +class Google_Service_CivicInfo_RepresentativeInfoResponseOffices extends Google_Model +{ + +} + +class Google_Service_CivicInfo_RepresentativeInfoResponseOfficials extends Google_Model +{ + +} + +class Google_Service_CivicInfo_SimpleAddressType extends Google_Model +{ + public $city; + public $line1; + public $line2; + public $line3; + public $locationName; + public $state; + public $zip; + + public function setCity($city) + { + $this->city = $city; + } + + public function getCity() + { + return $this->city; + } + + public function setLine1($line1) + { + $this->line1 = $line1; + } + + public function getLine1() + { + return $this->line1; + } + + public function setLine2($line2) + { + $this->line2 = $line2; + } + + public function getLine2() + { + return $this->line2; + } + + public function setLine3($line3) + { + $this->line3 = $line3; + } + + public function getLine3() + { + return $this->line3; + } + + public function setLocationName($locationName) + { + $this->locationName = $locationName; + } + + public function getLocationName() + { + return $this->locationName; + } + + public function setState($state) + { + $this->state = $state; + } + + public function getState() + { + return $this->state; + } + + public function setZip($zip) + { + $this->zip = $zip; + } + + public function getZip() + { + return $this->zip; + } +} + +class Google_Service_CivicInfo_Source extends Google_Model +{ + public $name; + public $official; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setOfficial($official) + { + $this->official = $official; + } + + public function getOfficial() + { + return $this->official; + } +} + +class Google_Service_CivicInfo_VoterInfoRequest extends Google_Model +{ + public $address; + + public function setAddress($address) + { + $this->address = $address; + } + + public function getAddress() + { + return $this->address; + } +} + +class Google_Service_CivicInfo_VoterInfoResponse extends Google_Collection +{ + protected $contestsType = 'Google_Service_CivicInfo_Contest'; + protected $contestsDataType = 'array'; + protected $earlyVoteSitesType = 'Google_Service_CivicInfo_PollingLocation'; + protected $earlyVoteSitesDataType = 'array'; + protected $electionType = 'Google_Service_CivicInfo_Election'; + protected $electionDataType = ''; + public $kind; + protected $normalizedInputType = 'Google_Service_CivicInfo_SimpleAddressType'; + protected $normalizedInputDataType = ''; + protected $pollingLocationsType = 'Google_Service_CivicInfo_PollingLocation'; + protected $pollingLocationsDataType = 'array'; + protected $stateType = 'Google_Service_CivicInfo_AdministrationRegion'; + protected $stateDataType = 'array'; + public $status; + + public function setContests($contests) + { + $this->contests = $contests; + } + + public function getContests() + { + return $this->contests; + } + + public function setEarlyVoteSites($earlyVoteSites) + { + $this->earlyVoteSites = $earlyVoteSites; + } + + public function getEarlyVoteSites() + { + return $this->earlyVoteSites; + } + + public function setElection(Google_Service_CivicInfo_Election $election) + { + $this->election = $election; + } + + public function getElection() + { + return $this->election; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNormalizedInput(Google_Service_CivicInfo_SimpleAddressType $normalizedInput) + { + $this->normalizedInput = $normalizedInput; + } + + public function getNormalizedInput() + { + return $this->normalizedInput; + } + + public function setPollingLocations($pollingLocations) + { + $this->pollingLocations = $pollingLocations; + } + + public function getPollingLocations() + { + return $this->pollingLocations; + } + + public function setState($state) + { + $this->state = $state; + } + + public function getState() + { + return $this->state; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} diff --git a/oauth/Google/Service/CloudMonitoring.php b/oauth/Google/Service/CloudMonitoring.php new file mode 100644 index 0000000..03fca0f --- /dev/null +++ b/oauth/Google/Service/CloudMonitoring.php @@ -0,0 +1,974 @@ + + * API for accessing Google Cloud and API monitoring data. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_CloudMonitoring extends Google_Service +{ + /** View monitoring data for all of your Google Cloud and API projects. */ + const MONITORING_READONLY = "https://www.googleapis.com/auth/monitoring.readonly"; + + public $metricDescriptors; + public $timeseries; + public $timeseriesDescriptors; + + + /** + * Constructs the internal representation of the CloudMonitoring service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'cloudmonitoring/v2beta1/projects/'; + $this->version = 'v2beta1'; + $this->serviceName = 'cloudmonitoring'; + + $this->metricDescriptors = new Google_Service_CloudMonitoring_MetricDescriptors_Resource( + $this, + $this->serviceName, + 'metricDescriptors', + array( + 'methods' => array( + 'list' => array( + 'path' => '{project}/metricDescriptors', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'count' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'query' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->timeseries = new Google_Service_CloudMonitoring_Timeseries_Resource( + $this, + $this->serviceName, + 'timeseries', + array( + 'methods' => array( + 'list' => array( + 'path' => '{project}/timeseries/{metric}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'metric' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'youngest' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'count' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'timespan' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'labels' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'oldest' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->timeseriesDescriptors = new Google_Service_CloudMonitoring_TimeseriesDescriptors_Resource( + $this, + $this->serviceName, + 'timeseriesDescriptors', + array( + 'methods' => array( + 'list' => array( + 'path' => '{project}/timeseriesDescriptors/{metric}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'metric' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'youngest' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'count' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'timespan' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'labels' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'oldest' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "metricDescriptors" collection of methods. + * Typical usage is: + * + * $cloudmonitoringService = new Google_Service_CloudMonitoring(...); + * $metricDescriptors = $cloudmonitoringService->metricDescriptors; + * + */ +class Google_Service_CloudMonitoring_MetricDescriptors_Resource extends Google_Service_Resource +{ + + /** + * List metric descriptors that match the query. If the query is not set, then + * all of the metric descriptors will be returned. Large responses will be + * paginated, use the nextPageToken returned in the response to request + * subsequent pages of results by setting the pageToken query parameter to the + * value of the nextPageToken. (metricDescriptors.listMetricDescriptors) + * + * @param string $project + * The project id. The value can be the numeric project ID or string-based project name. + * @param array $optParams Optional parameters. + * + * @opt_param int count + * Maximum number of metric descriptors per page. Used for pagination. If not specified, count = + * 100. + * @opt_param string pageToken + * The pagination token, which is used to page through large result sets. Set this value to the + * value of the nextPageToken to retrieve the next page of results. + * @opt_param string query + * The query used to search against existing metrics. Separate keywords with a space; the service + * joins all keywords with AND, meaning that all keywords must match for a metric to be returned. + * If this field is omitted, all metrics are returned. If an empty string is passed with this + * field, no metrics are returned. + * @return Google_Service_CloudMonitoring_ListMetricDescriptorsResponse + */ + public function listMetricDescriptors($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_CloudMonitoring_ListMetricDescriptorsResponse"); + } +} + +/** + * The "timeseries" collection of methods. + * Typical usage is: + * + * $cloudmonitoringService = new Google_Service_CloudMonitoring(...); + * $timeseries = $cloudmonitoringService->timeseries; + * + */ +class Google_Service_CloudMonitoring_Timeseries_Resource extends Google_Service_Resource +{ + + /** + * List the data points of the time series that match the metric and labels + * values and that have data points in the interval. Large responses are + * paginated; use the nextPageToken returned in the response to request + * subsequent pages of results by setting the pageToken query parameter to the + * value of the nextPageToken. (timeseries.listTimeseries) + * + * @param string $project + * The project ID to which this time series belongs. The value can be the numeric project ID or + * string-based project name. + * @param string $metric + * Metric names are protocol-free URLs as listed in the Supported Metrics page. For example, + * compute.googleapis.com/instance/disk/read_ops_count. + * @param string $youngest + * End of the time interval (inclusive), which is expressed as an RFC 3339 timestamp. + * @param array $optParams Optional parameters. + * + * @opt_param int count + * Maximum number of data points per page, which is used for pagination of results. + * @opt_param string timespan + * Length of the time interval to query, which is an alternative way to declare the interval: + * (youngest - timespan, youngest]. The timespan and oldest parameters should not be used together. + * Units: + - s: second + - m: minute + - h: hour + - d: day + - w: week Examples: 2s, 3m, 4w. Only + * one unit is allowed, for example: 2w3d is not allowed; you should use 17d instead. + If neither + * oldest nor timespan is specified, the default time interval will be (youngest - 4 hours, + * youngest]. + * @opt_param string labels + * A collection of labels for the matching time series, which are represented as: + - key==value: + * key equals the value + - key=~value: key regex matches the value + - key!=value: key does not + * equal the value + - key!~value: key regex does not match the value For example, to list all of + * the time series descriptors for the region us-central1, you could specify: + * label=cloud.googleapis.com%2Flocation=~us-central1.* + * @opt_param string pageToken + * The pagination token, which is used to page through large result sets. Set this value to the + * value of the nextPageToken to retrieve the next page of results. + * @opt_param string oldest + * Start of the time interval (exclusive), which is expressed as an RFC 3339 timestamp. If neither + * oldest nor timespan is specified, the default time interval will be (youngest - 4 hours, + * youngest] + * @return Google_Service_CloudMonitoring_ListTimeseriesResponse + */ + public function listTimeseries($project, $metric, $youngest, $optParams = array()) + { + $params = array('project' => $project, 'metric' => $metric, 'youngest' => $youngest); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_CloudMonitoring_ListTimeseriesResponse"); + } +} + +/** + * The "timeseriesDescriptors" collection of methods. + * Typical usage is: + * + * $cloudmonitoringService = new Google_Service_CloudMonitoring(...); + * $timeseriesDescriptors = $cloudmonitoringService->timeseriesDescriptors; + * + */ +class Google_Service_CloudMonitoring_TimeseriesDescriptors_Resource extends Google_Service_Resource +{ + + /** + * List the descriptors of the time series that match the metric and labels + * values and that have data points in the interval. Large responses are + * paginated; use the nextPageToken returned in the response to request + * subsequent pages of results by setting the pageToken query parameter to the + * value of the nextPageToken. (timeseriesDescriptors.listTimeseriesDescriptors) + * + * @param string $project + * The project ID to which this time series belongs. The value can be the numeric project ID or + * string-based project name. + * @param string $metric + * Metric names are protocol-free URLs as listed in the Supported Metrics page. For example, + * compute.googleapis.com/instance/disk/read_ops_count. + * @param string $youngest + * End of the time interval (inclusive), which is expressed as an RFC 3339 timestamp. + * @param array $optParams Optional parameters. + * + * @opt_param int count + * Maximum number of time series descriptors per page. Used for pagination. If not specified, count + * = 100. + * @opt_param string timespan + * Length of the time interval to query, which is an alternative way to declare the interval: + * (youngest - timespan, youngest]. The timespan and oldest parameters should not be used together. + * Units: + - s: second + - m: minute + - h: hour + - d: day + - w: week Examples: 2s, 3m, 4w. Only + * one unit is allowed, for example: 2w3d is not allowed; you should use 17d instead. + If neither + * oldest nor timespan is specified, the default time interval will be (youngest - 4 hours, + * youngest]. + * @opt_param string labels + * A collection of labels for the matching time series, which are represented as: + - key==value: + * key equals the value + - key=~value: key regex matches the value + - key!=value: key does not + * equal the value + - key!~value: key regex does not match the value For example, to list all of + * the time series descriptors for the region us-central1, you could specify: + * label=cloud.googleapis.com%2Flocation=~us-central1.* + * @opt_param string pageToken + * The pagination token, which is used to page through large result sets. Set this value to the + * value of the nextPageToken to retrieve the next page of results. + * @opt_param string oldest + * Start of the time interval (exclusive), which is expressed as an RFC 3339 timestamp. If neither + * oldest nor timespan is specified, the default time interval will be (youngest - 4 hours, + * youngest] + * @return Google_Service_CloudMonitoring_ListTimeseriesDescriptorsResponse + */ + public function listTimeseriesDescriptors($project, $metric, $youngest, $optParams = array()) + { + $params = array('project' => $project, 'metric' => $metric, 'youngest' => $youngest); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_CloudMonitoring_ListTimeseriesDescriptorsResponse"); + } +} + + + + +class Google_Service_CloudMonitoring_ListMetricDescriptorsRequest extends Google_Model +{ + public $kind; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_CloudMonitoring_ListMetricDescriptorsResponse extends Google_Collection +{ + public $kind; + protected $metricsType = 'Google_Service_CloudMonitoring_MetricDescriptor'; + protected $metricsDataType = 'array'; + public $nextPageToken; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMetrics($metrics) + { + $this->metrics = $metrics; + } + + public function getMetrics() + { + return $this->metrics; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_CloudMonitoring_ListTimeseriesDescriptorsRequest extends Google_Model +{ + public $kind; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_CloudMonitoring_ListTimeseriesDescriptorsResponse extends Google_Collection +{ + public $kind; + public $nextPageToken; + public $oldest; + protected $timeseriesType = 'Google_Service_CloudMonitoring_TimeseriesDescriptor'; + protected $timeseriesDataType = 'array'; + public $youngest; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setOldest($oldest) + { + $this->oldest = $oldest; + } + + public function getOldest() + { + return $this->oldest; + } + + public function setTimeseries($timeseries) + { + $this->timeseries = $timeseries; + } + + public function getTimeseries() + { + return $this->timeseries; + } + + public function setYoungest($youngest) + { + $this->youngest = $youngest; + } + + public function getYoungest() + { + return $this->youngest; + } +} + +class Google_Service_CloudMonitoring_ListTimeseriesRequest extends Google_Model +{ + public $kind; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_CloudMonitoring_ListTimeseriesResponse extends Google_Collection +{ + public $kind; + public $nextPageToken; + public $oldest; + protected $timeseriesType = 'Google_Service_CloudMonitoring_Timeseries'; + protected $timeseriesDataType = 'array'; + public $youngest; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setOldest($oldest) + { + $this->oldest = $oldest; + } + + public function getOldest() + { + return $this->oldest; + } + + public function setTimeseries($timeseries) + { + $this->timeseries = $timeseries; + } + + public function getTimeseries() + { + return $this->timeseries; + } + + public function setYoungest($youngest) + { + $this->youngest = $youngest; + } + + public function getYoungest() + { + return $this->youngest; + } +} + +class Google_Service_CloudMonitoring_MetricDescriptor extends Google_Collection +{ + public $description; + protected $labelsType = 'Google_Service_CloudMonitoring_MetricDescriptorLabelDescriptor'; + protected $labelsDataType = 'array'; + public $name; + public $project; + protected $typeDescriptorType = 'Google_Service_CloudMonitoring_MetricDescriptorTypeDescriptor'; + protected $typeDescriptorDataType = ''; + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setLabels($labels) + { + $this->labels = $labels; + } + + public function getLabels() + { + return $this->labels; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setProject($project) + { + $this->project = $project; + } + + public function getProject() + { + return $this->project; + } + + public function setTypeDescriptor(Google_Service_CloudMonitoring_MetricDescriptorTypeDescriptor $typeDescriptor) + { + $this->typeDescriptor = $typeDescriptor; + } + + public function getTypeDescriptor() + { + return $this->typeDescriptor; + } +} + +class Google_Service_CloudMonitoring_MetricDescriptorLabelDescriptor extends Google_Model +{ + public $description; + public $key; + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } +} + +class Google_Service_CloudMonitoring_MetricDescriptorTypeDescriptor extends Google_Model +{ + public $metricType; + public $valueType; + + public function setMetricType($metricType) + { + $this->metricType = $metricType; + } + + public function getMetricType() + { + return $this->metricType; + } + + public function setValueType($valueType) + { + $this->valueType = $valueType; + } + + public function getValueType() + { + return $this->valueType; + } +} + +class Google_Service_CloudMonitoring_Point extends Google_Model +{ + public $boolValue; + protected $distributionValueType = 'Google_Service_CloudMonitoring_PointDistribution'; + protected $distributionValueDataType = ''; + public $doubleValue; + public $end; + public $int64Value; + public $start; + public $stringValue; + + public function setBoolValue($boolValue) + { + $this->boolValue = $boolValue; + } + + public function getBoolValue() + { + return $this->boolValue; + } + + public function setDistributionValue(Google_Service_CloudMonitoring_PointDistribution $distributionValue) + { + $this->distributionValue = $distributionValue; + } + + public function getDistributionValue() + { + return $this->distributionValue; + } + + public function setDoubleValue($doubleValue) + { + $this->doubleValue = $doubleValue; + } + + public function getDoubleValue() + { + return $this->doubleValue; + } + + public function setEnd($end) + { + $this->end = $end; + } + + public function getEnd() + { + return $this->end; + } + + public function setInt64Value($int64Value) + { + $this->int64Value = $int64Value; + } + + public function getInt64Value() + { + return $this->int64Value; + } + + public function setStart($start) + { + $this->start = $start; + } + + public function getStart() + { + return $this->start; + } + + public function setStringValue($stringValue) + { + $this->stringValue = $stringValue; + } + + public function getStringValue() + { + return $this->stringValue; + } +} + +class Google_Service_CloudMonitoring_PointDistribution extends Google_Collection +{ + protected $bucketsType = 'Google_Service_CloudMonitoring_PointDistributionBucket'; + protected $bucketsDataType = 'array'; + protected $overflowBucketType = 'Google_Service_CloudMonitoring_PointDistributionOverflowBucket'; + protected $overflowBucketDataType = ''; + protected $underflowBucketType = 'Google_Service_CloudMonitoring_PointDistributionUnderflowBucket'; + protected $underflowBucketDataType = ''; + + public function setBuckets($buckets) + { + $this->buckets = $buckets; + } + + public function getBuckets() + { + return $this->buckets; + } + + public function setOverflowBucket(Google_Service_CloudMonitoring_PointDistributionOverflowBucket $overflowBucket) + { + $this->overflowBucket = $overflowBucket; + } + + public function getOverflowBucket() + { + return $this->overflowBucket; + } + + public function setUnderflowBucket(Google_Service_CloudMonitoring_PointDistributionUnderflowBucket $underflowBucket) + { + $this->underflowBucket = $underflowBucket; + } + + public function getUnderflowBucket() + { + return $this->underflowBucket; + } +} + +class Google_Service_CloudMonitoring_PointDistributionBucket extends Google_Model +{ + public $count; + public $lowerBound; + public $upperBound; + + public function setCount($count) + { + $this->count = $count; + } + + public function getCount() + { + return $this->count; + } + + public function setLowerBound($lowerBound) + { + $this->lowerBound = $lowerBound; + } + + public function getLowerBound() + { + return $this->lowerBound; + } + + public function setUpperBound($upperBound) + { + $this->upperBound = $upperBound; + } + + public function getUpperBound() + { + return $this->upperBound; + } +} + +class Google_Service_CloudMonitoring_PointDistributionOverflowBucket extends Google_Model +{ + public $count; + public $lowerBound; + + public function setCount($count) + { + $this->count = $count; + } + + public function getCount() + { + return $this->count; + } + + public function setLowerBound($lowerBound) + { + $this->lowerBound = $lowerBound; + } + + public function getLowerBound() + { + return $this->lowerBound; + } +} + +class Google_Service_CloudMonitoring_PointDistributionUnderflowBucket extends Google_Model +{ + public $count; + public $upperBound; + + public function setCount($count) + { + $this->count = $count; + } + + public function getCount() + { + return $this->count; + } + + public function setUpperBound($upperBound) + { + $this->upperBound = $upperBound; + } + + public function getUpperBound() + { + return $this->upperBound; + } +} + +class Google_Service_CloudMonitoring_Timeseries extends Google_Collection +{ + protected $pointsType = 'Google_Service_CloudMonitoring_Point'; + protected $pointsDataType = 'array'; + protected $timeseriesDescType = 'Google_Service_CloudMonitoring_TimeseriesDescriptor'; + protected $timeseriesDescDataType = ''; + + public function setPoints($points) + { + $this->points = $points; + } + + public function getPoints() + { + return $this->points; + } + + public function setTimeseriesDesc(Google_Service_CloudMonitoring_TimeseriesDescriptor $timeseriesDesc) + { + $this->timeseriesDesc = $timeseriesDesc; + } + + public function getTimeseriesDesc() + { + return $this->timeseriesDesc; + } +} + +class Google_Service_CloudMonitoring_TimeseriesDescriptor extends Google_Model +{ + public $labels; + public $metric; + public $project; + + public function setLabels($labels) + { + $this->labels = $labels; + } + + public function getLabels() + { + return $this->labels; + } + + public function setMetric($metric) + { + $this->metric = $metric; + } + + public function getMetric() + { + return $this->metric; + } + + public function setProject($project) + { + $this->project = $project; + } + + public function getProject() + { + return $this->project; + } +} + +class Google_Service_CloudMonitoring_TimeseriesDescriptorLabels extends Google_Model +{ + +} diff --git a/oauth/Google/Service/Compute.php b/oauth/Google/Service/Compute.php new file mode 100644 index 0000000..4d704e4 --- /dev/null +++ b/oauth/Google/Service/Compute.php @@ -0,0 +1,12549 @@ + + * API for the Google Compute Engine service. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Compute extends Google_Service +{ + /** View and manage your Google Compute Engine resources. */ + const COMPUTE = "https://www.googleapis.com/auth/compute"; + /** View your Google Compute Engine resources. */ + const COMPUTE_READONLY = "https://www.googleapis.com/auth/compute.readonly"; + /** Manage your data and permissions in Google Cloud Storage. */ + const DEVSTORAGE_FULL_CONTROL = "https://www.googleapis.com/auth/devstorage.full_control"; + /** View your data in Google Cloud Storage. */ + const DEVSTORAGE_READ_ONLY = "https://www.googleapis.com/auth/devstorage.read_only"; + /** Manage your data in Google Cloud Storage. */ + const DEVSTORAGE_READ_WRITE = "https://www.googleapis.com/auth/devstorage.read_write"; + + public $addresses; + public $backendServices; + public $diskTypes; + public $disks; + public $firewalls; + public $forwardingRules; + public $globalAddresses; + public $globalForwardingRules; + public $globalOperations; + public $httpHealthChecks; + public $images; + public $instances; + public $licenses; + public $machineTypes; + public $networks; + public $projects; + public $regionOperations; + public $regions; + public $routes; + public $snapshots; + public $targetHttpProxies; + public $targetInstances; + public $targetPools; + public $urlMaps; + public $zoneOperations; + public $zones; + + + /** + * Constructs the internal representation of the Compute service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'compute/v1/projects/'; + $this->version = 'v1'; + $this->serviceName = 'compute'; + + $this->addresses = new Google_Service_Compute_Addresses_Resource( + $this, + $this->serviceName, + 'addresses', + array( + 'methods' => array( + 'aggregatedList' => array( + 'path' => '{project}/aggregated/addresses', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'delete' => array( + 'path' => '{project}/regions/{region}/addresses/{address}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'address' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/regions/{region}/addresses/{address}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'address' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{project}/regions/{region}/addresses', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/regions/{region}/addresses', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->backendServices = new Google_Service_Compute_BackendServices_Resource( + $this, + $this->serviceName, + 'backendServices', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{project}/global/backendServices/{backendService}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'backendService' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/global/backendServices/{backendService}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'backendService' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'getHealth' => array( + 'path' => '{project}/global/backendServices/{backendService}/getHealth', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'backendService' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{project}/global/backendServices', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/global/backendServices', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => '{project}/global/backendServices/{backendService}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'backendService' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => '{project}/global/backendServices/{backendService}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'backendService' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->diskTypes = new Google_Service_Compute_DiskTypes_Resource( + $this, + $this->serviceName, + 'diskTypes', + array( + 'methods' => array( + 'aggregatedList' => array( + 'path' => '{project}/aggregated/diskTypes', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'get' => array( + 'path' => '{project}/zones/{zone}/diskTypes/{diskType}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'diskType' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/zones/{zone}/diskTypes', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->disks = new Google_Service_Compute_Disks_Resource( + $this, + $this->serviceName, + 'disks', + array( + 'methods' => array( + 'aggregatedList' => array( + 'path' => '{project}/aggregated/disks', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'createSnapshot' => array( + 'path' => '{project}/zones/{zone}/disks/{disk}/createSnapshot', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'disk' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => '{project}/zones/{zone}/disks/{disk}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'disk' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/zones/{zone}/disks/{disk}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'disk' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{project}/zones/{zone}/disks', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sourceImage' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => '{project}/zones/{zone}/disks', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->firewalls = new Google_Service_Compute_Firewalls_Resource( + $this, + $this->serviceName, + 'firewalls', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{project}/global/firewalls/{firewall}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'firewall' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/global/firewalls/{firewall}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'firewall' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{project}/global/firewalls', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/global/firewalls', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => '{project}/global/firewalls/{firewall}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'firewall' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => '{project}/global/firewalls/{firewall}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'firewall' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->forwardingRules = new Google_Service_Compute_ForwardingRules_Resource( + $this, + $this->serviceName, + 'forwardingRules', + array( + 'methods' => array( + 'aggregatedList' => array( + 'path' => '{project}/aggregated/forwardingRules', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'delete' => array( + 'path' => '{project}/regions/{region}/forwardingRules/{forwardingRule}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'forwardingRule' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/regions/{region}/forwardingRules/{forwardingRule}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'forwardingRule' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{project}/regions/{region}/forwardingRules', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/regions/{region}/forwardingRules', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'setTarget' => array( + 'path' => '{project}/regions/{region}/forwardingRules/{forwardingRule}/setTarget', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'forwardingRule' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->globalAddresses = new Google_Service_Compute_GlobalAddresses_Resource( + $this, + $this->serviceName, + 'globalAddresses', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{project}/global/addresses/{address}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'address' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/global/addresses/{address}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'address' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{project}/global/addresses', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/global/addresses', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->globalForwardingRules = new Google_Service_Compute_GlobalForwardingRules_Resource( + $this, + $this->serviceName, + 'globalForwardingRules', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{project}/global/forwardingRules/{forwardingRule}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'forwardingRule' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/global/forwardingRules/{forwardingRule}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'forwardingRule' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{project}/global/forwardingRules', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/global/forwardingRules', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'setTarget' => array( + 'path' => '{project}/global/forwardingRules/{forwardingRule}/setTarget', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'forwardingRule' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->globalOperations = new Google_Service_Compute_GlobalOperations_Resource( + $this, + $this->serviceName, + 'globalOperations', + array( + 'methods' => array( + 'aggregatedList' => array( + 'path' => '{project}/aggregated/operations', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'delete' => array( + 'path' => '{project}/global/operations/{operation}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'operation' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/global/operations/{operation}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'operation' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/global/operations', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->httpHealthChecks = new Google_Service_Compute_HttpHealthChecks_Resource( + $this, + $this->serviceName, + 'httpHealthChecks', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{project}/global/httpHealthChecks/{httpHealthCheck}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'httpHealthCheck' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/global/httpHealthChecks/{httpHealthCheck}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'httpHealthCheck' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{project}/global/httpHealthChecks', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/global/httpHealthChecks', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => '{project}/global/httpHealthChecks/{httpHealthCheck}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'httpHealthCheck' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => '{project}/global/httpHealthChecks/{httpHealthCheck}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'httpHealthCheck' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->images = new Google_Service_Compute_Images_Resource( + $this, + $this->serviceName, + 'images', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{project}/global/images/{image}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'image' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'deprecate' => array( + 'path' => '{project}/global/images/{image}/deprecate', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'image' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/global/images/{image}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'image' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{project}/global/images', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/global/images', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->instances = new Google_Service_Compute_Instances_Resource( + $this, + $this->serviceName, + 'instances', + array( + 'methods' => array( + 'addAccessConfig' => array( + 'path' => '{project}/zones/{zone}/instances/{instance}/addAccessConfig', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'networkInterface' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ),'aggregatedList' => array( + 'path' => '{project}/aggregated/instances', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'attachDisk' => array( + 'path' => '{project}/zones/{zone}/instances/{instance}/attachDisk', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => '{project}/zones/{zone}/instances/{instance}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'deleteAccessConfig' => array( + 'path' => '{project}/zones/{zone}/instances/{instance}/deleteAccessConfig', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'accessConfig' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'networkInterface' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ),'detachDisk' => array( + 'path' => '{project}/zones/{zone}/instances/{instance}/detachDisk', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'deviceName' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/zones/{zone}/instances/{instance}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'getSerialPortOutput' => array( + 'path' => '{project}/zones/{zone}/instances/{instance}/serialPort', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{project}/zones/{zone}/instances', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/zones/{zone}/instances', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'reset' => array( + 'path' => '{project}/zones/{zone}/instances/{instance}/reset', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'setDiskAutoDelete' => array( + 'path' => '{project}/zones/{zone}/instances/{instance}/setDiskAutoDelete', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'autoDelete' => array( + 'location' => 'query', + 'type' => 'boolean', + 'required' => true, + ), + 'deviceName' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ),'setMetadata' => array( + 'path' => '{project}/zones/{zone}/instances/{instance}/setMetadata', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'setScheduling' => array( + 'path' => '{project}/zones/{zone}/instances/{instance}/setScheduling', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'setTags' => array( + 'path' => '{project}/zones/{zone}/instances/{instance}/setTags', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->licenses = new Google_Service_Compute_Licenses_Resource( + $this, + $this->serviceName, + 'licenses', + array( + 'methods' => array( + 'get' => array( + 'path' => '{project}/global/licenses/{license}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'license' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->machineTypes = new Google_Service_Compute_MachineTypes_Resource( + $this, + $this->serviceName, + 'machineTypes', + array( + 'methods' => array( + 'aggregatedList' => array( + 'path' => '{project}/aggregated/machineTypes', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'get' => array( + 'path' => '{project}/zones/{zone}/machineTypes/{machineType}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'machineType' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/zones/{zone}/machineTypes', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->networks = new Google_Service_Compute_Networks_Resource( + $this, + $this->serviceName, + 'networks', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{project}/global/networks/{network}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'network' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/global/networks/{network}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'network' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{project}/global/networks', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/global/networks', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->projects = new Google_Service_Compute_Projects_Resource( + $this, + $this->serviceName, + 'projects', + array( + 'methods' => array( + 'get' => array( + 'path' => '{project}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'setCommonInstanceMetadata' => array( + 'path' => '{project}/setCommonInstanceMetadata', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'setUsageExportBucket' => array( + 'path' => '{project}/setUsageExportBucket', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->regionOperations = new Google_Service_Compute_RegionOperations_Resource( + $this, + $this->serviceName, + 'regionOperations', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{project}/regions/{region}/operations/{operation}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'operation' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/regions/{region}/operations/{operation}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'operation' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/regions/{region}/operations', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->regions = new Google_Service_Compute_Regions_Resource( + $this, + $this->serviceName, + 'regions', + array( + 'methods' => array( + 'get' => array( + 'path' => '{project}/regions/{region}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/regions', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->routes = new Google_Service_Compute_Routes_Resource( + $this, + $this->serviceName, + 'routes', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{project}/global/routes/{route}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'route' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/global/routes/{route}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'route' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{project}/global/routes', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/global/routes', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->snapshots = new Google_Service_Compute_Snapshots_Resource( + $this, + $this->serviceName, + 'snapshots', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{project}/global/snapshots/{snapshot}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'snapshot' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/global/snapshots/{snapshot}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'snapshot' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/global/snapshots', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->targetHttpProxies = new Google_Service_Compute_TargetHttpProxies_Resource( + $this, + $this->serviceName, + 'targetHttpProxies', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{project}/global/targetHttpProxies/{targetHttpProxy}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'targetHttpProxy' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/global/targetHttpProxies/{targetHttpProxy}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'targetHttpProxy' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{project}/global/targetHttpProxies', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/global/targetHttpProxies', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'setUrlMap' => array( + 'path' => '{project}/targetHttpProxies/{targetHttpProxy}/setUrlMap', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'targetHttpProxy' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->targetInstances = new Google_Service_Compute_TargetInstances_Resource( + $this, + $this->serviceName, + 'targetInstances', + array( + 'methods' => array( + 'aggregatedList' => array( + 'path' => '{project}/aggregated/targetInstances', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'delete' => array( + 'path' => '{project}/zones/{zone}/targetInstances/{targetInstance}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'targetInstance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/zones/{zone}/targetInstances/{targetInstance}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'targetInstance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{project}/zones/{zone}/targetInstances', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/zones/{zone}/targetInstances', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->targetPools = new Google_Service_Compute_TargetPools_Resource( + $this, + $this->serviceName, + 'targetPools', + array( + 'methods' => array( + 'addHealthCheck' => array( + 'path' => '{project}/regions/{region}/targetPools/{targetPool}/addHealthCheck', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'targetPool' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'addInstance' => array( + 'path' => '{project}/regions/{region}/targetPools/{targetPool}/addInstance', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'targetPool' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'aggregatedList' => array( + 'path' => '{project}/aggregated/targetPools', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'delete' => array( + 'path' => '{project}/regions/{region}/targetPools/{targetPool}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'targetPool' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/regions/{region}/targetPools/{targetPool}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'targetPool' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'getHealth' => array( + 'path' => '{project}/regions/{region}/targetPools/{targetPool}/getHealth', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'targetPool' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{project}/regions/{region}/targetPools', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/regions/{region}/targetPools', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'removeHealthCheck' => array( + 'path' => '{project}/regions/{region}/targetPools/{targetPool}/removeHealthCheck', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'targetPool' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'removeInstance' => array( + 'path' => '{project}/regions/{region}/targetPools/{targetPool}/removeInstance', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'targetPool' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'setBackup' => array( + 'path' => '{project}/regions/{region}/targetPools/{targetPool}/setBackup', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'targetPool' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'failoverRatio' => array( + 'location' => 'query', + 'type' => 'number', + ), + ), + ), + ) + ) + ); + $this->urlMaps = new Google_Service_Compute_UrlMaps_Resource( + $this, + $this->serviceName, + 'urlMaps', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{project}/global/urlMaps/{urlMap}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'urlMap' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/global/urlMaps/{urlMap}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'urlMap' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{project}/global/urlMaps', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/global/urlMaps', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => '{project}/global/urlMaps/{urlMap}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'urlMap' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => '{project}/global/urlMaps/{urlMap}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'urlMap' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'validate' => array( + 'path' => '{project}/global/urlMaps/{urlMap}/validate', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'urlMap' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->zoneOperations = new Google_Service_Compute_ZoneOperations_Resource( + $this, + $this->serviceName, + 'zoneOperations', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{project}/zones/{zone}/operations/{operation}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'operation' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/zones/{zone}/operations/{operation}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'operation' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/zones/{zone}/operations', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->zones = new Google_Service_Compute_Zones_Resource( + $this, + $this->serviceName, + 'zones', + array( + 'methods' => array( + 'get' => array( + 'path' => '{project}/zones/{zone}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/zones', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "addresses" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $addresses = $computeService->addresses; + * + */ +class Google_Service_Compute_Addresses_Resource extends Google_Service_Resource +{ + + /** + * Retrieves the list of addresses grouped by scope. (addresses.aggregatedList) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_AddressAggregatedList + */ + public function aggregatedList($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('aggregatedList', array($params), "Google_Service_Compute_AddressAggregatedList"); + } + /** + * Deletes the specified address resource. (addresses.delete) + * + * @param string $project + * Name of the project scoping this request. + * @param string $region + * Name of the region scoping this request. + * @param string $address + * Name of the address resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function delete($project, $region, $address, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region, 'address' => $address); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Compute_Operation"); + } + /** + * Returns the specified address resource. (addresses.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $region + * Name of the region scoping this request. + * @param string $address + * Name of the address resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Address + */ + public function get($project, $region, $address, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region, 'address' => $address); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_Address"); + } + /** + * Creates an address resource in the specified project using the data included + * in the request. (addresses.insert) + * + * @param string $project + * Name of the project scoping this request. + * @param string $region + * Name of the region scoping this request. + * @param Google_Address $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function insert($project, $region, Google_Service_Compute_Address $postBody, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Compute_Operation"); + } + /** + * Retrieves the list of address resources contained within the specified + * region. (addresses.listAddresses) + * + * @param string $project + * Name of the project scoping this request. + * @param string $region + * Name of the region scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_AddressList + */ + public function listAddresses($project, $region, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_AddressList"); + } +} + +/** + * The "backendServices" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $backendServices = $computeService->backendServices; + * + */ +class Google_Service_Compute_BackendServices_Resource extends Google_Service_Resource +{ + + /** + * Deletes the specified BackendService resource. (backendServices.delete) + * + * @param string $project + * Name of the project scoping this request. + * @param string $backendService + * Name of the BackendService resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function delete($project, $backendService, $optParams = array()) + { + $params = array('project' => $project, 'backendService' => $backendService); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Compute_Operation"); + } + /** + * Returns the specified BackendService resource. (backendServices.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $backendService + * Name of the BackendService resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_BackendService + */ + public function get($project, $backendService, $optParams = array()) + { + $params = array('project' => $project, 'backendService' => $backendService); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_BackendService"); + } + /** + * Gets the most recent health check results for this BackendService. + * (backendServices.getHealth) + * + * @param string $project + * + * @param string $backendService + * Name of the BackendService resource to which the queried instance belongs. + * @param Google_ResourceGroupReference $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_BackendServiceGroupHealth + */ + public function getHealth($project, $backendService, Google_Service_Compute_ResourceGroupReference $postBody, $optParams = array()) + { + $params = array('project' => $project, 'backendService' => $backendService, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('getHealth', array($params), "Google_Service_Compute_BackendServiceGroupHealth"); + } + /** + * Creates a BackendService resource in the specified project using the data + * included in the request. (backendServices.insert) + * + * @param string $project + * Name of the project scoping this request. + * @param Google_BackendService $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function insert($project, Google_Service_Compute_BackendService $postBody, $optParams = array()) + { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Compute_Operation"); + } + /** + * Retrieves the list of BackendService resources available to the specified + * project. (backendServices.listBackendServices) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_BackendServiceList + */ + public function listBackendServices($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_BackendServiceList"); + } + /** + * Update the entire content of the BackendService resource. This method + * supports patch semantics. (backendServices.patch) + * + * @param string $project + * Name of the project scoping this request. + * @param string $backendService + * Name of the BackendService resource to update. + * @param Google_BackendService $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function patch($project, $backendService, Google_Service_Compute_BackendService $postBody, $optParams = array()) + { + $params = array('project' => $project, 'backendService' => $backendService, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Compute_Operation"); + } + /** + * Update the entire content of the BackendService resource. + * (backendServices.update) + * + * @param string $project + * Name of the project scoping this request. + * @param string $backendService + * Name of the BackendService resource to update. + * @param Google_BackendService $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function update($project, $backendService, Google_Service_Compute_BackendService $postBody, $optParams = array()) + { + $params = array('project' => $project, 'backendService' => $backendService, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Compute_Operation"); + } +} + +/** + * The "diskTypes" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $diskTypes = $computeService->diskTypes; + * + */ +class Google_Service_Compute_DiskTypes_Resource extends Google_Service_Resource +{ + + /** + * Retrieves the list of disk type resources grouped by scope. + * (diskTypes.aggregatedList) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_DiskTypeAggregatedList + */ + public function aggregatedList($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('aggregatedList', array($params), "Google_Service_Compute_DiskTypeAggregatedList"); + } + /** + * Returns the specified disk type resource. (diskTypes.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param string $diskType + * Name of the disk type resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_DiskType + */ + public function get($project, $zone, $diskType, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'diskType' => $diskType); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_DiskType"); + } + /** + * Retrieves the list of disk type resources available to the specified project. + * (diskTypes.listDiskTypes) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_DiskTypeList + */ + public function listDiskTypes($project, $zone, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_DiskTypeList"); + } +} + +/** + * The "disks" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $disks = $computeService->disks; + * + */ +class Google_Service_Compute_Disks_Resource extends Google_Service_Resource +{ + + /** + * Retrieves the list of disks grouped by scope. (disks.aggregatedList) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_DiskAggregatedList + */ + public function aggregatedList($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('aggregatedList', array($params), "Google_Service_Compute_DiskAggregatedList"); + } + /** + * (disks.createSnapshot) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param string $disk + * Name of the persistent disk resource to snapshot. + * @param Google_Snapshot $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function createSnapshot($project, $zone, $disk, Google_Service_Compute_Snapshot $postBody, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'disk' => $disk, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('createSnapshot', array($params), "Google_Service_Compute_Operation"); + } + /** + * Deletes the specified persistent disk resource. (disks.delete) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param string $disk + * Name of the persistent disk resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function delete($project, $zone, $disk, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'disk' => $disk); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Compute_Operation"); + } + /** + * Returns the specified persistent disk resource. (disks.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param string $disk + * Name of the persistent disk resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Disk + */ + public function get($project, $zone, $disk, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'disk' => $disk); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_Disk"); + } + /** + * Creates a persistent disk resource in the specified project using the data + * included in the request. (disks.insert) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param Google_Disk $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string sourceImage + * Optional. Source image to restore onto a disk. + * @return Google_Service_Compute_Operation + */ + public function insert($project, $zone, Google_Service_Compute_Disk $postBody, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Compute_Operation"); + } + /** + * Retrieves the list of persistent disk resources contained within the + * specified zone. (disks.listDisks) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_DiskList + */ + public function listDisks($project, $zone, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_DiskList"); + } +} + +/** + * The "firewalls" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $firewalls = $computeService->firewalls; + * + */ +class Google_Service_Compute_Firewalls_Resource extends Google_Service_Resource +{ + + /** + * Deletes the specified firewall resource. (firewalls.delete) + * + * @param string $project + * Name of the project scoping this request. + * @param string $firewall + * Name of the firewall resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function delete($project, $firewall, $optParams = array()) + { + $params = array('project' => $project, 'firewall' => $firewall); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Compute_Operation"); + } + /** + * Returns the specified firewall resource. (firewalls.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $firewall + * Name of the firewall resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Firewall + */ + public function get($project, $firewall, $optParams = array()) + { + $params = array('project' => $project, 'firewall' => $firewall); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_Firewall"); + } + /** + * Creates a firewall resource in the specified project using the data included + * in the request. (firewalls.insert) + * + * @param string $project + * Name of the project scoping this request. + * @param Google_Firewall $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function insert($project, Google_Service_Compute_Firewall $postBody, $optParams = array()) + { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Compute_Operation"); + } + /** + * Retrieves the list of firewall resources available to the specified project. + * (firewalls.listFirewalls) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_FirewallList + */ + public function listFirewalls($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_FirewallList"); + } + /** + * Updates the specified firewall resource with the data included in the + * request. This method supports patch semantics. (firewalls.patch) + * + * @param string $project + * Name of the project scoping this request. + * @param string $firewall + * Name of the firewall resource to update. + * @param Google_Firewall $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function patch($project, $firewall, Google_Service_Compute_Firewall $postBody, $optParams = array()) + { + $params = array('project' => $project, 'firewall' => $firewall, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Compute_Operation"); + } + /** + * Updates the specified firewall resource with the data included in the + * request. (firewalls.update) + * + * @param string $project + * Name of the project scoping this request. + * @param string $firewall + * Name of the firewall resource to update. + * @param Google_Firewall $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function update($project, $firewall, Google_Service_Compute_Firewall $postBody, $optParams = array()) + { + $params = array('project' => $project, 'firewall' => $firewall, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Compute_Operation"); + } +} + +/** + * The "forwardingRules" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $forwardingRules = $computeService->forwardingRules; + * + */ +class Google_Service_Compute_ForwardingRules_Resource extends Google_Service_Resource +{ + + /** + * Retrieves the list of forwarding rules grouped by scope. + * (forwardingRules.aggregatedList) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_ForwardingRuleAggregatedList + */ + public function aggregatedList($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('aggregatedList', array($params), "Google_Service_Compute_ForwardingRuleAggregatedList"); + } + /** + * Deletes the specified ForwardingRule resource. (forwardingRules.delete) + * + * @param string $project + * Name of the project scoping this request. + * @param string $region + * Name of the region scoping this request. + * @param string $forwardingRule + * Name of the ForwardingRule resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function delete($project, $region, $forwardingRule, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region, 'forwardingRule' => $forwardingRule); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Compute_Operation"); + } + /** + * Returns the specified ForwardingRule resource. (forwardingRules.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $region + * Name of the region scoping this request. + * @param string $forwardingRule + * Name of the ForwardingRule resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_ForwardingRule + */ + public function get($project, $region, $forwardingRule, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region, 'forwardingRule' => $forwardingRule); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_ForwardingRule"); + } + /** + * Creates a ForwardingRule resource in the specified project and region using + * the data included in the request. (forwardingRules.insert) + * + * @param string $project + * Name of the project scoping this request. + * @param string $region + * Name of the region scoping this request. + * @param Google_ForwardingRule $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function insert($project, $region, Google_Service_Compute_ForwardingRule $postBody, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Compute_Operation"); + } + /** + * Retrieves the list of ForwardingRule resources available to the specified + * project and region. (forwardingRules.listForwardingRules) + * + * @param string $project + * Name of the project scoping this request. + * @param string $region + * Name of the region scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_ForwardingRuleList + */ + public function listForwardingRules($project, $region, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_ForwardingRuleList"); + } + /** + * Changes target url for forwarding rule. (forwardingRules.setTarget) + * + * @param string $project + * Name of the project scoping this request. + * @param string $region + * Name of the region scoping this request. + * @param string $forwardingRule + * Name of the ForwardingRule resource in which target is to be set. + * @param Google_TargetReference $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function setTarget($project, $region, $forwardingRule, Google_Service_Compute_TargetReference $postBody, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region, 'forwardingRule' => $forwardingRule, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('setTarget', array($params), "Google_Service_Compute_Operation"); + } +} + +/** + * The "globalAddresses" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $globalAddresses = $computeService->globalAddresses; + * + */ +class Google_Service_Compute_GlobalAddresses_Resource extends Google_Service_Resource +{ + + /** + * Deletes the specified address resource. (globalAddresses.delete) + * + * @param string $project + * Name of the project scoping this request. + * @param string $address + * Name of the address resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function delete($project, $address, $optParams = array()) + { + $params = array('project' => $project, 'address' => $address); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Compute_Operation"); + } + /** + * Returns the specified address resource. (globalAddresses.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $address + * Name of the address resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Address + */ + public function get($project, $address, $optParams = array()) + { + $params = array('project' => $project, 'address' => $address); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_Address"); + } + /** + * Creates an address resource in the specified project using the data included + * in the request. (globalAddresses.insert) + * + * @param string $project + * Name of the project scoping this request. + * @param Google_Address $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function insert($project, Google_Service_Compute_Address $postBody, $optParams = array()) + { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Compute_Operation"); + } + /** + * Retrieves the list of global address resources. + * (globalAddresses.listGlobalAddresses) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_AddressList + */ + public function listGlobalAddresses($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_AddressList"); + } +} + +/** + * The "globalForwardingRules" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $globalForwardingRules = $computeService->globalForwardingRules; + * + */ +class Google_Service_Compute_GlobalForwardingRules_Resource extends Google_Service_Resource +{ + + /** + * Deletes the specified ForwardingRule resource. (globalForwardingRules.delete) + * + * @param string $project + * Name of the project scoping this request. + * @param string $forwardingRule + * Name of the ForwardingRule resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function delete($project, $forwardingRule, $optParams = array()) + { + $params = array('project' => $project, 'forwardingRule' => $forwardingRule); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Compute_Operation"); + } + /** + * Returns the specified ForwardingRule resource. (globalForwardingRules.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $forwardingRule + * Name of the ForwardingRule resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_ForwardingRule + */ + public function get($project, $forwardingRule, $optParams = array()) + { + $params = array('project' => $project, 'forwardingRule' => $forwardingRule); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_ForwardingRule"); + } + /** + * Creates a ForwardingRule resource in the specified project and region using + * the data included in the request. (globalForwardingRules.insert) + * + * @param string $project + * Name of the project scoping this request. + * @param Google_ForwardingRule $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function insert($project, Google_Service_Compute_ForwardingRule $postBody, $optParams = array()) + { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Compute_Operation"); + } + /** + * Retrieves the list of ForwardingRule resources available to the specified + * project. (globalForwardingRules.listGlobalForwardingRules) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_ForwardingRuleList + */ + public function listGlobalForwardingRules($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_ForwardingRuleList"); + } + /** + * Changes target url for forwarding rule. (globalForwardingRules.setTarget) + * + * @param string $project + * Name of the project scoping this request. + * @param string $forwardingRule + * Name of the ForwardingRule resource in which target is to be set. + * @param Google_TargetReference $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function setTarget($project, $forwardingRule, Google_Service_Compute_TargetReference $postBody, $optParams = array()) + { + $params = array('project' => $project, 'forwardingRule' => $forwardingRule, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('setTarget', array($params), "Google_Service_Compute_Operation"); + } +} + +/** + * The "globalOperations" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $globalOperations = $computeService->globalOperations; + * + */ +class Google_Service_Compute_GlobalOperations_Resource extends Google_Service_Resource +{ + + /** + * Retrieves the list of all operations grouped by scope. + * (globalOperations.aggregatedList) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_OperationAggregatedList + */ + public function aggregatedList($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('aggregatedList', array($params), "Google_Service_Compute_OperationAggregatedList"); + } + /** + * Deletes the specified operation resource. (globalOperations.delete) + * + * @param string $project + * Name of the project scoping this request. + * @param string $operation + * Name of the operation resource to delete. + * @param array $optParams Optional parameters. + */ + public function delete($project, $operation, $optParams = array()) + { + $params = array('project' => $project, 'operation' => $operation); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves the specified operation resource. (globalOperations.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $operation + * Name of the operation resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function get($project, $operation, $optParams = array()) + { + $params = array('project' => $project, 'operation' => $operation); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_Operation"); + } + /** + * Retrieves the list of operation resources contained within the specified + * project. (globalOperations.listGlobalOperations) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_OperationList + */ + public function listGlobalOperations($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_OperationList"); + } +} + +/** + * The "httpHealthChecks" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $httpHealthChecks = $computeService->httpHealthChecks; + * + */ +class Google_Service_Compute_HttpHealthChecks_Resource extends Google_Service_Resource +{ + + /** + * Deletes the specified HttpHealthCheck resource. (httpHealthChecks.delete) + * + * @param string $project + * Name of the project scoping this request. + * @param string $httpHealthCheck + * Name of the HttpHealthCheck resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function delete($project, $httpHealthCheck, $optParams = array()) + { + $params = array('project' => $project, 'httpHealthCheck' => $httpHealthCheck); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Compute_Operation"); + } + /** + * Returns the specified HttpHealthCheck resource. (httpHealthChecks.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $httpHealthCheck + * Name of the HttpHealthCheck resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_HttpHealthCheck + */ + public function get($project, $httpHealthCheck, $optParams = array()) + { + $params = array('project' => $project, 'httpHealthCheck' => $httpHealthCheck); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_HttpHealthCheck"); + } + /** + * Creates a HttpHealthCheck resource in the specified project using the data + * included in the request. (httpHealthChecks.insert) + * + * @param string $project + * Name of the project scoping this request. + * @param Google_HttpHealthCheck $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function insert($project, Google_Service_Compute_HttpHealthCheck $postBody, $optParams = array()) + { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Compute_Operation"); + } + /** + * Retrieves the list of HttpHealthCheck resources available to the specified + * project. (httpHealthChecks.listHttpHealthChecks) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_HttpHealthCheckList + */ + public function listHttpHealthChecks($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_HttpHealthCheckList"); + } + /** + * Updates a HttpHealthCheck resource in the specified project using the data + * included in the request. This method supports patch semantics. + * (httpHealthChecks.patch) + * + * @param string $project + * Name of the project scoping this request. + * @param string $httpHealthCheck + * Name of the HttpHealthCheck resource to update. + * @param Google_HttpHealthCheck $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function patch($project, $httpHealthCheck, Google_Service_Compute_HttpHealthCheck $postBody, $optParams = array()) + { + $params = array('project' => $project, 'httpHealthCheck' => $httpHealthCheck, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Compute_Operation"); + } + /** + * Updates a HttpHealthCheck resource in the specified project using the data + * included in the request. (httpHealthChecks.update) + * + * @param string $project + * Name of the project scoping this request. + * @param string $httpHealthCheck + * Name of the HttpHealthCheck resource to update. + * @param Google_HttpHealthCheck $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function update($project, $httpHealthCheck, Google_Service_Compute_HttpHealthCheck $postBody, $optParams = array()) + { + $params = array('project' => $project, 'httpHealthCheck' => $httpHealthCheck, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Compute_Operation"); + } +} + +/** + * The "images" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $images = $computeService->images; + * + */ +class Google_Service_Compute_Images_Resource extends Google_Service_Resource +{ + + /** + * Deletes the specified image resource. (images.delete) + * + * @param string $project + * Name of the project scoping this request. + * @param string $image + * Name of the image resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function delete($project, $image, $optParams = array()) + { + $params = array('project' => $project, 'image' => $image); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Compute_Operation"); + } + /** + * Sets the deprecation status of an image. If no message body is given, clears + * the deprecation status instead. (images.deprecate) + * + * @param string $project + * Name of the project scoping this request. + * @param string $image + * Image name. + * @param Google_DeprecationStatus $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function deprecate($project, $image, Google_Service_Compute_DeprecationStatus $postBody, $optParams = array()) + { + $params = array('project' => $project, 'image' => $image, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('deprecate', array($params), "Google_Service_Compute_Operation"); + } + /** + * Returns the specified image resource. (images.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $image + * Name of the image resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Image + */ + public function get($project, $image, $optParams = array()) + { + $params = array('project' => $project, 'image' => $image); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_Image"); + } + /** + * Creates an image resource in the specified project using the data included in + * the request. (images.insert) + * + * @param string $project + * Name of the project scoping this request. + * @param Google_Image $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function insert($project, Google_Service_Compute_Image $postBody, $optParams = array()) + { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Compute_Operation"); + } + /** + * Retrieves the list of image resources available to the specified project. + * (images.listImages) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_ImageList + */ + public function listImages($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_ImageList"); + } +} + +/** + * The "instances" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $instances = $computeService->instances; + * + */ +class Google_Service_Compute_Instances_Resource extends Google_Service_Resource +{ + + /** + * Adds an access config to an instance's network interface. + * (instances.addAccessConfig) + * + * @param string $project + * Project name. + * @param string $zone + * Name of the zone scoping this request. + * @param string $instance + * Instance name. + * @param string $networkInterface + * Network interface name. + * @param Google_AccessConfig $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function addAccessConfig($project, $zone, $instance, $networkInterface, Google_Service_Compute_AccessConfig $postBody, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'instance' => $instance, 'networkInterface' => $networkInterface, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('addAccessConfig', array($params), "Google_Service_Compute_Operation"); + } + /** + * (instances.aggregatedList) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_InstanceAggregatedList + */ + public function aggregatedList($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('aggregatedList', array($params), "Google_Service_Compute_InstanceAggregatedList"); + } + /** + * Attaches a disk resource to an instance. (instances.attachDisk) + * + * @param string $project + * Project name. + * @param string $zone + * Name of the zone scoping this request. + * @param string $instance + * Instance name. + * @param Google_AttachedDisk $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function attachDisk($project, $zone, $instance, Google_Service_Compute_AttachedDisk $postBody, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'instance' => $instance, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('attachDisk', array($params), "Google_Service_Compute_Operation"); + } + /** + * Deletes the specified instance resource. (instances.delete) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param string $instance + * Name of the instance resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function delete($project, $zone, $instance, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'instance' => $instance); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Compute_Operation"); + } + /** + * Deletes an access config from an instance's network interface. + * (instances.deleteAccessConfig) + * + * @param string $project + * Project name. + * @param string $zone + * Name of the zone scoping this request. + * @param string $instance + * Instance name. + * @param string $accessConfig + * Access config name. + * @param string $networkInterface + * Network interface name. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function deleteAccessConfig($project, $zone, $instance, $accessConfig, $networkInterface, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'instance' => $instance, 'accessConfig' => $accessConfig, 'networkInterface' => $networkInterface); + $params = array_merge($params, $optParams); + return $this->call('deleteAccessConfig', array($params), "Google_Service_Compute_Operation"); + } + /** + * Detaches a disk from an instance. (instances.detachDisk) + * + * @param string $project + * Project name. + * @param string $zone + * Name of the zone scoping this request. + * @param string $instance + * Instance name. + * @param string $deviceName + * Disk device name to detach. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function detachDisk($project, $zone, $instance, $deviceName, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'instance' => $instance, 'deviceName' => $deviceName); + $params = array_merge($params, $optParams); + return $this->call('detachDisk', array($params), "Google_Service_Compute_Operation"); + } + /** + * Returns the specified instance resource. (instances.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param string $instance + * Name of the instance resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Instance + */ + public function get($project, $zone, $instance, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'instance' => $instance); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_Instance"); + } + /** + * Returns the specified instance's serial port output. + * (instances.getSerialPortOutput) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param string $instance + * Name of the instance scoping this request. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_SerialPortOutput + */ + public function getSerialPortOutput($project, $zone, $instance, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'instance' => $instance); + $params = array_merge($params, $optParams); + return $this->call('getSerialPortOutput', array($params), "Google_Service_Compute_SerialPortOutput"); + } + /** + * Creates an instance resource in the specified project using the data included + * in the request. (instances.insert) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param Google_Instance $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function insert($project, $zone, Google_Service_Compute_Instance $postBody, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Compute_Operation"); + } + /** + * Retrieves the list of instance resources contained within the specified zone. + * (instances.listInstances) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_InstanceList + */ + public function listInstances($project, $zone, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_InstanceList"); + } + /** + * Performs a hard reset on the instance. (instances.reset) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param string $instance + * Name of the instance scoping this request. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function reset($project, $zone, $instance, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'instance' => $instance); + $params = array_merge($params, $optParams); + return $this->call('reset', array($params), "Google_Service_Compute_Operation"); + } + /** + * Sets the auto-delete flag for a disk attached to an instance + * (instances.setDiskAutoDelete) + * + * @param string $project + * Project name. + * @param string $zone + * Name of the zone scoping this request. + * @param string $instance + * Instance name. + * @param bool $autoDelete + * Whether to auto-delete the disk when the instance is deleted. + * @param string $deviceName + * Disk device name to modify. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function setDiskAutoDelete($project, $zone, $instance, $autoDelete, $deviceName, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'instance' => $instance, 'autoDelete' => $autoDelete, 'deviceName' => $deviceName); + $params = array_merge($params, $optParams); + return $this->call('setDiskAutoDelete', array($params), "Google_Service_Compute_Operation"); + } + /** + * Sets metadata for the specified instance to the data included in the request. + * (instances.setMetadata) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param string $instance + * Name of the instance scoping this request. + * @param Google_Metadata $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function setMetadata($project, $zone, $instance, Google_Service_Compute_Metadata $postBody, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'instance' => $instance, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('setMetadata', array($params), "Google_Service_Compute_Operation"); + } + /** + * Sets an instance's scheduling options. (instances.setScheduling) + * + * @param string $project + * Project name. + * @param string $zone + * Name of the zone scoping this request. + * @param string $instance + * Instance name. + * @param Google_Scheduling $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function setScheduling($project, $zone, $instance, Google_Service_Compute_Scheduling $postBody, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'instance' => $instance, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('setScheduling', array($params), "Google_Service_Compute_Operation"); + } + /** + * Sets tags for the specified instance to the data included in the request. + * (instances.setTags) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param string $instance + * Name of the instance scoping this request. + * @param Google_Tags $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function setTags($project, $zone, $instance, Google_Service_Compute_Tags $postBody, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'instance' => $instance, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('setTags', array($params), "Google_Service_Compute_Operation"); + } +} + +/** + * The "licenses" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $licenses = $computeService->licenses; + * + */ +class Google_Service_Compute_Licenses_Resource extends Google_Service_Resource +{ + + /** + * Returns the specified license resource. (licenses.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $license + * Name of the license resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_License + */ + public function get($project, $license, $optParams = array()) + { + $params = array('project' => $project, 'license' => $license); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_License"); + } +} + +/** + * The "machineTypes" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $machineTypes = $computeService->machineTypes; + * + */ +class Google_Service_Compute_MachineTypes_Resource extends Google_Service_Resource +{ + + /** + * Retrieves the list of machine type resources grouped by scope. + * (machineTypes.aggregatedList) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_MachineTypeAggregatedList + */ + public function aggregatedList($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('aggregatedList', array($params), "Google_Service_Compute_MachineTypeAggregatedList"); + } + /** + * Returns the specified machine type resource. (machineTypes.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param string $machineType + * Name of the machine type resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_MachineType + */ + public function get($project, $zone, $machineType, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'machineType' => $machineType); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_MachineType"); + } + /** + * Retrieves the list of machine type resources available to the specified + * project. (machineTypes.listMachineTypes) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_MachineTypeList + */ + public function listMachineTypes($project, $zone, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_MachineTypeList"); + } +} + +/** + * The "networks" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $networks = $computeService->networks; + * + */ +class Google_Service_Compute_Networks_Resource extends Google_Service_Resource +{ + + /** + * Deletes the specified network resource. (networks.delete) + * + * @param string $project + * Name of the project scoping this request. + * @param string $network + * Name of the network resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function delete($project, $network, $optParams = array()) + { + $params = array('project' => $project, 'network' => $network); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Compute_Operation"); + } + /** + * Returns the specified network resource. (networks.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $network + * Name of the network resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Network + */ + public function get($project, $network, $optParams = array()) + { + $params = array('project' => $project, 'network' => $network); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_Network"); + } + /** + * Creates a network resource in the specified project using the data included + * in the request. (networks.insert) + * + * @param string $project + * Name of the project scoping this request. + * @param Google_Network $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function insert($project, Google_Service_Compute_Network $postBody, $optParams = array()) + { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Compute_Operation"); + } + /** + * Retrieves the list of network resources available to the specified project. + * (networks.listNetworks) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_NetworkList + */ + public function listNetworks($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_NetworkList"); + } +} + +/** + * The "projects" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $projects = $computeService->projects; + * + */ +class Google_Service_Compute_Projects_Resource extends Google_Service_Resource +{ + + /** + * Returns the specified project resource. (projects.get) + * + * @param string $project + * Name of the project resource to retrieve. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Project + */ + public function get($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_Project"); + } + /** + * Sets metadata common to all instances within the specified project using the + * data included in the request. (projects.setCommonInstanceMetadata) + * + * @param string $project + * Name of the project scoping this request. + * @param Google_Metadata $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function setCommonInstanceMetadata($project, Google_Service_Compute_Metadata $postBody, $optParams = array()) + { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('setCommonInstanceMetadata', array($params), "Google_Service_Compute_Operation"); + } + /** + * Sets usage export location (projects.setUsageExportBucket) + * + * @param string $project + * Name of the project scoping this request. + * @param Google_UsageExportLocation $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function setUsageExportBucket($project, Google_Service_Compute_UsageExportLocation $postBody, $optParams = array()) + { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('setUsageExportBucket', array($params), "Google_Service_Compute_Operation"); + } +} + +/** + * The "regionOperations" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $regionOperations = $computeService->regionOperations; + * + */ +class Google_Service_Compute_RegionOperations_Resource extends Google_Service_Resource +{ + + /** + * Deletes the specified region-specific operation resource. + * (regionOperations.delete) + * + * @param string $project + * Name of the project scoping this request. + * @param string $region + * Name of the region scoping this request. + * @param string $operation + * Name of the operation resource to delete. + * @param array $optParams Optional parameters. + */ + public function delete($project, $region, $operation, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region, 'operation' => $operation); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves the specified region-specific operation resource. + * (regionOperations.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $region + * Name of the zone scoping this request. + * @param string $operation + * Name of the operation resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function get($project, $region, $operation, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region, 'operation' => $operation); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_Operation"); + } + /** + * Retrieves the list of operation resources contained within the specified + * region. (regionOperations.listRegionOperations) + * + * @param string $project + * Name of the project scoping this request. + * @param string $region + * Name of the region scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_OperationList + */ + public function listRegionOperations($project, $region, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_OperationList"); + } +} + +/** + * The "regions" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $regions = $computeService->regions; + * + */ +class Google_Service_Compute_Regions_Resource extends Google_Service_Resource +{ + + /** + * Returns the specified region resource. (regions.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $region + * Name of the region resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Region + */ + public function get($project, $region, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_Region"); + } + /** + * Retrieves the list of region resources available to the specified project. + * (regions.listRegions) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_RegionList + */ + public function listRegions($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_RegionList"); + } +} + +/** + * The "routes" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $routes = $computeService->routes; + * + */ +class Google_Service_Compute_Routes_Resource extends Google_Service_Resource +{ + + /** + * Deletes the specified route resource. (routes.delete) + * + * @param string $project + * Name of the project scoping this request. + * @param string $route + * Name of the route resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function delete($project, $route, $optParams = array()) + { + $params = array('project' => $project, 'route' => $route); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Compute_Operation"); + } + /** + * Returns the specified route resource. (routes.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $route + * Name of the route resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Route + */ + public function get($project, $route, $optParams = array()) + { + $params = array('project' => $project, 'route' => $route); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_Route"); + } + /** + * Creates a route resource in the specified project using the data included in + * the request. (routes.insert) + * + * @param string $project + * Name of the project scoping this request. + * @param Google_Route $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function insert($project, Google_Service_Compute_Route $postBody, $optParams = array()) + { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Compute_Operation"); + } + /** + * Retrieves the list of route resources available to the specified project. + * (routes.listRoutes) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_RouteList + */ + public function listRoutes($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_RouteList"); + } +} + +/** + * The "snapshots" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $snapshots = $computeService->snapshots; + * + */ +class Google_Service_Compute_Snapshots_Resource extends Google_Service_Resource +{ + + /** + * Deletes the specified persistent disk snapshot resource. (snapshots.delete) + * + * @param string $project + * Name of the project scoping this request. + * @param string $snapshot + * Name of the persistent disk snapshot resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function delete($project, $snapshot, $optParams = array()) + { + $params = array('project' => $project, 'snapshot' => $snapshot); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Compute_Operation"); + } + /** + * Returns the specified persistent disk snapshot resource. (snapshots.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $snapshot + * Name of the persistent disk snapshot resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Snapshot + */ + public function get($project, $snapshot, $optParams = array()) + { + $params = array('project' => $project, 'snapshot' => $snapshot); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_Snapshot"); + } + /** + * Retrieves the list of persistent disk snapshot resources contained within the + * specified project. (snapshots.listSnapshots) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_SnapshotList + */ + public function listSnapshots($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_SnapshotList"); + } +} + +/** + * The "targetHttpProxies" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $targetHttpProxies = $computeService->targetHttpProxies; + * + */ +class Google_Service_Compute_TargetHttpProxies_Resource extends Google_Service_Resource +{ + + /** + * Deletes the specified TargetHttpProxy resource. (targetHttpProxies.delete) + * + * @param string $project + * Name of the project scoping this request. + * @param string $targetHttpProxy + * Name of the TargetHttpProxy resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function delete($project, $targetHttpProxy, $optParams = array()) + { + $params = array('project' => $project, 'targetHttpProxy' => $targetHttpProxy); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Compute_Operation"); + } + /** + * Returns the specified TargetHttpProxy resource. (targetHttpProxies.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $targetHttpProxy + * Name of the TargetHttpProxy resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_TargetHttpProxy + */ + public function get($project, $targetHttpProxy, $optParams = array()) + { + $params = array('project' => $project, 'targetHttpProxy' => $targetHttpProxy); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_TargetHttpProxy"); + } + /** + * Creates a TargetHttpProxy resource in the specified project using the data + * included in the request. (targetHttpProxies.insert) + * + * @param string $project + * Name of the project scoping this request. + * @param Google_TargetHttpProxy $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function insert($project, Google_Service_Compute_TargetHttpProxy $postBody, $optParams = array()) + { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Compute_Operation"); + } + /** + * Retrieves the list of TargetHttpProxy resources available to the specified + * project. (targetHttpProxies.listTargetHttpProxies) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_TargetHttpProxyList + */ + public function listTargetHttpProxies($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_TargetHttpProxyList"); + } + /** + * Changes the URL map for TargetHttpProxy. (targetHttpProxies.setUrlMap) + * + * @param string $project + * Name of the project scoping this request. + * @param string $targetHttpProxy + * Name of the TargetHttpProxy resource whose URL map is to be set. + * @param Google_UrlMapReference $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function setUrlMap($project, $targetHttpProxy, Google_Service_Compute_UrlMapReference $postBody, $optParams = array()) + { + $params = array('project' => $project, 'targetHttpProxy' => $targetHttpProxy, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('setUrlMap', array($params), "Google_Service_Compute_Operation"); + } +} + +/** + * The "targetInstances" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $targetInstances = $computeService->targetInstances; + * + */ +class Google_Service_Compute_TargetInstances_Resource extends Google_Service_Resource +{ + + /** + * Retrieves the list of target instances grouped by scope. + * (targetInstances.aggregatedList) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_TargetInstanceAggregatedList + */ + public function aggregatedList($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('aggregatedList', array($params), "Google_Service_Compute_TargetInstanceAggregatedList"); + } + /** + * Deletes the specified TargetInstance resource. (targetInstances.delete) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param string $targetInstance + * Name of the TargetInstance resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function delete($project, $zone, $targetInstance, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'targetInstance' => $targetInstance); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Compute_Operation"); + } + /** + * Returns the specified TargetInstance resource. (targetInstances.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param string $targetInstance + * Name of the TargetInstance resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_TargetInstance + */ + public function get($project, $zone, $targetInstance, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'targetInstance' => $targetInstance); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_TargetInstance"); + } + /** + * Creates a TargetInstance resource in the specified project and zone using the + * data included in the request. (targetInstances.insert) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param Google_TargetInstance $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function insert($project, $zone, Google_Service_Compute_TargetInstance $postBody, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Compute_Operation"); + } + /** + * Retrieves the list of TargetInstance resources available to the specified + * project and zone. (targetInstances.listTargetInstances) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_TargetInstanceList + */ + public function listTargetInstances($project, $zone, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_TargetInstanceList"); + } +} + +/** + * The "targetPools" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $targetPools = $computeService->targetPools; + * + */ +class Google_Service_Compute_TargetPools_Resource extends Google_Service_Resource +{ + + /** + * Adds health check URL to targetPool. (targetPools.addHealthCheck) + * + * @param string $project + * + * @param string $region + * Name of the region scoping this request. + * @param string $targetPool + * Name of the TargetPool resource to which health_check_url is to be added. + * @param Google_TargetPoolsAddHealthCheckRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function addHealthCheck($project, $region, $targetPool, Google_Service_Compute_TargetPoolsAddHealthCheckRequest $postBody, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region, 'targetPool' => $targetPool, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('addHealthCheck', array($params), "Google_Service_Compute_Operation"); + } + /** + * Adds instance url to targetPool. (targetPools.addInstance) + * + * @param string $project + * + * @param string $region + * Name of the region scoping this request. + * @param string $targetPool + * Name of the TargetPool resource to which instance_url is to be added. + * @param Google_TargetPoolsAddInstanceRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function addInstance($project, $region, $targetPool, Google_Service_Compute_TargetPoolsAddInstanceRequest $postBody, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region, 'targetPool' => $targetPool, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('addInstance', array($params), "Google_Service_Compute_Operation"); + } + /** + * Retrieves the list of target pools grouped by scope. + * (targetPools.aggregatedList) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_TargetPoolAggregatedList + */ + public function aggregatedList($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('aggregatedList', array($params), "Google_Service_Compute_TargetPoolAggregatedList"); + } + /** + * Deletes the specified TargetPool resource. (targetPools.delete) + * + * @param string $project + * Name of the project scoping this request. + * @param string $region + * Name of the region scoping this request. + * @param string $targetPool + * Name of the TargetPool resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function delete($project, $region, $targetPool, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region, 'targetPool' => $targetPool); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Compute_Operation"); + } + /** + * Returns the specified TargetPool resource. (targetPools.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $region + * Name of the region scoping this request. + * @param string $targetPool + * Name of the TargetPool resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_TargetPool + */ + public function get($project, $region, $targetPool, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region, 'targetPool' => $targetPool); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_TargetPool"); + } + /** + * Gets the most recent health check results for each IP for the given instance + * that is referenced by given TargetPool. (targetPools.getHealth) + * + * @param string $project + * + * @param string $region + * Name of the region scoping this request. + * @param string $targetPool + * Name of the TargetPool resource to which the queried instance belongs. + * @param Google_InstanceReference $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_TargetPoolInstanceHealth + */ + public function getHealth($project, $region, $targetPool, Google_Service_Compute_InstanceReference $postBody, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region, 'targetPool' => $targetPool, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('getHealth', array($params), "Google_Service_Compute_TargetPoolInstanceHealth"); + } + /** + * Creates a TargetPool resource in the specified project and region using the + * data included in the request. (targetPools.insert) + * + * @param string $project + * Name of the project scoping this request. + * @param string $region + * Name of the region scoping this request. + * @param Google_TargetPool $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function insert($project, $region, Google_Service_Compute_TargetPool $postBody, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Compute_Operation"); + } + /** + * Retrieves the list of TargetPool resources available to the specified project + * and region. (targetPools.listTargetPools) + * + * @param string $project + * Name of the project scoping this request. + * @param string $region + * Name of the region scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_TargetPoolList + */ + public function listTargetPools($project, $region, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_TargetPoolList"); + } + /** + * Removes health check URL from targetPool. (targetPools.removeHealthCheck) + * + * @param string $project + * + * @param string $region + * Name of the region scoping this request. + * @param string $targetPool + * Name of the TargetPool resource to which health_check_url is to be removed. + * @param Google_TargetPoolsRemoveHealthCheckRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function removeHealthCheck($project, $region, $targetPool, Google_Service_Compute_TargetPoolsRemoveHealthCheckRequest $postBody, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region, 'targetPool' => $targetPool, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('removeHealthCheck', array($params), "Google_Service_Compute_Operation"); + } + /** + * Removes instance URL from targetPool. (targetPools.removeInstance) + * + * @param string $project + * + * @param string $region + * Name of the region scoping this request. + * @param string $targetPool + * Name of the TargetPool resource to which instance_url is to be removed. + * @param Google_TargetPoolsRemoveInstanceRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function removeInstance($project, $region, $targetPool, Google_Service_Compute_TargetPoolsRemoveInstanceRequest $postBody, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region, 'targetPool' => $targetPool, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('removeInstance', array($params), "Google_Service_Compute_Operation"); + } + /** + * Changes backup pool configurations. (targetPools.setBackup) + * + * @param string $project + * Name of the project scoping this request. + * @param string $region + * Name of the region scoping this request. + * @param string $targetPool + * Name of the TargetPool resource for which the backup is to be set. + * @param Google_TargetReference $postBody + * @param array $optParams Optional parameters. + * + * @opt_param float failoverRatio + * New failoverRatio value for the containing target pool. + * @return Google_Service_Compute_Operation + */ + public function setBackup($project, $region, $targetPool, Google_Service_Compute_TargetReference $postBody, $optParams = array()) + { + $params = array('project' => $project, 'region' => $region, 'targetPool' => $targetPool, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('setBackup', array($params), "Google_Service_Compute_Operation"); + } +} + +/** + * The "urlMaps" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $urlMaps = $computeService->urlMaps; + * + */ +class Google_Service_Compute_UrlMaps_Resource extends Google_Service_Resource +{ + + /** + * Deletes the specified UrlMap resource. (urlMaps.delete) + * + * @param string $project + * Name of the project scoping this request. + * @param string $urlMap + * Name of the UrlMap resource to delete. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function delete($project, $urlMap, $optParams = array()) + { + $params = array('project' => $project, 'urlMap' => $urlMap); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Compute_Operation"); + } + /** + * Returns the specified UrlMap resource. (urlMaps.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $urlMap + * Name of the UrlMap resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_UrlMap + */ + public function get($project, $urlMap, $optParams = array()) + { + $params = array('project' => $project, 'urlMap' => $urlMap); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_UrlMap"); + } + /** + * Creates a UrlMap resource in the specified project using the data included in + * the request. (urlMaps.insert) + * + * @param string $project + * Name of the project scoping this request. + * @param Google_UrlMap $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function insert($project, Google_Service_Compute_UrlMap $postBody, $optParams = array()) + { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Compute_Operation"); + } + /** + * Retrieves the list of UrlMap resources available to the specified project. + * (urlMaps.listUrlMaps) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_UrlMapList + */ + public function listUrlMaps($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_UrlMapList"); + } + /** + * Update the entire content of the UrlMap resource. This method supports patch + * semantics. (urlMaps.patch) + * + * @param string $project + * Name of the project scoping this request. + * @param string $urlMap + * Name of the UrlMap resource to update. + * @param Google_UrlMap $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function patch($project, $urlMap, Google_Service_Compute_UrlMap $postBody, $optParams = array()) + { + $params = array('project' => $project, 'urlMap' => $urlMap, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Compute_Operation"); + } + /** + * Update the entire content of the UrlMap resource. (urlMaps.update) + * + * @param string $project + * Name of the project scoping this request. + * @param string $urlMap + * Name of the UrlMap resource to update. + * @param Google_UrlMap $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function update($project, $urlMap, Google_Service_Compute_UrlMap $postBody, $optParams = array()) + { + $params = array('project' => $project, 'urlMap' => $urlMap, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Compute_Operation"); + } + /** + * Run static validation for the UrlMap. In particular, the tests of the + * provided UrlMap will be run. Calling this method does NOT create the UrlMap. + * (urlMaps.validate) + * + * @param string $project + * Name of the project scoping this request. + * @param string $urlMap + * Name of the UrlMap resource to be validated as. + * @param Google_UrlMapsValidateRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_UrlMapsValidateResponse + */ + public function validate($project, $urlMap, Google_Service_Compute_UrlMapsValidateRequest $postBody, $optParams = array()) + { + $params = array('project' => $project, 'urlMap' => $urlMap, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('validate', array($params), "Google_Service_Compute_UrlMapsValidateResponse"); + } +} + +/** + * The "zoneOperations" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $zoneOperations = $computeService->zoneOperations; + * + */ +class Google_Service_Compute_ZoneOperations_Resource extends Google_Service_Resource +{ + + /** + * Deletes the specified zone-specific operation resource. + * (zoneOperations.delete) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param string $operation + * Name of the operation resource to delete. + * @param array $optParams Optional parameters. + */ + public function delete($project, $zone, $operation, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'operation' => $operation); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves the specified zone-specific operation resource. + * (zoneOperations.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param string $operation + * Name of the operation resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Operation + */ + public function get($project, $zone, $operation, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone, 'operation' => $operation); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_Operation"); + } + /** + * Retrieves the list of operation resources contained within the specified + * zone. (zoneOperations.listZoneOperations) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_OperationList + */ + public function listZoneOperations($project, $zone, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_OperationList"); + } +} + +/** + * The "zones" collection of methods. + * Typical usage is: + * + * $computeService = new Google_Service_Compute(...); + * $zones = $computeService->zones; + * + */ +class Google_Service_Compute_Zones_Resource extends Google_Service_Resource +{ + + /** + * Returns the specified zone resource. (zones.get) + * + * @param string $project + * Name of the project scoping this request. + * @param string $zone + * Name of the zone resource to return. + * @param array $optParams Optional parameters. + * @return Google_Service_Compute_Zone + */ + public function get($project, $zone, $optParams = array()) + { + $params = array('project' => $project, 'zone' => $zone); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Compute_Zone"); + } + /** + * Retrieves the list of zone resources available to the specified project. + * (zones.listZones) + * + * @param string $project + * Name of the project scoping this request. + * @param array $optParams Optional parameters. + * + * @opt_param string filter + * Optional. Filter expression for filtering listed resources. + * @opt_param string pageToken + * Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a + * previous list request. + * @opt_param string maxResults + * Optional. Maximum count of results to be returned. Maximum value is 500 and default value is + * 500. + * @return Google_Service_Compute_ZoneList + */ + public function listZones($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Compute_ZoneList"); + } +} + + + + +class Google_Service_Compute_AccessConfig extends Google_Model +{ + public $kind; + public $name; + public $natIP; + public $type; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNatIP($natIP) + { + $this->natIP = $natIP; + } + + public function getNatIP() + { + return $this->natIP; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Compute_Address extends Google_Collection +{ + public $address; + public $creationTimestamp; + public $description; + public $id; + public $kind; + public $name; + public $region; + public $selfLink; + public $status; + public $users; + + public function setAddress($address) + { + $this->address = $address; + } + + public function getAddress() + { + return $this->address; + } + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setRegion($region) + { + $this->region = $region; + } + + public function getRegion() + { + return $this->region; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setUsers($users) + { + $this->users = $users; + } + + public function getUsers() + { + return $this->users; + } +} + +class Google_Service_Compute_AddressAggregatedList extends Google_Model +{ + public $id; + protected $itemsType = 'Google_Service_Compute_AddressesScopedList'; + protected $itemsDataType = 'map'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_AddressAggregatedListItems extends Google_Model +{ + +} + +class Google_Service_Compute_AddressList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Compute_Address'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_AddressesScopedList extends Google_Collection +{ + protected $addressesType = 'Google_Service_Compute_Address'; + protected $addressesDataType = 'array'; + protected $warningType = 'Google_Service_Compute_AddressesScopedListWarning'; + protected $warningDataType = ''; + + public function setAddresses($addresses) + { + $this->addresses = $addresses; + } + + public function getAddresses() + { + return $this->addresses; + } + + public function setWarning(Google_Service_Compute_AddressesScopedListWarning $warning) + { + $this->warning = $warning; + } + + public function getWarning() + { + return $this->warning; + } +} + +class Google_Service_Compute_AddressesScopedListWarning extends Google_Collection +{ + public $code; + protected $dataType = 'Google_Service_Compute_AddressesScopedListWarningData'; + protected $dataDataType = 'array'; + public $message; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_Compute_AddressesScopedListWarningData extends Google_Model +{ + public $key; + public $value; + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Compute_AttachedDisk extends Google_Collection +{ + public $autoDelete; + public $boot; + public $deviceName; + public $index; + protected $initializeParamsType = 'Google_Service_Compute_AttachedDiskInitializeParams'; + protected $initializeParamsDataType = ''; + public $kind; + public $licenses; + public $mode; + public $source; + public $type; + + public function setAutoDelete($autoDelete) + { + $this->autoDelete = $autoDelete; + } + + public function getAutoDelete() + { + return $this->autoDelete; + } + + public function setBoot($boot) + { + $this->boot = $boot; + } + + public function getBoot() + { + return $this->boot; + } + + public function setDeviceName($deviceName) + { + $this->deviceName = $deviceName; + } + + public function getDeviceName() + { + return $this->deviceName; + } + + public function setIndex($index) + { + $this->index = $index; + } + + public function getIndex() + { + return $this->index; + } + + public function setInitializeParams(Google_Service_Compute_AttachedDiskInitializeParams $initializeParams) + { + $this->initializeParams = $initializeParams; + } + + public function getInitializeParams() + { + return $this->initializeParams; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLicenses($licenses) + { + $this->licenses = $licenses; + } + + public function getLicenses() + { + return $this->licenses; + } + + public function setMode($mode) + { + $this->mode = $mode; + } + + public function getMode() + { + return $this->mode; + } + + public function setSource($source) + { + $this->source = $source; + } + + public function getSource() + { + return $this->source; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Compute_AttachedDiskInitializeParams extends Google_Model +{ + public $diskName; + public $diskSizeGb; + public $diskType; + public $sourceImage; + + public function setDiskName($diskName) + { + $this->diskName = $diskName; + } + + public function getDiskName() + { + return $this->diskName; + } + + public function setDiskSizeGb($diskSizeGb) + { + $this->diskSizeGb = $diskSizeGb; + } + + public function getDiskSizeGb() + { + return $this->diskSizeGb; + } + + public function setDiskType($diskType) + { + $this->diskType = $diskType; + } + + public function getDiskType() + { + return $this->diskType; + } + + public function setSourceImage($sourceImage) + { + $this->sourceImage = $sourceImage; + } + + public function getSourceImage() + { + return $this->sourceImage; + } +} + +class Google_Service_Compute_Backend extends Google_Model +{ + public $balancingMode; + public $capacityScaler; + public $description; + public $group; + public $maxRate; + public $maxRatePerInstance; + public $maxUtilization; + + public function setBalancingMode($balancingMode) + { + $this->balancingMode = $balancingMode; + } + + public function getBalancingMode() + { + return $this->balancingMode; + } + + public function setCapacityScaler($capacityScaler) + { + $this->capacityScaler = $capacityScaler; + } + + public function getCapacityScaler() + { + return $this->capacityScaler; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setGroup($group) + { + $this->group = $group; + } + + public function getGroup() + { + return $this->group; + } + + public function setMaxRate($maxRate) + { + $this->maxRate = $maxRate; + } + + public function getMaxRate() + { + return $this->maxRate; + } + + public function setMaxRatePerInstance($maxRatePerInstance) + { + $this->maxRatePerInstance = $maxRatePerInstance; + } + + public function getMaxRatePerInstance() + { + return $this->maxRatePerInstance; + } + + public function setMaxUtilization($maxUtilization) + { + $this->maxUtilization = $maxUtilization; + } + + public function getMaxUtilization() + { + return $this->maxUtilization; + } +} + +class Google_Service_Compute_BackendService extends Google_Collection +{ + protected $backendsType = 'Google_Service_Compute_Backend'; + protected $backendsDataType = 'array'; + public $creationTimestamp; + public $description; + public $fingerprint; + public $healthChecks; + public $id; + public $kind; + public $name; + public $port; + public $portName; + public $protocol; + public $selfLink; + public $timeoutSec; + + public function setBackends($backends) + { + $this->backends = $backends; + } + + public function getBackends() + { + return $this->backends; + } + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + + public function getFingerprint() + { + return $this->fingerprint; + } + + public function setHealthChecks($healthChecks) + { + $this->healthChecks = $healthChecks; + } + + public function getHealthChecks() + { + return $this->healthChecks; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPort($port) + { + $this->port = $port; + } + + public function getPort() + { + return $this->port; + } + + public function setPortName($portName) + { + $this->portName = $portName; + } + + public function getPortName() + { + return $this->portName; + } + + public function setProtocol($protocol) + { + $this->protocol = $protocol; + } + + public function getProtocol() + { + return $this->protocol; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTimeoutSec($timeoutSec) + { + $this->timeoutSec = $timeoutSec; + } + + public function getTimeoutSec() + { + return $this->timeoutSec; + } +} + +class Google_Service_Compute_BackendServiceGroupHealth extends Google_Collection +{ + protected $healthStatusType = 'Google_Service_Compute_HealthStatus'; + protected $healthStatusDataType = 'array'; + public $kind; + + public function setHealthStatus($healthStatus) + { + $this->healthStatus = $healthStatus; + } + + public function getHealthStatus() + { + return $this->healthStatus; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Compute_BackendServiceList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Compute_BackendService'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_DeprecationStatus extends Google_Model +{ + public $deleted; + public $deprecated; + public $obsolete; + public $replacement; + public $state; + + public function setDeleted($deleted) + { + $this->deleted = $deleted; + } + + public function getDeleted() + { + return $this->deleted; + } + + public function setDeprecated($deprecated) + { + $this->deprecated = $deprecated; + } + + public function getDeprecated() + { + return $this->deprecated; + } + + public function setObsolete($obsolete) + { + $this->obsolete = $obsolete; + } + + public function getObsolete() + { + return $this->obsolete; + } + + public function setReplacement($replacement) + { + $this->replacement = $replacement; + } + + public function getReplacement() + { + return $this->replacement; + } + + public function setState($state) + { + $this->state = $state; + } + + public function getState() + { + return $this->state; + } +} + +class Google_Service_Compute_Disk extends Google_Collection +{ + public $creationTimestamp; + public $description; + public $id; + public $kind; + public $licenses; + public $name; + public $options; + public $selfLink; + public $sizeGb; + public $sourceImage; + public $sourceImageId; + public $sourceSnapshot; + public $sourceSnapshotId; + public $status; + public $type; + public $zone; + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLicenses($licenses) + { + $this->licenses = $licenses; + } + + public function getLicenses() + { + return $this->licenses; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setOptions($options) + { + $this->options = $options; + } + + public function getOptions() + { + return $this->options; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setSizeGb($sizeGb) + { + $this->sizeGb = $sizeGb; + } + + public function getSizeGb() + { + return $this->sizeGb; + } + + public function setSourceImage($sourceImage) + { + $this->sourceImage = $sourceImage; + } + + public function getSourceImage() + { + return $this->sourceImage; + } + + public function setSourceImageId($sourceImageId) + { + $this->sourceImageId = $sourceImageId; + } + + public function getSourceImageId() + { + return $this->sourceImageId; + } + + public function setSourceSnapshot($sourceSnapshot) + { + $this->sourceSnapshot = $sourceSnapshot; + } + + public function getSourceSnapshot() + { + return $this->sourceSnapshot; + } + + public function setSourceSnapshotId($sourceSnapshotId) + { + $this->sourceSnapshotId = $sourceSnapshotId; + } + + public function getSourceSnapshotId() + { + return $this->sourceSnapshotId; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setZone($zone) + { + $this->zone = $zone; + } + + public function getZone() + { + return $this->zone; + } +} + +class Google_Service_Compute_DiskAggregatedList extends Google_Model +{ + public $id; + protected $itemsType = 'Google_Service_Compute_DisksScopedList'; + protected $itemsDataType = 'map'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_DiskAggregatedListItems extends Google_Model +{ + +} + +class Google_Service_Compute_DiskList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Compute_Disk'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_DiskType extends Google_Model +{ + public $creationTimestamp; + protected $deprecatedType = 'Google_Service_Compute_DeprecationStatus'; + protected $deprecatedDataType = ''; + public $description; + public $id; + public $kind; + public $name; + public $selfLink; + public $validDiskSize; + public $zone; + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDeprecated(Google_Service_Compute_DeprecationStatus $deprecated) + { + $this->deprecated = $deprecated; + } + + public function getDeprecated() + { + return $this->deprecated; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setValidDiskSize($validDiskSize) + { + $this->validDiskSize = $validDiskSize; + } + + public function getValidDiskSize() + { + return $this->validDiskSize; + } + + public function setZone($zone) + { + $this->zone = $zone; + } + + public function getZone() + { + return $this->zone; + } +} + +class Google_Service_Compute_DiskTypeAggregatedList extends Google_Model +{ + public $id; + protected $itemsType = 'Google_Service_Compute_DiskTypesScopedList'; + protected $itemsDataType = 'map'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_DiskTypeAggregatedListItems extends Google_Model +{ + +} + +class Google_Service_Compute_DiskTypeList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Compute_DiskType'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_DiskTypesScopedList extends Google_Collection +{ + protected $diskTypesType = 'Google_Service_Compute_DiskType'; + protected $diskTypesDataType = 'array'; + protected $warningType = 'Google_Service_Compute_DiskTypesScopedListWarning'; + protected $warningDataType = ''; + + public function setDiskTypes($diskTypes) + { + $this->diskTypes = $diskTypes; + } + + public function getDiskTypes() + { + return $this->diskTypes; + } + + public function setWarning(Google_Service_Compute_DiskTypesScopedListWarning $warning) + { + $this->warning = $warning; + } + + public function getWarning() + { + return $this->warning; + } +} + +class Google_Service_Compute_DiskTypesScopedListWarning extends Google_Collection +{ + public $code; + protected $dataType = 'Google_Service_Compute_DiskTypesScopedListWarningData'; + protected $dataDataType = 'array'; + public $message; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_Compute_DiskTypesScopedListWarningData extends Google_Model +{ + public $key; + public $value; + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Compute_DisksScopedList extends Google_Collection +{ + protected $disksType = 'Google_Service_Compute_Disk'; + protected $disksDataType = 'array'; + protected $warningType = 'Google_Service_Compute_DisksScopedListWarning'; + protected $warningDataType = ''; + + public function setDisks($disks) + { + $this->disks = $disks; + } + + public function getDisks() + { + return $this->disks; + } + + public function setWarning(Google_Service_Compute_DisksScopedListWarning $warning) + { + $this->warning = $warning; + } + + public function getWarning() + { + return $this->warning; + } +} + +class Google_Service_Compute_DisksScopedListWarning extends Google_Collection +{ + public $code; + protected $dataType = 'Google_Service_Compute_DisksScopedListWarningData'; + protected $dataDataType = 'array'; + public $message; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_Compute_DisksScopedListWarningData extends Google_Model +{ + public $key; + public $value; + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Compute_Firewall extends Google_Collection +{ + protected $allowedType = 'Google_Service_Compute_FirewallAllowed'; + protected $allowedDataType = 'array'; + public $creationTimestamp; + public $description; + public $id; + public $kind; + public $name; + public $network; + public $selfLink; + public $sourceRanges; + public $sourceTags; + public $targetTags; + + public function setAllowed($allowed) + { + $this->allowed = $allowed; + } + + public function getAllowed() + { + return $this->allowed; + } + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNetwork($network) + { + $this->network = $network; + } + + public function getNetwork() + { + return $this->network; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setSourceRanges($sourceRanges) + { + $this->sourceRanges = $sourceRanges; + } + + public function getSourceRanges() + { + return $this->sourceRanges; + } + + public function setSourceTags($sourceTags) + { + $this->sourceTags = $sourceTags; + } + + public function getSourceTags() + { + return $this->sourceTags; + } + + public function setTargetTags($targetTags) + { + $this->targetTags = $targetTags; + } + + public function getTargetTags() + { + return $this->targetTags; + } +} + +class Google_Service_Compute_FirewallAllowed extends Google_Collection +{ + public $iPProtocol; + public $ports; + + public function setIPProtocol($iPProtocol) + { + $this->iPProtocol = $iPProtocol; + } + + public function getIPProtocol() + { + return $this->iPProtocol; + } + + public function setPorts($ports) + { + $this->ports = $ports; + } + + public function getPorts() + { + return $this->ports; + } +} + +class Google_Service_Compute_FirewallList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Compute_Firewall'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_ForwardingRule extends Google_Model +{ + public $iPAddress; + public $iPProtocol; + public $creationTimestamp; + public $description; + public $id; + public $kind; + public $name; + public $portRange; + public $region; + public $selfLink; + public $target; + + public function setIPAddress($iPAddress) + { + $this->iPAddress = $iPAddress; + } + + public function getIPAddress() + { + return $this->iPAddress; + } + + public function setIPProtocol($iPProtocol) + { + $this->iPProtocol = $iPProtocol; + } + + public function getIPProtocol() + { + return $this->iPProtocol; + } + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPortRange($portRange) + { + $this->portRange = $portRange; + } + + public function getPortRange() + { + return $this->portRange; + } + + public function setRegion($region) + { + $this->region = $region; + } + + public function getRegion() + { + return $this->region; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTarget($target) + { + $this->target = $target; + } + + public function getTarget() + { + return $this->target; + } +} + +class Google_Service_Compute_ForwardingRuleAggregatedList extends Google_Model +{ + public $id; + protected $itemsType = 'Google_Service_Compute_ForwardingRulesScopedList'; + protected $itemsDataType = 'map'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_ForwardingRuleAggregatedListItems extends Google_Model +{ + +} + +class Google_Service_Compute_ForwardingRuleList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Compute_ForwardingRule'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_ForwardingRulesScopedList extends Google_Collection +{ + protected $forwardingRulesType = 'Google_Service_Compute_ForwardingRule'; + protected $forwardingRulesDataType = 'array'; + protected $warningType = 'Google_Service_Compute_ForwardingRulesScopedListWarning'; + protected $warningDataType = ''; + + public function setForwardingRules($forwardingRules) + { + $this->forwardingRules = $forwardingRules; + } + + public function getForwardingRules() + { + return $this->forwardingRules; + } + + public function setWarning(Google_Service_Compute_ForwardingRulesScopedListWarning $warning) + { + $this->warning = $warning; + } + + public function getWarning() + { + return $this->warning; + } +} + +class Google_Service_Compute_ForwardingRulesScopedListWarning extends Google_Collection +{ + public $code; + protected $dataType = 'Google_Service_Compute_ForwardingRulesScopedListWarningData'; + protected $dataDataType = 'array'; + public $message; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_Compute_ForwardingRulesScopedListWarningData extends Google_Model +{ + public $key; + public $value; + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Compute_HealthCheckReference extends Google_Model +{ + public $healthCheck; + + public function setHealthCheck($healthCheck) + { + $this->healthCheck = $healthCheck; + } + + public function getHealthCheck() + { + return $this->healthCheck; + } +} + +class Google_Service_Compute_HealthStatus extends Google_Model +{ + public $healthState; + public $instance; + public $ipAddress; + + public function setHealthState($healthState) + { + $this->healthState = $healthState; + } + + public function getHealthState() + { + return $this->healthState; + } + + public function setInstance($instance) + { + $this->instance = $instance; + } + + public function getInstance() + { + return $this->instance; + } + + public function setIpAddress($ipAddress) + { + $this->ipAddress = $ipAddress; + } + + public function getIpAddress() + { + return $this->ipAddress; + } +} + +class Google_Service_Compute_HostRule extends Google_Collection +{ + public $description; + public $hosts; + public $pathMatcher; + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setHosts($hosts) + { + $this->hosts = $hosts; + } + + public function getHosts() + { + return $this->hosts; + } + + public function setPathMatcher($pathMatcher) + { + $this->pathMatcher = $pathMatcher; + } + + public function getPathMatcher() + { + return $this->pathMatcher; + } +} + +class Google_Service_Compute_HttpHealthCheck extends Google_Model +{ + public $checkIntervalSec; + public $creationTimestamp; + public $description; + public $healthyThreshold; + public $host; + public $id; + public $kind; + public $name; + public $port; + public $requestPath; + public $selfLink; + public $timeoutSec; + public $unhealthyThreshold; + + public function setCheckIntervalSec($checkIntervalSec) + { + $this->checkIntervalSec = $checkIntervalSec; + } + + public function getCheckIntervalSec() + { + return $this->checkIntervalSec; + } + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setHealthyThreshold($healthyThreshold) + { + $this->healthyThreshold = $healthyThreshold; + } + + public function getHealthyThreshold() + { + return $this->healthyThreshold; + } + + public function setHost($host) + { + $this->host = $host; + } + + public function getHost() + { + return $this->host; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPort($port) + { + $this->port = $port; + } + + public function getPort() + { + return $this->port; + } + + public function setRequestPath($requestPath) + { + $this->requestPath = $requestPath; + } + + public function getRequestPath() + { + return $this->requestPath; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTimeoutSec($timeoutSec) + { + $this->timeoutSec = $timeoutSec; + } + + public function getTimeoutSec() + { + return $this->timeoutSec; + } + + public function setUnhealthyThreshold($unhealthyThreshold) + { + $this->unhealthyThreshold = $unhealthyThreshold; + } + + public function getUnhealthyThreshold() + { + return $this->unhealthyThreshold; + } +} + +class Google_Service_Compute_HttpHealthCheckList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Compute_HttpHealthCheck'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_Image extends Google_Collection +{ + public $archiveSizeBytes; + public $creationTimestamp; + protected $deprecatedType = 'Google_Service_Compute_DeprecationStatus'; + protected $deprecatedDataType = ''; + public $description; + public $diskSizeGb; + public $id; + public $kind; + public $licenses; + public $name; + protected $rawDiskType = 'Google_Service_Compute_ImageRawDisk'; + protected $rawDiskDataType = ''; + public $selfLink; + public $sourceDisk; + public $sourceDiskId; + public $sourceType; + public $status; + + public function setArchiveSizeBytes($archiveSizeBytes) + { + $this->archiveSizeBytes = $archiveSizeBytes; + } + + public function getArchiveSizeBytes() + { + return $this->archiveSizeBytes; + } + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDeprecated(Google_Service_Compute_DeprecationStatus $deprecated) + { + $this->deprecated = $deprecated; + } + + public function getDeprecated() + { + return $this->deprecated; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDiskSizeGb($diskSizeGb) + { + $this->diskSizeGb = $diskSizeGb; + } + + public function getDiskSizeGb() + { + return $this->diskSizeGb; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLicenses($licenses) + { + $this->licenses = $licenses; + } + + public function getLicenses() + { + return $this->licenses; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setRawDisk(Google_Service_Compute_ImageRawDisk $rawDisk) + { + $this->rawDisk = $rawDisk; + } + + public function getRawDisk() + { + return $this->rawDisk; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setSourceDisk($sourceDisk) + { + $this->sourceDisk = $sourceDisk; + } + + public function getSourceDisk() + { + return $this->sourceDisk; + } + + public function setSourceDiskId($sourceDiskId) + { + $this->sourceDiskId = $sourceDiskId; + } + + public function getSourceDiskId() + { + return $this->sourceDiskId; + } + + public function setSourceType($sourceType) + { + $this->sourceType = $sourceType; + } + + public function getSourceType() + { + return $this->sourceType; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_Compute_ImageList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Compute_Image'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_ImageRawDisk extends Google_Model +{ + public $containerType; + public $sha1Checksum; + public $source; + + public function setContainerType($containerType) + { + $this->containerType = $containerType; + } + + public function getContainerType() + { + return $this->containerType; + } + + public function setSha1Checksum($sha1Checksum) + { + $this->sha1Checksum = $sha1Checksum; + } + + public function getSha1Checksum() + { + return $this->sha1Checksum; + } + + public function setSource($source) + { + $this->source = $source; + } + + public function getSource() + { + return $this->source; + } +} + +class Google_Service_Compute_Instance extends Google_Collection +{ + public $canIpForward; + public $creationTimestamp; + public $description; + protected $disksType = 'Google_Service_Compute_AttachedDisk'; + protected $disksDataType = 'array'; + public $id; + public $kind; + public $machineType; + protected $metadataType = 'Google_Service_Compute_Metadata'; + protected $metadataDataType = ''; + public $name; + protected $networkInterfacesType = 'Google_Service_Compute_NetworkInterface'; + protected $networkInterfacesDataType = 'array'; + protected $schedulingType = 'Google_Service_Compute_Scheduling'; + protected $schedulingDataType = ''; + public $selfLink; + protected $serviceAccountsType = 'Google_Service_Compute_ServiceAccount'; + protected $serviceAccountsDataType = 'array'; + public $status; + public $statusMessage; + protected $tagsType = 'Google_Service_Compute_Tags'; + protected $tagsDataType = ''; + public $zone; + + public function setCanIpForward($canIpForward) + { + $this->canIpForward = $canIpForward; + } + + public function getCanIpForward() + { + return $this->canIpForward; + } + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDisks($disks) + { + $this->disks = $disks; + } + + public function getDisks() + { + return $this->disks; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMachineType($machineType) + { + $this->machineType = $machineType; + } + + public function getMachineType() + { + return $this->machineType; + } + + public function setMetadata(Google_Service_Compute_Metadata $metadata) + { + $this->metadata = $metadata; + } + + public function getMetadata() + { + return $this->metadata; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNetworkInterfaces($networkInterfaces) + { + $this->networkInterfaces = $networkInterfaces; + } + + public function getNetworkInterfaces() + { + return $this->networkInterfaces; + } + + public function setScheduling(Google_Service_Compute_Scheduling $scheduling) + { + $this->scheduling = $scheduling; + } + + public function getScheduling() + { + return $this->scheduling; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setServiceAccounts($serviceAccounts) + { + $this->serviceAccounts = $serviceAccounts; + } + + public function getServiceAccounts() + { + return $this->serviceAccounts; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setStatusMessage($statusMessage) + { + $this->statusMessage = $statusMessage; + } + + public function getStatusMessage() + { + return $this->statusMessage; + } + + public function setTags(Google_Service_Compute_Tags $tags) + { + $this->tags = $tags; + } + + public function getTags() + { + return $this->tags; + } + + public function setZone($zone) + { + $this->zone = $zone; + } + + public function getZone() + { + return $this->zone; + } +} + +class Google_Service_Compute_InstanceAggregatedList extends Google_Model +{ + public $id; + protected $itemsType = 'Google_Service_Compute_InstancesScopedList'; + protected $itemsDataType = 'map'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_InstanceAggregatedListItems extends Google_Model +{ + +} + +class Google_Service_Compute_InstanceList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Compute_Instance'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_InstanceReference extends Google_Model +{ + public $instance; + + public function setInstance($instance) + { + $this->instance = $instance; + } + + public function getInstance() + { + return $this->instance; + } +} + +class Google_Service_Compute_InstancesScopedList extends Google_Collection +{ + protected $instancesType = 'Google_Service_Compute_Instance'; + protected $instancesDataType = 'array'; + protected $warningType = 'Google_Service_Compute_InstancesScopedListWarning'; + protected $warningDataType = ''; + + public function setInstances($instances) + { + $this->instances = $instances; + } + + public function getInstances() + { + return $this->instances; + } + + public function setWarning(Google_Service_Compute_InstancesScopedListWarning $warning) + { + $this->warning = $warning; + } + + public function getWarning() + { + return $this->warning; + } +} + +class Google_Service_Compute_InstancesScopedListWarning extends Google_Collection +{ + public $code; + protected $dataType = 'Google_Service_Compute_InstancesScopedListWarningData'; + protected $dataDataType = 'array'; + public $message; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_Compute_InstancesScopedListWarningData extends Google_Model +{ + public $key; + public $value; + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Compute_License extends Google_Model +{ + public $kind; + public $name; + public $selfLink; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_MachineType extends Google_Collection +{ + public $creationTimestamp; + protected $deprecatedType = 'Google_Service_Compute_DeprecationStatus'; + protected $deprecatedDataType = ''; + public $description; + public $guestCpus; + public $id; + public $imageSpaceGb; + public $kind; + public $maximumPersistentDisks; + public $maximumPersistentDisksSizeGb; + public $memoryMb; + public $name; + protected $scratchDisksType = 'Google_Service_Compute_MachineTypeScratchDisks'; + protected $scratchDisksDataType = 'array'; + public $selfLink; + public $zone; + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDeprecated(Google_Service_Compute_DeprecationStatus $deprecated) + { + $this->deprecated = $deprecated; + } + + public function getDeprecated() + { + return $this->deprecated; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setGuestCpus($guestCpus) + { + $this->guestCpus = $guestCpus; + } + + public function getGuestCpus() + { + return $this->guestCpus; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImageSpaceGb($imageSpaceGb) + { + $this->imageSpaceGb = $imageSpaceGb; + } + + public function getImageSpaceGb() + { + return $this->imageSpaceGb; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMaximumPersistentDisks($maximumPersistentDisks) + { + $this->maximumPersistentDisks = $maximumPersistentDisks; + } + + public function getMaximumPersistentDisks() + { + return $this->maximumPersistentDisks; + } + + public function setMaximumPersistentDisksSizeGb($maximumPersistentDisksSizeGb) + { + $this->maximumPersistentDisksSizeGb = $maximumPersistentDisksSizeGb; + } + + public function getMaximumPersistentDisksSizeGb() + { + return $this->maximumPersistentDisksSizeGb; + } + + public function setMemoryMb($memoryMb) + { + $this->memoryMb = $memoryMb; + } + + public function getMemoryMb() + { + return $this->memoryMb; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setScratchDisks($scratchDisks) + { + $this->scratchDisks = $scratchDisks; + } + + public function getScratchDisks() + { + return $this->scratchDisks; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setZone($zone) + { + $this->zone = $zone; + } + + public function getZone() + { + return $this->zone; + } +} + +class Google_Service_Compute_MachineTypeAggregatedList extends Google_Model +{ + public $id; + protected $itemsType = 'Google_Service_Compute_MachineTypesScopedList'; + protected $itemsDataType = 'map'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_MachineTypeAggregatedListItems extends Google_Model +{ + +} + +class Google_Service_Compute_MachineTypeList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Compute_MachineType'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_MachineTypeScratchDisks extends Google_Model +{ + public $diskGb; + + public function setDiskGb($diskGb) + { + $this->diskGb = $diskGb; + } + + public function getDiskGb() + { + return $this->diskGb; + } +} + +class Google_Service_Compute_MachineTypesScopedList extends Google_Collection +{ + protected $machineTypesType = 'Google_Service_Compute_MachineType'; + protected $machineTypesDataType = 'array'; + protected $warningType = 'Google_Service_Compute_MachineTypesScopedListWarning'; + protected $warningDataType = ''; + + public function setMachineTypes($machineTypes) + { + $this->machineTypes = $machineTypes; + } + + public function getMachineTypes() + { + return $this->machineTypes; + } + + public function setWarning(Google_Service_Compute_MachineTypesScopedListWarning $warning) + { + $this->warning = $warning; + } + + public function getWarning() + { + return $this->warning; + } +} + +class Google_Service_Compute_MachineTypesScopedListWarning extends Google_Collection +{ + public $code; + protected $dataType = 'Google_Service_Compute_MachineTypesScopedListWarningData'; + protected $dataDataType = 'array'; + public $message; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_Compute_MachineTypesScopedListWarningData extends Google_Model +{ + public $key; + public $value; + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Compute_Metadata extends Google_Collection +{ + public $fingerprint; + protected $itemsType = 'Google_Service_Compute_MetadataItems'; + protected $itemsDataType = 'array'; + public $kind; + + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + + public function getFingerprint() + { + return $this->fingerprint; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Compute_MetadataItems extends Google_Model +{ + public $key; + public $value; + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Compute_Network extends Google_Model +{ + public $iPv4Range; + public $creationTimestamp; + public $description; + public $gatewayIPv4; + public $id; + public $kind; + public $name; + public $selfLink; + + public function setIPv4Range($iPv4Range) + { + $this->iPv4Range = $iPv4Range; + } + + public function getIPv4Range() + { + return $this->iPv4Range; + } + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setGatewayIPv4($gatewayIPv4) + { + $this->gatewayIPv4 = $gatewayIPv4; + } + + public function getGatewayIPv4() + { + return $this->gatewayIPv4; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_NetworkInterface extends Google_Collection +{ + protected $accessConfigsType = 'Google_Service_Compute_AccessConfig'; + protected $accessConfigsDataType = 'array'; + public $name; + public $network; + public $networkIP; + + public function setAccessConfigs($accessConfigs) + { + $this->accessConfigs = $accessConfigs; + } + + public function getAccessConfigs() + { + return $this->accessConfigs; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNetwork($network) + { + $this->network = $network; + } + + public function getNetwork() + { + return $this->network; + } + + public function setNetworkIP($networkIP) + { + $this->networkIP = $networkIP; + } + + public function getNetworkIP() + { + return $this->networkIP; + } +} + +class Google_Service_Compute_NetworkList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Compute_Network'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_Operation extends Google_Collection +{ + public $clientOperationId; + public $creationTimestamp; + public $endTime; + protected $errorType = 'Google_Service_Compute_OperationError'; + protected $errorDataType = ''; + public $httpErrorMessage; + public $httpErrorStatusCode; + public $id; + public $insertTime; + public $kind; + public $name; + public $operationType; + public $progress; + public $region; + public $selfLink; + public $startTime; + public $status; + public $statusMessage; + public $targetId; + public $targetLink; + public $user; + protected $warningsType = 'Google_Service_Compute_OperationWarnings'; + protected $warningsDataType = 'array'; + public $zone; + + public function setClientOperationId($clientOperationId) + { + $this->clientOperationId = $clientOperationId; + } + + public function getClientOperationId() + { + return $this->clientOperationId; + } + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setEndTime($endTime) + { + $this->endTime = $endTime; + } + + public function getEndTime() + { + return $this->endTime; + } + + public function setError(Google_Service_Compute_OperationError $error) + { + $this->error = $error; + } + + public function getError() + { + return $this->error; + } + + public function setHttpErrorMessage($httpErrorMessage) + { + $this->httpErrorMessage = $httpErrorMessage; + } + + public function getHttpErrorMessage() + { + return $this->httpErrorMessage; + } + + public function setHttpErrorStatusCode($httpErrorStatusCode) + { + $this->httpErrorStatusCode = $httpErrorStatusCode; + } + + public function getHttpErrorStatusCode() + { + return $this->httpErrorStatusCode; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInsertTime($insertTime) + { + $this->insertTime = $insertTime; + } + + public function getInsertTime() + { + return $this->insertTime; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setOperationType($operationType) + { + $this->operationType = $operationType; + } + + public function getOperationType() + { + return $this->operationType; + } + + public function setProgress($progress) + { + $this->progress = $progress; + } + + public function getProgress() + { + return $this->progress; + } + + public function setRegion($region) + { + $this->region = $region; + } + + public function getRegion() + { + return $this->region; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setStartTime($startTime) + { + $this->startTime = $startTime; + } + + public function getStartTime() + { + return $this->startTime; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setStatusMessage($statusMessage) + { + $this->statusMessage = $statusMessage; + } + + public function getStatusMessage() + { + return $this->statusMessage; + } + + public function setTargetId($targetId) + { + $this->targetId = $targetId; + } + + public function getTargetId() + { + return $this->targetId; + } + + public function setTargetLink($targetLink) + { + $this->targetLink = $targetLink; + } + + public function getTargetLink() + { + return $this->targetLink; + } + + public function setUser($user) + { + $this->user = $user; + } + + public function getUser() + { + return $this->user; + } + + public function setWarnings($warnings) + { + $this->warnings = $warnings; + } + + public function getWarnings() + { + return $this->warnings; + } + + public function setZone($zone) + { + $this->zone = $zone; + } + + public function getZone() + { + return $this->zone; + } +} + +class Google_Service_Compute_OperationAggregatedList extends Google_Model +{ + public $id; + protected $itemsType = 'Google_Service_Compute_OperationsScopedList'; + protected $itemsDataType = 'map'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_OperationAggregatedListItems extends Google_Model +{ + +} + +class Google_Service_Compute_OperationError extends Google_Collection +{ + protected $errorsType = 'Google_Service_Compute_OperationErrorErrors'; + protected $errorsDataType = 'array'; + + public function setErrors($errors) + { + $this->errors = $errors; + } + + public function getErrors() + { + return $this->errors; + } +} + +class Google_Service_Compute_OperationErrorErrors extends Google_Model +{ + public $code; + public $location; + public $message; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setLocation($location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_Compute_OperationList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Compute_Operation'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_OperationWarnings extends Google_Collection +{ + public $code; + protected $dataType = 'Google_Service_Compute_OperationWarningsData'; + protected $dataDataType = 'array'; + public $message; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_Compute_OperationWarningsData extends Google_Model +{ + public $key; + public $value; + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Compute_OperationsScopedList extends Google_Collection +{ + protected $operationsType = 'Google_Service_Compute_Operation'; + protected $operationsDataType = 'array'; + protected $warningType = 'Google_Service_Compute_OperationsScopedListWarning'; + protected $warningDataType = ''; + + public function setOperations($operations) + { + $this->operations = $operations; + } + + public function getOperations() + { + return $this->operations; + } + + public function setWarning(Google_Service_Compute_OperationsScopedListWarning $warning) + { + $this->warning = $warning; + } + + public function getWarning() + { + return $this->warning; + } +} + +class Google_Service_Compute_OperationsScopedListWarning extends Google_Collection +{ + public $code; + protected $dataType = 'Google_Service_Compute_OperationsScopedListWarningData'; + protected $dataDataType = 'array'; + public $message; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_Compute_OperationsScopedListWarningData extends Google_Model +{ + public $key; + public $value; + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Compute_PathMatcher extends Google_Collection +{ + public $defaultService; + public $description; + public $name; + protected $pathRulesType = 'Google_Service_Compute_PathRule'; + protected $pathRulesDataType = 'array'; + + public function setDefaultService($defaultService) + { + $this->defaultService = $defaultService; + } + + public function getDefaultService() + { + return $this->defaultService; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPathRules($pathRules) + { + $this->pathRules = $pathRules; + } + + public function getPathRules() + { + return $this->pathRules; + } +} + +class Google_Service_Compute_PathRule extends Google_Collection +{ + public $paths; + public $service; + + public function setPaths($paths) + { + $this->paths = $paths; + } + + public function getPaths() + { + return $this->paths; + } + + public function setService($service) + { + $this->service = $service; + } + + public function getService() + { + return $this->service; + } +} + +class Google_Service_Compute_Project extends Google_Collection +{ + protected $commonInstanceMetadataType = 'Google_Service_Compute_Metadata'; + protected $commonInstanceMetadataDataType = ''; + public $creationTimestamp; + public $description; + public $id; + public $kind; + public $name; + protected $quotasType = 'Google_Service_Compute_Quota'; + protected $quotasDataType = 'array'; + public $selfLink; + protected $usageExportLocationType = 'Google_Service_Compute_UsageExportLocation'; + protected $usageExportLocationDataType = ''; + + public function setCommonInstanceMetadata(Google_Service_Compute_Metadata $commonInstanceMetadata) + { + $this->commonInstanceMetadata = $commonInstanceMetadata; + } + + public function getCommonInstanceMetadata() + { + return $this->commonInstanceMetadata; + } + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setQuotas($quotas) + { + $this->quotas = $quotas; + } + + public function getQuotas() + { + return $this->quotas; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setUsageExportLocation(Google_Service_Compute_UsageExportLocation $usageExportLocation) + { + $this->usageExportLocation = $usageExportLocation; + } + + public function getUsageExportLocation() + { + return $this->usageExportLocation; + } +} + +class Google_Service_Compute_Quota extends Google_Model +{ + public $limit; + public $metric; + public $usage; + + public function setLimit($limit) + { + $this->limit = $limit; + } + + public function getLimit() + { + return $this->limit; + } + + public function setMetric($metric) + { + $this->metric = $metric; + } + + public function getMetric() + { + return $this->metric; + } + + public function setUsage($usage) + { + $this->usage = $usage; + } + + public function getUsage() + { + return $this->usage; + } +} + +class Google_Service_Compute_Region extends Google_Collection +{ + public $creationTimestamp; + protected $deprecatedType = 'Google_Service_Compute_DeprecationStatus'; + protected $deprecatedDataType = ''; + public $description; + public $id; + public $kind; + public $name; + protected $quotasType = 'Google_Service_Compute_Quota'; + protected $quotasDataType = 'array'; + public $selfLink; + public $status; + public $zones; + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDeprecated(Google_Service_Compute_DeprecationStatus $deprecated) + { + $this->deprecated = $deprecated; + } + + public function getDeprecated() + { + return $this->deprecated; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setQuotas($quotas) + { + $this->quotas = $quotas; + } + + public function getQuotas() + { + return $this->quotas; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setZones($zones) + { + $this->zones = $zones; + } + + public function getZones() + { + return $this->zones; + } +} + +class Google_Service_Compute_RegionList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Compute_Region'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_ResourceGroupReference extends Google_Model +{ + public $group; + + public function setGroup($group) + { + $this->group = $group; + } + + public function getGroup() + { + return $this->group; + } +} + +class Google_Service_Compute_Route extends Google_Collection +{ + public $creationTimestamp; + public $description; + public $destRange; + public $id; + public $kind; + public $name; + public $network; + public $nextHopGateway; + public $nextHopInstance; + public $nextHopIp; + public $nextHopNetwork; + public $priority; + public $selfLink; + public $tags; + protected $warningsType = 'Google_Service_Compute_RouteWarnings'; + protected $warningsDataType = 'array'; + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDestRange($destRange) + { + $this->destRange = $destRange; + } + + public function getDestRange() + { + return $this->destRange; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNetwork($network) + { + $this->network = $network; + } + + public function getNetwork() + { + return $this->network; + } + + public function setNextHopGateway($nextHopGateway) + { + $this->nextHopGateway = $nextHopGateway; + } + + public function getNextHopGateway() + { + return $this->nextHopGateway; + } + + public function setNextHopInstance($nextHopInstance) + { + $this->nextHopInstance = $nextHopInstance; + } + + public function getNextHopInstance() + { + return $this->nextHopInstance; + } + + public function setNextHopIp($nextHopIp) + { + $this->nextHopIp = $nextHopIp; + } + + public function getNextHopIp() + { + return $this->nextHopIp; + } + + public function setNextHopNetwork($nextHopNetwork) + { + $this->nextHopNetwork = $nextHopNetwork; + } + + public function getNextHopNetwork() + { + return $this->nextHopNetwork; + } + + public function setPriority($priority) + { + $this->priority = $priority; + } + + public function getPriority() + { + return $this->priority; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTags($tags) + { + $this->tags = $tags; + } + + public function getTags() + { + return $this->tags; + } + + public function setWarnings($warnings) + { + $this->warnings = $warnings; + } + + public function getWarnings() + { + return $this->warnings; + } +} + +class Google_Service_Compute_RouteList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Compute_Route'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_RouteWarnings extends Google_Collection +{ + public $code; + protected $dataType = 'Google_Service_Compute_RouteWarningsData'; + protected $dataDataType = 'array'; + public $message; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_Compute_RouteWarningsData extends Google_Model +{ + public $key; + public $value; + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Compute_Scheduling extends Google_Model +{ + public $automaticRestart; + public $onHostMaintenance; + + public function setAutomaticRestart($automaticRestart) + { + $this->automaticRestart = $automaticRestart; + } + + public function getAutomaticRestart() + { + return $this->automaticRestart; + } + + public function setOnHostMaintenance($onHostMaintenance) + { + $this->onHostMaintenance = $onHostMaintenance; + } + + public function getOnHostMaintenance() + { + return $this->onHostMaintenance; + } +} + +class Google_Service_Compute_SerialPortOutput extends Google_Model +{ + public $contents; + public $kind; + public $selfLink; + + public function setContents($contents) + { + $this->contents = $contents; + } + + public function getContents() + { + return $this->contents; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_ServiceAccount extends Google_Collection +{ + public $email; + public $scopes; + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setScopes($scopes) + { + $this->scopes = $scopes; + } + + public function getScopes() + { + return $this->scopes; + } +} + +class Google_Service_Compute_Snapshot extends Google_Collection +{ + public $creationTimestamp; + public $description; + public $diskSizeGb; + public $id; + public $kind; + public $licenses; + public $name; + public $selfLink; + public $sourceDisk; + public $sourceDiskId; + public $status; + public $storageBytes; + public $storageBytesStatus; + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDiskSizeGb($diskSizeGb) + { + $this->diskSizeGb = $diskSizeGb; + } + + public function getDiskSizeGb() + { + return $this->diskSizeGb; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLicenses($licenses) + { + $this->licenses = $licenses; + } + + public function getLicenses() + { + return $this->licenses; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setSourceDisk($sourceDisk) + { + $this->sourceDisk = $sourceDisk; + } + + public function getSourceDisk() + { + return $this->sourceDisk; + } + + public function setSourceDiskId($sourceDiskId) + { + $this->sourceDiskId = $sourceDiskId; + } + + public function getSourceDiskId() + { + return $this->sourceDiskId; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setStorageBytes($storageBytes) + { + $this->storageBytes = $storageBytes; + } + + public function getStorageBytes() + { + return $this->storageBytes; + } + + public function setStorageBytesStatus($storageBytesStatus) + { + $this->storageBytesStatus = $storageBytesStatus; + } + + public function getStorageBytesStatus() + { + return $this->storageBytesStatus; + } +} + +class Google_Service_Compute_SnapshotList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Compute_Snapshot'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_Tags extends Google_Collection +{ + public $fingerprint; + public $items; + + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + + public function getFingerprint() + { + return $this->fingerprint; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } +} + +class Google_Service_Compute_TargetHttpProxy extends Google_Model +{ + public $creationTimestamp; + public $description; + public $id; + public $kind; + public $name; + public $selfLink; + public $urlMap; + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setUrlMap($urlMap) + { + $this->urlMap = $urlMap; + } + + public function getUrlMap() + { + return $this->urlMap; + } +} + +class Google_Service_Compute_TargetHttpProxyList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Compute_TargetHttpProxy'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_TargetInstance extends Google_Model +{ + public $creationTimestamp; + public $description; + public $id; + public $instance; + public $kind; + public $name; + public $natPolicy; + public $selfLink; + public $zone; + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInstance($instance) + { + $this->instance = $instance; + } + + public function getInstance() + { + return $this->instance; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNatPolicy($natPolicy) + { + $this->natPolicy = $natPolicy; + } + + public function getNatPolicy() + { + return $this->natPolicy; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setZone($zone) + { + $this->zone = $zone; + } + + public function getZone() + { + return $this->zone; + } +} + +class Google_Service_Compute_TargetInstanceAggregatedList extends Google_Model +{ + public $id; + protected $itemsType = 'Google_Service_Compute_TargetInstancesScopedList'; + protected $itemsDataType = 'map'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_TargetInstanceAggregatedListItems extends Google_Model +{ + +} + +class Google_Service_Compute_TargetInstanceList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Compute_TargetInstance'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_TargetInstancesScopedList extends Google_Collection +{ + protected $targetInstancesType = 'Google_Service_Compute_TargetInstance'; + protected $targetInstancesDataType = 'array'; + protected $warningType = 'Google_Service_Compute_TargetInstancesScopedListWarning'; + protected $warningDataType = ''; + + public function setTargetInstances($targetInstances) + { + $this->targetInstances = $targetInstances; + } + + public function getTargetInstances() + { + return $this->targetInstances; + } + + public function setWarning(Google_Service_Compute_TargetInstancesScopedListWarning $warning) + { + $this->warning = $warning; + } + + public function getWarning() + { + return $this->warning; + } +} + +class Google_Service_Compute_TargetInstancesScopedListWarning extends Google_Collection +{ + public $code; + protected $dataType = 'Google_Service_Compute_TargetInstancesScopedListWarningData'; + protected $dataDataType = 'array'; + public $message; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_Compute_TargetInstancesScopedListWarningData extends Google_Model +{ + public $key; + public $value; + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Compute_TargetPool extends Google_Collection +{ + public $backupPool; + public $creationTimestamp; + public $description; + public $failoverRatio; + public $healthChecks; + public $id; + public $instances; + public $kind; + public $name; + public $region; + public $selfLink; + public $sessionAffinity; + + public function setBackupPool($backupPool) + { + $this->backupPool = $backupPool; + } + + public function getBackupPool() + { + return $this->backupPool; + } + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setFailoverRatio($failoverRatio) + { + $this->failoverRatio = $failoverRatio; + } + + public function getFailoverRatio() + { + return $this->failoverRatio; + } + + public function setHealthChecks($healthChecks) + { + $this->healthChecks = $healthChecks; + } + + public function getHealthChecks() + { + return $this->healthChecks; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInstances($instances) + { + $this->instances = $instances; + } + + public function getInstances() + { + return $this->instances; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setRegion($region) + { + $this->region = $region; + } + + public function getRegion() + { + return $this->region; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setSessionAffinity($sessionAffinity) + { + $this->sessionAffinity = $sessionAffinity; + } + + public function getSessionAffinity() + { + return $this->sessionAffinity; + } +} + +class Google_Service_Compute_TargetPoolAggregatedList extends Google_Model +{ + public $id; + protected $itemsType = 'Google_Service_Compute_TargetPoolsScopedList'; + protected $itemsDataType = 'map'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_TargetPoolAggregatedListItems extends Google_Model +{ + +} + +class Google_Service_Compute_TargetPoolInstanceHealth extends Google_Collection +{ + protected $healthStatusType = 'Google_Service_Compute_HealthStatus'; + protected $healthStatusDataType = 'array'; + public $kind; + + public function setHealthStatus($healthStatus) + { + $this->healthStatus = $healthStatus; + } + + public function getHealthStatus() + { + return $this->healthStatus; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Compute_TargetPoolList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Compute_TargetPool'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_TargetPoolsAddHealthCheckRequest extends Google_Collection +{ + protected $healthChecksType = 'Google_Service_Compute_HealthCheckReference'; + protected $healthChecksDataType = 'array'; + + public function setHealthChecks($healthChecks) + { + $this->healthChecks = $healthChecks; + } + + public function getHealthChecks() + { + return $this->healthChecks; + } +} + +class Google_Service_Compute_TargetPoolsAddInstanceRequest extends Google_Collection +{ + protected $instancesType = 'Google_Service_Compute_InstanceReference'; + protected $instancesDataType = 'array'; + + public function setInstances($instances) + { + $this->instances = $instances; + } + + public function getInstances() + { + return $this->instances; + } +} + +class Google_Service_Compute_TargetPoolsRemoveHealthCheckRequest extends Google_Collection +{ + protected $healthChecksType = 'Google_Service_Compute_HealthCheckReference'; + protected $healthChecksDataType = 'array'; + + public function setHealthChecks($healthChecks) + { + $this->healthChecks = $healthChecks; + } + + public function getHealthChecks() + { + return $this->healthChecks; + } +} + +class Google_Service_Compute_TargetPoolsRemoveInstanceRequest extends Google_Collection +{ + protected $instancesType = 'Google_Service_Compute_InstanceReference'; + protected $instancesDataType = 'array'; + + public function setInstances($instances) + { + $this->instances = $instances; + } + + public function getInstances() + { + return $this->instances; + } +} + +class Google_Service_Compute_TargetPoolsScopedList extends Google_Collection +{ + protected $targetPoolsType = 'Google_Service_Compute_TargetPool'; + protected $targetPoolsDataType = 'array'; + protected $warningType = 'Google_Service_Compute_TargetPoolsScopedListWarning'; + protected $warningDataType = ''; + + public function setTargetPools($targetPools) + { + $this->targetPools = $targetPools; + } + + public function getTargetPools() + { + return $this->targetPools; + } + + public function setWarning(Google_Service_Compute_TargetPoolsScopedListWarning $warning) + { + $this->warning = $warning; + } + + public function getWarning() + { + return $this->warning; + } +} + +class Google_Service_Compute_TargetPoolsScopedListWarning extends Google_Collection +{ + public $code; + protected $dataType = 'Google_Service_Compute_TargetPoolsScopedListWarningData'; + protected $dataDataType = 'array'; + public $message; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_Compute_TargetPoolsScopedListWarningData extends Google_Model +{ + public $key; + public $value; + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Compute_TargetReference extends Google_Model +{ + public $target; + + public function setTarget($target) + { + $this->target = $target; + } + + public function getTarget() + { + return $this->target; + } +} + +class Google_Service_Compute_TestFailure extends Google_Model +{ + public $actualService; + public $expectedService; + public $host; + public $path; + + public function setActualService($actualService) + { + $this->actualService = $actualService; + } + + public function getActualService() + { + return $this->actualService; + } + + public function setExpectedService($expectedService) + { + $this->expectedService = $expectedService; + } + + public function getExpectedService() + { + return $this->expectedService; + } + + public function setHost($host) + { + $this->host = $host; + } + + public function getHost() + { + return $this->host; + } + + public function setPath($path) + { + $this->path = $path; + } + + public function getPath() + { + return $this->path; + } +} + +class Google_Service_Compute_UrlMap extends Google_Collection +{ + public $creationTimestamp; + public $defaultService; + public $description; + public $fingerprint; + protected $hostRulesType = 'Google_Service_Compute_HostRule'; + protected $hostRulesDataType = 'array'; + public $id; + public $kind; + public $name; + protected $pathMatchersType = 'Google_Service_Compute_PathMatcher'; + protected $pathMatchersDataType = 'array'; + public $selfLink; + protected $testsType = 'Google_Service_Compute_UrlMapTest'; + protected $testsDataType = 'array'; + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDefaultService($defaultService) + { + $this->defaultService = $defaultService; + } + + public function getDefaultService() + { + return $this->defaultService; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setFingerprint($fingerprint) + { + $this->fingerprint = $fingerprint; + } + + public function getFingerprint() + { + return $this->fingerprint; + } + + public function setHostRules($hostRules) + { + $this->hostRules = $hostRules; + } + + public function getHostRules() + { + return $this->hostRules; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPathMatchers($pathMatchers) + { + $this->pathMatchers = $pathMatchers; + } + + public function getPathMatchers() + { + return $this->pathMatchers; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTests($tests) + { + $this->tests = $tests; + } + + public function getTests() + { + return $this->tests; + } +} + +class Google_Service_Compute_UrlMapList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Compute_UrlMap'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_UrlMapReference extends Google_Model +{ + public $urlMap; + + public function setUrlMap($urlMap) + { + $this->urlMap = $urlMap; + } + + public function getUrlMap() + { + return $this->urlMap; + } +} + +class Google_Service_Compute_UrlMapTest extends Google_Model +{ + public $description; + public $host; + public $path; + public $service; + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setHost($host) + { + $this->host = $host; + } + + public function getHost() + { + return $this->host; + } + + public function setPath($path) + { + $this->path = $path; + } + + public function getPath() + { + return $this->path; + } + + public function setService($service) + { + $this->service = $service; + } + + public function getService() + { + return $this->service; + } +} + +class Google_Service_Compute_UrlMapValidationResult extends Google_Collection +{ + public $loadErrors; + public $loadSucceeded; + protected $testFailuresType = 'Google_Service_Compute_TestFailure'; + protected $testFailuresDataType = 'array'; + public $testPassed; + + public function setLoadErrors($loadErrors) + { + $this->loadErrors = $loadErrors; + } + + public function getLoadErrors() + { + return $this->loadErrors; + } + + public function setLoadSucceeded($loadSucceeded) + { + $this->loadSucceeded = $loadSucceeded; + } + + public function getLoadSucceeded() + { + return $this->loadSucceeded; + } + + public function setTestFailures($testFailures) + { + $this->testFailures = $testFailures; + } + + public function getTestFailures() + { + return $this->testFailures; + } + + public function setTestPassed($testPassed) + { + $this->testPassed = $testPassed; + } + + public function getTestPassed() + { + return $this->testPassed; + } +} + +class Google_Service_Compute_UrlMapsValidateRequest extends Google_Model +{ + protected $resourceType = 'Google_Service_Compute_UrlMap'; + protected $resourceDataType = ''; + + public function setResource(Google_Service_Compute_UrlMap $resource) + { + $this->resource = $resource; + } + + public function getResource() + { + return $this->resource; + } +} + +class Google_Service_Compute_UrlMapsValidateResponse extends Google_Model +{ + protected $resultType = 'Google_Service_Compute_UrlMapValidationResult'; + protected $resultDataType = ''; + + public function setResult(Google_Service_Compute_UrlMapValidationResult $result) + { + $this->result = $result; + } + + public function getResult() + { + return $this->result; + } +} + +class Google_Service_Compute_UsageExportLocation extends Google_Model +{ + public $bucketName; + public $reportNamePrefix; + + public function setBucketName($bucketName) + { + $this->bucketName = $bucketName; + } + + public function getBucketName() + { + return $this->bucketName; + } + + public function setReportNamePrefix($reportNamePrefix) + { + $this->reportNamePrefix = $reportNamePrefix; + } + + public function getReportNamePrefix() + { + return $this->reportNamePrefix; + } +} + +class Google_Service_Compute_Zone extends Google_Collection +{ + public $creationTimestamp; + protected $deprecatedType = 'Google_Service_Compute_DeprecationStatus'; + protected $deprecatedDataType = ''; + public $description; + public $id; + public $kind; + protected $maintenanceWindowsType = 'Google_Service_Compute_ZoneMaintenanceWindows'; + protected $maintenanceWindowsDataType = 'array'; + public $name; + public $region; + public $selfLink; + public $status; + + public function setCreationTimestamp($creationTimestamp) + { + $this->creationTimestamp = $creationTimestamp; + } + + public function getCreationTimestamp() + { + return $this->creationTimestamp; + } + + public function setDeprecated(Google_Service_Compute_DeprecationStatus $deprecated) + { + $this->deprecated = $deprecated; + } + + public function getDeprecated() + { + return $this->deprecated; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMaintenanceWindows($maintenanceWindows) + { + $this->maintenanceWindows = $maintenanceWindows; + } + + public function getMaintenanceWindows() + { + return $this->maintenanceWindows; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setRegion($region) + { + $this->region = $region; + } + + public function getRegion() + { + return $this->region; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_Compute_ZoneList extends Google_Collection +{ + public $id; + protected $itemsType = 'Google_Service_Compute_Zone'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Compute_ZoneMaintenanceWindows extends Google_Model +{ + public $beginTime; + public $description; + public $endTime; + public $name; + + public function setBeginTime($beginTime) + { + $this->beginTime = $beginTime; + } + + public function getBeginTime() + { + return $this->beginTime; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setEndTime($endTime) + { + $this->endTime = $endTime; + } + + public function getEndTime() + { + return $this->endTime; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} diff --git a/oauth/Google/Service/Coordinate.php b/oauth/Google/Service/Coordinate.php new file mode 100644 index 0000000..285da1f --- /dev/null +++ b/oauth/Google/Service/Coordinate.php @@ -0,0 +1,1474 @@ + + * Lets you view and manage jobs in a Coordinate team. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Coordinate extends Google_Service +{ + /** View and manage your Google Maps Coordinate jobs. */ + const COORDINATE = "https://www.googleapis.com/auth/coordinate"; + /** View your Google Coordinate jobs. */ + const COORDINATE_READONLY = "https://www.googleapis.com/auth/coordinate.readonly"; + + public $customFieldDef; + public $jobs; + public $location; + public $schedule; + public $worker; + + + /** + * Constructs the internal representation of the Coordinate service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'coordinate/v1/teams/'; + $this->version = 'v1'; + $this->serviceName = 'coordinate'; + + $this->customFieldDef = new Google_Service_Coordinate_CustomFieldDef_Resource( + $this, + $this->serviceName, + 'customFieldDef', + array( + 'methods' => array( + 'list' => array( + 'path' => '{teamId}/custom_fields', + 'httpMethod' => 'GET', + 'parameters' => array( + 'teamId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->jobs = new Google_Service_Coordinate_Jobs_Resource( + $this, + $this->serviceName, + 'jobs', + array( + 'methods' => array( + 'get' => array( + 'path' => '{teamId}/jobs/{jobId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'teamId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'jobId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{teamId}/jobs', + 'httpMethod' => 'POST', + 'parameters' => array( + 'teamId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'address' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'lat' => array( + 'location' => 'query', + 'type' => 'number', + 'required' => true, + ), + 'lng' => array( + 'location' => 'query', + 'type' => 'number', + 'required' => true, + ), + 'title' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'customerName' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'note' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'assignee' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'customerPhoneNumber' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'customField' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + ), + ),'list' => array( + 'path' => '{teamId}/jobs', + 'httpMethod' => 'GET', + 'parameters' => array( + 'teamId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'minModifiedTimestampMs' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => '{teamId}/jobs/{jobId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'teamId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'jobId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customerName' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'title' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'note' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'assignee' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'customerPhoneNumber' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'address' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'lat' => array( + 'location' => 'query', + 'type' => 'number', + ), + 'progress' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'lng' => array( + 'location' => 'query', + 'type' => 'number', + ), + 'customField' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + ), + ),'update' => array( + 'path' => '{teamId}/jobs/{jobId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'teamId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'jobId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customerName' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'title' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'note' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'assignee' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'customerPhoneNumber' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'address' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'lat' => array( + 'location' => 'query', + 'type' => 'number', + ), + 'progress' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'lng' => array( + 'location' => 'query', + 'type' => 'number', + ), + 'customField' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + ), + ), + ) + ) + ); + $this->location = new Google_Service_Coordinate_Location_Resource( + $this, + $this->serviceName, + 'location', + array( + 'methods' => array( + 'list' => array( + 'path' => '{teamId}/workers/{workerEmail}/locations', + 'httpMethod' => 'GET', + 'parameters' => array( + 'teamId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'workerEmail' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'startTimestampMs' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->schedule = new Google_Service_Coordinate_Schedule_Resource( + $this, + $this->serviceName, + 'schedule', + array( + 'methods' => array( + 'get' => array( + 'path' => '{teamId}/jobs/{jobId}/schedule', + 'httpMethod' => 'GET', + 'parameters' => array( + 'teamId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'jobId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => '{teamId}/jobs/{jobId}/schedule', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'teamId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'jobId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'allDay' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'startTime' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'duration' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'endTime' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'update' => array( + 'path' => '{teamId}/jobs/{jobId}/schedule', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'teamId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'jobId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'allDay' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'startTime' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'duration' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'endTime' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->worker = new Google_Service_Coordinate_Worker_Resource( + $this, + $this->serviceName, + 'worker', + array( + 'methods' => array( + 'list' => array( + 'path' => '{teamId}/workers', + 'httpMethod' => 'GET', + 'parameters' => array( + 'teamId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "customFieldDef" collection of methods. + * Typical usage is: + * + * $coordinateService = new Google_Service_Coordinate(...); + * $customFieldDef = $coordinateService->customFieldDef; + * + */ +class Google_Service_Coordinate_CustomFieldDef_Resource extends Google_Service_Resource +{ + + /** + * Retrieves a list of custom field definitions for a team. + * (customFieldDef.listCustomFieldDef) + * + * @param string $teamId + * Team ID + * @param array $optParams Optional parameters. + * @return Google_Service_Coordinate_CustomFieldDefListResponse + */ + public function listCustomFieldDef($teamId, $optParams = array()) + { + $params = array('teamId' => $teamId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Coordinate_CustomFieldDefListResponse"); + } +} + +/** + * The "jobs" collection of methods. + * Typical usage is: + * + * $coordinateService = new Google_Service_Coordinate(...); + * $jobs = $coordinateService->jobs; + * + */ +class Google_Service_Coordinate_Jobs_Resource extends Google_Service_Resource +{ + + /** + * Retrieves a job, including all the changes made to the job. (jobs.get) + * + * @param string $teamId + * Team ID + * @param string $jobId + * Job number + * @param array $optParams Optional parameters. + * @return Google_Service_Coordinate_Job + */ + public function get($teamId, $jobId, $optParams = array()) + { + $params = array('teamId' => $teamId, 'jobId' => $jobId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Coordinate_Job"); + } + /** + * Inserts a new job. Only the state field of the job should be set. + * (jobs.insert) + * + * @param string $teamId + * Team ID + * @param string $address + * Job address as newline (Unix) separated string + * @param double $lat + * The latitude coordinate of this job's location. + * @param double $lng + * The longitude coordinate of this job's location. + * @param string $title + * Job title + * @param Google_Job $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string customerName + * Customer name + * @opt_param string note + * Job note as newline (Unix) separated string + * @opt_param string assignee + * Assignee email address, or empty string to unassign. + * @opt_param string customerPhoneNumber + * Customer phone number + * @opt_param string customField + * Map from custom field id (from /team//custom_fields) to the field value. For example '123=Alice' + * @return Google_Service_Coordinate_Job + */ + public function insert($teamId, $address, $lat, $lng, $title, Google_Service_Coordinate_Job $postBody, $optParams = array()) + { + $params = array('teamId' => $teamId, 'address' => $address, 'lat' => $lat, 'lng' => $lng, 'title' => $title, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Coordinate_Job"); + } + /** + * Retrieves jobs created or modified since the given timestamp. (jobs.listJobs) + * + * @param string $teamId + * Team ID + * @param array $optParams Optional parameters. + * + * @opt_param string minModifiedTimestampMs + * Minimum time a job was modified in milliseconds since epoch. + * @opt_param string maxResults + * Maximum number of results to return in one page. + * @opt_param string pageToken + * Continuation token + * @return Google_Service_Coordinate_JobListResponse + */ + public function listJobs($teamId, $optParams = array()) + { + $params = array('teamId' => $teamId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Coordinate_JobListResponse"); + } + /** + * Updates a job. Fields that are set in the job state will be updated. This + * method supports patch semantics. (jobs.patch) + * + * @param string $teamId + * Team ID + * @param string $jobId + * Job number + * @param Google_Job $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string customerName + * Customer name + * @opt_param string title + * Job title + * @opt_param string note + * Job note as newline (Unix) separated string + * @opt_param string assignee + * Assignee email address, or empty string to unassign. + * @opt_param string customerPhoneNumber + * Customer phone number + * @opt_param string address + * Job address as newline (Unix) separated string + * @opt_param double lat + * The latitude coordinate of this job's location. + * @opt_param string progress + * Job progress + * @opt_param double lng + * The longitude coordinate of this job's location. + * @opt_param string customField + * Map from custom field id (from /team//custom_fields) to the field value. For example '123=Alice' + * @return Google_Service_Coordinate_Job + */ + public function patch($teamId, $jobId, Google_Service_Coordinate_Job $postBody, $optParams = array()) + { + $params = array('teamId' => $teamId, 'jobId' => $jobId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Coordinate_Job"); + } + /** + * Updates a job. Fields that are set in the job state will be updated. + * (jobs.update) + * + * @param string $teamId + * Team ID + * @param string $jobId + * Job number + * @param Google_Job $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string customerName + * Customer name + * @opt_param string title + * Job title + * @opt_param string note + * Job note as newline (Unix) separated string + * @opt_param string assignee + * Assignee email address, or empty string to unassign. + * @opt_param string customerPhoneNumber + * Customer phone number + * @opt_param string address + * Job address as newline (Unix) separated string + * @opt_param double lat + * The latitude coordinate of this job's location. + * @opt_param string progress + * Job progress + * @opt_param double lng + * The longitude coordinate of this job's location. + * @opt_param string customField + * Map from custom field id (from /team//custom_fields) to the field value. For example '123=Alice' + * @return Google_Service_Coordinate_Job + */ + public function update($teamId, $jobId, Google_Service_Coordinate_Job $postBody, $optParams = array()) + { + $params = array('teamId' => $teamId, 'jobId' => $jobId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Coordinate_Job"); + } +} + +/** + * The "location" collection of methods. + * Typical usage is: + * + * $coordinateService = new Google_Service_Coordinate(...); + * $location = $coordinateService->location; + * + */ +class Google_Service_Coordinate_Location_Resource extends Google_Service_Resource +{ + + /** + * Retrieves a list of locations for a worker. (location.listLocation) + * + * @param string $teamId + * Team ID + * @param string $workerEmail + * Worker email address. + * @param string $startTimestampMs + * Start timestamp in milliseconds since the epoch. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Continuation token + * @opt_param string maxResults + * Maximum number of results to return in one page. + * @return Google_Service_Coordinate_LocationListResponse + */ + public function listLocation($teamId, $workerEmail, $startTimestampMs, $optParams = array()) + { + $params = array('teamId' => $teamId, 'workerEmail' => $workerEmail, 'startTimestampMs' => $startTimestampMs); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Coordinate_LocationListResponse"); + } +} + +/** + * The "schedule" collection of methods. + * Typical usage is: + * + * $coordinateService = new Google_Service_Coordinate(...); + * $schedule = $coordinateService->schedule; + * + */ +class Google_Service_Coordinate_Schedule_Resource extends Google_Service_Resource +{ + + /** + * Retrieves the schedule for a job. (schedule.get) + * + * @param string $teamId + * Team ID + * @param string $jobId + * Job number + * @param array $optParams Optional parameters. + * @return Google_Service_Coordinate_Schedule + */ + public function get($teamId, $jobId, $optParams = array()) + { + $params = array('teamId' => $teamId, 'jobId' => $jobId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Coordinate_Schedule"); + } + /** + * Replaces the schedule of a job with the provided schedule. This method + * supports patch semantics. (schedule.patch) + * + * @param string $teamId + * Team ID + * @param string $jobId + * Job number + * @param Google_Schedule $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool allDay + * Whether the job is scheduled for the whole day. Time of day in start/end times is ignored if + * this is true. + * @opt_param string startTime + * Scheduled start time in milliseconds since epoch. + * @opt_param string duration + * Job duration in milliseconds. + * @opt_param string endTime + * Scheduled end time in milliseconds since epoch. + * @return Google_Service_Coordinate_Schedule + */ + public function patch($teamId, $jobId, Google_Service_Coordinate_Schedule $postBody, $optParams = array()) + { + $params = array('teamId' => $teamId, 'jobId' => $jobId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Coordinate_Schedule"); + } + /** + * Replaces the schedule of a job with the provided schedule. (schedule.update) + * + * @param string $teamId + * Team ID + * @param string $jobId + * Job number + * @param Google_Schedule $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool allDay + * Whether the job is scheduled for the whole day. Time of day in start/end times is ignored if + * this is true. + * @opt_param string startTime + * Scheduled start time in milliseconds since epoch. + * @opt_param string duration + * Job duration in milliseconds. + * @opt_param string endTime + * Scheduled end time in milliseconds since epoch. + * @return Google_Service_Coordinate_Schedule + */ + public function update($teamId, $jobId, Google_Service_Coordinate_Schedule $postBody, $optParams = array()) + { + $params = array('teamId' => $teamId, 'jobId' => $jobId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Coordinate_Schedule"); + } +} + +/** + * The "worker" collection of methods. + * Typical usage is: + * + * $coordinateService = new Google_Service_Coordinate(...); + * $worker = $coordinateService->worker; + * + */ +class Google_Service_Coordinate_Worker_Resource extends Google_Service_Resource +{ + + /** + * Retrieves a list of workers in a team. (worker.listWorker) + * + * @param string $teamId + * Team ID + * @param array $optParams Optional parameters. + * @return Google_Service_Coordinate_WorkerListResponse + */ + public function listWorker($teamId, $optParams = array()) + { + $params = array('teamId' => $teamId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Coordinate_WorkerListResponse"); + } +} + + + + +class Google_Service_Coordinate_CustomField extends Google_Model +{ + public $customFieldId; + public $kind; + public $value; + + public function setCustomFieldId($customFieldId) + { + $this->customFieldId = $customFieldId; + } + + public function getCustomFieldId() + { + return $this->customFieldId; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Coordinate_CustomFieldDef extends Google_Model +{ + public $enabled; + public $id; + public $kind; + public $name; + public $requiredForCheckout; + public $type; + + public function setEnabled($enabled) + { + $this->enabled = $enabled; + } + + public function getEnabled() + { + return $this->enabled; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setRequiredForCheckout($requiredForCheckout) + { + $this->requiredForCheckout = $requiredForCheckout; + } + + public function getRequiredForCheckout() + { + return $this->requiredForCheckout; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Coordinate_CustomFieldDefListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_Coordinate_CustomFieldDef'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Coordinate_CustomFields extends Google_Collection +{ + protected $customFieldType = 'Google_Service_Coordinate_CustomField'; + protected $customFieldDataType = 'array'; + public $kind; + + public function setCustomField($customField) + { + $this->customField = $customField; + } + + public function getCustomField() + { + return $this->customField; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Coordinate_Job extends Google_Collection +{ + public $id; + protected $jobChangeType = 'Google_Service_Coordinate_JobChange'; + protected $jobChangeDataType = 'array'; + public $kind; + protected $stateType = 'Google_Service_Coordinate_JobState'; + protected $stateDataType = ''; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setJobChange($jobChange) + { + $this->jobChange = $jobChange; + } + + public function getJobChange() + { + return $this->jobChange; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setState(Google_Service_Coordinate_JobState $state) + { + $this->state = $state; + } + + public function getState() + { + return $this->state; + } +} + +class Google_Service_Coordinate_JobChange extends Google_Model +{ + public $kind; + protected $stateType = 'Google_Service_Coordinate_JobState'; + protected $stateDataType = ''; + public $timestamp; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setState(Google_Service_Coordinate_JobState $state) + { + $this->state = $state; + } + + public function getState() + { + return $this->state; + } + + public function setTimestamp($timestamp) + { + $this->timestamp = $timestamp; + } + + public function getTimestamp() + { + return $this->timestamp; + } +} + +class Google_Service_Coordinate_JobListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_Coordinate_Job'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Coordinate_JobState extends Google_Collection +{ + public $assignee; + protected $customFieldsType = 'Google_Service_Coordinate_CustomFields'; + protected $customFieldsDataType = ''; + public $customerName; + public $customerPhoneNumber; + public $kind; + protected $locationType = 'Google_Service_Coordinate_Location'; + protected $locationDataType = ''; + public $note; + public $progress; + public $title; + + public function setAssignee($assignee) + { + $this->assignee = $assignee; + } + + public function getAssignee() + { + return $this->assignee; + } + + public function setCustomFields(Google_Service_Coordinate_CustomFields $customFields) + { + $this->customFields = $customFields; + } + + public function getCustomFields() + { + return $this->customFields; + } + + public function setCustomerName($customerName) + { + $this->customerName = $customerName; + } + + public function getCustomerName() + { + return $this->customerName; + } + + public function setCustomerPhoneNumber($customerPhoneNumber) + { + $this->customerPhoneNumber = $customerPhoneNumber; + } + + public function getCustomerPhoneNumber() + { + return $this->customerPhoneNumber; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLocation(Google_Service_Coordinate_Location $location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setNote($note) + { + $this->note = $note; + } + + public function getNote() + { + return $this->note; + } + + public function setProgress($progress) + { + $this->progress = $progress; + } + + public function getProgress() + { + return $this->progress; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_Coordinate_Location extends Google_Collection +{ + public $addressLine; + public $kind; + public $lat; + public $lng; + + public function setAddressLine($addressLine) + { + $this->addressLine = $addressLine; + } + + public function getAddressLine() + { + return $this->addressLine; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLat($lat) + { + $this->lat = $lat; + } + + public function getLat() + { + return $this->lat; + } + + public function setLng($lng) + { + $this->lng = $lng; + } + + public function getLng() + { + return $this->lng; + } +} + +class Google_Service_Coordinate_LocationListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_Coordinate_LocationRecord'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + protected $tokenPaginationType = 'Google_Service_Coordinate_TokenPagination'; + protected $tokenPaginationDataType = ''; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setTokenPagination(Google_Service_Coordinate_TokenPagination $tokenPagination) + { + $this->tokenPagination = $tokenPagination; + } + + public function getTokenPagination() + { + return $this->tokenPagination; + } +} + +class Google_Service_Coordinate_LocationRecord extends Google_Model +{ + public $collectionTime; + public $confidenceRadius; + public $kind; + public $latitude; + public $longitude; + + public function setCollectionTime($collectionTime) + { + $this->collectionTime = $collectionTime; + } + + public function getCollectionTime() + { + return $this->collectionTime; + } + + public function setConfidenceRadius($confidenceRadius) + { + $this->confidenceRadius = $confidenceRadius; + } + + public function getConfidenceRadius() + { + return $this->confidenceRadius; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLatitude($latitude) + { + $this->latitude = $latitude; + } + + public function getLatitude() + { + return $this->latitude; + } + + public function setLongitude($longitude) + { + $this->longitude = $longitude; + } + + public function getLongitude() + { + return $this->longitude; + } +} + +class Google_Service_Coordinate_Schedule extends Google_Model +{ + public $allDay; + public $duration; + public $endTime; + public $kind; + public $startTime; + + public function setAllDay($allDay) + { + $this->allDay = $allDay; + } + + public function getAllDay() + { + return $this->allDay; + } + + public function setDuration($duration) + { + $this->duration = $duration; + } + + public function getDuration() + { + return $this->duration; + } + + public function setEndTime($endTime) + { + $this->endTime = $endTime; + } + + public function getEndTime() + { + return $this->endTime; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setStartTime($startTime) + { + $this->startTime = $startTime; + } + + public function getStartTime() + { + return $this->startTime; + } +} + +class Google_Service_Coordinate_TokenPagination extends Google_Model +{ + public $kind; + public $nextPageToken; + public $previousPageToken; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPreviousPageToken($previousPageToken) + { + $this->previousPageToken = $previousPageToken; + } + + public function getPreviousPageToken() + { + return $this->previousPageToken; + } +} + +class Google_Service_Coordinate_Worker extends Google_Model +{ + public $id; + public $kind; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Coordinate_WorkerListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_Coordinate_Worker'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} diff --git a/oauth/Google/Service/Customsearch.php b/oauth/Google/Service/Customsearch.php new file mode 100644 index 0000000..b45c946 --- /dev/null +++ b/oauth/Google/Service/Customsearch.php @@ -0,0 +1,1432 @@ + + * Lets you search over a website or collection of websites + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Customsearch extends Google_Service +{ + + + public $cse; + + + /** + * Constructs the internal representation of the Customsearch service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'customsearch/'; + $this->version = 'v1'; + $this->serviceName = 'customsearch'; + + $this->cse = new Google_Service_Customsearch_Cse_Resource( + $this, + $this->serviceName, + 'cse', + array( + 'methods' => array( + 'list' => array( + 'path' => 'v1', + 'httpMethod' => 'GET', + 'parameters' => array( + 'q' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'sort' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'orTerms' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'highRange' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'num' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'cr' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'imgType' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'gl' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'relatedSite' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'searchType' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'fileType' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'start' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'imgDominantColor' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'lr' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'siteSearch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'cref' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'dateRestrict' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'safe' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'c2coff' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'googlehost' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'hq' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'exactTerms' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'hl' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'lowRange' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'imgSize' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'imgColorType' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'rights' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'excludeTerms' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'linkSite' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'cx' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'siteSearchFilter' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "cse" collection of methods. + * Typical usage is: + * + * $customsearchService = new Google_Service_Customsearch(...); + * $cse = $customsearchService->cse; + * + */ +class Google_Service_Customsearch_Cse_Resource extends Google_Service_Resource +{ + + /** + * Returns metadata about the search performed, metadata about the custom search + * engine used for the search, and the search results. (cse.listCse) + * + * @param string $q + * Query + * @param array $optParams Optional parameters. + * + * @opt_param string sort + * The sort expression to apply to the results + * @opt_param string orTerms + * Provides additional search terms to check for in a document, where each document in the search + * results must contain at least one of the additional search terms + * @opt_param string highRange + * Creates a range in form as_nlo value..as_nhi value and attempts to append it to query + * @opt_param string num + * Number of search results to return + * @opt_param string cr + * Country restrict(s). + * @opt_param string imgType + * Returns images of a type, which can be one of: clipart, face, lineart, news, and photo. + * @opt_param string gl + * Geolocation of end user. + * @opt_param string relatedSite + * Specifies that all search results should be pages that are related to the specified URL + * @opt_param string searchType + * Specifies the search type: image. + * @opt_param string fileType + * Returns images of a specified type. Some of the allowed values are: bmp, gif, png, jpg, svg, + * pdf, ... + * @opt_param string start + * The index of the first result to return + * @opt_param string imgDominantColor + * Returns images of a specific dominant color: yellow, green, teal, blue, purple, pink, white, + * gray, black and brown. + * @opt_param string lr + * The language restriction for the search results + * @opt_param string siteSearch + * Specifies all search results should be pages from a given site + * @opt_param string cref + * The URL of a linked custom search engine + * @opt_param string dateRestrict + * Specifies all search results are from a time period + * @opt_param string safe + * Search safety level + * @opt_param string c2coff + * Turns off the translation between zh-CN and zh-TW. + * @opt_param string googlehost + * The local Google domain to use to perform the search. + * @opt_param string hq + * Appends the extra query terms to the query. + * @opt_param string exactTerms + * Identifies a phrase that all documents in the search results must contain + * @opt_param string hl + * Sets the user interface language. + * @opt_param string lowRange + * Creates a range in form as_nlo value..as_nhi value and attempts to append it to query + * @opt_param string imgSize + * Returns images of a specified size, where size can be one of: icon, small, medium, large, + * xlarge, xxlarge, and huge. + * @opt_param string imgColorType + * Returns black and white, grayscale, or color images: mono, gray, and color. + * @opt_param string rights + * Filters based on licensing. Supported values include: cc_publicdomain, cc_attribute, + * cc_sharealike, cc_noncommercial, cc_nonderived and combinations of these. + * @opt_param string excludeTerms + * Identifies a word or phrase that should not appear in any documents in the search results + * @opt_param string filter + * Controls turning on or off the duplicate content filter. + * @opt_param string linkSite + * Specifies that all search results should contain a link to a particular URL + * @opt_param string cx + * The custom search engine ID to scope this search query + * @opt_param string siteSearchFilter + * Controls whether to include or exclude results from the site named in the as_sitesearch + * parameter + * @return Google_Service_Customsearch_Search + */ + public function listCse($q, $optParams = array()) + { + $params = array('q' => $q); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Customsearch_Search"); + } +} + + + + +class Google_Service_Customsearch_Context extends Google_Collection +{ + protected $facetsType = 'Google_Service_Customsearch_ContextFacets'; + protected $facetsDataType = 'array'; + public $title; + + public function setFacets($facets) + { + $this->facets = $facets; + } + + public function getFacets() + { + return $this->facets; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_Customsearch_ContextFacets extends Google_Model +{ + public $anchor; + public $label; + public $labelWithOp; + + public function setAnchor($anchor) + { + $this->anchor = $anchor; + } + + public function getAnchor() + { + return $this->anchor; + } + + public function setLabel($label) + { + $this->label = $label; + } + + public function getLabel() + { + return $this->label; + } + + public function setLabelWithOp($labelWithOp) + { + $this->labelWithOp = $labelWithOp; + } + + public function getLabelWithOp() + { + return $this->labelWithOp; + } +} + +class Google_Service_Customsearch_Promotion extends Google_Collection +{ + protected $bodyLinesType = 'Google_Service_Customsearch_PromotionBodyLines'; + protected $bodyLinesDataType = 'array'; + public $displayLink; + public $htmlTitle; + protected $imageType = 'Google_Service_Customsearch_PromotionImage'; + protected $imageDataType = ''; + public $link; + public $title; + + public function setBodyLines($bodyLines) + { + $this->bodyLines = $bodyLines; + } + + public function getBodyLines() + { + return $this->bodyLines; + } + + public function setDisplayLink($displayLink) + { + $this->displayLink = $displayLink; + } + + public function getDisplayLink() + { + return $this->displayLink; + } + + public function setHtmlTitle($htmlTitle) + { + $this->htmlTitle = $htmlTitle; + } + + public function getHtmlTitle() + { + return $this->htmlTitle; + } + + public function setImage(Google_Service_Customsearch_PromotionImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setLink($link) + { + $this->link = $link; + } + + public function getLink() + { + return $this->link; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_Customsearch_PromotionBodyLines extends Google_Model +{ + public $htmlTitle; + public $link; + public $title; + public $url; + + public function setHtmlTitle($htmlTitle) + { + $this->htmlTitle = $htmlTitle; + } + + public function getHtmlTitle() + { + return $this->htmlTitle; + } + + public function setLink($link) + { + $this->link = $link; + } + + public function getLink() + { + return $this->link; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Customsearch_PromotionImage extends Google_Model +{ + public $height; + public $source; + public $width; + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setSource($source) + { + $this->source = $source; + } + + public function getSource() + { + return $this->source; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_Customsearch_Query extends Google_Model +{ + public $count; + public $cr; + public $cref; + public $cx; + public $dateRestrict; + public $disableCnTwTranslation; + public $exactTerms; + public $excludeTerms; + public $fileType; + public $filter; + public $gl; + public $googleHost; + public $highRange; + public $hl; + public $hq; + public $imgColorType; + public $imgDominantColor; + public $imgSize; + public $imgType; + public $inputEncoding; + public $language; + public $linkSite; + public $lowRange; + public $orTerms; + public $outputEncoding; + public $relatedSite; + public $rights; + public $safe; + public $searchTerms; + public $searchType; + public $siteSearch; + public $siteSearchFilter; + public $sort; + public $startIndex; + public $startPage; + public $title; + public $totalResults; + + public function setCount($count) + { + $this->count = $count; + } + + public function getCount() + { + return $this->count; + } + + public function setCr($cr) + { + $this->cr = $cr; + } + + public function getCr() + { + return $this->cr; + } + + public function setCref($cref) + { + $this->cref = $cref; + } + + public function getCref() + { + return $this->cref; + } + + public function setCx($cx) + { + $this->cx = $cx; + } + + public function getCx() + { + return $this->cx; + } + + public function setDateRestrict($dateRestrict) + { + $this->dateRestrict = $dateRestrict; + } + + public function getDateRestrict() + { + return $this->dateRestrict; + } + + public function setDisableCnTwTranslation($disableCnTwTranslation) + { + $this->disableCnTwTranslation = $disableCnTwTranslation; + } + + public function getDisableCnTwTranslation() + { + return $this->disableCnTwTranslation; + } + + public function setExactTerms($exactTerms) + { + $this->exactTerms = $exactTerms; + } + + public function getExactTerms() + { + return $this->exactTerms; + } + + public function setExcludeTerms($excludeTerms) + { + $this->excludeTerms = $excludeTerms; + } + + public function getExcludeTerms() + { + return $this->excludeTerms; + } + + public function setFileType($fileType) + { + $this->fileType = $fileType; + } + + public function getFileType() + { + return $this->fileType; + } + + public function setFilter($filter) + { + $this->filter = $filter; + } + + public function getFilter() + { + return $this->filter; + } + + public function setGl($gl) + { + $this->gl = $gl; + } + + public function getGl() + { + return $this->gl; + } + + public function setGoogleHost($googleHost) + { + $this->googleHost = $googleHost; + } + + public function getGoogleHost() + { + return $this->googleHost; + } + + public function setHighRange($highRange) + { + $this->highRange = $highRange; + } + + public function getHighRange() + { + return $this->highRange; + } + + public function setHl($hl) + { + $this->hl = $hl; + } + + public function getHl() + { + return $this->hl; + } + + public function setHq($hq) + { + $this->hq = $hq; + } + + public function getHq() + { + return $this->hq; + } + + public function setImgColorType($imgColorType) + { + $this->imgColorType = $imgColorType; + } + + public function getImgColorType() + { + return $this->imgColorType; + } + + public function setImgDominantColor($imgDominantColor) + { + $this->imgDominantColor = $imgDominantColor; + } + + public function getImgDominantColor() + { + return $this->imgDominantColor; + } + + public function setImgSize($imgSize) + { + $this->imgSize = $imgSize; + } + + public function getImgSize() + { + return $this->imgSize; + } + + public function setImgType($imgType) + { + $this->imgType = $imgType; + } + + public function getImgType() + { + return $this->imgType; + } + + public function setInputEncoding($inputEncoding) + { + $this->inputEncoding = $inputEncoding; + } + + public function getInputEncoding() + { + return $this->inputEncoding; + } + + public function setLanguage($language) + { + $this->language = $language; + } + + public function getLanguage() + { + return $this->language; + } + + public function setLinkSite($linkSite) + { + $this->linkSite = $linkSite; + } + + public function getLinkSite() + { + return $this->linkSite; + } + + public function setLowRange($lowRange) + { + $this->lowRange = $lowRange; + } + + public function getLowRange() + { + return $this->lowRange; + } + + public function setOrTerms($orTerms) + { + $this->orTerms = $orTerms; + } + + public function getOrTerms() + { + return $this->orTerms; + } + + public function setOutputEncoding($outputEncoding) + { + $this->outputEncoding = $outputEncoding; + } + + public function getOutputEncoding() + { + return $this->outputEncoding; + } + + public function setRelatedSite($relatedSite) + { + $this->relatedSite = $relatedSite; + } + + public function getRelatedSite() + { + return $this->relatedSite; + } + + public function setRights($rights) + { + $this->rights = $rights; + } + + public function getRights() + { + return $this->rights; + } + + public function setSafe($safe) + { + $this->safe = $safe; + } + + public function getSafe() + { + return $this->safe; + } + + public function setSearchTerms($searchTerms) + { + $this->searchTerms = $searchTerms; + } + + public function getSearchTerms() + { + return $this->searchTerms; + } + + public function setSearchType($searchType) + { + $this->searchType = $searchType; + } + + public function getSearchType() + { + return $this->searchType; + } + + public function setSiteSearch($siteSearch) + { + $this->siteSearch = $siteSearch; + } + + public function getSiteSearch() + { + return $this->siteSearch; + } + + public function setSiteSearchFilter($siteSearchFilter) + { + $this->siteSearchFilter = $siteSearchFilter; + } + + public function getSiteSearchFilter() + { + return $this->siteSearchFilter; + } + + public function setSort($sort) + { + $this->sort = $sort; + } + + public function getSort() + { + return $this->sort; + } + + public function setStartIndex($startIndex) + { + $this->startIndex = $startIndex; + } + + public function getStartIndex() + { + return $this->startIndex; + } + + public function setStartPage($startPage) + { + $this->startPage = $startPage; + } + + public function getStartPage() + { + return $this->startPage; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } +} + +class Google_Service_Customsearch_Result extends Google_Collection +{ + public $cacheId; + public $displayLink; + public $fileFormat; + public $formattedUrl; + public $htmlFormattedUrl; + public $htmlSnippet; + public $htmlTitle; + protected $imageType = 'Google_Service_Customsearch_ResultImage'; + protected $imageDataType = ''; + public $kind; + protected $labelsType = 'Google_Service_Customsearch_ResultLabels'; + protected $labelsDataType = 'array'; + public $link; + public $mime; + public $pagemap; + public $snippet; + public $title; + + public function setCacheId($cacheId) + { + $this->cacheId = $cacheId; + } + + public function getCacheId() + { + return $this->cacheId; + } + + public function setDisplayLink($displayLink) + { + $this->displayLink = $displayLink; + } + + public function getDisplayLink() + { + return $this->displayLink; + } + + public function setFileFormat($fileFormat) + { + $this->fileFormat = $fileFormat; + } + + public function getFileFormat() + { + return $this->fileFormat; + } + + public function setFormattedUrl($formattedUrl) + { + $this->formattedUrl = $formattedUrl; + } + + public function getFormattedUrl() + { + return $this->formattedUrl; + } + + public function setHtmlFormattedUrl($htmlFormattedUrl) + { + $this->htmlFormattedUrl = $htmlFormattedUrl; + } + + public function getHtmlFormattedUrl() + { + return $this->htmlFormattedUrl; + } + + public function setHtmlSnippet($htmlSnippet) + { + $this->htmlSnippet = $htmlSnippet; + } + + public function getHtmlSnippet() + { + return $this->htmlSnippet; + } + + public function setHtmlTitle($htmlTitle) + { + $this->htmlTitle = $htmlTitle; + } + + public function getHtmlTitle() + { + return $this->htmlTitle; + } + + public function setImage(Google_Service_Customsearch_ResultImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLabels($labels) + { + $this->labels = $labels; + } + + public function getLabels() + { + return $this->labels; + } + + public function setLink($link) + { + $this->link = $link; + } + + public function getLink() + { + return $this->link; + } + + public function setMime($mime) + { + $this->mime = $mime; + } + + public function getMime() + { + return $this->mime; + } + + public function setPagemap($pagemap) + { + $this->pagemap = $pagemap; + } + + public function getPagemap() + { + return $this->pagemap; + } + + public function setSnippet($snippet) + { + $this->snippet = $snippet; + } + + public function getSnippet() + { + return $this->snippet; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_Customsearch_ResultImage extends Google_Model +{ + public $byteSize; + public $contextLink; + public $height; + public $thumbnailHeight; + public $thumbnailLink; + public $thumbnailWidth; + public $width; + + public function setByteSize($byteSize) + { + $this->byteSize = $byteSize; + } + + public function getByteSize() + { + return $this->byteSize; + } + + public function setContextLink($contextLink) + { + $this->contextLink = $contextLink; + } + + public function getContextLink() + { + return $this->contextLink; + } + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setThumbnailHeight($thumbnailHeight) + { + $this->thumbnailHeight = $thumbnailHeight; + } + + public function getThumbnailHeight() + { + return $this->thumbnailHeight; + } + + public function setThumbnailLink($thumbnailLink) + { + $this->thumbnailLink = $thumbnailLink; + } + + public function getThumbnailLink() + { + return $this->thumbnailLink; + } + + public function setThumbnailWidth($thumbnailWidth) + { + $this->thumbnailWidth = $thumbnailWidth; + } + + public function getThumbnailWidth() + { + return $this->thumbnailWidth; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_Customsearch_ResultLabels extends Google_Model +{ + public $displayName; + public $labelWithOp; + public $name; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setLabelWithOp($labelWithOp) + { + $this->labelWithOp = $labelWithOp; + } + + public function getLabelWithOp() + { + return $this->labelWithOp; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_Customsearch_ResultPagemap extends Google_Model +{ + +} + +class Google_Service_Customsearch_ResultPagemapItemElement extends Google_Model +{ + +} + +class Google_Service_Customsearch_Search extends Google_Collection +{ + protected $contextType = 'Google_Service_Customsearch_Context'; + protected $contextDataType = ''; + protected $itemsType = 'Google_Service_Customsearch_Result'; + protected $itemsDataType = 'array'; + public $kind; + protected $promotionsType = 'Google_Service_Customsearch_Promotion'; + protected $promotionsDataType = 'array'; + protected $queriesType = 'Google_Service_Customsearch_Query'; + protected $queriesDataType = 'map'; + protected $searchInformationType = 'Google_Service_Customsearch_SearchSearchInformation'; + protected $searchInformationDataType = ''; + protected $spellingType = 'Google_Service_Customsearch_SearchSpelling'; + protected $spellingDataType = ''; + protected $urlType = 'Google_Service_Customsearch_SearchUrl'; + protected $urlDataType = ''; + + public function setContext(Google_Service_Customsearch_Context $context) + { + $this->context = $context; + } + + public function getContext() + { + return $this->context; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPromotions($promotions) + { + $this->promotions = $promotions; + } + + public function getPromotions() + { + return $this->promotions; + } + + public function setQueries($queries) + { + $this->queries = $queries; + } + + public function getQueries() + { + return $this->queries; + } + + public function setSearchInformation(Google_Service_Customsearch_SearchSearchInformation $searchInformation) + { + $this->searchInformation = $searchInformation; + } + + public function getSearchInformation() + { + return $this->searchInformation; + } + + public function setSpelling(Google_Service_Customsearch_SearchSpelling $spelling) + { + $this->spelling = $spelling; + } + + public function getSpelling() + { + return $this->spelling; + } + + public function setUrl(Google_Service_Customsearch_SearchUrl $url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Customsearch_SearchQueries extends Google_Model +{ + +} + +class Google_Service_Customsearch_SearchSearchInformation extends Google_Model +{ + public $formattedSearchTime; + public $formattedTotalResults; + public $searchTime; + public $totalResults; + + public function setFormattedSearchTime($formattedSearchTime) + { + $this->formattedSearchTime = $formattedSearchTime; + } + + public function getFormattedSearchTime() + { + return $this->formattedSearchTime; + } + + public function setFormattedTotalResults($formattedTotalResults) + { + $this->formattedTotalResults = $formattedTotalResults; + } + + public function getFormattedTotalResults() + { + return $this->formattedTotalResults; + } + + public function setSearchTime($searchTime) + { + $this->searchTime = $searchTime; + } + + public function getSearchTime() + { + return $this->searchTime; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } +} + +class Google_Service_Customsearch_SearchSpelling extends Google_Model +{ + public $correctedQuery; + public $htmlCorrectedQuery; + + public function setCorrectedQuery($correctedQuery) + { + $this->correctedQuery = $correctedQuery; + } + + public function getCorrectedQuery() + { + return $this->correctedQuery; + } + + public function setHtmlCorrectedQuery($htmlCorrectedQuery) + { + $this->htmlCorrectedQuery = $htmlCorrectedQuery; + } + + public function getHtmlCorrectedQuery() + { + return $this->htmlCorrectedQuery; + } +} + +class Google_Service_Customsearch_SearchUrl extends Google_Model +{ + public $template; + public $type; + + public function setTemplate($template) + { + $this->template = $template; + } + + public function getTemplate() + { + return $this->template; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} diff --git a/oauth/Google/Service/Datastore.php b/oauth/Google/Service/Datastore.php new file mode 100644 index 0000000..8ec92e2 --- /dev/null +++ b/oauth/Google/Service/Datastore.php @@ -0,0 +1,1583 @@ + + * API for accessing Google Cloud Datastore. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Datastore extends Google_Service +{ + /** View and manage your Google Cloud Datastore data. */ + const DATASTORE = "https://www.googleapis.com/auth/datastore"; + /** View your email address. */ + const USERINFO_EMAIL = "https://www.googleapis.com/auth/userinfo.email"; + + public $datasets; + + + /** + * Constructs the internal representation of the Datastore service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'datastore/v1beta2/datasets/'; + $this->version = 'v1beta2'; + $this->serviceName = 'datastore'; + + $this->datasets = new Google_Service_Datastore_Datasets_Resource( + $this, + $this->serviceName, + 'datasets', + array( + 'methods' => array( + 'allocateIds' => array( + 'path' => '{datasetId}/allocateIds', + 'httpMethod' => 'POST', + 'parameters' => array( + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'beginTransaction' => array( + 'path' => '{datasetId}/beginTransaction', + 'httpMethod' => 'POST', + 'parameters' => array( + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'commit' => array( + 'path' => '{datasetId}/commit', + 'httpMethod' => 'POST', + 'parameters' => array( + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'lookup' => array( + 'path' => '{datasetId}/lookup', + 'httpMethod' => 'POST', + 'parameters' => array( + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'rollback' => array( + 'path' => '{datasetId}/rollback', + 'httpMethod' => 'POST', + 'parameters' => array( + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'runQuery' => array( + 'path' => '{datasetId}/runQuery', + 'httpMethod' => 'POST', + 'parameters' => array( + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "datasets" collection of methods. + * Typical usage is: + * + * $datastoreService = new Google_Service_Datastore(...); + * $datasets = $datastoreService->datasets; + * + */ +class Google_Service_Datastore_Datasets_Resource extends Google_Service_Resource +{ + + /** + * Allocate IDs for incomplete keys (useful for referencing an entity before it + * is inserted). (datasets.allocateIds) + * + * @param string $datasetId + * Identifies the dataset. + * @param Google_AllocateIdsRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Datastore_AllocateIdsResponse + */ + public function allocateIds($datasetId, Google_Service_Datastore_AllocateIdsRequest $postBody, $optParams = array()) + { + $params = array('datasetId' => $datasetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('allocateIds', array($params), "Google_Service_Datastore_AllocateIdsResponse"); + } + /** + * Begin a new transaction. (datasets.beginTransaction) + * + * @param string $datasetId + * Identifies the dataset. + * @param Google_BeginTransactionRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Datastore_BeginTransactionResponse + */ + public function beginTransaction($datasetId, Google_Service_Datastore_BeginTransactionRequest $postBody, $optParams = array()) + { + $params = array('datasetId' => $datasetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('beginTransaction', array($params), "Google_Service_Datastore_BeginTransactionResponse"); + } + /** + * Commit a transaction, optionally creating, deleting or modifying some + * entities. (datasets.commit) + * + * @param string $datasetId + * Identifies the dataset. + * @param Google_CommitRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Datastore_CommitResponse + */ + public function commit($datasetId, Google_Service_Datastore_CommitRequest $postBody, $optParams = array()) + { + $params = array('datasetId' => $datasetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('commit', array($params), "Google_Service_Datastore_CommitResponse"); + } + /** + * Look up some entities by key. (datasets.lookup) + * + * @param string $datasetId + * Identifies the dataset. + * @param Google_LookupRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Datastore_LookupResponse + */ + public function lookup($datasetId, Google_Service_Datastore_LookupRequest $postBody, $optParams = array()) + { + $params = array('datasetId' => $datasetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('lookup', array($params), "Google_Service_Datastore_LookupResponse"); + } + /** + * Roll back a transaction. (datasets.rollback) + * + * @param string $datasetId + * Identifies the dataset. + * @param Google_RollbackRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Datastore_RollbackResponse + */ + public function rollback($datasetId, Google_Service_Datastore_RollbackRequest $postBody, $optParams = array()) + { + $params = array('datasetId' => $datasetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('rollback', array($params), "Google_Service_Datastore_RollbackResponse"); + } + /** + * Query for entities. (datasets.runQuery) + * + * @param string $datasetId + * Identifies the dataset. + * @param Google_RunQueryRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Datastore_RunQueryResponse + */ + public function runQuery($datasetId, Google_Service_Datastore_RunQueryRequest $postBody, $optParams = array()) + { + $params = array('datasetId' => $datasetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('runQuery', array($params), "Google_Service_Datastore_RunQueryResponse"); + } +} + + + + +class Google_Service_Datastore_AllocateIdsRequest extends Google_Collection +{ + protected $keysType = 'Google_Service_Datastore_Key'; + protected $keysDataType = 'array'; + + public function setKeys($keys) + { + $this->keys = $keys; + } + + public function getKeys() + { + return $this->keys; + } +} + +class Google_Service_Datastore_AllocateIdsResponse extends Google_Collection +{ + protected $headerType = 'Google_Service_Datastore_ResponseHeader'; + protected $headerDataType = ''; + protected $keysType = 'Google_Service_Datastore_Key'; + protected $keysDataType = 'array'; + + public function setHeader(Google_Service_Datastore_ResponseHeader $header) + { + $this->header = $header; + } + + public function getHeader() + { + return $this->header; + } + + public function setKeys($keys) + { + $this->keys = $keys; + } + + public function getKeys() + { + return $this->keys; + } +} + +class Google_Service_Datastore_BeginTransactionRequest extends Google_Model +{ + public $isolationLevel; + + public function setIsolationLevel($isolationLevel) + { + $this->isolationLevel = $isolationLevel; + } + + public function getIsolationLevel() + { + return $this->isolationLevel; + } +} + +class Google_Service_Datastore_BeginTransactionResponse extends Google_Model +{ + protected $headerType = 'Google_Service_Datastore_ResponseHeader'; + protected $headerDataType = ''; + public $transaction; + + public function setHeader(Google_Service_Datastore_ResponseHeader $header) + { + $this->header = $header; + } + + public function getHeader() + { + return $this->header; + } + + public function setTransaction($transaction) + { + $this->transaction = $transaction; + } + + public function getTransaction() + { + return $this->transaction; + } +} + +class Google_Service_Datastore_CommitRequest extends Google_Model +{ + public $ignoreReadOnly; + public $mode; + protected $mutationType = 'Google_Service_Datastore_Mutation'; + protected $mutationDataType = ''; + public $transaction; + + public function setIgnoreReadOnly($ignoreReadOnly) + { + $this->ignoreReadOnly = $ignoreReadOnly; + } + + public function getIgnoreReadOnly() + { + return $this->ignoreReadOnly; + } + + public function setMode($mode) + { + $this->mode = $mode; + } + + public function getMode() + { + return $this->mode; + } + + public function setMutation(Google_Service_Datastore_Mutation $mutation) + { + $this->mutation = $mutation; + } + + public function getMutation() + { + return $this->mutation; + } + + public function setTransaction($transaction) + { + $this->transaction = $transaction; + } + + public function getTransaction() + { + return $this->transaction; + } +} + +class Google_Service_Datastore_CommitResponse extends Google_Model +{ + protected $headerType = 'Google_Service_Datastore_ResponseHeader'; + protected $headerDataType = ''; + protected $mutationResultType = 'Google_Service_Datastore_MutationResult'; + protected $mutationResultDataType = ''; + + public function setHeader(Google_Service_Datastore_ResponseHeader $header) + { + $this->header = $header; + } + + public function getHeader() + { + return $this->header; + } + + public function setMutationResult(Google_Service_Datastore_MutationResult $mutationResult) + { + $this->mutationResult = $mutationResult; + } + + public function getMutationResult() + { + return $this->mutationResult; + } +} + +class Google_Service_Datastore_CompositeFilter extends Google_Collection +{ + protected $filtersType = 'Google_Service_Datastore_Filter'; + protected $filtersDataType = 'array'; + public $operator; + + public function setFilters($filters) + { + $this->filters = $filters; + } + + public function getFilters() + { + return $this->filters; + } + + public function setOperator($operator) + { + $this->operator = $operator; + } + + public function getOperator() + { + return $this->operator; + } +} + +class Google_Service_Datastore_Entity extends Google_Model +{ + protected $keyType = 'Google_Service_Datastore_Key'; + protected $keyDataType = ''; + protected $propertiesType = 'Google_Service_Datastore_Property'; + protected $propertiesDataType = 'map'; + + public function setKey(Google_Service_Datastore_Key $key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setProperties($properties) + { + $this->properties = $properties; + } + + public function getProperties() + { + return $this->properties; + } +} + +class Google_Service_Datastore_EntityProperties extends Google_Model +{ + +} + +class Google_Service_Datastore_EntityResult extends Google_Model +{ + protected $entityType = 'Google_Service_Datastore_Entity'; + protected $entityDataType = ''; + + public function setEntity(Google_Service_Datastore_Entity $entity) + { + $this->entity = $entity; + } + + public function getEntity() + { + return $this->entity; + } +} + +class Google_Service_Datastore_Filter extends Google_Model +{ + protected $compositeFilterType = 'Google_Service_Datastore_CompositeFilter'; + protected $compositeFilterDataType = ''; + protected $propertyFilterType = 'Google_Service_Datastore_PropertyFilter'; + protected $propertyFilterDataType = ''; + + public function setCompositeFilter(Google_Service_Datastore_CompositeFilter $compositeFilter) + { + $this->compositeFilter = $compositeFilter; + } + + public function getCompositeFilter() + { + return $this->compositeFilter; + } + + public function setPropertyFilter(Google_Service_Datastore_PropertyFilter $propertyFilter) + { + $this->propertyFilter = $propertyFilter; + } + + public function getPropertyFilter() + { + return $this->propertyFilter; + } +} + +class Google_Service_Datastore_GqlQuery extends Google_Collection +{ + public $allowLiteral; + protected $nameArgsType = 'Google_Service_Datastore_GqlQueryArg'; + protected $nameArgsDataType = 'array'; + protected $numberArgsType = 'Google_Service_Datastore_GqlQueryArg'; + protected $numberArgsDataType = 'array'; + public $queryString; + + public function setAllowLiteral($allowLiteral) + { + $this->allowLiteral = $allowLiteral; + } + + public function getAllowLiteral() + { + return $this->allowLiteral; + } + + public function setNameArgs($nameArgs) + { + $this->nameArgs = $nameArgs; + } + + public function getNameArgs() + { + return $this->nameArgs; + } + + public function setNumberArgs($numberArgs) + { + $this->numberArgs = $numberArgs; + } + + public function getNumberArgs() + { + return $this->numberArgs; + } + + public function setQueryString($queryString) + { + $this->queryString = $queryString; + } + + public function getQueryString() + { + return $this->queryString; + } +} + +class Google_Service_Datastore_GqlQueryArg extends Google_Model +{ + public $cursor; + public $name; + protected $valueType = 'Google_Service_Datastore_Value'; + protected $valueDataType = ''; + + public function setCursor($cursor) + { + $this->cursor = $cursor; + } + + public function getCursor() + { + return $this->cursor; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setValue(Google_Service_Datastore_Value $value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Datastore_Key extends Google_Collection +{ + protected $partitionIdType = 'Google_Service_Datastore_PartitionId'; + protected $partitionIdDataType = ''; + protected $pathType = 'Google_Service_Datastore_KeyPathElement'; + protected $pathDataType = 'array'; + + public function setPartitionId(Google_Service_Datastore_PartitionId $partitionId) + { + $this->partitionId = $partitionId; + } + + public function getPartitionId() + { + return $this->partitionId; + } + + public function setPath($path) + { + $this->path = $path; + } + + public function getPath() + { + return $this->path; + } +} + +class Google_Service_Datastore_KeyPathElement extends Google_Model +{ + public $id; + public $kind; + public $name; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_Datastore_KindExpression extends Google_Model +{ + public $name; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_Datastore_LookupRequest extends Google_Collection +{ + protected $keysType = 'Google_Service_Datastore_Key'; + protected $keysDataType = 'array'; + protected $readOptionsType = 'Google_Service_Datastore_ReadOptions'; + protected $readOptionsDataType = ''; + + public function setKeys($keys) + { + $this->keys = $keys; + } + + public function getKeys() + { + return $this->keys; + } + + public function setReadOptions(Google_Service_Datastore_ReadOptions $readOptions) + { + $this->readOptions = $readOptions; + } + + public function getReadOptions() + { + return $this->readOptions; + } +} + +class Google_Service_Datastore_LookupResponse extends Google_Collection +{ + protected $deferredType = 'Google_Service_Datastore_Key'; + protected $deferredDataType = 'array'; + protected $foundType = 'Google_Service_Datastore_EntityResult'; + protected $foundDataType = 'array'; + protected $headerType = 'Google_Service_Datastore_ResponseHeader'; + protected $headerDataType = ''; + protected $missingType = 'Google_Service_Datastore_EntityResult'; + protected $missingDataType = 'array'; + + public function setDeferred($deferred) + { + $this->deferred = $deferred; + } + + public function getDeferred() + { + return $this->deferred; + } + + public function setFound($found) + { + $this->found = $found; + } + + public function getFound() + { + return $this->found; + } + + public function setHeader(Google_Service_Datastore_ResponseHeader $header) + { + $this->header = $header; + } + + public function getHeader() + { + return $this->header; + } + + public function setMissing($missing) + { + $this->missing = $missing; + } + + public function getMissing() + { + return $this->missing; + } +} + +class Google_Service_Datastore_Mutation extends Google_Collection +{ + protected $deleteType = 'Google_Service_Datastore_Key'; + protected $deleteDataType = 'array'; + public $force; + protected $insertType = 'Google_Service_Datastore_Entity'; + protected $insertDataType = 'array'; + protected $insertAutoIdType = 'Google_Service_Datastore_Entity'; + protected $insertAutoIdDataType = 'array'; + protected $updateType = 'Google_Service_Datastore_Entity'; + protected $updateDataType = 'array'; + protected $upsertType = 'Google_Service_Datastore_Entity'; + protected $upsertDataType = 'array'; + + public function setDelete($delete) + { + $this->delete = $delete; + } + + public function getDelete() + { + return $this->delete; + } + + public function setForce($force) + { + $this->force = $force; + } + + public function getForce() + { + return $this->force; + } + + public function setInsert($insert) + { + $this->insert = $insert; + } + + public function getInsert() + { + return $this->insert; + } + + public function setInsertAutoId($insertAutoId) + { + $this->insertAutoId = $insertAutoId; + } + + public function getInsertAutoId() + { + return $this->insertAutoId; + } + + public function setUpdate($update) + { + $this->update = $update; + } + + public function getUpdate() + { + return $this->update; + } + + public function setUpsert($upsert) + { + $this->upsert = $upsert; + } + + public function getUpsert() + { + return $this->upsert; + } +} + +class Google_Service_Datastore_MutationResult extends Google_Collection +{ + public $indexUpdates; + protected $insertAutoIdKeysType = 'Google_Service_Datastore_Key'; + protected $insertAutoIdKeysDataType = 'array'; + + public function setIndexUpdates($indexUpdates) + { + $this->indexUpdates = $indexUpdates; + } + + public function getIndexUpdates() + { + return $this->indexUpdates; + } + + public function setInsertAutoIdKeys($insertAutoIdKeys) + { + $this->insertAutoIdKeys = $insertAutoIdKeys; + } + + public function getInsertAutoIdKeys() + { + return $this->insertAutoIdKeys; + } +} + +class Google_Service_Datastore_PartitionId extends Google_Model +{ + public $datasetId; + public $namespace; + + public function setDatasetId($datasetId) + { + $this->datasetId = $datasetId; + } + + public function getDatasetId() + { + return $this->datasetId; + } + + public function setNamespace($namespace) + { + $this->namespace = $namespace; + } + + public function getNamespace() + { + return $this->namespace; + } +} + +class Google_Service_Datastore_Property extends Google_Collection +{ + public $blobKeyValue; + public $blobValue; + public $booleanValue; + public $dateTimeValue; + public $doubleValue; + protected $entityValueType = 'Google_Service_Datastore_Entity'; + protected $entityValueDataType = ''; + public $indexed; + public $integerValue; + protected $keyValueType = 'Google_Service_Datastore_Key'; + protected $keyValueDataType = ''; + protected $listValueType = 'Google_Service_Datastore_Value'; + protected $listValueDataType = 'array'; + public $meaning; + public $stringValue; + + public function setBlobKeyValue($blobKeyValue) + { + $this->blobKeyValue = $blobKeyValue; + } + + public function getBlobKeyValue() + { + return $this->blobKeyValue; + } + + public function setBlobValue($blobValue) + { + $this->blobValue = $blobValue; + } + + public function getBlobValue() + { + return $this->blobValue; + } + + public function setBooleanValue($booleanValue) + { + $this->booleanValue = $booleanValue; + } + + public function getBooleanValue() + { + return $this->booleanValue; + } + + public function setDateTimeValue($dateTimeValue) + { + $this->dateTimeValue = $dateTimeValue; + } + + public function getDateTimeValue() + { + return $this->dateTimeValue; + } + + public function setDoubleValue($doubleValue) + { + $this->doubleValue = $doubleValue; + } + + public function getDoubleValue() + { + return $this->doubleValue; + } + + public function setEntityValue(Google_Service_Datastore_Entity $entityValue) + { + $this->entityValue = $entityValue; + } + + public function getEntityValue() + { + return $this->entityValue; + } + + public function setIndexed($indexed) + { + $this->indexed = $indexed; + } + + public function getIndexed() + { + return $this->indexed; + } + + public function setIntegerValue($integerValue) + { + $this->integerValue = $integerValue; + } + + public function getIntegerValue() + { + return $this->integerValue; + } + + public function setKeyValue(Google_Service_Datastore_Key $keyValue) + { + $this->keyValue = $keyValue; + } + + public function getKeyValue() + { + return $this->keyValue; + } + + public function setListValue($listValue) + { + $this->listValue = $listValue; + } + + public function getListValue() + { + return $this->listValue; + } + + public function setMeaning($meaning) + { + $this->meaning = $meaning; + } + + public function getMeaning() + { + return $this->meaning; + } + + public function setStringValue($stringValue) + { + $this->stringValue = $stringValue; + } + + public function getStringValue() + { + return $this->stringValue; + } +} + +class Google_Service_Datastore_PropertyExpression extends Google_Model +{ + public $aggregationFunction; + protected $propertyType = 'Google_Service_Datastore_PropertyReference'; + protected $propertyDataType = ''; + + public function setAggregationFunction($aggregationFunction) + { + $this->aggregationFunction = $aggregationFunction; + } + + public function getAggregationFunction() + { + return $this->aggregationFunction; + } + + public function setProperty(Google_Service_Datastore_PropertyReference $property) + { + $this->property = $property; + } + + public function getProperty() + { + return $this->property; + } +} + +class Google_Service_Datastore_PropertyFilter extends Google_Model +{ + public $operator; + protected $propertyType = 'Google_Service_Datastore_PropertyReference'; + protected $propertyDataType = ''; + protected $valueType = 'Google_Service_Datastore_Value'; + protected $valueDataType = ''; + + public function setOperator($operator) + { + $this->operator = $operator; + } + + public function getOperator() + { + return $this->operator; + } + + public function setProperty(Google_Service_Datastore_PropertyReference $property) + { + $this->property = $property; + } + + public function getProperty() + { + return $this->property; + } + + public function setValue(Google_Service_Datastore_Value $value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Datastore_PropertyOrder extends Google_Model +{ + public $direction; + protected $propertyType = 'Google_Service_Datastore_PropertyReference'; + protected $propertyDataType = ''; + + public function setDirection($direction) + { + $this->direction = $direction; + } + + public function getDirection() + { + return $this->direction; + } + + public function setProperty(Google_Service_Datastore_PropertyReference $property) + { + $this->property = $property; + } + + public function getProperty() + { + return $this->property; + } +} + +class Google_Service_Datastore_PropertyReference extends Google_Model +{ + public $name; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_Datastore_Query extends Google_Collection +{ + public $endCursor; + protected $filterType = 'Google_Service_Datastore_Filter'; + protected $filterDataType = ''; + protected $groupByType = 'Google_Service_Datastore_PropertyReference'; + protected $groupByDataType = 'array'; + protected $kindsType = 'Google_Service_Datastore_KindExpression'; + protected $kindsDataType = 'array'; + public $limit; + public $offset; + protected $orderType = 'Google_Service_Datastore_PropertyOrder'; + protected $orderDataType = 'array'; + protected $projectionType = 'Google_Service_Datastore_PropertyExpression'; + protected $projectionDataType = 'array'; + public $startCursor; + + public function setEndCursor($endCursor) + { + $this->endCursor = $endCursor; + } + + public function getEndCursor() + { + return $this->endCursor; + } + + public function setFilter(Google_Service_Datastore_Filter $filter) + { + $this->filter = $filter; + } + + public function getFilter() + { + return $this->filter; + } + + public function setGroupBy($groupBy) + { + $this->groupBy = $groupBy; + } + + public function getGroupBy() + { + return $this->groupBy; + } + + public function setKinds($kinds) + { + $this->kinds = $kinds; + } + + public function getKinds() + { + return $this->kinds; + } + + public function setLimit($limit) + { + $this->limit = $limit; + } + + public function getLimit() + { + return $this->limit; + } + + public function setOffset($offset) + { + $this->offset = $offset; + } + + public function getOffset() + { + return $this->offset; + } + + public function setOrder($order) + { + $this->order = $order; + } + + public function getOrder() + { + return $this->order; + } + + public function setProjection($projection) + { + $this->projection = $projection; + } + + public function getProjection() + { + return $this->projection; + } + + public function setStartCursor($startCursor) + { + $this->startCursor = $startCursor; + } + + public function getStartCursor() + { + return $this->startCursor; + } +} + +class Google_Service_Datastore_QueryResultBatch extends Google_Collection +{ + public $endCursor; + public $entityResultType; + protected $entityResultsType = 'Google_Service_Datastore_EntityResult'; + protected $entityResultsDataType = 'array'; + public $moreResults; + public $skippedResults; + + public function setEndCursor($endCursor) + { + $this->endCursor = $endCursor; + } + + public function getEndCursor() + { + return $this->endCursor; + } + + public function setEntityResultType($entityResultType) + { + $this->entityResultType = $entityResultType; + } + + public function getEntityResultType() + { + return $this->entityResultType; + } + + public function setEntityResults($entityResults) + { + $this->entityResults = $entityResults; + } + + public function getEntityResults() + { + return $this->entityResults; + } + + public function setMoreResults($moreResults) + { + $this->moreResults = $moreResults; + } + + public function getMoreResults() + { + return $this->moreResults; + } + + public function setSkippedResults($skippedResults) + { + $this->skippedResults = $skippedResults; + } + + public function getSkippedResults() + { + return $this->skippedResults; + } +} + +class Google_Service_Datastore_ReadOptions extends Google_Model +{ + public $readConsistency; + public $transaction; + + public function setReadConsistency($readConsistency) + { + $this->readConsistency = $readConsistency; + } + + public function getReadConsistency() + { + return $this->readConsistency; + } + + public function setTransaction($transaction) + { + $this->transaction = $transaction; + } + + public function getTransaction() + { + return $this->transaction; + } +} + +class Google_Service_Datastore_ResponseHeader extends Google_Model +{ + public $kind; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Datastore_RollbackRequest extends Google_Model +{ + public $transaction; + + public function setTransaction($transaction) + { + $this->transaction = $transaction; + } + + public function getTransaction() + { + return $this->transaction; + } +} + +class Google_Service_Datastore_RollbackResponse extends Google_Model +{ + protected $headerType = 'Google_Service_Datastore_ResponseHeader'; + protected $headerDataType = ''; + + public function setHeader(Google_Service_Datastore_ResponseHeader $header) + { + $this->header = $header; + } + + public function getHeader() + { + return $this->header; + } +} + +class Google_Service_Datastore_RunQueryRequest extends Google_Model +{ + protected $gqlQueryType = 'Google_Service_Datastore_GqlQuery'; + protected $gqlQueryDataType = ''; + protected $partitionIdType = 'Google_Service_Datastore_PartitionId'; + protected $partitionIdDataType = ''; + protected $queryType = 'Google_Service_Datastore_Query'; + protected $queryDataType = ''; + protected $readOptionsType = 'Google_Service_Datastore_ReadOptions'; + protected $readOptionsDataType = ''; + + public function setGqlQuery(Google_Service_Datastore_GqlQuery $gqlQuery) + { + $this->gqlQuery = $gqlQuery; + } + + public function getGqlQuery() + { + return $this->gqlQuery; + } + + public function setPartitionId(Google_Service_Datastore_PartitionId $partitionId) + { + $this->partitionId = $partitionId; + } + + public function getPartitionId() + { + return $this->partitionId; + } + + public function setQuery(Google_Service_Datastore_Query $query) + { + $this->query = $query; + } + + public function getQuery() + { + return $this->query; + } + + public function setReadOptions(Google_Service_Datastore_ReadOptions $readOptions) + { + $this->readOptions = $readOptions; + } + + public function getReadOptions() + { + return $this->readOptions; + } +} + +class Google_Service_Datastore_RunQueryResponse extends Google_Model +{ + protected $batchType = 'Google_Service_Datastore_QueryResultBatch'; + protected $batchDataType = ''; + protected $headerType = 'Google_Service_Datastore_ResponseHeader'; + protected $headerDataType = ''; + + public function setBatch(Google_Service_Datastore_QueryResultBatch $batch) + { + $this->batch = $batch; + } + + public function getBatch() + { + return $this->batch; + } + + public function setHeader(Google_Service_Datastore_ResponseHeader $header) + { + $this->header = $header; + } + + public function getHeader() + { + return $this->header; + } +} + +class Google_Service_Datastore_Value extends Google_Collection +{ + public $blobKeyValue; + public $blobValue; + public $booleanValue; + public $dateTimeValue; + public $doubleValue; + protected $entityValueType = 'Google_Service_Datastore_Entity'; + protected $entityValueDataType = ''; + public $indexed; + public $integerValue; + protected $keyValueType = 'Google_Service_Datastore_Key'; + protected $keyValueDataType = ''; + protected $listValueType = 'Google_Service_Datastore_Value'; + protected $listValueDataType = 'array'; + public $meaning; + public $stringValue; + + public function setBlobKeyValue($blobKeyValue) + { + $this->blobKeyValue = $blobKeyValue; + } + + public function getBlobKeyValue() + { + return $this->blobKeyValue; + } + + public function setBlobValue($blobValue) + { + $this->blobValue = $blobValue; + } + + public function getBlobValue() + { + return $this->blobValue; + } + + public function setBooleanValue($booleanValue) + { + $this->booleanValue = $booleanValue; + } + + public function getBooleanValue() + { + return $this->booleanValue; + } + + public function setDateTimeValue($dateTimeValue) + { + $this->dateTimeValue = $dateTimeValue; + } + + public function getDateTimeValue() + { + return $this->dateTimeValue; + } + + public function setDoubleValue($doubleValue) + { + $this->doubleValue = $doubleValue; + } + + public function getDoubleValue() + { + return $this->doubleValue; + } + + public function setEntityValue(Google_Service_Datastore_Entity $entityValue) + { + $this->entityValue = $entityValue; + } + + public function getEntityValue() + { + return $this->entityValue; + } + + public function setIndexed($indexed) + { + $this->indexed = $indexed; + } + + public function getIndexed() + { + return $this->indexed; + } + + public function setIntegerValue($integerValue) + { + $this->integerValue = $integerValue; + } + + public function getIntegerValue() + { + return $this->integerValue; + } + + public function setKeyValue(Google_Service_Datastore_Key $keyValue) + { + $this->keyValue = $keyValue; + } + + public function getKeyValue() + { + return $this->keyValue; + } + + public function setListValue($listValue) + { + $this->listValue = $listValue; + } + + public function getListValue() + { + return $this->listValue; + } + + public function setMeaning($meaning) + { + $this->meaning = $meaning; + } + + public function getMeaning() + { + return $this->meaning; + } + + public function setStringValue($stringValue) + { + $this->stringValue = $stringValue; + } + + public function getStringValue() + { + return $this->stringValue; + } +} diff --git a/oauth/Google/Service/Dfareporting.php b/oauth/Google/Service/Dfareporting.php new file mode 100644 index 0000000..c1ea116 --- /dev/null +++ b/oauth/Google/Service/Dfareporting.php @@ -0,0 +1,2928 @@ + + * Lets you create, run and download reports. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Dfareporting extends Google_Service +{ + /** View and manage DoubleClick for Advertisers reports. */ + const DFAREPORTING = "https://www.googleapis.com/auth/dfareporting"; + + public $dimensionValues; + public $files; + public $reports; + public $reports_compatibleFields; + public $reports_files; + public $userProfiles; + + + /** + * Constructs the internal representation of the Dfareporting service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'dfareporting/v1.3/'; + $this->version = 'v1.3'; + $this->serviceName = 'dfareporting'; + + $this->dimensionValues = new Google_Service_Dfareporting_DimensionValues_Resource( + $this, + $this->serviceName, + 'dimensionValues', + array( + 'methods' => array( + 'query' => array( + 'path' => 'userprofiles/{profileId}/dimensionvalues/query', + 'httpMethod' => 'POST', + 'parameters' => array( + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->files = new Google_Service_Dfareporting_Files_Resource( + $this, + $this->serviceName, + 'files', + array( + 'methods' => array( + 'get' => array( + 'path' => 'reports/{reportId}/files/{fileId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'reportId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'userprofiles/{profileId}/files', + 'httpMethod' => 'GET', + 'parameters' => array( + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sortField' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sortOrder' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'scope' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->reports = new Google_Service_Dfareporting_Reports_Resource( + $this, + $this->serviceName, + 'reports', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'userprofiles/{profileId}/reports/{reportId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'reportId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'userprofiles/{profileId}/reports/{reportId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'reportId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'userprofiles/{profileId}/reports', + 'httpMethod' => 'POST', + 'parameters' => array( + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'userprofiles/{profileId}/reports', + 'httpMethod' => 'GET', + 'parameters' => array( + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sortField' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sortOrder' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'scope' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'userprofiles/{profileId}/reports/{reportId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'reportId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'run' => array( + 'path' => 'userprofiles/{profileId}/reports/{reportId}/run', + 'httpMethod' => 'POST', + 'parameters' => array( + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'reportId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'synchronous' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'update' => array( + 'path' => 'userprofiles/{profileId}/reports/{reportId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'reportId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->reports_compatibleFields = new Google_Service_Dfareporting_ReportsCompatibleFields_Resource( + $this, + $this->serviceName, + 'compatibleFields', + array( + 'methods' => array( + 'query' => array( + 'path' => 'userprofiles/{profileId}/reports/compatiblefields/query', + 'httpMethod' => 'POST', + 'parameters' => array( + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->reports_files = new Google_Service_Dfareporting_ReportsFiles_Resource( + $this, + $this->serviceName, + 'files', + array( + 'methods' => array( + 'get' => array( + 'path' => 'userprofiles/{profileId}/reports/{reportId}/files/{fileId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'reportId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'userprofiles/{profileId}/reports/{reportId}/files', + 'httpMethod' => 'GET', + 'parameters' => array( + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'reportId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sortField' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sortOrder' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->userProfiles = new Google_Service_Dfareporting_UserProfiles_Resource( + $this, + $this->serviceName, + 'userProfiles', + array( + 'methods' => array( + 'get' => array( + 'path' => 'userprofiles/{profileId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'profileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'userprofiles', + 'httpMethod' => 'GET', + 'parameters' => array(), + ), + ) + ) + ); + } +} + + +/** + * The "dimensionValues" collection of methods. + * Typical usage is: + * + * $dfareportingService = new Google_Service_Dfareporting(...); + * $dimensionValues = $dfareportingService->dimensionValues; + * + */ +class Google_Service_Dfareporting_DimensionValues_Resource extends Google_Service_Resource +{ + + /** + * Retrieves list of report dimension values for a list of filters. + * (dimensionValues.query) + * + * @param string $profileId + * The DFA user profile ID. + * @param Google_DimensionValueRequest $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The value of the nextToken from the previous result page. + * @opt_param int maxResults + * Maximum number of results to return. + * @return Google_Service_Dfareporting_DimensionValueList + */ + public function query($profileId, Google_Service_Dfareporting_DimensionValueRequest $postBody, $optParams = array()) + { + $params = array('profileId' => $profileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('query', array($params), "Google_Service_Dfareporting_DimensionValueList"); + } +} + +/** + * The "files" collection of methods. + * Typical usage is: + * + * $dfareportingService = new Google_Service_Dfareporting(...); + * $files = $dfareportingService->files; + * + */ +class Google_Service_Dfareporting_Files_Resource extends Google_Service_Resource +{ + + /** + * Retrieves a report file by its report ID and file ID. (files.get) + * + * @param string $reportId + * The ID of the report. + * @param string $fileId + * The ID of the report file. + * @param array $optParams Optional parameters. + * @return Google_Service_Dfareporting_DfareportingFile + */ + public function get($reportId, $fileId, $optParams = array()) + { + $params = array('reportId' => $reportId, 'fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Dfareporting_DfareportingFile"); + } + /** + * Lists files for a user profile. (files.listFiles) + * + * @param string $profileId + * The DFA profile ID. + * @param array $optParams Optional parameters. + * + * @opt_param string sortField + * The field by which to sort the list. + * @opt_param int maxResults + * Maximum number of results to return. + * @opt_param string pageToken + * The value of the nextToken from the previous result page. + * @opt_param string sortOrder + * Order of sorted results, default is 'DESCENDING'. + * @opt_param string scope + * The scope that defines which results are returned, default is 'MINE'. + * @return Google_Service_Dfareporting_FileList + */ + public function listFiles($profileId, $optParams = array()) + { + $params = array('profileId' => $profileId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Dfareporting_FileList"); + } +} + +/** + * The "reports" collection of methods. + * Typical usage is: + * + * $dfareportingService = new Google_Service_Dfareporting(...); + * $reports = $dfareportingService->reports; + * + */ +class Google_Service_Dfareporting_Reports_Resource extends Google_Service_Resource +{ + + /** + * Deletes a report by its ID. (reports.delete) + * + * @param string $profileId + * The DFA user profile ID. + * @param string $reportId + * The ID of the report. + * @param array $optParams Optional parameters. + */ + public function delete($profileId, $reportId, $optParams = array()) + { + $params = array('profileId' => $profileId, 'reportId' => $reportId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves a report by its ID. (reports.get) + * + * @param string $profileId + * The DFA user profile ID. + * @param string $reportId + * The ID of the report. + * @param array $optParams Optional parameters. + * @return Google_Service_Dfareporting_Report + */ + public function get($profileId, $reportId, $optParams = array()) + { + $params = array('profileId' => $profileId, 'reportId' => $reportId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Dfareporting_Report"); + } + /** + * Creates a report. (reports.insert) + * + * @param string $profileId + * The DFA user profile ID. + * @param Google_Report $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Dfareporting_Report + */ + public function insert($profileId, Google_Service_Dfareporting_Report $postBody, $optParams = array()) + { + $params = array('profileId' => $profileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Dfareporting_Report"); + } + /** + * Retrieves list of reports. (reports.listReports) + * + * @param string $profileId + * The DFA user profile ID. + * @param array $optParams Optional parameters. + * + * @opt_param string sortField + * The field by which to sort the list. + * @opt_param int maxResults + * Maximum number of results to return. + * @opt_param string pageToken + * The value of the nextToken from the previous result page. + * @opt_param string sortOrder + * Order of sorted results, default is 'DESCENDING'. + * @opt_param string scope + * The scope that defines which results are returned, default is 'MINE'. + * @return Google_Service_Dfareporting_ReportList + */ + public function listReports($profileId, $optParams = array()) + { + $params = array('profileId' => $profileId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Dfareporting_ReportList"); + } + /** + * Updates a report. This method supports patch semantics. (reports.patch) + * + * @param string $profileId + * The DFA user profile ID. + * @param string $reportId + * The ID of the report. + * @param Google_Report $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Dfareporting_Report + */ + public function patch($profileId, $reportId, Google_Service_Dfareporting_Report $postBody, $optParams = array()) + { + $params = array('profileId' => $profileId, 'reportId' => $reportId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Dfareporting_Report"); + } + /** + * Runs a report. (reports.run) + * + * @param string $profileId + * The DFA profile ID. + * @param string $reportId + * The ID of the report. + * @param array $optParams Optional parameters. + * + * @opt_param bool synchronous + * If set and true, tries to run the report synchronously. + * @return Google_Service_Dfareporting_DfareportingFile + */ + public function run($profileId, $reportId, $optParams = array()) + { + $params = array('profileId' => $profileId, 'reportId' => $reportId); + $params = array_merge($params, $optParams); + return $this->call('run', array($params), "Google_Service_Dfareporting_DfareportingFile"); + } + /** + * Updates a report. (reports.update) + * + * @param string $profileId + * The DFA user profile ID. + * @param string $reportId + * The ID of the report. + * @param Google_Report $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Dfareporting_Report + */ + public function update($profileId, $reportId, Google_Service_Dfareporting_Report $postBody, $optParams = array()) + { + $params = array('profileId' => $profileId, 'reportId' => $reportId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Dfareporting_Report"); + } +} + +/** + * The "compatibleFields" collection of methods. + * Typical usage is: + * + * $dfareportingService = new Google_Service_Dfareporting(...); + * $compatibleFields = $dfareportingService->compatibleFields; + * + */ +class Google_Service_Dfareporting_ReportsCompatibleFields_Resource extends Google_Service_Resource +{ + + /** + * Returns the fields that are compatible to be selected in the respective + * sections of a report criteria, given the fields already selected in the input + * report and user permissions. (compatibleFields.query) + * + * @param string $profileId + * The DFA user profile ID. + * @param Google_Report $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Dfareporting_CompatibleFields + */ + public function query($profileId, Google_Service_Dfareporting_Report $postBody, $optParams = array()) + { + $params = array('profileId' => $profileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('query', array($params), "Google_Service_Dfareporting_CompatibleFields"); + } +} +/** + * The "files" collection of methods. + * Typical usage is: + * + * $dfareportingService = new Google_Service_Dfareporting(...); + * $files = $dfareportingService->files; + * + */ +class Google_Service_Dfareporting_ReportsFiles_Resource extends Google_Service_Resource +{ + + /** + * Retrieves a report file. (files.get) + * + * @param string $profileId + * The DFA profile ID. + * @param string $reportId + * The ID of the report. + * @param string $fileId + * The ID of the report file. + * @param array $optParams Optional parameters. + * @return Google_Service_Dfareporting_DfareportingFile + */ + public function get($profileId, $reportId, $fileId, $optParams = array()) + { + $params = array('profileId' => $profileId, 'reportId' => $reportId, 'fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Dfareporting_DfareportingFile"); + } + /** + * Lists files for a report. (files.listReportsFiles) + * + * @param string $profileId + * The DFA profile ID. + * @param string $reportId + * The ID of the parent report. + * @param array $optParams Optional parameters. + * + * @opt_param string sortField + * The field by which to sort the list. + * @opt_param int maxResults + * Maximum number of results to return. + * @opt_param string pageToken + * The value of the nextToken from the previous result page. + * @opt_param string sortOrder + * Order of sorted results, default is 'DESCENDING'. + * @return Google_Service_Dfareporting_FileList + */ + public function listReportsFiles($profileId, $reportId, $optParams = array()) + { + $params = array('profileId' => $profileId, 'reportId' => $reportId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Dfareporting_FileList"); + } +} + +/** + * The "userProfiles" collection of methods. + * Typical usage is: + * + * $dfareportingService = new Google_Service_Dfareporting(...); + * $userProfiles = $dfareportingService->userProfiles; + * + */ +class Google_Service_Dfareporting_UserProfiles_Resource extends Google_Service_Resource +{ + + /** + * Gets one user profile by ID. (userProfiles.get) + * + * @param string $profileId + * The user profile ID. + * @param array $optParams Optional parameters. + * @return Google_Service_Dfareporting_UserProfile + */ + public function get($profileId, $optParams = array()) + { + $params = array('profileId' => $profileId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Dfareporting_UserProfile"); + } + /** + * Retrieves list of user profiles for a user. (userProfiles.listUserProfiles) + * + * @param array $optParams Optional parameters. + * @return Google_Service_Dfareporting_UserProfileList + */ + public function listUserProfiles($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Dfareporting_UserProfileList"); + } +} + + + + +class Google_Service_Dfareporting_Activities extends Google_Collection +{ + protected $filtersType = 'Google_Service_Dfareporting_DimensionValue'; + protected $filtersDataType = 'array'; + public $kind; + public $metricNames; + + public function setFilters($filters) + { + $this->filters = $filters; + } + + public function getFilters() + { + return $this->filters; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMetricNames($metricNames) + { + $this->metricNames = $metricNames; + } + + public function getMetricNames() + { + return $this->metricNames; + } +} + +class Google_Service_Dfareporting_CompatibleFields extends Google_Model +{ + protected $crossDimensionReachReportCompatibleFieldsType = 'Google_Service_Dfareporting_CrossDimensionReachReportCompatibleFields'; + protected $crossDimensionReachReportCompatibleFieldsDataType = ''; + protected $floodlightReportCompatibleFieldsType = 'Google_Service_Dfareporting_FloodlightReportCompatibleFields'; + protected $floodlightReportCompatibleFieldsDataType = ''; + public $kind; + protected $pathToConversionReportCompatibleFieldsType = 'Google_Service_Dfareporting_PathToConversionReportCompatibleFields'; + protected $pathToConversionReportCompatibleFieldsDataType = ''; + protected $reachReportCompatibleFieldsType = 'Google_Service_Dfareporting_ReachReportCompatibleFields'; + protected $reachReportCompatibleFieldsDataType = ''; + protected $reportCompatibleFieldsType = 'Google_Service_Dfareporting_ReportCompatibleFields'; + protected $reportCompatibleFieldsDataType = ''; + + public function setCrossDimensionReachReportCompatibleFields(Google_Service_Dfareporting_CrossDimensionReachReportCompatibleFields $crossDimensionReachReportCompatibleFields) + { + $this->crossDimensionReachReportCompatibleFields = $crossDimensionReachReportCompatibleFields; + } + + public function getCrossDimensionReachReportCompatibleFields() + { + return $this->crossDimensionReachReportCompatibleFields; + } + + public function setFloodlightReportCompatibleFields(Google_Service_Dfareporting_FloodlightReportCompatibleFields $floodlightReportCompatibleFields) + { + $this->floodlightReportCompatibleFields = $floodlightReportCompatibleFields; + } + + public function getFloodlightReportCompatibleFields() + { + return $this->floodlightReportCompatibleFields; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPathToConversionReportCompatibleFields(Google_Service_Dfareporting_PathToConversionReportCompatibleFields $pathToConversionReportCompatibleFields) + { + $this->pathToConversionReportCompatibleFields = $pathToConversionReportCompatibleFields; + } + + public function getPathToConversionReportCompatibleFields() + { + return $this->pathToConversionReportCompatibleFields; + } + + public function setReachReportCompatibleFields(Google_Service_Dfareporting_ReachReportCompatibleFields $reachReportCompatibleFields) + { + $this->reachReportCompatibleFields = $reachReportCompatibleFields; + } + + public function getReachReportCompatibleFields() + { + return $this->reachReportCompatibleFields; + } + + public function setReportCompatibleFields(Google_Service_Dfareporting_ReportCompatibleFields $reportCompatibleFields) + { + $this->reportCompatibleFields = $reportCompatibleFields; + } + + public function getReportCompatibleFields() + { + return $this->reportCompatibleFields; + } +} + +class Google_Service_Dfareporting_CrossDimensionReachReportCompatibleFields extends Google_Collection +{ + protected $breakdownType = 'Google_Service_Dfareporting_Dimension'; + protected $breakdownDataType = 'array'; + protected $dimensionFiltersType = 'Google_Service_Dfareporting_Dimension'; + protected $dimensionFiltersDataType = 'array'; + public $kind; + protected $metricsType = 'Google_Service_Dfareporting_Metric'; + protected $metricsDataType = 'array'; + protected $overlapMetricsType = 'Google_Service_Dfareporting_Metric'; + protected $overlapMetricsDataType = 'array'; + + public function setBreakdown($breakdown) + { + $this->breakdown = $breakdown; + } + + public function getBreakdown() + { + return $this->breakdown; + } + + public function setDimensionFilters($dimensionFilters) + { + $this->dimensionFilters = $dimensionFilters; + } + + public function getDimensionFilters() + { + return $this->dimensionFilters; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMetrics($metrics) + { + $this->metrics = $metrics; + } + + public function getMetrics() + { + return $this->metrics; + } + + public function setOverlapMetrics($overlapMetrics) + { + $this->overlapMetrics = $overlapMetrics; + } + + public function getOverlapMetrics() + { + return $this->overlapMetrics; + } +} + +class Google_Service_Dfareporting_CustomRichMediaEvents extends Google_Collection +{ + protected $filteredEventIdsType = 'Google_Service_Dfareporting_DimensionValue'; + protected $filteredEventIdsDataType = 'array'; + public $kind; + + public function setFilteredEventIds($filteredEventIds) + { + $this->filteredEventIds = $filteredEventIds; + } + + public function getFilteredEventIds() + { + return $this->filteredEventIds; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Dfareporting_DateRange extends Google_Model +{ + public $endDate; + public $kind; + public $relativeDateRange; + public $startDate; + + public function setEndDate($endDate) + { + $this->endDate = $endDate; + } + + public function getEndDate() + { + return $this->endDate; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRelativeDateRange($relativeDateRange) + { + $this->relativeDateRange = $relativeDateRange; + } + + public function getRelativeDateRange() + { + return $this->relativeDateRange; + } + + public function setStartDate($startDate) + { + $this->startDate = $startDate; + } + + public function getStartDate() + { + return $this->startDate; + } +} + +class Google_Service_Dfareporting_DfareportingFile extends Google_Model +{ + protected $dateRangeType = 'Google_Service_Dfareporting_DateRange'; + protected $dateRangeDataType = ''; + public $etag; + public $fileName; + public $format; + public $id; + public $kind; + public $lastModifiedTime; + public $reportId; + public $status; + protected $urlsType = 'Google_Service_Dfareporting_DfareportingFileUrls'; + protected $urlsDataType = ''; + + public function setDateRange(Google_Service_Dfareporting_DateRange $dateRange) + { + $this->dateRange = $dateRange; + } + + public function getDateRange() + { + return $this->dateRange; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setFileName($fileName) + { + $this->fileName = $fileName; + } + + public function getFileName() + { + return $this->fileName; + } + + public function setFormat($format) + { + $this->format = $format; + } + + public function getFormat() + { + return $this->format; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastModifiedTime($lastModifiedTime) + { + $this->lastModifiedTime = $lastModifiedTime; + } + + public function getLastModifiedTime() + { + return $this->lastModifiedTime; + } + + public function setReportId($reportId) + { + $this->reportId = $reportId; + } + + public function getReportId() + { + return $this->reportId; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setUrls(Google_Service_Dfareporting_DfareportingFileUrls $urls) + { + $this->urls = $urls; + } + + public function getUrls() + { + return $this->urls; + } +} + +class Google_Service_Dfareporting_DfareportingFileUrls extends Google_Model +{ + public $apiUrl; + public $browserUrl; + + public function setApiUrl($apiUrl) + { + $this->apiUrl = $apiUrl; + } + + public function getApiUrl() + { + return $this->apiUrl; + } + + public function setBrowserUrl($browserUrl) + { + $this->browserUrl = $browserUrl; + } + + public function getBrowserUrl() + { + return $this->browserUrl; + } +} + +class Google_Service_Dfareporting_Dimension extends Google_Model +{ + public $kind; + public $name; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_Dfareporting_DimensionFilter extends Google_Model +{ + public $dimensionName; + public $kind; + public $value; + + public function setDimensionName($dimensionName) + { + $this->dimensionName = $dimensionName; + } + + public function getDimensionName() + { + return $this->dimensionName; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Dfareporting_DimensionValue extends Google_Model +{ + public $dimensionName; + public $etag; + public $id; + public $kind; + public $matchType; + public $value; + + public function setDimensionName($dimensionName) + { + $this->dimensionName = $dimensionName; + } + + public function getDimensionName() + { + return $this->dimensionName; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMatchType($matchType) + { + $this->matchType = $matchType; + } + + public function getMatchType() + { + return $this->matchType; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Dfareporting_DimensionValueList extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Dfareporting_DimensionValue'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Dfareporting_DimensionValueRequest extends Google_Collection +{ + public $dimensionName; + public $endDate; + protected $filtersType = 'Google_Service_Dfareporting_DimensionFilter'; + protected $filtersDataType = 'array'; + public $kind; + public $startDate; + + public function setDimensionName($dimensionName) + { + $this->dimensionName = $dimensionName; + } + + public function getDimensionName() + { + return $this->dimensionName; + } + + public function setEndDate($endDate) + { + $this->endDate = $endDate; + } + + public function getEndDate() + { + return $this->endDate; + } + + public function setFilters($filters) + { + $this->filters = $filters; + } + + public function getFilters() + { + return $this->filters; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setStartDate($startDate) + { + $this->startDate = $startDate; + } + + public function getStartDate() + { + return $this->startDate; + } +} + +class Google_Service_Dfareporting_FileList extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Dfareporting_DfareportingFile'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Dfareporting_FloodlightReportCompatibleFields extends Google_Collection +{ + protected $dimensionFiltersType = 'Google_Service_Dfareporting_Dimension'; + protected $dimensionFiltersDataType = 'array'; + protected $dimensionsType = 'Google_Service_Dfareporting_Dimension'; + protected $dimensionsDataType = 'array'; + public $kind; + protected $metricsType = 'Google_Service_Dfareporting_Metric'; + protected $metricsDataType = 'array'; + + public function setDimensionFilters($dimensionFilters) + { + $this->dimensionFilters = $dimensionFilters; + } + + public function getDimensionFilters() + { + return $this->dimensionFilters; + } + + public function setDimensions($dimensions) + { + $this->dimensions = $dimensions; + } + + public function getDimensions() + { + return $this->dimensions; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMetrics($metrics) + { + $this->metrics = $metrics; + } + + public function getMetrics() + { + return $this->metrics; + } +} + +class Google_Service_Dfareporting_Metric extends Google_Model +{ + public $kind; + public $name; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_Dfareporting_PathToConversionReportCompatibleFields extends Google_Collection +{ + protected $conversionDimensionsType = 'Google_Service_Dfareporting_Dimension'; + protected $conversionDimensionsDataType = 'array'; + protected $customFloodlightVariablesType = 'Google_Service_Dfareporting_Dimension'; + protected $customFloodlightVariablesDataType = 'array'; + public $kind; + protected $metricsType = 'Google_Service_Dfareporting_Metric'; + protected $metricsDataType = 'array'; + protected $perInteractionDimensionsType = 'Google_Service_Dfareporting_Dimension'; + protected $perInteractionDimensionsDataType = 'array'; + + public function setConversionDimensions($conversionDimensions) + { + $this->conversionDimensions = $conversionDimensions; + } + + public function getConversionDimensions() + { + return $this->conversionDimensions; + } + + public function setCustomFloodlightVariables($customFloodlightVariables) + { + $this->customFloodlightVariables = $customFloodlightVariables; + } + + public function getCustomFloodlightVariables() + { + return $this->customFloodlightVariables; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMetrics($metrics) + { + $this->metrics = $metrics; + } + + public function getMetrics() + { + return $this->metrics; + } + + public function setPerInteractionDimensions($perInteractionDimensions) + { + $this->perInteractionDimensions = $perInteractionDimensions; + } + + public function getPerInteractionDimensions() + { + return $this->perInteractionDimensions; + } +} + +class Google_Service_Dfareporting_ReachReportCompatibleFields extends Google_Collection +{ + protected $dimensionFiltersType = 'Google_Service_Dfareporting_Dimension'; + protected $dimensionFiltersDataType = 'array'; + protected $dimensionsType = 'Google_Service_Dfareporting_Dimension'; + protected $dimensionsDataType = 'array'; + public $kind; + protected $metricsType = 'Google_Service_Dfareporting_Metric'; + protected $metricsDataType = 'array'; + protected $pivotedActivityMetricsType = 'Google_Service_Dfareporting_Metric'; + protected $pivotedActivityMetricsDataType = 'array'; + protected $reachByFrequencyMetricsType = 'Google_Service_Dfareporting_Metric'; + protected $reachByFrequencyMetricsDataType = 'array'; + + public function setDimensionFilters($dimensionFilters) + { + $this->dimensionFilters = $dimensionFilters; + } + + public function getDimensionFilters() + { + return $this->dimensionFilters; + } + + public function setDimensions($dimensions) + { + $this->dimensions = $dimensions; + } + + public function getDimensions() + { + return $this->dimensions; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMetrics($metrics) + { + $this->metrics = $metrics; + } + + public function getMetrics() + { + return $this->metrics; + } + + public function setPivotedActivityMetrics($pivotedActivityMetrics) + { + $this->pivotedActivityMetrics = $pivotedActivityMetrics; + } + + public function getPivotedActivityMetrics() + { + return $this->pivotedActivityMetrics; + } + + public function setReachByFrequencyMetrics($reachByFrequencyMetrics) + { + $this->reachByFrequencyMetrics = $reachByFrequencyMetrics; + } + + public function getReachByFrequencyMetrics() + { + return $this->reachByFrequencyMetrics; + } +} + +class Google_Service_Dfareporting_Recipient extends Google_Model +{ + public $deliveryType; + public $email; + public $kind; + + public function setDeliveryType($deliveryType) + { + $this->deliveryType = $deliveryType; + } + + public function getDeliveryType() + { + return $this->deliveryType; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Dfareporting_Report extends Google_Model +{ + public $accountId; + protected $activeGrpCriteriaType = 'Google_Service_Dfareporting_ReportActiveGrpCriteria'; + protected $activeGrpCriteriaDataType = ''; + protected $criteriaType = 'Google_Service_Dfareporting_ReportCriteria'; + protected $criteriaDataType = ''; + protected $crossDimensionReachCriteriaType = 'Google_Service_Dfareporting_ReportCrossDimensionReachCriteria'; + protected $crossDimensionReachCriteriaDataType = ''; + protected $deliveryType = 'Google_Service_Dfareporting_ReportDelivery'; + protected $deliveryDataType = ''; + public $etag; + public $fileName; + protected $floodlightCriteriaType = 'Google_Service_Dfareporting_ReportFloodlightCriteria'; + protected $floodlightCriteriaDataType = ''; + public $format; + public $id; + public $kind; + public $lastModifiedTime; + public $name; + public $ownerProfileId; + protected $pathToConversionCriteriaType = 'Google_Service_Dfareporting_ReportPathToConversionCriteria'; + protected $pathToConversionCriteriaDataType = ''; + protected $reachCriteriaType = 'Google_Service_Dfareporting_ReportReachCriteria'; + protected $reachCriteriaDataType = ''; + protected $scheduleType = 'Google_Service_Dfareporting_ReportSchedule'; + protected $scheduleDataType = ''; + public $subAccountId; + public $type; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setActiveGrpCriteria(Google_Service_Dfareporting_ReportActiveGrpCriteria $activeGrpCriteria) + { + $this->activeGrpCriteria = $activeGrpCriteria; + } + + public function getActiveGrpCriteria() + { + return $this->activeGrpCriteria; + } + + public function setCriteria(Google_Service_Dfareporting_ReportCriteria $criteria) + { + $this->criteria = $criteria; + } + + public function getCriteria() + { + return $this->criteria; + } + + public function setCrossDimensionReachCriteria(Google_Service_Dfareporting_ReportCrossDimensionReachCriteria $crossDimensionReachCriteria) + { + $this->crossDimensionReachCriteria = $crossDimensionReachCriteria; + } + + public function getCrossDimensionReachCriteria() + { + return $this->crossDimensionReachCriteria; + } + + public function setDelivery(Google_Service_Dfareporting_ReportDelivery $delivery) + { + $this->delivery = $delivery; + } + + public function getDelivery() + { + return $this->delivery; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setFileName($fileName) + { + $this->fileName = $fileName; + } + + public function getFileName() + { + return $this->fileName; + } + + public function setFloodlightCriteria(Google_Service_Dfareporting_ReportFloodlightCriteria $floodlightCriteria) + { + $this->floodlightCriteria = $floodlightCriteria; + } + + public function getFloodlightCriteria() + { + return $this->floodlightCriteria; + } + + public function setFormat($format) + { + $this->format = $format; + } + + public function getFormat() + { + return $this->format; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastModifiedTime($lastModifiedTime) + { + $this->lastModifiedTime = $lastModifiedTime; + } + + public function getLastModifiedTime() + { + return $this->lastModifiedTime; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setOwnerProfileId($ownerProfileId) + { + $this->ownerProfileId = $ownerProfileId; + } + + public function getOwnerProfileId() + { + return $this->ownerProfileId; + } + + public function setPathToConversionCriteria(Google_Service_Dfareporting_ReportPathToConversionCriteria $pathToConversionCriteria) + { + $this->pathToConversionCriteria = $pathToConversionCriteria; + } + + public function getPathToConversionCriteria() + { + return $this->pathToConversionCriteria; + } + + public function setReachCriteria(Google_Service_Dfareporting_ReportReachCriteria $reachCriteria) + { + $this->reachCriteria = $reachCriteria; + } + + public function getReachCriteria() + { + return $this->reachCriteria; + } + + public function setSchedule(Google_Service_Dfareporting_ReportSchedule $schedule) + { + $this->schedule = $schedule; + } + + public function getSchedule() + { + return $this->schedule; + } + + public function setSubAccountId($subAccountId) + { + $this->subAccountId = $subAccountId; + } + + public function getSubAccountId() + { + return $this->subAccountId; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Dfareporting_ReportActiveGrpCriteria extends Google_Collection +{ + protected $dateRangeType = 'Google_Service_Dfareporting_DateRange'; + protected $dateRangeDataType = ''; + protected $dimensionFiltersType = 'Google_Service_Dfareporting_DimensionValue'; + protected $dimensionFiltersDataType = 'array'; + protected $dimensionsType = 'Google_Service_Dfareporting_SortedDimension'; + protected $dimensionsDataType = 'array'; + public $metricNames; + + public function setDateRange(Google_Service_Dfareporting_DateRange $dateRange) + { + $this->dateRange = $dateRange; + } + + public function getDateRange() + { + return $this->dateRange; + } + + public function setDimensionFilters($dimensionFilters) + { + $this->dimensionFilters = $dimensionFilters; + } + + public function getDimensionFilters() + { + return $this->dimensionFilters; + } + + public function setDimensions($dimensions) + { + $this->dimensions = $dimensions; + } + + public function getDimensions() + { + return $this->dimensions; + } + + public function setMetricNames($metricNames) + { + $this->metricNames = $metricNames; + } + + public function getMetricNames() + { + return $this->metricNames; + } +} + +class Google_Service_Dfareporting_ReportCompatibleFields extends Google_Collection +{ + protected $dimensionFiltersType = 'Google_Service_Dfareporting_Dimension'; + protected $dimensionFiltersDataType = 'array'; + protected $dimensionsType = 'Google_Service_Dfareporting_Dimension'; + protected $dimensionsDataType = 'array'; + public $kind; + protected $metricsType = 'Google_Service_Dfareporting_Metric'; + protected $metricsDataType = 'array'; + protected $pivotedActivityMetricsType = 'Google_Service_Dfareporting_Metric'; + protected $pivotedActivityMetricsDataType = 'array'; + + public function setDimensionFilters($dimensionFilters) + { + $this->dimensionFilters = $dimensionFilters; + } + + public function getDimensionFilters() + { + return $this->dimensionFilters; + } + + public function setDimensions($dimensions) + { + $this->dimensions = $dimensions; + } + + public function getDimensions() + { + return $this->dimensions; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMetrics($metrics) + { + $this->metrics = $metrics; + } + + public function getMetrics() + { + return $this->metrics; + } + + public function setPivotedActivityMetrics($pivotedActivityMetrics) + { + $this->pivotedActivityMetrics = $pivotedActivityMetrics; + } + + public function getPivotedActivityMetrics() + { + return $this->pivotedActivityMetrics; + } +} + +class Google_Service_Dfareporting_ReportCriteria extends Google_Collection +{ + protected $activitiesType = 'Google_Service_Dfareporting_Activities'; + protected $activitiesDataType = ''; + protected $customRichMediaEventsType = 'Google_Service_Dfareporting_CustomRichMediaEvents'; + protected $customRichMediaEventsDataType = ''; + protected $dateRangeType = 'Google_Service_Dfareporting_DateRange'; + protected $dateRangeDataType = ''; + protected $dimensionFiltersType = 'Google_Service_Dfareporting_DimensionValue'; + protected $dimensionFiltersDataType = 'array'; + protected $dimensionsType = 'Google_Service_Dfareporting_SortedDimension'; + protected $dimensionsDataType = 'array'; + public $metricNames; + + public function setActivities(Google_Service_Dfareporting_Activities $activities) + { + $this->activities = $activities; + } + + public function getActivities() + { + return $this->activities; + } + + public function setCustomRichMediaEvents(Google_Service_Dfareporting_CustomRichMediaEvents $customRichMediaEvents) + { + $this->customRichMediaEvents = $customRichMediaEvents; + } + + public function getCustomRichMediaEvents() + { + return $this->customRichMediaEvents; + } + + public function setDateRange(Google_Service_Dfareporting_DateRange $dateRange) + { + $this->dateRange = $dateRange; + } + + public function getDateRange() + { + return $this->dateRange; + } + + public function setDimensionFilters($dimensionFilters) + { + $this->dimensionFilters = $dimensionFilters; + } + + public function getDimensionFilters() + { + return $this->dimensionFilters; + } + + public function setDimensions($dimensions) + { + $this->dimensions = $dimensions; + } + + public function getDimensions() + { + return $this->dimensions; + } + + public function setMetricNames($metricNames) + { + $this->metricNames = $metricNames; + } + + public function getMetricNames() + { + return $this->metricNames; + } +} + +class Google_Service_Dfareporting_ReportCrossDimensionReachCriteria extends Google_Collection +{ + protected $breakdownType = 'Google_Service_Dfareporting_SortedDimension'; + protected $breakdownDataType = 'array'; + protected $dateRangeType = 'Google_Service_Dfareporting_DateRange'; + protected $dateRangeDataType = ''; + public $dimension; + protected $dimensionFiltersType = 'Google_Service_Dfareporting_DimensionValue'; + protected $dimensionFiltersDataType = 'array'; + public $metricNames; + public $overlapMetricNames; + public $pivoted; + + public function setBreakdown($breakdown) + { + $this->breakdown = $breakdown; + } + + public function getBreakdown() + { + return $this->breakdown; + } + + public function setDateRange(Google_Service_Dfareporting_DateRange $dateRange) + { + $this->dateRange = $dateRange; + } + + public function getDateRange() + { + return $this->dateRange; + } + + public function setDimension($dimension) + { + $this->dimension = $dimension; + } + + public function getDimension() + { + return $this->dimension; + } + + public function setDimensionFilters($dimensionFilters) + { + $this->dimensionFilters = $dimensionFilters; + } + + public function getDimensionFilters() + { + return $this->dimensionFilters; + } + + public function setMetricNames($metricNames) + { + $this->metricNames = $metricNames; + } + + public function getMetricNames() + { + return $this->metricNames; + } + + public function setOverlapMetricNames($overlapMetricNames) + { + $this->overlapMetricNames = $overlapMetricNames; + } + + public function getOverlapMetricNames() + { + return $this->overlapMetricNames; + } + + public function setPivoted($pivoted) + { + $this->pivoted = $pivoted; + } + + public function getPivoted() + { + return $this->pivoted; + } +} + +class Google_Service_Dfareporting_ReportDelivery extends Google_Collection +{ + public $emailOwner; + public $emailOwnerDeliveryType; + public $message; + protected $recipientsType = 'Google_Service_Dfareporting_Recipient'; + protected $recipientsDataType = 'array'; + + public function setEmailOwner($emailOwner) + { + $this->emailOwner = $emailOwner; + } + + public function getEmailOwner() + { + return $this->emailOwner; + } + + public function setEmailOwnerDeliveryType($emailOwnerDeliveryType) + { + $this->emailOwnerDeliveryType = $emailOwnerDeliveryType; + } + + public function getEmailOwnerDeliveryType() + { + return $this->emailOwnerDeliveryType; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } + + public function setRecipients($recipients) + { + $this->recipients = $recipients; + } + + public function getRecipients() + { + return $this->recipients; + } +} + +class Google_Service_Dfareporting_ReportFloodlightCriteria extends Google_Collection +{ + protected $customRichMediaEventsType = 'Google_Service_Dfareporting_DimensionValue'; + protected $customRichMediaEventsDataType = 'array'; + protected $dateRangeType = 'Google_Service_Dfareporting_DateRange'; + protected $dateRangeDataType = ''; + protected $dimensionFiltersType = 'Google_Service_Dfareporting_DimensionValue'; + protected $dimensionFiltersDataType = 'array'; + protected $dimensionsType = 'Google_Service_Dfareporting_SortedDimension'; + protected $dimensionsDataType = 'array'; + protected $floodlightConfigIdType = 'Google_Service_Dfareporting_DimensionValue'; + protected $floodlightConfigIdDataType = ''; + public $metricNames; + protected $reportPropertiesType = 'Google_Service_Dfareporting_ReportFloodlightCriteriaReportProperties'; + protected $reportPropertiesDataType = ''; + + public function setCustomRichMediaEvents($customRichMediaEvents) + { + $this->customRichMediaEvents = $customRichMediaEvents; + } + + public function getCustomRichMediaEvents() + { + return $this->customRichMediaEvents; + } + + public function setDateRange(Google_Service_Dfareporting_DateRange $dateRange) + { + $this->dateRange = $dateRange; + } + + public function getDateRange() + { + return $this->dateRange; + } + + public function setDimensionFilters($dimensionFilters) + { + $this->dimensionFilters = $dimensionFilters; + } + + public function getDimensionFilters() + { + return $this->dimensionFilters; + } + + public function setDimensions($dimensions) + { + $this->dimensions = $dimensions; + } + + public function getDimensions() + { + return $this->dimensions; + } + + public function setFloodlightConfigId(Google_Service_Dfareporting_DimensionValue $floodlightConfigId) + { + $this->floodlightConfigId = $floodlightConfigId; + } + + public function getFloodlightConfigId() + { + return $this->floodlightConfigId; + } + + public function setMetricNames($metricNames) + { + $this->metricNames = $metricNames; + } + + public function getMetricNames() + { + return $this->metricNames; + } + + public function setReportProperties(Google_Service_Dfareporting_ReportFloodlightCriteriaReportProperties $reportProperties) + { + $this->reportProperties = $reportProperties; + } + + public function getReportProperties() + { + return $this->reportProperties; + } +} + +class Google_Service_Dfareporting_ReportFloodlightCriteriaReportProperties extends Google_Model +{ + public $includeAttributedIPConversions; + public $includeUnattributedCookieConversions; + public $includeUnattributedIPConversions; + + public function setIncludeAttributedIPConversions($includeAttributedIPConversions) + { + $this->includeAttributedIPConversions = $includeAttributedIPConversions; + } + + public function getIncludeAttributedIPConversions() + { + return $this->includeAttributedIPConversions; + } + + public function setIncludeUnattributedCookieConversions($includeUnattributedCookieConversions) + { + $this->includeUnattributedCookieConversions = $includeUnattributedCookieConversions; + } + + public function getIncludeUnattributedCookieConversions() + { + return $this->includeUnattributedCookieConversions; + } + + public function setIncludeUnattributedIPConversions($includeUnattributedIPConversions) + { + $this->includeUnattributedIPConversions = $includeUnattributedIPConversions; + } + + public function getIncludeUnattributedIPConversions() + { + return $this->includeUnattributedIPConversions; + } +} + +class Google_Service_Dfareporting_ReportList extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Dfareporting_Report'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Dfareporting_ReportPathToConversionCriteria extends Google_Collection +{ + protected $activityFiltersType = 'Google_Service_Dfareporting_DimensionValue'; + protected $activityFiltersDataType = 'array'; + protected $conversionDimensionsType = 'Google_Service_Dfareporting_SortedDimension'; + protected $conversionDimensionsDataType = 'array'; + protected $customFloodlightVariablesType = 'Google_Service_Dfareporting_SortedDimension'; + protected $customFloodlightVariablesDataType = 'array'; + protected $customRichMediaEventsType = 'Google_Service_Dfareporting_DimensionValue'; + protected $customRichMediaEventsDataType = 'array'; + protected $dateRangeType = 'Google_Service_Dfareporting_DateRange'; + protected $dateRangeDataType = ''; + protected $floodlightConfigIdType = 'Google_Service_Dfareporting_DimensionValue'; + protected $floodlightConfigIdDataType = ''; + public $metricNames; + protected $perInteractionDimensionsType = 'Google_Service_Dfareporting_SortedDimension'; + protected $perInteractionDimensionsDataType = 'array'; + protected $reportPropertiesType = 'Google_Service_Dfareporting_ReportPathToConversionCriteriaReportProperties'; + protected $reportPropertiesDataType = ''; + + public function setActivityFilters($activityFilters) + { + $this->activityFilters = $activityFilters; + } + + public function getActivityFilters() + { + return $this->activityFilters; + } + + public function setConversionDimensions($conversionDimensions) + { + $this->conversionDimensions = $conversionDimensions; + } + + public function getConversionDimensions() + { + return $this->conversionDimensions; + } + + public function setCustomFloodlightVariables($customFloodlightVariables) + { + $this->customFloodlightVariables = $customFloodlightVariables; + } + + public function getCustomFloodlightVariables() + { + return $this->customFloodlightVariables; + } + + public function setCustomRichMediaEvents($customRichMediaEvents) + { + $this->customRichMediaEvents = $customRichMediaEvents; + } + + public function getCustomRichMediaEvents() + { + return $this->customRichMediaEvents; + } + + public function setDateRange(Google_Service_Dfareporting_DateRange $dateRange) + { + $this->dateRange = $dateRange; + } + + public function getDateRange() + { + return $this->dateRange; + } + + public function setFloodlightConfigId(Google_Service_Dfareporting_DimensionValue $floodlightConfigId) + { + $this->floodlightConfigId = $floodlightConfigId; + } + + public function getFloodlightConfigId() + { + return $this->floodlightConfigId; + } + + public function setMetricNames($metricNames) + { + $this->metricNames = $metricNames; + } + + public function getMetricNames() + { + return $this->metricNames; + } + + public function setPerInteractionDimensions($perInteractionDimensions) + { + $this->perInteractionDimensions = $perInteractionDimensions; + } + + public function getPerInteractionDimensions() + { + return $this->perInteractionDimensions; + } + + public function setReportProperties(Google_Service_Dfareporting_ReportPathToConversionCriteriaReportProperties $reportProperties) + { + $this->reportProperties = $reportProperties; + } + + public function getReportProperties() + { + return $this->reportProperties; + } +} + +class Google_Service_Dfareporting_ReportPathToConversionCriteriaReportProperties extends Google_Model +{ + public $clicksLookbackWindow; + public $impressionsLookbackWindow; + public $includeAttributedIPConversions; + public $includeUnattributedCookieConversions; + public $includeUnattributedIPConversions; + public $maximumClickInteractions; + public $maximumImpressionInteractions; + public $maximumInteractionGap; + public $pivotOnInteractionPath; + + public function setClicksLookbackWindow($clicksLookbackWindow) + { + $this->clicksLookbackWindow = $clicksLookbackWindow; + } + + public function getClicksLookbackWindow() + { + return $this->clicksLookbackWindow; + } + + public function setImpressionsLookbackWindow($impressionsLookbackWindow) + { + $this->impressionsLookbackWindow = $impressionsLookbackWindow; + } + + public function getImpressionsLookbackWindow() + { + return $this->impressionsLookbackWindow; + } + + public function setIncludeAttributedIPConversions($includeAttributedIPConversions) + { + $this->includeAttributedIPConversions = $includeAttributedIPConversions; + } + + public function getIncludeAttributedIPConversions() + { + return $this->includeAttributedIPConversions; + } + + public function setIncludeUnattributedCookieConversions($includeUnattributedCookieConversions) + { + $this->includeUnattributedCookieConversions = $includeUnattributedCookieConversions; + } + + public function getIncludeUnattributedCookieConversions() + { + return $this->includeUnattributedCookieConversions; + } + + public function setIncludeUnattributedIPConversions($includeUnattributedIPConversions) + { + $this->includeUnattributedIPConversions = $includeUnattributedIPConversions; + } + + public function getIncludeUnattributedIPConversions() + { + return $this->includeUnattributedIPConversions; + } + + public function setMaximumClickInteractions($maximumClickInteractions) + { + $this->maximumClickInteractions = $maximumClickInteractions; + } + + public function getMaximumClickInteractions() + { + return $this->maximumClickInteractions; + } + + public function setMaximumImpressionInteractions($maximumImpressionInteractions) + { + $this->maximumImpressionInteractions = $maximumImpressionInteractions; + } + + public function getMaximumImpressionInteractions() + { + return $this->maximumImpressionInteractions; + } + + public function setMaximumInteractionGap($maximumInteractionGap) + { + $this->maximumInteractionGap = $maximumInteractionGap; + } + + public function getMaximumInteractionGap() + { + return $this->maximumInteractionGap; + } + + public function setPivotOnInteractionPath($pivotOnInteractionPath) + { + $this->pivotOnInteractionPath = $pivotOnInteractionPath; + } + + public function getPivotOnInteractionPath() + { + return $this->pivotOnInteractionPath; + } +} + +class Google_Service_Dfareporting_ReportReachCriteria extends Google_Collection +{ + protected $activitiesType = 'Google_Service_Dfareporting_Activities'; + protected $activitiesDataType = ''; + protected $customRichMediaEventsType = 'Google_Service_Dfareporting_CustomRichMediaEvents'; + protected $customRichMediaEventsDataType = ''; + protected $dateRangeType = 'Google_Service_Dfareporting_DateRange'; + protected $dateRangeDataType = ''; + protected $dimensionFiltersType = 'Google_Service_Dfareporting_DimensionValue'; + protected $dimensionFiltersDataType = 'array'; + protected $dimensionsType = 'Google_Service_Dfareporting_SortedDimension'; + protected $dimensionsDataType = 'array'; + public $metricNames; + public $reachByFrequencyMetricNames; + + public function setActivities(Google_Service_Dfareporting_Activities $activities) + { + $this->activities = $activities; + } + + public function getActivities() + { + return $this->activities; + } + + public function setCustomRichMediaEvents(Google_Service_Dfareporting_CustomRichMediaEvents $customRichMediaEvents) + { + $this->customRichMediaEvents = $customRichMediaEvents; + } + + public function getCustomRichMediaEvents() + { + return $this->customRichMediaEvents; + } + + public function setDateRange(Google_Service_Dfareporting_DateRange $dateRange) + { + $this->dateRange = $dateRange; + } + + public function getDateRange() + { + return $this->dateRange; + } + + public function setDimensionFilters($dimensionFilters) + { + $this->dimensionFilters = $dimensionFilters; + } + + public function getDimensionFilters() + { + return $this->dimensionFilters; + } + + public function setDimensions($dimensions) + { + $this->dimensions = $dimensions; + } + + public function getDimensions() + { + return $this->dimensions; + } + + public function setMetricNames($metricNames) + { + $this->metricNames = $metricNames; + } + + public function getMetricNames() + { + return $this->metricNames; + } + + public function setReachByFrequencyMetricNames($reachByFrequencyMetricNames) + { + $this->reachByFrequencyMetricNames = $reachByFrequencyMetricNames; + } + + public function getReachByFrequencyMetricNames() + { + return $this->reachByFrequencyMetricNames; + } +} + +class Google_Service_Dfareporting_ReportSchedule extends Google_Collection +{ + public $active; + public $every; + public $expirationDate; + public $repeats; + public $repeatsOnWeekDays; + public $runsOnDayOfMonth; + public $startDate; + + public function setActive($active) + { + $this->active = $active; + } + + public function getActive() + { + return $this->active; + } + + public function setEvery($every) + { + $this->every = $every; + } + + public function getEvery() + { + return $this->every; + } + + public function setExpirationDate($expirationDate) + { + $this->expirationDate = $expirationDate; + } + + public function getExpirationDate() + { + return $this->expirationDate; + } + + public function setRepeats($repeats) + { + $this->repeats = $repeats; + } + + public function getRepeats() + { + return $this->repeats; + } + + public function setRepeatsOnWeekDays($repeatsOnWeekDays) + { + $this->repeatsOnWeekDays = $repeatsOnWeekDays; + } + + public function getRepeatsOnWeekDays() + { + return $this->repeatsOnWeekDays; + } + + public function setRunsOnDayOfMonth($runsOnDayOfMonth) + { + $this->runsOnDayOfMonth = $runsOnDayOfMonth; + } + + public function getRunsOnDayOfMonth() + { + return $this->runsOnDayOfMonth; + } + + public function setStartDate($startDate) + { + $this->startDate = $startDate; + } + + public function getStartDate() + { + return $this->startDate; + } +} + +class Google_Service_Dfareporting_SortedDimension extends Google_Model +{ + public $kind; + public $name; + public $sortOrder; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setSortOrder($sortOrder) + { + $this->sortOrder = $sortOrder; + } + + public function getSortOrder() + { + return $this->sortOrder; + } +} + +class Google_Service_Dfareporting_UserProfile extends Google_Model +{ + public $accountId; + public $accountName; + public $etag; + public $kind; + public $profileId; + public $subAccountId; + public $subAccountName; + public $userName; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setAccountName($accountName) + { + $this->accountName = $accountName; + } + + public function getAccountName() + { + return $this->accountName; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setProfileId($profileId) + { + $this->profileId = $profileId; + } + + public function getProfileId() + { + return $this->profileId; + } + + public function setSubAccountId($subAccountId) + { + $this->subAccountId = $subAccountId; + } + + public function getSubAccountId() + { + return $this->subAccountId; + } + + public function setSubAccountName($subAccountName) + { + $this->subAccountName = $subAccountName; + } + + public function getSubAccountName() + { + return $this->subAccountName; + } + + public function setUserName($userName) + { + $this->userName = $userName; + } + + public function getUserName() + { + return $this->userName; + } +} + +class Google_Service_Dfareporting_UserProfileList extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Dfareporting_UserProfile'; + protected $itemsDataType = 'array'; + public $kind; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} diff --git a/oauth/Google/Service/Directory.php b/oauth/Google/Service/Directory.php new file mode 100644 index 0000000..53a7393 --- /dev/null +++ b/oauth/Google/Service/Directory.php @@ -0,0 +1,5295 @@ + + * The Admin SDK Directory API lets you view and manage enterprise resources such as users and groups, administrative notifications, security features, and more. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Directory extends Google_Service +{ + /** View and manage your Chrome OS devices' metadata. */ + const ADMIN_DIRECTORY_DEVICE_CHROMEOS = "https://www.googleapis.com/auth/admin.directory.device.chromeos"; + /** View your Chrome OS devices' metadata. */ + const ADMIN_DIRECTORY_DEVICE_CHROMEOS_READONLY = "https://www.googleapis.com/auth/admin.directory.device.chromeos.readonly"; + /** View and manage your mobile devices' metadata. */ + const ADMIN_DIRECTORY_DEVICE_MOBILE = "https://www.googleapis.com/auth/admin.directory.device.mobile"; + /** Manage your mobile devices by performing administrative tasks. */ + const ADMIN_DIRECTORY_DEVICE_MOBILE_ACTION = "https://www.googleapis.com/auth/admin.directory.device.mobile.action"; + /** View your mobile devices' metadata. */ + const ADMIN_DIRECTORY_DEVICE_MOBILE_READONLY = "https://www.googleapis.com/auth/admin.directory.device.mobile.readonly"; + /** View and manage the provisioning of groups on your domain. */ + const ADMIN_DIRECTORY_GROUP = "https://www.googleapis.com/auth/admin.directory.group"; + /** View and manage group subscriptions on your domain. */ + const ADMIN_DIRECTORY_GROUP_MEMBER = "https://www.googleapis.com/auth/admin.directory.group.member"; + /** View group subscriptions on your domain. */ + const ADMIN_DIRECTORY_GROUP_MEMBER_READONLY = "https://www.googleapis.com/auth/admin.directory.group.member.readonly"; + /** View groups on your domain. */ + const ADMIN_DIRECTORY_GROUP_READONLY = "https://www.googleapis.com/auth/admin.directory.group.readonly"; + /** View and manage notifications received on your domain. */ + const ADMIN_DIRECTORY_NOTIFICATIONS = "https://www.googleapis.com/auth/admin.directory.notifications"; + /** View and manage organization units on your domain. */ + const ADMIN_DIRECTORY_ORGUNIT = "https://www.googleapis.com/auth/admin.directory.orgunit"; + /** View organization units on your domain. */ + const ADMIN_DIRECTORY_ORGUNIT_READONLY = "https://www.googleapis.com/auth/admin.directory.orgunit.readonly"; + /** View and manage the provisioning of users on your domain. */ + const ADMIN_DIRECTORY_USER = "https://www.googleapis.com/auth/admin.directory.user"; + /** View and manage user aliases on your domain. */ + const ADMIN_DIRECTORY_USER_ALIAS = "https://www.googleapis.com/auth/admin.directory.user.alias"; + /** View user aliases on your domain. */ + const ADMIN_DIRECTORY_USER_ALIAS_READONLY = "https://www.googleapis.com/auth/admin.directory.user.alias.readonly"; + /** View users on your domain. */ + const ADMIN_DIRECTORY_USER_READONLY = "https://www.googleapis.com/auth/admin.directory.user.readonly"; + /** Manage data access permissions for users on your domain. */ + const ADMIN_DIRECTORY_USER_SECURITY = "https://www.googleapis.com/auth/admin.directory.user.security"; + + public $asps; + public $channels; + public $chromeosdevices; + public $groups; + public $groups_aliases; + public $members; + public $mobiledevices; + public $notifications; + public $orgunits; + public $tokens; + public $users; + public $users_aliases; + public $users_photos; + public $verificationCodes; + + + /** + * Constructs the internal representation of the Directory service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'admin/directory/v1/'; + $this->version = 'directory_v1'; + $this->serviceName = 'admin'; + + $this->asps = new Google_Service_Directory_Asps_Resource( + $this, + $this->serviceName, + 'asps', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'users/{userKey}/asps/{codeId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'codeId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'users/{userKey}/asps/{codeId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'codeId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'users/{userKey}/asps', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->channels = new Google_Service_Directory_Channels_Resource( + $this, + $this->serviceName, + 'channels', + array( + 'methods' => array( + 'stop' => array( + 'path' => '/admin/directory_v1/channels/stop', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->chromeosdevices = new Google_Service_Directory_Chromeosdevices_Resource( + $this, + $this->serviceName, + 'chromeosdevices', + array( + 'methods' => array( + 'get' => array( + 'path' => 'customer/{customerId}/devices/chromeos/{deviceId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'deviceId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'customer/{customerId}/devices/chromeos', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sortOrder' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'query' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'customer/{customerId}/devices/chromeos/{deviceId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'deviceId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'update' => array( + 'path' => 'customer/{customerId}/devices/chromeos/{deviceId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'deviceId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->groups = new Google_Service_Directory_Groups_Resource( + $this, + $this->serviceName, + 'groups', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'groups/{groupKey}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'groups/{groupKey}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'groups', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'list' => array( + 'path' => 'groups', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customer' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'domain' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'userKey' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'groups/{groupKey}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'groups/{groupKey}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->groups_aliases = new Google_Service_Directory_GroupsAliases_Resource( + $this, + $this->serviceName, + 'aliases', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'groups/{groupKey}/aliases/{alias}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'alias' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'groups/{groupKey}/aliases', + 'httpMethod' => 'POST', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'groups/{groupKey}/aliases', + 'httpMethod' => 'GET', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->members = new Google_Service_Directory_Members_Resource( + $this, + $this->serviceName, + 'members', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'groups/{groupKey}/members/{memberKey}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'memberKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'groups/{groupKey}/members/{memberKey}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'memberKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'groups/{groupKey}/members', + 'httpMethod' => 'POST', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'groups/{groupKey}/members', + 'httpMethod' => 'GET', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'roles' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'groups/{groupKey}/members/{memberKey}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'memberKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'groups/{groupKey}/members/{memberKey}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'groupKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'memberKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->mobiledevices = new Google_Service_Directory_Mobiledevices_Resource( + $this, + $this->serviceName, + 'mobiledevices', + array( + 'methods' => array( + 'action' => array( + 'path' => 'customer/{customerId}/devices/mobile/{resourceId}/action', + 'httpMethod' => 'POST', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => 'customer/{customerId}/devices/mobile/{resourceId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'customer/{customerId}/devices/mobile/{resourceId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'customer/{customerId}/devices/mobile', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sortOrder' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'query' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->notifications = new Google_Service_Directory_Notifications_Resource( + $this, + $this->serviceName, + 'notifications', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'customer/{customer}/notifications/{notificationId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'customer' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'notificationId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'customer/{customer}/notifications/{notificationId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customer' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'notificationId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'customer/{customer}/notifications', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customer' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'customer/{customer}/notifications/{notificationId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'customer' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'notificationId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'customer/{customer}/notifications/{notificationId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'customer' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'notificationId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->orgunits = new Google_Service_Directory_Orgunits_Resource( + $this, + $this->serviceName, + 'orgunits', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'customer/{customerId}/orgunits{/orgUnitPath*}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orgUnitPath' => array( + 'location' => 'path', + 'type' => 'string', + 'repeated' => true, + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'customer/{customerId}/orgunits{/orgUnitPath*}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orgUnitPath' => array( + 'location' => 'path', + 'type' => 'string', + 'repeated' => true, + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'customer/{customerId}/orgunits', + 'httpMethod' => 'POST', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'customer/{customerId}/orgunits', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'type' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'orgUnitPath' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'customer/{customerId}/orgunits{/orgUnitPath*}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orgUnitPath' => array( + 'location' => 'path', + 'type' => 'string', + 'repeated' => true, + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'customer/{customerId}/orgunits{/orgUnitPath*}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orgUnitPath' => array( + 'location' => 'path', + 'type' => 'string', + 'repeated' => true, + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->tokens = new Google_Service_Directory_Tokens_Resource( + $this, + $this->serviceName, + 'tokens', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'users/{userKey}/tokens/{clientId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'clientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'users/{userKey}/tokens/{clientId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'clientId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'users/{userKey}/tokens', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->users = new Google_Service_Directory_Users_Resource( + $this, + $this->serviceName, + 'users', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'users/{userKey}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'users/{userKey}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'users', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'list' => array( + 'path' => 'users', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customer' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'domain' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showDeleted' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sortOrder' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'query' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'event' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'makeAdmin' => array( + 'path' => 'users/{userKey}/makeAdmin', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => 'users/{userKey}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'undelete' => array( + 'path' => 'users/{userKey}/undelete', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'users/{userKey}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'watch' => array( + 'path' => 'users/watch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'customer' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'domain' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showDeleted' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sortOrder' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'query' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'event' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->users_aliases = new Google_Service_Directory_UsersAliases_Resource( + $this, + $this->serviceName, + 'aliases', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'users/{userKey}/aliases/{alias}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'alias' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'users/{userKey}/aliases', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'users/{userKey}/aliases', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'event' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'watch' => array( + 'path' => 'users/{userKey}/aliases/watch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'event' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->users_photos = new Google_Service_Directory_UsersPhotos_Resource( + $this, + $this->serviceName, + 'photos', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'users/{userKey}/photos/thumbnail', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'users/{userKey}/photos/thumbnail', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => 'users/{userKey}/photos/thumbnail', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'users/{userKey}/photos/thumbnail', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->verificationCodes = new Google_Service_Directory_VerificationCodes_Resource( + $this, + $this->serviceName, + 'verificationCodes', + array( + 'methods' => array( + 'generate' => array( + 'path' => 'users/{userKey}/verificationCodes/generate', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'invalidate' => array( + 'path' => 'users/{userKey}/verificationCodes/invalidate', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'users/{userKey}/verificationCodes', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "asps" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $asps = $adminService->asps; + * + */ +class Google_Service_Directory_Asps_Resource extends Google_Service_Resource +{ + + /** + * Delete an ASP issued by a user. (asps.delete) + * + * @param string $userKey + * Identifies the user in the API request. The value can be the user's primary email address, alias + * email address, or unique user ID. + * @param int $codeId + * The unique ID of the ASP to be deleted. + * @param array $optParams Optional parameters. + */ + public function delete($userKey, $codeId, $optParams = array()) + { + $params = array('userKey' => $userKey, 'codeId' => $codeId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Get information about an ASP issued by a user. (asps.get) + * + * @param string $userKey + * Identifies the user in the API request. The value can be the user's primary email address, alias + * email address, or unique user ID. + * @param int $codeId + * The unique ID of the ASP. + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Asp + */ + public function get($userKey, $codeId, $optParams = array()) + { + $params = array('userKey' => $userKey, 'codeId' => $codeId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_Asp"); + } + /** + * List the ASPs issued by a user. (asps.listAsps) + * + * @param string $userKey + * Identifies the user in the API request. The value can be the user's primary email address, alias + * email address, or unique user ID. + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Asps + */ + public function listAsps($userKey, $optParams = array()) + { + $params = array('userKey' => $userKey); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_Asps"); + } +} + +/** + * The "channels" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $channels = $adminService->channels; + * + */ +class Google_Service_Directory_Channels_Resource extends Google_Service_Resource +{ + + /** + * Stop watching resources through this channel (channels.stop) + * + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + */ + public function stop(Google_Service_Directory_Channel $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('stop', array($params)); + } +} + +/** + * The "chromeosdevices" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $chromeosdevices = $adminService->chromeosdevices; + * + */ +class Google_Service_Directory_Chromeosdevices_Resource extends Google_Service_Resource +{ + + /** + * Retrieve Chrome OS Device (chromeosdevices.get) + * + * @param string $customerId + * Immutable id of the Google Apps account + * @param string $deviceId + * Immutable id of Chrome OS Device + * @param array $optParams Optional parameters. + * + * @opt_param string projection + * Restrict information returned to a set of selected fields. + * @return Google_Service_Directory_ChromeOsDevice + */ + public function get($customerId, $deviceId, $optParams = array()) + { + $params = array('customerId' => $customerId, 'deviceId' => $deviceId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_ChromeOsDevice"); + } + /** + * Retrieve all Chrome OS Devices of a customer (paginated) + * (chromeosdevices.listChromeosdevices) + * + * @param string $customerId + * Immutable id of the Google Apps account + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy + * Column to use for sorting results + * @opt_param string projection + * Restrict information returned to a set of selected fields. + * @opt_param int maxResults + * Maximum number of results to return. Default is 100 + * @opt_param string pageToken + * Token to specify next page in the list + * @opt_param string sortOrder + * Whether to return results in ascending or descending order. Only of use when orderBy is also + * used + * @opt_param string query + * Search string in the format given at + * http://support.google.com/chromeos/a/bin/answer.py?hl=en=1698333 + * @return Google_Service_Directory_ChromeOsDevices + */ + public function listChromeosdevices($customerId, $optParams = array()) + { + $params = array('customerId' => $customerId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_ChromeOsDevices"); + } + /** + * Update Chrome OS Device. This method supports patch semantics. + * (chromeosdevices.patch) + * + * @param string $customerId + * Immutable id of the Google Apps account + * @param string $deviceId + * Immutable id of Chrome OS Device + * @param Google_ChromeOsDevice $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string projection + * Restrict information returned to a set of selected fields. + * @return Google_Service_Directory_ChromeOsDevice + */ + public function patch($customerId, $deviceId, Google_Service_Directory_ChromeOsDevice $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'deviceId' => $deviceId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Directory_ChromeOsDevice"); + } + /** + * Update Chrome OS Device (chromeosdevices.update) + * + * @param string $customerId + * Immutable id of the Google Apps account + * @param string $deviceId + * Immutable id of Chrome OS Device + * @param Google_ChromeOsDevice $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string projection + * Restrict information returned to a set of selected fields. + * @return Google_Service_Directory_ChromeOsDevice + */ + public function update($customerId, $deviceId, Google_Service_Directory_ChromeOsDevice $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'deviceId' => $deviceId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Directory_ChromeOsDevice"); + } +} + +/** + * The "groups" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $groups = $adminService->groups; + * + */ +class Google_Service_Directory_Groups_Resource extends Google_Service_Resource +{ + + /** + * Delete Group (groups.delete) + * + * @param string $groupKey + * Email or immutable Id of the group + * @param array $optParams Optional parameters. + */ + public function delete($groupKey, $optParams = array()) + { + $params = array('groupKey' => $groupKey); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieve Group (groups.get) + * + * @param string $groupKey + * Email or immutable Id of the group + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Group + */ + public function get($groupKey, $optParams = array()) + { + $params = array('groupKey' => $groupKey); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_Group"); + } + /** + * Create Group (groups.insert) + * + * @param Google_Group $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Group + */ + public function insert(Google_Service_Directory_Group $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Directory_Group"); + } + /** + * Retrieve all groups in a domain (paginated) (groups.listGroups) + * + * @param array $optParams Optional parameters. + * + * @opt_param string customer + * Immutable id of the Google Apps account. In case of multi-domain, to fetch all groups for a + * customer, fill this field instead of domain. + * @opt_param string pageToken + * Token to specify next page in the list + * @opt_param string domain + * Name of the domain. Fill this field to get groups from only this domain. To return all groups in + * a multi-domain fill customer field instead. + * @opt_param int maxResults + * Maximum number of results to return. Default is 200 + * @opt_param string userKey + * Email or immutable Id of the user if only those groups are to be listed, the given user is a + * member of. If Id, it should match with id of user object + * @return Google_Service_Directory_Groups + */ + public function listGroups($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_Groups"); + } + /** + * Update Group. This method supports patch semantics. (groups.patch) + * + * @param string $groupKey + * Email or immutable Id of the group. If Id, it should match with id of group object + * @param Google_Group $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Group + */ + public function patch($groupKey, Google_Service_Directory_Group $postBody, $optParams = array()) + { + $params = array('groupKey' => $groupKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Directory_Group"); + } + /** + * Update Group (groups.update) + * + * @param string $groupKey + * Email or immutable Id of the group. If Id, it should match with id of group object + * @param Google_Group $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Group + */ + public function update($groupKey, Google_Service_Directory_Group $postBody, $optParams = array()) + { + $params = array('groupKey' => $groupKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Directory_Group"); + } +} + +/** + * The "aliases" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $aliases = $adminService->aliases; + * + */ +class Google_Service_Directory_GroupsAliases_Resource extends Google_Service_Resource +{ + + /** + * Remove a alias for the group (aliases.delete) + * + * @param string $groupKey + * Email or immutable Id of the group + * @param string $alias + * The alias to be removed + * @param array $optParams Optional parameters. + */ + public function delete($groupKey, $alias, $optParams = array()) + { + $params = array('groupKey' => $groupKey, 'alias' => $alias); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Add a alias for the group (aliases.insert) + * + * @param string $groupKey + * Email or immutable Id of the group + * @param Google_Alias $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Alias + */ + public function insert($groupKey, Google_Service_Directory_Alias $postBody, $optParams = array()) + { + $params = array('groupKey' => $groupKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Directory_Alias"); + } + /** + * List all aliases for a group (aliases.listGroupsAliases) + * + * @param string $groupKey + * Email or immutable Id of the group + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Aliases + */ + public function listGroupsAliases($groupKey, $optParams = array()) + { + $params = array('groupKey' => $groupKey); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_Aliases"); + } +} + +/** + * The "members" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $members = $adminService->members; + * + */ +class Google_Service_Directory_Members_Resource extends Google_Service_Resource +{ + + /** + * Remove membership. (members.delete) + * + * @param string $groupKey + * Email or immutable Id of the group + * @param string $memberKey + * Email or immutable Id of the member + * @param array $optParams Optional parameters. + */ + public function delete($groupKey, $memberKey, $optParams = array()) + { + $params = array('groupKey' => $groupKey, 'memberKey' => $memberKey); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieve Group Member (members.get) + * + * @param string $groupKey + * Email or immutable Id of the group + * @param string $memberKey + * Email or immutable Id of the member + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Member + */ + public function get($groupKey, $memberKey, $optParams = array()) + { + $params = array('groupKey' => $groupKey, 'memberKey' => $memberKey); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_Member"); + } + /** + * Add user to the specified group. (members.insert) + * + * @param string $groupKey + * Email or immutable Id of the group + * @param Google_Member $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Member + */ + public function insert($groupKey, Google_Service_Directory_Member $postBody, $optParams = array()) + { + $params = array('groupKey' => $groupKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Directory_Member"); + } + /** + * Retrieve all members in a group (paginated) (members.listMembers) + * + * @param string $groupKey + * Email or immutable Id of the group + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Token to specify next page in the list + * @opt_param string roles + * Comma separated role values to filter list results on. + * @opt_param int maxResults + * Maximum number of results to return. Default is 200 + * @return Google_Service_Directory_Members + */ + public function listMembers($groupKey, $optParams = array()) + { + $params = array('groupKey' => $groupKey); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_Members"); + } + /** + * Update membership of a user in the specified group. This method supports + * patch semantics. (members.patch) + * + * @param string $groupKey + * Email or immutable Id of the group. If Id, it should match with id of group object + * @param string $memberKey + * Email or immutable Id of the user. If Id, it should match with id of member object + * @param Google_Member $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Member + */ + public function patch($groupKey, $memberKey, Google_Service_Directory_Member $postBody, $optParams = array()) + { + $params = array('groupKey' => $groupKey, 'memberKey' => $memberKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Directory_Member"); + } + /** + * Update membership of a user in the specified group. (members.update) + * + * @param string $groupKey + * Email or immutable Id of the group. If Id, it should match with id of group object + * @param string $memberKey + * Email or immutable Id of the user. If Id, it should match with id of member object + * @param Google_Member $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Member + */ + public function update($groupKey, $memberKey, Google_Service_Directory_Member $postBody, $optParams = array()) + { + $params = array('groupKey' => $groupKey, 'memberKey' => $memberKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Directory_Member"); + } +} + +/** + * The "mobiledevices" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $mobiledevices = $adminService->mobiledevices; + * + */ +class Google_Service_Directory_Mobiledevices_Resource extends Google_Service_Resource +{ + + /** + * Take action on Mobile Device (mobiledevices.action) + * + * @param string $customerId + * Immutable id of the Google Apps account + * @param string $resourceId + * Immutable id of Mobile Device + * @param Google_MobileDeviceAction $postBody + * @param array $optParams Optional parameters. + */ + public function action($customerId, $resourceId, Google_Service_Directory_MobileDeviceAction $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'resourceId' => $resourceId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('action', array($params)); + } + /** + * Delete Mobile Device (mobiledevices.delete) + * + * @param string $customerId + * Immutable id of the Google Apps account + * @param string $resourceId + * Immutable id of Mobile Device + * @param array $optParams Optional parameters. + */ + public function delete($customerId, $resourceId, $optParams = array()) + { + $params = array('customerId' => $customerId, 'resourceId' => $resourceId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieve Mobile Device (mobiledevices.get) + * + * @param string $customerId + * Immutable id of the Google Apps account + * @param string $resourceId + * Immutable id of Mobile Device + * @param array $optParams Optional parameters. + * + * @opt_param string projection + * Restrict information returned to a set of selected fields. + * @return Google_Service_Directory_MobileDevice + */ + public function get($customerId, $resourceId, $optParams = array()) + { + $params = array('customerId' => $customerId, 'resourceId' => $resourceId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_MobileDevice"); + } + /** + * Retrieve all Mobile Devices of a customer (paginated) + * (mobiledevices.listMobiledevices) + * + * @param string $customerId + * Immutable id of the Google Apps account + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy + * Column to use for sorting results + * @opt_param string projection + * Restrict information returned to a set of selected fields. + * @opt_param int maxResults + * Maximum number of results to return. Default is 100 + * @opt_param string pageToken + * Token to specify next page in the list + * @opt_param string sortOrder + * Whether to return results in ascending or descending order. Only of use when orderBy is also + * used + * @opt_param string query + * Search string in the format given at + * http://support.google.com/a/bin/answer.py?hl=en=1408863#search + * @return Google_Service_Directory_MobileDevices + */ + public function listMobiledevices($customerId, $optParams = array()) + { + $params = array('customerId' => $customerId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_MobileDevices"); + } +} + +/** + * The "notifications" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $notifications = $adminService->notifications; + * + */ +class Google_Service_Directory_Notifications_Resource extends Google_Service_Resource +{ + + /** + * Deletes a notification (notifications.delete) + * + * @param string $customer + * The unique ID for the customer's Google account. The customerId is also returned as part of the + * Users resource. + * @param string $notificationId + * The unique ID of the notification. + * @param array $optParams Optional parameters. + */ + public function delete($customer, $notificationId, $optParams = array()) + { + $params = array('customer' => $customer, 'notificationId' => $notificationId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves a notification. (notifications.get) + * + * @param string $customer + * The unique ID for the customer's Google account. The customerId is also returned as part of the + * Users resource. + * @param string $notificationId + * The unique ID of the notification. + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Notification + */ + public function get($customer, $notificationId, $optParams = array()) + { + $params = array('customer' => $customer, 'notificationId' => $notificationId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_Notification"); + } + /** + * Retrieves a list of notifications. (notifications.listNotifications) + * + * @param string $customer + * The unique ID for the customer's Google account. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The token to specify the page of results to retrieve. + * @opt_param string maxResults + * Maximum number of notifications to return per page. The default is 100. + * @opt_param string language + * The ISO 639-1 code of the language notifications are returned in. The default is English (en). + * @return Google_Service_Directory_Notifications + */ + public function listNotifications($customer, $optParams = array()) + { + $params = array('customer' => $customer); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_Notifications"); + } + /** + * Updates a notification. This method supports patch semantics. + * (notifications.patch) + * + * @param string $customer + * The unique ID for the customer's Google account. + * @param string $notificationId + * The unique ID of the notification. + * @param Google_Notification $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Notification + */ + public function patch($customer, $notificationId, Google_Service_Directory_Notification $postBody, $optParams = array()) + { + $params = array('customer' => $customer, 'notificationId' => $notificationId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Directory_Notification"); + } + /** + * Updates a notification. (notifications.update) + * + * @param string $customer + * The unique ID for the customer's Google account. + * @param string $notificationId + * The unique ID of the notification. + * @param Google_Notification $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Notification + */ + public function update($customer, $notificationId, Google_Service_Directory_Notification $postBody, $optParams = array()) + { + $params = array('customer' => $customer, 'notificationId' => $notificationId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Directory_Notification"); + } +} + +/** + * The "orgunits" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $orgunits = $adminService->orgunits; + * + */ +class Google_Service_Directory_Orgunits_Resource extends Google_Service_Resource +{ + + /** + * Remove Organization Unit (orgunits.delete) + * + * @param string $customerId + * Immutable id of the Google Apps account + * @param string $orgUnitPath + * Full path of the organization unit + * @param array $optParams Optional parameters. + */ + public function delete($customerId, $orgUnitPath, $optParams = array()) + { + $params = array('customerId' => $customerId, 'orgUnitPath' => $orgUnitPath); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieve Organization Unit (orgunits.get) + * + * @param string $customerId + * Immutable id of the Google Apps account + * @param string $orgUnitPath + * Full path of the organization unit + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_OrgUnit + */ + public function get($customerId, $orgUnitPath, $optParams = array()) + { + $params = array('customerId' => $customerId, 'orgUnitPath' => $orgUnitPath); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_OrgUnit"); + } + /** + * Add Organization Unit (orgunits.insert) + * + * @param string $customerId + * Immutable id of the Google Apps account + * @param Google_OrgUnit $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_OrgUnit + */ + public function insert($customerId, Google_Service_Directory_OrgUnit $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Directory_OrgUnit"); + } + /** + * Retrieve all Organization Units (orgunits.listOrgunits) + * + * @param string $customerId + * Immutable id of the Google Apps account + * @param array $optParams Optional parameters. + * + * @opt_param string type + * Whether to return all sub-organizations or just immediate children + * @opt_param string orgUnitPath + * the URL-encoded organization unit + * @return Google_Service_Directory_OrgUnits + */ + public function listOrgunits($customerId, $optParams = array()) + { + $params = array('customerId' => $customerId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_OrgUnits"); + } + /** + * Update Organization Unit. This method supports patch semantics. + * (orgunits.patch) + * + * @param string $customerId + * Immutable id of the Google Apps account + * @param string $orgUnitPath + * Full path of the organization unit + * @param Google_OrgUnit $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_OrgUnit + */ + public function patch($customerId, $orgUnitPath, Google_Service_Directory_OrgUnit $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'orgUnitPath' => $orgUnitPath, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Directory_OrgUnit"); + } + /** + * Update Organization Unit (orgunits.update) + * + * @param string $customerId + * Immutable id of the Google Apps account + * @param string $orgUnitPath + * Full path of the organization unit + * @param Google_OrgUnit $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_OrgUnit + */ + public function update($customerId, $orgUnitPath, Google_Service_Directory_OrgUnit $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'orgUnitPath' => $orgUnitPath, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Directory_OrgUnit"); + } +} + +/** + * The "tokens" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $tokens = $adminService->tokens; + * + */ +class Google_Service_Directory_Tokens_Resource extends Google_Service_Resource +{ + + /** + * Delete all access tokens issued by a user for an application. (tokens.delete) + * + * @param string $userKey + * Identifies the user in the API request. The value can be the user's primary email address, alias + * email address, or unique user ID. + * @param string $clientId + * The Client ID of the application the token is issued to. + * @param array $optParams Optional parameters. + */ + public function delete($userKey, $clientId, $optParams = array()) + { + $params = array('userKey' => $userKey, 'clientId' => $clientId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Get information about an access token issued by a user. (tokens.get) + * + * @param string $userKey + * Identifies the user in the API request. The value can be the user's primary email address, alias + * email address, or unique user ID. + * @param string $clientId + * The Client ID of the application the token is issued to. + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Token + */ + public function get($userKey, $clientId, $optParams = array()) + { + $params = array('userKey' => $userKey, 'clientId' => $clientId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_Token"); + } + /** + * Returns the set of tokens specified user has issued to 3rd party + * applications. (tokens.listTokens) + * + * @param string $userKey + * Identifies the user in the API request. The value can be the user's primary email address, alias + * email address, or unique user ID. + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Tokens + */ + public function listTokens($userKey, $optParams = array()) + { + $params = array('userKey' => $userKey); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_Tokens"); + } +} + +/** + * The "users" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $users = $adminService->users; + * + */ +class Google_Service_Directory_Users_Resource extends Google_Service_Resource +{ + + /** + * Delete user (users.delete) + * + * @param string $userKey + * Email or immutable Id of the user + * @param array $optParams Optional parameters. + */ + public function delete($userKey, $optParams = array()) + { + $params = array('userKey' => $userKey); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * retrieve user (users.get) + * + * @param string $userKey + * Email or immutable Id of the user + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_User + */ + public function get($userKey, $optParams = array()) + { + $params = array('userKey' => $userKey); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_User"); + } + /** + * create user. (users.insert) + * + * @param Google_User $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_User + */ + public function insert(Google_Service_Directory_User $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Directory_User"); + } + /** + * Retrieve either deleted users or all users in a domain (paginated) + * (users.listUsers) + * + * @param array $optParams Optional parameters. + * + * @opt_param string customer + * Immutable id of the Google Apps account. In case of multi-domain, to fetch all users for a + * customer, fill this field instead of domain. + * @opt_param string orderBy + * Column to use for sorting results + * @opt_param string domain + * Name of the domain. Fill this field to get users from only this domain. To return all users in a + * multi-domain fill customer field instead. + * @opt_param string showDeleted + * If set to true retrieves the list of deleted users. Default is false + * @opt_param int maxResults + * Maximum number of results to return. Default is 100. Max allowed is 500 + * @opt_param string pageToken + * Token to specify next page in the list + * @opt_param string sortOrder + * Whether to return results in ascending or descending order. + * @opt_param string query + * Query string search. Should be of the form "" where field can be any of supported fields, + * operators can be one of '=' for exact match or ':' for prefix match. For prefix match, the value + * should always be followed by a *. + * @opt_param string event + * Event on which subscription is intended (if subscribing) + * @return Google_Service_Directory_Users + */ + public function listUsers($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_Users"); + } + /** + * change admin status of a user (users.makeAdmin) + * + * @param string $userKey + * Email or immutable Id of the user as admin + * @param Google_UserMakeAdmin $postBody + * @param array $optParams Optional parameters. + */ + public function makeAdmin($userKey, Google_Service_Directory_UserMakeAdmin $postBody, $optParams = array()) + { + $params = array('userKey' => $userKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('makeAdmin', array($params)); + } + /** + * update user. This method supports patch semantics. (users.patch) + * + * @param string $userKey + * Email or immutable Id of the user. If Id, it should match with id of user object + * @param Google_User $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_User + */ + public function patch($userKey, Google_Service_Directory_User $postBody, $optParams = array()) + { + $params = array('userKey' => $userKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Directory_User"); + } + /** + * Undelete a deleted user (users.undelete) + * + * @param string $userKey + * The immutable id of the user + * @param Google_UserUndelete $postBody + * @param array $optParams Optional parameters. + */ + public function undelete($userKey, Google_Service_Directory_UserUndelete $postBody, $optParams = array()) + { + $params = array('userKey' => $userKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('undelete', array($params)); + } + /** + * update user (users.update) + * + * @param string $userKey + * Email or immutable Id of the user. If Id, it should match with id of user object + * @param Google_User $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_User + */ + public function update($userKey, Google_Service_Directory_User $postBody, $optParams = array()) + { + $params = array('userKey' => $userKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Directory_User"); + } + /** + * Watch for changes in users list (users.watch) + * + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string customer + * Immutable id of the Google Apps account. In case of multi-domain, to fetch all users for a + * customer, fill this field instead of domain. + * @opt_param string orderBy + * Column to use for sorting results + * @opt_param string domain + * Name of the domain. Fill this field to get users from only this domain. To return all users in a + * multi-domain fill customer field instead. + * @opt_param string showDeleted + * If set to true retrieves the list of deleted users. Default is false + * @opt_param int maxResults + * Maximum number of results to return. Default is 100. Max allowed is 500 + * @opt_param string pageToken + * Token to specify next page in the list + * @opt_param string sortOrder + * Whether to return results in ascending or descending order. + * @opt_param string query + * Query string search. Should be of the form "" where field can be any of supported fields, + * operators can be one of '=' for exact match or ':' for prefix match. For prefix match, the value + * should always be followed by a *. + * @opt_param string event + * Event on which subscription is intended (if subscribing) + * @return Google_Service_Directory_Channel + */ + public function watch(Google_Service_Directory_Channel $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('watch', array($params), "Google_Service_Directory_Channel"); + } +} + +/** + * The "aliases" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $aliases = $adminService->aliases; + * + */ +class Google_Service_Directory_UsersAliases_Resource extends Google_Service_Resource +{ + + /** + * Remove a alias for the user (aliases.delete) + * + * @param string $userKey + * Email or immutable Id of the user + * @param string $alias + * The alias to be removed + * @param array $optParams Optional parameters. + */ + public function delete($userKey, $alias, $optParams = array()) + { + $params = array('userKey' => $userKey, 'alias' => $alias); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Add a alias for the user (aliases.insert) + * + * @param string $userKey + * Email or immutable Id of the user + * @param Google_Alias $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_Alias + */ + public function insert($userKey, Google_Service_Directory_Alias $postBody, $optParams = array()) + { + $params = array('userKey' => $userKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Directory_Alias"); + } + /** + * List all aliases for a user (aliases.listUsersAliases) + * + * @param string $userKey + * Email or immutable Id of the user + * @param array $optParams Optional parameters. + * + * @opt_param string event + * Event on which subscription is intended (if subscribing) + * @return Google_Service_Directory_Aliases + */ + public function listUsersAliases($userKey, $optParams = array()) + { + $params = array('userKey' => $userKey); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_Aliases"); + } + /** + * Watch for changes in user aliases list (aliases.watch) + * + * @param string $userKey + * Email or immutable Id of the user + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string event + * Event on which subscription is intended (if subscribing) + * @return Google_Service_Directory_Channel + */ + public function watch($userKey, Google_Service_Directory_Channel $postBody, $optParams = array()) + { + $params = array('userKey' => $userKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('watch', array($params), "Google_Service_Directory_Channel"); + } +} +/** + * The "photos" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $photos = $adminService->photos; + * + */ +class Google_Service_Directory_UsersPhotos_Resource extends Google_Service_Resource +{ + + /** + * Remove photos for the user (photos.delete) + * + * @param string $userKey + * Email or immutable Id of the user + * @param array $optParams Optional parameters. + */ + public function delete($userKey, $optParams = array()) + { + $params = array('userKey' => $userKey); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieve photo of a user (photos.get) + * + * @param string $userKey + * Email or immutable Id of the user + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_UserPhoto + */ + public function get($userKey, $optParams = array()) + { + $params = array('userKey' => $userKey); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Directory_UserPhoto"); + } + /** + * Add a photo for the user. This method supports patch semantics. + * (photos.patch) + * + * @param string $userKey + * Email or immutable Id of the user + * @param Google_UserPhoto $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_UserPhoto + */ + public function patch($userKey, Google_Service_Directory_UserPhoto $postBody, $optParams = array()) + { + $params = array('userKey' => $userKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Directory_UserPhoto"); + } + /** + * Add a photo for the user (photos.update) + * + * @param string $userKey + * Email or immutable Id of the user + * @param Google_UserPhoto $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_UserPhoto + */ + public function update($userKey, Google_Service_Directory_UserPhoto $postBody, $optParams = array()) + { + $params = array('userKey' => $userKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Directory_UserPhoto"); + } +} + +/** + * The "verificationCodes" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Directory(...); + * $verificationCodes = $adminService->verificationCodes; + * + */ +class Google_Service_Directory_VerificationCodes_Resource extends Google_Service_Resource +{ + + /** + * Generate new backup verification codes for the user. + * (verificationCodes.generate) + * + * @param string $userKey + * Email or immutable Id of the user + * @param array $optParams Optional parameters. + */ + public function generate($userKey, $optParams = array()) + { + $params = array('userKey' => $userKey); + $params = array_merge($params, $optParams); + return $this->call('generate', array($params)); + } + /** + * Invalidate the current backup verification codes for the user. + * (verificationCodes.invalidate) + * + * @param string $userKey + * Email or immutable Id of the user + * @param array $optParams Optional parameters. + */ + public function invalidate($userKey, $optParams = array()) + { + $params = array('userKey' => $userKey); + $params = array_merge($params, $optParams); + return $this->call('invalidate', array($params)); + } + /** + * Returns the current set of valid backup verification codes for the specified + * user. (verificationCodes.listVerificationCodes) + * + * @param string $userKey + * Identifies the user in the API request. The value can be the user's primary email address, alias + * email address, or unique user ID. + * @param array $optParams Optional parameters. + * @return Google_Service_Directory_VerificationCodes + */ + public function listVerificationCodes($userKey, $optParams = array()) + { + $params = array('userKey' => $userKey); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Directory_VerificationCodes"); + } +} + + + + +class Google_Service_Directory_Alias extends Google_Model +{ + public $alias; + public $etag; + public $id; + public $kind; + public $primaryEmail; + + public function setAlias($alias) + { + $this->alias = $alias; + } + + public function getAlias() + { + return $this->alias; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPrimaryEmail($primaryEmail) + { + $this->primaryEmail = $primaryEmail; + } + + public function getPrimaryEmail() + { + return $this->primaryEmail; + } +} + +class Google_Service_Directory_Aliases extends Google_Collection +{ + protected $aliasesType = 'Google_Service_Directory_Alias'; + protected $aliasesDataType = 'array'; + public $etag; + public $kind; + + public function setAliases($aliases) + { + $this->aliases = $aliases; + } + + public function getAliases() + { + return $this->aliases; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Directory_Asp extends Google_Model +{ + public $codeId; + public $creationTime; + public $etag; + public $kind; + public $lastTimeUsed; + public $name; + public $userKey; + + public function setCodeId($codeId) + { + $this->codeId = $codeId; + } + + public function getCodeId() + { + return $this->codeId; + } + + public function setCreationTime($creationTime) + { + $this->creationTime = $creationTime; + } + + public function getCreationTime() + { + return $this->creationTime; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastTimeUsed($lastTimeUsed) + { + $this->lastTimeUsed = $lastTimeUsed; + } + + public function getLastTimeUsed() + { + return $this->lastTimeUsed; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setUserKey($userKey) + { + $this->userKey = $userKey; + } + + public function getUserKey() + { + return $this->userKey; + } +} + +class Google_Service_Directory_Asps extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Directory_Asp'; + protected $itemsDataType = 'array'; + public $kind; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Directory_Channel extends Google_Model +{ + public $address; + public $expiration; + public $id; + public $kind; + public $params; + public $payload; + public $resourceId; + public $resourceUri; + public $token; + public $type; + + public function setAddress($address) + { + $this->address = $address; + } + + public function getAddress() + { + return $this->address; + } + + public function setExpiration($expiration) + { + $this->expiration = $expiration; + } + + public function getExpiration() + { + return $this->expiration; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setParams($params) + { + $this->params = $params; + } + + public function getParams() + { + return $this->params; + } + + public function setPayload($payload) + { + $this->payload = $payload; + } + + public function getPayload() + { + return $this->payload; + } + + public function setResourceId($resourceId) + { + $this->resourceId = $resourceId; + } + + public function getResourceId() + { + return $this->resourceId; + } + + public function setResourceUri($resourceUri) + { + $this->resourceUri = $resourceUri; + } + + public function getResourceUri() + { + return $this->resourceUri; + } + + public function setToken($token) + { + $this->token = $token; + } + + public function getToken() + { + return $this->token; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Directory_ChannelParams extends Google_Model +{ + +} + +class Google_Service_Directory_ChromeOsDevice extends Google_Collection +{ + public $annotatedLocation; + public $annotatedUser; + public $bootMode; + public $deviceId; + public $etag; + public $ethernetMacAddress; + public $firmwareVersion; + public $kind; + public $lastEnrollmentTime; + public $lastSync; + public $macAddress; + public $meid; + public $model; + public $notes; + public $orderNumber; + public $orgUnitPath; + public $osVersion; + public $platformVersion; + protected $recentUsersType = 'Google_Service_Directory_ChromeOsDeviceRecentUsers'; + protected $recentUsersDataType = 'array'; + public $serialNumber; + public $status; + public $supportEndDate; + public $willAutoRenew; + + public function setAnnotatedLocation($annotatedLocation) + { + $this->annotatedLocation = $annotatedLocation; + } + + public function getAnnotatedLocation() + { + return $this->annotatedLocation; + } + + public function setAnnotatedUser($annotatedUser) + { + $this->annotatedUser = $annotatedUser; + } + + public function getAnnotatedUser() + { + return $this->annotatedUser; + } + + public function setBootMode($bootMode) + { + $this->bootMode = $bootMode; + } + + public function getBootMode() + { + return $this->bootMode; + } + + public function setDeviceId($deviceId) + { + $this->deviceId = $deviceId; + } + + public function getDeviceId() + { + return $this->deviceId; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setEthernetMacAddress($ethernetMacAddress) + { + $this->ethernetMacAddress = $ethernetMacAddress; + } + + public function getEthernetMacAddress() + { + return $this->ethernetMacAddress; + } + + public function setFirmwareVersion($firmwareVersion) + { + $this->firmwareVersion = $firmwareVersion; + } + + public function getFirmwareVersion() + { + return $this->firmwareVersion; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastEnrollmentTime($lastEnrollmentTime) + { + $this->lastEnrollmentTime = $lastEnrollmentTime; + } + + public function getLastEnrollmentTime() + { + return $this->lastEnrollmentTime; + } + + public function setLastSync($lastSync) + { + $this->lastSync = $lastSync; + } + + public function getLastSync() + { + return $this->lastSync; + } + + public function setMacAddress($macAddress) + { + $this->macAddress = $macAddress; + } + + public function getMacAddress() + { + return $this->macAddress; + } + + public function setMeid($meid) + { + $this->meid = $meid; + } + + public function getMeid() + { + return $this->meid; + } + + public function setModel($model) + { + $this->model = $model; + } + + public function getModel() + { + return $this->model; + } + + public function setNotes($notes) + { + $this->notes = $notes; + } + + public function getNotes() + { + return $this->notes; + } + + public function setOrderNumber($orderNumber) + { + $this->orderNumber = $orderNumber; + } + + public function getOrderNumber() + { + return $this->orderNumber; + } + + public function setOrgUnitPath($orgUnitPath) + { + $this->orgUnitPath = $orgUnitPath; + } + + public function getOrgUnitPath() + { + return $this->orgUnitPath; + } + + public function setOsVersion($osVersion) + { + $this->osVersion = $osVersion; + } + + public function getOsVersion() + { + return $this->osVersion; + } + + public function setPlatformVersion($platformVersion) + { + $this->platformVersion = $platformVersion; + } + + public function getPlatformVersion() + { + return $this->platformVersion; + } + + public function setRecentUsers($recentUsers) + { + $this->recentUsers = $recentUsers; + } + + public function getRecentUsers() + { + return $this->recentUsers; + } + + public function setSerialNumber($serialNumber) + { + $this->serialNumber = $serialNumber; + } + + public function getSerialNumber() + { + return $this->serialNumber; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setSupportEndDate($supportEndDate) + { + $this->supportEndDate = $supportEndDate; + } + + public function getSupportEndDate() + { + return $this->supportEndDate; + } + + public function setWillAutoRenew($willAutoRenew) + { + $this->willAutoRenew = $willAutoRenew; + } + + public function getWillAutoRenew() + { + return $this->willAutoRenew; + } +} + +class Google_Service_Directory_ChromeOsDeviceRecentUsers extends Google_Model +{ + public $email; + public $type; + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Directory_ChromeOsDevices extends Google_Collection +{ + protected $chromeosdevicesType = 'Google_Service_Directory_ChromeOsDevice'; + protected $chromeosdevicesDataType = 'array'; + public $etag; + public $kind; + public $nextPageToken; + + public function setChromeosdevices($chromeosdevices) + { + $this->chromeosdevices = $chromeosdevices; + } + + public function getChromeosdevices() + { + return $this->chromeosdevices; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Directory_Group extends Google_Collection +{ + public $adminCreated; + public $aliases; + public $description; + public $directMembersCount; + public $email; + public $etag; + public $id; + public $kind; + public $name; + public $nonEditableAliases; + + public function setAdminCreated($adminCreated) + { + $this->adminCreated = $adminCreated; + } + + public function getAdminCreated() + { + return $this->adminCreated; + } + + public function setAliases($aliases) + { + $this->aliases = $aliases; + } + + public function getAliases() + { + return $this->aliases; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDirectMembersCount($directMembersCount) + { + $this->directMembersCount = $directMembersCount; + } + + public function getDirectMembersCount() + { + return $this->directMembersCount; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNonEditableAliases($nonEditableAliases) + { + $this->nonEditableAliases = $nonEditableAliases; + } + + public function getNonEditableAliases() + { + return $this->nonEditableAliases; + } +} + +class Google_Service_Directory_Groups extends Google_Collection +{ + public $etag; + protected $groupsType = 'Google_Service_Directory_Group'; + protected $groupsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setGroups($groups) + { + $this->groups = $groups; + } + + public function getGroups() + { + return $this->groups; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Directory_Member extends Google_Model +{ + public $email; + public $etag; + public $id; + public $kind; + public $role; + public $type; + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRole($role) + { + $this->role = $role; + } + + public function getRole() + { + return $this->role; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Directory_Members extends Google_Collection +{ + public $etag; + public $kind; + protected $membersType = 'Google_Service_Directory_Member'; + protected $membersDataType = 'array'; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMembers($members) + { + $this->members = $members; + } + + public function getMembers() + { + return $this->members; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Directory_MobileDevice extends Google_Collection +{ + protected $applicationsType = 'Google_Service_Directory_MobileDeviceApplications'; + protected $applicationsDataType = 'array'; + public $basebandVersion; + public $buildNumber; + public $defaultLanguage; + public $deviceCompromisedStatus; + public $deviceId; + public $email; + public $etag; + public $firstSync; + public $hardwareId; + public $imei; + public $kernelVersion; + public $kind; + public $lastSync; + public $managedAccountIsOnOwnerProfile; + public $meid; + public $model; + public $name; + public $networkOperator; + public $os; + public $resourceId; + public $serialNumber; + public $status; + public $type; + public $userAgent; + public $wifiMacAddress; + + public function setApplications($applications) + { + $this->applications = $applications; + } + + public function getApplications() + { + return $this->applications; + } + + public function setBasebandVersion($basebandVersion) + { + $this->basebandVersion = $basebandVersion; + } + + public function getBasebandVersion() + { + return $this->basebandVersion; + } + + public function setBuildNumber($buildNumber) + { + $this->buildNumber = $buildNumber; + } + + public function getBuildNumber() + { + return $this->buildNumber; + } + + public function setDefaultLanguage($defaultLanguage) + { + $this->defaultLanguage = $defaultLanguage; + } + + public function getDefaultLanguage() + { + return $this->defaultLanguage; + } + + public function setDeviceCompromisedStatus($deviceCompromisedStatus) + { + $this->deviceCompromisedStatus = $deviceCompromisedStatus; + } + + public function getDeviceCompromisedStatus() + { + return $this->deviceCompromisedStatus; + } + + public function setDeviceId($deviceId) + { + $this->deviceId = $deviceId; + } + + public function getDeviceId() + { + return $this->deviceId; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setFirstSync($firstSync) + { + $this->firstSync = $firstSync; + } + + public function getFirstSync() + { + return $this->firstSync; + } + + public function setHardwareId($hardwareId) + { + $this->hardwareId = $hardwareId; + } + + public function getHardwareId() + { + return $this->hardwareId; + } + + public function setImei($imei) + { + $this->imei = $imei; + } + + public function getImei() + { + return $this->imei; + } + + public function setKernelVersion($kernelVersion) + { + $this->kernelVersion = $kernelVersion; + } + + public function getKernelVersion() + { + return $this->kernelVersion; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastSync($lastSync) + { + $this->lastSync = $lastSync; + } + + public function getLastSync() + { + return $this->lastSync; + } + + public function setManagedAccountIsOnOwnerProfile($managedAccountIsOnOwnerProfile) + { + $this->managedAccountIsOnOwnerProfile = $managedAccountIsOnOwnerProfile; + } + + public function getManagedAccountIsOnOwnerProfile() + { + return $this->managedAccountIsOnOwnerProfile; + } + + public function setMeid($meid) + { + $this->meid = $meid; + } + + public function getMeid() + { + return $this->meid; + } + + public function setModel($model) + { + $this->model = $model; + } + + public function getModel() + { + return $this->model; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNetworkOperator($networkOperator) + { + $this->networkOperator = $networkOperator; + } + + public function getNetworkOperator() + { + return $this->networkOperator; + } + + public function setOs($os) + { + $this->os = $os; + } + + public function getOs() + { + return $this->os; + } + + public function setResourceId($resourceId) + { + $this->resourceId = $resourceId; + } + + public function getResourceId() + { + return $this->resourceId; + } + + public function setSerialNumber($serialNumber) + { + $this->serialNumber = $serialNumber; + } + + public function getSerialNumber() + { + return $this->serialNumber; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUserAgent($userAgent) + { + $this->userAgent = $userAgent; + } + + public function getUserAgent() + { + return $this->userAgent; + } + + public function setWifiMacAddress($wifiMacAddress) + { + $this->wifiMacAddress = $wifiMacAddress; + } + + public function getWifiMacAddress() + { + return $this->wifiMacAddress; + } +} + +class Google_Service_Directory_MobileDeviceAction extends Google_Model +{ + public $action; + + public function setAction($action) + { + $this->action = $action; + } + + public function getAction() + { + return $this->action; + } +} + +class Google_Service_Directory_MobileDeviceApplications extends Google_Collection +{ + public $displayName; + public $packageName; + public $permission; + public $versionCode; + public $versionName; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setPackageName($packageName) + { + $this->packageName = $packageName; + } + + public function getPackageName() + { + return $this->packageName; + } + + public function setPermission($permission) + { + $this->permission = $permission; + } + + public function getPermission() + { + return $this->permission; + } + + public function setVersionCode($versionCode) + { + $this->versionCode = $versionCode; + } + + public function getVersionCode() + { + return $this->versionCode; + } + + public function setVersionName($versionName) + { + $this->versionName = $versionName; + } + + public function getVersionName() + { + return $this->versionName; + } +} + +class Google_Service_Directory_MobileDevices extends Google_Collection +{ + public $etag; + public $kind; + protected $mobiledevicesType = 'Google_Service_Directory_MobileDevice'; + protected $mobiledevicesDataType = 'array'; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMobiledevices($mobiledevices) + { + $this->mobiledevices = $mobiledevices; + } + + public function getMobiledevices() + { + return $this->mobiledevices; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Directory_Notification extends Google_Model +{ + public $body; + public $etag; + public $fromAddress; + public $isUnread; + public $kind; + public $notificationId; + public $sendTime; + public $subject; + + public function setBody($body) + { + $this->body = $body; + } + + public function getBody() + { + return $this->body; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setFromAddress($fromAddress) + { + $this->fromAddress = $fromAddress; + } + + public function getFromAddress() + { + return $this->fromAddress; + } + + public function setIsUnread($isUnread) + { + $this->isUnread = $isUnread; + } + + public function getIsUnread() + { + return $this->isUnread; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNotificationId($notificationId) + { + $this->notificationId = $notificationId; + } + + public function getNotificationId() + { + return $this->notificationId; + } + + public function setSendTime($sendTime) + { + $this->sendTime = $sendTime; + } + + public function getSendTime() + { + return $this->sendTime; + } + + public function setSubject($subject) + { + $this->subject = $subject; + } + + public function getSubject() + { + return $this->subject; + } +} + +class Google_Service_Directory_Notifications extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Directory_Notification'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $unreadNotificationsCount; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setUnreadNotificationsCount($unreadNotificationsCount) + { + $this->unreadNotificationsCount = $unreadNotificationsCount; + } + + public function getUnreadNotificationsCount() + { + return $this->unreadNotificationsCount; + } +} + +class Google_Service_Directory_OrgUnit extends Google_Model +{ + public $blockInheritance; + public $description; + public $etag; + public $kind; + public $name; + public $orgUnitPath; + public $parentOrgUnitPath; + + public function setBlockInheritance($blockInheritance) + { + $this->blockInheritance = $blockInheritance; + } + + public function getBlockInheritance() + { + return $this->blockInheritance; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setOrgUnitPath($orgUnitPath) + { + $this->orgUnitPath = $orgUnitPath; + } + + public function getOrgUnitPath() + { + return $this->orgUnitPath; + } + + public function setParentOrgUnitPath($parentOrgUnitPath) + { + $this->parentOrgUnitPath = $parentOrgUnitPath; + } + + public function getParentOrgUnitPath() + { + return $this->parentOrgUnitPath; + } +} + +class Google_Service_Directory_OrgUnits extends Google_Collection +{ + public $etag; + public $kind; + protected $organizationUnitsType = 'Google_Service_Directory_OrgUnit'; + protected $organizationUnitsDataType = 'array'; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setOrganizationUnits($organizationUnits) + { + $this->organizationUnits = $organizationUnits; + } + + public function getOrganizationUnits() + { + return $this->organizationUnits; + } +} + +class Google_Service_Directory_Token extends Google_Collection +{ + public $anonymous; + public $clientId; + public $displayText; + public $etag; + public $kind; + public $nativeApp; + public $scopes; + public $userKey; + + public function setAnonymous($anonymous) + { + $this->anonymous = $anonymous; + } + + public function getAnonymous() + { + return $this->anonymous; + } + + public function setClientId($clientId) + { + $this->clientId = $clientId; + } + + public function getClientId() + { + return $this->clientId; + } + + public function setDisplayText($displayText) + { + $this->displayText = $displayText; + } + + public function getDisplayText() + { + return $this->displayText; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNativeApp($nativeApp) + { + $this->nativeApp = $nativeApp; + } + + public function getNativeApp() + { + return $this->nativeApp; + } + + public function setScopes($scopes) + { + $this->scopes = $scopes; + } + + public function getScopes() + { + return $this->scopes; + } + + public function setUserKey($userKey) + { + $this->userKey = $userKey; + } + + public function getUserKey() + { + return $this->userKey; + } +} + +class Google_Service_Directory_Tokens extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Directory_Token'; + protected $itemsDataType = 'array'; + public $kind; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Directory_User extends Google_Collection +{ + public $addresses; + public $agreedToTerms; + public $aliases; + public $changePasswordAtNextLogin; + public $creationTime; + public $customerId; + public $deletionTime; + public $emails; + public $etag; + public $externalIds; + public $hashFunction; + public $id; + public $ims; + public $includeInGlobalAddressList; + public $ipWhitelisted; + public $isAdmin; + public $isDelegatedAdmin; + public $isMailboxSetup; + public $kind; + public $lastLoginTime; + protected $nameType = 'Google_Service_Directory_UserName'; + protected $nameDataType = ''; + public $nonEditableAliases; + public $orgUnitPath; + public $organizations; + public $password; + public $phones; + public $primaryEmail; + public $relations; + public $suspended; + public $suspensionReason; + public $thumbnailPhotoUrl; + + public function setAddresses($addresses) + { + $this->addresses = $addresses; + } + + public function getAddresses() + { + return $this->addresses; + } + + public function setAgreedToTerms($agreedToTerms) + { + $this->agreedToTerms = $agreedToTerms; + } + + public function getAgreedToTerms() + { + return $this->agreedToTerms; + } + + public function setAliases($aliases) + { + $this->aliases = $aliases; + } + + public function getAliases() + { + return $this->aliases; + } + + public function setChangePasswordAtNextLogin($changePasswordAtNextLogin) + { + $this->changePasswordAtNextLogin = $changePasswordAtNextLogin; + } + + public function getChangePasswordAtNextLogin() + { + return $this->changePasswordAtNextLogin; + } + + public function setCreationTime($creationTime) + { + $this->creationTime = $creationTime; + } + + public function getCreationTime() + { + return $this->creationTime; + } + + public function setCustomerId($customerId) + { + $this->customerId = $customerId; + } + + public function getCustomerId() + { + return $this->customerId; + } + + public function setDeletionTime($deletionTime) + { + $this->deletionTime = $deletionTime; + } + + public function getDeletionTime() + { + return $this->deletionTime; + } + + public function setEmails($emails) + { + $this->emails = $emails; + } + + public function getEmails() + { + return $this->emails; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setExternalIds($externalIds) + { + $this->externalIds = $externalIds; + } + + public function getExternalIds() + { + return $this->externalIds; + } + + public function setHashFunction($hashFunction) + { + $this->hashFunction = $hashFunction; + } + + public function getHashFunction() + { + return $this->hashFunction; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setIms($ims) + { + $this->ims = $ims; + } + + public function getIms() + { + return $this->ims; + } + + public function setIncludeInGlobalAddressList($includeInGlobalAddressList) + { + $this->includeInGlobalAddressList = $includeInGlobalAddressList; + } + + public function getIncludeInGlobalAddressList() + { + return $this->includeInGlobalAddressList; + } + + public function setIpWhitelisted($ipWhitelisted) + { + $this->ipWhitelisted = $ipWhitelisted; + } + + public function getIpWhitelisted() + { + return $this->ipWhitelisted; + } + + public function setIsAdmin($isAdmin) + { + $this->isAdmin = $isAdmin; + } + + public function getIsAdmin() + { + return $this->isAdmin; + } + + public function setIsDelegatedAdmin($isDelegatedAdmin) + { + $this->isDelegatedAdmin = $isDelegatedAdmin; + } + + public function getIsDelegatedAdmin() + { + return $this->isDelegatedAdmin; + } + + public function setIsMailboxSetup($isMailboxSetup) + { + $this->isMailboxSetup = $isMailboxSetup; + } + + public function getIsMailboxSetup() + { + return $this->isMailboxSetup; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastLoginTime($lastLoginTime) + { + $this->lastLoginTime = $lastLoginTime; + } + + public function getLastLoginTime() + { + return $this->lastLoginTime; + } + + public function setName(Google_Service_Directory_UserName $name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNonEditableAliases($nonEditableAliases) + { + $this->nonEditableAliases = $nonEditableAliases; + } + + public function getNonEditableAliases() + { + return $this->nonEditableAliases; + } + + public function setOrgUnitPath($orgUnitPath) + { + $this->orgUnitPath = $orgUnitPath; + } + + public function getOrgUnitPath() + { + return $this->orgUnitPath; + } + + public function setOrganizations($organizations) + { + $this->organizations = $organizations; + } + + public function getOrganizations() + { + return $this->organizations; + } + + public function setPassword($password) + { + $this->password = $password; + } + + public function getPassword() + { + return $this->password; + } + + public function setPhones($phones) + { + $this->phones = $phones; + } + + public function getPhones() + { + return $this->phones; + } + + public function setPrimaryEmail($primaryEmail) + { + $this->primaryEmail = $primaryEmail; + } + + public function getPrimaryEmail() + { + return $this->primaryEmail; + } + + public function setRelations($relations) + { + $this->relations = $relations; + } + + public function getRelations() + { + return $this->relations; + } + + public function setSuspended($suspended) + { + $this->suspended = $suspended; + } + + public function getSuspended() + { + return $this->suspended; + } + + public function setSuspensionReason($suspensionReason) + { + $this->suspensionReason = $suspensionReason; + } + + public function getSuspensionReason() + { + return $this->suspensionReason; + } + + public function setThumbnailPhotoUrl($thumbnailPhotoUrl) + { + $this->thumbnailPhotoUrl = $thumbnailPhotoUrl; + } + + public function getThumbnailPhotoUrl() + { + return $this->thumbnailPhotoUrl; + } +} + +class Google_Service_Directory_UserAddress extends Google_Model +{ + public $country; + public $countryCode; + public $customType; + public $extendedAddress; + public $formatted; + public $locality; + public $poBox; + public $postalCode; + public $primary; + public $region; + public $sourceIsStructured; + public $streetAddress; + public $type; + + public function setCountry($country) + { + $this->country = $country; + } + + public function getCountry() + { + return $this->country; + } + + public function setCountryCode($countryCode) + { + $this->countryCode = $countryCode; + } + + public function getCountryCode() + { + return $this->countryCode; + } + + public function setCustomType($customType) + { + $this->customType = $customType; + } + + public function getCustomType() + { + return $this->customType; + } + + public function setExtendedAddress($extendedAddress) + { + $this->extendedAddress = $extendedAddress; + } + + public function getExtendedAddress() + { + return $this->extendedAddress; + } + + public function setFormatted($formatted) + { + $this->formatted = $formatted; + } + + public function getFormatted() + { + return $this->formatted; + } + + public function setLocality($locality) + { + $this->locality = $locality; + } + + public function getLocality() + { + return $this->locality; + } + + public function setPoBox($poBox) + { + $this->poBox = $poBox; + } + + public function getPoBox() + { + return $this->poBox; + } + + public function setPostalCode($postalCode) + { + $this->postalCode = $postalCode; + } + + public function getPostalCode() + { + return $this->postalCode; + } + + public function setPrimary($primary) + { + $this->primary = $primary; + } + + public function getPrimary() + { + return $this->primary; + } + + public function setRegion($region) + { + $this->region = $region; + } + + public function getRegion() + { + return $this->region; + } + + public function setSourceIsStructured($sourceIsStructured) + { + $this->sourceIsStructured = $sourceIsStructured; + } + + public function getSourceIsStructured() + { + return $this->sourceIsStructured; + } + + public function setStreetAddress($streetAddress) + { + $this->streetAddress = $streetAddress; + } + + public function getStreetAddress() + { + return $this->streetAddress; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Directory_UserEmail extends Google_Model +{ + public $address; + public $customType; + public $primary; + public $type; + + public function setAddress($address) + { + $this->address = $address; + } + + public function getAddress() + { + return $this->address; + } + + public function setCustomType($customType) + { + $this->customType = $customType; + } + + public function getCustomType() + { + return $this->customType; + } + + public function setPrimary($primary) + { + $this->primary = $primary; + } + + public function getPrimary() + { + return $this->primary; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Directory_UserExternalId extends Google_Model +{ + public $customType; + public $type; + public $value; + + public function setCustomType($customType) + { + $this->customType = $customType; + } + + public function getCustomType() + { + return $this->customType; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Directory_UserIm extends Google_Model +{ + public $customProtocol; + public $customType; + public $im; + public $primary; + public $protocol; + public $type; + + public function setCustomProtocol($customProtocol) + { + $this->customProtocol = $customProtocol; + } + + public function getCustomProtocol() + { + return $this->customProtocol; + } + + public function setCustomType($customType) + { + $this->customType = $customType; + } + + public function getCustomType() + { + return $this->customType; + } + + public function setIm($im) + { + $this->im = $im; + } + + public function getIm() + { + return $this->im; + } + + public function setPrimary($primary) + { + $this->primary = $primary; + } + + public function getPrimary() + { + return $this->primary; + } + + public function setProtocol($protocol) + { + $this->protocol = $protocol; + } + + public function getProtocol() + { + return $this->protocol; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Directory_UserMakeAdmin extends Google_Model +{ + public $status; + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_Directory_UserName extends Google_Model +{ + public $familyName; + public $fullName; + public $givenName; + + public function setFamilyName($familyName) + { + $this->familyName = $familyName; + } + + public function getFamilyName() + { + return $this->familyName; + } + + public function setFullName($fullName) + { + $this->fullName = $fullName; + } + + public function getFullName() + { + return $this->fullName; + } + + public function setGivenName($givenName) + { + $this->givenName = $givenName; + } + + public function getGivenName() + { + return $this->givenName; + } +} + +class Google_Service_Directory_UserOrganization extends Google_Model +{ + public $costCenter; + public $customType; + public $department; + public $description; + public $domain; + public $location; + public $name; + public $primary; + public $symbol; + public $title; + public $type; + + public function setCostCenter($costCenter) + { + $this->costCenter = $costCenter; + } + + public function getCostCenter() + { + return $this->costCenter; + } + + public function setCustomType($customType) + { + $this->customType = $customType; + } + + public function getCustomType() + { + return $this->customType; + } + + public function setDepartment($department) + { + $this->department = $department; + } + + public function getDepartment() + { + return $this->department; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDomain($domain) + { + $this->domain = $domain; + } + + public function getDomain() + { + return $this->domain; + } + + public function setLocation($location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPrimary($primary) + { + $this->primary = $primary; + } + + public function getPrimary() + { + return $this->primary; + } + + public function setSymbol($symbol) + { + $this->symbol = $symbol; + } + + public function getSymbol() + { + return $this->symbol; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Directory_UserPhone extends Google_Model +{ + public $customType; + public $primary; + public $type; + public $value; + + public function setCustomType($customType) + { + $this->customType = $customType; + } + + public function getCustomType() + { + return $this->customType; + } + + public function setPrimary($primary) + { + $this->primary = $primary; + } + + public function getPrimary() + { + return $this->primary; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Directory_UserPhoto extends Google_Model +{ + public $etag; + public $height; + public $id; + public $kind; + public $mimeType; + public $photoData; + public $primaryEmail; + public $width; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMimeType($mimeType) + { + $this->mimeType = $mimeType; + } + + public function getMimeType() + { + return $this->mimeType; + } + + public function setPhotoData($photoData) + { + $this->photoData = $photoData; + } + + public function getPhotoData() + { + return $this->photoData; + } + + public function setPrimaryEmail($primaryEmail) + { + $this->primaryEmail = $primaryEmail; + } + + public function getPrimaryEmail() + { + return $this->primaryEmail; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_Directory_UserRelation extends Google_Model +{ + public $customType; + public $type; + public $value; + + public function setCustomType($customType) + { + $this->customType = $customType; + } + + public function getCustomType() + { + return $this->customType; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Directory_UserUndelete extends Google_Model +{ + public $orgUnitPath; + + public function setOrgUnitPath($orgUnitPath) + { + $this->orgUnitPath = $orgUnitPath; + } + + public function getOrgUnitPath() + { + return $this->orgUnitPath; + } +} + +class Google_Service_Directory_Users extends Google_Collection +{ + public $etag; + public $kind; + public $nextPageToken; + public $triggerEvent; + protected $usersType = 'Google_Service_Directory_User'; + protected $usersDataType = 'array'; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setTriggerEvent($triggerEvent) + { + $this->triggerEvent = $triggerEvent; + } + + public function getTriggerEvent() + { + return $this->triggerEvent; + } + + public function setUsers($users) + { + $this->users = $users; + } + + public function getUsers() + { + return $this->users; + } +} + +class Google_Service_Directory_VerificationCode extends Google_Model +{ + public $etag; + public $kind; + public $userId; + public $verificationCode; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setUserId($userId) + { + $this->userId = $userId; + } + + public function getUserId() + { + return $this->userId; + } + + public function setVerificationCode($verificationCode) + { + $this->verificationCode = $verificationCode; + } + + public function getVerificationCode() + { + return $this->verificationCode; + } +} + +class Google_Service_Directory_VerificationCodes extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Directory_VerificationCode'; + protected $itemsDataType = 'array'; + public $kind; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} diff --git a/oauth/Google/Service/Dns.php b/oauth/Google/Service/Dns.php new file mode 100644 index 0000000..d6fc44f --- /dev/null +++ b/oauth/Google/Service/Dns.php @@ -0,0 +1,950 @@ + + * The Google Cloud DNS API provides services for configuring and serving authoritative DNS records. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Dns extends Google_Service +{ + /** View and manage your data across Google Cloud Platform services. */ + const CLOUD_PLATFORM = "https://www.googleapis.com/auth/cloud-platform"; + /** View your DNS records hosted by Google Cloud DNS. */ + const NDEV_CLOUDDNS_READONLY = "https://www.googleapis.com/auth/ndev.clouddns.readonly"; + /** View and manage your DNS records hosted by Google Cloud DNS. */ + const NDEV_CLOUDDNS_READWRITE = "https://www.googleapis.com/auth/ndev.clouddns.readwrite"; + + public $changes; + public $managedZones; + public $projects; + public $resourceRecordSets; + + + /** + * Constructs the internal representation of the Dns service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'dns/v1beta1/projects/'; + $this->version = 'v1beta1'; + $this->serviceName = 'dns'; + + $this->changes = new Google_Service_Dns_Changes_Resource( + $this, + $this->serviceName, + 'changes', + array( + 'methods' => array( + 'create' => array( + 'path' => '{project}/managedZones/{managedZone}/changes', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'managedZone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/managedZones/{managedZone}/changes/{changeId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'managedZone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'changeId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/managedZones/{managedZone}/changes', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'managedZone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sortBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sortOrder' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->managedZones = new Google_Service_Dns_ManagedZones_Resource( + $this, + $this->serviceName, + 'managedZones', + array( + 'methods' => array( + 'create' => array( + 'path' => '{project}/managedZones', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => '{project}/managedZones/{managedZone}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'managedZone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/managedZones/{managedZone}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'managedZone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/managedZones', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->projects = new Google_Service_Dns_Projects_Resource( + $this, + $this->serviceName, + 'projects', + array( + 'methods' => array( + 'get' => array( + 'path' => '{project}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->resourceRecordSets = new Google_Service_Dns_ResourceRecordSets_Resource( + $this, + $this->serviceName, + 'resourceRecordSets', + array( + 'methods' => array( + 'list' => array( + 'path' => '{project}/managedZones/{managedZone}/rrsets', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'managedZone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'name' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'type' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "changes" collection of methods. + * Typical usage is: + * + * $dnsService = new Google_Service_Dns(...); + * $changes = $dnsService->changes; + * + */ +class Google_Service_Dns_Changes_Resource extends Google_Service_Resource +{ + + /** + * Atomically update the ResourceRecordSet collection. (changes.create) + * + * @param string $project + * Identifies the project addressed by this request. + * @param string $managedZone + * Identifies the managed zone addressed by this request. Can be the managed zone name or id. + * @param Google_Change $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Dns_Change + */ + public function create($project, $managedZone, Google_Service_Dns_Change $postBody, $optParams = array()) + { + $params = array('project' => $project, 'managedZone' => $managedZone, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_Dns_Change"); + } + /** + * Fetch the representation of an existing Change. (changes.get) + * + * @param string $project + * Identifies the project addressed by this request. + * @param string $managedZone + * Identifies the managed zone addressed by this request. Can be the managed zone name or id. + * @param string $changeId + * The identifier of the requested change, from a previous ResourceRecordSetsChangeResponse. + * @param array $optParams Optional parameters. + * @return Google_Service_Dns_Change + */ + public function get($project, $managedZone, $changeId, $optParams = array()) + { + $params = array('project' => $project, 'managedZone' => $managedZone, 'changeId' => $changeId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Dns_Change"); + } + /** + * Enumerate Changes to a ResourceRecordSet collection. (changes.listChanges) + * + * @param string $project + * Identifies the project addressed by this request. + * @param string $managedZone + * Identifies the managed zone addressed by this request. Can be the managed zone name or id. + * @param array $optParams Optional parameters. + * + * @opt_param int maxResults + * Optional. Maximum number of results to be returned. If unspecified, the server will decide how + * many results to return. + * @opt_param string pageToken + * Optional. A tag returned by a previous list request that was truncated. Use this parameter to + * continue a previous list request. + * @opt_param string sortBy + * Sorting criterion. The only supported value is change sequence. + * @opt_param string sortOrder + * Sorting order direction: 'ascending' or 'descending'. + * @return Google_Service_Dns_ChangesListResponse + */ + public function listChanges($project, $managedZone, $optParams = array()) + { + $params = array('project' => $project, 'managedZone' => $managedZone); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Dns_ChangesListResponse"); + } +} + +/** + * The "managedZones" collection of methods. + * Typical usage is: + * + * $dnsService = new Google_Service_Dns(...); + * $managedZones = $dnsService->managedZones; + * + */ +class Google_Service_Dns_ManagedZones_Resource extends Google_Service_Resource +{ + + /** + * Create a new ManagedZone. (managedZones.create) + * + * @param string $project + * Identifies the project addressed by this request. + * @param Google_ManagedZone $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Dns_ManagedZone + */ + public function create($project, Google_Service_Dns_ManagedZone $postBody, $optParams = array()) + { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_Dns_ManagedZone"); + } + /** + * Delete a previously created ManagedZone. (managedZones.delete) + * + * @param string $project + * Identifies the project addressed by this request. + * @param string $managedZone + * Identifies the managed zone addressed by this request. Can be the managed zone name or id. + * @param array $optParams Optional parameters. + */ + public function delete($project, $managedZone, $optParams = array()) + { + $params = array('project' => $project, 'managedZone' => $managedZone); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Fetch the representation of an existing ManagedZone. (managedZones.get) + * + * @param string $project + * Identifies the project addressed by this request. + * @param string $managedZone + * Identifies the managed zone addressed by this request. Can be the managed zone name or id. + * @param array $optParams Optional parameters. + * @return Google_Service_Dns_ManagedZone + */ + public function get($project, $managedZone, $optParams = array()) + { + $params = array('project' => $project, 'managedZone' => $managedZone); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Dns_ManagedZone"); + } + /** + * Enumerate ManagedZones that have been created but not yet deleted. + * (managedZones.listManagedZones) + * + * @param string $project + * Identifies the project addressed by this request. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Optional. A tag returned by a previous list request that was truncated. Use this parameter to + * continue a previous list request. + * @opt_param int maxResults + * Optional. Maximum number of results to be returned. If unspecified, the server will decide how + * many results to return. + * @return Google_Service_Dns_ManagedZonesListResponse + */ + public function listManagedZones($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Dns_ManagedZonesListResponse"); + } +} + +/** + * The "projects" collection of methods. + * Typical usage is: + * + * $dnsService = new Google_Service_Dns(...); + * $projects = $dnsService->projects; + * + */ +class Google_Service_Dns_Projects_Resource extends Google_Service_Resource +{ + + /** + * Fetch the representation of an existing Project. (projects.get) + * + * @param string $project + * Identifies the project addressed by this request. + * @param array $optParams Optional parameters. + * @return Google_Service_Dns_Project + */ + public function get($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Dns_Project"); + } +} + +/** + * The "resourceRecordSets" collection of methods. + * Typical usage is: + * + * $dnsService = new Google_Service_Dns(...); + * $resourceRecordSets = $dnsService->resourceRecordSets; + * + */ +class Google_Service_Dns_ResourceRecordSets_Resource extends Google_Service_Resource +{ + + /** + * Enumerate ResourceRecordSets that have been created but not yet deleted. + * (resourceRecordSets.listResourceRecordSets) + * + * @param string $project + * Identifies the project addressed by this request. + * @param string $managedZone + * Identifies the managed zone addressed by this request. Can be the managed zone name or id. + * @param array $optParams Optional parameters. + * + * @opt_param string name + * Restricts the list to return only records with this fully qualified domain name. + * @opt_param int maxResults + * Optional. Maximum number of results to be returned. If unspecified, the server will decide how + * many results to return. + * @opt_param string pageToken + * Optional. A tag returned by a previous list request that was truncated. Use this parameter to + * continue a previous list request. + * @opt_param string type + * Restricts the list to return only records of this type. If present, the "name" parameter must + * also be present. + * @return Google_Service_Dns_ResourceRecordSetsListResponse + */ + public function listResourceRecordSets($project, $managedZone, $optParams = array()) + { + $params = array('project' => $project, 'managedZone' => $managedZone); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Dns_ResourceRecordSetsListResponse"); + } +} + + + + +class Google_Service_Dns_Change extends Google_Collection +{ + protected $additionsType = 'Google_Service_Dns_ResourceRecordSet'; + protected $additionsDataType = 'array'; + protected $deletionsType = 'Google_Service_Dns_ResourceRecordSet'; + protected $deletionsDataType = 'array'; + public $id; + public $kind; + public $startTime; + public $status; + + public function setAdditions($additions) + { + $this->additions = $additions; + } + + public function getAdditions() + { + return $this->additions; + } + + public function setDeletions($deletions) + { + $this->deletions = $deletions; + } + + public function getDeletions() + { + return $this->deletions; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setStartTime($startTime) + { + $this->startTime = $startTime; + } + + public function getStartTime() + { + return $this->startTime; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_Dns_ChangesListResponse extends Google_Collection +{ + protected $changesType = 'Google_Service_Dns_Change'; + protected $changesDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setChanges($changes) + { + $this->changes = $changes; + } + + public function getChanges() + { + return $this->changes; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Dns_ManagedZone extends Google_Collection +{ + public $creationTime; + public $description; + public $dnsName; + public $id; + public $kind; + public $name; + public $nameServers; + + public function setCreationTime($creationTime) + { + $this->creationTime = $creationTime; + } + + public function getCreationTime() + { + return $this->creationTime; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDnsName($dnsName) + { + $this->dnsName = $dnsName; + } + + public function getDnsName() + { + return $this->dnsName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNameServers($nameServers) + { + $this->nameServers = $nameServers; + } + + public function getNameServers() + { + return $this->nameServers; + } +} + +class Google_Service_Dns_ManagedZonesListResponse extends Google_Collection +{ + public $kind; + protected $managedZonesType = 'Google_Service_Dns_ManagedZone'; + protected $managedZonesDataType = 'array'; + public $nextPageToken; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setManagedZones($managedZones) + { + $this->managedZones = $managedZones; + } + + public function getManagedZones() + { + return $this->managedZones; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Dns_Project extends Google_Model +{ + public $id; + public $kind; + public $number; + protected $quotaType = 'Google_Service_Dns_Quota'; + protected $quotaDataType = ''; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNumber($number) + { + $this->number = $number; + } + + public function getNumber() + { + return $this->number; + } + + public function setQuota(Google_Service_Dns_Quota $quota) + { + $this->quota = $quota; + } + + public function getQuota() + { + return $this->quota; + } +} + +class Google_Service_Dns_Quota extends Google_Model +{ + public $kind; + public $managedZones; + public $resourceRecordsPerRrset; + public $rrsetAdditionsPerChange; + public $rrsetDeletionsPerChange; + public $rrsetsPerManagedZone; + public $totalRrdataSizePerChange; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setManagedZones($managedZones) + { + $this->managedZones = $managedZones; + } + + public function getManagedZones() + { + return $this->managedZones; + } + + public function setResourceRecordsPerRrset($resourceRecordsPerRrset) + { + $this->resourceRecordsPerRrset = $resourceRecordsPerRrset; + } + + public function getResourceRecordsPerRrset() + { + return $this->resourceRecordsPerRrset; + } + + public function setRrsetAdditionsPerChange($rrsetAdditionsPerChange) + { + $this->rrsetAdditionsPerChange = $rrsetAdditionsPerChange; + } + + public function getRrsetAdditionsPerChange() + { + return $this->rrsetAdditionsPerChange; + } + + public function setRrsetDeletionsPerChange($rrsetDeletionsPerChange) + { + $this->rrsetDeletionsPerChange = $rrsetDeletionsPerChange; + } + + public function getRrsetDeletionsPerChange() + { + return $this->rrsetDeletionsPerChange; + } + + public function setRrsetsPerManagedZone($rrsetsPerManagedZone) + { + $this->rrsetsPerManagedZone = $rrsetsPerManagedZone; + } + + public function getRrsetsPerManagedZone() + { + return $this->rrsetsPerManagedZone; + } + + public function setTotalRrdataSizePerChange($totalRrdataSizePerChange) + { + $this->totalRrdataSizePerChange = $totalRrdataSizePerChange; + } + + public function getTotalRrdataSizePerChange() + { + return $this->totalRrdataSizePerChange; + } +} + +class Google_Service_Dns_ResourceRecordSet extends Google_Collection +{ + public $kind; + public $name; + public $rrdatas; + public $ttl; + public $type; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setRrdatas($rrdatas) + { + $this->rrdatas = $rrdatas; + } + + public function getRrdatas() + { + return $this->rrdatas; + } + + public function setTtl($ttl) + { + $this->ttl = $ttl; + } + + public function getTtl() + { + return $this->ttl; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Dns_ResourceRecordSetsListResponse extends Google_Collection +{ + public $kind; + public $nextPageToken; + protected $rrsetsType = 'Google_Service_Dns_ResourceRecordSet'; + protected $rrsetsDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setRrsets($rrsets) + { + $this->rrsets = $rrsets; + } + + public function getRrsets() + { + return $this->rrsets; + } +} diff --git a/oauth/Google/Service/DoubleClickBidManager.php b/oauth/Google/Service/DoubleClickBidManager.php new file mode 100644 index 0000000..4d340cd --- /dev/null +++ b/oauth/Google/Service/DoubleClickBidManager.php @@ -0,0 +1,1117 @@ + + * API for viewing and managing your reports in DoubleClick Bid Manager. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_DoubleClickBidManager extends Google_Service +{ + + + public $lineitems; + public $queries; + public $reports; + + + /** + * Constructs the internal representation of the DoubleClickBidManager + * service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'doubleclickbidmanager/v1/'; + $this->version = 'v1'; + $this->serviceName = 'doubleclickbidmanager'; + + $this->lineitems = new Google_Service_DoubleClickBidManager_Lineitems_Resource( + $this, + $this->serviceName, + 'lineitems', + array( + 'methods' => array( + 'downloadlineitems' => array( + 'path' => 'lineitems/downloadlineitems', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'uploadlineitems' => array( + 'path' => 'lineitems/uploadlineitems', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->queries = new Google_Service_DoubleClickBidManager_Queries_Resource( + $this, + $this->serviceName, + 'queries', + array( + 'methods' => array( + 'createquery' => array( + 'path' => 'query', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'deletequery' => array( + 'path' => 'query/{queryId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'queryId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'getquery' => array( + 'path' => 'query/{queryId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'queryId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'listqueries' => array( + 'path' => 'queries', + 'httpMethod' => 'GET', + 'parameters' => array(), + ),'runquery' => array( + 'path' => 'query/{queryId}', + 'httpMethod' => 'POST', + 'parameters' => array( + 'queryId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->reports = new Google_Service_DoubleClickBidManager_Reports_Resource( + $this, + $this->serviceName, + 'reports', + array( + 'methods' => array( + 'listreports' => array( + 'path' => 'queries/{queryId}/reports', + 'httpMethod' => 'GET', + 'parameters' => array( + 'queryId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "lineitems" collection of methods. + * Typical usage is: + * + * $doubleclickbidmanagerService = new Google_Service_DoubleClickBidManager(...); + * $lineitems = $doubleclickbidmanagerService->lineitems; + * + */ +class Google_Service_DoubleClickBidManager_Lineitems_Resource extends Google_Service_Resource +{ + + /** + * Retrieves line items in CSV format. (lineitems.downloadlineitems) + * + * @param Google_DownloadLineItemsRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_DoubleClickBidManager_DownloadLineItemsResponse + */ + public function downloadlineitems(Google_Service_DoubleClickBidManager_DownloadLineItemsRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('downloadlineitems', array($params), "Google_Service_DoubleClickBidManager_DownloadLineItemsResponse"); + } + /** + * Uploads line items in CSV format. (lineitems.uploadlineitems) + * + * @param Google_UploadLineItemsRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_DoubleClickBidManager_UploadLineItemsResponse + */ + public function uploadlineitems(Google_Service_DoubleClickBidManager_UploadLineItemsRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('uploadlineitems', array($params), "Google_Service_DoubleClickBidManager_UploadLineItemsResponse"); + } +} + +/** + * The "queries" collection of methods. + * Typical usage is: + * + * $doubleclickbidmanagerService = new Google_Service_DoubleClickBidManager(...); + * $queries = $doubleclickbidmanagerService->queries; + * + */ +class Google_Service_DoubleClickBidManager_Queries_Resource extends Google_Service_Resource +{ + + /** + * Creates a query. (queries.createquery) + * + * @param Google_Query $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_DoubleClickBidManager_Query + */ + public function createquery(Google_Service_DoubleClickBidManager_Query $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('createquery', array($params), "Google_Service_DoubleClickBidManager_Query"); + } + /** + * Deletes a stored query as well as the associated stored reports. + * (queries.deletequery) + * + * @param string $queryId + * Query ID to delete. + * @param array $optParams Optional parameters. + */ + public function deletequery($queryId, $optParams = array()) + { + $params = array('queryId' => $queryId); + $params = array_merge($params, $optParams); + return $this->call('deletequery', array($params)); + } + /** + * Retrieves a stored query. (queries.getquery) + * + * @param string $queryId + * Query ID to retrieve. + * @param array $optParams Optional parameters. + * @return Google_Service_DoubleClickBidManager_Query + */ + public function getquery($queryId, $optParams = array()) + { + $params = array('queryId' => $queryId); + $params = array_merge($params, $optParams); + return $this->call('getquery', array($params), "Google_Service_DoubleClickBidManager_Query"); + } + /** + * Retrieves stored queries. (queries.listqueries) + * + * @param array $optParams Optional parameters. + * @return Google_Service_DoubleClickBidManager_ListQueriesResponse + */ + public function listqueries($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('listqueries', array($params), "Google_Service_DoubleClickBidManager_ListQueriesResponse"); + } + /** + * Runs a stored query to generate a report. (queries.runquery) + * + * @param string $queryId + * Query ID to run. + * @param Google_RunQueryRequest $postBody + * @param array $optParams Optional parameters. + */ + public function runquery($queryId, Google_Service_DoubleClickBidManager_RunQueryRequest $postBody, $optParams = array()) + { + $params = array('queryId' => $queryId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('runquery', array($params)); + } +} + +/** + * The "reports" collection of methods. + * Typical usage is: + * + * $doubleclickbidmanagerService = new Google_Service_DoubleClickBidManager(...); + * $reports = $doubleclickbidmanagerService->reports; + * + */ +class Google_Service_DoubleClickBidManager_Reports_Resource extends Google_Service_Resource +{ + + /** + * Retrieves stored reports. (reports.listreports) + * + * @param string $queryId + * Query ID with which the reports are associated. + * @param array $optParams Optional parameters. + * @return Google_Service_DoubleClickBidManager_ListReportsResponse + */ + public function listreports($queryId, $optParams = array()) + { + $params = array('queryId' => $queryId); + $params = array_merge($params, $optParams); + return $this->call('listreports', array($params), "Google_Service_DoubleClickBidManager_ListReportsResponse"); + } +} + + + + +class Google_Service_DoubleClickBidManager_DownloadLineItemsRequest extends Google_Collection +{ + public $filterIds; + public $filterType; + public $format; + + public function setFilterIds($filterIds) + { + $this->filterIds = $filterIds; + } + + public function getFilterIds() + { + return $this->filterIds; + } + + public function setFilterType($filterType) + { + $this->filterType = $filterType; + } + + public function getFilterType() + { + return $this->filterType; + } + + public function setFormat($format) + { + $this->format = $format; + } + + public function getFormat() + { + return $this->format; + } +} + +class Google_Service_DoubleClickBidManager_DownloadLineItemsResponse extends Google_Model +{ + public $lineItems; + + public function setLineItems($lineItems) + { + $this->lineItems = $lineItems; + } + + public function getLineItems() + { + return $this->lineItems; + } +} + +class Google_Service_DoubleClickBidManager_FilterPair extends Google_Model +{ + public $type; + public $value; + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_DoubleClickBidManager_ListQueriesResponse extends Google_Collection +{ + public $kind; + protected $queriesType = 'Google_Service_DoubleClickBidManager_Query'; + protected $queriesDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setQueries($queries) + { + $this->queries = $queries; + } + + public function getQueries() + { + return $this->queries; + } +} + +class Google_Service_DoubleClickBidManager_ListReportsResponse extends Google_Collection +{ + public $kind; + protected $reportsType = 'Google_Service_DoubleClickBidManager_Report'; + protected $reportsDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setReports($reports) + { + $this->reports = $reports; + } + + public function getReports() + { + return $this->reports; + } +} + +class Google_Service_DoubleClickBidManager_Parameters extends Google_Collection +{ + protected $filtersType = 'Google_Service_DoubleClickBidManager_FilterPair'; + protected $filtersDataType = 'array'; + public $groupBys; + public $includeInviteData; + public $metrics; + public $type; + + public function setFilters($filters) + { + $this->filters = $filters; + } + + public function getFilters() + { + return $this->filters; + } + + public function setGroupBys($groupBys) + { + $this->groupBys = $groupBys; + } + + public function getGroupBys() + { + return $this->groupBys; + } + + public function setIncludeInviteData($includeInviteData) + { + $this->includeInviteData = $includeInviteData; + } + + public function getIncludeInviteData() + { + return $this->includeInviteData; + } + + public function setMetrics($metrics) + { + $this->metrics = $metrics; + } + + public function getMetrics() + { + return $this->metrics; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_DoubleClickBidManager_Query extends Google_Model +{ + public $kind; + protected $metadataType = 'Google_Service_DoubleClickBidManager_QueryMetadata'; + protected $metadataDataType = ''; + protected $paramsType = 'Google_Service_DoubleClickBidManager_Parameters'; + protected $paramsDataType = ''; + public $queryId; + public $reportDataEndTimeMs; + public $reportDataStartTimeMs; + protected $scheduleType = 'Google_Service_DoubleClickBidManager_QuerySchedule'; + protected $scheduleDataType = ''; + public $timezoneCode; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMetadata(Google_Service_DoubleClickBidManager_QueryMetadata $metadata) + { + $this->metadata = $metadata; + } + + public function getMetadata() + { + return $this->metadata; + } + + public function setParams(Google_Service_DoubleClickBidManager_Parameters $params) + { + $this->params = $params; + } + + public function getParams() + { + return $this->params; + } + + public function setQueryId($queryId) + { + $this->queryId = $queryId; + } + + public function getQueryId() + { + return $this->queryId; + } + + public function setReportDataEndTimeMs($reportDataEndTimeMs) + { + $this->reportDataEndTimeMs = $reportDataEndTimeMs; + } + + public function getReportDataEndTimeMs() + { + return $this->reportDataEndTimeMs; + } + + public function setReportDataStartTimeMs($reportDataStartTimeMs) + { + $this->reportDataStartTimeMs = $reportDataStartTimeMs; + } + + public function getReportDataStartTimeMs() + { + return $this->reportDataStartTimeMs; + } + + public function setSchedule(Google_Service_DoubleClickBidManager_QuerySchedule $schedule) + { + $this->schedule = $schedule; + } + + public function getSchedule() + { + return $this->schedule; + } + + public function setTimezoneCode($timezoneCode) + { + $this->timezoneCode = $timezoneCode; + } + + public function getTimezoneCode() + { + return $this->timezoneCode; + } +} + +class Google_Service_DoubleClickBidManager_QueryMetadata extends Google_Collection +{ + public $dataRange; + public $format; + public $googleCloudStoragePathForLatestReport; + public $googleDrivePathForLatestReport; + public $latestReportRunTimeMs; + public $reportCount; + public $running; + public $sendNotification; + public $shareEmailAddress; + public $title; + + public function setDataRange($dataRange) + { + $this->dataRange = $dataRange; + } + + public function getDataRange() + { + return $this->dataRange; + } + + public function setFormat($format) + { + $this->format = $format; + } + + public function getFormat() + { + return $this->format; + } + + public function setGoogleCloudStoragePathForLatestReport($googleCloudStoragePathForLatestReport) + { + $this->googleCloudStoragePathForLatestReport = $googleCloudStoragePathForLatestReport; + } + + public function getGoogleCloudStoragePathForLatestReport() + { + return $this->googleCloudStoragePathForLatestReport; + } + + public function setGoogleDrivePathForLatestReport($googleDrivePathForLatestReport) + { + $this->googleDrivePathForLatestReport = $googleDrivePathForLatestReport; + } + + public function getGoogleDrivePathForLatestReport() + { + return $this->googleDrivePathForLatestReport; + } + + public function setLatestReportRunTimeMs($latestReportRunTimeMs) + { + $this->latestReportRunTimeMs = $latestReportRunTimeMs; + } + + public function getLatestReportRunTimeMs() + { + return $this->latestReportRunTimeMs; + } + + public function setReportCount($reportCount) + { + $this->reportCount = $reportCount; + } + + public function getReportCount() + { + return $this->reportCount; + } + + public function setRunning($running) + { + $this->running = $running; + } + + public function getRunning() + { + return $this->running; + } + + public function setSendNotification($sendNotification) + { + $this->sendNotification = $sendNotification; + } + + public function getSendNotification() + { + return $this->sendNotification; + } + + public function setShareEmailAddress($shareEmailAddress) + { + $this->shareEmailAddress = $shareEmailAddress; + } + + public function getShareEmailAddress() + { + return $this->shareEmailAddress; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_DoubleClickBidManager_QuerySchedule extends Google_Model +{ + public $endTimeMs; + public $frequency; + public $nextRunMinuteOfDay; + public $nextRunTimezoneCode; + + public function setEndTimeMs($endTimeMs) + { + $this->endTimeMs = $endTimeMs; + } + + public function getEndTimeMs() + { + return $this->endTimeMs; + } + + public function setFrequency($frequency) + { + $this->frequency = $frequency; + } + + public function getFrequency() + { + return $this->frequency; + } + + public function setNextRunMinuteOfDay($nextRunMinuteOfDay) + { + $this->nextRunMinuteOfDay = $nextRunMinuteOfDay; + } + + public function getNextRunMinuteOfDay() + { + return $this->nextRunMinuteOfDay; + } + + public function setNextRunTimezoneCode($nextRunTimezoneCode) + { + $this->nextRunTimezoneCode = $nextRunTimezoneCode; + } + + public function getNextRunTimezoneCode() + { + return $this->nextRunTimezoneCode; + } +} + +class Google_Service_DoubleClickBidManager_Report extends Google_Model +{ + protected $keyType = 'Google_Service_DoubleClickBidManager_ReportKey'; + protected $keyDataType = ''; + protected $metadataType = 'Google_Service_DoubleClickBidManager_ReportMetadata'; + protected $metadataDataType = ''; + protected $paramsType = 'Google_Service_DoubleClickBidManager_Parameters'; + protected $paramsDataType = ''; + + public function setKey(Google_Service_DoubleClickBidManager_ReportKey $key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setMetadata(Google_Service_DoubleClickBidManager_ReportMetadata $metadata) + { + $this->metadata = $metadata; + } + + public function getMetadata() + { + return $this->metadata; + } + + public function setParams(Google_Service_DoubleClickBidManager_Parameters $params) + { + $this->params = $params; + } + + public function getParams() + { + return $this->params; + } +} + +class Google_Service_DoubleClickBidManager_ReportFailure extends Google_Model +{ + public $errorCode; + + public function setErrorCode($errorCode) + { + $this->errorCode = $errorCode; + } + + public function getErrorCode() + { + return $this->errorCode; + } +} + +class Google_Service_DoubleClickBidManager_ReportKey extends Google_Model +{ + public $queryId; + public $reportId; + + public function setQueryId($queryId) + { + $this->queryId = $queryId; + } + + public function getQueryId() + { + return $this->queryId; + } + + public function setReportId($reportId) + { + $this->reportId = $reportId; + } + + public function getReportId() + { + return $this->reportId; + } +} + +class Google_Service_DoubleClickBidManager_ReportMetadata extends Google_Model +{ + public $googleCloudStoragePath; + public $reportDataEndTimeMs; + public $reportDataStartTimeMs; + protected $statusType = 'Google_Service_DoubleClickBidManager_ReportStatus'; + protected $statusDataType = ''; + + public function setGoogleCloudStoragePath($googleCloudStoragePath) + { + $this->googleCloudStoragePath = $googleCloudStoragePath; + } + + public function getGoogleCloudStoragePath() + { + return $this->googleCloudStoragePath; + } + + public function setReportDataEndTimeMs($reportDataEndTimeMs) + { + $this->reportDataEndTimeMs = $reportDataEndTimeMs; + } + + public function getReportDataEndTimeMs() + { + return $this->reportDataEndTimeMs; + } + + public function setReportDataStartTimeMs($reportDataStartTimeMs) + { + $this->reportDataStartTimeMs = $reportDataStartTimeMs; + } + + public function getReportDataStartTimeMs() + { + return $this->reportDataStartTimeMs; + } + + public function setStatus(Google_Service_DoubleClickBidManager_ReportStatus $status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_DoubleClickBidManager_ReportStatus extends Google_Model +{ + protected $failureType = 'Google_Service_DoubleClickBidManager_ReportFailure'; + protected $failureDataType = ''; + public $finishTimeMs; + public $format; + public $state; + + public function setFailure(Google_Service_DoubleClickBidManager_ReportFailure $failure) + { + $this->failure = $failure; + } + + public function getFailure() + { + return $this->failure; + } + + public function setFinishTimeMs($finishTimeMs) + { + $this->finishTimeMs = $finishTimeMs; + } + + public function getFinishTimeMs() + { + return $this->finishTimeMs; + } + + public function setFormat($format) + { + $this->format = $format; + } + + public function getFormat() + { + return $this->format; + } + + public function setState($state) + { + $this->state = $state; + } + + public function getState() + { + return $this->state; + } +} + +class Google_Service_DoubleClickBidManager_RowStatus extends Google_Collection +{ + public $changed; + public $entityId; + public $entityName; + public $errors; + public $persisted; + public $rowNumber; + + public function setChanged($changed) + { + $this->changed = $changed; + } + + public function getChanged() + { + return $this->changed; + } + + public function setEntityId($entityId) + { + $this->entityId = $entityId; + } + + public function getEntityId() + { + return $this->entityId; + } + + public function setEntityName($entityName) + { + $this->entityName = $entityName; + } + + public function getEntityName() + { + return $this->entityName; + } + + public function setErrors($errors) + { + $this->errors = $errors; + } + + public function getErrors() + { + return $this->errors; + } + + public function setPersisted($persisted) + { + $this->persisted = $persisted; + } + + public function getPersisted() + { + return $this->persisted; + } + + public function setRowNumber($rowNumber) + { + $this->rowNumber = $rowNumber; + } + + public function getRowNumber() + { + return $this->rowNumber; + } +} + +class Google_Service_DoubleClickBidManager_RunQueryRequest extends Google_Model +{ + public $dataRange; + public $reportDataEndTimeMs; + public $reportDataStartTimeMs; + public $timezoneCode; + + public function setDataRange($dataRange) + { + $this->dataRange = $dataRange; + } + + public function getDataRange() + { + return $this->dataRange; + } + + public function setReportDataEndTimeMs($reportDataEndTimeMs) + { + $this->reportDataEndTimeMs = $reportDataEndTimeMs; + } + + public function getReportDataEndTimeMs() + { + return $this->reportDataEndTimeMs; + } + + public function setReportDataStartTimeMs($reportDataStartTimeMs) + { + $this->reportDataStartTimeMs = $reportDataStartTimeMs; + } + + public function getReportDataStartTimeMs() + { + return $this->reportDataStartTimeMs; + } + + public function setTimezoneCode($timezoneCode) + { + $this->timezoneCode = $timezoneCode; + } + + public function getTimezoneCode() + { + return $this->timezoneCode; + } +} + +class Google_Service_DoubleClickBidManager_UploadLineItemsRequest extends Google_Model +{ + public $dryRun; + public $format; + public $lineItems; + + public function setDryRun($dryRun) + { + $this->dryRun = $dryRun; + } + + public function getDryRun() + { + return $this->dryRun; + } + + public function setFormat($format) + { + $this->format = $format; + } + + public function getFormat() + { + return $this->format; + } + + public function setLineItems($lineItems) + { + $this->lineItems = $lineItems; + } + + public function getLineItems() + { + return $this->lineItems; + } +} + +class Google_Service_DoubleClickBidManager_UploadLineItemsResponse extends Google_Model +{ + protected $uploadStatusType = 'Google_Service_DoubleClickBidManager_UploadStatus'; + protected $uploadStatusDataType = ''; + + public function setUploadStatus(Google_Service_DoubleClickBidManager_UploadStatus $uploadStatus) + { + $this->uploadStatus = $uploadStatus; + } + + public function getUploadStatus() + { + return $this->uploadStatus; + } +} + +class Google_Service_DoubleClickBidManager_UploadStatus extends Google_Collection +{ + public $errors; + protected $rowStatusType = 'Google_Service_DoubleClickBidManager_RowStatus'; + protected $rowStatusDataType = 'array'; + + public function setErrors($errors) + { + $this->errors = $errors; + } + + public function getErrors() + { + return $this->errors; + } + + public function setRowStatus($rowStatus) + { + $this->rowStatus = $rowStatus; + } + + public function getRowStatus() + { + return $this->rowStatus; + } +} diff --git a/oauth/Google/Service/Doubleclicksearch.php b/oauth/Google/Service/Doubleclicksearch.php new file mode 100644 index 0000000..766dead --- /dev/null +++ b/oauth/Google/Service/Doubleclicksearch.php @@ -0,0 +1,1550 @@ + + * Report and modify your advertising data in DoubleClick Search (for example, campaigns, ad groups, keywords, and conversions). + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Doubleclicksearch extends Google_Service +{ + /** View and manage your advertising data in DoubleClick Search. */ + const DOUBLECLICKSEARCH = "https://www.googleapis.com/auth/doubleclicksearch"; + + public $conversion; + public $reports; + public $savedColumns; + + + /** + * Constructs the internal representation of the Doubleclicksearch service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'doubleclicksearch/v2/'; + $this->version = 'v2'; + $this->serviceName = 'doubleclicksearch'; + + $this->conversion = new Google_Service_Doubleclicksearch_Conversion_Resource( + $this, + $this->serviceName, + 'conversion', + array( + 'methods' => array( + 'get' => array( + 'path' => 'agency/{agencyId}/advertiser/{advertiserId}/engine/{engineAccountId}/conversion', + 'httpMethod' => 'GET', + 'parameters' => array( + 'agencyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'advertiserId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'engineAccountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'endDate' => array( + 'location' => 'query', + 'type' => 'integer', + 'required' => true, + ), + 'rowCount' => array( + 'location' => 'query', + 'type' => 'integer', + 'required' => true, + ), + 'startDate' => array( + 'location' => 'query', + 'type' => 'integer', + 'required' => true, + ), + 'startRow' => array( + 'location' => 'query', + 'type' => 'integer', + 'required' => true, + ), + 'adGroupId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'campaignId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'adId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'criterionId' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'conversion', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'patch' => array( + 'path' => 'conversion', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'advertiserId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'agencyId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'endDate' => array( + 'location' => 'query', + 'type' => 'integer', + 'required' => true, + ), + 'engineAccountId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'rowCount' => array( + 'location' => 'query', + 'type' => 'integer', + 'required' => true, + ), + 'startDate' => array( + 'location' => 'query', + 'type' => 'integer', + 'required' => true, + ), + 'startRow' => array( + 'location' => 'query', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'conversion', + 'httpMethod' => 'PUT', + 'parameters' => array(), + ),'updateAvailability' => array( + 'path' => 'conversion/updateAvailability', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->reports = new Google_Service_Doubleclicksearch_Reports_Resource( + $this, + $this->serviceName, + 'reports', + array( + 'methods' => array( + 'generate' => array( + 'path' => 'reports/generate', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'get' => array( + 'path' => 'reports/{reportId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'reportId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'getFile' => array( + 'path' => 'reports/{reportId}/files/{reportFragment}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'reportId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'reportFragment' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'request' => array( + 'path' => 'reports', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->savedColumns = new Google_Service_Doubleclicksearch_SavedColumns_Resource( + $this, + $this->serviceName, + 'savedColumns', + array( + 'methods' => array( + 'list' => array( + 'path' => 'agency/{agencyId}/advertiser/{advertiserId}/savedcolumns', + 'httpMethod' => 'GET', + 'parameters' => array( + 'agencyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'advertiserId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "conversion" collection of methods. + * Typical usage is: + * + * $doubleclicksearchService = new Google_Service_Doubleclicksearch(...); + * $conversion = $doubleclicksearchService->conversion; + * + */ +class Google_Service_Doubleclicksearch_Conversion_Resource extends Google_Service_Resource +{ + + /** + * Retrieves a list of conversions from a DoubleClick Search engine account. + * (conversion.get) + * + * @param string $agencyId + * Numeric ID of the agency. + * @param string $advertiserId + * Numeric ID of the advertiser. + * @param string $engineAccountId + * Numeric ID of the engine account. + * @param int $endDate + * Last date (inclusive) on which to retrieve conversions. Format is yyyymmdd. + * @param int $rowCount + * The number of conversions to return per call. + * @param int $startDate + * First date (inclusive) on which to retrieve conversions. Format is yyyymmdd. + * @param string $startRow + * The 0-based starting index for retrieving conversions results. + * @param array $optParams Optional parameters. + * + * @opt_param string adGroupId + * Numeric ID of the ad group. + * @opt_param string campaignId + * Numeric ID of the campaign. + * @opt_param string adId + * Numeric ID of the ad. + * @opt_param string criterionId + * Numeric ID of the criterion. + * @return Google_Service_Doubleclicksearch_ConversionList + */ + public function get($agencyId, $advertiserId, $engineAccountId, $endDate, $rowCount, $startDate, $startRow, $optParams = array()) + { + $params = array('agencyId' => $agencyId, 'advertiserId' => $advertiserId, 'engineAccountId' => $engineAccountId, 'endDate' => $endDate, 'rowCount' => $rowCount, 'startDate' => $startDate, 'startRow' => $startRow); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Doubleclicksearch_ConversionList"); + } + /** + * Inserts a batch of new conversions into DoubleClick Search. + * (conversion.insert) + * + * @param Google_ConversionList $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Doubleclicksearch_ConversionList + */ + public function insert(Google_Service_Doubleclicksearch_ConversionList $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Doubleclicksearch_ConversionList"); + } + /** + * Updates a batch of conversions in DoubleClick Search. This method supports + * patch semantics. (conversion.patch) + * + * @param string $advertiserId + * Numeric ID of the advertiser. + * @param string $agencyId + * Numeric ID of the agency. + * @param int $endDate + * Last date (inclusive) on which to retrieve conversions. Format is yyyymmdd. + * @param string $engineAccountId + * Numeric ID of the engine account. + * @param int $rowCount + * The number of conversions to return per call. + * @param int $startDate + * First date (inclusive) on which to retrieve conversions. Format is yyyymmdd. + * @param string $startRow + * The 0-based starting index for retrieving conversions results. + * @param Google_ConversionList $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Doubleclicksearch_ConversionList + */ + public function patch($advertiserId, $agencyId, $endDate, $engineAccountId, $rowCount, $startDate, $startRow, Google_Service_Doubleclicksearch_ConversionList $postBody, $optParams = array()) + { + $params = array('advertiserId' => $advertiserId, 'agencyId' => $agencyId, 'endDate' => $endDate, 'engineAccountId' => $engineAccountId, 'rowCount' => $rowCount, 'startDate' => $startDate, 'startRow' => $startRow, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Doubleclicksearch_ConversionList"); + } + /** + * Updates a batch of conversions in DoubleClick Search. (conversion.update) + * + * @param Google_ConversionList $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Doubleclicksearch_ConversionList + */ + public function update(Google_Service_Doubleclicksearch_ConversionList $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Doubleclicksearch_ConversionList"); + } + /** + * Updates the availabilities of a batch of floodlight activities in DoubleClick + * Search. (conversion.updateAvailability) + * + * @param Google_UpdateAvailabilityRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Doubleclicksearch_UpdateAvailabilityResponse + */ + public function updateAvailability(Google_Service_Doubleclicksearch_UpdateAvailabilityRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('updateAvailability', array($params), "Google_Service_Doubleclicksearch_UpdateAvailabilityResponse"); + } +} + +/** + * The "reports" collection of methods. + * Typical usage is: + * + * $doubleclicksearchService = new Google_Service_Doubleclicksearch(...); + * $reports = $doubleclicksearchService->reports; + * + */ +class Google_Service_Doubleclicksearch_Reports_Resource extends Google_Service_Resource +{ + + /** + * Generates and returns a report immediately. (reports.generate) + * + * @param Google_ReportRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Doubleclicksearch_Report + */ + public function generate(Google_Service_Doubleclicksearch_ReportRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('generate', array($params), "Google_Service_Doubleclicksearch_Report"); + } + /** + * Polls for the status of a report request. (reports.get) + * + * @param string $reportId + * ID of the report request being polled. + * @param array $optParams Optional parameters. + * @return Google_Service_Doubleclicksearch_Report + */ + public function get($reportId, $optParams = array()) + { + $params = array('reportId' => $reportId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Doubleclicksearch_Report"); + } + /** + * Downloads a report file. (reports.getFile) + * + * @param string $reportId + * ID of the report. + * @param int $reportFragment + * The index of the report fragment to download. + * @param array $optParams Optional parameters. + */ + public function getFile($reportId, $reportFragment, $optParams = array()) + { + $params = array('reportId' => $reportId, 'reportFragment' => $reportFragment); + $params = array_merge($params, $optParams); + return $this->call('getFile', array($params)); + } + /** + * Inserts a report request into the reporting system. (reports.request) + * + * @param Google_ReportRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Doubleclicksearch_Report + */ + public function request(Google_Service_Doubleclicksearch_ReportRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('request', array($params), "Google_Service_Doubleclicksearch_Report"); + } +} + +/** + * The "savedColumns" collection of methods. + * Typical usage is: + * + * $doubleclicksearchService = new Google_Service_Doubleclicksearch(...); + * $savedColumns = $doubleclicksearchService->savedColumns; + * + */ +class Google_Service_Doubleclicksearch_SavedColumns_Resource extends Google_Service_Resource +{ + + /** + * Retrieve the list of saved columns for a specified advertiser. + * (savedColumns.listSavedColumns) + * + * @param string $agencyId + * DS ID of the agency. + * @param string $advertiserId + * DS ID of the advertiser. + * @param array $optParams Optional parameters. + * @return Google_Service_Doubleclicksearch_SavedColumnList + */ + public function listSavedColumns($agencyId, $advertiserId, $optParams = array()) + { + $params = array('agencyId' => $agencyId, 'advertiserId' => $advertiserId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Doubleclicksearch_SavedColumnList"); + } +} + + + + +class Google_Service_Doubleclicksearch_Availability extends Google_Model +{ + public $advertiserId; + public $agencyId; + public $availabilityTimestamp; + public $segmentationId; + public $segmentationName; + public $segmentationType; + + public function setAdvertiserId($advertiserId) + { + $this->advertiserId = $advertiserId; + } + + public function getAdvertiserId() + { + return $this->advertiserId; + } + + public function setAgencyId($agencyId) + { + $this->agencyId = $agencyId; + } + + public function getAgencyId() + { + return $this->agencyId; + } + + public function setAvailabilityTimestamp($availabilityTimestamp) + { + $this->availabilityTimestamp = $availabilityTimestamp; + } + + public function getAvailabilityTimestamp() + { + return $this->availabilityTimestamp; + } + + public function setSegmentationId($segmentationId) + { + $this->segmentationId = $segmentationId; + } + + public function getSegmentationId() + { + return $this->segmentationId; + } + + public function setSegmentationName($segmentationName) + { + $this->segmentationName = $segmentationName; + } + + public function getSegmentationName() + { + return $this->segmentationName; + } + + public function setSegmentationType($segmentationType) + { + $this->segmentationType = $segmentationType; + } + + public function getSegmentationType() + { + return $this->segmentationType; + } +} + +class Google_Service_Doubleclicksearch_Conversion extends Google_Collection +{ + public $adGroupId; + public $adId; + public $advertiserId; + public $agencyId; + public $campaignId; + public $clickId; + public $conversionId; + public $conversionModifiedTimestamp; + public $conversionTimestamp; + public $criterionId; + public $currencyCode; + protected $customDimensionType = 'Google_Service_Doubleclicksearch_CustomDimension'; + protected $customDimensionDataType = 'array'; + protected $customMetricType = 'Google_Service_Doubleclicksearch_CustomMetric'; + protected $customMetricDataType = 'array'; + public $dsConversionId; + public $engineAccountId; + public $floodlightOrderId; + public $quantityMillis; + public $revenueMicros; + public $segmentationId; + public $segmentationName; + public $segmentationType; + public $state; + public $type; + + public function setAdGroupId($adGroupId) + { + $this->adGroupId = $adGroupId; + } + + public function getAdGroupId() + { + return $this->adGroupId; + } + + public function setAdId($adId) + { + $this->adId = $adId; + } + + public function getAdId() + { + return $this->adId; + } + + public function setAdvertiserId($advertiserId) + { + $this->advertiserId = $advertiserId; + } + + public function getAdvertiserId() + { + return $this->advertiserId; + } + + public function setAgencyId($agencyId) + { + $this->agencyId = $agencyId; + } + + public function getAgencyId() + { + return $this->agencyId; + } + + public function setCampaignId($campaignId) + { + $this->campaignId = $campaignId; + } + + public function getCampaignId() + { + return $this->campaignId; + } + + public function setClickId($clickId) + { + $this->clickId = $clickId; + } + + public function getClickId() + { + return $this->clickId; + } + + public function setConversionId($conversionId) + { + $this->conversionId = $conversionId; + } + + public function getConversionId() + { + return $this->conversionId; + } + + public function setConversionModifiedTimestamp($conversionModifiedTimestamp) + { + $this->conversionModifiedTimestamp = $conversionModifiedTimestamp; + } + + public function getConversionModifiedTimestamp() + { + return $this->conversionModifiedTimestamp; + } + + public function setConversionTimestamp($conversionTimestamp) + { + $this->conversionTimestamp = $conversionTimestamp; + } + + public function getConversionTimestamp() + { + return $this->conversionTimestamp; + } + + public function setCriterionId($criterionId) + { + $this->criterionId = $criterionId; + } + + public function getCriterionId() + { + return $this->criterionId; + } + + public function setCurrencyCode($currencyCode) + { + $this->currencyCode = $currencyCode; + } + + public function getCurrencyCode() + { + return $this->currencyCode; + } + + public function setCustomDimension($customDimension) + { + $this->customDimension = $customDimension; + } + + public function getCustomDimension() + { + return $this->customDimension; + } + + public function setCustomMetric($customMetric) + { + $this->customMetric = $customMetric; + } + + public function getCustomMetric() + { + return $this->customMetric; + } + + public function setDsConversionId($dsConversionId) + { + $this->dsConversionId = $dsConversionId; + } + + public function getDsConversionId() + { + return $this->dsConversionId; + } + + public function setEngineAccountId($engineAccountId) + { + $this->engineAccountId = $engineAccountId; + } + + public function getEngineAccountId() + { + return $this->engineAccountId; + } + + public function setFloodlightOrderId($floodlightOrderId) + { + $this->floodlightOrderId = $floodlightOrderId; + } + + public function getFloodlightOrderId() + { + return $this->floodlightOrderId; + } + + public function setQuantityMillis($quantityMillis) + { + $this->quantityMillis = $quantityMillis; + } + + public function getQuantityMillis() + { + return $this->quantityMillis; + } + + public function setRevenueMicros($revenueMicros) + { + $this->revenueMicros = $revenueMicros; + } + + public function getRevenueMicros() + { + return $this->revenueMicros; + } + + public function setSegmentationId($segmentationId) + { + $this->segmentationId = $segmentationId; + } + + public function getSegmentationId() + { + return $this->segmentationId; + } + + public function setSegmentationName($segmentationName) + { + $this->segmentationName = $segmentationName; + } + + public function getSegmentationName() + { + return $this->segmentationName; + } + + public function setSegmentationType($segmentationType) + { + $this->segmentationType = $segmentationType; + } + + public function getSegmentationType() + { + return $this->segmentationType; + } + + public function setState($state) + { + $this->state = $state; + } + + public function getState() + { + return $this->state; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Doubleclicksearch_ConversionList extends Google_Collection +{ + protected $conversionType = 'Google_Service_Doubleclicksearch_Conversion'; + protected $conversionDataType = 'array'; + public $kind; + + public function setConversion($conversion) + { + $this->conversion = $conversion; + } + + public function getConversion() + { + return $this->conversion; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Doubleclicksearch_CustomDimension extends Google_Model +{ + public $name; + public $value; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Doubleclicksearch_CustomMetric extends Google_Model +{ + public $name; + public $value; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Doubleclicksearch_Report extends Google_Collection +{ + protected $filesType = 'Google_Service_Doubleclicksearch_ReportFiles'; + protected $filesDataType = 'array'; + public $id; + public $isReportReady; + public $kind; + protected $requestType = 'Google_Service_Doubleclicksearch_ReportRequest'; + protected $requestDataType = ''; + public $rowCount; + public $rows; + public $statisticsCurrencyCode; + public $statisticsTimeZone; + + public function setFiles($files) + { + $this->files = $files; + } + + public function getFiles() + { + return $this->files; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setIsReportReady($isReportReady) + { + $this->isReportReady = $isReportReady; + } + + public function getIsReportReady() + { + return $this->isReportReady; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRequest(Google_Service_Doubleclicksearch_ReportRequest $request) + { + $this->request = $request; + } + + public function getRequest() + { + return $this->request; + } + + public function setRowCount($rowCount) + { + $this->rowCount = $rowCount; + } + + public function getRowCount() + { + return $this->rowCount; + } + + public function setRows($rows) + { + $this->rows = $rows; + } + + public function getRows() + { + return $this->rows; + } + + public function setStatisticsCurrencyCode($statisticsCurrencyCode) + { + $this->statisticsCurrencyCode = $statisticsCurrencyCode; + } + + public function getStatisticsCurrencyCode() + { + return $this->statisticsCurrencyCode; + } + + public function setStatisticsTimeZone($statisticsTimeZone) + { + $this->statisticsTimeZone = $statisticsTimeZone; + } + + public function getStatisticsTimeZone() + { + return $this->statisticsTimeZone; + } +} + +class Google_Service_Doubleclicksearch_ReportApiColumnSpec extends Google_Model +{ + public $columnName; + public $customDimensionName; + public $endDate; + public $groupByColumn; + public $headerText; + public $platformSource; + public $savedColumnName; + public $startDate; + + public function setColumnName($columnName) + { + $this->columnName = $columnName; + } + + public function getColumnName() + { + return $this->columnName; + } + + public function setCustomDimensionName($customDimensionName) + { + $this->customDimensionName = $customDimensionName; + } + + public function getCustomDimensionName() + { + return $this->customDimensionName; + } + + public function setEndDate($endDate) + { + $this->endDate = $endDate; + } + + public function getEndDate() + { + return $this->endDate; + } + + public function setGroupByColumn($groupByColumn) + { + $this->groupByColumn = $groupByColumn; + } + + public function getGroupByColumn() + { + return $this->groupByColumn; + } + + public function setHeaderText($headerText) + { + $this->headerText = $headerText; + } + + public function getHeaderText() + { + return $this->headerText; + } + + public function setPlatformSource($platformSource) + { + $this->platformSource = $platformSource; + } + + public function getPlatformSource() + { + return $this->platformSource; + } + + public function setSavedColumnName($savedColumnName) + { + $this->savedColumnName = $savedColumnName; + } + + public function getSavedColumnName() + { + return $this->savedColumnName; + } + + public function setStartDate($startDate) + { + $this->startDate = $startDate; + } + + public function getStartDate() + { + return $this->startDate; + } +} + +class Google_Service_Doubleclicksearch_ReportFiles extends Google_Model +{ + public $byteCount; + public $url; + + public function setByteCount($byteCount) + { + $this->byteCount = $byteCount; + } + + public function getByteCount() + { + return $this->byteCount; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Doubleclicksearch_ReportRequest extends Google_Collection +{ + protected $columnsType = 'Google_Service_Doubleclicksearch_ReportApiColumnSpec'; + protected $columnsDataType = 'array'; + public $downloadFormat; + protected $filtersType = 'Google_Service_Doubleclicksearch_ReportRequestFilters'; + protected $filtersDataType = 'array'; + public $includeDeletedEntities; + public $includeRemovedEntities; + public $maxRowsPerFile; + protected $orderByType = 'Google_Service_Doubleclicksearch_ReportRequestOrderBy'; + protected $orderByDataType = 'array'; + protected $reportScopeType = 'Google_Service_Doubleclicksearch_ReportRequestReportScope'; + protected $reportScopeDataType = ''; + public $reportType; + public $rowCount; + public $startRow; + public $statisticsCurrency; + protected $timeRangeType = 'Google_Service_Doubleclicksearch_ReportRequestTimeRange'; + protected $timeRangeDataType = ''; + public $verifySingleTimeZone; + + public function setColumns($columns) + { + $this->columns = $columns; + } + + public function getColumns() + { + return $this->columns; + } + + public function setDownloadFormat($downloadFormat) + { + $this->downloadFormat = $downloadFormat; + } + + public function getDownloadFormat() + { + return $this->downloadFormat; + } + + public function setFilters($filters) + { + $this->filters = $filters; + } + + public function getFilters() + { + return $this->filters; + } + + public function setIncludeDeletedEntities($includeDeletedEntities) + { + $this->includeDeletedEntities = $includeDeletedEntities; + } + + public function getIncludeDeletedEntities() + { + return $this->includeDeletedEntities; + } + + public function setIncludeRemovedEntities($includeRemovedEntities) + { + $this->includeRemovedEntities = $includeRemovedEntities; + } + + public function getIncludeRemovedEntities() + { + return $this->includeRemovedEntities; + } + + public function setMaxRowsPerFile($maxRowsPerFile) + { + $this->maxRowsPerFile = $maxRowsPerFile; + } + + public function getMaxRowsPerFile() + { + return $this->maxRowsPerFile; + } + + public function setOrderBy($orderBy) + { + $this->orderBy = $orderBy; + } + + public function getOrderBy() + { + return $this->orderBy; + } + + public function setReportScope(Google_Service_Doubleclicksearch_ReportRequestReportScope $reportScope) + { + $this->reportScope = $reportScope; + } + + public function getReportScope() + { + return $this->reportScope; + } + + public function setReportType($reportType) + { + $this->reportType = $reportType; + } + + public function getReportType() + { + return $this->reportType; + } + + public function setRowCount($rowCount) + { + $this->rowCount = $rowCount; + } + + public function getRowCount() + { + return $this->rowCount; + } + + public function setStartRow($startRow) + { + $this->startRow = $startRow; + } + + public function getStartRow() + { + return $this->startRow; + } + + public function setStatisticsCurrency($statisticsCurrency) + { + $this->statisticsCurrency = $statisticsCurrency; + } + + public function getStatisticsCurrency() + { + return $this->statisticsCurrency; + } + + public function setTimeRange(Google_Service_Doubleclicksearch_ReportRequestTimeRange $timeRange) + { + $this->timeRange = $timeRange; + } + + public function getTimeRange() + { + return $this->timeRange; + } + + public function setVerifySingleTimeZone($verifySingleTimeZone) + { + $this->verifySingleTimeZone = $verifySingleTimeZone; + } + + public function getVerifySingleTimeZone() + { + return $this->verifySingleTimeZone; + } +} + +class Google_Service_Doubleclicksearch_ReportRequestFilters extends Google_Collection +{ + protected $columnType = 'Google_Service_Doubleclicksearch_ReportApiColumnSpec'; + protected $columnDataType = ''; + public $operator; + public $values; + + public function setColumn(Google_Service_Doubleclicksearch_ReportApiColumnSpec $column) + { + $this->column = $column; + } + + public function getColumn() + { + return $this->column; + } + + public function setOperator($operator) + { + $this->operator = $operator; + } + + public function getOperator() + { + return $this->operator; + } + + public function setValues($values) + { + $this->values = $values; + } + + public function getValues() + { + return $this->values; + } +} + +class Google_Service_Doubleclicksearch_ReportRequestOrderBy extends Google_Model +{ + protected $columnType = 'Google_Service_Doubleclicksearch_ReportApiColumnSpec'; + protected $columnDataType = ''; + public $sortOrder; + + public function setColumn(Google_Service_Doubleclicksearch_ReportApiColumnSpec $column) + { + $this->column = $column; + } + + public function getColumn() + { + return $this->column; + } + + public function setSortOrder($sortOrder) + { + $this->sortOrder = $sortOrder; + } + + public function getSortOrder() + { + return $this->sortOrder; + } +} + +class Google_Service_Doubleclicksearch_ReportRequestReportScope extends Google_Model +{ + public $adGroupId; + public $adId; + public $advertiserId; + public $agencyId; + public $campaignId; + public $engineAccountId; + public $keywordId; + + public function setAdGroupId($adGroupId) + { + $this->adGroupId = $adGroupId; + } + + public function getAdGroupId() + { + return $this->adGroupId; + } + + public function setAdId($adId) + { + $this->adId = $adId; + } + + public function getAdId() + { + return $this->adId; + } + + public function setAdvertiserId($advertiserId) + { + $this->advertiserId = $advertiserId; + } + + public function getAdvertiserId() + { + return $this->advertiserId; + } + + public function setAgencyId($agencyId) + { + $this->agencyId = $agencyId; + } + + public function getAgencyId() + { + return $this->agencyId; + } + + public function setCampaignId($campaignId) + { + $this->campaignId = $campaignId; + } + + public function getCampaignId() + { + return $this->campaignId; + } + + public function setEngineAccountId($engineAccountId) + { + $this->engineAccountId = $engineAccountId; + } + + public function getEngineAccountId() + { + return $this->engineAccountId; + } + + public function setKeywordId($keywordId) + { + $this->keywordId = $keywordId; + } + + public function getKeywordId() + { + return $this->keywordId; + } +} + +class Google_Service_Doubleclicksearch_ReportRequestTimeRange extends Google_Model +{ + public $changedAttributesSinceTimestamp; + public $changedMetricsSinceTimestamp; + public $endDate; + public $startDate; + + public function setChangedAttributesSinceTimestamp($changedAttributesSinceTimestamp) + { + $this->changedAttributesSinceTimestamp = $changedAttributesSinceTimestamp; + } + + public function getChangedAttributesSinceTimestamp() + { + return $this->changedAttributesSinceTimestamp; + } + + public function setChangedMetricsSinceTimestamp($changedMetricsSinceTimestamp) + { + $this->changedMetricsSinceTimestamp = $changedMetricsSinceTimestamp; + } + + public function getChangedMetricsSinceTimestamp() + { + return $this->changedMetricsSinceTimestamp; + } + + public function setEndDate($endDate) + { + $this->endDate = $endDate; + } + + public function getEndDate() + { + return $this->endDate; + } + + public function setStartDate($startDate) + { + $this->startDate = $startDate; + } + + public function getStartDate() + { + return $this->startDate; + } +} + +class Google_Service_Doubleclicksearch_ReportRow extends Google_Model +{ + +} + +class Google_Service_Doubleclicksearch_SavedColumn extends Google_Model +{ + public $kind; + public $savedColumnName; + public $type; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSavedColumnName($savedColumnName) + { + $this->savedColumnName = $savedColumnName; + } + + public function getSavedColumnName() + { + return $this->savedColumnName; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Doubleclicksearch_SavedColumnList extends Google_Collection +{ + protected $itemsType = 'Google_Service_Doubleclicksearch_SavedColumn'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Doubleclicksearch_UpdateAvailabilityRequest extends Google_Collection +{ + protected $availabilitiesType = 'Google_Service_Doubleclicksearch_Availability'; + protected $availabilitiesDataType = 'array'; + + public function setAvailabilities($availabilities) + { + $this->availabilities = $availabilities; + } + + public function getAvailabilities() + { + return $this->availabilities; + } +} + +class Google_Service_Doubleclicksearch_UpdateAvailabilityResponse extends Google_Collection +{ + protected $availabilitiesType = 'Google_Service_Doubleclicksearch_Availability'; + protected $availabilitiesDataType = 'array'; + + public function setAvailabilities($availabilities) + { + $this->availabilities = $availabilities; + } + + public function getAvailabilities() + { + return $this->availabilities; + } +} diff --git a/oauth/Google/Service/Drive.php b/oauth/Google/Service/Drive.php new file mode 100644 index 0000000..1ed4858 --- /dev/null +++ b/oauth/Google/Service/Drive.php @@ -0,0 +1,5982 @@ + + * The API to interact with Drive. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Drive extends Google_Service +{ + /** View and manage the files and documents in your Google Drive. */ + const DRIVE = "https://www.googleapis.com/auth/drive"; + /** View and manage its own configuration data in your Google Drive. */ + const DRIVE_APPDATA = "https://www.googleapis.com/auth/drive.appdata"; + /** View your Google Drive apps. */ + const DRIVE_APPS_READONLY = "https://www.googleapis.com/auth/drive.apps.readonly"; + /** View and manage Google Drive files that you have opened or created with this app. */ + const DRIVE_FILE = "https://www.googleapis.com/auth/drive.file"; + /** View metadata for files and documents in your Google Drive. */ + const DRIVE_METADATA_READONLY = "https://www.googleapis.com/auth/drive.metadata.readonly"; + /** View the files and documents in your Google Drive. */ + const DRIVE_READONLY = "https://www.googleapis.com/auth/drive.readonly"; + /** Modify your Google Apps Script scripts' behavior. */ + const DRIVE_SCRIPTS = "https://www.googleapis.com/auth/drive.scripts"; + + public $about; + public $apps; + public $changes; + public $channels; + public $children; + public $comments; + public $files; + public $parents; + public $permissions; + public $properties; + public $realtime; + public $replies; + public $revisions; + + + /** + * Constructs the internal representation of the Drive service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'drive/v2/'; + $this->version = 'v2'; + $this->serviceName = 'drive'; + + $this->about = new Google_Service_Drive_About_Resource( + $this, + $this->serviceName, + 'about', + array( + 'methods' => array( + 'get' => array( + 'path' => 'about', + 'httpMethod' => 'GET', + 'parameters' => array( + 'includeSubscribed' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxChangeIdCount' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startChangeId' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->apps = new Google_Service_Drive_Apps_Resource( + $this, + $this->serviceName, + 'apps', + array( + 'methods' => array( + 'get' => array( + 'path' => 'apps/{appId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'appId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'apps', + 'httpMethod' => 'GET', + 'parameters' => array( + 'languageCode' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'appFilterExtensions' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'appFilterMimeTypes' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->changes = new Google_Service_Drive_Changes_Resource( + $this, + $this->serviceName, + 'changes', + array( + 'methods' => array( + 'get' => array( + 'path' => 'changes/{changeId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'changeId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'changes', + 'httpMethod' => 'GET', + 'parameters' => array( + 'includeSubscribed' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'startChangeId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'includeDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'watch' => array( + 'path' => 'changes/watch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'includeSubscribed' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'startChangeId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'includeDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->channels = new Google_Service_Drive_Channels_Resource( + $this, + $this->serviceName, + 'channels', + array( + 'methods' => array( + 'stop' => array( + 'path' => 'channels/stop', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->children = new Google_Service_Drive_Children_Resource( + $this, + $this->serviceName, + 'children', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'files/{folderId}/children/{childId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'folderId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'childId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'files/{folderId}/children/{childId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'folderId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'childId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'files/{folderId}/children', + 'httpMethod' => 'POST', + 'parameters' => array( + 'folderId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'files/{folderId}/children', + 'httpMethod' => 'GET', + 'parameters' => array( + 'folderId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'q' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->comments = new Google_Service_Drive_Comments_Resource( + $this, + $this->serviceName, + 'comments', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'files/{fileId}/comments/{commentId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'files/{fileId}/comments/{commentId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'includeDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'insert' => array( + 'path' => 'files/{fileId}/comments', + 'httpMethod' => 'POST', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'files/{fileId}/comments', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'updatedMin' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'includeDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'files/{fileId}/comments/{commentId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'files/{fileId}/comments/{commentId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->files = new Google_Service_Drive_Files_Resource( + $this, + $this->serviceName, + 'files', + array( + 'methods' => array( + 'copy' => array( + 'path' => 'files/{fileId}/copy', + 'httpMethod' => 'POST', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'convert' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'ocrLanguage' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'visibility' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pinned' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'ocr' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'timedTextTrackName' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'timedTextLanguage' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'delete' => array( + 'path' => 'files/{fileId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'emptyTrash' => array( + 'path' => 'files/trash', + 'httpMethod' => 'DELETE', + 'parameters' => array(), + ),'get' => array( + 'path' => 'files/{fileId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'updateViewedDate' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'files', + 'httpMethod' => 'POST', + 'parameters' => array( + 'convert' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'useContentAsIndexableText' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'ocrLanguage' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'visibility' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pinned' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'ocr' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'timedTextTrackName' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'timedTextLanguage' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'files', + 'httpMethod' => 'GET', + 'parameters' => array( + 'q' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'corpus' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'files/{fileId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'addParents' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'updateViewedDate' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'removeParents' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'setModifiedDate' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'convert' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'useContentAsIndexableText' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'ocrLanguage' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pinned' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'newRevision' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'ocr' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'timedTextLanguage' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'timedTextTrackName' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'touch' => array( + 'path' => 'files/{fileId}/touch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'trash' => array( + 'path' => 'files/{fileId}/trash', + 'httpMethod' => 'POST', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'untrash' => array( + 'path' => 'files/{fileId}/untrash', + 'httpMethod' => 'POST', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'files/{fileId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'addParents' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'updateViewedDate' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'removeParents' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'setModifiedDate' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'convert' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'useContentAsIndexableText' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'ocrLanguage' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pinned' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'newRevision' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'ocr' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'timedTextLanguage' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'timedTextTrackName' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'watch' => array( + 'path' => 'files/{fileId}/watch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'updateViewedDate' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->parents = new Google_Service_Drive_Parents_Resource( + $this, + $this->serviceName, + 'parents', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'files/{fileId}/parents/{parentId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'parentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'files/{fileId}/parents/{parentId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'parentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'files/{fileId}/parents', + 'httpMethod' => 'POST', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'files/{fileId}/parents', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->permissions = new Google_Service_Drive_Permissions_Resource( + $this, + $this->serviceName, + 'permissions', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'files/{fileId}/permissions/{permissionId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'permissionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'files/{fileId}/permissions/{permissionId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'permissionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'getIdForEmail' => array( + 'path' => 'permissionIds/{email}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'email' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'files/{fileId}/permissions', + 'httpMethod' => 'POST', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'emailMessage' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sendNotificationEmails' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'list' => array( + 'path' => 'files/{fileId}/permissions', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => 'files/{fileId}/permissions/{permissionId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'permissionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'transferOwnership' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'update' => array( + 'path' => 'files/{fileId}/permissions/{permissionId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'permissionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'transferOwnership' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ), + ) + ) + ); + $this->properties = new Google_Service_Drive_Properties_Resource( + $this, + $this->serviceName, + 'properties', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'files/{fileId}/properties/{propertyKey}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'propertyKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'visibility' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'get' => array( + 'path' => 'files/{fileId}/properties/{propertyKey}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'propertyKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'visibility' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'files/{fileId}/properties', + 'httpMethod' => 'POST', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'files/{fileId}/properties', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => 'files/{fileId}/properties/{propertyKey}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'propertyKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'visibility' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'update' => array( + 'path' => 'files/{fileId}/properties/{propertyKey}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'propertyKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'visibility' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->realtime = new Google_Service_Drive_Realtime_Resource( + $this, + $this->serviceName, + 'realtime', + array( + 'methods' => array( + 'get' => array( + 'path' => 'files/{fileId}/realtime', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'revision' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'update' => array( + 'path' => 'files/{fileId}/realtime', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'baseRevision' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->replies = new Google_Service_Drive_Replies_Resource( + $this, + $this->serviceName, + 'replies', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'files/{fileId}/comments/{commentId}/replies/{replyId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'replyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'files/{fileId}/comments/{commentId}/replies/{replyId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'replyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'includeDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'insert' => array( + 'path' => 'files/{fileId}/comments/{commentId}/replies', + 'httpMethod' => 'POST', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'files/{fileId}/comments/{commentId}/replies', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'includeDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'files/{fileId}/comments/{commentId}/replies/{replyId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'replyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'files/{fileId}/comments/{commentId}/replies/{replyId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'replyId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->revisions = new Google_Service_Drive_Revisions_Resource( + $this, + $this->serviceName, + 'revisions', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'files/{fileId}/revisions/{revisionId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'revisionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'files/{fileId}/revisions/{revisionId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'revisionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'files/{fileId}/revisions', + 'httpMethod' => 'GET', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => 'files/{fileId}/revisions/{revisionId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'revisionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'files/{fileId}/revisions/{revisionId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'fileId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'revisionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "about" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $about = $driveService->about; + * + */ +class Google_Service_Drive_About_Resource extends Google_Service_Resource +{ + + /** + * Gets the information about the current user along with Drive API settings + * (about.get) + * + * @param array $optParams Optional parameters. + * + * @opt_param bool includeSubscribed + * When calculating the number of remaining change IDs, whether to include public files the user + * has opened and shared files. When set to false, this counts only change IDs for owned files and + * any shared or public files that the user has explicitly added to a folder they own. + * @opt_param string maxChangeIdCount + * Maximum number of remaining change IDs to count + * @opt_param string startChangeId + * Change ID to start counting from when calculating number of remaining change IDs + * @return Google_Service_Drive_About + */ + public function get($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_About"); + } +} + +/** + * The "apps" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $apps = $driveService->apps; + * + */ +class Google_Service_Drive_Apps_Resource extends Google_Service_Resource +{ + + /** + * Gets a specific app. (apps.get) + * + * @param string $appId + * The ID of the app. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_App + */ + public function get($appId, $optParams = array()) + { + $params = array('appId' => $appId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_App"); + } + /** + * Lists a user's installed apps. (apps.listApps) + * + * @param array $optParams Optional parameters. + * + * @opt_param string languageCode + * A language or locale code, as defined by BCP 47, with some extensions from Unicode's LDML format + * (http://www.unicode.org/reports/tr35/). + * @opt_param string appFilterExtensions + * A comma-separated list of file extensions for open with filtering. All apps within the given app + * query scope which can open any of the given file extensions will be included in the response. If + * appFilterMimeTypes are provided as well, the result is a union of the two resulting app lists. + * @opt_param string appFilterMimeTypes + * A comma-separated list of MIME types for open with filtering. All apps within the given app + * query scope which can open any of the given MIME types will be included in the response. If + * appFilterExtensions are provided as well, the result is a union of the two resulting app lists. + * @return Google_Service_Drive_AppList + */ + public function listApps($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Drive_AppList"); + } +} + +/** + * The "changes" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $changes = $driveService->changes; + * + */ +class Google_Service_Drive_Changes_Resource extends Google_Service_Resource +{ + + /** + * Gets a specific change. (changes.get) + * + * @param string $changeId + * The ID of the change. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_Change + */ + public function get($changeId, $optParams = array()) + { + $params = array('changeId' => $changeId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_Change"); + } + /** + * Lists the changes for a user. (changes.listChanges) + * + * @param array $optParams Optional parameters. + * + * @opt_param bool includeSubscribed + * Whether to include public files the user has opened and shared files. When set to false, the + * list only includes owned files plus any shared or public files the user has explicitly added to + * a folder they own. + * @opt_param string startChangeId + * Change ID to start listing changes from. + * @opt_param bool includeDeleted + * Whether to include deleted items. + * @opt_param int maxResults + * Maximum number of changes to return. + * @opt_param string pageToken + * Page token for changes. + * @return Google_Service_Drive_ChangeList + */ + public function listChanges($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Drive_ChangeList"); + } + /** + * Subscribe to changes for a user. (changes.watch) + * + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool includeSubscribed + * Whether to include public files the user has opened and shared files. When set to false, the + * list only includes owned files plus any shared or public files the user has explicitly added to + * a folder they own. + * @opt_param string startChangeId + * Change ID to start listing changes from. + * @opt_param bool includeDeleted + * Whether to include deleted items. + * @opt_param int maxResults + * Maximum number of changes to return. + * @opt_param string pageToken + * Page token for changes. + * @return Google_Service_Drive_Channel + */ + public function watch(Google_Service_Drive_Channel $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('watch', array($params), "Google_Service_Drive_Channel"); + } +} + +/** + * The "channels" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $channels = $driveService->channels; + * + */ +class Google_Service_Drive_Channels_Resource extends Google_Service_Resource +{ + + /** + * Stop watching resources through this channel (channels.stop) + * + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + */ + public function stop(Google_Service_Drive_Channel $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('stop', array($params)); + } +} + +/** + * The "children" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $children = $driveService->children; + * + */ +class Google_Service_Drive_Children_Resource extends Google_Service_Resource +{ + + /** + * Removes a child from a folder. (children.delete) + * + * @param string $folderId + * The ID of the folder. + * @param string $childId + * The ID of the child. + * @param array $optParams Optional parameters. + */ + public function delete($folderId, $childId, $optParams = array()) + { + $params = array('folderId' => $folderId, 'childId' => $childId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets a specific child reference. (children.get) + * + * @param string $folderId + * The ID of the folder. + * @param string $childId + * The ID of the child. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_ChildReference + */ + public function get($folderId, $childId, $optParams = array()) + { + $params = array('folderId' => $folderId, 'childId' => $childId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_ChildReference"); + } + /** + * Inserts a file into a folder. (children.insert) + * + * @param string $folderId + * The ID of the folder. + * @param Google_ChildReference $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_ChildReference + */ + public function insert($folderId, Google_Service_Drive_ChildReference $postBody, $optParams = array()) + { + $params = array('folderId' => $folderId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Drive_ChildReference"); + } + /** + * Lists a folder's children. (children.listChildren) + * + * @param string $folderId + * The ID of the folder. + * @param array $optParams Optional parameters. + * + * @opt_param string q + * Query string for searching children. + * @opt_param string pageToken + * Page token for children. + * @opt_param int maxResults + * Maximum number of children to return. + * @return Google_Service_Drive_ChildList + */ + public function listChildren($folderId, $optParams = array()) + { + $params = array('folderId' => $folderId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Drive_ChildList"); + } +} + +/** + * The "comments" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $comments = $driveService->comments; + * + */ +class Google_Service_Drive_Comments_Resource extends Google_Service_Resource +{ + + /** + * Deletes a comment. (comments.delete) + * + * @param string $fileId + * The ID of the file. + * @param string $commentId + * The ID of the comment. + * @param array $optParams Optional parameters. + */ + public function delete($fileId, $commentId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'commentId' => $commentId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets a comment by ID. (comments.get) + * + * @param string $fileId + * The ID of the file. + * @param string $commentId + * The ID of the comment. + * @param array $optParams Optional parameters. + * + * @opt_param bool includeDeleted + * If set, this will succeed when retrieving a deleted comment, and will include any deleted + * replies. + * @return Google_Service_Drive_Comment + */ + public function get($fileId, $commentId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'commentId' => $commentId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_Comment"); + } + /** + * Creates a new comment on the given file. (comments.insert) + * + * @param string $fileId + * The ID of the file. + * @param Google_Comment $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_Comment + */ + public function insert($fileId, Google_Service_Drive_Comment $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Drive_Comment"); + } + /** + * Lists a file's comments. (comments.listComments) + * + * @param string $fileId + * The ID of the file. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The continuation token, used to page through large result sets. To get the next page of results, + * set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string updatedMin + * Only discussions that were updated after this timestamp will be returned. Formatted as an RFC + * 3339 timestamp. + * @opt_param bool includeDeleted + * If set, all comments and replies, including deleted comments and replies (with content stripped) + * will be returned. + * @opt_param int maxResults + * The maximum number of discussions to include in the response, used for paging. + * @return Google_Service_Drive_CommentList + */ + public function listComments($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Drive_CommentList"); + } + /** + * Updates an existing comment. This method supports patch semantics. + * (comments.patch) + * + * @param string $fileId + * The ID of the file. + * @param string $commentId + * The ID of the comment. + * @param Google_Comment $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_Comment + */ + public function patch($fileId, $commentId, Google_Service_Drive_Comment $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'commentId' => $commentId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Drive_Comment"); + } + /** + * Updates an existing comment. (comments.update) + * + * @param string $fileId + * The ID of the file. + * @param string $commentId + * The ID of the comment. + * @param Google_Comment $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_Comment + */ + public function update($fileId, $commentId, Google_Service_Drive_Comment $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'commentId' => $commentId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Drive_Comment"); + } +} + +/** + * The "files" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $files = $driveService->files; + * + */ +class Google_Service_Drive_Files_Resource extends Google_Service_Resource +{ + + /** + * Creates a copy of the specified file. (files.copy) + * + * @param string $fileId + * The ID of the file to copy. + * @param Google_DriveFile $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool convert + * Whether to convert this file to the corresponding Google Docs format. + * @opt_param string ocrLanguage + * If ocr is true, hints at the language to use. Valid values are ISO 639-1 codes. + * @opt_param string visibility + * The visibility of the new file. This parameter is only relevant when the source is not a native + * Google Doc and convert=false. + * @opt_param bool pinned + * Whether to pin the head revision of the new copy. + * @opt_param bool ocr + * Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads. + * @opt_param string timedTextTrackName + * The timed text track name. + * @opt_param string timedTextLanguage + * The language of the timed text. + * @return Google_Service_Drive_DriveFile + */ + public function copy($fileId, Google_Service_Drive_DriveFile $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('copy', array($params), "Google_Service_Drive_DriveFile"); + } + /** + * Permanently deletes a file by ID. Skips the trash. (files.delete) + * + * @param string $fileId + * The ID of the file to delete. + * @param array $optParams Optional parameters. + */ + public function delete($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Permanently deletes all of the user's trashed files. (files.emptyTrash) + * + * @param array $optParams Optional parameters. + */ + public function emptyTrash($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('emptyTrash', array($params)); + } + /** + * Gets a file's metadata by ID. (files.get) + * + * @param string $fileId + * The ID for the file in question. + * @param array $optParams Optional parameters. + * + * @opt_param bool updateViewedDate + * Whether to update the view date after successfully retrieving the file. + * @opt_param string projection + * This parameter is deprecated and has no function. + * @return Google_Service_Drive_DriveFile + */ + public function get($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_DriveFile"); + } + /** + * Insert a new file. (files.insert) + * + * @param Google_DriveFile $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool convert + * Whether to convert this file to the corresponding Google Docs format. + * @opt_param bool useContentAsIndexableText + * Whether to use the content as indexable text. + * @opt_param string ocrLanguage + * If ocr is true, hints at the language to use. Valid values are ISO 639-1 codes. + * @opt_param string visibility + * The visibility of the new file. This parameter is only relevant when convert=false. + * @opt_param bool pinned + * Whether to pin the head revision of the uploaded file. + * @opt_param bool ocr + * Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads. + * @opt_param string timedTextTrackName + * The timed text track name. + * @opt_param string timedTextLanguage + * The language of the timed text. + * @return Google_Service_Drive_DriveFile + */ + public function insert(Google_Service_Drive_DriveFile $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Drive_DriveFile"); + } + /** + * Lists the user's files. (files.listFiles) + * + * @param array $optParams Optional parameters. + * + * @opt_param string q + * Query string for searching files. + * @opt_param string pageToken + * Page token for files. + * @opt_param string corpus + * The body of items (files/documents) to which the query applies. + * @opt_param string projection + * This parameter is deprecated and has no function. + * @opt_param int maxResults + * Maximum number of files to return. + * @return Google_Service_Drive_FileList + */ + public function listFiles($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Drive_FileList"); + } + /** + * Updates file metadata and/or content. This method supports patch semantics. + * (files.patch) + * + * @param string $fileId + * The ID of the file to update. + * @param Google_DriveFile $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string addParents + * Comma-separated list of parent IDs to add. + * @opt_param bool updateViewedDate + * Whether to update the view date after successfully updating the file. + * @opt_param string removeParents + * Comma-separated list of parent IDs to remove. + * @opt_param bool setModifiedDate + * Whether to set the modified date with the supplied modified date. + * @opt_param bool convert + * Whether to convert this file to the corresponding Google Docs format. + * @opt_param bool useContentAsIndexableText + * Whether to use the content as indexable text. + * @opt_param string ocrLanguage + * If ocr is true, hints at the language to use. Valid values are ISO 639-1 codes. + * @opt_param bool pinned + * Whether to pin the new revision. + * @opt_param bool newRevision + * Whether a blob upload should create a new revision. If false, the blob data in the current head + * revision is replaced. If not set or true, a new blob is created as head revision, and previous + * revisions are preserved (causing increased use of the user's data storage quota). + * @opt_param bool ocr + * Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads. + * @opt_param string timedTextLanguage + * The language of the timed text. + * @opt_param string timedTextTrackName + * The timed text track name. + * @return Google_Service_Drive_DriveFile + */ + public function patch($fileId, Google_Service_Drive_DriveFile $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Drive_DriveFile"); + } + /** + * Set the file's updated time to the current server time. (files.touch) + * + * @param string $fileId + * The ID of the file to update. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_DriveFile + */ + public function touch($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('touch', array($params), "Google_Service_Drive_DriveFile"); + } + /** + * Moves a file to the trash. (files.trash) + * + * @param string $fileId + * The ID of the file to trash. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_DriveFile + */ + public function trash($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('trash', array($params), "Google_Service_Drive_DriveFile"); + } + /** + * Restores a file from the trash. (files.untrash) + * + * @param string $fileId + * The ID of the file to untrash. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_DriveFile + */ + public function untrash($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('untrash', array($params), "Google_Service_Drive_DriveFile"); + } + /** + * Updates file metadata and/or content. (files.update) + * + * @param string $fileId + * The ID of the file to update. + * @param Google_DriveFile $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string addParents + * Comma-separated list of parent IDs to add. + * @opt_param bool updateViewedDate + * Whether to update the view date after successfully updating the file. + * @opt_param string removeParents + * Comma-separated list of parent IDs to remove. + * @opt_param bool setModifiedDate + * Whether to set the modified date with the supplied modified date. + * @opt_param bool convert + * Whether to convert this file to the corresponding Google Docs format. + * @opt_param bool useContentAsIndexableText + * Whether to use the content as indexable text. + * @opt_param string ocrLanguage + * If ocr is true, hints at the language to use. Valid values are ISO 639-1 codes. + * @opt_param bool pinned + * Whether to pin the new revision. + * @opt_param bool newRevision + * Whether a blob upload should create a new revision. If false, the blob data in the current head + * revision is replaced. If not set or true, a new blob is created as head revision, and previous + * revisions are preserved (causing increased use of the user's data storage quota). + * @opt_param bool ocr + * Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads. + * @opt_param string timedTextLanguage + * The language of the timed text. + * @opt_param string timedTextTrackName + * The timed text track name. + * @return Google_Service_Drive_DriveFile + */ + public function update($fileId, Google_Service_Drive_DriveFile $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Drive_DriveFile"); + } + /** + * Subscribe to changes on a file (files.watch) + * + * @param string $fileId + * The ID for the file in question. + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool updateViewedDate + * Whether to update the view date after successfully retrieving the file. + * @opt_param string projection + * This parameter is deprecated and has no function. + * @return Google_Service_Drive_Channel + */ + public function watch($fileId, Google_Service_Drive_Channel $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('watch', array($params), "Google_Service_Drive_Channel"); + } +} + +/** + * The "parents" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $parents = $driveService->parents; + * + */ +class Google_Service_Drive_Parents_Resource extends Google_Service_Resource +{ + + /** + * Removes a parent from a file. (parents.delete) + * + * @param string $fileId + * The ID of the file. + * @param string $parentId + * The ID of the parent. + * @param array $optParams Optional parameters. + */ + public function delete($fileId, $parentId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'parentId' => $parentId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets a specific parent reference. (parents.get) + * + * @param string $fileId + * The ID of the file. + * @param string $parentId + * The ID of the parent. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_ParentReference + */ + public function get($fileId, $parentId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'parentId' => $parentId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_ParentReference"); + } + /** + * Adds a parent folder for a file. (parents.insert) + * + * @param string $fileId + * The ID of the file. + * @param Google_ParentReference $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_ParentReference + */ + public function insert($fileId, Google_Service_Drive_ParentReference $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Drive_ParentReference"); + } + /** + * Lists a file's parents. (parents.listParents) + * + * @param string $fileId + * The ID of the file. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_ParentList + */ + public function listParents($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Drive_ParentList"); + } +} + +/** + * The "permissions" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $permissions = $driveService->permissions; + * + */ +class Google_Service_Drive_Permissions_Resource extends Google_Service_Resource +{ + + /** + * Deletes a permission from a file. (permissions.delete) + * + * @param string $fileId + * The ID for the file. + * @param string $permissionId + * The ID for the permission. + * @param array $optParams Optional parameters. + */ + public function delete($fileId, $permissionId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'permissionId' => $permissionId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets a permission by ID. (permissions.get) + * + * @param string $fileId + * The ID for the file. + * @param string $permissionId + * The ID for the permission. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_Permission + */ + public function get($fileId, $permissionId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'permissionId' => $permissionId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_Permission"); + } + /** + * Returns the permission ID for an email address. (permissions.getIdForEmail) + * + * @param string $email + * The email address for which to return a permission ID + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_PermissionId + */ + public function getIdForEmail($email, $optParams = array()) + { + $params = array('email' => $email); + $params = array_merge($params, $optParams); + return $this->call('getIdForEmail', array($params), "Google_Service_Drive_PermissionId"); + } + /** + * Inserts a permission for a file. (permissions.insert) + * + * @param string $fileId + * The ID for the file. + * @param Google_Permission $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string emailMessage + * A custom message to include in notification emails. + * @opt_param bool sendNotificationEmails + * Whether to send notification emails when sharing to users or groups. This parameter is ignored + * and an email is sent if the role is owner. + * @return Google_Service_Drive_Permission + */ + public function insert($fileId, Google_Service_Drive_Permission $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Drive_Permission"); + } + /** + * Lists a file's permissions. (permissions.listPermissions) + * + * @param string $fileId + * The ID for the file. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_PermissionList + */ + public function listPermissions($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Drive_PermissionList"); + } + /** + * Updates a permission. This method supports patch semantics. + * (permissions.patch) + * + * @param string $fileId + * The ID for the file. + * @param string $permissionId + * The ID for the permission. + * @param Google_Permission $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool transferOwnership + * Whether changing a role to 'owner' should also downgrade the current owners to writers. + * @return Google_Service_Drive_Permission + */ + public function patch($fileId, $permissionId, Google_Service_Drive_Permission $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'permissionId' => $permissionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Drive_Permission"); + } + /** + * Updates a permission. (permissions.update) + * + * @param string $fileId + * The ID for the file. + * @param string $permissionId + * The ID for the permission. + * @param Google_Permission $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool transferOwnership + * Whether changing a role to 'owner' should also downgrade the current owners to writers. + * @return Google_Service_Drive_Permission + */ + public function update($fileId, $permissionId, Google_Service_Drive_Permission $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'permissionId' => $permissionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Drive_Permission"); + } +} + +/** + * The "properties" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $properties = $driveService->properties; + * + */ +class Google_Service_Drive_Properties_Resource extends Google_Service_Resource +{ + + /** + * Deletes a property. (properties.delete) + * + * @param string $fileId + * The ID of the file. + * @param string $propertyKey + * The key of the property. + * @param array $optParams Optional parameters. + * + * @opt_param string visibility + * The visibility of the property. + */ + public function delete($fileId, $propertyKey, $optParams = array()) + { + $params = array('fileId' => $fileId, 'propertyKey' => $propertyKey); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets a property by its key. (properties.get) + * + * @param string $fileId + * The ID of the file. + * @param string $propertyKey + * The key of the property. + * @param array $optParams Optional parameters. + * + * @opt_param string visibility + * The visibility of the property. + * @return Google_Service_Drive_Property + */ + public function get($fileId, $propertyKey, $optParams = array()) + { + $params = array('fileId' => $fileId, 'propertyKey' => $propertyKey); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_Property"); + } + /** + * Adds a property to a file. (properties.insert) + * + * @param string $fileId + * The ID of the file. + * @param Google_Property $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_Property + */ + public function insert($fileId, Google_Service_Drive_Property $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Drive_Property"); + } + /** + * Lists a file's properties. (properties.listProperties) + * + * @param string $fileId + * The ID of the file. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_PropertyList + */ + public function listProperties($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Drive_PropertyList"); + } + /** + * Updates a property. This method supports patch semantics. (properties.patch) + * + * @param string $fileId + * The ID of the file. + * @param string $propertyKey + * The key of the property. + * @param Google_Property $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string visibility + * The visibility of the property. + * @return Google_Service_Drive_Property + */ + public function patch($fileId, $propertyKey, Google_Service_Drive_Property $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'propertyKey' => $propertyKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Drive_Property"); + } + /** + * Updates a property. (properties.update) + * + * @param string $fileId + * The ID of the file. + * @param string $propertyKey + * The key of the property. + * @param Google_Property $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string visibility + * The visibility of the property. + * @return Google_Service_Drive_Property + */ + public function update($fileId, $propertyKey, Google_Service_Drive_Property $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'propertyKey' => $propertyKey, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Drive_Property"); + } +} + +/** + * The "realtime" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $realtime = $driveService->realtime; + * + */ +class Google_Service_Drive_Realtime_Resource extends Google_Service_Resource +{ + + /** + * Exports the contents of the Realtime API data model associated with this file + * as JSON. (realtime.get) + * + * @param string $fileId + * The ID of the file that the Realtime API data model is associated with. + * @param array $optParams Optional parameters. + * + * @opt_param int revision + * The revision of the Realtime API data model to export. Revisions start at 1 (the initial empty + * data model) and are incremented with each change. If this parameter is excluded, the most recent + * data model will be returned. + */ + public function get($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params)); + } + /** + * Overwrites the Realtime API data model associated with this file with the + * provided JSON data model. (realtime.update) + * + * @param string $fileId + * The ID of the file that the Realtime API data model is associated with. + * @param array $optParams Optional parameters. + * + * @opt_param string baseRevision + * The revision of the model to diff the uploaded model against. If set, the uploaded model is + * diffed against the provided revision and those differences are merged with any changes made to + * the model after the provided revision. If not set, the uploaded model replaces the current model + * on the server. + */ + public function update($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('update', array($params)); + } +} + +/** + * The "replies" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $replies = $driveService->replies; + * + */ +class Google_Service_Drive_Replies_Resource extends Google_Service_Resource +{ + + /** + * Deletes a reply. (replies.delete) + * + * @param string $fileId + * The ID of the file. + * @param string $commentId + * The ID of the comment. + * @param string $replyId + * The ID of the reply. + * @param array $optParams Optional parameters. + */ + public function delete($fileId, $commentId, $replyId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'commentId' => $commentId, 'replyId' => $replyId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets a reply. (replies.get) + * + * @param string $fileId + * The ID of the file. + * @param string $commentId + * The ID of the comment. + * @param string $replyId + * The ID of the reply. + * @param array $optParams Optional parameters. + * + * @opt_param bool includeDeleted + * If set, this will succeed when retrieving a deleted reply. + * @return Google_Service_Drive_CommentReply + */ + public function get($fileId, $commentId, $replyId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'commentId' => $commentId, 'replyId' => $replyId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_CommentReply"); + } + /** + * Creates a new reply to the given comment. (replies.insert) + * + * @param string $fileId + * The ID of the file. + * @param string $commentId + * The ID of the comment. + * @param Google_CommentReply $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_CommentReply + */ + public function insert($fileId, $commentId, Google_Service_Drive_CommentReply $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'commentId' => $commentId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Drive_CommentReply"); + } + /** + * Lists all of the replies to a comment. (replies.listReplies) + * + * @param string $fileId + * The ID of the file. + * @param string $commentId + * The ID of the comment. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The continuation token, used to page through large result sets. To get the next page of results, + * set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param bool includeDeleted + * If set, all replies, including deleted replies (with content stripped) will be returned. + * @opt_param int maxResults + * The maximum number of replies to include in the response, used for paging. + * @return Google_Service_Drive_CommentReplyList + */ + public function listReplies($fileId, $commentId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'commentId' => $commentId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Drive_CommentReplyList"); + } + /** + * Updates an existing reply. This method supports patch semantics. + * (replies.patch) + * + * @param string $fileId + * The ID of the file. + * @param string $commentId + * The ID of the comment. + * @param string $replyId + * The ID of the reply. + * @param Google_CommentReply $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_CommentReply + */ + public function patch($fileId, $commentId, $replyId, Google_Service_Drive_CommentReply $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'commentId' => $commentId, 'replyId' => $replyId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Drive_CommentReply"); + } + /** + * Updates an existing reply. (replies.update) + * + * @param string $fileId + * The ID of the file. + * @param string $commentId + * The ID of the comment. + * @param string $replyId + * The ID of the reply. + * @param Google_CommentReply $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_CommentReply + */ + public function update($fileId, $commentId, $replyId, Google_Service_Drive_CommentReply $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'commentId' => $commentId, 'replyId' => $replyId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Drive_CommentReply"); + } +} + +/** + * The "revisions" collection of methods. + * Typical usage is: + * + * $driveService = new Google_Service_Drive(...); + * $revisions = $driveService->revisions; + * + */ +class Google_Service_Drive_Revisions_Resource extends Google_Service_Resource +{ + + /** + * Removes a revision. (revisions.delete) + * + * @param string $fileId + * The ID of the file. + * @param string $revisionId + * The ID of the revision. + * @param array $optParams Optional parameters. + */ + public function delete($fileId, $revisionId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'revisionId' => $revisionId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets a specific revision. (revisions.get) + * + * @param string $fileId + * The ID of the file. + * @param string $revisionId + * The ID of the revision. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_Revision + */ + public function get($fileId, $revisionId, $optParams = array()) + { + $params = array('fileId' => $fileId, 'revisionId' => $revisionId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Drive_Revision"); + } + /** + * Lists a file's revisions. (revisions.listRevisions) + * + * @param string $fileId + * The ID of the file. + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_RevisionList + */ + public function listRevisions($fileId, $optParams = array()) + { + $params = array('fileId' => $fileId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Drive_RevisionList"); + } + /** + * Updates a revision. This method supports patch semantics. (revisions.patch) + * + * @param string $fileId + * The ID for the file. + * @param string $revisionId + * The ID for the revision. + * @param Google_Revision $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_Revision + */ + public function patch($fileId, $revisionId, Google_Service_Drive_Revision $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'revisionId' => $revisionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Drive_Revision"); + } + /** + * Updates a revision. (revisions.update) + * + * @param string $fileId + * The ID for the file. + * @param string $revisionId + * The ID for the revision. + * @param Google_Revision $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Drive_Revision + */ + public function update($fileId, $revisionId, Google_Service_Drive_Revision $postBody, $optParams = array()) + { + $params = array('fileId' => $fileId, 'revisionId' => $revisionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Drive_Revision"); + } +} + + + + +class Google_Service_Drive_About extends Google_Collection +{ + protected $additionalRoleInfoType = 'Google_Service_Drive_AboutAdditionalRoleInfo'; + protected $additionalRoleInfoDataType = 'array'; + public $domainSharingPolicy; + public $etag; + protected $exportFormatsType = 'Google_Service_Drive_AboutExportFormats'; + protected $exportFormatsDataType = 'array'; + protected $featuresType = 'Google_Service_Drive_AboutFeatures'; + protected $featuresDataType = 'array'; + protected $importFormatsType = 'Google_Service_Drive_AboutImportFormats'; + protected $importFormatsDataType = 'array'; + public $isCurrentAppInstalled; + public $kind; + public $languageCode; + public $largestChangeId; + protected $maxUploadSizesType = 'Google_Service_Drive_AboutMaxUploadSizes'; + protected $maxUploadSizesDataType = 'array'; + public $name; + public $permissionId; + protected $quotaBytesByServiceType = 'Google_Service_Drive_AboutQuotaBytesByService'; + protected $quotaBytesByServiceDataType = 'array'; + public $quotaBytesTotal; + public $quotaBytesUsed; + public $quotaBytesUsedAggregate; + public $quotaBytesUsedInTrash; + public $quotaType; + public $remainingChangeIds; + public $rootFolderId; + public $selfLink; + protected $userType = 'Google_Service_Drive_User'; + protected $userDataType = ''; + + public function setAdditionalRoleInfo($additionalRoleInfo) + { + $this->additionalRoleInfo = $additionalRoleInfo; + } + + public function getAdditionalRoleInfo() + { + return $this->additionalRoleInfo; + } + + public function setDomainSharingPolicy($domainSharingPolicy) + { + $this->domainSharingPolicy = $domainSharingPolicy; + } + + public function getDomainSharingPolicy() + { + return $this->domainSharingPolicy; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setExportFormats($exportFormats) + { + $this->exportFormats = $exportFormats; + } + + public function getExportFormats() + { + return $this->exportFormats; + } + + public function setFeatures($features) + { + $this->features = $features; + } + + public function getFeatures() + { + return $this->features; + } + + public function setImportFormats($importFormats) + { + $this->importFormats = $importFormats; + } + + public function getImportFormats() + { + return $this->importFormats; + } + + public function setIsCurrentAppInstalled($isCurrentAppInstalled) + { + $this->isCurrentAppInstalled = $isCurrentAppInstalled; + } + + public function getIsCurrentAppInstalled() + { + return $this->isCurrentAppInstalled; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLanguageCode($languageCode) + { + $this->languageCode = $languageCode; + } + + public function getLanguageCode() + { + return $this->languageCode; + } + + public function setLargestChangeId($largestChangeId) + { + $this->largestChangeId = $largestChangeId; + } + + public function getLargestChangeId() + { + return $this->largestChangeId; + } + + public function setMaxUploadSizes($maxUploadSizes) + { + $this->maxUploadSizes = $maxUploadSizes; + } + + public function getMaxUploadSizes() + { + return $this->maxUploadSizes; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPermissionId($permissionId) + { + $this->permissionId = $permissionId; + } + + public function getPermissionId() + { + return $this->permissionId; + } + + public function setQuotaBytesByService($quotaBytesByService) + { + $this->quotaBytesByService = $quotaBytesByService; + } + + public function getQuotaBytesByService() + { + return $this->quotaBytesByService; + } + + public function setQuotaBytesTotal($quotaBytesTotal) + { + $this->quotaBytesTotal = $quotaBytesTotal; + } + + public function getQuotaBytesTotal() + { + return $this->quotaBytesTotal; + } + + public function setQuotaBytesUsed($quotaBytesUsed) + { + $this->quotaBytesUsed = $quotaBytesUsed; + } + + public function getQuotaBytesUsed() + { + return $this->quotaBytesUsed; + } + + public function setQuotaBytesUsedAggregate($quotaBytesUsedAggregate) + { + $this->quotaBytesUsedAggregate = $quotaBytesUsedAggregate; + } + + public function getQuotaBytesUsedAggregate() + { + return $this->quotaBytesUsedAggregate; + } + + public function setQuotaBytesUsedInTrash($quotaBytesUsedInTrash) + { + $this->quotaBytesUsedInTrash = $quotaBytesUsedInTrash; + } + + public function getQuotaBytesUsedInTrash() + { + return $this->quotaBytesUsedInTrash; + } + + public function setQuotaType($quotaType) + { + $this->quotaType = $quotaType; + } + + public function getQuotaType() + { + return $this->quotaType; + } + + public function setRemainingChangeIds($remainingChangeIds) + { + $this->remainingChangeIds = $remainingChangeIds; + } + + public function getRemainingChangeIds() + { + return $this->remainingChangeIds; + } + + public function setRootFolderId($rootFolderId) + { + $this->rootFolderId = $rootFolderId; + } + + public function getRootFolderId() + { + return $this->rootFolderId; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setUser(Google_Service_Drive_User $user) + { + $this->user = $user; + } + + public function getUser() + { + return $this->user; + } +} + +class Google_Service_Drive_AboutAdditionalRoleInfo extends Google_Collection +{ + protected $roleSetsType = 'Google_Service_Drive_AboutAdditionalRoleInfoRoleSets'; + protected $roleSetsDataType = 'array'; + public $type; + + public function setRoleSets($roleSets) + { + $this->roleSets = $roleSets; + } + + public function getRoleSets() + { + return $this->roleSets; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Drive_AboutAdditionalRoleInfoRoleSets extends Google_Collection +{ + public $additionalRoles; + public $primaryRole; + + public function setAdditionalRoles($additionalRoles) + { + $this->additionalRoles = $additionalRoles; + } + + public function getAdditionalRoles() + { + return $this->additionalRoles; + } + + public function setPrimaryRole($primaryRole) + { + $this->primaryRole = $primaryRole; + } + + public function getPrimaryRole() + { + return $this->primaryRole; + } +} + +class Google_Service_Drive_AboutExportFormats extends Google_Collection +{ + public $source; + public $targets; + + public function setSource($source) + { + $this->source = $source; + } + + public function getSource() + { + return $this->source; + } + + public function setTargets($targets) + { + $this->targets = $targets; + } + + public function getTargets() + { + return $this->targets; + } +} + +class Google_Service_Drive_AboutFeatures extends Google_Model +{ + public $featureName; + public $featureRate; + + public function setFeatureName($featureName) + { + $this->featureName = $featureName; + } + + public function getFeatureName() + { + return $this->featureName; + } + + public function setFeatureRate($featureRate) + { + $this->featureRate = $featureRate; + } + + public function getFeatureRate() + { + return $this->featureRate; + } +} + +class Google_Service_Drive_AboutImportFormats extends Google_Collection +{ + public $source; + public $targets; + + public function setSource($source) + { + $this->source = $source; + } + + public function getSource() + { + return $this->source; + } + + public function setTargets($targets) + { + $this->targets = $targets; + } + + public function getTargets() + { + return $this->targets; + } +} + +class Google_Service_Drive_AboutMaxUploadSizes extends Google_Model +{ + public $size; + public $type; + + public function setSize($size) + { + $this->size = $size; + } + + public function getSize() + { + return $this->size; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Drive_AboutQuotaBytesByService extends Google_Model +{ + public $bytesUsed; + public $serviceName; + + public function setBytesUsed($bytesUsed) + { + $this->bytesUsed = $bytesUsed; + } + + public function getBytesUsed() + { + return $this->bytesUsed; + } + + public function setServiceName($serviceName) + { + $this->serviceName = $serviceName; + } + + public function getServiceName() + { + return $this->serviceName; + } +} + +class Google_Service_Drive_App extends Google_Collection +{ + public $authorized; + public $createInFolderTemplate; + public $createUrl; + public $hasDriveWideScope; + protected $iconsType = 'Google_Service_Drive_AppIcons'; + protected $iconsDataType = 'array'; + public $id; + public $installed; + public $kind; + public $longDescription; + public $name; + public $objectType; + public $openUrlTemplate; + public $primaryFileExtensions; + public $primaryMimeTypes; + public $productId; + public $productUrl; + public $secondaryFileExtensions; + public $secondaryMimeTypes; + public $shortDescription; + public $supportsCreate; + public $supportsImport; + public $supportsMultiOpen; + public $supportsOfflineCreate; + public $useByDefault; + + public function setAuthorized($authorized) + { + $this->authorized = $authorized; + } + + public function getAuthorized() + { + return $this->authorized; + } + + public function setCreateInFolderTemplate($createInFolderTemplate) + { + $this->createInFolderTemplate = $createInFolderTemplate; + } + + public function getCreateInFolderTemplate() + { + return $this->createInFolderTemplate; + } + + public function setCreateUrl($createUrl) + { + $this->createUrl = $createUrl; + } + + public function getCreateUrl() + { + return $this->createUrl; + } + + public function setHasDriveWideScope($hasDriveWideScope) + { + $this->hasDriveWideScope = $hasDriveWideScope; + } + + public function getHasDriveWideScope() + { + return $this->hasDriveWideScope; + } + + public function setIcons($icons) + { + $this->icons = $icons; + } + + public function getIcons() + { + return $this->icons; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInstalled($installed) + { + $this->installed = $installed; + } + + public function getInstalled() + { + return $this->installed; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLongDescription($longDescription) + { + $this->longDescription = $longDescription; + } + + public function getLongDescription() + { + return $this->longDescription; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setObjectType($objectType) + { + $this->objectType = $objectType; + } + + public function getObjectType() + { + return $this->objectType; + } + + public function setOpenUrlTemplate($openUrlTemplate) + { + $this->openUrlTemplate = $openUrlTemplate; + } + + public function getOpenUrlTemplate() + { + return $this->openUrlTemplate; + } + + public function setPrimaryFileExtensions($primaryFileExtensions) + { + $this->primaryFileExtensions = $primaryFileExtensions; + } + + public function getPrimaryFileExtensions() + { + return $this->primaryFileExtensions; + } + + public function setPrimaryMimeTypes($primaryMimeTypes) + { + $this->primaryMimeTypes = $primaryMimeTypes; + } + + public function getPrimaryMimeTypes() + { + return $this->primaryMimeTypes; + } + + public function setProductId($productId) + { + $this->productId = $productId; + } + + public function getProductId() + { + return $this->productId; + } + + public function setProductUrl($productUrl) + { + $this->productUrl = $productUrl; + } + + public function getProductUrl() + { + return $this->productUrl; + } + + public function setSecondaryFileExtensions($secondaryFileExtensions) + { + $this->secondaryFileExtensions = $secondaryFileExtensions; + } + + public function getSecondaryFileExtensions() + { + return $this->secondaryFileExtensions; + } + + public function setSecondaryMimeTypes($secondaryMimeTypes) + { + $this->secondaryMimeTypes = $secondaryMimeTypes; + } + + public function getSecondaryMimeTypes() + { + return $this->secondaryMimeTypes; + } + + public function setShortDescription($shortDescription) + { + $this->shortDescription = $shortDescription; + } + + public function getShortDescription() + { + return $this->shortDescription; + } + + public function setSupportsCreate($supportsCreate) + { + $this->supportsCreate = $supportsCreate; + } + + public function getSupportsCreate() + { + return $this->supportsCreate; + } + + public function setSupportsImport($supportsImport) + { + $this->supportsImport = $supportsImport; + } + + public function getSupportsImport() + { + return $this->supportsImport; + } + + public function setSupportsMultiOpen($supportsMultiOpen) + { + $this->supportsMultiOpen = $supportsMultiOpen; + } + + public function getSupportsMultiOpen() + { + return $this->supportsMultiOpen; + } + + public function setSupportsOfflineCreate($supportsOfflineCreate) + { + $this->supportsOfflineCreate = $supportsOfflineCreate; + } + + public function getSupportsOfflineCreate() + { + return $this->supportsOfflineCreate; + } + + public function setUseByDefault($useByDefault) + { + $this->useByDefault = $useByDefault; + } + + public function getUseByDefault() + { + return $this->useByDefault; + } +} + +class Google_Service_Drive_AppIcons extends Google_Model +{ + public $category; + public $iconUrl; + public $size; + + public function setCategory($category) + { + $this->category = $category; + } + + public function getCategory() + { + return $this->category; + } + + public function setIconUrl($iconUrl) + { + $this->iconUrl = $iconUrl; + } + + public function getIconUrl() + { + return $this->iconUrl; + } + + public function setSize($size) + { + $this->size = $size; + } + + public function getSize() + { + return $this->size; + } +} + +class Google_Service_Drive_AppList extends Google_Collection +{ + public $defaultAppIds; + public $etag; + protected $itemsType = 'Google_Service_Drive_App'; + protected $itemsDataType = 'array'; + public $kind; + public $selfLink; + + public function setDefaultAppIds($defaultAppIds) + { + $this->defaultAppIds = $defaultAppIds; + } + + public function getDefaultAppIds() + { + return $this->defaultAppIds; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_Change extends Google_Model +{ + public $deleted; + protected $fileType = 'Google_Service_Drive_DriveFile'; + protected $fileDataType = ''; + public $fileId; + public $id; + public $kind; + public $modificationDate; + public $selfLink; + + public function setDeleted($deleted) + { + $this->deleted = $deleted; + } + + public function getDeleted() + { + return $this->deleted; + } + + public function setFile(Google_Service_Drive_DriveFile $file) + { + $this->file = $file; + } + + public function getFile() + { + return $this->file; + } + + public function setFileId($fileId) + { + $this->fileId = $fileId; + } + + public function getFileId() + { + return $this->fileId; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setModificationDate($modificationDate) + { + $this->modificationDate = $modificationDate; + } + + public function getModificationDate() + { + return $this->modificationDate; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_ChangeList extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Drive_Change'; + protected $itemsDataType = 'array'; + public $kind; + public $largestChangeId; + public $nextLink; + public $nextPageToken; + public $selfLink; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLargestChangeId($largestChangeId) + { + $this->largestChangeId = $largestChangeId; + } + + public function getLargestChangeId() + { + return $this->largestChangeId; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_Channel extends Google_Model +{ + public $address; + public $expiration; + public $id; + public $kind; + public $params; + public $payload; + public $resourceId; + public $resourceUri; + public $token; + public $type; + + public function setAddress($address) + { + $this->address = $address; + } + + public function getAddress() + { + return $this->address; + } + + public function setExpiration($expiration) + { + $this->expiration = $expiration; + } + + public function getExpiration() + { + return $this->expiration; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setParams($params) + { + $this->params = $params; + } + + public function getParams() + { + return $this->params; + } + + public function setPayload($payload) + { + $this->payload = $payload; + } + + public function getPayload() + { + return $this->payload; + } + + public function setResourceId($resourceId) + { + $this->resourceId = $resourceId; + } + + public function getResourceId() + { + return $this->resourceId; + } + + public function setResourceUri($resourceUri) + { + $this->resourceUri = $resourceUri; + } + + public function getResourceUri() + { + return $this->resourceUri; + } + + public function setToken($token) + { + $this->token = $token; + } + + public function getToken() + { + return $this->token; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Drive_ChannelParams extends Google_Model +{ + +} + +class Google_Service_Drive_ChildList extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Drive_ChildReference'; + protected $itemsDataType = 'array'; + public $kind; + public $nextLink; + public $nextPageToken; + public $selfLink; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_ChildReference extends Google_Model +{ + public $childLink; + public $id; + public $kind; + public $selfLink; + + public function setChildLink($childLink) + { + $this->childLink = $childLink; + } + + public function getChildLink() + { + return $this->childLink; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_Comment extends Google_Collection +{ + public $anchor; + protected $authorType = 'Google_Service_Drive_User'; + protected $authorDataType = ''; + public $commentId; + public $content; + protected $contextType = 'Google_Service_Drive_CommentContext'; + protected $contextDataType = ''; + public $createdDate; + public $deleted; + public $fileId; + public $fileTitle; + public $htmlContent; + public $kind; + public $modifiedDate; + protected $repliesType = 'Google_Service_Drive_CommentReply'; + protected $repliesDataType = 'array'; + public $selfLink; + public $status; + + public function setAnchor($anchor) + { + $this->anchor = $anchor; + } + + public function getAnchor() + { + return $this->anchor; + } + + public function setAuthor(Google_Service_Drive_User $author) + { + $this->author = $author; + } + + public function getAuthor() + { + return $this->author; + } + + public function setCommentId($commentId) + { + $this->commentId = $commentId; + } + + public function getCommentId() + { + return $this->commentId; + } + + public function setContent($content) + { + $this->content = $content; + } + + public function getContent() + { + return $this->content; + } + + public function setContext(Google_Service_Drive_CommentContext $context) + { + $this->context = $context; + } + + public function getContext() + { + return $this->context; + } + + public function setCreatedDate($createdDate) + { + $this->createdDate = $createdDate; + } + + public function getCreatedDate() + { + return $this->createdDate; + } + + public function setDeleted($deleted) + { + $this->deleted = $deleted; + } + + public function getDeleted() + { + return $this->deleted; + } + + public function setFileId($fileId) + { + $this->fileId = $fileId; + } + + public function getFileId() + { + return $this->fileId; + } + + public function setFileTitle($fileTitle) + { + $this->fileTitle = $fileTitle; + } + + public function getFileTitle() + { + return $this->fileTitle; + } + + public function setHtmlContent($htmlContent) + { + $this->htmlContent = $htmlContent; + } + + public function getHtmlContent() + { + return $this->htmlContent; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setModifiedDate($modifiedDate) + { + $this->modifiedDate = $modifiedDate; + } + + public function getModifiedDate() + { + return $this->modifiedDate; + } + + public function setReplies($replies) + { + $this->replies = $replies; + } + + public function getReplies() + { + return $this->replies; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_Drive_CommentContext extends Google_Model +{ + public $type; + public $value; + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Drive_CommentList extends Google_Collection +{ + protected $itemsType = 'Google_Service_Drive_Comment'; + protected $itemsDataType = 'array'; + public $kind; + public $nextLink; + public $nextPageToken; + public $selfLink; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_CommentReply extends Google_Model +{ + protected $authorType = 'Google_Service_Drive_User'; + protected $authorDataType = ''; + public $content; + public $createdDate; + public $deleted; + public $htmlContent; + public $kind; + public $modifiedDate; + public $replyId; + public $verb; + + public function setAuthor(Google_Service_Drive_User $author) + { + $this->author = $author; + } + + public function getAuthor() + { + return $this->author; + } + + public function setContent($content) + { + $this->content = $content; + } + + public function getContent() + { + return $this->content; + } + + public function setCreatedDate($createdDate) + { + $this->createdDate = $createdDate; + } + + public function getCreatedDate() + { + return $this->createdDate; + } + + public function setDeleted($deleted) + { + $this->deleted = $deleted; + } + + public function getDeleted() + { + return $this->deleted; + } + + public function setHtmlContent($htmlContent) + { + $this->htmlContent = $htmlContent; + } + + public function getHtmlContent() + { + return $this->htmlContent; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setModifiedDate($modifiedDate) + { + $this->modifiedDate = $modifiedDate; + } + + public function getModifiedDate() + { + return $this->modifiedDate; + } + + public function setReplyId($replyId) + { + $this->replyId = $replyId; + } + + public function getReplyId() + { + return $this->replyId; + } + + public function setVerb($verb) + { + $this->verb = $verb; + } + + public function getVerb() + { + return $this->verb; + } +} + +class Google_Service_Drive_CommentReplyList extends Google_Collection +{ + protected $itemsType = 'Google_Service_Drive_CommentReply'; + protected $itemsDataType = 'array'; + public $kind; + public $nextLink; + public $nextPageToken; + public $selfLink; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_DriveFile extends Google_Collection +{ + public $alternateLink; + public $appDataContents; + public $copyable; + public $createdDate; + public $defaultOpenWithLink; + public $description; + public $downloadUrl; + public $editable; + public $embedLink; + public $etag; + public $explicitlyTrashed; + public $exportLinks; + public $fileExtension; + public $fileSize; + public $headRevisionId; + public $iconLink; + public $id; + protected $imageMediaMetadataType = 'Google_Service_Drive_DriveFileImageMediaMetadata'; + protected $imageMediaMetadataDataType = ''; + protected $indexableTextType = 'Google_Service_Drive_DriveFileIndexableText'; + protected $indexableTextDataType = ''; + public $kind; + protected $labelsType = 'Google_Service_Drive_DriveFileLabels'; + protected $labelsDataType = ''; + protected $lastModifyingUserType = 'Google_Service_Drive_User'; + protected $lastModifyingUserDataType = ''; + public $lastModifyingUserName; + public $lastViewedByMeDate; + public $markedViewedByMeDate; + public $md5Checksum; + public $mimeType; + public $modifiedByMeDate; + public $modifiedDate; + public $openWithLinks; + public $originalFilename; + public $ownerNames; + protected $ownersType = 'Google_Service_Drive_User'; + protected $ownersDataType = 'array'; + protected $parentsType = 'Google_Service_Drive_ParentReference'; + protected $parentsDataType = 'array'; + protected $permissionsType = 'Google_Service_Drive_Permission'; + protected $permissionsDataType = 'array'; + protected $propertiesType = 'Google_Service_Drive_Property'; + protected $propertiesDataType = 'array'; + public $quotaBytesUsed; + public $selfLink; + public $shared; + public $sharedWithMeDate; + protected $sharingUserType = 'Google_Service_Drive_User'; + protected $sharingUserDataType = ''; + protected $thumbnailType = 'Google_Service_Drive_DriveFileThumbnail'; + protected $thumbnailDataType = ''; + public $thumbnailLink; + public $title; + protected $userPermissionType = 'Google_Service_Drive_Permission'; + protected $userPermissionDataType = ''; + public $version; + public $webContentLink; + public $webViewLink; + public $writersCanShare; + + public function setAlternateLink($alternateLink) + { + $this->alternateLink = $alternateLink; + } + + public function getAlternateLink() + { + return $this->alternateLink; + } + + public function setAppDataContents($appDataContents) + { + $this->appDataContents = $appDataContents; + } + + public function getAppDataContents() + { + return $this->appDataContents; + } + + public function setCopyable($copyable) + { + $this->copyable = $copyable; + } + + public function getCopyable() + { + return $this->copyable; + } + + public function setCreatedDate($createdDate) + { + $this->createdDate = $createdDate; + } + + public function getCreatedDate() + { + return $this->createdDate; + } + + public function setDefaultOpenWithLink($defaultOpenWithLink) + { + $this->defaultOpenWithLink = $defaultOpenWithLink; + } + + public function getDefaultOpenWithLink() + { + return $this->defaultOpenWithLink; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDownloadUrl($downloadUrl) + { + $this->downloadUrl = $downloadUrl; + } + + public function getDownloadUrl() + { + return $this->downloadUrl; + } + + public function setEditable($editable) + { + $this->editable = $editable; + } + + public function getEditable() + { + return $this->editable; + } + + public function setEmbedLink($embedLink) + { + $this->embedLink = $embedLink; + } + + public function getEmbedLink() + { + return $this->embedLink; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setExplicitlyTrashed($explicitlyTrashed) + { + $this->explicitlyTrashed = $explicitlyTrashed; + } + + public function getExplicitlyTrashed() + { + return $this->explicitlyTrashed; + } + + public function setExportLinks($exportLinks) + { + $this->exportLinks = $exportLinks; + } + + public function getExportLinks() + { + return $this->exportLinks; + } + + public function setFileExtension($fileExtension) + { + $this->fileExtension = $fileExtension; + } + + public function getFileExtension() + { + return $this->fileExtension; + } + + public function setFileSize($fileSize) + { + $this->fileSize = $fileSize; + } + + public function getFileSize() + { + return $this->fileSize; + } + + public function setHeadRevisionId($headRevisionId) + { + $this->headRevisionId = $headRevisionId; + } + + public function getHeadRevisionId() + { + return $this->headRevisionId; + } + + public function setIconLink($iconLink) + { + $this->iconLink = $iconLink; + } + + public function getIconLink() + { + return $this->iconLink; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImageMediaMetadata(Google_Service_Drive_DriveFileImageMediaMetadata $imageMediaMetadata) + { + $this->imageMediaMetadata = $imageMediaMetadata; + } + + public function getImageMediaMetadata() + { + return $this->imageMediaMetadata; + } + + public function setIndexableText(Google_Service_Drive_DriveFileIndexableText $indexableText) + { + $this->indexableText = $indexableText; + } + + public function getIndexableText() + { + return $this->indexableText; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLabels(Google_Service_Drive_DriveFileLabels $labels) + { + $this->labels = $labels; + } + + public function getLabels() + { + return $this->labels; + } + + public function setLastModifyingUser(Google_Service_Drive_User $lastModifyingUser) + { + $this->lastModifyingUser = $lastModifyingUser; + } + + public function getLastModifyingUser() + { + return $this->lastModifyingUser; + } + + public function setLastModifyingUserName($lastModifyingUserName) + { + $this->lastModifyingUserName = $lastModifyingUserName; + } + + public function getLastModifyingUserName() + { + return $this->lastModifyingUserName; + } + + public function setLastViewedByMeDate($lastViewedByMeDate) + { + $this->lastViewedByMeDate = $lastViewedByMeDate; + } + + public function getLastViewedByMeDate() + { + return $this->lastViewedByMeDate; + } + + public function setMarkedViewedByMeDate($markedViewedByMeDate) + { + $this->markedViewedByMeDate = $markedViewedByMeDate; + } + + public function getMarkedViewedByMeDate() + { + return $this->markedViewedByMeDate; + } + + public function setMd5Checksum($md5Checksum) + { + $this->md5Checksum = $md5Checksum; + } + + public function getMd5Checksum() + { + return $this->md5Checksum; + } + + public function setMimeType($mimeType) + { + $this->mimeType = $mimeType; + } + + public function getMimeType() + { + return $this->mimeType; + } + + public function setModifiedByMeDate($modifiedByMeDate) + { + $this->modifiedByMeDate = $modifiedByMeDate; + } + + public function getModifiedByMeDate() + { + return $this->modifiedByMeDate; + } + + public function setModifiedDate($modifiedDate) + { + $this->modifiedDate = $modifiedDate; + } + + public function getModifiedDate() + { + return $this->modifiedDate; + } + + public function setOpenWithLinks($openWithLinks) + { + $this->openWithLinks = $openWithLinks; + } + + public function getOpenWithLinks() + { + return $this->openWithLinks; + } + + public function setOriginalFilename($originalFilename) + { + $this->originalFilename = $originalFilename; + } + + public function getOriginalFilename() + { + return $this->originalFilename; + } + + public function setOwnerNames($ownerNames) + { + $this->ownerNames = $ownerNames; + } + + public function getOwnerNames() + { + return $this->ownerNames; + } + + public function setOwners($owners) + { + $this->owners = $owners; + } + + public function getOwners() + { + return $this->owners; + } + + public function setParents($parents) + { + $this->parents = $parents; + } + + public function getParents() + { + return $this->parents; + } + + public function setPermissions($permissions) + { + $this->permissions = $permissions; + } + + public function getPermissions() + { + return $this->permissions; + } + + public function setProperties($properties) + { + $this->properties = $properties; + } + + public function getProperties() + { + return $this->properties; + } + + public function setQuotaBytesUsed($quotaBytesUsed) + { + $this->quotaBytesUsed = $quotaBytesUsed; + } + + public function getQuotaBytesUsed() + { + return $this->quotaBytesUsed; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setShared($shared) + { + $this->shared = $shared; + } + + public function getShared() + { + return $this->shared; + } + + public function setSharedWithMeDate($sharedWithMeDate) + { + $this->sharedWithMeDate = $sharedWithMeDate; + } + + public function getSharedWithMeDate() + { + return $this->sharedWithMeDate; + } + + public function setSharingUser(Google_Service_Drive_User $sharingUser) + { + $this->sharingUser = $sharingUser; + } + + public function getSharingUser() + { + return $this->sharingUser; + } + + public function setThumbnail(Google_Service_Drive_DriveFileThumbnail $thumbnail) + { + $this->thumbnail = $thumbnail; + } + + public function getThumbnail() + { + return $this->thumbnail; + } + + public function setThumbnailLink($thumbnailLink) + { + $this->thumbnailLink = $thumbnailLink; + } + + public function getThumbnailLink() + { + return $this->thumbnailLink; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setUserPermission(Google_Service_Drive_Permission $userPermission) + { + $this->userPermission = $userPermission; + } + + public function getUserPermission() + { + return $this->userPermission; + } + + public function setVersion($version) + { + $this->version = $version; + } + + public function getVersion() + { + return $this->version; + } + + public function setWebContentLink($webContentLink) + { + $this->webContentLink = $webContentLink; + } + + public function getWebContentLink() + { + return $this->webContentLink; + } + + public function setWebViewLink($webViewLink) + { + $this->webViewLink = $webViewLink; + } + + public function getWebViewLink() + { + return $this->webViewLink; + } + + public function setWritersCanShare($writersCanShare) + { + $this->writersCanShare = $writersCanShare; + } + + public function getWritersCanShare() + { + return $this->writersCanShare; + } +} + +class Google_Service_Drive_DriveFileExportLinks extends Google_Model +{ + +} + +class Google_Service_Drive_DriveFileImageMediaMetadata extends Google_Model +{ + public $aperture; + public $cameraMake; + public $cameraModel; + public $colorSpace; + public $date; + public $exposureBias; + public $exposureMode; + public $exposureTime; + public $flashUsed; + public $focalLength; + public $height; + public $isoSpeed; + public $lens; + protected $locationType = 'Google_Service_Drive_DriveFileImageMediaMetadataLocation'; + protected $locationDataType = ''; + public $maxApertureValue; + public $meteringMode; + public $rotation; + public $sensor; + public $subjectDistance; + public $whiteBalance; + public $width; + + public function setAperture($aperture) + { + $this->aperture = $aperture; + } + + public function getAperture() + { + return $this->aperture; + } + + public function setCameraMake($cameraMake) + { + $this->cameraMake = $cameraMake; + } + + public function getCameraMake() + { + return $this->cameraMake; + } + + public function setCameraModel($cameraModel) + { + $this->cameraModel = $cameraModel; + } + + public function getCameraModel() + { + return $this->cameraModel; + } + + public function setColorSpace($colorSpace) + { + $this->colorSpace = $colorSpace; + } + + public function getColorSpace() + { + return $this->colorSpace; + } + + public function setDate($date) + { + $this->date = $date; + } + + public function getDate() + { + return $this->date; + } + + public function setExposureBias($exposureBias) + { + $this->exposureBias = $exposureBias; + } + + public function getExposureBias() + { + return $this->exposureBias; + } + + public function setExposureMode($exposureMode) + { + $this->exposureMode = $exposureMode; + } + + public function getExposureMode() + { + return $this->exposureMode; + } + + public function setExposureTime($exposureTime) + { + $this->exposureTime = $exposureTime; + } + + public function getExposureTime() + { + return $this->exposureTime; + } + + public function setFlashUsed($flashUsed) + { + $this->flashUsed = $flashUsed; + } + + public function getFlashUsed() + { + return $this->flashUsed; + } + + public function setFocalLength($focalLength) + { + $this->focalLength = $focalLength; + } + + public function getFocalLength() + { + return $this->focalLength; + } + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setIsoSpeed($isoSpeed) + { + $this->isoSpeed = $isoSpeed; + } + + public function getIsoSpeed() + { + return $this->isoSpeed; + } + + public function setLens($lens) + { + $this->lens = $lens; + } + + public function getLens() + { + return $this->lens; + } + + public function setLocation(Google_Service_Drive_DriveFileImageMediaMetadataLocation $location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setMaxApertureValue($maxApertureValue) + { + $this->maxApertureValue = $maxApertureValue; + } + + public function getMaxApertureValue() + { + return $this->maxApertureValue; + } + + public function setMeteringMode($meteringMode) + { + $this->meteringMode = $meteringMode; + } + + public function getMeteringMode() + { + return $this->meteringMode; + } + + public function setRotation($rotation) + { + $this->rotation = $rotation; + } + + public function getRotation() + { + return $this->rotation; + } + + public function setSensor($sensor) + { + $this->sensor = $sensor; + } + + public function getSensor() + { + return $this->sensor; + } + + public function setSubjectDistance($subjectDistance) + { + $this->subjectDistance = $subjectDistance; + } + + public function getSubjectDistance() + { + return $this->subjectDistance; + } + + public function setWhiteBalance($whiteBalance) + { + $this->whiteBalance = $whiteBalance; + } + + public function getWhiteBalance() + { + return $this->whiteBalance; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_Drive_DriveFileImageMediaMetadataLocation extends Google_Model +{ + public $altitude; + public $latitude; + public $longitude; + + public function setAltitude($altitude) + { + $this->altitude = $altitude; + } + + public function getAltitude() + { + return $this->altitude; + } + + public function setLatitude($latitude) + { + $this->latitude = $latitude; + } + + public function getLatitude() + { + return $this->latitude; + } + + public function setLongitude($longitude) + { + $this->longitude = $longitude; + } + + public function getLongitude() + { + return $this->longitude; + } +} + +class Google_Service_Drive_DriveFileIndexableText extends Google_Model +{ + public $text; + + public function setText($text) + { + $this->text = $text; + } + + public function getText() + { + return $this->text; + } +} + +class Google_Service_Drive_DriveFileLabels extends Google_Model +{ + public $hidden; + public $restricted; + public $starred; + public $trashed; + public $viewed; + + public function setHidden($hidden) + { + $this->hidden = $hidden; + } + + public function getHidden() + { + return $this->hidden; + } + + public function setRestricted($restricted) + { + $this->restricted = $restricted; + } + + public function getRestricted() + { + return $this->restricted; + } + + public function setStarred($starred) + { + $this->starred = $starred; + } + + public function getStarred() + { + return $this->starred; + } + + public function setTrashed($trashed) + { + $this->trashed = $trashed; + } + + public function getTrashed() + { + return $this->trashed; + } + + public function setViewed($viewed) + { + $this->viewed = $viewed; + } + + public function getViewed() + { + return $this->viewed; + } +} + +class Google_Service_Drive_DriveFileOpenWithLinks extends Google_Model +{ + +} + +class Google_Service_Drive_DriveFileThumbnail extends Google_Model +{ + public $image; + public $mimeType; + + public function setImage($image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setMimeType($mimeType) + { + $this->mimeType = $mimeType; + } + + public function getMimeType() + { + return $this->mimeType; + } +} + +class Google_Service_Drive_FileList extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Drive_DriveFile'; + protected $itemsDataType = 'array'; + public $kind; + public $nextLink; + public $nextPageToken; + public $selfLink; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_ParentList extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Drive_ParentReference'; + protected $itemsDataType = 'array'; + public $kind; + public $selfLink; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_ParentReference extends Google_Model +{ + public $id; + public $isRoot; + public $kind; + public $parentLink; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setIsRoot($isRoot) + { + $this->isRoot = $isRoot; + } + + public function getIsRoot() + { + return $this->isRoot; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setParentLink($parentLink) + { + $this->parentLink = $parentLink; + } + + public function getParentLink() + { + return $this->parentLink; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_Permission extends Google_Collection +{ + public $additionalRoles; + public $authKey; + public $domain; + public $emailAddress; + public $etag; + public $id; + public $kind; + public $name; + public $photoLink; + public $role; + public $selfLink; + public $type; + public $value; + public $withLink; + + public function setAdditionalRoles($additionalRoles) + { + $this->additionalRoles = $additionalRoles; + } + + public function getAdditionalRoles() + { + return $this->additionalRoles; + } + + public function setAuthKey($authKey) + { + $this->authKey = $authKey; + } + + public function getAuthKey() + { + return $this->authKey; + } + + public function setDomain($domain) + { + $this->domain = $domain; + } + + public function getDomain() + { + return $this->domain; + } + + public function setEmailAddress($emailAddress) + { + $this->emailAddress = $emailAddress; + } + + public function getEmailAddress() + { + return $this->emailAddress; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPhotoLink($photoLink) + { + $this->photoLink = $photoLink; + } + + public function getPhotoLink() + { + return $this->photoLink; + } + + public function setRole($role) + { + $this->role = $role; + } + + public function getRole() + { + return $this->role; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } + + public function setWithLink($withLink) + { + $this->withLink = $withLink; + } + + public function getWithLink() + { + return $this->withLink; + } +} + +class Google_Service_Drive_PermissionId extends Google_Model +{ + public $id; + public $kind; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Drive_PermissionList extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Drive_Permission'; + protected $itemsDataType = 'array'; + public $kind; + public $selfLink; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_Property extends Google_Model +{ + public $etag; + public $key; + public $kind; + public $selfLink; + public $value; + public $visibility; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } + + public function setVisibility($visibility) + { + $this->visibility = $visibility; + } + + public function getVisibility() + { + return $this->visibility; + } +} + +class Google_Service_Drive_PropertyList extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Drive_Property'; + protected $itemsDataType = 'array'; + public $kind; + public $selfLink; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_Revision extends Google_Model +{ + public $downloadUrl; + public $etag; + public $exportLinks; + public $fileSize; + public $id; + public $kind; + protected $lastModifyingUserType = 'Google_Service_Drive_User'; + protected $lastModifyingUserDataType = ''; + public $lastModifyingUserName; + public $md5Checksum; + public $mimeType; + public $modifiedDate; + public $originalFilename; + public $pinned; + public $publishAuto; + public $published; + public $publishedLink; + public $publishedOutsideDomain; + public $selfLink; + + public function setDownloadUrl($downloadUrl) + { + $this->downloadUrl = $downloadUrl; + } + + public function getDownloadUrl() + { + return $this->downloadUrl; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setExportLinks($exportLinks) + { + $this->exportLinks = $exportLinks; + } + + public function getExportLinks() + { + return $this->exportLinks; + } + + public function setFileSize($fileSize) + { + $this->fileSize = $fileSize; + } + + public function getFileSize() + { + return $this->fileSize; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastModifyingUser(Google_Service_Drive_User $lastModifyingUser) + { + $this->lastModifyingUser = $lastModifyingUser; + } + + public function getLastModifyingUser() + { + return $this->lastModifyingUser; + } + + public function setLastModifyingUserName($lastModifyingUserName) + { + $this->lastModifyingUserName = $lastModifyingUserName; + } + + public function getLastModifyingUserName() + { + return $this->lastModifyingUserName; + } + + public function setMd5Checksum($md5Checksum) + { + $this->md5Checksum = $md5Checksum; + } + + public function getMd5Checksum() + { + return $this->md5Checksum; + } + + public function setMimeType($mimeType) + { + $this->mimeType = $mimeType; + } + + public function getMimeType() + { + return $this->mimeType; + } + + public function setModifiedDate($modifiedDate) + { + $this->modifiedDate = $modifiedDate; + } + + public function getModifiedDate() + { + return $this->modifiedDate; + } + + public function setOriginalFilename($originalFilename) + { + $this->originalFilename = $originalFilename; + } + + public function getOriginalFilename() + { + return $this->originalFilename; + } + + public function setPinned($pinned) + { + $this->pinned = $pinned; + } + + public function getPinned() + { + return $this->pinned; + } + + public function setPublishAuto($publishAuto) + { + $this->publishAuto = $publishAuto; + } + + public function getPublishAuto() + { + return $this->publishAuto; + } + + public function setPublished($published) + { + $this->published = $published; + } + + public function getPublished() + { + return $this->published; + } + + public function setPublishedLink($publishedLink) + { + $this->publishedLink = $publishedLink; + } + + public function getPublishedLink() + { + return $this->publishedLink; + } + + public function setPublishedOutsideDomain($publishedOutsideDomain) + { + $this->publishedOutsideDomain = $publishedOutsideDomain; + } + + public function getPublishedOutsideDomain() + { + return $this->publishedOutsideDomain; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_RevisionExportLinks extends Google_Model +{ + +} + +class Google_Service_Drive_RevisionList extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Drive_Revision'; + protected $itemsDataType = 'array'; + public $kind; + public $selfLink; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Drive_User extends Google_Model +{ + public $displayName; + public $emailAddress; + public $isAuthenticatedUser; + public $kind; + public $permissionId; + protected $pictureType = 'Google_Service_Drive_UserPicture'; + protected $pictureDataType = ''; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setEmailAddress($emailAddress) + { + $this->emailAddress = $emailAddress; + } + + public function getEmailAddress() + { + return $this->emailAddress; + } + + public function setIsAuthenticatedUser($isAuthenticatedUser) + { + $this->isAuthenticatedUser = $isAuthenticatedUser; + } + + public function getIsAuthenticatedUser() + { + return $this->isAuthenticatedUser; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPermissionId($permissionId) + { + $this->permissionId = $permissionId; + } + + public function getPermissionId() + { + return $this->permissionId; + } + + public function setPicture(Google_Service_Drive_UserPicture $picture) + { + $this->picture = $picture; + } + + public function getPicture() + { + return $this->picture; + } +} + +class Google_Service_Drive_UserPicture extends Google_Model +{ + public $url; + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} diff --git a/oauth/Google/Service/Exception.php b/oauth/Google/Service/Exception.php new file mode 100644 index 0000000..a780ff7 --- /dev/null +++ b/oauth/Google/Service/Exception.php @@ -0,0 +1,53 @@ += 0) { + parent::__construct($message, $code, $previous); + } else { + parent::__construct($message, $code); + } + + $this->errors = $errors; + } + + /** + * An example of the possible errors returned. + * + * { + * "domain": "global", + * "reason": "authError", + * "message": "Invalid Credentials", + * "locationType": "header", + * "location": "Authorization", + * } + * + * @return [{string, string}] List of errors return in an HTTP response or []. + */ + public function getErrors() + { + return $this->errors; + } +} diff --git a/oauth/Google/Service/Freebase.php b/oauth/Google/Service/Freebase.php new file mode 100644 index 0000000..a1157f6 --- /dev/null +++ b/oauth/Google/Service/Freebase.php @@ -0,0 +1,487 @@ + + * Find Freebase entities using textual queries and other constraints. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Freebase extends Google_Service +{ + + + + private $base_methods; + + /** + * Constructs the internal representation of the Freebase service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'freebase/v1/'; + $this->version = 'v1'; + $this->serviceName = 'freebase'; + + $this->base_methods = new Google_Service_Resource( + $this, + $this->serviceName, + '', + array( + 'methods' => array( + 'reconcile' => array( + 'path' => 'reconcile', + 'httpMethod' => 'GET', + 'parameters' => array( + 'lang' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'confidence' => array( + 'location' => 'query', + 'type' => 'number', + ), + 'name' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'kind' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'prop' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'limit' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'search' => array( + 'path' => 'search', + 'httpMethod' => 'GET', + 'parameters' => array( + 'domain' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'help' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'query' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'scoring' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'cursor' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'prefixed' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'exact' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'mid' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'encode' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'type' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'as_of_time' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'stemmed' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'format' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'spell' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'with' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'lang' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'indent' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'filter' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'callback' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'without' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'limit' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'output' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'mql_output' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } + /** + * Reconcile entities to Freebase open data. (reconcile) + * + * @param array $optParams Optional parameters. + * + * @opt_param string lang + * Languages for names and values. First language is used for display. Default is 'en'. + * @opt_param float confidence + * Required confidence for a candidate to match. Must be between .5 and 1.0 + * @opt_param string name + * Name of entity. + * @opt_param string kind + * Classifications of entity e.g. type, category, title. + * @opt_param string prop + * Property values for entity formatted as + : + * @opt_param int limit + * Maximum number of candidates to return. + * @return Google_Service_Freebase_ReconcileGet + */ + public function reconcile($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->base_methods->call('reconcile', array($params), "Google_Service_Freebase_ReconcileGet"); + } + /** + * Search Freebase open data. (search) + * + * @param array $optParams Optional parameters. + * + * @opt_param string domain + * Restrict to topics with this Freebase domain id. + * @opt_param string help + * The keyword to request help on. + * @opt_param string query + * Query term to search for. + * @opt_param string scoring + * Relevance scoring algorithm to use. + * @opt_param int cursor + * The cursor value to use for the next page of results. + * @opt_param bool prefixed + * Prefix match against names and aliases. + * @opt_param bool exact + * Query on exact name and keys only. + * @opt_param string mid + * A mid to use instead of a query. + * @opt_param string encode + * The encoding of the response. You can use this parameter to enable html encoding. + * @opt_param string type + * Restrict to topics with this Freebase type id. + * @opt_param string as_of_time + * A mql as_of_time value to use with mql_output queries. + * @opt_param bool stemmed + * Query on stemmed names and aliases. May not be used with prefixed. + * @opt_param string format + * Structural format of the json response. + * @opt_param string spell + * Request 'did you mean' suggestions + * @opt_param string with + * A rule to match against. + * @opt_param string lang + * The code of the language to run the query with. Default is 'en'. + * @opt_param bool indent + * Whether to indent the json results or not. + * @opt_param string filter + * A filter to apply to the query. + * @opt_param string callback + * JS method name for JSONP callbacks. + * @opt_param string without + * A rule to not match against. + * @opt_param int limit + * Maximum number of results to return. + * @opt_param string output + * An output expression to request data from matches. + * @opt_param string mql_output + * The MQL query to run againist the results to extract more data. + */ + public function search($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('search', array($params)); + } +} + + + + + +class Google_Service_Freebase_ReconcileCandidate extends Google_Model +{ + public $confidence; + public $lang; + public $mid; + public $name; + protected $notableType = 'Google_Service_Freebase_ReconcileCandidateNotable'; + protected $notableDataType = ''; + + public function setConfidence($confidence) + { + $this->confidence = $confidence; + } + + public function getConfidence() + { + return $this->confidence; + } + + public function setLang($lang) + { + $this->lang = $lang; + } + + public function getLang() + { + return $this->lang; + } + + public function setMid($mid) + { + $this->mid = $mid; + } + + public function getMid() + { + return $this->mid; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNotable(Google_Service_Freebase_ReconcileCandidateNotable $notable) + { + $this->notable = $notable; + } + + public function getNotable() + { + return $this->notable; + } +} + +class Google_Service_Freebase_ReconcileCandidateNotable extends Google_Model +{ + public $id; + public $name; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_Freebase_ReconcileGet extends Google_Collection +{ + protected $candidateType = 'Google_Service_Freebase_ReconcileCandidate'; + protected $candidateDataType = 'array'; + protected $costsType = 'Google_Service_Freebase_ReconcileGetCosts'; + protected $costsDataType = ''; + protected $matchType = 'Google_Service_Freebase_ReconcileCandidate'; + protected $matchDataType = ''; + protected $warningType = 'Google_Service_Freebase_ReconcileGetWarning'; + protected $warningDataType = 'array'; + + public function setCandidate($candidate) + { + $this->candidate = $candidate; + } + + public function getCandidate() + { + return $this->candidate; + } + + public function setCosts(Google_Service_Freebase_ReconcileGetCosts $costs) + { + $this->costs = $costs; + } + + public function getCosts() + { + return $this->costs; + } + + public function setMatch(Google_Service_Freebase_ReconcileCandidate $match) + { + $this->match = $match; + } + + public function getMatch() + { + return $this->match; + } + + public function setWarning($warning) + { + $this->warning = $warning; + } + + public function getWarning() + { + return $this->warning; + } +} + +class Google_Service_Freebase_ReconcileGetCosts extends Google_Model +{ + public $hits; + public $ms; + + public function setHits($hits) + { + $this->hits = $hits; + } + + public function getHits() + { + return $this->hits; + } + + public function setMs($ms) + { + $this->ms = $ms; + } + + public function getMs() + { + return $this->ms; + } +} + +class Google_Service_Freebase_ReconcileGetWarning extends Google_Model +{ + public $location; + public $message; + public $reason; + + public function setLocation($location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } + + public function setReason($reason) + { + $this->reason = $reason; + } + + public function getReason() + { + return $this->reason; + } +} diff --git a/oauth/Google/Service/Fusiontables.php b/oauth/Google/Service/Fusiontables.php new file mode 100644 index 0000000..ffa01bd --- /dev/null +++ b/oauth/Google/Service/Fusiontables.php @@ -0,0 +1,2458 @@ + + * API for working with Fusion Tables data. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Fusiontables extends Google_Service +{ + /** Manage your Fusion Tables. */ + const FUSIONTABLES = "https://www.googleapis.com/auth/fusiontables"; + /** View your Fusion Tables. */ + const FUSIONTABLES_READONLY = "https://www.googleapis.com/auth/fusiontables.readonly"; + + public $column; + public $query; + public $style; + public $table; + public $task; + public $template; + + + /** + * Constructs the internal representation of the Fusiontables service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'fusiontables/v1/'; + $this->version = 'v1'; + $this->serviceName = 'fusiontables'; + + $this->column = new Google_Service_Fusiontables_Column_Resource( + $this, + $this->serviceName, + 'column', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'tables/{tableId}/columns/{columnId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'columnId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'tables/{tableId}/columns/{columnId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'columnId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'tables/{tableId}/columns', + 'httpMethod' => 'POST', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'tables/{tableId}/columns', + 'httpMethod' => 'GET', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'tables/{tableId}/columns/{columnId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'columnId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'tables/{tableId}/columns/{columnId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'columnId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->query = new Google_Service_Fusiontables_Query_Resource( + $this, + $this->serviceName, + 'query', + array( + 'methods' => array( + 'sql' => array( + 'path' => 'query', + 'httpMethod' => 'POST', + 'parameters' => array( + 'sql' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'typed' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'hdrs' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'sqlGet' => array( + 'path' => 'query', + 'httpMethod' => 'GET', + 'parameters' => array( + 'sql' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'typed' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'hdrs' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ), + ) + ) + ); + $this->style = new Google_Service_Fusiontables_Style_Resource( + $this, + $this->serviceName, + 'style', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'tables/{tableId}/styles/{styleId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'styleId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'tables/{tableId}/styles/{styleId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'styleId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'tables/{tableId}/styles', + 'httpMethod' => 'POST', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'tables/{tableId}/styles', + 'httpMethod' => 'GET', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'tables/{tableId}/styles/{styleId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'styleId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'tables/{tableId}/styles/{styleId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'styleId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->table = new Google_Service_Fusiontables_Table_Resource( + $this, + $this->serviceName, + 'table', + array( + 'methods' => array( + 'copy' => array( + 'path' => 'tables/{tableId}/copy', + 'httpMethod' => 'POST', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'copyPresentation' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'delete' => array( + 'path' => 'tables/{tableId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'tables/{tableId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'importRows' => array( + 'path' => 'tables/{tableId}/import', + 'httpMethod' => 'POST', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'startLine' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'isStrict' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'encoding' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'delimiter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'endLine' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'importTable' => array( + 'path' => 'tables/import', + 'httpMethod' => 'POST', + 'parameters' => array( + 'name' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'delimiter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'encoding' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'tables', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'list' => array( + 'path' => 'tables', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'tables/{tableId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'replaceViewDefinition' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'update' => array( + 'path' => 'tables/{tableId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'replaceViewDefinition' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ), + ) + ) + ); + $this->task = new Google_Service_Fusiontables_Task_Resource( + $this, + $this->serviceName, + 'task', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'tables/{tableId}/tasks/{taskId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'taskId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'tables/{tableId}/tasks/{taskId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'taskId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'tables/{tableId}/tasks', + 'httpMethod' => 'GET', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startIndex' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->template = new Google_Service_Fusiontables_Template_Resource( + $this, + $this->serviceName, + 'template', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'tables/{tableId}/templates/{templateId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'templateId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'tables/{tableId}/templates/{templateId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'templateId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'tables/{tableId}/templates', + 'httpMethod' => 'POST', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'tables/{tableId}/templates', + 'httpMethod' => 'GET', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'tables/{tableId}/templates/{templateId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'templateId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'tables/{tableId}/templates/{templateId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'templateId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "column" collection of methods. + * Typical usage is: + * + * $fusiontablesService = new Google_Service_Fusiontables(...); + * $column = $fusiontablesService->column; + * + */ +class Google_Service_Fusiontables_Column_Resource extends Google_Service_Resource +{ + + /** + * Deletes the column. (column.delete) + * + * @param string $tableId + * Table from which the column is being deleted. + * @param string $columnId + * Name or identifier for the column being deleted. + * @param array $optParams Optional parameters. + */ + public function delete($tableId, $columnId, $optParams = array()) + { + $params = array('tableId' => $tableId, 'columnId' => $columnId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves a specific column by its id. (column.get) + * + * @param string $tableId + * Table to which the column belongs. + * @param string $columnId + * Name or identifier for the column that is being requested. + * @param array $optParams Optional parameters. + * @return Google_Service_Fusiontables_Column + */ + public function get($tableId, $columnId, $optParams = array()) + { + $params = array('tableId' => $tableId, 'columnId' => $columnId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Fusiontables_Column"); + } + /** + * Adds a new column to the table. (column.insert) + * + * @param string $tableId + * Table for which a new column is being added. + * @param Google_Column $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Fusiontables_Column + */ + public function insert($tableId, Google_Service_Fusiontables_Column $postBody, $optParams = array()) + { + $params = array('tableId' => $tableId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Fusiontables_Column"); + } + /** + * Retrieves a list of columns. (column.listColumn) + * + * @param string $tableId + * Table whose columns are being listed. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Continuation token specifying which result page to return. Optional. + * @opt_param string maxResults + * Maximum number of columns to return. Optional. Default is 5. + * @return Google_Service_Fusiontables_ColumnList + */ + public function listColumn($tableId, $optParams = array()) + { + $params = array('tableId' => $tableId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Fusiontables_ColumnList"); + } + /** + * Updates the name or type of an existing column. This method supports patch + * semantics. (column.patch) + * + * @param string $tableId + * Table for which the column is being updated. + * @param string $columnId + * Name or identifier for the column that is being updated. + * @param Google_Column $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Fusiontables_Column + */ + public function patch($tableId, $columnId, Google_Service_Fusiontables_Column $postBody, $optParams = array()) + { + $params = array('tableId' => $tableId, 'columnId' => $columnId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Fusiontables_Column"); + } + /** + * Updates the name or type of an existing column. (column.update) + * + * @param string $tableId + * Table for which the column is being updated. + * @param string $columnId + * Name or identifier for the column that is being updated. + * @param Google_Column $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Fusiontables_Column + */ + public function update($tableId, $columnId, Google_Service_Fusiontables_Column $postBody, $optParams = array()) + { + $params = array('tableId' => $tableId, 'columnId' => $columnId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Fusiontables_Column"); + } +} + +/** + * The "query" collection of methods. + * Typical usage is: + * + * $fusiontablesService = new Google_Service_Fusiontables(...); + * $query = $fusiontablesService->query; + * + */ +class Google_Service_Fusiontables_Query_Resource extends Google_Service_Resource +{ + + /** + * Executes an SQL SELECT/INSERT/UPDATE/DELETE/SHOW/DESCRIBE/CREATE statement. + * (query.sql) + * + * @param string $sql + * An SQL SELECT/SHOW/DESCRIBE/INSERT/UPDATE/DELETE/CREATE statement. + * @param array $optParams Optional parameters. + * + * @opt_param bool typed + * Should typed values be returned in the (JSON) response -- numbers for numeric values and parsed + * geometries for KML values? Default is true. + * @opt_param bool hdrs + * Should column names be included (in the first row)?. Default is true. + * @return Google_Service_Fusiontables_Sqlresponse + */ + public function sql($sql, $optParams = array()) + { + $params = array('sql' => $sql); + $params = array_merge($params, $optParams); + return $this->call('sql', array($params), "Google_Service_Fusiontables_Sqlresponse"); + } + /** + * Executes an SQL SELECT/SHOW/DESCRIBE statement. (query.sqlGet) + * + * @param string $sql + * An SQL SELECT/SHOW/DESCRIBE statement. + * @param array $optParams Optional parameters. + * + * @opt_param bool typed + * Should typed values be returned in the (JSON) response -- numbers for numeric values and parsed + * geometries for KML values? Default is true. + * @opt_param bool hdrs + * Should column names be included (in the first row)?. Default is true. + * @return Google_Service_Fusiontables_Sqlresponse + */ + public function sqlGet($sql, $optParams = array()) + { + $params = array('sql' => $sql); + $params = array_merge($params, $optParams); + return $this->call('sqlGet', array($params), "Google_Service_Fusiontables_Sqlresponse"); + } +} + +/** + * The "style" collection of methods. + * Typical usage is: + * + * $fusiontablesService = new Google_Service_Fusiontables(...); + * $style = $fusiontablesService->style; + * + */ +class Google_Service_Fusiontables_Style_Resource extends Google_Service_Resource +{ + + /** + * Deletes a style. (style.delete) + * + * @param string $tableId + * Table from which the style is being deleted + * @param int $styleId + * Identifier (within a table) for the style being deleted + * @param array $optParams Optional parameters. + */ + public function delete($tableId, $styleId, $optParams = array()) + { + $params = array('tableId' => $tableId, 'styleId' => $styleId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets a specific style. (style.get) + * + * @param string $tableId + * Table to which the requested style belongs + * @param int $styleId + * Identifier (integer) for a specific style in a table + * @param array $optParams Optional parameters. + * @return Google_Service_Fusiontables_StyleSetting + */ + public function get($tableId, $styleId, $optParams = array()) + { + $params = array('tableId' => $tableId, 'styleId' => $styleId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Fusiontables_StyleSetting"); + } + /** + * Adds a new style for the table. (style.insert) + * + * @param string $tableId + * Table for which a new style is being added + * @param Google_StyleSetting $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Fusiontables_StyleSetting + */ + public function insert($tableId, Google_Service_Fusiontables_StyleSetting $postBody, $optParams = array()) + { + $params = array('tableId' => $tableId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Fusiontables_StyleSetting"); + } + /** + * Retrieves a list of styles. (style.listStyle) + * + * @param string $tableId + * Table whose styles are being listed + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Continuation token specifying which result page to return. Optional. + * @opt_param string maxResults + * Maximum number of styles to return. Optional. Default is 5. + * @return Google_Service_Fusiontables_StyleSettingList + */ + public function listStyle($tableId, $optParams = array()) + { + $params = array('tableId' => $tableId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Fusiontables_StyleSettingList"); + } + /** + * Updates an existing style. This method supports patch semantics. + * (style.patch) + * + * @param string $tableId + * Table whose style is being updated. + * @param int $styleId + * Identifier (within a table) for the style being updated. + * @param Google_StyleSetting $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Fusiontables_StyleSetting + */ + public function patch($tableId, $styleId, Google_Service_Fusiontables_StyleSetting $postBody, $optParams = array()) + { + $params = array('tableId' => $tableId, 'styleId' => $styleId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Fusiontables_StyleSetting"); + } + /** + * Updates an existing style. (style.update) + * + * @param string $tableId + * Table whose style is being updated. + * @param int $styleId + * Identifier (within a table) for the style being updated. + * @param Google_StyleSetting $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Fusiontables_StyleSetting + */ + public function update($tableId, $styleId, Google_Service_Fusiontables_StyleSetting $postBody, $optParams = array()) + { + $params = array('tableId' => $tableId, 'styleId' => $styleId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Fusiontables_StyleSetting"); + } +} + +/** + * The "table" collection of methods. + * Typical usage is: + * + * $fusiontablesService = new Google_Service_Fusiontables(...); + * $table = $fusiontablesService->table; + * + */ +class Google_Service_Fusiontables_Table_Resource extends Google_Service_Resource +{ + + /** + * Copies a table. (table.copy) + * + * @param string $tableId + * ID of the table that is being copied. + * @param array $optParams Optional parameters. + * + * @opt_param bool copyPresentation + * Whether to also copy tabs, styles, and templates. Default is false. + * @return Google_Service_Fusiontables_Table + */ + public function copy($tableId, $optParams = array()) + { + $params = array('tableId' => $tableId); + $params = array_merge($params, $optParams); + return $this->call('copy', array($params), "Google_Service_Fusiontables_Table"); + } + /** + * Deletes a table. (table.delete) + * + * @param string $tableId + * ID of the table that is being deleted. + * @param array $optParams Optional parameters. + */ + public function delete($tableId, $optParams = array()) + { + $params = array('tableId' => $tableId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves a specific table by its id. (table.get) + * + * @param string $tableId + * Identifier(ID) for the table being requested. + * @param array $optParams Optional parameters. + * @return Google_Service_Fusiontables_Table + */ + public function get($tableId, $optParams = array()) + { + $params = array('tableId' => $tableId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Fusiontables_Table"); + } + /** + * Import more rows into a table. (table.importRows) + * + * @param string $tableId + * The table into which new rows are being imported. + * @param array $optParams Optional parameters. + * + * @opt_param int startLine + * The index of the first line from which to start importing, inclusive. Default is 0. + * @opt_param bool isStrict + * Whether the CSV must have the same number of values for each row. If false, rows with fewer + * values will be padded with empty values. Default is true. + * @opt_param string encoding + * The encoding of the content. Default is UTF-8. Use 'auto-detect' if you are unsure of the + * encoding. + * @opt_param string delimiter + * The delimiter used to separate cell values. This can only consist of a single character. Default + * is ','. + * @opt_param int endLine + * The index of the last line from which to start importing, exclusive. Thus, the number of + * imported lines is endLine - startLine. If this parameter is not provided, the file will be + * imported until the last line of the file. If endLine is negative, then the imported content will + * exclude the last endLine lines. That is, if endline is negative, no line will be imported whose + * index is greater than N + endLine where N is the number of lines in the file, and the number of + * imported lines will be N + endLine - startLine. + * @return Google_Service_Fusiontables_Import + */ + public function importRows($tableId, $optParams = array()) + { + $params = array('tableId' => $tableId); + $params = array_merge($params, $optParams); + return $this->call('importRows', array($params), "Google_Service_Fusiontables_Import"); + } + /** + * Import a new table. (table.importTable) + * + * @param string $name + * The name to be assigned to the new table. + * @param array $optParams Optional parameters. + * + * @opt_param string delimiter + * The delimiter used to separate cell values. This can only consist of a single character. Default + * is ','. + * @opt_param string encoding + * The encoding of the content. Default is UTF-8. Use 'auto-detect' if you are unsure of the + * encoding. + * @return Google_Service_Fusiontables_Table + */ + public function importTable($name, $optParams = array()) + { + $params = array('name' => $name); + $params = array_merge($params, $optParams); + return $this->call('importTable', array($params), "Google_Service_Fusiontables_Table"); + } + /** + * Creates a new table. (table.insert) + * + * @param Google_Table $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Fusiontables_Table + */ + public function insert(Google_Service_Fusiontables_Table $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Fusiontables_Table"); + } + /** + * Retrieves a list of tables a user owns. (table.listTable) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Continuation token specifying which result page to return. Optional. + * @opt_param string maxResults + * Maximum number of styles to return. Optional. Default is 5. + * @return Google_Service_Fusiontables_TableList + */ + public function listTable($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Fusiontables_TableList"); + } + /** + * Updates an existing table. Unless explicitly requested, only the name, + * description, and attribution will be updated. This method supports patch + * semantics. (table.patch) + * + * @param string $tableId + * ID of the table that is being updated. + * @param Google_Table $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool replaceViewDefinition + * Should the view definition also be updated? The specified view definition replaces the existing + * one. Only a view can be updated with a new definition. + * @return Google_Service_Fusiontables_Table + */ + public function patch($tableId, Google_Service_Fusiontables_Table $postBody, $optParams = array()) + { + $params = array('tableId' => $tableId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Fusiontables_Table"); + } + /** + * Updates an existing table. Unless explicitly requested, only the name, + * description, and attribution will be updated. (table.update) + * + * @param string $tableId + * ID of the table that is being updated. + * @param Google_Table $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool replaceViewDefinition + * Should the view definition also be updated? The specified view definition replaces the existing + * one. Only a view can be updated with a new definition. + * @return Google_Service_Fusiontables_Table + */ + public function update($tableId, Google_Service_Fusiontables_Table $postBody, $optParams = array()) + { + $params = array('tableId' => $tableId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Fusiontables_Table"); + } +} + +/** + * The "task" collection of methods. + * Typical usage is: + * + * $fusiontablesService = new Google_Service_Fusiontables(...); + * $task = $fusiontablesService->task; + * + */ +class Google_Service_Fusiontables_Task_Resource extends Google_Service_Resource +{ + + /** + * Deletes the task, unless already started. (task.delete) + * + * @param string $tableId + * Table from which the task is being deleted. + * @param string $taskId + * + * @param array $optParams Optional parameters. + */ + public function delete($tableId, $taskId, $optParams = array()) + { + $params = array('tableId' => $tableId, 'taskId' => $taskId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves a specific task by its id. (task.get) + * + * @param string $tableId + * Table to which the task belongs. + * @param string $taskId + * + * @param array $optParams Optional parameters. + * @return Google_Service_Fusiontables_Task + */ + public function get($tableId, $taskId, $optParams = array()) + { + $params = array('tableId' => $tableId, 'taskId' => $taskId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Fusiontables_Task"); + } + /** + * Retrieves a list of tasks. (task.listTask) + * + * @param string $tableId + * Table whose tasks are being listed. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * + * @opt_param string startIndex + * + * @opt_param string maxResults + * Maximum number of columns to return. Optional. Default is 5. + * @return Google_Service_Fusiontables_TaskList + */ + public function listTask($tableId, $optParams = array()) + { + $params = array('tableId' => $tableId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Fusiontables_TaskList"); + } +} + +/** + * The "template" collection of methods. + * Typical usage is: + * + * $fusiontablesService = new Google_Service_Fusiontables(...); + * $template = $fusiontablesService->template; + * + */ +class Google_Service_Fusiontables_Template_Resource extends Google_Service_Resource +{ + + /** + * Deletes a template (template.delete) + * + * @param string $tableId + * Table from which the template is being deleted + * @param int $templateId + * Identifier for the template which is being deleted + * @param array $optParams Optional parameters. + */ + public function delete($tableId, $templateId, $optParams = array()) + { + $params = array('tableId' => $tableId, 'templateId' => $templateId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves a specific template by its id (template.get) + * + * @param string $tableId + * Table to which the template belongs + * @param int $templateId + * Identifier for the template that is being requested + * @param array $optParams Optional parameters. + * @return Google_Service_Fusiontables_Template + */ + public function get($tableId, $templateId, $optParams = array()) + { + $params = array('tableId' => $tableId, 'templateId' => $templateId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Fusiontables_Template"); + } + /** + * Creates a new template for the table. (template.insert) + * + * @param string $tableId + * Table for which a new template is being created + * @param Google_Template $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Fusiontables_Template + */ + public function insert($tableId, Google_Service_Fusiontables_Template $postBody, $optParams = array()) + { + $params = array('tableId' => $tableId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Fusiontables_Template"); + } + /** + * Retrieves a list of templates. (template.listTemplate) + * + * @param string $tableId + * Identifier for the table whose templates are being requested + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Continuation token specifying which results page to return. Optional. + * @opt_param string maxResults + * Maximum number of templates to return. Optional. Default is 5. + * @return Google_Service_Fusiontables_TemplateList + */ + public function listTemplate($tableId, $optParams = array()) + { + $params = array('tableId' => $tableId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Fusiontables_TemplateList"); + } + /** + * Updates an existing template. This method supports patch semantics. + * (template.patch) + * + * @param string $tableId + * Table to which the updated template belongs + * @param int $templateId + * Identifier for the template that is being updated + * @param Google_Template $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Fusiontables_Template + */ + public function patch($tableId, $templateId, Google_Service_Fusiontables_Template $postBody, $optParams = array()) + { + $params = array('tableId' => $tableId, 'templateId' => $templateId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Fusiontables_Template"); + } + /** + * Updates an existing template (template.update) + * + * @param string $tableId + * Table to which the updated template belongs + * @param int $templateId + * Identifier for the template that is being updated + * @param Google_Template $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Fusiontables_Template + */ + public function update($tableId, $templateId, Google_Service_Fusiontables_Template $postBody, $optParams = array()) + { + $params = array('tableId' => $tableId, 'templateId' => $templateId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Fusiontables_Template"); + } +} + + + + +class Google_Service_Fusiontables_Bucket extends Google_Model +{ + public $color; + public $icon; + public $max; + public $min; + public $opacity; + public $weight; + + public function setColor($color) + { + $this->color = $color; + } + + public function getColor() + { + return $this->color; + } + + public function setIcon($icon) + { + $this->icon = $icon; + } + + public function getIcon() + { + return $this->icon; + } + + public function setMax($max) + { + $this->max = $max; + } + + public function getMax() + { + return $this->max; + } + + public function setMin($min) + { + $this->min = $min; + } + + public function getMin() + { + return $this->min; + } + + public function setOpacity($opacity) + { + $this->opacity = $opacity; + } + + public function getOpacity() + { + return $this->opacity; + } + + public function setWeight($weight) + { + $this->weight = $weight; + } + + public function getWeight() + { + return $this->weight; + } +} + +class Google_Service_Fusiontables_Column extends Google_Model +{ + protected $baseColumnType = 'Google_Service_Fusiontables_ColumnBaseColumn'; + protected $baseColumnDataType = ''; + public $columnId; + public $description; + public $graphPredicate; + public $kind; + public $name; + public $type; + + public function setBaseColumn(Google_Service_Fusiontables_ColumnBaseColumn $baseColumn) + { + $this->baseColumn = $baseColumn; + } + + public function getBaseColumn() + { + return $this->baseColumn; + } + + public function setColumnId($columnId) + { + $this->columnId = $columnId; + } + + public function getColumnId() + { + return $this->columnId; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setGraphPredicate($graphPredicate) + { + $this->graphPredicate = $graphPredicate; + } + + public function getGraphPredicate() + { + return $this->graphPredicate; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Fusiontables_ColumnBaseColumn extends Google_Model +{ + public $columnId; + public $tableIndex; + + public function setColumnId($columnId) + { + $this->columnId = $columnId; + } + + public function getColumnId() + { + return $this->columnId; + } + + public function setTableIndex($tableIndex) + { + $this->tableIndex = $tableIndex; + } + + public function getTableIndex() + { + return $this->tableIndex; + } +} + +class Google_Service_Fusiontables_ColumnList extends Google_Collection +{ + protected $itemsType = 'Google_Service_Fusiontables_Column'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $totalItems; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_Fusiontables_Geometry extends Google_Collection +{ + public $geometries; + public $geometry; + public $type; + + public function setGeometries($geometries) + { + $this->geometries = $geometries; + } + + public function getGeometries() + { + return $this->geometries; + } + + public function setGeometry($geometry) + { + $this->geometry = $geometry; + } + + public function getGeometry() + { + return $this->geometry; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Fusiontables_Import extends Google_Model +{ + public $kind; + public $numRowsReceived; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNumRowsReceived($numRowsReceived) + { + $this->numRowsReceived = $numRowsReceived; + } + + public function getNumRowsReceived() + { + return $this->numRowsReceived; + } +} + +class Google_Service_Fusiontables_Line extends Google_Collection +{ + public $coordinates; + public $type; + + public function setCoordinates($coordinates) + { + $this->coordinates = $coordinates; + } + + public function getCoordinates() + { + return $this->coordinates; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Fusiontables_LineStyle extends Google_Model +{ + public $strokeColor; + protected $strokeColorStylerType = 'Google_Service_Fusiontables_StyleFunction'; + protected $strokeColorStylerDataType = ''; + public $strokeOpacity; + public $strokeWeight; + protected $strokeWeightStylerType = 'Google_Service_Fusiontables_StyleFunction'; + protected $strokeWeightStylerDataType = ''; + + public function setStrokeColor($strokeColor) + { + $this->strokeColor = $strokeColor; + } + + public function getStrokeColor() + { + return $this->strokeColor; + } + + public function setStrokeColorStyler(Google_Service_Fusiontables_StyleFunction $strokeColorStyler) + { + $this->strokeColorStyler = $strokeColorStyler; + } + + public function getStrokeColorStyler() + { + return $this->strokeColorStyler; + } + + public function setStrokeOpacity($strokeOpacity) + { + $this->strokeOpacity = $strokeOpacity; + } + + public function getStrokeOpacity() + { + return $this->strokeOpacity; + } + + public function setStrokeWeight($strokeWeight) + { + $this->strokeWeight = $strokeWeight; + } + + public function getStrokeWeight() + { + return $this->strokeWeight; + } + + public function setStrokeWeightStyler(Google_Service_Fusiontables_StyleFunction $strokeWeightStyler) + { + $this->strokeWeightStyler = $strokeWeightStyler; + } + + public function getStrokeWeightStyler() + { + return $this->strokeWeightStyler; + } +} + +class Google_Service_Fusiontables_Point extends Google_Collection +{ + public $coordinates; + public $type; + + public function setCoordinates($coordinates) + { + $this->coordinates = $coordinates; + } + + public function getCoordinates() + { + return $this->coordinates; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Fusiontables_PointStyle extends Google_Model +{ + public $iconName; + protected $iconStylerType = 'Google_Service_Fusiontables_StyleFunction'; + protected $iconStylerDataType = ''; + + public function setIconName($iconName) + { + $this->iconName = $iconName; + } + + public function getIconName() + { + return $this->iconName; + } + + public function setIconStyler(Google_Service_Fusiontables_StyleFunction $iconStyler) + { + $this->iconStyler = $iconStyler; + } + + public function getIconStyler() + { + return $this->iconStyler; + } +} + +class Google_Service_Fusiontables_Polygon extends Google_Collection +{ + public $coordinates; + public $type; + + public function setCoordinates($coordinates) + { + $this->coordinates = $coordinates; + } + + public function getCoordinates() + { + return $this->coordinates; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Fusiontables_PolygonStyle extends Google_Model +{ + public $fillColor; + protected $fillColorStylerType = 'Google_Service_Fusiontables_StyleFunction'; + protected $fillColorStylerDataType = ''; + public $fillOpacity; + public $strokeColor; + protected $strokeColorStylerType = 'Google_Service_Fusiontables_StyleFunction'; + protected $strokeColorStylerDataType = ''; + public $strokeOpacity; + public $strokeWeight; + protected $strokeWeightStylerType = 'Google_Service_Fusiontables_StyleFunction'; + protected $strokeWeightStylerDataType = ''; + + public function setFillColor($fillColor) + { + $this->fillColor = $fillColor; + } + + public function getFillColor() + { + return $this->fillColor; + } + + public function setFillColorStyler(Google_Service_Fusiontables_StyleFunction $fillColorStyler) + { + $this->fillColorStyler = $fillColorStyler; + } + + public function getFillColorStyler() + { + return $this->fillColorStyler; + } + + public function setFillOpacity($fillOpacity) + { + $this->fillOpacity = $fillOpacity; + } + + public function getFillOpacity() + { + return $this->fillOpacity; + } + + public function setStrokeColor($strokeColor) + { + $this->strokeColor = $strokeColor; + } + + public function getStrokeColor() + { + return $this->strokeColor; + } + + public function setStrokeColorStyler(Google_Service_Fusiontables_StyleFunction $strokeColorStyler) + { + $this->strokeColorStyler = $strokeColorStyler; + } + + public function getStrokeColorStyler() + { + return $this->strokeColorStyler; + } + + public function setStrokeOpacity($strokeOpacity) + { + $this->strokeOpacity = $strokeOpacity; + } + + public function getStrokeOpacity() + { + return $this->strokeOpacity; + } + + public function setStrokeWeight($strokeWeight) + { + $this->strokeWeight = $strokeWeight; + } + + public function getStrokeWeight() + { + return $this->strokeWeight; + } + + public function setStrokeWeightStyler(Google_Service_Fusiontables_StyleFunction $strokeWeightStyler) + { + $this->strokeWeightStyler = $strokeWeightStyler; + } + + public function getStrokeWeightStyler() + { + return $this->strokeWeightStyler; + } +} + +class Google_Service_Fusiontables_Sqlresponse extends Google_Collection +{ + public $columns; + public $kind; + public $rows; + + public function setColumns($columns) + { + $this->columns = $columns; + } + + public function getColumns() + { + return $this->columns; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRows($rows) + { + $this->rows = $rows; + } + + public function getRows() + { + return $this->rows; + } +} + +class Google_Service_Fusiontables_StyleFunction extends Google_Collection +{ + protected $bucketsType = 'Google_Service_Fusiontables_Bucket'; + protected $bucketsDataType = 'array'; + public $columnName; + protected $gradientType = 'Google_Service_Fusiontables_StyleFunctionGradient'; + protected $gradientDataType = ''; + public $kind; + + public function setBuckets($buckets) + { + $this->buckets = $buckets; + } + + public function getBuckets() + { + return $this->buckets; + } + + public function setColumnName($columnName) + { + $this->columnName = $columnName; + } + + public function getColumnName() + { + return $this->columnName; + } + + public function setGradient(Google_Service_Fusiontables_StyleFunctionGradient $gradient) + { + $this->gradient = $gradient; + } + + public function getGradient() + { + return $this->gradient; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Fusiontables_StyleFunctionGradient extends Google_Collection +{ + protected $colorsType = 'Google_Service_Fusiontables_StyleFunctionGradientColors'; + protected $colorsDataType = 'array'; + public $max; + public $min; + + public function setColors($colors) + { + $this->colors = $colors; + } + + public function getColors() + { + return $this->colors; + } + + public function setMax($max) + { + $this->max = $max; + } + + public function getMax() + { + return $this->max; + } + + public function setMin($min) + { + $this->min = $min; + } + + public function getMin() + { + return $this->min; + } +} + +class Google_Service_Fusiontables_StyleFunctionGradientColors extends Google_Model +{ + public $color; + public $opacity; + + public function setColor($color) + { + $this->color = $color; + } + + public function getColor() + { + return $this->color; + } + + public function setOpacity($opacity) + { + $this->opacity = $opacity; + } + + public function getOpacity() + { + return $this->opacity; + } +} + +class Google_Service_Fusiontables_StyleSetting extends Google_Model +{ + public $kind; + protected $markerOptionsType = 'Google_Service_Fusiontables_PointStyle'; + protected $markerOptionsDataType = ''; + public $name; + protected $polygonOptionsType = 'Google_Service_Fusiontables_PolygonStyle'; + protected $polygonOptionsDataType = ''; + protected $polylineOptionsType = 'Google_Service_Fusiontables_LineStyle'; + protected $polylineOptionsDataType = ''; + public $styleId; + public $tableId; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMarkerOptions(Google_Service_Fusiontables_PointStyle $markerOptions) + { + $this->markerOptions = $markerOptions; + } + + public function getMarkerOptions() + { + return $this->markerOptions; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPolygonOptions(Google_Service_Fusiontables_PolygonStyle $polygonOptions) + { + $this->polygonOptions = $polygonOptions; + } + + public function getPolygonOptions() + { + return $this->polygonOptions; + } + + public function setPolylineOptions(Google_Service_Fusiontables_LineStyle $polylineOptions) + { + $this->polylineOptions = $polylineOptions; + } + + public function getPolylineOptions() + { + return $this->polylineOptions; + } + + public function setStyleId($styleId) + { + $this->styleId = $styleId; + } + + public function getStyleId() + { + return $this->styleId; + } + + public function setTableId($tableId) + { + $this->tableId = $tableId; + } + + public function getTableId() + { + return $this->tableId; + } +} + +class Google_Service_Fusiontables_StyleSettingList extends Google_Collection +{ + protected $itemsType = 'Google_Service_Fusiontables_StyleSetting'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $totalItems; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_Fusiontables_Table extends Google_Collection +{ + public $attribution; + public $attributionLink; + public $baseTableIds; + protected $columnsType = 'Google_Service_Fusiontables_Column'; + protected $columnsDataType = 'array'; + public $description; + public $isExportable; + public $kind; + public $name; + public $sql; + public $tableId; + + public function setAttribution($attribution) + { + $this->attribution = $attribution; + } + + public function getAttribution() + { + return $this->attribution; + } + + public function setAttributionLink($attributionLink) + { + $this->attributionLink = $attributionLink; + } + + public function getAttributionLink() + { + return $this->attributionLink; + } + + public function setBaseTableIds($baseTableIds) + { + $this->baseTableIds = $baseTableIds; + } + + public function getBaseTableIds() + { + return $this->baseTableIds; + } + + public function setColumns($columns) + { + $this->columns = $columns; + } + + public function getColumns() + { + return $this->columns; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setIsExportable($isExportable) + { + $this->isExportable = $isExportable; + } + + public function getIsExportable() + { + return $this->isExportable; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setSql($sql) + { + $this->sql = $sql; + } + + public function getSql() + { + return $this->sql; + } + + public function setTableId($tableId) + { + $this->tableId = $tableId; + } + + public function getTableId() + { + return $this->tableId; + } +} + +class Google_Service_Fusiontables_TableList extends Google_Collection +{ + protected $itemsType = 'Google_Service_Fusiontables_Table'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Fusiontables_Task extends Google_Model +{ + public $kind; + public $progress; + public $started; + public $taskId; + public $type; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setProgress($progress) + { + $this->progress = $progress; + } + + public function getProgress() + { + return $this->progress; + } + + public function setStarted($started) + { + $this->started = $started; + } + + public function getStarted() + { + return $this->started; + } + + public function setTaskId($taskId) + { + $this->taskId = $taskId; + } + + public function getTaskId() + { + return $this->taskId; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Fusiontables_TaskList extends Google_Collection +{ + protected $itemsType = 'Google_Service_Fusiontables_Task'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $totalItems; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_Fusiontables_Template extends Google_Collection +{ + public $automaticColumnNames; + public $body; + public $kind; + public $name; + public $tableId; + public $templateId; + + public function setAutomaticColumnNames($automaticColumnNames) + { + $this->automaticColumnNames = $automaticColumnNames; + } + + public function getAutomaticColumnNames() + { + return $this->automaticColumnNames; + } + + public function setBody($body) + { + $this->body = $body; + } + + public function getBody() + { + return $this->body; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setTableId($tableId) + { + $this->tableId = $tableId; + } + + public function getTableId() + { + return $this->tableId; + } + + public function setTemplateId($templateId) + { + $this->templateId = $templateId; + } + + public function getTemplateId() + { + return $this->templateId; + } +} + +class Google_Service_Fusiontables_TemplateList extends Google_Collection +{ + protected $itemsType = 'Google_Service_Fusiontables_Template'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $totalItems; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} diff --git a/oauth/Google/Service/Games.php b/oauth/Google/Service/Games.php new file mode 100644 index 0000000..312825d --- /dev/null +++ b/oauth/Google/Service/Games.php @@ -0,0 +1,7926 @@ + + * The API for Google Play Game Services. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Games extends Google_Service +{ + /** View and manage its own configuration data in your Google Drive. */ + const DRIVE_APPDATA = "https://www.googleapis.com/auth/drive.appdata"; + /** Share your Google+ profile information and view and manage your game activity. */ + const GAMES = "https://www.googleapis.com/auth/games"; + /** Know your basic profile info and list of people in your circles.. */ + const PLUS_LOGIN = "https://www.googleapis.com/auth/plus.login"; + + public $achievementDefinitions; + public $achievements; + public $applications; + public $events; + public $leaderboards; + public $metagame; + public $players; + public $pushtokens; + public $questMilestones; + public $quests; + public $revisions; + public $rooms; + public $scores; + public $snapshots; + public $turnBasedMatches; + + + /** + * Constructs the internal representation of the Games service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'games/v1/'; + $this->version = 'v1'; + $this->serviceName = 'games'; + + $this->achievementDefinitions = new Google_Service_Games_AchievementDefinitions_Resource( + $this, + $this->serviceName, + 'achievementDefinitions', + array( + 'methods' => array( + 'list' => array( + 'path' => 'achievements', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->achievements = new Google_Service_Games_Achievements_Resource( + $this, + $this->serviceName, + 'achievements', + array( + 'methods' => array( + 'increment' => array( + 'path' => 'achievements/{achievementId}/increment', + 'httpMethod' => 'POST', + 'parameters' => array( + 'achievementId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'stepsToIncrement' => array( + 'location' => 'query', + 'type' => 'integer', + 'required' => true, + ), + 'requestId' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'players/{playerId}/achievements', + 'httpMethod' => 'GET', + 'parameters' => array( + 'playerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'state' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'reveal' => array( + 'path' => 'achievements/{achievementId}/reveal', + 'httpMethod' => 'POST', + 'parameters' => array( + 'achievementId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'setStepsAtLeast' => array( + 'path' => 'achievements/{achievementId}/setStepsAtLeast', + 'httpMethod' => 'POST', + 'parameters' => array( + 'achievementId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'steps' => array( + 'location' => 'query', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'unlock' => array( + 'path' => 'achievements/{achievementId}/unlock', + 'httpMethod' => 'POST', + 'parameters' => array( + 'achievementId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'updateMultiple' => array( + 'path' => 'achievements/updateMultiple', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->applications = new Google_Service_Games_Applications_Resource( + $this, + $this->serviceName, + 'applications', + array( + 'methods' => array( + 'get' => array( + 'path' => 'applications/{applicationId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'applicationId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'platformType' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'played' => array( + 'path' => 'applications/played', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->events = new Google_Service_Games_Events_Resource( + $this, + $this->serviceName, + 'events', + array( + 'methods' => array( + 'listByPlayer' => array( + 'path' => 'events', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'listDefinitions' => array( + 'path' => 'eventDefinitions', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'record' => array( + 'path' => 'events', + 'httpMethod' => 'POST', + 'parameters' => array( + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->leaderboards = new Google_Service_Games_Leaderboards_Resource( + $this, + $this->serviceName, + 'leaderboards', + array( + 'methods' => array( + 'get' => array( + 'path' => 'leaderboards/{leaderboardId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'leaderboardId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'leaderboards', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->metagame = new Google_Service_Games_Metagame_Resource( + $this, + $this->serviceName, + 'metagame', + array( + 'methods' => array( + 'getMetagameConfig' => array( + 'path' => 'metagameConfig', + 'httpMethod' => 'GET', + 'parameters' => array(), + ),'listCategoriesByPlayer' => array( + 'path' => 'players/{playerId}/categories/{collection}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'playerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'collection' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->players = new Google_Service_Games_Players_Resource( + $this, + $this->serviceName, + 'players', + array( + 'methods' => array( + 'get' => array( + 'path' => 'players/{playerId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'playerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'players/me/players/{collection}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'collection' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->pushtokens = new Google_Service_Games_Pushtokens_Resource( + $this, + $this->serviceName, + 'pushtokens', + array( + 'methods' => array( + 'remove' => array( + 'path' => 'pushtokens/remove', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'update' => array( + 'path' => 'pushtokens', + 'httpMethod' => 'PUT', + 'parameters' => array(), + ), + ) + ) + ); + $this->questMilestones = new Google_Service_Games_QuestMilestones_Resource( + $this, + $this->serviceName, + 'questMilestones', + array( + 'methods' => array( + 'claim' => array( + 'path' => 'quests/{questId}/milestones/{milestoneId}/claim', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'questId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'milestoneId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'requestId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->quests = new Google_Service_Games_Quests_Resource( + $this, + $this->serviceName, + 'quests', + array( + 'methods' => array( + 'accept' => array( + 'path' => 'quests/{questId}/accept', + 'httpMethod' => 'POST', + 'parameters' => array( + 'questId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'players/{playerId}/quests', + 'httpMethod' => 'GET', + 'parameters' => array( + 'playerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->revisions = new Google_Service_Games_Revisions_Resource( + $this, + $this->serviceName, + 'revisions', + array( + 'methods' => array( + 'check' => array( + 'path' => 'revisions/check', + 'httpMethod' => 'GET', + 'parameters' => array( + 'clientRevision' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->rooms = new Google_Service_Games_Rooms_Resource( + $this, + $this->serviceName, + 'rooms', + array( + 'methods' => array( + 'create' => array( + 'path' => 'rooms/create', + 'httpMethod' => 'POST', + 'parameters' => array( + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'decline' => array( + 'path' => 'rooms/{roomId}/decline', + 'httpMethod' => 'POST', + 'parameters' => array( + 'roomId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'dismiss' => array( + 'path' => 'rooms/{roomId}/dismiss', + 'httpMethod' => 'POST', + 'parameters' => array( + 'roomId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'rooms/{roomId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'roomId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'join' => array( + 'path' => 'rooms/{roomId}/join', + 'httpMethod' => 'POST', + 'parameters' => array( + 'roomId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'leave' => array( + 'path' => 'rooms/{roomId}/leave', + 'httpMethod' => 'POST', + 'parameters' => array( + 'roomId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'rooms', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'reportStatus' => array( + 'path' => 'rooms/{roomId}/reportstatus', + 'httpMethod' => 'POST', + 'parameters' => array( + 'roomId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->scores = new Google_Service_Games_Scores_Resource( + $this, + $this->serviceName, + 'scores', + array( + 'methods' => array( + 'get' => array( + 'path' => 'players/{playerId}/leaderboards/{leaderboardId}/scores/{timeSpan}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'playerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'leaderboardId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'timeSpan' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'includeRankType' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'leaderboards/{leaderboardId}/scores/{collection}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'leaderboardId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'collection' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'timeSpan' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'listWindow' => array( + 'path' => 'leaderboards/{leaderboardId}/window/{collection}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'leaderboardId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'collection' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'timeSpan' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'returnTopIfAbsent' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'resultsAbove' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'submit' => array( + 'path' => 'leaderboards/{leaderboardId}/scores', + 'httpMethod' => 'POST', + 'parameters' => array( + 'leaderboardId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'score' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'scoreTag' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'submitMultiple' => array( + 'path' => 'leaderboards/scores', + 'httpMethod' => 'POST', + 'parameters' => array( + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->snapshots = new Google_Service_Games_Snapshots_Resource( + $this, + $this->serviceName, + 'snapshots', + array( + 'methods' => array( + 'get' => array( + 'path' => 'snapshots/{snapshotId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'snapshotId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'players/{playerId}/snapshots', + 'httpMethod' => 'GET', + 'parameters' => array( + 'playerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->turnBasedMatches = new Google_Service_Games_TurnBasedMatches_Resource( + $this, + $this->serviceName, + 'turnBasedMatches', + array( + 'methods' => array( + 'cancel' => array( + 'path' => 'turnbasedmatches/{matchId}/cancel', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'matchId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'create' => array( + 'path' => 'turnbasedmatches/create', + 'httpMethod' => 'POST', + 'parameters' => array( + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'decline' => array( + 'path' => 'turnbasedmatches/{matchId}/decline', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'matchId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'dismiss' => array( + 'path' => 'turnbasedmatches/{matchId}/dismiss', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'matchId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'finish' => array( + 'path' => 'turnbasedmatches/{matchId}/finish', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'matchId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'get' => array( + 'path' => 'turnbasedmatches/{matchId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'matchId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'includeMatchData' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'join' => array( + 'path' => 'turnbasedmatches/{matchId}/join', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'matchId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'leave' => array( + 'path' => 'turnbasedmatches/{matchId}/leave', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'matchId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'leaveTurn' => array( + 'path' => 'turnbasedmatches/{matchId}/leaveTurn', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'matchId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'matchVersion' => array( + 'location' => 'query', + 'type' => 'integer', + 'required' => true, + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pendingParticipantId' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'turnbasedmatches', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxCompletedMatches' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'includeMatchData' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'rematch' => array( + 'path' => 'turnbasedmatches/{matchId}/rematch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'matchId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'requestId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'sync' => array( + 'path' => 'turnbasedmatches/sync', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxCompletedMatches' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'includeMatchData' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'takeTurn' => array( + 'path' => 'turnbasedmatches/{matchId}/turn', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'matchId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "achievementDefinitions" collection of methods. + * Typical usage is: + * + * $gamesService = new Google_Service_Games(...); + * $achievementDefinitions = $gamesService->achievementDefinitions; + * + */ +class Google_Service_Games_AchievementDefinitions_Resource extends Google_Service_Resource +{ + + /** + * Lists all the achievement definitions for your application. + * (achievementDefinitions.listAchievementDefinitions) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The token returned by the previous request. + * @opt_param int maxResults + * The maximum number of achievement resources to return in the response, used for paging. For any + * response, the actual number of achievement resources returned may be less than the specified + * maxResults. + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_AchievementDefinitionsListResponse + */ + public function listAchievementDefinitions($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Games_AchievementDefinitionsListResponse"); + } +} + +/** + * The "achievements" collection of methods. + * Typical usage is: + * + * $gamesService = new Google_Service_Games(...); + * $achievements = $gamesService->achievements; + * + */ +class Google_Service_Games_Achievements_Resource extends Google_Service_Resource +{ + + /** + * Increments the steps of the achievement with the given ID for the currently + * authenticated player. (achievements.increment) + * + * @param string $achievementId + * The ID of the achievement used by this method. + * @param int $stepsToIncrement + * The number of steps to increment. + * @param array $optParams Optional parameters. + * + * @opt_param string requestId + * A randomly generated numeric ID for each request specified by the caller. This number is used at + * the server to ensure that the request is handled correctly across retries. + * @return Google_Service_Games_AchievementIncrementResponse + */ + public function increment($achievementId, $stepsToIncrement, $optParams = array()) + { + $params = array('achievementId' => $achievementId, 'stepsToIncrement' => $stepsToIncrement); + $params = array_merge($params, $optParams); + return $this->call('increment', array($params), "Google_Service_Games_AchievementIncrementResponse"); + } + /** + * Lists the progress for all your application's achievements for the currently + * authenticated player. (achievements.listAchievements) + * + * @param string $playerId + * A player ID. A value of me may be used in place of the authenticated player's ID. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The token returned by the previous request. + * @opt_param string state + * Tells the server to return only achievements with the specified state. If this parameter isn't + * specified, all achievements are returned. + * @opt_param int maxResults + * The maximum number of achievement resources to return in the response, used for paging. For any + * response, the actual number of achievement resources returned may be less than the specified + * maxResults. + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_PlayerAchievementListResponse + */ + public function listAchievements($playerId, $optParams = array()) + { + $params = array('playerId' => $playerId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Games_PlayerAchievementListResponse"); + } + /** + * Sets the state of the achievement with the given ID to REVEALED for the + * currently authenticated player. (achievements.reveal) + * + * @param string $achievementId + * The ID of the achievement used by this method. + * @param array $optParams Optional parameters. + * @return Google_Service_Games_AchievementRevealResponse + */ + public function reveal($achievementId, $optParams = array()) + { + $params = array('achievementId' => $achievementId); + $params = array_merge($params, $optParams); + return $this->call('reveal', array($params), "Google_Service_Games_AchievementRevealResponse"); + } + /** + * Sets the steps for the currently authenticated player towards unlocking an + * achievement. If the steps parameter is less than the current number of steps + * that the player already gained for the achievement, the achievement is not + * modified. (achievements.setStepsAtLeast) + * + * @param string $achievementId + * The ID of the achievement used by this method. + * @param int $steps + * The minimum value to set the steps to. + * @param array $optParams Optional parameters. + * @return Google_Service_Games_AchievementSetStepsAtLeastResponse + */ + public function setStepsAtLeast($achievementId, $steps, $optParams = array()) + { + $params = array('achievementId' => $achievementId, 'steps' => $steps); + $params = array_merge($params, $optParams); + return $this->call('setStepsAtLeast', array($params), "Google_Service_Games_AchievementSetStepsAtLeastResponse"); + } + /** + * Unlocks this achievement for the currently authenticated player. + * (achievements.unlock) + * + * @param string $achievementId + * The ID of the achievement used by this method. + * @param array $optParams Optional parameters. + * @return Google_Service_Games_AchievementUnlockResponse + */ + public function unlock($achievementId, $optParams = array()) + { + $params = array('achievementId' => $achievementId); + $params = array_merge($params, $optParams); + return $this->call('unlock', array($params), "Google_Service_Games_AchievementUnlockResponse"); + } + /** + * Updates multiple achievements for the currently authenticated player. + * (achievements.updateMultiple) + * + * @param Google_AchievementUpdateMultipleRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Games_AchievementUpdateMultipleResponse + */ + public function updateMultiple(Google_Service_Games_AchievementUpdateMultipleRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('updateMultiple', array($params), "Google_Service_Games_AchievementUpdateMultipleResponse"); + } +} + +/** + * The "applications" collection of methods. + * Typical usage is: + * + * $gamesService = new Google_Service_Games(...); + * $applications = $gamesService->applications; + * + */ +class Google_Service_Games_Applications_Resource extends Google_Service_Resource +{ + + /** + * Retrieves the metadata of the application with the given ID. If the requested + * application is not available for the specified platformType, the returned + * response will not include any instance data. (applications.get) + * + * @param string $applicationId + * The application being requested. + * @param array $optParams Optional parameters. + * + * @opt_param string platformType + * Restrict application details returned to the specific platform. + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_Application + */ + public function get($applicationId, $optParams = array()) + { + $params = array('applicationId' => $applicationId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Games_Application"); + } + /** + * Indicate that the the currently authenticated user is playing your + * application. (applications.played) + * + * @param array $optParams Optional parameters. + */ + public function played($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('played', array($params)); + } +} + +/** + * The "events" collection of methods. + * Typical usage is: + * + * $gamesService = new Google_Service_Games(...); + * $events = $gamesService->events; + * + */ +class Google_Service_Games_Events_Resource extends Google_Service_Resource +{ + + /** + * Returns a list showing the current progress on events in this application for + * the currently authenticated user. (events.listByPlayer) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The token returned by the previous request. + * @opt_param int maxResults + * The maximum number of events to return in the response, used for paging. For any response, the + * actual number of events to return may be less than the specified maxResults. + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_PlayerEventListResponse + */ + public function listByPlayer($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('listByPlayer', array($params), "Google_Service_Games_PlayerEventListResponse"); + } + /** + * Returns a list of the event definitions in this application. + * (events.listDefinitions) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The token returned by the previous request. + * @opt_param int maxResults + * The maximum number of event definitions to return in the response, used for paging. For any + * response, the actual number of event definitions to return may be less than the specified + * maxResults. + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_EventDefinitionListResponse + */ + public function listDefinitions($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('listDefinitions', array($params), "Google_Service_Games_EventDefinitionListResponse"); + } + /** + * Records a batch of changes to the number of times events have occurred for + * the currently authenticated user of this application. (events.record) + * + * @param Google_EventRecordRequest $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_EventUpdateResponse + */ + public function record(Google_Service_Games_EventRecordRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('record', array($params), "Google_Service_Games_EventUpdateResponse"); + } +} + +/** + * The "leaderboards" collection of methods. + * Typical usage is: + * + * $gamesService = new Google_Service_Games(...); + * $leaderboards = $gamesService->leaderboards; + * + */ +class Google_Service_Games_Leaderboards_Resource extends Google_Service_Resource +{ + + /** + * Retrieves the metadata of the leaderboard with the given ID. + * (leaderboards.get) + * + * @param string $leaderboardId + * The ID of the leaderboard. + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_Leaderboard + */ + public function get($leaderboardId, $optParams = array()) + { + $params = array('leaderboardId' => $leaderboardId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Games_Leaderboard"); + } + /** + * Lists all the leaderboard metadata for your application. + * (leaderboards.listLeaderboards) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The token returned by the previous request. + * @opt_param int maxResults + * The maximum number of leaderboards to return in the response. For any response, the actual + * number of leaderboards returned may be less than the specified maxResults. + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_LeaderboardListResponse + */ + public function listLeaderboards($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Games_LeaderboardListResponse"); + } +} + +/** + * The "metagame" collection of methods. + * Typical usage is: + * + * $gamesService = new Google_Service_Games(...); + * $metagame = $gamesService->metagame; + * + */ +class Google_Service_Games_Metagame_Resource extends Google_Service_Resource +{ + + /** + * Return the metagame configuration data for the calling application. + * (metagame.getMetagameConfig) + * + * @param array $optParams Optional parameters. + * @return Google_Service_Games_MetagameConfig + */ + public function getMetagameConfig($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('getMetagameConfig', array($params), "Google_Service_Games_MetagameConfig"); + } + /** + * List play data aggregated per category for the player corresponding to + * playerId. (metagame.listCategoriesByPlayer) + * + * @param string $playerId + * A player ID. A value of me may be used in place of the authenticated player's ID. + * @param string $collection + * The collection of categories for which data will be returned. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The token returned by the previous request. + * @opt_param int maxResults + * The maximum number of category resources to return in the response, used for paging. For any + * response, the actual number of category resources returned may be less than the specified + * maxResults. + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_CategoryListResponse + */ + public function listCategoriesByPlayer($playerId, $collection, $optParams = array()) + { + $params = array('playerId' => $playerId, 'collection' => $collection); + $params = array_merge($params, $optParams); + return $this->call('listCategoriesByPlayer', array($params), "Google_Service_Games_CategoryListResponse"); + } +} + +/** + * The "players" collection of methods. + * Typical usage is: + * + * $gamesService = new Google_Service_Games(...); + * $players = $gamesService->players; + * + */ +class Google_Service_Games_Players_Resource extends Google_Service_Resource +{ + + /** + * Retrieves the Player resource with the given ID. To retrieve the player for + * the currently authenticated user, set playerId to me. (players.get) + * + * @param string $playerId + * A player ID. A value of me may be used in place of the authenticated player's ID. + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_Player + */ + public function get($playerId, $optParams = array()) + { + $params = array('playerId' => $playerId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Games_Player"); + } + /** + * Get the collection of players for the currently authenticated user. + * (players.listPlayers) + * + * @param string $collection + * Collection of players being retrieved + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The token returned by the previous request. + * @opt_param int maxResults + * The maximum number of player resources to return in the response, used for paging. For any + * response, the actual number of player resources returned may be less than the specified + * maxResults. + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_PlayerListResponse + */ + public function listPlayers($collection, $optParams = array()) + { + $params = array('collection' => $collection); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Games_PlayerListResponse"); + } +} + +/** + * The "pushtokens" collection of methods. + * Typical usage is: + * + * $gamesService = new Google_Service_Games(...); + * $pushtokens = $gamesService->pushtokens; + * + */ +class Google_Service_Games_Pushtokens_Resource extends Google_Service_Resource +{ + + /** + * Removes a push token for the current user and application. Removing a non- + * existent push token will report success. (pushtokens.remove) + * + * @param Google_PushTokenId $postBody + * @param array $optParams Optional parameters. + */ + public function remove(Google_Service_Games_PushTokenId $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('remove', array($params)); + } + /** + * Registers a push token for the current user and application. + * (pushtokens.update) + * + * @param Google_PushToken $postBody + * @param array $optParams Optional parameters. + */ + public function update(Google_Service_Games_PushToken $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params)); + } +} + +/** + * The "questMilestones" collection of methods. + * Typical usage is: + * + * $gamesService = new Google_Service_Games(...); + * $questMilestones = $gamesService->questMilestones; + * + */ +class Google_Service_Games_QuestMilestones_Resource extends Google_Service_Resource +{ + + /** + * Report that a reward for the milestone corresponding to milestoneId for the + * quest corresponding to questId has been claimed by the currently authorized + * user. (questMilestones.claim) + * + * @param string $questId + * The ID of the quest. + * @param string $milestoneId + * The ID of the milestone. + * @param string $requestId + * A numeric ID to ensure that the request is handled correctly across retries. Your client + * application must generate this ID randomly. + * @param array $optParams Optional parameters. + */ + public function claim($questId, $milestoneId, $requestId, $optParams = array()) + { + $params = array('questId' => $questId, 'milestoneId' => $milestoneId, 'requestId' => $requestId); + $params = array_merge($params, $optParams); + return $this->call('claim', array($params)); + } +} + +/** + * The "quests" collection of methods. + * Typical usage is: + * + * $gamesService = new Google_Service_Games(...); + * $quests = $gamesService->quests; + * + */ +class Google_Service_Games_Quests_Resource extends Google_Service_Resource +{ + + /** + * Indicates that the currently authorized user will participate in the quest. + * (quests.accept) + * + * @param string $questId + * The ID of the quest. + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_Quest + */ + public function accept($questId, $optParams = array()) + { + $params = array('questId' => $questId); + $params = array_merge($params, $optParams); + return $this->call('accept', array($params), "Google_Service_Games_Quest"); + } + /** + * Get a list of quests for your application and the currently authenticated + * player. (quests.listQuests) + * + * @param string $playerId + * A player ID. A value of me may be used in place of the authenticated player's ID. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The token returned by the previous request. + * @opt_param int maxResults + * The maximum number of quest resources to return in the response, used for paging. For any + * response, the actual number of quest resources returned may be less than the specified + * maxResults. Acceptable values are 1 to 50, inclusive. (Default: 50). + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_QuestListResponse + */ + public function listQuests($playerId, $optParams = array()) + { + $params = array('playerId' => $playerId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Games_QuestListResponse"); + } +} + +/** + * The "revisions" collection of methods. + * Typical usage is: + * + * $gamesService = new Google_Service_Games(...); + * $revisions = $gamesService->revisions; + * + */ +class Google_Service_Games_Revisions_Resource extends Google_Service_Resource +{ + + /** + * Checks whether the games client is out of date. (revisions.check) + * + * @param string $clientRevision + * The revision of the client SDK used by your application. Format: + * [PLATFORM_TYPE]:[VERSION_NUMBER]. Possible values of PLATFORM_TYPE are: + - "ANDROID" - Client + * is running the Android SDK. + - "IOS" - Client is running the iOS SDK. + - "WEB_APP" - Client is + * running as a Web App. + * @param array $optParams Optional parameters. + * @return Google_Service_Games_RevisionCheckResponse + */ + public function check($clientRevision, $optParams = array()) + { + $params = array('clientRevision' => $clientRevision); + $params = array_merge($params, $optParams); + return $this->call('check', array($params), "Google_Service_Games_RevisionCheckResponse"); + } +} + +/** + * The "rooms" collection of methods. + * Typical usage is: + * + * $gamesService = new Google_Service_Games(...); + * $rooms = $gamesService->rooms; + * + */ +class Google_Service_Games_Rooms_Resource extends Google_Service_Resource +{ + + /** + * Create a room. For internal use by the Games SDK only. Calling this method + * directly is unsupported. (rooms.create) + * + * @param Google_RoomCreateRequest $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_Room + */ + public function create(Google_Service_Games_RoomCreateRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_Games_Room"); + } + /** + * Decline an invitation to join a room. For internal use by the Games SDK only. + * Calling this method directly is unsupported. (rooms.decline) + * + * @param string $roomId + * The ID of the room. + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_Room + */ + public function decline($roomId, $optParams = array()) + { + $params = array('roomId' => $roomId); + $params = array_merge($params, $optParams); + return $this->call('decline', array($params), "Google_Service_Games_Room"); + } + /** + * Dismiss an invitation to join a room. For internal use by the Games SDK only. + * Calling this method directly is unsupported. (rooms.dismiss) + * + * @param string $roomId + * The ID of the room. + * @param array $optParams Optional parameters. + */ + public function dismiss($roomId, $optParams = array()) + { + $params = array('roomId' => $roomId); + $params = array_merge($params, $optParams); + return $this->call('dismiss', array($params)); + } + /** + * Get the data for a room. (rooms.get) + * + * @param string $roomId + * The ID of the room. + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_Room + */ + public function get($roomId, $optParams = array()) + { + $params = array('roomId' => $roomId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Games_Room"); + } + /** + * Join a room. For internal use by the Games SDK only. Calling this method + * directly is unsupported. (rooms.join) + * + * @param string $roomId + * The ID of the room. + * @param Google_RoomJoinRequest $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_Room + */ + public function join($roomId, Google_Service_Games_RoomJoinRequest $postBody, $optParams = array()) + { + $params = array('roomId' => $roomId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('join', array($params), "Google_Service_Games_Room"); + } + /** + * Leave a room. For internal use by the Games SDK only. Calling this method + * directly is unsupported. (rooms.leave) + * + * @param string $roomId + * The ID of the room. + * @param Google_RoomLeaveRequest $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_Room + */ + public function leave($roomId, Google_Service_Games_RoomLeaveRequest $postBody, $optParams = array()) + { + $params = array('roomId' => $roomId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('leave', array($params), "Google_Service_Games_Room"); + } + /** + * Returns invitations to join rooms. (rooms.listRooms) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The token returned by the previous request. + * @opt_param int maxResults + * The maximum number of rooms to return in the response, used for paging. For any response, the + * actual number of rooms to return may be less than the specified maxResults. + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_RoomList + */ + public function listRooms($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Games_RoomList"); + } + /** + * Updates sent by a client reporting the status of peers in a room. For + * internal use by the Games SDK only. Calling this method directly is + * unsupported. (rooms.reportStatus) + * + * @param string $roomId + * The ID of the room. + * @param Google_RoomP2PStatuses $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_RoomStatus + */ + public function reportStatus($roomId, Google_Service_Games_RoomP2PStatuses $postBody, $optParams = array()) + { + $params = array('roomId' => $roomId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('reportStatus', array($params), "Google_Service_Games_RoomStatus"); + } +} + +/** + * The "scores" collection of methods. + * Typical usage is: + * + * $gamesService = new Google_Service_Games(...); + * $scores = $gamesService->scores; + * + */ +class Google_Service_Games_Scores_Resource extends Google_Service_Resource +{ + + /** + * Get high scores, and optionally ranks, in leaderboards for the currently + * authenticated player. For a specific time span, leaderboardId can be set to + * ALL to retrieve data for all leaderboards in a given time span. NOTE: You + * cannot ask for 'ALL' leaderboards and 'ALL' timeSpans in the same request; + * only one parameter may be set to 'ALL'. (scores.get) + * + * @param string $playerId + * A player ID. A value of me may be used in place of the authenticated player's ID. + * @param string $leaderboardId + * The ID of the leaderboard. Can be set to 'ALL' to retrieve data for all leaderboards for this + * application. + * @param string $timeSpan + * The time span for the scores and ranks you're requesting. + * @param array $optParams Optional parameters. + * + * @opt_param string includeRankType + * The types of ranks to return. If the parameter is omitted, no ranks will be returned. + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @opt_param int maxResults + * The maximum number of leaderboard scores to return in the response. For any response, the actual + * number of leaderboard scores returned may be less than the specified maxResults. + * @opt_param string pageToken + * The token returned by the previous request. + * @return Google_Service_Games_PlayerLeaderboardScoreListResponse + */ + public function get($playerId, $leaderboardId, $timeSpan, $optParams = array()) + { + $params = array('playerId' => $playerId, 'leaderboardId' => $leaderboardId, 'timeSpan' => $timeSpan); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Games_PlayerLeaderboardScoreListResponse"); + } + /** + * Lists the scores in a leaderboard, starting from the top. (scores.listScores) + * + * @param string $leaderboardId + * The ID of the leaderboard. + * @param string $collection + * The collection of scores you're requesting. + * @param string $timeSpan + * The time span for the scores and ranks you're requesting. + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @opt_param int maxResults + * The maximum number of leaderboard scores to return in the response. For any response, the actual + * number of leaderboard scores returned may be less than the specified maxResults. + * @opt_param string pageToken + * The token returned by the previous request. + * @return Google_Service_Games_LeaderboardScores + */ + public function listScores($leaderboardId, $collection, $timeSpan, $optParams = array()) + { + $params = array('leaderboardId' => $leaderboardId, 'collection' => $collection, 'timeSpan' => $timeSpan); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Games_LeaderboardScores"); + } + /** + * Lists the scores in a leaderboard around (and including) a player's score. + * (scores.listWindow) + * + * @param string $leaderboardId + * The ID of the leaderboard. + * @param string $collection + * The collection of scores you're requesting. + * @param string $timeSpan + * The time span for the scores and ranks you're requesting. + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @opt_param bool returnTopIfAbsent + * True if the top scores should be returned when the player is not in the leaderboard. Defaults to + * true. + * @opt_param int resultsAbove + * The preferred number of scores to return above the player's score. More scores may be returned + * if the player is at the bottom of the leaderboard; fewer may be returned if the player is at the + * top. Must be less than or equal to maxResults. + * @opt_param int maxResults + * The maximum number of leaderboard scores to return in the response. For any response, the actual + * number of leaderboard scores returned may be less than the specified maxResults. + * @opt_param string pageToken + * The token returned by the previous request. + * @return Google_Service_Games_LeaderboardScores + */ + public function listWindow($leaderboardId, $collection, $timeSpan, $optParams = array()) + { + $params = array('leaderboardId' => $leaderboardId, 'collection' => $collection, 'timeSpan' => $timeSpan); + $params = array_merge($params, $optParams); + return $this->call('listWindow', array($params), "Google_Service_Games_LeaderboardScores"); + } + /** + * Submits a score to the specified leaderboard. (scores.submit) + * + * @param string $leaderboardId + * The ID of the leaderboard. + * @param string $score + * The score you're submitting. The submitted score is ignored if it is worse than a previously + * submitted score, where worse depends on the leaderboard sort order. The meaning of the score + * value depends on the leaderboard format type. For fixed-point, the score represents the raw + * value. For time, the score represents elapsed time in milliseconds. For currency, the score + * represents a value in micro units. + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @opt_param string scoreTag + * Additional information about the score you're submitting. Values must contain no more than 64 + * URI-safe characters as defined by section 2.3 of RFC 3986. + * @return Google_Service_Games_PlayerScoreResponse + */ + public function submit($leaderboardId, $score, $optParams = array()) + { + $params = array('leaderboardId' => $leaderboardId, 'score' => $score); + $params = array_merge($params, $optParams); + return $this->call('submit', array($params), "Google_Service_Games_PlayerScoreResponse"); + } + /** + * Submits multiple scores to leaderboards. (scores.submitMultiple) + * + * @param Google_PlayerScoreSubmissionList $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_PlayerScoreListResponse + */ + public function submitMultiple(Google_Service_Games_PlayerScoreSubmissionList $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('submitMultiple', array($params), "Google_Service_Games_PlayerScoreListResponse"); + } +} + +/** + * The "snapshots" collection of methods. + * Typical usage is: + * + * $gamesService = new Google_Service_Games(...); + * $snapshots = $gamesService->snapshots; + * + */ +class Google_Service_Games_Snapshots_Resource extends Google_Service_Resource +{ + + /** + * Retrieves the metadata for a given snapshot ID. (snapshots.get) + * + * @param string $snapshotId + * The ID of the snapshot. + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_Snapshot + */ + public function get($snapshotId, $optParams = array()) + { + $params = array('snapshotId' => $snapshotId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Games_Snapshot"); + } + /** + * Retrieves a list of snapshots created by your application for the player + * corresponding to the player ID. (snapshots.listSnapshots) + * + * @param string $playerId + * A player ID. A value of me may be used in place of the authenticated player's ID. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The token returned by the previous request. + * @opt_param int maxResults + * The maximum number of snapshot resources to return in the response, used for paging. For any + * response, the actual number of snapshot resources returned may be less than the specified + * maxResults. + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_SnapshotListResponse + */ + public function listSnapshots($playerId, $optParams = array()) + { + $params = array('playerId' => $playerId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Games_SnapshotListResponse"); + } +} + +/** + * The "turnBasedMatches" collection of methods. + * Typical usage is: + * + * $gamesService = new Google_Service_Games(...); + * $turnBasedMatches = $gamesService->turnBasedMatches; + * + */ +class Google_Service_Games_TurnBasedMatches_Resource extends Google_Service_Resource +{ + + /** + * Cancel a turn-based match. (turnBasedMatches.cancel) + * + * @param string $matchId + * The ID of the match. + * @param array $optParams Optional parameters. + */ + public function cancel($matchId, $optParams = array()) + { + $params = array('matchId' => $matchId); + $params = array_merge($params, $optParams); + return $this->call('cancel', array($params)); + } + /** + * Create a turn-based match. (turnBasedMatches.create) + * + * @param Google_TurnBasedMatchCreateRequest $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_TurnBasedMatch + */ + public function create(Google_Service_Games_TurnBasedMatchCreateRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_Games_TurnBasedMatch"); + } + /** + * Decline an invitation to play a turn-based match. (turnBasedMatches.decline) + * + * @param string $matchId + * The ID of the match. + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_TurnBasedMatch + */ + public function decline($matchId, $optParams = array()) + { + $params = array('matchId' => $matchId); + $params = array_merge($params, $optParams); + return $this->call('decline', array($params), "Google_Service_Games_TurnBasedMatch"); + } + /** + * Dismiss a turn-based match from the match list. The match will no longer show + * up in the list and will not generate notifications. + * (turnBasedMatches.dismiss) + * + * @param string $matchId + * The ID of the match. + * @param array $optParams Optional parameters. + */ + public function dismiss($matchId, $optParams = array()) + { + $params = array('matchId' => $matchId); + $params = array_merge($params, $optParams); + return $this->call('dismiss', array($params)); + } + /** + * Finish a turn-based match. Each player should make this call once, after all + * results are in. Only the player whose turn it is may make the first call to + * Finish, and can pass in the final match state. (turnBasedMatches.finish) + * + * @param string $matchId + * The ID of the match. + * @param Google_TurnBasedMatchResults $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_TurnBasedMatch + */ + public function finish($matchId, Google_Service_Games_TurnBasedMatchResults $postBody, $optParams = array()) + { + $params = array('matchId' => $matchId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('finish', array($params), "Google_Service_Games_TurnBasedMatch"); + } + /** + * Get the data for a turn-based match. (turnBasedMatches.get) + * + * @param string $matchId + * The ID of the match. + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @opt_param bool includeMatchData + * Get match data along with metadata. + * @return Google_Service_Games_TurnBasedMatch + */ + public function get($matchId, $optParams = array()) + { + $params = array('matchId' => $matchId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Games_TurnBasedMatch"); + } + /** + * Join a turn-based match. (turnBasedMatches.join) + * + * @param string $matchId + * The ID of the match. + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_TurnBasedMatch + */ + public function join($matchId, $optParams = array()) + { + $params = array('matchId' => $matchId); + $params = array_merge($params, $optParams); + return $this->call('join', array($params), "Google_Service_Games_TurnBasedMatch"); + } + /** + * Leave a turn-based match when it is not the current player's turn, without + * canceling the match. (turnBasedMatches.leave) + * + * @param string $matchId + * The ID of the match. + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_TurnBasedMatch + */ + public function leave($matchId, $optParams = array()) + { + $params = array('matchId' => $matchId); + $params = array_merge($params, $optParams); + return $this->call('leave', array($params), "Google_Service_Games_TurnBasedMatch"); + } + /** + * Leave a turn-based match during the current player's turn, without canceling + * the match. (turnBasedMatches.leaveTurn) + * + * @param string $matchId + * The ID of the match. + * @param int $matchVersion + * The version of the match being updated. + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @opt_param string pendingParticipantId + * The ID of another participant who should take their turn next. If not set, the match will wait + * for other player(s) to join via automatching; this is only valid if automatch criteria is set on + * the match with remaining slots for automatched players. + * @return Google_Service_Games_TurnBasedMatch + */ + public function leaveTurn($matchId, $matchVersion, $optParams = array()) + { + $params = array('matchId' => $matchId, 'matchVersion' => $matchVersion); + $params = array_merge($params, $optParams); + return $this->call('leaveTurn', array($params), "Google_Service_Games_TurnBasedMatch"); + } + /** + * Returns turn-based matches the player is or was involved in. + * (turnBasedMatches.listTurnBasedMatches) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The token returned by the previous request. + * @opt_param int maxCompletedMatches + * The maximum number of completed or canceled matches to return in the response. If not set, all + * matches returned could be completed or canceled. + * @opt_param int maxResults + * The maximum number of matches to return in the response, used for paging. For any response, the + * actual number of matches to return may be less than the specified maxResults. + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @opt_param bool includeMatchData + * True if match data should be returned in the response. Note that not all data will necessarily + * be returned if include_match_data is true; the server may decide to only return data for some of + * the matches to limit download size for the client. The remainder of the data for these matches + * will be retrievable on request. + * @return Google_Service_Games_TurnBasedMatchList + */ + public function listTurnBasedMatches($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Games_TurnBasedMatchList"); + } + /** + * Create a rematch of a match that was previously completed, with the same + * participants. This can be called by only one player on a match still in their + * list; the player must have called Finish first. Returns the newly created + * match; it will be the caller's turn. (turnBasedMatches.rematch) + * + * @param string $matchId + * The ID of the match. + * @param array $optParams Optional parameters. + * + * @opt_param string requestId + * A randomly generated numeric ID for each request specified by the caller. This number is used at + * the server to ensure that the request is handled correctly across retries. + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_TurnBasedMatchRematch + */ + public function rematch($matchId, $optParams = array()) + { + $params = array('matchId' => $matchId); + $params = array_merge($params, $optParams); + return $this->call('rematch', array($params), "Google_Service_Games_TurnBasedMatchRematch"); + } + /** + * Returns turn-based matches the player is or was involved in that changed + * since the last sync call, with the least recent changes coming first. Matches + * that should be removed from the local cache will have a status of + * MATCH_DELETED. (turnBasedMatches.sync) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The token returned by the previous request. + * @opt_param int maxCompletedMatches + * The maximum number of completed or canceled matches to return in the response. If not set, all + * matches returned could be completed or canceled. + * @opt_param int maxResults + * The maximum number of matches to return in the response, used for paging. For any response, the + * actual number of matches to return may be less than the specified maxResults. + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @opt_param bool includeMatchData + * True if match data should be returned in the response. Note that not all data will necessarily + * be returned if include_match_data is true; the server may decide to only return data for some of + * the matches to limit download size for the client. The remainder of the data for these matches + * will be retrievable on request. + * @return Google_Service_Games_TurnBasedMatchSync + */ + public function sync($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('sync', array($params), "Google_Service_Games_TurnBasedMatchSync"); + } + /** + * Commit the results of a player turn. (turnBasedMatches.takeTurn) + * + * @param string $matchId + * The ID of the match. + * @param Google_TurnBasedMatchTurn $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string language + * The preferred language to use for strings returned by this method. + * @return Google_Service_Games_TurnBasedMatch + */ + public function takeTurn($matchId, Google_Service_Games_TurnBasedMatchTurn $postBody, $optParams = array()) + { + $params = array('matchId' => $matchId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('takeTurn', array($params), "Google_Service_Games_TurnBasedMatch"); + } +} + + + + +class Google_Service_Games_AchievementDefinition extends Google_Model +{ + public $achievementType; + public $description; + public $experiencePoints; + public $formattedTotalSteps; + public $id; + public $initialState; + public $isRevealedIconUrlDefault; + public $isUnlockedIconUrlDefault; + public $kind; + public $name; + public $revealedIconUrl; + public $totalSteps; + public $unlockedIconUrl; + + public function setAchievementType($achievementType) + { + $this->achievementType = $achievementType; + } + + public function getAchievementType() + { + return $this->achievementType; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setExperiencePoints($experiencePoints) + { + $this->experiencePoints = $experiencePoints; + } + + public function getExperiencePoints() + { + return $this->experiencePoints; + } + + public function setFormattedTotalSteps($formattedTotalSteps) + { + $this->formattedTotalSteps = $formattedTotalSteps; + } + + public function getFormattedTotalSteps() + { + return $this->formattedTotalSteps; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInitialState($initialState) + { + $this->initialState = $initialState; + } + + public function getInitialState() + { + return $this->initialState; + } + + public function setIsRevealedIconUrlDefault($isRevealedIconUrlDefault) + { + $this->isRevealedIconUrlDefault = $isRevealedIconUrlDefault; + } + + public function getIsRevealedIconUrlDefault() + { + return $this->isRevealedIconUrlDefault; + } + + public function setIsUnlockedIconUrlDefault($isUnlockedIconUrlDefault) + { + $this->isUnlockedIconUrlDefault = $isUnlockedIconUrlDefault; + } + + public function getIsUnlockedIconUrlDefault() + { + return $this->isUnlockedIconUrlDefault; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setRevealedIconUrl($revealedIconUrl) + { + $this->revealedIconUrl = $revealedIconUrl; + } + + public function getRevealedIconUrl() + { + return $this->revealedIconUrl; + } + + public function setTotalSteps($totalSteps) + { + $this->totalSteps = $totalSteps; + } + + public function getTotalSteps() + { + return $this->totalSteps; + } + + public function setUnlockedIconUrl($unlockedIconUrl) + { + $this->unlockedIconUrl = $unlockedIconUrl; + } + + public function getUnlockedIconUrl() + { + return $this->unlockedIconUrl; + } +} + +class Google_Service_Games_AchievementDefinitionsListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_Games_AchievementDefinition'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Games_AchievementIncrementResponse extends Google_Model +{ + public $currentSteps; + public $kind; + public $newlyUnlocked; + + public function setCurrentSteps($currentSteps) + { + $this->currentSteps = $currentSteps; + } + + public function getCurrentSteps() + { + return $this->currentSteps; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNewlyUnlocked($newlyUnlocked) + { + $this->newlyUnlocked = $newlyUnlocked; + } + + public function getNewlyUnlocked() + { + return $this->newlyUnlocked; + } +} + +class Google_Service_Games_AchievementRevealResponse extends Google_Model +{ + public $currentState; + public $kind; + + public function setCurrentState($currentState) + { + $this->currentState = $currentState; + } + + public function getCurrentState() + { + return $this->currentState; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Games_AchievementSetStepsAtLeastResponse extends Google_Model +{ + public $currentSteps; + public $kind; + public $newlyUnlocked; + + public function setCurrentSteps($currentSteps) + { + $this->currentSteps = $currentSteps; + } + + public function getCurrentSteps() + { + return $this->currentSteps; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNewlyUnlocked($newlyUnlocked) + { + $this->newlyUnlocked = $newlyUnlocked; + } + + public function getNewlyUnlocked() + { + return $this->newlyUnlocked; + } +} + +class Google_Service_Games_AchievementUnlockResponse extends Google_Model +{ + public $kind; + public $newlyUnlocked; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNewlyUnlocked($newlyUnlocked) + { + $this->newlyUnlocked = $newlyUnlocked; + } + + public function getNewlyUnlocked() + { + return $this->newlyUnlocked; + } +} + +class Google_Service_Games_AchievementUpdateMultipleRequest extends Google_Collection +{ + public $kind; + protected $updatesType = 'Google_Service_Games_AchievementUpdateRequest'; + protected $updatesDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setUpdates($updates) + { + $this->updates = $updates; + } + + public function getUpdates() + { + return $this->updates; + } +} + +class Google_Service_Games_AchievementUpdateMultipleResponse extends Google_Collection +{ + public $kind; + protected $updatedAchievementsType = 'Google_Service_Games_AchievementUpdateResponse'; + protected $updatedAchievementsDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setUpdatedAchievements($updatedAchievements) + { + $this->updatedAchievements = $updatedAchievements; + } + + public function getUpdatedAchievements() + { + return $this->updatedAchievements; + } +} + +class Google_Service_Games_AchievementUpdateRequest extends Google_Model +{ + public $achievementId; + protected $incrementPayloadType = 'Google_Service_Games_GamesAchievementIncrement'; + protected $incrementPayloadDataType = ''; + public $kind; + protected $setStepsAtLeastPayloadType = 'Google_Service_Games_GamesAchievementSetStepsAtLeast'; + protected $setStepsAtLeastPayloadDataType = ''; + public $updateType; + + public function setAchievementId($achievementId) + { + $this->achievementId = $achievementId; + } + + public function getAchievementId() + { + return $this->achievementId; + } + + public function setIncrementPayload(Google_Service_Games_GamesAchievementIncrement $incrementPayload) + { + $this->incrementPayload = $incrementPayload; + } + + public function getIncrementPayload() + { + return $this->incrementPayload; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSetStepsAtLeastPayload(Google_Service_Games_GamesAchievementSetStepsAtLeast $setStepsAtLeastPayload) + { + $this->setStepsAtLeastPayload = $setStepsAtLeastPayload; + } + + public function getSetStepsAtLeastPayload() + { + return $this->setStepsAtLeastPayload; + } + + public function setUpdateType($updateType) + { + $this->updateType = $updateType; + } + + public function getUpdateType() + { + return $this->updateType; + } +} + +class Google_Service_Games_AchievementUpdateResponse extends Google_Model +{ + public $achievementId; + public $currentState; + public $currentSteps; + public $kind; + public $newlyUnlocked; + public $updateOccurred; + + public function setAchievementId($achievementId) + { + $this->achievementId = $achievementId; + } + + public function getAchievementId() + { + return $this->achievementId; + } + + public function setCurrentState($currentState) + { + $this->currentState = $currentState; + } + + public function getCurrentState() + { + return $this->currentState; + } + + public function setCurrentSteps($currentSteps) + { + $this->currentSteps = $currentSteps; + } + + public function getCurrentSteps() + { + return $this->currentSteps; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNewlyUnlocked($newlyUnlocked) + { + $this->newlyUnlocked = $newlyUnlocked; + } + + public function getNewlyUnlocked() + { + return $this->newlyUnlocked; + } + + public function setUpdateOccurred($updateOccurred) + { + $this->updateOccurred = $updateOccurred; + } + + public function getUpdateOccurred() + { + return $this->updateOccurred; + } +} + +class Google_Service_Games_AggregateStats extends Google_Model +{ + public $count; + public $kind; + public $max; + public $min; + public $sum; + + public function setCount($count) + { + $this->count = $count; + } + + public function getCount() + { + return $this->count; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMax($max) + { + $this->max = $max; + } + + public function getMax() + { + return $this->max; + } + + public function setMin($min) + { + $this->min = $min; + } + + public function getMin() + { + return $this->min; + } + + public function setSum($sum) + { + $this->sum = $sum; + } + + public function getSum() + { + return $this->sum; + } +} + +class Google_Service_Games_AnonymousPlayer extends Google_Model +{ + public $avatarImageUrl; + public $displayName; + public $kind; + + public function setAvatarImageUrl($avatarImageUrl) + { + $this->avatarImageUrl = $avatarImageUrl; + } + + public function getAvatarImageUrl() + { + return $this->avatarImageUrl; + } + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Games_Application extends Google_Collection +{ + public $achievementCount; + protected $assetsType = 'Google_Service_Games_ImageAsset'; + protected $assetsDataType = 'array'; + public $author; + protected $categoryType = 'Google_Service_Games_ApplicationCategory'; + protected $categoryDataType = ''; + public $description; + public $enabledFeatures; + public $id; + protected $instancesType = 'Google_Service_Games_Instance'; + protected $instancesDataType = 'array'; + public $kind; + public $lastUpdatedTimestamp; + public $leaderboardCount; + public $name; + + public function setAchievementCount($achievementCount) + { + $this->achievementCount = $achievementCount; + } + + public function getAchievementCount() + { + return $this->achievementCount; + } + + public function setAssets($assets) + { + $this->assets = $assets; + } + + public function getAssets() + { + return $this->assets; + } + + public function setAuthor($author) + { + $this->author = $author; + } + + public function getAuthor() + { + return $this->author; + } + + public function setCategory(Google_Service_Games_ApplicationCategory $category) + { + $this->category = $category; + } + + public function getCategory() + { + return $this->category; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setEnabledFeatures($enabledFeatures) + { + $this->enabledFeatures = $enabledFeatures; + } + + public function getEnabledFeatures() + { + return $this->enabledFeatures; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInstances($instances) + { + $this->instances = $instances; + } + + public function getInstances() + { + return $this->instances; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastUpdatedTimestamp($lastUpdatedTimestamp) + { + $this->lastUpdatedTimestamp = $lastUpdatedTimestamp; + } + + public function getLastUpdatedTimestamp() + { + return $this->lastUpdatedTimestamp; + } + + public function setLeaderboardCount($leaderboardCount) + { + $this->leaderboardCount = $leaderboardCount; + } + + public function getLeaderboardCount() + { + return $this->leaderboardCount; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_Games_ApplicationCategory extends Google_Model +{ + public $kind; + public $primary; + public $secondary; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPrimary($primary) + { + $this->primary = $primary; + } + + public function getPrimary() + { + return $this->primary; + } + + public function setSecondary($secondary) + { + $this->secondary = $secondary; + } + + public function getSecondary() + { + return $this->secondary; + } +} + +class Google_Service_Games_Category extends Google_Model +{ + public $category; + public $experiencePoints; + public $kind; + + public function setCategory($category) + { + $this->category = $category; + } + + public function getCategory() + { + return $this->category; + } + + public function setExperiencePoints($experiencePoints) + { + $this->experiencePoints = $experiencePoints; + } + + public function getExperiencePoints() + { + return $this->experiencePoints; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Games_CategoryListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_Games_Category'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Games_EventBatchRecordFailure extends Google_Model +{ + public $failureCause; + public $kind; + protected $rangeType = 'Google_Service_Games_EventPeriodRange'; + protected $rangeDataType = ''; + + public function setFailureCause($failureCause) + { + $this->failureCause = $failureCause; + } + + public function getFailureCause() + { + return $this->failureCause; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRange(Google_Service_Games_EventPeriodRange $range) + { + $this->range = $range; + } + + public function getRange() + { + return $this->range; + } +} + +class Google_Service_Games_EventChild extends Google_Model +{ + public $childId; + public $kind; + + public function setChildId($childId) + { + $this->childId = $childId; + } + + public function getChildId() + { + return $this->childId; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Games_EventDefinition extends Google_Collection +{ + protected $childEventsType = 'Google_Service_Games_EventChild'; + protected $childEventsDataType = 'array'; + public $description; + public $displayName; + public $id; + public $imageUrl; + public $isDefaultImageUrl; + public $kind; + public $visibility; + + public function setChildEvents($childEvents) + { + $this->childEvents = $childEvents; + } + + public function getChildEvents() + { + return $this->childEvents; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImageUrl($imageUrl) + { + $this->imageUrl = $imageUrl; + } + + public function getImageUrl() + { + return $this->imageUrl; + } + + public function setIsDefaultImageUrl($isDefaultImageUrl) + { + $this->isDefaultImageUrl = $isDefaultImageUrl; + } + + public function getIsDefaultImageUrl() + { + return $this->isDefaultImageUrl; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setVisibility($visibility) + { + $this->visibility = $visibility; + } + + public function getVisibility() + { + return $this->visibility; + } +} + +class Google_Service_Games_EventDefinitionListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_Games_EventDefinition'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Games_EventPeriodRange extends Google_Model +{ + public $kind; + public $periodEndMillis; + public $periodStartMillis; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPeriodEndMillis($periodEndMillis) + { + $this->periodEndMillis = $periodEndMillis; + } + + public function getPeriodEndMillis() + { + return $this->periodEndMillis; + } + + public function setPeriodStartMillis($periodStartMillis) + { + $this->periodStartMillis = $periodStartMillis; + } + + public function getPeriodStartMillis() + { + return $this->periodStartMillis; + } +} + +class Google_Service_Games_EventPeriodUpdate extends Google_Collection +{ + public $kind; + protected $timePeriodType = 'Google_Service_Games_EventPeriodRange'; + protected $timePeriodDataType = ''; + protected $updatesType = 'Google_Service_Games_EventUpdateRequest'; + protected $updatesDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setTimePeriod(Google_Service_Games_EventPeriodRange $timePeriod) + { + $this->timePeriod = $timePeriod; + } + + public function getTimePeriod() + { + return $this->timePeriod; + } + + public function setUpdates($updates) + { + $this->updates = $updates; + } + + public function getUpdates() + { + return $this->updates; + } +} + +class Google_Service_Games_EventRecordFailure extends Google_Model +{ + public $eventId; + public $failureCause; + public $kind; + + public function setEventId($eventId) + { + $this->eventId = $eventId; + } + + public function getEventId() + { + return $this->eventId; + } + + public function setFailureCause($failureCause) + { + $this->failureCause = $failureCause; + } + + public function getFailureCause() + { + return $this->failureCause; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Games_EventRecordRequest extends Google_Collection +{ + public $currentTimeMillis; + public $kind; + public $requestId; + protected $timePeriodsType = 'Google_Service_Games_EventPeriodUpdate'; + protected $timePeriodsDataType = 'array'; + + public function setCurrentTimeMillis($currentTimeMillis) + { + $this->currentTimeMillis = $currentTimeMillis; + } + + public function getCurrentTimeMillis() + { + return $this->currentTimeMillis; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRequestId($requestId) + { + $this->requestId = $requestId; + } + + public function getRequestId() + { + return $this->requestId; + } + + public function setTimePeriods($timePeriods) + { + $this->timePeriods = $timePeriods; + } + + public function getTimePeriods() + { + return $this->timePeriods; + } +} + +class Google_Service_Games_EventUpdateRequest extends Google_Model +{ + public $definitionId; + public $kind; + public $updateCount; + + public function setDefinitionId($definitionId) + { + $this->definitionId = $definitionId; + } + + public function getDefinitionId() + { + return $this->definitionId; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setUpdateCount($updateCount) + { + $this->updateCount = $updateCount; + } + + public function getUpdateCount() + { + return $this->updateCount; + } +} + +class Google_Service_Games_EventUpdateResponse extends Google_Collection +{ + protected $batchFailuresType = 'Google_Service_Games_EventBatchRecordFailure'; + protected $batchFailuresDataType = 'array'; + protected $eventFailuresType = 'Google_Service_Games_EventRecordFailure'; + protected $eventFailuresDataType = 'array'; + public $kind; + protected $playerEventsType = 'Google_Service_Games_PlayerEvent'; + protected $playerEventsDataType = 'array'; + + public function setBatchFailures($batchFailures) + { + $this->batchFailures = $batchFailures; + } + + public function getBatchFailures() + { + return $this->batchFailures; + } + + public function setEventFailures($eventFailures) + { + $this->eventFailures = $eventFailures; + } + + public function getEventFailures() + { + return $this->eventFailures; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPlayerEvents($playerEvents) + { + $this->playerEvents = $playerEvents; + } + + public function getPlayerEvents() + { + return $this->playerEvents; + } +} + +class Google_Service_Games_GamesAchievementIncrement extends Google_Model +{ + public $kind; + public $requestId; + public $steps; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRequestId($requestId) + { + $this->requestId = $requestId; + } + + public function getRequestId() + { + return $this->requestId; + } + + public function setSteps($steps) + { + $this->steps = $steps; + } + + public function getSteps() + { + return $this->steps; + } +} + +class Google_Service_Games_GamesAchievementSetStepsAtLeast extends Google_Model +{ + public $kind; + public $steps; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSteps($steps) + { + $this->steps = $steps; + } + + public function getSteps() + { + return $this->steps; + } +} + +class Google_Service_Games_ImageAsset extends Google_Model +{ + public $height; + public $kind; + public $name; + public $url; + public $width; + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_Games_Instance extends Google_Model +{ + public $acquisitionUri; + protected $androidInstanceType = 'Google_Service_Games_InstanceAndroidDetails'; + protected $androidInstanceDataType = ''; + protected $iosInstanceType = 'Google_Service_Games_InstanceIosDetails'; + protected $iosInstanceDataType = ''; + public $kind; + public $name; + public $platformType; + public $realtimePlay; + public $turnBasedPlay; + protected $webInstanceType = 'Google_Service_Games_InstanceWebDetails'; + protected $webInstanceDataType = ''; + + public function setAcquisitionUri($acquisitionUri) + { + $this->acquisitionUri = $acquisitionUri; + } + + public function getAcquisitionUri() + { + return $this->acquisitionUri; + } + + public function setAndroidInstance(Google_Service_Games_InstanceAndroidDetails $androidInstance) + { + $this->androidInstance = $androidInstance; + } + + public function getAndroidInstance() + { + return $this->androidInstance; + } + + public function setIosInstance(Google_Service_Games_InstanceIosDetails $iosInstance) + { + $this->iosInstance = $iosInstance; + } + + public function getIosInstance() + { + return $this->iosInstance; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPlatformType($platformType) + { + $this->platformType = $platformType; + } + + public function getPlatformType() + { + return $this->platformType; + } + + public function setRealtimePlay($realtimePlay) + { + $this->realtimePlay = $realtimePlay; + } + + public function getRealtimePlay() + { + return $this->realtimePlay; + } + + public function setTurnBasedPlay($turnBasedPlay) + { + $this->turnBasedPlay = $turnBasedPlay; + } + + public function getTurnBasedPlay() + { + return $this->turnBasedPlay; + } + + public function setWebInstance(Google_Service_Games_InstanceWebDetails $webInstance) + { + $this->webInstance = $webInstance; + } + + public function getWebInstance() + { + return $this->webInstance; + } +} + +class Google_Service_Games_InstanceAndroidDetails extends Google_Model +{ + public $enablePiracyCheck; + public $kind; + public $packageName; + public $preferred; + + public function setEnablePiracyCheck($enablePiracyCheck) + { + $this->enablePiracyCheck = $enablePiracyCheck; + } + + public function getEnablePiracyCheck() + { + return $this->enablePiracyCheck; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPackageName($packageName) + { + $this->packageName = $packageName; + } + + public function getPackageName() + { + return $this->packageName; + } + + public function setPreferred($preferred) + { + $this->preferred = $preferred; + } + + public function getPreferred() + { + return $this->preferred; + } +} + +class Google_Service_Games_InstanceIosDetails extends Google_Model +{ + public $bundleIdentifier; + public $itunesAppId; + public $kind; + public $preferredForIpad; + public $preferredForIphone; + public $supportIpad; + public $supportIphone; + + public function setBundleIdentifier($bundleIdentifier) + { + $this->bundleIdentifier = $bundleIdentifier; + } + + public function getBundleIdentifier() + { + return $this->bundleIdentifier; + } + + public function setItunesAppId($itunesAppId) + { + $this->itunesAppId = $itunesAppId; + } + + public function getItunesAppId() + { + return $this->itunesAppId; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPreferredForIpad($preferredForIpad) + { + $this->preferredForIpad = $preferredForIpad; + } + + public function getPreferredForIpad() + { + return $this->preferredForIpad; + } + + public function setPreferredForIphone($preferredForIphone) + { + $this->preferredForIphone = $preferredForIphone; + } + + public function getPreferredForIphone() + { + return $this->preferredForIphone; + } + + public function setSupportIpad($supportIpad) + { + $this->supportIpad = $supportIpad; + } + + public function getSupportIpad() + { + return $this->supportIpad; + } + + public function setSupportIphone($supportIphone) + { + $this->supportIphone = $supportIphone; + } + + public function getSupportIphone() + { + return $this->supportIphone; + } +} + +class Google_Service_Games_InstanceWebDetails extends Google_Model +{ + public $kind; + public $launchUrl; + public $preferred; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLaunchUrl($launchUrl) + { + $this->launchUrl = $launchUrl; + } + + public function getLaunchUrl() + { + return $this->launchUrl; + } + + public function setPreferred($preferred) + { + $this->preferred = $preferred; + } + + public function getPreferred() + { + return $this->preferred; + } +} + +class Google_Service_Games_Leaderboard extends Google_Model +{ + public $iconUrl; + public $id; + public $isIconUrlDefault; + public $kind; + public $name; + public $order; + + public function setIconUrl($iconUrl) + { + $this->iconUrl = $iconUrl; + } + + public function getIconUrl() + { + return $this->iconUrl; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setIsIconUrlDefault($isIconUrlDefault) + { + $this->isIconUrlDefault = $isIconUrlDefault; + } + + public function getIsIconUrlDefault() + { + return $this->isIconUrlDefault; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setOrder($order) + { + $this->order = $order; + } + + public function getOrder() + { + return $this->order; + } +} + +class Google_Service_Games_LeaderboardEntry extends Google_Model +{ + public $formattedScore; + public $formattedScoreRank; + public $kind; + protected $playerType = 'Google_Service_Games_Player'; + protected $playerDataType = ''; + public $scoreRank; + public $scoreTag; + public $scoreValue; + public $timeSpan; + public $writeTimestampMillis; + + public function setFormattedScore($formattedScore) + { + $this->formattedScore = $formattedScore; + } + + public function getFormattedScore() + { + return $this->formattedScore; + } + + public function setFormattedScoreRank($formattedScoreRank) + { + $this->formattedScoreRank = $formattedScoreRank; + } + + public function getFormattedScoreRank() + { + return $this->formattedScoreRank; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPlayer(Google_Service_Games_Player $player) + { + $this->player = $player; + } + + public function getPlayer() + { + return $this->player; + } + + public function setScoreRank($scoreRank) + { + $this->scoreRank = $scoreRank; + } + + public function getScoreRank() + { + return $this->scoreRank; + } + + public function setScoreTag($scoreTag) + { + $this->scoreTag = $scoreTag; + } + + public function getScoreTag() + { + return $this->scoreTag; + } + + public function setScoreValue($scoreValue) + { + $this->scoreValue = $scoreValue; + } + + public function getScoreValue() + { + return $this->scoreValue; + } + + public function setTimeSpan($timeSpan) + { + $this->timeSpan = $timeSpan; + } + + public function getTimeSpan() + { + return $this->timeSpan; + } + + public function setWriteTimestampMillis($writeTimestampMillis) + { + $this->writeTimestampMillis = $writeTimestampMillis; + } + + public function getWriteTimestampMillis() + { + return $this->writeTimestampMillis; + } +} + +class Google_Service_Games_LeaderboardListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_Games_Leaderboard'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Games_LeaderboardScoreRank extends Google_Model +{ + public $formattedNumScores; + public $formattedRank; + public $kind; + public $numScores; + public $rank; + + public function setFormattedNumScores($formattedNumScores) + { + $this->formattedNumScores = $formattedNumScores; + } + + public function getFormattedNumScores() + { + return $this->formattedNumScores; + } + + public function setFormattedRank($formattedRank) + { + $this->formattedRank = $formattedRank; + } + + public function getFormattedRank() + { + return $this->formattedRank; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNumScores($numScores) + { + $this->numScores = $numScores; + } + + public function getNumScores() + { + return $this->numScores; + } + + public function setRank($rank) + { + $this->rank = $rank; + } + + public function getRank() + { + return $this->rank; + } +} + +class Google_Service_Games_LeaderboardScores extends Google_Collection +{ + protected $itemsType = 'Google_Service_Games_LeaderboardEntry'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $numScores; + protected $playerScoreType = 'Google_Service_Games_LeaderboardEntry'; + protected $playerScoreDataType = ''; + public $prevPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setNumScores($numScores) + { + $this->numScores = $numScores; + } + + public function getNumScores() + { + return $this->numScores; + } + + public function setPlayerScore(Google_Service_Games_LeaderboardEntry $playerScore) + { + $this->playerScore = $playerScore; + } + + public function getPlayerScore() + { + return $this->playerScore; + } + + public function setPrevPageToken($prevPageToken) + { + $this->prevPageToken = $prevPageToken; + } + + public function getPrevPageToken() + { + return $this->prevPageToken; + } +} + +class Google_Service_Games_MetagameConfig extends Google_Collection +{ + public $currentVersion; + public $kind; + protected $playerLevelsType = 'Google_Service_Games_PlayerLevel'; + protected $playerLevelsDataType = 'array'; + + public function setCurrentVersion($currentVersion) + { + $this->currentVersion = $currentVersion; + } + + public function getCurrentVersion() + { + return $this->currentVersion; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPlayerLevels($playerLevels) + { + $this->playerLevels = $playerLevels; + } + + public function getPlayerLevels() + { + return $this->playerLevels; + } +} + +class Google_Service_Games_NetworkDiagnostics extends Google_Model +{ + public $androidNetworkSubtype; + public $androidNetworkType; + public $iosNetworkType; + public $kind; + public $networkOperatorCode; + public $networkOperatorName; + public $registrationLatencyMillis; + + public function setAndroidNetworkSubtype($androidNetworkSubtype) + { + $this->androidNetworkSubtype = $androidNetworkSubtype; + } + + public function getAndroidNetworkSubtype() + { + return $this->androidNetworkSubtype; + } + + public function setAndroidNetworkType($androidNetworkType) + { + $this->androidNetworkType = $androidNetworkType; + } + + public function getAndroidNetworkType() + { + return $this->androidNetworkType; + } + + public function setIosNetworkType($iosNetworkType) + { + $this->iosNetworkType = $iosNetworkType; + } + + public function getIosNetworkType() + { + return $this->iosNetworkType; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNetworkOperatorCode($networkOperatorCode) + { + $this->networkOperatorCode = $networkOperatorCode; + } + + public function getNetworkOperatorCode() + { + return $this->networkOperatorCode; + } + + public function setNetworkOperatorName($networkOperatorName) + { + $this->networkOperatorName = $networkOperatorName; + } + + public function getNetworkOperatorName() + { + return $this->networkOperatorName; + } + + public function setRegistrationLatencyMillis($registrationLatencyMillis) + { + $this->registrationLatencyMillis = $registrationLatencyMillis; + } + + public function getRegistrationLatencyMillis() + { + return $this->registrationLatencyMillis; + } +} + +class Google_Service_Games_ParticipantResult extends Google_Model +{ + public $kind; + public $participantId; + public $placing; + public $result; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setParticipantId($participantId) + { + $this->participantId = $participantId; + } + + public function getParticipantId() + { + return $this->participantId; + } + + public function setPlacing($placing) + { + $this->placing = $placing; + } + + public function getPlacing() + { + return $this->placing; + } + + public function setResult($result) + { + $this->result = $result; + } + + public function getResult() + { + return $this->result; + } +} + +class Google_Service_Games_PeerChannelDiagnostics extends Google_Model +{ + protected $bytesReceivedType = 'Google_Service_Games_AggregateStats'; + protected $bytesReceivedDataType = ''; + protected $bytesSentType = 'Google_Service_Games_AggregateStats'; + protected $bytesSentDataType = ''; + public $kind; + public $numMessagesLost; + public $numMessagesReceived; + public $numMessagesSent; + public $numSendFailures; + protected $roundtripLatencyMillisType = 'Google_Service_Games_AggregateStats'; + protected $roundtripLatencyMillisDataType = ''; + + public function setBytesReceived(Google_Service_Games_AggregateStats $bytesReceived) + { + $this->bytesReceived = $bytesReceived; + } + + public function getBytesReceived() + { + return $this->bytesReceived; + } + + public function setBytesSent(Google_Service_Games_AggregateStats $bytesSent) + { + $this->bytesSent = $bytesSent; + } + + public function getBytesSent() + { + return $this->bytesSent; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNumMessagesLost($numMessagesLost) + { + $this->numMessagesLost = $numMessagesLost; + } + + public function getNumMessagesLost() + { + return $this->numMessagesLost; + } + + public function setNumMessagesReceived($numMessagesReceived) + { + $this->numMessagesReceived = $numMessagesReceived; + } + + public function getNumMessagesReceived() + { + return $this->numMessagesReceived; + } + + public function setNumMessagesSent($numMessagesSent) + { + $this->numMessagesSent = $numMessagesSent; + } + + public function getNumMessagesSent() + { + return $this->numMessagesSent; + } + + public function setNumSendFailures($numSendFailures) + { + $this->numSendFailures = $numSendFailures; + } + + public function getNumSendFailures() + { + return $this->numSendFailures; + } + + public function setRoundtripLatencyMillis(Google_Service_Games_AggregateStats $roundtripLatencyMillis) + { + $this->roundtripLatencyMillis = $roundtripLatencyMillis; + } + + public function getRoundtripLatencyMillis() + { + return $this->roundtripLatencyMillis; + } +} + +class Google_Service_Games_PeerSessionDiagnostics extends Google_Model +{ + public $connectedTimestampMillis; + public $kind; + public $participantId; + protected $reliableChannelType = 'Google_Service_Games_PeerChannelDiagnostics'; + protected $reliableChannelDataType = ''; + protected $unreliableChannelType = 'Google_Service_Games_PeerChannelDiagnostics'; + protected $unreliableChannelDataType = ''; + + public function setConnectedTimestampMillis($connectedTimestampMillis) + { + $this->connectedTimestampMillis = $connectedTimestampMillis; + } + + public function getConnectedTimestampMillis() + { + return $this->connectedTimestampMillis; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setParticipantId($participantId) + { + $this->participantId = $participantId; + } + + public function getParticipantId() + { + return $this->participantId; + } + + public function setReliableChannel(Google_Service_Games_PeerChannelDiagnostics $reliableChannel) + { + $this->reliableChannel = $reliableChannel; + } + + public function getReliableChannel() + { + return $this->reliableChannel; + } + + public function setUnreliableChannel(Google_Service_Games_PeerChannelDiagnostics $unreliableChannel) + { + $this->unreliableChannel = $unreliableChannel; + } + + public function getUnreliableChannel() + { + return $this->unreliableChannel; + } +} + +class Google_Service_Games_Played extends Google_Model +{ + public $autoMatched; + public $kind; + public $timeMillis; + + public function setAutoMatched($autoMatched) + { + $this->autoMatched = $autoMatched; + } + + public function getAutoMatched() + { + return $this->autoMatched; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setTimeMillis($timeMillis) + { + $this->timeMillis = $timeMillis; + } + + public function getTimeMillis() + { + return $this->timeMillis; + } +} + +class Google_Service_Games_Player extends Google_Model +{ + public $avatarImageUrl; + public $displayName; + protected $experienceInfoType = 'Google_Service_Games_PlayerExperienceInfo'; + protected $experienceInfoDataType = ''; + public $kind; + protected $lastPlayedWithType = 'Google_Service_Games_Played'; + protected $lastPlayedWithDataType = ''; + protected $nameType = 'Google_Service_Games_PlayerName'; + protected $nameDataType = ''; + public $playerId; + public $title; + + public function setAvatarImageUrl($avatarImageUrl) + { + $this->avatarImageUrl = $avatarImageUrl; + } + + public function getAvatarImageUrl() + { + return $this->avatarImageUrl; + } + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setExperienceInfo(Google_Service_Games_PlayerExperienceInfo $experienceInfo) + { + $this->experienceInfo = $experienceInfo; + } + + public function getExperienceInfo() + { + return $this->experienceInfo; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastPlayedWith(Google_Service_Games_Played $lastPlayedWith) + { + $this->lastPlayedWith = $lastPlayedWith; + } + + public function getLastPlayedWith() + { + return $this->lastPlayedWith; + } + + public function setName(Google_Service_Games_PlayerName $name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPlayerId($playerId) + { + $this->playerId = $playerId; + } + + public function getPlayerId() + { + return $this->playerId; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_Games_PlayerAchievement extends Google_Model +{ + public $achievementState; + public $currentSteps; + public $experiencePoints; + public $formattedCurrentStepsString; + public $id; + public $kind; + public $lastUpdatedTimestamp; + + public function setAchievementState($achievementState) + { + $this->achievementState = $achievementState; + } + + public function getAchievementState() + { + return $this->achievementState; + } + + public function setCurrentSteps($currentSteps) + { + $this->currentSteps = $currentSteps; + } + + public function getCurrentSteps() + { + return $this->currentSteps; + } + + public function setExperiencePoints($experiencePoints) + { + $this->experiencePoints = $experiencePoints; + } + + public function getExperiencePoints() + { + return $this->experiencePoints; + } + + public function setFormattedCurrentStepsString($formattedCurrentStepsString) + { + $this->formattedCurrentStepsString = $formattedCurrentStepsString; + } + + public function getFormattedCurrentStepsString() + { + return $this->formattedCurrentStepsString; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastUpdatedTimestamp($lastUpdatedTimestamp) + { + $this->lastUpdatedTimestamp = $lastUpdatedTimestamp; + } + + public function getLastUpdatedTimestamp() + { + return $this->lastUpdatedTimestamp; + } +} + +class Google_Service_Games_PlayerAchievementListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_Games_PlayerAchievement'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Games_PlayerEvent extends Google_Model +{ + public $definitionId; + public $formattedNumEvents; + public $kind; + public $numEvents; + public $playerId; + + public function setDefinitionId($definitionId) + { + $this->definitionId = $definitionId; + } + + public function getDefinitionId() + { + return $this->definitionId; + } + + public function setFormattedNumEvents($formattedNumEvents) + { + $this->formattedNumEvents = $formattedNumEvents; + } + + public function getFormattedNumEvents() + { + return $this->formattedNumEvents; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNumEvents($numEvents) + { + $this->numEvents = $numEvents; + } + + public function getNumEvents() + { + return $this->numEvents; + } + + public function setPlayerId($playerId) + { + $this->playerId = $playerId; + } + + public function getPlayerId() + { + return $this->playerId; + } +} + +class Google_Service_Games_PlayerEventListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_Games_PlayerEvent'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Games_PlayerExperienceInfo extends Google_Model +{ + public $currentExperiencePoints; + protected $currentLevelType = 'Google_Service_Games_PlayerLevel'; + protected $currentLevelDataType = ''; + public $kind; + public $lastLevelUpTimestampMillis; + protected $nextLevelType = 'Google_Service_Games_PlayerLevel'; + protected $nextLevelDataType = ''; + + public function setCurrentExperiencePoints($currentExperiencePoints) + { + $this->currentExperiencePoints = $currentExperiencePoints; + } + + public function getCurrentExperiencePoints() + { + return $this->currentExperiencePoints; + } + + public function setCurrentLevel(Google_Service_Games_PlayerLevel $currentLevel) + { + $this->currentLevel = $currentLevel; + } + + public function getCurrentLevel() + { + return $this->currentLevel; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastLevelUpTimestampMillis($lastLevelUpTimestampMillis) + { + $this->lastLevelUpTimestampMillis = $lastLevelUpTimestampMillis; + } + + public function getLastLevelUpTimestampMillis() + { + return $this->lastLevelUpTimestampMillis; + } + + public function setNextLevel(Google_Service_Games_PlayerLevel $nextLevel) + { + $this->nextLevel = $nextLevel; + } + + public function getNextLevel() + { + return $this->nextLevel; + } +} + +class Google_Service_Games_PlayerLeaderboardScore extends Google_Model +{ + public $kind; + public $leaderboardId; + protected $publicRankType = 'Google_Service_Games_LeaderboardScoreRank'; + protected $publicRankDataType = ''; + public $scoreString; + public $scoreTag; + public $scoreValue; + protected $socialRankType = 'Google_Service_Games_LeaderboardScoreRank'; + protected $socialRankDataType = ''; + public $timeSpan; + public $writeTimestamp; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLeaderboardId($leaderboardId) + { + $this->leaderboardId = $leaderboardId; + } + + public function getLeaderboardId() + { + return $this->leaderboardId; + } + + public function setPublicRank(Google_Service_Games_LeaderboardScoreRank $publicRank) + { + $this->publicRank = $publicRank; + } + + public function getPublicRank() + { + return $this->publicRank; + } + + public function setScoreString($scoreString) + { + $this->scoreString = $scoreString; + } + + public function getScoreString() + { + return $this->scoreString; + } + + public function setScoreTag($scoreTag) + { + $this->scoreTag = $scoreTag; + } + + public function getScoreTag() + { + return $this->scoreTag; + } + + public function setScoreValue($scoreValue) + { + $this->scoreValue = $scoreValue; + } + + public function getScoreValue() + { + return $this->scoreValue; + } + + public function setSocialRank(Google_Service_Games_LeaderboardScoreRank $socialRank) + { + $this->socialRank = $socialRank; + } + + public function getSocialRank() + { + return $this->socialRank; + } + + public function setTimeSpan($timeSpan) + { + $this->timeSpan = $timeSpan; + } + + public function getTimeSpan() + { + return $this->timeSpan; + } + + public function setWriteTimestamp($writeTimestamp) + { + $this->writeTimestamp = $writeTimestamp; + } + + public function getWriteTimestamp() + { + return $this->writeTimestamp; + } +} + +class Google_Service_Games_PlayerLeaderboardScoreListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_Games_PlayerLeaderboardScore'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + protected $playerType = 'Google_Service_Games_Player'; + protected $playerDataType = ''; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPlayer(Google_Service_Games_Player $player) + { + $this->player = $player; + } + + public function getPlayer() + { + return $this->player; + } +} + +class Google_Service_Games_PlayerLevel extends Google_Model +{ + public $kind; + public $level; + public $maxExperiencePoints; + public $minExperiencePoints; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLevel($level) + { + $this->level = $level; + } + + public function getLevel() + { + return $this->level; + } + + public function setMaxExperiencePoints($maxExperiencePoints) + { + $this->maxExperiencePoints = $maxExperiencePoints; + } + + public function getMaxExperiencePoints() + { + return $this->maxExperiencePoints; + } + + public function setMinExperiencePoints($minExperiencePoints) + { + $this->minExperiencePoints = $minExperiencePoints; + } + + public function getMinExperiencePoints() + { + return $this->minExperiencePoints; + } +} + +class Google_Service_Games_PlayerListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_Games_Player'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Games_PlayerName extends Google_Model +{ + public $familyName; + public $givenName; + + public function setFamilyName($familyName) + { + $this->familyName = $familyName; + } + + public function getFamilyName() + { + return $this->familyName; + } + + public function setGivenName($givenName) + { + $this->givenName = $givenName; + } + + public function getGivenName() + { + return $this->givenName; + } +} + +class Google_Service_Games_PlayerScore extends Google_Model +{ + public $formattedScore; + public $kind; + public $score; + public $scoreTag; + public $timeSpan; + + public function setFormattedScore($formattedScore) + { + $this->formattedScore = $formattedScore; + } + + public function getFormattedScore() + { + return $this->formattedScore; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setScore($score) + { + $this->score = $score; + } + + public function getScore() + { + return $this->score; + } + + public function setScoreTag($scoreTag) + { + $this->scoreTag = $scoreTag; + } + + public function getScoreTag() + { + return $this->scoreTag; + } + + public function setTimeSpan($timeSpan) + { + $this->timeSpan = $timeSpan; + } + + public function getTimeSpan() + { + return $this->timeSpan; + } +} + +class Google_Service_Games_PlayerScoreListResponse extends Google_Collection +{ + public $kind; + protected $submittedScoresType = 'Google_Service_Games_PlayerScoreResponse'; + protected $submittedScoresDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSubmittedScores($submittedScores) + { + $this->submittedScores = $submittedScores; + } + + public function getSubmittedScores() + { + return $this->submittedScores; + } +} + +class Google_Service_Games_PlayerScoreResponse extends Google_Collection +{ + public $beatenScoreTimeSpans; + public $formattedScore; + public $kind; + public $leaderboardId; + public $scoreTag; + protected $unbeatenScoresType = 'Google_Service_Games_PlayerScore'; + protected $unbeatenScoresDataType = 'array'; + + public function setBeatenScoreTimeSpans($beatenScoreTimeSpans) + { + $this->beatenScoreTimeSpans = $beatenScoreTimeSpans; + } + + public function getBeatenScoreTimeSpans() + { + return $this->beatenScoreTimeSpans; + } + + public function setFormattedScore($formattedScore) + { + $this->formattedScore = $formattedScore; + } + + public function getFormattedScore() + { + return $this->formattedScore; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLeaderboardId($leaderboardId) + { + $this->leaderboardId = $leaderboardId; + } + + public function getLeaderboardId() + { + return $this->leaderboardId; + } + + public function setScoreTag($scoreTag) + { + $this->scoreTag = $scoreTag; + } + + public function getScoreTag() + { + return $this->scoreTag; + } + + public function setUnbeatenScores($unbeatenScores) + { + $this->unbeatenScores = $unbeatenScores; + } + + public function getUnbeatenScores() + { + return $this->unbeatenScores; + } +} + +class Google_Service_Games_PlayerScoreSubmissionList extends Google_Collection +{ + public $kind; + protected $scoresType = 'Google_Service_Games_ScoreSubmission'; + protected $scoresDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setScores($scores) + { + $this->scores = $scores; + } + + public function getScores() + { + return $this->scores; + } +} + +class Google_Service_Games_PushToken extends Google_Model +{ + public $clientRevision; + protected $idType = 'Google_Service_Games_PushTokenId'; + protected $idDataType = ''; + public $kind; + public $language; + + public function setClientRevision($clientRevision) + { + $this->clientRevision = $clientRevision; + } + + public function getClientRevision() + { + return $this->clientRevision; + } + + public function setId(Google_Service_Games_PushTokenId $id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLanguage($language) + { + $this->language = $language; + } + + public function getLanguage() + { + return $this->language; + } +} + +class Google_Service_Games_PushTokenId extends Google_Model +{ + protected $iosType = 'Google_Service_Games_PushTokenIdIos'; + protected $iosDataType = ''; + public $kind; + + public function setIos(Google_Service_Games_PushTokenIdIos $ios) + { + $this->ios = $ios; + } + + public function getIos() + { + return $this->ios; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Games_PushTokenIdIos extends Google_Model +{ + public $apnsDeviceToken; + public $apnsEnvironment; + + public function setApnsDeviceToken($apnsDeviceToken) + { + $this->apnsDeviceToken = $apnsDeviceToken; + } + + public function getApnsDeviceToken() + { + return $this->apnsDeviceToken; + } + + public function setApnsEnvironment($apnsEnvironment) + { + $this->apnsEnvironment = $apnsEnvironment; + } + + public function getApnsEnvironment() + { + return $this->apnsEnvironment; + } +} + +class Google_Service_Games_Quest extends Google_Collection +{ + public $acceptedTimestampMillis; + public $applicationId; + public $bannerUrl; + public $description; + public $endTimestampMillis; + public $iconUrl; + public $id; + public $isDefaultBannerUrl; + public $isDefaultIconUrl; + public $kind; + public $lastUpdatedTimestampMillis; + protected $milestonesType = 'Google_Service_Games_QuestMilestone'; + protected $milestonesDataType = 'array'; + public $name; + public $notifyTimestampMillis; + public $startTimestampMillis; + public $state; + + public function setAcceptedTimestampMillis($acceptedTimestampMillis) + { + $this->acceptedTimestampMillis = $acceptedTimestampMillis; + } + + public function getAcceptedTimestampMillis() + { + return $this->acceptedTimestampMillis; + } + + public function setApplicationId($applicationId) + { + $this->applicationId = $applicationId; + } + + public function getApplicationId() + { + return $this->applicationId; + } + + public function setBannerUrl($bannerUrl) + { + $this->bannerUrl = $bannerUrl; + } + + public function getBannerUrl() + { + return $this->bannerUrl; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setEndTimestampMillis($endTimestampMillis) + { + $this->endTimestampMillis = $endTimestampMillis; + } + + public function getEndTimestampMillis() + { + return $this->endTimestampMillis; + } + + public function setIconUrl($iconUrl) + { + $this->iconUrl = $iconUrl; + } + + public function getIconUrl() + { + return $this->iconUrl; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setIsDefaultBannerUrl($isDefaultBannerUrl) + { + $this->isDefaultBannerUrl = $isDefaultBannerUrl; + } + + public function getIsDefaultBannerUrl() + { + return $this->isDefaultBannerUrl; + } + + public function setIsDefaultIconUrl($isDefaultIconUrl) + { + $this->isDefaultIconUrl = $isDefaultIconUrl; + } + + public function getIsDefaultIconUrl() + { + return $this->isDefaultIconUrl; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastUpdatedTimestampMillis($lastUpdatedTimestampMillis) + { + $this->lastUpdatedTimestampMillis = $lastUpdatedTimestampMillis; + } + + public function getLastUpdatedTimestampMillis() + { + return $this->lastUpdatedTimestampMillis; + } + + public function setMilestones($milestones) + { + $this->milestones = $milestones; + } + + public function getMilestones() + { + return $this->milestones; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNotifyTimestampMillis($notifyTimestampMillis) + { + $this->notifyTimestampMillis = $notifyTimestampMillis; + } + + public function getNotifyTimestampMillis() + { + return $this->notifyTimestampMillis; + } + + public function setStartTimestampMillis($startTimestampMillis) + { + $this->startTimestampMillis = $startTimestampMillis; + } + + public function getStartTimestampMillis() + { + return $this->startTimestampMillis; + } + + public function setState($state) + { + $this->state = $state; + } + + public function getState() + { + return $this->state; + } +} + +class Google_Service_Games_QuestContribution extends Google_Model +{ + public $formattedValue; + public $kind; + public $value; + + public function setFormattedValue($formattedValue) + { + $this->formattedValue = $formattedValue; + } + + public function getFormattedValue() + { + return $this->formattedValue; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Games_QuestCriterion extends Google_Model +{ + protected $completionContributionType = 'Google_Service_Games_QuestContribution'; + protected $completionContributionDataType = ''; + protected $currentContributionType = 'Google_Service_Games_QuestContribution'; + protected $currentContributionDataType = ''; + public $eventId; + protected $initialPlayerProgressType = 'Google_Service_Games_QuestContribution'; + protected $initialPlayerProgressDataType = ''; + public $kind; + + public function setCompletionContribution(Google_Service_Games_QuestContribution $completionContribution) + { + $this->completionContribution = $completionContribution; + } + + public function getCompletionContribution() + { + return $this->completionContribution; + } + + public function setCurrentContribution(Google_Service_Games_QuestContribution $currentContribution) + { + $this->currentContribution = $currentContribution; + } + + public function getCurrentContribution() + { + return $this->currentContribution; + } + + public function setEventId($eventId) + { + $this->eventId = $eventId; + } + + public function getEventId() + { + return $this->eventId; + } + + public function setInitialPlayerProgress(Google_Service_Games_QuestContribution $initialPlayerProgress) + { + $this->initialPlayerProgress = $initialPlayerProgress; + } + + public function getInitialPlayerProgress() + { + return $this->initialPlayerProgress; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Games_QuestListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_Games_Quest'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Games_QuestMilestone extends Google_Collection +{ + public $completionRewardData; + protected $criteriaType = 'Google_Service_Games_QuestCriterion'; + protected $criteriaDataType = 'array'; + public $id; + public $kind; + public $state; + + public function setCompletionRewardData($completionRewardData) + { + $this->completionRewardData = $completionRewardData; + } + + public function getCompletionRewardData() + { + return $this->completionRewardData; + } + + public function setCriteria($criteria) + { + $this->criteria = $criteria; + } + + public function getCriteria() + { + return $this->criteria; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setState($state) + { + $this->state = $state; + } + + public function getState() + { + return $this->state; + } +} + +class Google_Service_Games_RevisionCheckResponse extends Google_Model +{ + public $apiVersion; + public $kind; + public $revisionStatus; + + public function setApiVersion($apiVersion) + { + $this->apiVersion = $apiVersion; + } + + public function getApiVersion() + { + return $this->apiVersion; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRevisionStatus($revisionStatus) + { + $this->revisionStatus = $revisionStatus; + } + + public function getRevisionStatus() + { + return $this->revisionStatus; + } +} + +class Google_Service_Games_Room extends Google_Collection +{ + public $applicationId; + protected $autoMatchingCriteriaType = 'Google_Service_Games_RoomAutoMatchingCriteria'; + protected $autoMatchingCriteriaDataType = ''; + protected $autoMatchingStatusType = 'Google_Service_Games_RoomAutoMatchStatus'; + protected $autoMatchingStatusDataType = ''; + protected $creationDetailsType = 'Google_Service_Games_RoomModification'; + protected $creationDetailsDataType = ''; + public $description; + public $inviterId; + public $kind; + protected $lastUpdateDetailsType = 'Google_Service_Games_RoomModification'; + protected $lastUpdateDetailsDataType = ''; + protected $participantsType = 'Google_Service_Games_RoomParticipant'; + protected $participantsDataType = 'array'; + public $roomId; + public $roomStatusVersion; + public $status; + public $variant; + + public function setApplicationId($applicationId) + { + $this->applicationId = $applicationId; + } + + public function getApplicationId() + { + return $this->applicationId; + } + + public function setAutoMatchingCriteria(Google_Service_Games_RoomAutoMatchingCriteria $autoMatchingCriteria) + { + $this->autoMatchingCriteria = $autoMatchingCriteria; + } + + public function getAutoMatchingCriteria() + { + return $this->autoMatchingCriteria; + } + + public function setAutoMatchingStatus(Google_Service_Games_RoomAutoMatchStatus $autoMatchingStatus) + { + $this->autoMatchingStatus = $autoMatchingStatus; + } + + public function getAutoMatchingStatus() + { + return $this->autoMatchingStatus; + } + + public function setCreationDetails(Google_Service_Games_RoomModification $creationDetails) + { + $this->creationDetails = $creationDetails; + } + + public function getCreationDetails() + { + return $this->creationDetails; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setInviterId($inviterId) + { + $this->inviterId = $inviterId; + } + + public function getInviterId() + { + return $this->inviterId; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastUpdateDetails(Google_Service_Games_RoomModification $lastUpdateDetails) + { + $this->lastUpdateDetails = $lastUpdateDetails; + } + + public function getLastUpdateDetails() + { + return $this->lastUpdateDetails; + } + + public function setParticipants($participants) + { + $this->participants = $participants; + } + + public function getParticipants() + { + return $this->participants; + } + + public function setRoomId($roomId) + { + $this->roomId = $roomId; + } + + public function getRoomId() + { + return $this->roomId; + } + + public function setRoomStatusVersion($roomStatusVersion) + { + $this->roomStatusVersion = $roomStatusVersion; + } + + public function getRoomStatusVersion() + { + return $this->roomStatusVersion; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setVariant($variant) + { + $this->variant = $variant; + } + + public function getVariant() + { + return $this->variant; + } +} + +class Google_Service_Games_RoomAutoMatchStatus extends Google_Model +{ + public $kind; + public $waitEstimateSeconds; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setWaitEstimateSeconds($waitEstimateSeconds) + { + $this->waitEstimateSeconds = $waitEstimateSeconds; + } + + public function getWaitEstimateSeconds() + { + return $this->waitEstimateSeconds; + } +} + +class Google_Service_Games_RoomAutoMatchingCriteria extends Google_Model +{ + public $exclusiveBitmask; + public $kind; + public $maxAutoMatchingPlayers; + public $minAutoMatchingPlayers; + + public function setExclusiveBitmask($exclusiveBitmask) + { + $this->exclusiveBitmask = $exclusiveBitmask; + } + + public function getExclusiveBitmask() + { + return $this->exclusiveBitmask; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMaxAutoMatchingPlayers($maxAutoMatchingPlayers) + { + $this->maxAutoMatchingPlayers = $maxAutoMatchingPlayers; + } + + public function getMaxAutoMatchingPlayers() + { + return $this->maxAutoMatchingPlayers; + } + + public function setMinAutoMatchingPlayers($minAutoMatchingPlayers) + { + $this->minAutoMatchingPlayers = $minAutoMatchingPlayers; + } + + public function getMinAutoMatchingPlayers() + { + return $this->minAutoMatchingPlayers; + } +} + +class Google_Service_Games_RoomClientAddress extends Google_Model +{ + public $kind; + public $xmppAddress; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setXmppAddress($xmppAddress) + { + $this->xmppAddress = $xmppAddress; + } + + public function getXmppAddress() + { + return $this->xmppAddress; + } +} + +class Google_Service_Games_RoomCreateRequest extends Google_Collection +{ + protected $autoMatchingCriteriaType = 'Google_Service_Games_RoomAutoMatchingCriteria'; + protected $autoMatchingCriteriaDataType = ''; + public $capabilities; + protected $clientAddressType = 'Google_Service_Games_RoomClientAddress'; + protected $clientAddressDataType = ''; + public $invitedPlayerIds; + public $kind; + protected $networkDiagnosticsType = 'Google_Service_Games_NetworkDiagnostics'; + protected $networkDiagnosticsDataType = ''; + public $requestId; + public $variant; + + public function setAutoMatchingCriteria(Google_Service_Games_RoomAutoMatchingCriteria $autoMatchingCriteria) + { + $this->autoMatchingCriteria = $autoMatchingCriteria; + } + + public function getAutoMatchingCriteria() + { + return $this->autoMatchingCriteria; + } + + public function setCapabilities($capabilities) + { + $this->capabilities = $capabilities; + } + + public function getCapabilities() + { + return $this->capabilities; + } + + public function setClientAddress(Google_Service_Games_RoomClientAddress $clientAddress) + { + $this->clientAddress = $clientAddress; + } + + public function getClientAddress() + { + return $this->clientAddress; + } + + public function setInvitedPlayerIds($invitedPlayerIds) + { + $this->invitedPlayerIds = $invitedPlayerIds; + } + + public function getInvitedPlayerIds() + { + return $this->invitedPlayerIds; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNetworkDiagnostics(Google_Service_Games_NetworkDiagnostics $networkDiagnostics) + { + $this->networkDiagnostics = $networkDiagnostics; + } + + public function getNetworkDiagnostics() + { + return $this->networkDiagnostics; + } + + public function setRequestId($requestId) + { + $this->requestId = $requestId; + } + + public function getRequestId() + { + return $this->requestId; + } + + public function setVariant($variant) + { + $this->variant = $variant; + } + + public function getVariant() + { + return $this->variant; + } +} + +class Google_Service_Games_RoomJoinRequest extends Google_Collection +{ + public $capabilities; + protected $clientAddressType = 'Google_Service_Games_RoomClientAddress'; + protected $clientAddressDataType = ''; + public $kind; + protected $networkDiagnosticsType = 'Google_Service_Games_NetworkDiagnostics'; + protected $networkDiagnosticsDataType = ''; + + public function setCapabilities($capabilities) + { + $this->capabilities = $capabilities; + } + + public function getCapabilities() + { + return $this->capabilities; + } + + public function setClientAddress(Google_Service_Games_RoomClientAddress $clientAddress) + { + $this->clientAddress = $clientAddress; + } + + public function getClientAddress() + { + return $this->clientAddress; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNetworkDiagnostics(Google_Service_Games_NetworkDiagnostics $networkDiagnostics) + { + $this->networkDiagnostics = $networkDiagnostics; + } + + public function getNetworkDiagnostics() + { + return $this->networkDiagnostics; + } +} + +class Google_Service_Games_RoomLeaveDiagnostics extends Google_Collection +{ + public $androidNetworkSubtype; + public $androidNetworkType; + public $iosNetworkType; + public $kind; + public $networkOperatorCode; + public $networkOperatorName; + protected $peerSessionType = 'Google_Service_Games_PeerSessionDiagnostics'; + protected $peerSessionDataType = 'array'; + public $socketsUsed; + + public function setAndroidNetworkSubtype($androidNetworkSubtype) + { + $this->androidNetworkSubtype = $androidNetworkSubtype; + } + + public function getAndroidNetworkSubtype() + { + return $this->androidNetworkSubtype; + } + + public function setAndroidNetworkType($androidNetworkType) + { + $this->androidNetworkType = $androidNetworkType; + } + + public function getAndroidNetworkType() + { + return $this->androidNetworkType; + } + + public function setIosNetworkType($iosNetworkType) + { + $this->iosNetworkType = $iosNetworkType; + } + + public function getIosNetworkType() + { + return $this->iosNetworkType; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNetworkOperatorCode($networkOperatorCode) + { + $this->networkOperatorCode = $networkOperatorCode; + } + + public function getNetworkOperatorCode() + { + return $this->networkOperatorCode; + } + + public function setNetworkOperatorName($networkOperatorName) + { + $this->networkOperatorName = $networkOperatorName; + } + + public function getNetworkOperatorName() + { + return $this->networkOperatorName; + } + + public function setPeerSession($peerSession) + { + $this->peerSession = $peerSession; + } + + public function getPeerSession() + { + return $this->peerSession; + } + + public function setSocketsUsed($socketsUsed) + { + $this->socketsUsed = $socketsUsed; + } + + public function getSocketsUsed() + { + return $this->socketsUsed; + } +} + +class Google_Service_Games_RoomLeaveRequest extends Google_Model +{ + public $kind; + protected $leaveDiagnosticsType = 'Google_Service_Games_RoomLeaveDiagnostics'; + protected $leaveDiagnosticsDataType = ''; + public $reason; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLeaveDiagnostics(Google_Service_Games_RoomLeaveDiagnostics $leaveDiagnostics) + { + $this->leaveDiagnostics = $leaveDiagnostics; + } + + public function getLeaveDiagnostics() + { + return $this->leaveDiagnostics; + } + + public function setReason($reason) + { + $this->reason = $reason; + } + + public function getReason() + { + return $this->reason; + } +} + +class Google_Service_Games_RoomList extends Google_Collection +{ + protected $itemsType = 'Google_Service_Games_Room'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Games_RoomModification extends Google_Model +{ + public $kind; + public $modifiedTimestampMillis; + public $participantId; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setModifiedTimestampMillis($modifiedTimestampMillis) + { + $this->modifiedTimestampMillis = $modifiedTimestampMillis; + } + + public function getModifiedTimestampMillis() + { + return $this->modifiedTimestampMillis; + } + + public function setParticipantId($participantId) + { + $this->participantId = $participantId; + } + + public function getParticipantId() + { + return $this->participantId; + } +} + +class Google_Service_Games_RoomP2PStatus extends Google_Model +{ + public $connectionSetupLatencyMillis; + public $error; + public $errorReason; + public $kind; + public $participantId; + public $status; + public $unreliableRoundtripLatencyMillis; + + public function setConnectionSetupLatencyMillis($connectionSetupLatencyMillis) + { + $this->connectionSetupLatencyMillis = $connectionSetupLatencyMillis; + } + + public function getConnectionSetupLatencyMillis() + { + return $this->connectionSetupLatencyMillis; + } + + public function setError($error) + { + $this->error = $error; + } + + public function getError() + { + return $this->error; + } + + public function setErrorReason($errorReason) + { + $this->errorReason = $errorReason; + } + + public function getErrorReason() + { + return $this->errorReason; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setParticipantId($participantId) + { + $this->participantId = $participantId; + } + + public function getParticipantId() + { + return $this->participantId; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setUnreliableRoundtripLatencyMillis($unreliableRoundtripLatencyMillis) + { + $this->unreliableRoundtripLatencyMillis = $unreliableRoundtripLatencyMillis; + } + + public function getUnreliableRoundtripLatencyMillis() + { + return $this->unreliableRoundtripLatencyMillis; + } +} + +class Google_Service_Games_RoomP2PStatuses extends Google_Collection +{ + public $kind; + protected $updatesType = 'Google_Service_Games_RoomP2PStatus'; + protected $updatesDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setUpdates($updates) + { + $this->updates = $updates; + } + + public function getUpdates() + { + return $this->updates; + } +} + +class Google_Service_Games_RoomParticipant extends Google_Collection +{ + public $autoMatched; + protected $autoMatchedPlayerType = 'Google_Service_Games_AnonymousPlayer'; + protected $autoMatchedPlayerDataType = ''; + public $capabilities; + protected $clientAddressType = 'Google_Service_Games_RoomClientAddress'; + protected $clientAddressDataType = ''; + public $connected; + public $id; + public $kind; + public $leaveReason; + protected $playerType = 'Google_Service_Games_Player'; + protected $playerDataType = ''; + public $status; + + public function setAutoMatched($autoMatched) + { + $this->autoMatched = $autoMatched; + } + + public function getAutoMatched() + { + return $this->autoMatched; + } + + public function setAutoMatchedPlayer(Google_Service_Games_AnonymousPlayer $autoMatchedPlayer) + { + $this->autoMatchedPlayer = $autoMatchedPlayer; + } + + public function getAutoMatchedPlayer() + { + return $this->autoMatchedPlayer; + } + + public function setCapabilities($capabilities) + { + $this->capabilities = $capabilities; + } + + public function getCapabilities() + { + return $this->capabilities; + } + + public function setClientAddress(Google_Service_Games_RoomClientAddress $clientAddress) + { + $this->clientAddress = $clientAddress; + } + + public function getClientAddress() + { + return $this->clientAddress; + } + + public function setConnected($connected) + { + $this->connected = $connected; + } + + public function getConnected() + { + return $this->connected; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLeaveReason($leaveReason) + { + $this->leaveReason = $leaveReason; + } + + public function getLeaveReason() + { + return $this->leaveReason; + } + + public function setPlayer(Google_Service_Games_Player $player) + { + $this->player = $player; + } + + public function getPlayer() + { + return $this->player; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_Games_RoomStatus extends Google_Collection +{ + protected $autoMatchingStatusType = 'Google_Service_Games_RoomAutoMatchStatus'; + protected $autoMatchingStatusDataType = ''; + public $kind; + protected $participantsType = 'Google_Service_Games_RoomParticipant'; + protected $participantsDataType = 'array'; + public $roomId; + public $status; + public $statusVersion; + + public function setAutoMatchingStatus(Google_Service_Games_RoomAutoMatchStatus $autoMatchingStatus) + { + $this->autoMatchingStatus = $autoMatchingStatus; + } + + public function getAutoMatchingStatus() + { + return $this->autoMatchingStatus; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setParticipants($participants) + { + $this->participants = $participants; + } + + public function getParticipants() + { + return $this->participants; + } + + public function setRoomId($roomId) + { + $this->roomId = $roomId; + } + + public function getRoomId() + { + return $this->roomId; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setStatusVersion($statusVersion) + { + $this->statusVersion = $statusVersion; + } + + public function getStatusVersion() + { + return $this->statusVersion; + } +} + +class Google_Service_Games_ScoreSubmission extends Google_Model +{ + public $kind; + public $leaderboardId; + public $score; + public $scoreTag; + public $signature; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLeaderboardId($leaderboardId) + { + $this->leaderboardId = $leaderboardId; + } + + public function getLeaderboardId() + { + return $this->leaderboardId; + } + + public function setScore($score) + { + $this->score = $score; + } + + public function getScore() + { + return $this->score; + } + + public function setScoreTag($scoreTag) + { + $this->scoreTag = $scoreTag; + } + + public function getScoreTag() + { + return $this->scoreTag; + } + + public function setSignature($signature) + { + $this->signature = $signature; + } + + public function getSignature() + { + return $this->signature; + } +} + +class Google_Service_Games_Snapshot extends Google_Model +{ + protected $coverImageType = 'Google_Service_Games_SnapshotImage'; + protected $coverImageDataType = ''; + public $description; + public $driveId; + public $durationMillis; + public $id; + public $kind; + public $lastModifiedMillis; + public $title; + public $type; + public $uniqueName; + + public function setCoverImage(Google_Service_Games_SnapshotImage $coverImage) + { + $this->coverImage = $coverImage; + } + + public function getCoverImage() + { + return $this->coverImage; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDriveId($driveId) + { + $this->driveId = $driveId; + } + + public function getDriveId() + { + return $this->driveId; + } + + public function setDurationMillis($durationMillis) + { + $this->durationMillis = $durationMillis; + } + + public function getDurationMillis() + { + return $this->durationMillis; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastModifiedMillis($lastModifiedMillis) + { + $this->lastModifiedMillis = $lastModifiedMillis; + } + + public function getLastModifiedMillis() + { + return $this->lastModifiedMillis; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUniqueName($uniqueName) + { + $this->uniqueName = $uniqueName; + } + + public function getUniqueName() + { + return $this->uniqueName; + } +} + +class Google_Service_Games_SnapshotImage extends Google_Model +{ + public $height; + public $kind; + public $mimeType; + public $url; + public $width; + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMimeType($mimeType) + { + $this->mimeType = $mimeType; + } + + public function getMimeType() + { + return $this->mimeType; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_Games_SnapshotListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_Games_Snapshot'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Games_TurnBasedAutoMatchingCriteria extends Google_Model +{ + public $exclusiveBitmask; + public $kind; + public $maxAutoMatchingPlayers; + public $minAutoMatchingPlayers; + + public function setExclusiveBitmask($exclusiveBitmask) + { + $this->exclusiveBitmask = $exclusiveBitmask; + } + + public function getExclusiveBitmask() + { + return $this->exclusiveBitmask; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMaxAutoMatchingPlayers($maxAutoMatchingPlayers) + { + $this->maxAutoMatchingPlayers = $maxAutoMatchingPlayers; + } + + public function getMaxAutoMatchingPlayers() + { + return $this->maxAutoMatchingPlayers; + } + + public function setMinAutoMatchingPlayers($minAutoMatchingPlayers) + { + $this->minAutoMatchingPlayers = $minAutoMatchingPlayers; + } + + public function getMinAutoMatchingPlayers() + { + return $this->minAutoMatchingPlayers; + } +} + +class Google_Service_Games_TurnBasedMatch extends Google_Collection +{ + public $applicationId; + protected $autoMatchingCriteriaType = 'Google_Service_Games_TurnBasedAutoMatchingCriteria'; + protected $autoMatchingCriteriaDataType = ''; + protected $creationDetailsType = 'Google_Service_Games_TurnBasedMatchModification'; + protected $creationDetailsDataType = ''; + protected $dataType = 'Google_Service_Games_TurnBasedMatchData'; + protected $dataDataType = ''; + public $description; + public $inviterId; + public $kind; + protected $lastUpdateDetailsType = 'Google_Service_Games_TurnBasedMatchModification'; + protected $lastUpdateDetailsDataType = ''; + public $matchId; + public $matchNumber; + public $matchVersion; + protected $participantsType = 'Google_Service_Games_TurnBasedMatchParticipant'; + protected $participantsDataType = 'array'; + public $pendingParticipantId; + protected $previousMatchDataType = 'Google_Service_Games_TurnBasedMatchData'; + protected $previousMatchDataDataType = ''; + public $rematchId; + protected $resultsType = 'Google_Service_Games_ParticipantResult'; + protected $resultsDataType = 'array'; + public $status; + public $userMatchStatus; + public $variant; + public $withParticipantId; + + public function setApplicationId($applicationId) + { + $this->applicationId = $applicationId; + } + + public function getApplicationId() + { + return $this->applicationId; + } + + public function setAutoMatchingCriteria(Google_Service_Games_TurnBasedAutoMatchingCriteria $autoMatchingCriteria) + { + $this->autoMatchingCriteria = $autoMatchingCriteria; + } + + public function getAutoMatchingCriteria() + { + return $this->autoMatchingCriteria; + } + + public function setCreationDetails(Google_Service_Games_TurnBasedMatchModification $creationDetails) + { + $this->creationDetails = $creationDetails; + } + + public function getCreationDetails() + { + return $this->creationDetails; + } + + public function setData(Google_Service_Games_TurnBasedMatchData $data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setInviterId($inviterId) + { + $this->inviterId = $inviterId; + } + + public function getInviterId() + { + return $this->inviterId; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastUpdateDetails(Google_Service_Games_TurnBasedMatchModification $lastUpdateDetails) + { + $this->lastUpdateDetails = $lastUpdateDetails; + } + + public function getLastUpdateDetails() + { + return $this->lastUpdateDetails; + } + + public function setMatchId($matchId) + { + $this->matchId = $matchId; + } + + public function getMatchId() + { + return $this->matchId; + } + + public function setMatchNumber($matchNumber) + { + $this->matchNumber = $matchNumber; + } + + public function getMatchNumber() + { + return $this->matchNumber; + } + + public function setMatchVersion($matchVersion) + { + $this->matchVersion = $matchVersion; + } + + public function getMatchVersion() + { + return $this->matchVersion; + } + + public function setParticipants($participants) + { + $this->participants = $participants; + } + + public function getParticipants() + { + return $this->participants; + } + + public function setPendingParticipantId($pendingParticipantId) + { + $this->pendingParticipantId = $pendingParticipantId; + } + + public function getPendingParticipantId() + { + return $this->pendingParticipantId; + } + + public function setPreviousMatchData(Google_Service_Games_TurnBasedMatchData $previousMatchData) + { + $this->previousMatchData = $previousMatchData; + } + + public function getPreviousMatchData() + { + return $this->previousMatchData; + } + + public function setRematchId($rematchId) + { + $this->rematchId = $rematchId; + } + + public function getRematchId() + { + return $this->rematchId; + } + + public function setResults($results) + { + $this->results = $results; + } + + public function getResults() + { + return $this->results; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setUserMatchStatus($userMatchStatus) + { + $this->userMatchStatus = $userMatchStatus; + } + + public function getUserMatchStatus() + { + return $this->userMatchStatus; + } + + public function setVariant($variant) + { + $this->variant = $variant; + } + + public function getVariant() + { + return $this->variant; + } + + public function setWithParticipantId($withParticipantId) + { + $this->withParticipantId = $withParticipantId; + } + + public function getWithParticipantId() + { + return $this->withParticipantId; + } +} + +class Google_Service_Games_TurnBasedMatchCreateRequest extends Google_Collection +{ + protected $autoMatchingCriteriaType = 'Google_Service_Games_TurnBasedAutoMatchingCriteria'; + protected $autoMatchingCriteriaDataType = ''; + public $invitedPlayerIds; + public $kind; + public $requestId; + public $variant; + + public function setAutoMatchingCriteria(Google_Service_Games_TurnBasedAutoMatchingCriteria $autoMatchingCriteria) + { + $this->autoMatchingCriteria = $autoMatchingCriteria; + } + + public function getAutoMatchingCriteria() + { + return $this->autoMatchingCriteria; + } + + public function setInvitedPlayerIds($invitedPlayerIds) + { + $this->invitedPlayerIds = $invitedPlayerIds; + } + + public function getInvitedPlayerIds() + { + return $this->invitedPlayerIds; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRequestId($requestId) + { + $this->requestId = $requestId; + } + + public function getRequestId() + { + return $this->requestId; + } + + public function setVariant($variant) + { + $this->variant = $variant; + } + + public function getVariant() + { + return $this->variant; + } +} + +class Google_Service_Games_TurnBasedMatchData extends Google_Model +{ + public $data; + public $dataAvailable; + public $kind; + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setDataAvailable($dataAvailable) + { + $this->dataAvailable = $dataAvailable; + } + + public function getDataAvailable() + { + return $this->dataAvailable; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Games_TurnBasedMatchDataRequest extends Google_Model +{ + public $data; + public $kind; + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Games_TurnBasedMatchList extends Google_Collection +{ + protected $itemsType = 'Google_Service_Games_TurnBasedMatch'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Games_TurnBasedMatchModification extends Google_Model +{ + public $kind; + public $modifiedTimestampMillis; + public $participantId; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setModifiedTimestampMillis($modifiedTimestampMillis) + { + $this->modifiedTimestampMillis = $modifiedTimestampMillis; + } + + public function getModifiedTimestampMillis() + { + return $this->modifiedTimestampMillis; + } + + public function setParticipantId($participantId) + { + $this->participantId = $participantId; + } + + public function getParticipantId() + { + return $this->participantId; + } +} + +class Google_Service_Games_TurnBasedMatchParticipant extends Google_Model +{ + public $autoMatched; + protected $autoMatchedPlayerType = 'Google_Service_Games_AnonymousPlayer'; + protected $autoMatchedPlayerDataType = ''; + public $id; + public $kind; + protected $playerType = 'Google_Service_Games_Player'; + protected $playerDataType = ''; + public $status; + + public function setAutoMatched($autoMatched) + { + $this->autoMatched = $autoMatched; + } + + public function getAutoMatched() + { + return $this->autoMatched; + } + + public function setAutoMatchedPlayer(Google_Service_Games_AnonymousPlayer $autoMatchedPlayer) + { + $this->autoMatchedPlayer = $autoMatchedPlayer; + } + + public function getAutoMatchedPlayer() + { + return $this->autoMatchedPlayer; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPlayer(Google_Service_Games_Player $player) + { + $this->player = $player; + } + + public function getPlayer() + { + return $this->player; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_Games_TurnBasedMatchRematch extends Google_Model +{ + public $kind; + protected $previousMatchType = 'Google_Service_Games_TurnBasedMatch'; + protected $previousMatchDataType = ''; + protected $rematchType = 'Google_Service_Games_TurnBasedMatch'; + protected $rematchDataType = ''; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPreviousMatch(Google_Service_Games_TurnBasedMatch $previousMatch) + { + $this->previousMatch = $previousMatch; + } + + public function getPreviousMatch() + { + return $this->previousMatch; + } + + public function setRematch(Google_Service_Games_TurnBasedMatch $rematch) + { + $this->rematch = $rematch; + } + + public function getRematch() + { + return $this->rematch; + } +} + +class Google_Service_Games_TurnBasedMatchResults extends Google_Collection +{ + protected $dataType = 'Google_Service_Games_TurnBasedMatchDataRequest'; + protected $dataDataType = ''; + public $kind; + public $matchVersion; + protected $resultsType = 'Google_Service_Games_ParticipantResult'; + protected $resultsDataType = 'array'; + + public function setData(Google_Service_Games_TurnBasedMatchDataRequest $data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMatchVersion($matchVersion) + { + $this->matchVersion = $matchVersion; + } + + public function getMatchVersion() + { + return $this->matchVersion; + } + + public function setResults($results) + { + $this->results = $results; + } + + public function getResults() + { + return $this->results; + } +} + +class Google_Service_Games_TurnBasedMatchSync extends Google_Collection +{ + protected $itemsType = 'Google_Service_Games_TurnBasedMatch'; + protected $itemsDataType = 'array'; + public $kind; + public $moreAvailable; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMoreAvailable($moreAvailable) + { + $this->moreAvailable = $moreAvailable; + } + + public function getMoreAvailable() + { + return $this->moreAvailable; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Games_TurnBasedMatchTurn extends Google_Collection +{ + protected $dataType = 'Google_Service_Games_TurnBasedMatchDataRequest'; + protected $dataDataType = ''; + public $kind; + public $matchVersion; + public $pendingParticipantId; + protected $resultsType = 'Google_Service_Games_ParticipantResult'; + protected $resultsDataType = 'array'; + + public function setData(Google_Service_Games_TurnBasedMatchDataRequest $data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMatchVersion($matchVersion) + { + $this->matchVersion = $matchVersion; + } + + public function getMatchVersion() + { + return $this->matchVersion; + } + + public function setPendingParticipantId($pendingParticipantId) + { + $this->pendingParticipantId = $pendingParticipantId; + } + + public function getPendingParticipantId() + { + return $this->pendingParticipantId; + } + + public function setResults($results) + { + $this->results = $results; + } + + public function getResults() + { + return $this->results; + } +} diff --git a/oauth/Google/Service/GamesManagement.php b/oauth/Google/Service/GamesManagement.php new file mode 100644 index 0000000..ed61500 --- /dev/null +++ b/oauth/Google/Service/GamesManagement.php @@ -0,0 +1,1014 @@ + + * The Management API for Google Play Game Services. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_GamesManagement extends Google_Service +{ + /** Share your Google+ profile information and view and manage your game activity. */ + const GAMES = "https://www.googleapis.com/auth/games"; + /** Know your basic profile info and list of people in your circles.. */ + const PLUS_LOGIN = "https://www.googleapis.com/auth/plus.login"; + + public $achievements; + public $applications; + public $events; + public $players; + public $quests; + public $rooms; + public $scores; + public $turnBasedMatches; + + + /** + * Constructs the internal representation of the GamesManagement service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'games/v1management/'; + $this->version = 'v1management'; + $this->serviceName = 'gamesManagement'; + + $this->achievements = new Google_Service_GamesManagement_Achievements_Resource( + $this, + $this->serviceName, + 'achievements', + array( + 'methods' => array( + 'reset' => array( + 'path' => 'achievements/{achievementId}/reset', + 'httpMethod' => 'POST', + 'parameters' => array( + 'achievementId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'resetAll' => array( + 'path' => 'achievements/reset', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'resetForAllPlayers' => array( + 'path' => 'achievements/{achievementId}/resetForAllPlayers', + 'httpMethod' => 'POST', + 'parameters' => array( + 'achievementId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->applications = new Google_Service_GamesManagement_Applications_Resource( + $this, + $this->serviceName, + 'applications', + array( + 'methods' => array( + 'listHidden' => array( + 'path' => 'applications/{applicationId}/players/hidden', + 'httpMethod' => 'GET', + 'parameters' => array( + 'applicationId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->events = new Google_Service_GamesManagement_Events_Resource( + $this, + $this->serviceName, + 'events', + array( + 'methods' => array( + 'reset' => array( + 'path' => 'events/{eventId}/reset', + 'httpMethod' => 'POST', + 'parameters' => array( + 'eventId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'resetAll' => array( + 'path' => 'events/reset', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'resetForAllPlayers' => array( + 'path' => 'events/{eventId}/resetForAllPlayers', + 'httpMethod' => 'POST', + 'parameters' => array( + 'eventId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->players = new Google_Service_GamesManagement_Players_Resource( + $this, + $this->serviceName, + 'players', + array( + 'methods' => array( + 'hide' => array( + 'path' => 'applications/{applicationId}/players/hidden/{playerId}', + 'httpMethod' => 'POST', + 'parameters' => array( + 'applicationId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'playerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'unhide' => array( + 'path' => 'applications/{applicationId}/players/hidden/{playerId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'applicationId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'playerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->quests = new Google_Service_GamesManagement_Quests_Resource( + $this, + $this->serviceName, + 'quests', + array( + 'methods' => array( + 'reset' => array( + 'path' => 'quests/{questId}/reset', + 'httpMethod' => 'POST', + 'parameters' => array( + 'questId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->rooms = new Google_Service_GamesManagement_Rooms_Resource( + $this, + $this->serviceName, + 'rooms', + array( + 'methods' => array( + 'reset' => array( + 'path' => 'rooms/reset', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->scores = new Google_Service_GamesManagement_Scores_Resource( + $this, + $this->serviceName, + 'scores', + array( + 'methods' => array( + 'reset' => array( + 'path' => 'leaderboards/{leaderboardId}/scores/reset', + 'httpMethod' => 'POST', + 'parameters' => array( + 'leaderboardId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'resetForAllPlayers' => array( + 'path' => 'leaderboards/{leaderboardId}/scores/resetForAllPlayers', + 'httpMethod' => 'POST', + 'parameters' => array( + 'leaderboardId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->turnBasedMatches = new Google_Service_GamesManagement_TurnBasedMatches_Resource( + $this, + $this->serviceName, + 'turnBasedMatches', + array( + 'methods' => array( + 'reset' => array( + 'path' => 'turnbasedmatches/reset', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + } +} + + +/** + * The "achievements" collection of methods. + * Typical usage is: + * + * $gamesManagementService = new Google_Service_GamesManagement(...); + * $achievements = $gamesManagementService->achievements; + * + */ +class Google_Service_GamesManagement_Achievements_Resource extends Google_Service_Resource +{ + + /** + * Resets the achievement with the given ID for the currently authenticated + * player. This method is only accessible to whitelisted tester accounts for + * your application. (achievements.reset) + * + * @param string $achievementId + * The ID of the achievement used by this method. + * @param array $optParams Optional parameters. + * @return Google_Service_GamesManagement_AchievementResetResponse + */ + public function reset($achievementId, $optParams = array()) + { + $params = array('achievementId' => $achievementId); + $params = array_merge($params, $optParams); + return $this->call('reset', array($params), "Google_Service_GamesManagement_AchievementResetResponse"); + } + /** + * Resets all achievements for the currently authenticated player for your + * application. This method is only accessible to whitelisted tester accounts + * for your application. (achievements.resetAll) + * + * @param array $optParams Optional parameters. + * @return Google_Service_GamesManagement_AchievementResetAllResponse + */ + public function resetAll($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('resetAll', array($params), "Google_Service_GamesManagement_AchievementResetAllResponse"); + } + /** + * Resets the achievement with the given ID for the all players. This method is + * only available to user accounts for your developer console. Only draft + * achievements can be reset. (achievements.resetForAllPlayers) + * + * @param string $achievementId + * The ID of the achievement used by this method. + * @param array $optParams Optional parameters. + */ + public function resetForAllPlayers($achievementId, $optParams = array()) + { + $params = array('achievementId' => $achievementId); + $params = array_merge($params, $optParams); + return $this->call('resetForAllPlayers', array($params)); + } +} + +/** + * The "applications" collection of methods. + * Typical usage is: + * + * $gamesManagementService = new Google_Service_GamesManagement(...); + * $applications = $gamesManagementService->applications; + * + */ +class Google_Service_GamesManagement_Applications_Resource extends Google_Service_Resource +{ + + /** + * Get the list of players hidden from the given application. This method is + * only available to user accounts for your developer console. + * (applications.listHidden) + * + * @param string $applicationId + * The application being requested. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The token returned by the previous request. + * @opt_param int maxResults + * The maximum number of player resources to return in the response, used for paging. For any + * response, the actual number of player resources returned may be less than the specified + * maxResults. + * @return Google_Service_GamesManagement_HiddenPlayerList + */ + public function listHidden($applicationId, $optParams = array()) + { + $params = array('applicationId' => $applicationId); + $params = array_merge($params, $optParams); + return $this->call('listHidden', array($params), "Google_Service_GamesManagement_HiddenPlayerList"); + } +} + +/** + * The "events" collection of methods. + * Typical usage is: + * + * $gamesManagementService = new Google_Service_GamesManagement(...); + * $events = $gamesManagementService->events; + * + */ +class Google_Service_GamesManagement_Events_Resource extends Google_Service_Resource +{ + + /** + * Reset all player progress on the event for the currently authenticated + * player. This method is only accessible to whitelisted tester accounts for + * your application. All resources that use the event will also be reset. + * (events.reset) + * + * @param string $eventId + * The ID of the event. + * @param array $optParams Optional parameters. + */ + public function reset($eventId, $optParams = array()) + { + $params = array('eventId' => $eventId); + $params = array_merge($params, $optParams); + return $this->call('reset', array($params)); + } + /** + * Reset all player progress on all unpublished events for the currently + * authenticated player. This method is only accessible to whitelisted tester + * accounts for your application. All resources that use the events will also be + * reset. (events.resetAll) + * + * @param array $optParams Optional parameters. + */ + public function resetAll($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('resetAll', array($params)); + } + /** + * Reset all player progress on the event for all players. This method is only + * available to user accounts for your developer console. Only draft events can + * be reset. All resources that use the event will also be reset. + * (events.resetForAllPlayers) + * + * @param string $eventId + * The ID of the event. + * @param array $optParams Optional parameters. + */ + public function resetForAllPlayers($eventId, $optParams = array()) + { + $params = array('eventId' => $eventId); + $params = array_merge($params, $optParams); + return $this->call('resetForAllPlayers', array($params)); + } +} + +/** + * The "players" collection of methods. + * Typical usage is: + * + * $gamesManagementService = new Google_Service_GamesManagement(...); + * $players = $gamesManagementService->players; + * + */ +class Google_Service_GamesManagement_Players_Resource extends Google_Service_Resource +{ + + /** + * Hide the given player's leaderboard scores from the given application. This + * method is only available to user accounts for your developer console. + * (players.hide) + * + * @param string $applicationId + * The application being requested. + * @param string $playerId + * A player ID. A value of me may be used in place of the authenticated player's ID. + * @param array $optParams Optional parameters. + */ + public function hide($applicationId, $playerId, $optParams = array()) + { + $params = array('applicationId' => $applicationId, 'playerId' => $playerId); + $params = array_merge($params, $optParams); + return $this->call('hide', array($params)); + } + /** + * Unhide the given player's leaderboard scores from the given application. This + * method is only available to user accounts for your developer console. + * (players.unhide) + * + * @param string $applicationId + * The application being requested. + * @param string $playerId + * A player ID. A value of me may be used in place of the authenticated player's ID. + * @param array $optParams Optional parameters. + */ + public function unhide($applicationId, $playerId, $optParams = array()) + { + $params = array('applicationId' => $applicationId, 'playerId' => $playerId); + $params = array_merge($params, $optParams); + return $this->call('unhide', array($params)); + } +} + +/** + * The "quests" collection of methods. + * Typical usage is: + * + * $gamesManagementService = new Google_Service_GamesManagement(...); + * $quests = $gamesManagementService->quests; + * + */ +class Google_Service_GamesManagement_Quests_Resource extends Google_Service_Resource +{ + + /** + * Reset all player progress on the quest for the currently authenticated + * player. This method is only accessible to whitelisted tester accounts for + * your application. (quests.reset) + * + * @param string $questId + * The ID of the quest. + * @param array $optParams Optional parameters. + */ + public function reset($questId, $optParams = array()) + { + $params = array('questId' => $questId); + $params = array_merge($params, $optParams); + return $this->call('reset', array($params)); + } +} + +/** + * The "rooms" collection of methods. + * Typical usage is: + * + * $gamesManagementService = new Google_Service_GamesManagement(...); + * $rooms = $gamesManagementService->rooms; + * + */ +class Google_Service_GamesManagement_Rooms_Resource extends Google_Service_Resource +{ + + /** + * Reset all rooms for the currently authenticated player for your application. + * This method is only accessible to whitelisted tester accounts for your + * application. (rooms.reset) + * + * @param array $optParams Optional parameters. + */ + public function reset($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('reset', array($params)); + } +} + +/** + * The "scores" collection of methods. + * Typical usage is: + * + * $gamesManagementService = new Google_Service_GamesManagement(...); + * $scores = $gamesManagementService->scores; + * + */ +class Google_Service_GamesManagement_Scores_Resource extends Google_Service_Resource +{ + + /** + * Reset scores for the specified leaderboard for the currently authenticated + * player. This method is only accessible to whitelisted tester accounts for + * your application. (scores.reset) + * + * @param string $leaderboardId + * The ID of the leaderboard. + * @param array $optParams Optional parameters. + * @return Google_Service_GamesManagement_PlayerScoreResetResponse + */ + public function reset($leaderboardId, $optParams = array()) + { + $params = array('leaderboardId' => $leaderboardId); + $params = array_merge($params, $optParams); + return $this->call('reset', array($params), "Google_Service_GamesManagement_PlayerScoreResetResponse"); + } + /** + * Reset scores for the specified leaderboard for all players. This method is + * only available to user accounts for your developer console. Only draft + * leaderboards can be reset. (scores.resetForAllPlayers) + * + * @param string $leaderboardId + * The ID of the leaderboard. + * @param array $optParams Optional parameters. + */ + public function resetForAllPlayers($leaderboardId, $optParams = array()) + { + $params = array('leaderboardId' => $leaderboardId); + $params = array_merge($params, $optParams); + return $this->call('resetForAllPlayers', array($params)); + } +} + +/** + * The "turnBasedMatches" collection of methods. + * Typical usage is: + * + * $gamesManagementService = new Google_Service_GamesManagement(...); + * $turnBasedMatches = $gamesManagementService->turnBasedMatches; + * + */ +class Google_Service_GamesManagement_TurnBasedMatches_Resource extends Google_Service_Resource +{ + + /** + * Reset all turn-based match data for a user. This method is only accessible to + * whitelisted tester accounts for your application. (turnBasedMatches.reset) + * + * @param array $optParams Optional parameters. + */ + public function reset($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('reset', array($params)); + } +} + + + + +class Google_Service_GamesManagement_AchievementResetAllResponse extends Google_Collection +{ + public $kind; + protected $resultsType = 'Google_Service_GamesManagement_AchievementResetResponse'; + protected $resultsDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setResults($results) + { + $this->results = $results; + } + + public function getResults() + { + return $this->results; + } +} + +class Google_Service_GamesManagement_AchievementResetResponse extends Google_Model +{ + public $currentState; + public $definitionId; + public $kind; + public $updateOccurred; + + public function setCurrentState($currentState) + { + $this->currentState = $currentState; + } + + public function getCurrentState() + { + return $this->currentState; + } + + public function setDefinitionId($definitionId) + { + $this->definitionId = $definitionId; + } + + public function getDefinitionId() + { + return $this->definitionId; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setUpdateOccurred($updateOccurred) + { + $this->updateOccurred = $updateOccurred; + } + + public function getUpdateOccurred() + { + return $this->updateOccurred; + } +} + +class Google_Service_GamesManagement_GamesPlayedResource extends Google_Model +{ + public $autoMatched; + public $timeMillis; + + public function setAutoMatched($autoMatched) + { + $this->autoMatched = $autoMatched; + } + + public function getAutoMatched() + { + return $this->autoMatched; + } + + public function setTimeMillis($timeMillis) + { + $this->timeMillis = $timeMillis; + } + + public function getTimeMillis() + { + return $this->timeMillis; + } +} + +class Google_Service_GamesManagement_GamesPlayerExperienceInfoResource extends Google_Model +{ + public $currentExperiencePoints; + protected $currentLevelType = 'Google_Service_GamesManagement_GamesPlayerLevelResource'; + protected $currentLevelDataType = ''; + public $lastLevelUpTimestampMillis; + protected $nextLevelType = 'Google_Service_GamesManagement_GamesPlayerLevelResource'; + protected $nextLevelDataType = ''; + + public function setCurrentExperiencePoints($currentExperiencePoints) + { + $this->currentExperiencePoints = $currentExperiencePoints; + } + + public function getCurrentExperiencePoints() + { + return $this->currentExperiencePoints; + } + + public function setCurrentLevel(Google_Service_GamesManagement_GamesPlayerLevelResource $currentLevel) + { + $this->currentLevel = $currentLevel; + } + + public function getCurrentLevel() + { + return $this->currentLevel; + } + + public function setLastLevelUpTimestampMillis($lastLevelUpTimestampMillis) + { + $this->lastLevelUpTimestampMillis = $lastLevelUpTimestampMillis; + } + + public function getLastLevelUpTimestampMillis() + { + return $this->lastLevelUpTimestampMillis; + } + + public function setNextLevel(Google_Service_GamesManagement_GamesPlayerLevelResource $nextLevel) + { + $this->nextLevel = $nextLevel; + } + + public function getNextLevel() + { + return $this->nextLevel; + } +} + +class Google_Service_GamesManagement_GamesPlayerLevelResource extends Google_Model +{ + public $level; + public $maxExperiencePoints; + public $minExperiencePoints; + + public function setLevel($level) + { + $this->level = $level; + } + + public function getLevel() + { + return $this->level; + } + + public function setMaxExperiencePoints($maxExperiencePoints) + { + $this->maxExperiencePoints = $maxExperiencePoints; + } + + public function getMaxExperiencePoints() + { + return $this->maxExperiencePoints; + } + + public function setMinExperiencePoints($minExperiencePoints) + { + $this->minExperiencePoints = $minExperiencePoints; + } + + public function getMinExperiencePoints() + { + return $this->minExperiencePoints; + } +} + +class Google_Service_GamesManagement_HiddenPlayer extends Google_Model +{ + public $hiddenTimeMillis; + public $kind; + protected $playerType = 'Google_Service_GamesManagement_Player'; + protected $playerDataType = ''; + + public function setHiddenTimeMillis($hiddenTimeMillis) + { + $this->hiddenTimeMillis = $hiddenTimeMillis; + } + + public function getHiddenTimeMillis() + { + return $this->hiddenTimeMillis; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPlayer(Google_Service_GamesManagement_Player $player) + { + $this->player = $player; + } + + public function getPlayer() + { + return $this->player; + } +} + +class Google_Service_GamesManagement_HiddenPlayerList extends Google_Collection +{ + protected $itemsType = 'Google_Service_GamesManagement_HiddenPlayer'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_GamesManagement_Player extends Google_Model +{ + public $avatarImageUrl; + public $displayName; + protected $experienceInfoType = 'Google_Service_GamesManagement_GamesPlayerExperienceInfoResource'; + protected $experienceInfoDataType = ''; + public $kind; + protected $lastPlayedWithType = 'Google_Service_GamesManagement_GamesPlayedResource'; + protected $lastPlayedWithDataType = ''; + protected $nameType = 'Google_Service_GamesManagement_PlayerName'; + protected $nameDataType = ''; + public $playerId; + public $title; + + public function setAvatarImageUrl($avatarImageUrl) + { + $this->avatarImageUrl = $avatarImageUrl; + } + + public function getAvatarImageUrl() + { + return $this->avatarImageUrl; + } + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setExperienceInfo(Google_Service_GamesManagement_GamesPlayerExperienceInfoResource $experienceInfo) + { + $this->experienceInfo = $experienceInfo; + } + + public function getExperienceInfo() + { + return $this->experienceInfo; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastPlayedWith(Google_Service_GamesManagement_GamesPlayedResource $lastPlayedWith) + { + $this->lastPlayedWith = $lastPlayedWith; + } + + public function getLastPlayedWith() + { + return $this->lastPlayedWith; + } + + public function setName(Google_Service_GamesManagement_PlayerName $name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPlayerId($playerId) + { + $this->playerId = $playerId; + } + + public function getPlayerId() + { + return $this->playerId; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_GamesManagement_PlayerName extends Google_Model +{ + public $familyName; + public $givenName; + + public function setFamilyName($familyName) + { + $this->familyName = $familyName; + } + + public function getFamilyName() + { + return $this->familyName; + } + + public function setGivenName($givenName) + { + $this->givenName = $givenName; + } + + public function getGivenName() + { + return $this->givenName; + } +} + +class Google_Service_GamesManagement_PlayerScoreResetResponse extends Google_Collection +{ + public $kind; + public $resetScoreTimeSpans; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setResetScoreTimeSpans($resetScoreTimeSpans) + { + $this->resetScoreTimeSpans = $resetScoreTimeSpans; + } + + public function getResetScoreTimeSpans() + { + return $this->resetScoreTimeSpans; + } +} diff --git a/oauth/Google/Service/Genomics.php b/oauth/Google/Service/Genomics.php new file mode 100644 index 0000000..b568ca9 --- /dev/null +++ b/oauth/Google/Service/Genomics.php @@ -0,0 +1,3247 @@ + + * Provides access to Genomics data. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Genomics extends Google_Service +{ + /** View and manage your data in Google BigQuery. */ + const BIGQUERY = "https://www.googleapis.com/auth/bigquery"; + /** Manage your data in Google Cloud Storage. */ + const DEVSTORAGE_READ_WRITE = "https://www.googleapis.com/auth/devstorage.read_write"; + /** View and manage Genomics data. */ + const GENOMICS = "https://www.googleapis.com/auth/genomics"; + /** View Genomics data. */ + const GENOMICS_READONLY = "https://www.googleapis.com/auth/genomics.readonly"; + + public $beacons; + public $callsets; + public $datasets; + public $experimental_jobs; + public $jobs; + public $reads; + public $readsets; + public $readsets_coveragebuckets; + public $variants; + + + /** + * Constructs the internal representation of the Genomics service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'genomics/v1beta/'; + $this->version = 'v1beta'; + $this->serviceName = 'genomics'; + + $this->beacons = new Google_Service_Genomics_Beacons_Resource( + $this, + $this->serviceName, + 'beacons', + array( + 'methods' => array( + 'get' => array( + 'path' => 'beacons/{datasetId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'allele' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'contig' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'position' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->callsets = new Google_Service_Genomics_Callsets_Resource( + $this, + $this->serviceName, + 'callsets', + array( + 'methods' => array( + 'create' => array( + 'path' => 'callsets', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'delete' => array( + 'path' => 'callsets/{callsetId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'callsetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'callsets/{callsetId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'callsetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => 'callsets/{callsetId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'callsetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'search' => array( + 'path' => 'callsets/search', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'update' => array( + 'path' => 'callsets/{callsetId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'callsetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->datasets = new Google_Service_Genomics_Datasets_Resource( + $this, + $this->serviceName, + 'datasets', + array( + 'methods' => array( + 'create' => array( + 'path' => 'datasets', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'delete' => array( + 'path' => 'datasets/{datasetId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'datasets/{datasetId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'datasets', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projectId' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'datasets/{datasetId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'undelete' => array( + 'path' => 'datasets/{datasetId}/undelete', + 'httpMethod' => 'POST', + 'parameters' => array( + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'datasets/{datasetId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'datasetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->experimental_jobs = new Google_Service_Genomics_ExperimentalJobs_Resource( + $this, + $this->serviceName, + 'jobs', + array( + 'methods' => array( + 'create' => array( + 'path' => 'experimental/jobs/create', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->jobs = new Google_Service_Genomics_Jobs_Resource( + $this, + $this->serviceName, + 'jobs', + array( + 'methods' => array( + 'cancel' => array( + 'path' => 'jobs/{jobId}/cancel', + 'httpMethod' => 'POST', + 'parameters' => array( + 'jobId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'jobs/{jobId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'jobId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'search' => array( + 'path' => 'jobs/search', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->reads = new Google_Service_Genomics_Reads_Resource( + $this, + $this->serviceName, + 'reads', + array( + 'methods' => array( + 'search' => array( + 'path' => 'reads/search', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->readsets = new Google_Service_Genomics_Readsets_Resource( + $this, + $this->serviceName, + 'readsets', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'readsets/{readsetId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'readsetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'export' => array( + 'path' => 'readsets/export', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'get' => array( + 'path' => 'readsets/{readsetId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'readsetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'import' => array( + 'path' => 'readsets/import', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'patch' => array( + 'path' => 'readsets/{readsetId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'readsetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'search' => array( + 'path' => 'readsets/search', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'update' => array( + 'path' => 'readsets/{readsetId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'readsetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->readsets_coveragebuckets = new Google_Service_Genomics_ReadsetsCoveragebuckets_Resource( + $this, + $this->serviceName, + 'coveragebuckets', + array( + 'methods' => array( + 'list' => array( + 'path' => 'readsets/{readsetId}/coveragebuckets', + 'httpMethod' => 'GET', + 'parameters' => array( + 'readsetId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'range.sequenceStart' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'range.sequenceName' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'targetBucketWidth' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'range.sequenceEnd' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->variants = new Google_Service_Genomics_Variants_Resource( + $this, + $this->serviceName, + 'variants', + array( + 'methods' => array( + 'create' => array( + 'path' => 'variants', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'delete' => array( + 'path' => 'variants/{variantId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'variantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'export' => array( + 'path' => 'variants/export', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'get' => array( + 'path' => 'variants/{variantId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'variantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'getSummary' => array( + 'path' => 'variants/summary', + 'httpMethod' => 'GET', + 'parameters' => array( + 'datasetId' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'import' => array( + 'path' => 'variants/import', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'patch' => array( + 'path' => 'variants/{variantId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'variantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'search' => array( + 'path' => 'variants/search', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'update' => array( + 'path' => 'variants/{variantId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'variantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "beacons" collection of methods. + * Typical usage is: + * + * $genomicsService = new Google_Service_Genomics(...); + * $beacons = $genomicsService->beacons; + * + */ +class Google_Service_Genomics_Beacons_Resource extends Google_Service_Resource +{ + + /** + * This is an experimental API that provides a Global Alliance for Genomics and + * Health Beacon. It may change at any time. (beacons.get) + * + * @param string $datasetId + * The ID of the dataset to query over. It must be public. Private datasets will return an + * unauthorized exception. + * @param array $optParams Optional parameters. + * + * @opt_param string allele + * Required. The allele to look for ('A', 'C', 'G' or 'T'). + * @opt_param string contig + * Required. The contig to query over. + * @opt_param string position + * Required. The 1-based position to query at. + * @return Google_Service_Genomics_Beacon + */ + public function get($datasetId, $optParams = array()) + { + $params = array('datasetId' => $datasetId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Genomics_Beacon"); + } +} + +/** + * The "callsets" collection of methods. + * Typical usage is: + * + * $genomicsService = new Google_Service_Genomics(...); + * $callsets = $genomicsService->callsets; + * + */ +class Google_Service_Genomics_Callsets_Resource extends Google_Service_Resource +{ + + /** + * Creates a new callset. (callsets.create) + * + * @param Google_Callset $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_Callset + */ + public function create(Google_Service_Genomics_Callset $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_Genomics_Callset"); + } + /** + * Deletes a callset. (callsets.delete) + * + * @param string $callsetId + * The ID of the callset to be deleted. + * @param array $optParams Optional parameters. + */ + public function delete($callsetId, $optParams = array()) + { + $params = array('callsetId' => $callsetId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets a callset by ID. (callsets.get) + * + * @param string $callsetId + * The ID of the callset. + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_Callset + */ + public function get($callsetId, $optParams = array()) + { + $params = array('callsetId' => $callsetId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Genomics_Callset"); + } + /** + * Updates a callset. This method supports patch semantics. (callsets.patch) + * + * @param string $callsetId + * The ID of the callset to be updated. + * @param Google_Callset $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_Callset + */ + public function patch($callsetId, Google_Service_Genomics_Callset $postBody, $optParams = array()) + { + $params = array('callsetId' => $callsetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Genomics_Callset"); + } + /** + * Gets a list of callsets matching the criteria. (callsets.search) + * + * @param Google_SearchCallsetsRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_SearchCallsetsResponse + */ + public function search(Google_Service_Genomics_SearchCallsetsRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('search', array($params), "Google_Service_Genomics_SearchCallsetsResponse"); + } + /** + * Updates a callset. (callsets.update) + * + * @param string $callsetId + * The ID of the callset to be updated. + * @param Google_Callset $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_Callset + */ + public function update($callsetId, Google_Service_Genomics_Callset $postBody, $optParams = array()) + { + $params = array('callsetId' => $callsetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Genomics_Callset"); + } +} + +/** + * The "datasets" collection of methods. + * Typical usage is: + * + * $genomicsService = new Google_Service_Genomics(...); + * $datasets = $genomicsService->datasets; + * + */ +class Google_Service_Genomics_Datasets_Resource extends Google_Service_Resource +{ + + /** + * Creates a new dataset. (datasets.create) + * + * @param Google_Dataset $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_Dataset + */ + public function create(Google_Service_Genomics_Dataset $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_Genomics_Dataset"); + } + /** + * Deletes a dataset. (datasets.delete) + * + * @param string $datasetId + * The ID of the dataset to be deleted. + * @param array $optParams Optional parameters. + */ + public function delete($datasetId, $optParams = array()) + { + $params = array('datasetId' => $datasetId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets a dataset by ID. (datasets.get) + * + * @param string $datasetId + * The ID of the dataset. + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_Dataset + */ + public function get($datasetId, $optParams = array()) + { + $params = array('datasetId' => $datasetId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Genomics_Dataset"); + } + /** + * Lists all datasets. (datasets.listDatasets) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The continuation token, which is used to page through large result sets. To get the next page of + * results, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of results returned by this request. + * @opt_param string projectId + * Only return datasets which belong to this Google Developers Console project. Only accepts + * project numbers. + * @return Google_Service_Genomics_ListDatasetsResponse + */ + public function listDatasets($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Genomics_ListDatasetsResponse"); + } + /** + * Updates a dataset. This method supports patch semantics. (datasets.patch) + * + * @param string $datasetId + * The ID of the dataset to be updated. + * @param Google_Dataset $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_Dataset + */ + public function patch($datasetId, Google_Service_Genomics_Dataset $postBody, $optParams = array()) + { + $params = array('datasetId' => $datasetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Genomics_Dataset"); + } + /** + * Undeletes a dataset by restoring a dataset which was deleted via this API. + * This operation is only possible for a week after the deletion occurred. + * (datasets.undelete) + * + * @param string $datasetId + * The ID of the dataset to be undeleted. + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_Dataset + */ + public function undelete($datasetId, $optParams = array()) + { + $params = array('datasetId' => $datasetId); + $params = array_merge($params, $optParams); + return $this->call('undelete', array($params), "Google_Service_Genomics_Dataset"); + } + /** + * Updates a dataset. (datasets.update) + * + * @param string $datasetId + * The ID of the dataset to be updated. + * @param Google_Dataset $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_Dataset + */ + public function update($datasetId, Google_Service_Genomics_Dataset $postBody, $optParams = array()) + { + $params = array('datasetId' => $datasetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Genomics_Dataset"); + } +} + +/** + * The "experimental" collection of methods. + * Typical usage is: + * + * $genomicsService = new Google_Service_Genomics(...); + * $experimental = $genomicsService->experimental; + * + */ +class Google_Service_Genomics_Experimental_Resource extends Google_Service_Resource +{ + +} + +/** + * The "jobs" collection of methods. + * Typical usage is: + * + * $genomicsService = new Google_Service_Genomics(...); + * $jobs = $genomicsService->jobs; + * + */ +class Google_Service_Genomics_ExperimentalJobs_Resource extends Google_Service_Resource +{ + + /** + * Creates and asynchronously runs an ad-hoc job. This is an experimental call + * and may be removed or changed at any time. (jobs.create) + * + * @param Google_ExperimentalCreateJobRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_ExperimentalCreateJobResponse + */ + public function create(Google_Service_Genomics_ExperimentalCreateJobRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_Genomics_ExperimentalCreateJobResponse"); + } +} + +/** + * The "jobs" collection of methods. + * Typical usage is: + * + * $genomicsService = new Google_Service_Genomics(...); + * $jobs = $genomicsService->jobs; + * + */ +class Google_Service_Genomics_Jobs_Resource extends Google_Service_Resource +{ + + /** + * Cancels a job by ID. Note that it is possible for partial results to be + * generated and stored for cancelled jobs. (jobs.cancel) + * + * @param string $jobId + * Required. The ID of the job. + * @param array $optParams Optional parameters. + */ + public function cancel($jobId, $optParams = array()) + { + $params = array('jobId' => $jobId); + $params = array_merge($params, $optParams); + return $this->call('cancel', array($params)); + } + /** + * Gets a job by ID. (jobs.get) + * + * @param string $jobId + * Required. The ID of the job. + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_Job + */ + public function get($jobId, $optParams = array()) + { + $params = array('jobId' => $jobId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Genomics_Job"); + } + /** + * Gets a list of jobs matching the criteria. (jobs.search) + * + * @param Google_SearchJobsRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_SearchJobsResponse + */ + public function search(Google_Service_Genomics_SearchJobsRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('search', array($params), "Google_Service_Genomics_SearchJobsResponse"); + } +} + +/** + * The "reads" collection of methods. + * Typical usage is: + * + * $genomicsService = new Google_Service_Genomics(...); + * $reads = $genomicsService->reads; + * + */ +class Google_Service_Genomics_Reads_Resource extends Google_Service_Resource +{ + + /** + * Gets a list of reads for one or more readsets. Reads search operates over a + * genomic coordinate space of reference sequence & position defined over the + * reference sequences to which the requested readsets are aligned. If a target + * positional range is specified, search returns all reads whose alignment to + * the reference genome overlap the range. A query which specifies only readset + * IDs yields all reads in those readsets, including unmapped reads. All reads + * returned (including reads on subsequent pages) are ordered by genomic + * coordinate (reference sequence & position). Reads with equivalent genomic + * coordinates are returned in a deterministic order. (reads.search) + * + * @param Google_SearchReadsRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_SearchReadsResponse + */ + public function search(Google_Service_Genomics_SearchReadsRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('search', array($params), "Google_Service_Genomics_SearchReadsResponse"); + } +} + +/** + * The "readsets" collection of methods. + * Typical usage is: + * + * $genomicsService = new Google_Service_Genomics(...); + * $readsets = $genomicsService->readsets; + * + */ +class Google_Service_Genomics_Readsets_Resource extends Google_Service_Resource +{ + + /** + * Deletes a readset. (readsets.delete) + * + * @param string $readsetId + * The ID of the readset to be deleted. The caller must have WRITE permissions to the dataset + * associated with this readset. + * @param array $optParams Optional parameters. + */ + public function delete($readsetId, $optParams = array()) + { + $params = array('readsetId' => $readsetId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Exports readsets to a BAM file in Google Cloud Storage. Note that currently + * there may be some differences between exported BAM files and the original BAM + * file at the time of import. In particular, comments in the input file header + * will not be preserved, and some custom tags will be converted to strings. + * (readsets.export) + * + * @param Google_ExportReadsetsRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_ExportReadsetsResponse + */ + public function export(Google_Service_Genomics_ExportReadsetsRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('export', array($params), "Google_Service_Genomics_ExportReadsetsResponse"); + } + /** + * Gets a readset by ID. (readsets.get) + * + * @param string $readsetId + * The ID of the readset. + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_Readset + */ + public function get($readsetId, $optParams = array()) + { + $params = array('readsetId' => $readsetId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Genomics_Readset"); + } + /** + * Creates readsets by asynchronously importing the provided information. Note + * that currently comments in the input file header are not imported and some + * custom tags will be converted to strings, rather than preserving tag types. + * The caller must have WRITE permissions to the dataset. (readsets.import) + * + * @param Google_ImportReadsetsRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_ImportReadsetsResponse + */ + public function import(Google_Service_Genomics_ImportReadsetsRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('import', array($params), "Google_Service_Genomics_ImportReadsetsResponse"); + } + /** + * Updates a readset. This method supports patch semantics. (readsets.patch) + * + * @param string $readsetId + * The ID of the readset to be updated. The caller must have WRITE permissions to the dataset + * associated with this readset. + * @param Google_Readset $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_Readset + */ + public function patch($readsetId, Google_Service_Genomics_Readset $postBody, $optParams = array()) + { + $params = array('readsetId' => $readsetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Genomics_Readset"); + } + /** + * Gets a list of readsets matching the criteria. (readsets.search) + * + * @param Google_SearchReadsetsRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_SearchReadsetsResponse + */ + public function search(Google_Service_Genomics_SearchReadsetsRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('search', array($params), "Google_Service_Genomics_SearchReadsetsResponse"); + } + /** + * Updates a readset. (readsets.update) + * + * @param string $readsetId + * The ID of the readset to be updated. The caller must have WRITE permissions to the dataset + * associated with this readset. + * @param Google_Readset $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_Readset + */ + public function update($readsetId, Google_Service_Genomics_Readset $postBody, $optParams = array()) + { + $params = array('readsetId' => $readsetId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Genomics_Readset"); + } +} + +/** + * The "coveragebuckets" collection of methods. + * Typical usage is: + * + * $genomicsService = new Google_Service_Genomics(...); + * $coveragebuckets = $genomicsService->coveragebuckets; + * + */ +class Google_Service_Genomics_ReadsetsCoveragebuckets_Resource extends Google_Service_Resource +{ + + /** + * Lists fixed width coverage buckets for a readset, each of which correspond to + * a range of a reference sequence. Each bucket summarizes coverage information + * across its corresponding genomic range. Coverage is defined as the number of + * reads which are aligned to a given base in the reference sequence. Coverage + * buckets are available at various bucket widths, enabling various coverage + * "zoom levels". The caller must have READ permissions for the target readset. + * (coveragebuckets.listReadsetsCoveragebuckets) + * + * @param string $readsetId + * Required. The ID of the readset over which coverage is requested. + * @param array $optParams Optional parameters. + * + * @opt_param string range.sequenceStart + * The start position of the range on the reference, 1-based inclusive. If specified, sequenceName + * must also be specified. + * @opt_param string maxResults + * The maximum number of results to return in a single page. If unspecified, defaults to 1024. The + * maximum value is 2048. + * @opt_param string range.sequenceName + * The reference sequence name, for example "chr1", "1", or "chrX". + * @opt_param string pageToken + * The continuation token, which is used to page through large result sets. To get the next page of + * results, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string targetBucketWidth + * The desired width of each reported coverage bucket in base pairs. This will be rounded down to + * the nearest precomputed bucket width; the value of which is returned as bucket_width in the + * response. Defaults to infinity (each bucket spans an entire reference sequence) or the length of + * the target range, if specified. The smallest precomputed bucket_width is currently 2048 base + * pairs; this is subject to change. + * @opt_param string range.sequenceEnd + * The end position of the range on the reference, 1-based exclusive. If specified, sequenceName + * must also be specified. + * @return Google_Service_Genomics_ListCoverageBucketsResponse + */ + public function listReadsetsCoveragebuckets($readsetId, $optParams = array()) + { + $params = array('readsetId' => $readsetId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Genomics_ListCoverageBucketsResponse"); + } +} + +/** + * The "variants" collection of methods. + * Typical usage is: + * + * $genomicsService = new Google_Service_Genomics(...); + * $variants = $genomicsService->variants; + * + */ +class Google_Service_Genomics_Variants_Resource extends Google_Service_Resource +{ + + /** + * Creates a new variant. (variants.create) + * + * @param Google_Variant $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_Variant + */ + public function create(Google_Service_Genomics_Variant $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_Genomics_Variant"); + } + /** + * Deletes a variant. (variants.delete) + * + * @param string $variantId + * The ID of the variant to be deleted. + * @param array $optParams Optional parameters. + */ + public function delete($variantId, $optParams = array()) + { + $params = array('variantId' => $variantId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Exports variant data to an external destination. (variants.export) + * + * @param Google_ExportVariantsRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_ExportVariantsResponse + */ + public function export(Google_Service_Genomics_ExportVariantsRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('export', array($params), "Google_Service_Genomics_ExportVariantsResponse"); + } + /** + * Gets a variant by ID. (variants.get) + * + * @param string $variantId + * The ID of the variant. + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_Variant + */ + public function get($variantId, $optParams = array()) + { + $params = array('variantId' => $variantId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Genomics_Variant"); + } + /** + * Gets a summary of all the variant data in a dataset. (variants.getSummary) + * + * @param array $optParams Optional parameters. + * + * @opt_param string datasetId + * Required. The ID of the dataset to get variant summary information for. + * @return Google_Service_Genomics_GetVariantsSummaryResponse + */ + public function getSummary($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('getSummary', array($params), "Google_Service_Genomics_GetVariantsSummaryResponse"); + } + /** + * Creates variant data by asynchronously importing the provided information. + * (variants.import) + * + * @param Google_ImportVariantsRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_ImportVariantsResponse + */ + public function import(Google_Service_Genomics_ImportVariantsRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('import', array($params), "Google_Service_Genomics_ImportVariantsResponse"); + } + /** + * Updates a variant. This method supports patch semantics. (variants.patch) + * + * @param string $variantId + * The ID of the variant to be updated.. + * @param Google_Variant $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_Variant + */ + public function patch($variantId, Google_Service_Genomics_Variant $postBody, $optParams = array()) + { + $params = array('variantId' => $variantId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Genomics_Variant"); + } + /** + * Gets a list of variants matching the criteria. (variants.search) + * + * @param Google_SearchVariantsRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_SearchVariantsResponse + */ + public function search(Google_Service_Genomics_SearchVariantsRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('search', array($params), "Google_Service_Genomics_SearchVariantsResponse"); + } + /** + * Updates a variant. (variants.update) + * + * @param string $variantId + * The ID of the variant to be updated.. + * @param Google_Variant $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Genomics_Variant + */ + public function update($variantId, Google_Service_Genomics_Variant $postBody, $optParams = array()) + { + $params = array('variantId' => $variantId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Genomics_Variant"); + } +} + + + + +class Google_Service_Genomics_Beacon extends Google_Model +{ + public $exists; + + public function setExists($exists) + { + $this->exists = $exists; + } + + public function getExists() + { + return $this->exists; + } +} + +class Google_Service_Genomics_Call extends Google_Collection +{ + public $callsetId; + public $callsetName; + public $genotype; + public $genotypeLikelihood; + public $info; + public $phaseset; + + public function setCallsetId($callsetId) + { + $this->callsetId = $callsetId; + } + + public function getCallsetId() + { + return $this->callsetId; + } + + public function setCallsetName($callsetName) + { + $this->callsetName = $callsetName; + } + + public function getCallsetName() + { + return $this->callsetName; + } + + public function setGenotype($genotype) + { + $this->genotype = $genotype; + } + + public function getGenotype() + { + return $this->genotype; + } + + public function setGenotypeLikelihood($genotypeLikelihood) + { + $this->genotypeLikelihood = $genotypeLikelihood; + } + + public function getGenotypeLikelihood() + { + return $this->genotypeLikelihood; + } + + public function setInfo($info) + { + $this->info = $info; + } + + public function getInfo() + { + return $this->info; + } + + public function setPhaseset($phaseset) + { + $this->phaseset = $phaseset; + } + + public function getPhaseset() + { + return $this->phaseset; + } +} + +class Google_Service_Genomics_CallInfo extends Google_Model +{ + +} + +class Google_Service_Genomics_Callset extends Google_Model +{ + public $created; + public $datasetId; + public $id; + public $info; + public $name; + + public function setCreated($created) + { + $this->created = $created; + } + + public function getCreated() + { + return $this->created; + } + + public function setDatasetId($datasetId) + { + $this->datasetId = $datasetId; + } + + public function getDatasetId() + { + return $this->datasetId; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInfo($info) + { + $this->info = $info; + } + + public function getInfo() + { + return $this->info; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_Genomics_CallsetInfo extends Google_Model +{ + +} + +class Google_Service_Genomics_ContigBound extends Google_Model +{ + public $contig; + public $upperBound; + + public function setContig($contig) + { + $this->contig = $contig; + } + + public function getContig() + { + return $this->contig; + } + + public function setUpperBound($upperBound) + { + $this->upperBound = $upperBound; + } + + public function getUpperBound() + { + return $this->upperBound; + } +} + +class Google_Service_Genomics_CoverageBucket extends Google_Model +{ + public $meanCoverage; + protected $rangeType = 'Google_Service_Genomics_GenomicRange'; + protected $rangeDataType = ''; + + public function setMeanCoverage($meanCoverage) + { + $this->meanCoverage = $meanCoverage; + } + + public function getMeanCoverage() + { + return $this->meanCoverage; + } + + public function setRange(Google_Service_Genomics_GenomicRange $range) + { + $this->range = $range; + } + + public function getRange() + { + return $this->range; + } +} + +class Google_Service_Genomics_Dataset extends Google_Model +{ + public $id; + public $isPublic; + public $name; + public $projectId; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setIsPublic($isPublic) + { + $this->isPublic = $isPublic; + } + + public function getIsPublic() + { + return $this->isPublic; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setProjectId($projectId) + { + $this->projectId = $projectId; + } + + public function getProjectId() + { + return $this->projectId; + } +} + +class Google_Service_Genomics_ExperimentalCreateJobRequest extends Google_Collection +{ + public $align; + public $callVariants; + public $gcsOutputPath; + public $pairedSourceUris; + public $projectId; + public $sourceUris; + + public function setAlign($align) + { + $this->align = $align; + } + + public function getAlign() + { + return $this->align; + } + + public function setCallVariants($callVariants) + { + $this->callVariants = $callVariants; + } + + public function getCallVariants() + { + return $this->callVariants; + } + + public function setGcsOutputPath($gcsOutputPath) + { + $this->gcsOutputPath = $gcsOutputPath; + } + + public function getGcsOutputPath() + { + return $this->gcsOutputPath; + } + + public function setPairedSourceUris($pairedSourceUris) + { + $this->pairedSourceUris = $pairedSourceUris; + } + + public function getPairedSourceUris() + { + return $this->pairedSourceUris; + } + + public function setProjectId($projectId) + { + $this->projectId = $projectId; + } + + public function getProjectId() + { + return $this->projectId; + } + + public function setSourceUris($sourceUris) + { + $this->sourceUris = $sourceUris; + } + + public function getSourceUris() + { + return $this->sourceUris; + } +} + +class Google_Service_Genomics_ExperimentalCreateJobResponse extends Google_Model +{ + public $jobId; + + public function setJobId($jobId) + { + $this->jobId = $jobId; + } + + public function getJobId() + { + return $this->jobId; + } +} + +class Google_Service_Genomics_ExportReadsetsRequest extends Google_Collection +{ + public $exportUri; + public $projectId; + public $readsetIds; + + public function setExportUri($exportUri) + { + $this->exportUri = $exportUri; + } + + public function getExportUri() + { + return $this->exportUri; + } + + public function setProjectId($projectId) + { + $this->projectId = $projectId; + } + + public function getProjectId() + { + return $this->projectId; + } + + public function setReadsetIds($readsetIds) + { + $this->readsetIds = $readsetIds; + } + + public function getReadsetIds() + { + return $this->readsetIds; + } +} + +class Google_Service_Genomics_ExportReadsetsResponse extends Google_Model +{ + public $jobId; + + public function setJobId($jobId) + { + $this->jobId = $jobId; + } + + public function getJobId() + { + return $this->jobId; + } +} + +class Google_Service_Genomics_ExportVariantsRequest extends Google_Collection +{ + public $bigqueryDataset; + public $bigqueryTable; + public $callsetIds; + public $datasetId; + public $format; + public $projectId; + + public function setBigqueryDataset($bigqueryDataset) + { + $this->bigqueryDataset = $bigqueryDataset; + } + + public function getBigqueryDataset() + { + return $this->bigqueryDataset; + } + + public function setBigqueryTable($bigqueryTable) + { + $this->bigqueryTable = $bigqueryTable; + } + + public function getBigqueryTable() + { + return $this->bigqueryTable; + } + + public function setCallsetIds($callsetIds) + { + $this->callsetIds = $callsetIds; + } + + public function getCallsetIds() + { + return $this->callsetIds; + } + + public function setDatasetId($datasetId) + { + $this->datasetId = $datasetId; + } + + public function getDatasetId() + { + return $this->datasetId; + } + + public function setFormat($format) + { + $this->format = $format; + } + + public function getFormat() + { + return $this->format; + } + + public function setProjectId($projectId) + { + $this->projectId = $projectId; + } + + public function getProjectId() + { + return $this->projectId; + } +} + +class Google_Service_Genomics_ExportVariantsResponse extends Google_Model +{ + public $jobId; + + public function setJobId($jobId) + { + $this->jobId = $jobId; + } + + public function getJobId() + { + return $this->jobId; + } +} + +class Google_Service_Genomics_GenomicRange extends Google_Model +{ + public $sequenceEnd; + public $sequenceName; + public $sequenceStart; + + public function setSequenceEnd($sequenceEnd) + { + $this->sequenceEnd = $sequenceEnd; + } + + public function getSequenceEnd() + { + return $this->sequenceEnd; + } + + public function setSequenceName($sequenceName) + { + $this->sequenceName = $sequenceName; + } + + public function getSequenceName() + { + return $this->sequenceName; + } + + public function setSequenceStart($sequenceStart) + { + $this->sequenceStart = $sequenceStart; + } + + public function getSequenceStart() + { + return $this->sequenceStart; + } +} + +class Google_Service_Genomics_GetVariantsSummaryResponse extends Google_Collection +{ + protected $contigBoundsType = 'Google_Service_Genomics_ContigBound'; + protected $contigBoundsDataType = 'array'; + protected $metadataType = 'Google_Service_Genomics_Metadata'; + protected $metadataDataType = 'array'; + + public function setContigBounds($contigBounds) + { + $this->contigBounds = $contigBounds; + } + + public function getContigBounds() + { + return $this->contigBounds; + } + + public function setMetadata($metadata) + { + $this->metadata = $metadata; + } + + public function getMetadata() + { + return $this->metadata; + } +} + +class Google_Service_Genomics_Header extends Google_Model +{ + public $sortingOrder; + public $version; + + public function setSortingOrder($sortingOrder) + { + $this->sortingOrder = $sortingOrder; + } + + public function getSortingOrder() + { + return $this->sortingOrder; + } + + public function setVersion($version) + { + $this->version = $version; + } + + public function getVersion() + { + return $this->version; + } +} + +class Google_Service_Genomics_HeaderSection extends Google_Collection +{ + public $comments; + public $fileUri; + public $filename; + protected $headersType = 'Google_Service_Genomics_Header'; + protected $headersDataType = 'array'; + protected $programsType = 'Google_Service_Genomics_Program'; + protected $programsDataType = 'array'; + protected $readGroupsType = 'Google_Service_Genomics_ReadGroup'; + protected $readGroupsDataType = 'array'; + protected $refSequencesType = 'Google_Service_Genomics_ReferenceSequence'; + protected $refSequencesDataType = 'array'; + + public function setComments($comments) + { + $this->comments = $comments; + } + + public function getComments() + { + return $this->comments; + } + + public function setFileUri($fileUri) + { + $this->fileUri = $fileUri; + } + + public function getFileUri() + { + return $this->fileUri; + } + + public function setFilename($filename) + { + $this->filename = $filename; + } + + public function getFilename() + { + return $this->filename; + } + + public function setHeaders($headers) + { + $this->headers = $headers; + } + + public function getHeaders() + { + return $this->headers; + } + + public function setPrograms($programs) + { + $this->programs = $programs; + } + + public function getPrograms() + { + return $this->programs; + } + + public function setReadGroups($readGroups) + { + $this->readGroups = $readGroups; + } + + public function getReadGroups() + { + return $this->readGroups; + } + + public function setRefSequences($refSequences) + { + $this->refSequences = $refSequences; + } + + public function getRefSequences() + { + return $this->refSequences; + } +} + +class Google_Service_Genomics_ImportReadsetsRequest extends Google_Collection +{ + public $datasetId; + public $sourceUris; + + public function setDatasetId($datasetId) + { + $this->datasetId = $datasetId; + } + + public function getDatasetId() + { + return $this->datasetId; + } + + public function setSourceUris($sourceUris) + { + $this->sourceUris = $sourceUris; + } + + public function getSourceUris() + { + return $this->sourceUris; + } +} + +class Google_Service_Genomics_ImportReadsetsResponse extends Google_Model +{ + public $jobId; + + public function setJobId($jobId) + { + $this->jobId = $jobId; + } + + public function getJobId() + { + return $this->jobId; + } +} + +class Google_Service_Genomics_ImportVariantsRequest extends Google_Collection +{ + public $datasetId; + public $sourceUris; + + public function setDatasetId($datasetId) + { + $this->datasetId = $datasetId; + } + + public function getDatasetId() + { + return $this->datasetId; + } + + public function setSourceUris($sourceUris) + { + $this->sourceUris = $sourceUris; + } + + public function getSourceUris() + { + return $this->sourceUris; + } +} + +class Google_Service_Genomics_ImportVariantsResponse extends Google_Model +{ + public $jobId; + + public function setJobId($jobId) + { + $this->jobId = $jobId; + } + + public function getJobId() + { + return $this->jobId; + } +} + +class Google_Service_Genomics_Job extends Google_Collection +{ + public $created; + public $description; + public $errors; + public $id; + public $importedIds; + public $projectId; + public $status; + public $warnings; + + public function setCreated($created) + { + $this->created = $created; + } + + public function getCreated() + { + return $this->created; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setErrors($errors) + { + $this->errors = $errors; + } + + public function getErrors() + { + return $this->errors; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImportedIds($importedIds) + { + $this->importedIds = $importedIds; + } + + public function getImportedIds() + { + return $this->importedIds; + } + + public function setProjectId($projectId) + { + $this->projectId = $projectId; + } + + public function getProjectId() + { + return $this->projectId; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setWarnings($warnings) + { + $this->warnings = $warnings; + } + + public function getWarnings() + { + return $this->warnings; + } +} + +class Google_Service_Genomics_ListCoverageBucketsResponse extends Google_Collection +{ + public $bucketWidth; + protected $coverageBucketsType = 'Google_Service_Genomics_CoverageBucket'; + protected $coverageBucketsDataType = 'array'; + public $nextPageToken; + + public function setBucketWidth($bucketWidth) + { + $this->bucketWidth = $bucketWidth; + } + + public function getBucketWidth() + { + return $this->bucketWidth; + } + + public function setCoverageBuckets($coverageBuckets) + { + $this->coverageBuckets = $coverageBuckets; + } + + public function getCoverageBuckets() + { + return $this->coverageBuckets; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Genomics_ListDatasetsResponse extends Google_Collection +{ + protected $datasetsType = 'Google_Service_Genomics_Dataset'; + protected $datasetsDataType = 'array'; + public $nextPageToken; + + public function setDatasets($datasets) + { + $this->datasets = $datasets; + } + + public function getDatasets() + { + return $this->datasets; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Genomics_Metadata extends Google_Model +{ + public $description; + public $id; + public $info; + public $key; + public $number; + public $type; + public $value; + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInfo($info) + { + $this->info = $info; + } + + public function getInfo() + { + return $this->info; + } + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setNumber($number) + { + $this->number = $number; + } + + public function getNumber() + { + return $this->number; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Genomics_MetadataInfo extends Google_Model +{ + +} + +class Google_Service_Genomics_Program extends Google_Model +{ + public $commandLine; + public $id; + public $name; + public $prevProgramId; + public $version; + + public function setCommandLine($commandLine) + { + $this->commandLine = $commandLine; + } + + public function getCommandLine() + { + return $this->commandLine; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPrevProgramId($prevProgramId) + { + $this->prevProgramId = $prevProgramId; + } + + public function getPrevProgramId() + { + return $this->prevProgramId; + } + + public function setVersion($version) + { + $this->version = $version; + } + + public function getVersion() + { + return $this->version; + } +} + +class Google_Service_Genomics_Read extends Google_Model +{ + public $alignedBases; + public $baseQuality; + public $cigar; + public $flags; + public $id; + public $mappingQuality; + public $matePosition; + public $mateReferenceSequenceName; + public $name; + public $originalBases; + public $position; + public $readsetId; + public $referenceSequenceName; + public $tags; + public $templateLength; + + public function setAlignedBases($alignedBases) + { + $this->alignedBases = $alignedBases; + } + + public function getAlignedBases() + { + return $this->alignedBases; + } + + public function setBaseQuality($baseQuality) + { + $this->baseQuality = $baseQuality; + } + + public function getBaseQuality() + { + return $this->baseQuality; + } + + public function setCigar($cigar) + { + $this->cigar = $cigar; + } + + public function getCigar() + { + return $this->cigar; + } + + public function setFlags($flags) + { + $this->flags = $flags; + } + + public function getFlags() + { + return $this->flags; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setMappingQuality($mappingQuality) + { + $this->mappingQuality = $mappingQuality; + } + + public function getMappingQuality() + { + return $this->mappingQuality; + } + + public function setMatePosition($matePosition) + { + $this->matePosition = $matePosition; + } + + public function getMatePosition() + { + return $this->matePosition; + } + + public function setMateReferenceSequenceName($mateReferenceSequenceName) + { + $this->mateReferenceSequenceName = $mateReferenceSequenceName; + } + + public function getMateReferenceSequenceName() + { + return $this->mateReferenceSequenceName; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setOriginalBases($originalBases) + { + $this->originalBases = $originalBases; + } + + public function getOriginalBases() + { + return $this->originalBases; + } + + public function setPosition($position) + { + $this->position = $position; + } + + public function getPosition() + { + return $this->position; + } + + public function setReadsetId($readsetId) + { + $this->readsetId = $readsetId; + } + + public function getReadsetId() + { + return $this->readsetId; + } + + public function setReferenceSequenceName($referenceSequenceName) + { + $this->referenceSequenceName = $referenceSequenceName; + } + + public function getReferenceSequenceName() + { + return $this->referenceSequenceName; + } + + public function setTags($tags) + { + $this->tags = $tags; + } + + public function getTags() + { + return $this->tags; + } + + public function setTemplateLength($templateLength) + { + $this->templateLength = $templateLength; + } + + public function getTemplateLength() + { + return $this->templateLength; + } +} + +class Google_Service_Genomics_ReadGroup extends Google_Model +{ + public $date; + public $description; + public $flowOrder; + public $id; + public $keySequence; + public $library; + public $platformUnit; + public $predictedInsertSize; + public $processingProgram; + public $sample; + public $sequencingCenterName; + public $sequencingTechnology; + + public function setDate($date) + { + $this->date = $date; + } + + public function getDate() + { + return $this->date; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setFlowOrder($flowOrder) + { + $this->flowOrder = $flowOrder; + } + + public function getFlowOrder() + { + return $this->flowOrder; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKeySequence($keySequence) + { + $this->keySequence = $keySequence; + } + + public function getKeySequence() + { + return $this->keySequence; + } + + public function setLibrary($library) + { + $this->library = $library; + } + + public function getLibrary() + { + return $this->library; + } + + public function setPlatformUnit($platformUnit) + { + $this->platformUnit = $platformUnit; + } + + public function getPlatformUnit() + { + return $this->platformUnit; + } + + public function setPredictedInsertSize($predictedInsertSize) + { + $this->predictedInsertSize = $predictedInsertSize; + } + + public function getPredictedInsertSize() + { + return $this->predictedInsertSize; + } + + public function setProcessingProgram($processingProgram) + { + $this->processingProgram = $processingProgram; + } + + public function getProcessingProgram() + { + return $this->processingProgram; + } + + public function setSample($sample) + { + $this->sample = $sample; + } + + public function getSample() + { + return $this->sample; + } + + public function setSequencingCenterName($sequencingCenterName) + { + $this->sequencingCenterName = $sequencingCenterName; + } + + public function getSequencingCenterName() + { + return $this->sequencingCenterName; + } + + public function setSequencingTechnology($sequencingTechnology) + { + $this->sequencingTechnology = $sequencingTechnology; + } + + public function getSequencingTechnology() + { + return $this->sequencingTechnology; + } +} + +class Google_Service_Genomics_ReadTags extends Google_Model +{ + +} + +class Google_Service_Genomics_Readset extends Google_Collection +{ + public $datasetId; + protected $fileDataType = 'Google_Service_Genomics_HeaderSection'; + protected $fileDataDataType = 'array'; + public $id; + public $name; + + public function setDatasetId($datasetId) + { + $this->datasetId = $datasetId; + } + + public function getDatasetId() + { + return $this->datasetId; + } + + public function setFileData($fileData) + { + $this->fileData = $fileData; + } + + public function getFileData() + { + return $this->fileData; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_Genomics_ReferenceSequence extends Google_Model +{ + public $assemblyId; + public $length; + public $md5Checksum; + public $name; + public $species; + public $uri; + + public function setAssemblyId($assemblyId) + { + $this->assemblyId = $assemblyId; + } + + public function getAssemblyId() + { + return $this->assemblyId; + } + + public function setLength($length) + { + $this->length = $length; + } + + public function getLength() + { + return $this->length; + } + + public function setMd5Checksum($md5Checksum) + { + $this->md5Checksum = $md5Checksum; + } + + public function getMd5Checksum() + { + return $this->md5Checksum; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setSpecies($species) + { + $this->species = $species; + } + + public function getSpecies() + { + return $this->species; + } + + public function setUri($uri) + { + $this->uri = $uri; + } + + public function getUri() + { + return $this->uri; + } +} + +class Google_Service_Genomics_SearchCallsetsRequest extends Google_Collection +{ + public $datasetIds; + public $maxResults; + public $name; + public $pageToken; + + public function setDatasetIds($datasetIds) + { + $this->datasetIds = $datasetIds; + } + + public function getDatasetIds() + { + return $this->datasetIds; + } + + public function setMaxResults($maxResults) + { + $this->maxResults = $maxResults; + } + + public function getMaxResults() + { + return $this->maxResults; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPageToken($pageToken) + { + $this->pageToken = $pageToken; + } + + public function getPageToken() + { + return $this->pageToken; + } +} + +class Google_Service_Genomics_SearchCallsetsResponse extends Google_Collection +{ + protected $callsetsType = 'Google_Service_Genomics_Callset'; + protected $callsetsDataType = 'array'; + public $nextPageToken; + + public function setCallsets($callsets) + { + $this->callsets = $callsets; + } + + public function getCallsets() + { + return $this->callsets; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Genomics_SearchJobsRequest extends Google_Collection +{ + public $createdAfter; + public $createdBefore; + public $maxResults; + public $pageToken; + public $projectId; + public $status; + + public function setCreatedAfter($createdAfter) + { + $this->createdAfter = $createdAfter; + } + + public function getCreatedAfter() + { + return $this->createdAfter; + } + + public function setCreatedBefore($createdBefore) + { + $this->createdBefore = $createdBefore; + } + + public function getCreatedBefore() + { + return $this->createdBefore; + } + + public function setMaxResults($maxResults) + { + $this->maxResults = $maxResults; + } + + public function getMaxResults() + { + return $this->maxResults; + } + + public function setPageToken($pageToken) + { + $this->pageToken = $pageToken; + } + + public function getPageToken() + { + return $this->pageToken; + } + + public function setProjectId($projectId) + { + $this->projectId = $projectId; + } + + public function getProjectId() + { + return $this->projectId; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_Genomics_SearchJobsResponse extends Google_Collection +{ + protected $jobsType = 'Google_Service_Genomics_Job'; + protected $jobsDataType = 'array'; + public $nextPageToken; + + public function setJobs($jobs) + { + $this->jobs = $jobs; + } + + public function getJobs() + { + return $this->jobs; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Genomics_SearchReadsRequest extends Google_Collection +{ + public $maxResults; + public $pageToken; + public $readsetIds; + public $sequenceEnd; + public $sequenceName; + public $sequenceStart; + + public function setMaxResults($maxResults) + { + $this->maxResults = $maxResults; + } + + public function getMaxResults() + { + return $this->maxResults; + } + + public function setPageToken($pageToken) + { + $this->pageToken = $pageToken; + } + + public function getPageToken() + { + return $this->pageToken; + } + + public function setReadsetIds($readsetIds) + { + $this->readsetIds = $readsetIds; + } + + public function getReadsetIds() + { + return $this->readsetIds; + } + + public function setSequenceEnd($sequenceEnd) + { + $this->sequenceEnd = $sequenceEnd; + } + + public function getSequenceEnd() + { + return $this->sequenceEnd; + } + + public function setSequenceName($sequenceName) + { + $this->sequenceName = $sequenceName; + } + + public function getSequenceName() + { + return $this->sequenceName; + } + + public function setSequenceStart($sequenceStart) + { + $this->sequenceStart = $sequenceStart; + } + + public function getSequenceStart() + { + return $this->sequenceStart; + } +} + +class Google_Service_Genomics_SearchReadsResponse extends Google_Collection +{ + public $nextPageToken; + protected $readsType = 'Google_Service_Genomics_Read'; + protected $readsDataType = 'array'; + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setReads($reads) + { + $this->reads = $reads; + } + + public function getReads() + { + return $this->reads; + } +} + +class Google_Service_Genomics_SearchReadsetsRequest extends Google_Collection +{ + public $datasetIds; + public $maxResults; + public $name; + public $pageToken; + + public function setDatasetIds($datasetIds) + { + $this->datasetIds = $datasetIds; + } + + public function getDatasetIds() + { + return $this->datasetIds; + } + + public function setMaxResults($maxResults) + { + $this->maxResults = $maxResults; + } + + public function getMaxResults() + { + return $this->maxResults; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPageToken($pageToken) + { + $this->pageToken = $pageToken; + } + + public function getPageToken() + { + return $this->pageToken; + } +} + +class Google_Service_Genomics_SearchReadsetsResponse extends Google_Collection +{ + public $nextPageToken; + protected $readsetsType = 'Google_Service_Genomics_Readset'; + protected $readsetsDataType = 'array'; + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setReadsets($readsets) + { + $this->readsets = $readsets; + } + + public function getReadsets() + { + return $this->readsets; + } +} + +class Google_Service_Genomics_SearchVariantsRequest extends Google_Collection +{ + public $callsetIds; + public $callsetNames; + public $contig; + public $datasetId; + public $endPosition; + public $maxResults; + public $pageToken; + public $startPosition; + public $variantName; + + public function setCallsetIds($callsetIds) + { + $this->callsetIds = $callsetIds; + } + + public function getCallsetIds() + { + return $this->callsetIds; + } + + public function setCallsetNames($callsetNames) + { + $this->callsetNames = $callsetNames; + } + + public function getCallsetNames() + { + return $this->callsetNames; + } + + public function setContig($contig) + { + $this->contig = $contig; + } + + public function getContig() + { + return $this->contig; + } + + public function setDatasetId($datasetId) + { + $this->datasetId = $datasetId; + } + + public function getDatasetId() + { + return $this->datasetId; + } + + public function setEndPosition($endPosition) + { + $this->endPosition = $endPosition; + } + + public function getEndPosition() + { + return $this->endPosition; + } + + public function setMaxResults($maxResults) + { + $this->maxResults = $maxResults; + } + + public function getMaxResults() + { + return $this->maxResults; + } + + public function setPageToken($pageToken) + { + $this->pageToken = $pageToken; + } + + public function getPageToken() + { + return $this->pageToken; + } + + public function setStartPosition($startPosition) + { + $this->startPosition = $startPosition; + } + + public function getStartPosition() + { + return $this->startPosition; + } + + public function setVariantName($variantName) + { + $this->variantName = $variantName; + } + + public function getVariantName() + { + return $this->variantName; + } +} + +class Google_Service_Genomics_SearchVariantsResponse extends Google_Collection +{ + public $nextPageToken; + protected $variantsType = 'Google_Service_Genomics_Variant'; + protected $variantsDataType = 'array'; + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setVariants($variants) + { + $this->variants = $variants; + } + + public function getVariants() + { + return $this->variants; + } +} + +class Google_Service_Genomics_Variant extends Google_Collection +{ + public $alternateBases; + protected $callsType = 'Google_Service_Genomics_Call'; + protected $callsDataType = 'array'; + public $contig; + public $created; + public $datasetId; + public $end; + public $id; + public $info; + public $names; + public $position; + public $referenceBases; + + public function setAlternateBases($alternateBases) + { + $this->alternateBases = $alternateBases; + } + + public function getAlternateBases() + { + return $this->alternateBases; + } + + public function setCalls($calls) + { + $this->calls = $calls; + } + + public function getCalls() + { + return $this->calls; + } + + public function setContig($contig) + { + $this->contig = $contig; + } + + public function getContig() + { + return $this->contig; + } + + public function setCreated($created) + { + $this->created = $created; + } + + public function getCreated() + { + return $this->created; + } + + public function setDatasetId($datasetId) + { + $this->datasetId = $datasetId; + } + + public function getDatasetId() + { + return $this->datasetId; + } + + public function setEnd($end) + { + $this->end = $end; + } + + public function getEnd() + { + return $this->end; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInfo($info) + { + $this->info = $info; + } + + public function getInfo() + { + return $this->info; + } + + public function setNames($names) + { + $this->names = $names; + } + + public function getNames() + { + return $this->names; + } + + public function setPosition($position) + { + $this->position = $position; + } + + public function getPosition() + { + return $this->position; + } + + public function setReferenceBases($referenceBases) + { + $this->referenceBases = $referenceBases; + } + + public function getReferenceBases() + { + return $this->referenceBases; + } +} + +class Google_Service_Genomics_VariantInfo extends Google_Model +{ + +} diff --git a/oauth/Google/Service/Gmail.php b/oauth/Google/Service/Gmail.php new file mode 100644 index 0000000..aec364d --- /dev/null +++ b/oauth/Google/Service/Gmail.php @@ -0,0 +1,1799 @@ + + * The Gmail REST API. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Gmail extends Google_Service +{ + /** View and manage your mail. */ + const MAIL_GOOGLE_COM = "https://mail.google.com"; + /** Manage drafts and send emails. */ + const GMAIL_COMPOSE = "https://www.googleapis.com/auth/gmail.compose"; + /** View and modify but not delete your email. */ + const GMAIL_MODIFY = "https://www.googleapis.com/auth/gmail.modify"; + /** View your emails messages and settings. */ + const GMAIL_READONLY = "https://www.googleapis.com/auth/gmail.readonly"; + + public $users_drafts; + public $users_history; + public $users_labels; + public $users_messages; + public $users_messages_attachments; + public $users_threads; + + + /** + * Constructs the internal representation of the Gmail service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'gmail/v1/users/'; + $this->version = 'v1'; + $this->serviceName = 'gmail'; + + $this->users_drafts = new Google_Service_Gmail_UsersDrafts_Resource( + $this, + $this->serviceName, + 'drafts', + array( + 'methods' => array( + 'create' => array( + 'path' => '{userId}/drafts', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => '{userId}/drafts/{id}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{userId}/drafts/{id}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'format' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => '{userId}/drafts', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'send' => array( + 'path' => '{userId}/drafts/send', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => '{userId}/drafts/{id}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->users_history = new Google_Service_Gmail_UsersHistory_Resource( + $this, + $this->serviceName, + 'history', + array( + 'methods' => array( + 'list' => array( + 'path' => '{userId}/history', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'labelId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'startHistoryId' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->users_labels = new Google_Service_Gmail_UsersLabels_Resource( + $this, + $this->serviceName, + 'labels', + array( + 'methods' => array( + 'create' => array( + 'path' => '{userId}/labels', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => '{userId}/labels/{id}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{userId}/labels/{id}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{userId}/labels', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => '{userId}/labels/{id}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => '{userId}/labels/{id}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->users_messages = new Google_Service_Gmail_UsersMessages_Resource( + $this, + $this->serviceName, + 'messages', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{userId}/messages/{id}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{userId}/messages/{id}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'format' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'import' => array( + 'path' => '{userId}/messages/import', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{userId}/messages', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{userId}/messages', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'q' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'includeSpamTrash' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'labelIds' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + ), + ),'modify' => array( + 'path' => '{userId}/messages/{id}/modify', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'send' => array( + 'path' => '{userId}/messages/send', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'trash' => array( + 'path' => '{userId}/messages/{id}/trash', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'untrash' => array( + 'path' => '{userId}/messages/{id}/untrash', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->users_messages_attachments = new Google_Service_Gmail_UsersMessagesAttachments_Resource( + $this, + $this->serviceName, + 'attachments', + array( + 'methods' => array( + 'get' => array( + 'path' => '{userId}/messages/{messageId}/attachments/{id}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'messageId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->users_threads = new Google_Service_Gmail_UsersThreads_Resource( + $this, + $this->serviceName, + 'threads', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{userId}/threads/{id}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{userId}/threads/{id}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{userId}/threads', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'q' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'includeSpamTrash' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'labelIds' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + ), + ),'modify' => array( + 'path' => '{userId}/threads/{id}/modify', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'trash' => array( + 'path' => '{userId}/threads/{id}/trash', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'untrash' => array( + 'path' => '{userId}/threads/{id}/untrash', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "users" collection of methods. + * Typical usage is: + * + * $gmailService = new Google_Service_Gmail(...); + * $users = $gmailService->users; + * + */ +class Google_Service_Gmail_Users_Resource extends Google_Service_Resource +{ + +} + +/** + * The "drafts" collection of methods. + * Typical usage is: + * + * $gmailService = new Google_Service_Gmail(...); + * $drafts = $gmailService->drafts; + * + */ +class Google_Service_Gmail_UsersDrafts_Resource extends Google_Service_Resource +{ + + /** + * Creates a new draft with the DRAFT label. (drafts.create) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param Google_Draft $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Gmail_Draft + */ + public function create($userId, Google_Service_Gmail_Draft $postBody, $optParams = array()) + { + $params = array('userId' => $userId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_Gmail_Draft"); + } + /** + * Immediately and permanently deletes the specified draft. Does not simply + * trash it. (drafts.delete) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param string $id + * The ID of the draft to delete. + * @param array $optParams Optional parameters. + */ + public function delete($userId, $id, $optParams = array()) + { + $params = array('userId' => $userId, 'id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets the specified draft. (drafts.get) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param string $id + * The ID of the draft to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param string format + * The format to return the draft in. + * @return Google_Service_Gmail_Draft + */ + public function get($userId, $id, $optParams = array()) + { + $params = array('userId' => $userId, 'id' => $id); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Gmail_Draft"); + } + /** + * Lists the drafts in the user's mailbox. (drafts.listUsersDrafts) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Page token to retrieve a specific page of results in the list. + * @opt_param string maxResults + * Maximum number of drafts to return. + * @return Google_Service_Gmail_ListDraftsResponse + */ + public function listUsersDrafts($userId, $optParams = array()) + { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Gmail_ListDraftsResponse"); + } + /** + * Sends the specified, existing draft to the recipients in the To, Cc, and Bcc + * headers. (drafts.send) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param Google_Draft $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Gmail_Message + */ + public function send($userId, Google_Service_Gmail_Draft $postBody, $optParams = array()) + { + $params = array('userId' => $userId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('send', array($params), "Google_Service_Gmail_Message"); + } + /** + * Replaces a draft's content. (drafts.update) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param string $id + * The ID of the draft to update. + * @param Google_Draft $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Gmail_Draft + */ + public function update($userId, $id, Google_Service_Gmail_Draft $postBody, $optParams = array()) + { + $params = array('userId' => $userId, 'id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Gmail_Draft"); + } +} +/** + * The "history" collection of methods. + * Typical usage is: + * + * $gmailService = new Google_Service_Gmail(...); + * $history = $gmailService->history; + * + */ +class Google_Service_Gmail_UsersHistory_Resource extends Google_Service_Resource +{ + + /** + * Lists the history of all changes to the given mailbox. History results are + * returned in chronological order (increasing historyId). + * (history.listUsersHistory) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Page token to retrieve a specific page of results in the list. + * @opt_param string maxResults + * The maximum number of history records to return. + * @opt_param string labelId + * Only return messages with a label matching the ID. + * @opt_param string startHistoryId + * Required. Returns history records after the specified startHistoryId. The supplied + * startHistoryId should be obtained from the historyId of a message, thread, or previous list + * response. History IDs increase chronologically but are not contiguous with random gaps in + * between valid IDs. Supplying an invalid or out of date startHistoryId typically returns an HTTP + * 404 error code. A historyId is typically valid for at least a week, but in some circumstances + * may be valid for only a few hours. If you receive an HTTP 404 error response, your application + * should perform a full sync. If you receive no nextPageToken in the response, there are no + * updates to retrieve and you can store the returned historyId for a future request. + * @return Google_Service_Gmail_ListHistoryResponse + */ + public function listUsersHistory($userId, $optParams = array()) + { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Gmail_ListHistoryResponse"); + } +} +/** + * The "labels" collection of methods. + * Typical usage is: + * + * $gmailService = new Google_Service_Gmail(...); + * $labels = $gmailService->labels; + * + */ +class Google_Service_Gmail_UsersLabels_Resource extends Google_Service_Resource +{ + + /** + * Creates a new label. (labels.create) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param Google_Label $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Gmail_Label + */ + public function create($userId, Google_Service_Gmail_Label $postBody, $optParams = array()) + { + $params = array('userId' => $userId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_Gmail_Label"); + } + /** + * Immediately and permanently deletes the specified label and removes it from + * any messages and threads that it is applied to. (labels.delete) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param string $id + * The ID of the label to delete. + * @param array $optParams Optional parameters. + */ + public function delete($userId, $id, $optParams = array()) + { + $params = array('userId' => $userId, 'id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets the specified label. (labels.get) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param string $id + * The ID of the label to retrieve. + * @param array $optParams Optional parameters. + * @return Google_Service_Gmail_Label + */ + public function get($userId, $id, $optParams = array()) + { + $params = array('userId' => $userId, 'id' => $id); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Gmail_Label"); + } + /** + * Lists all labels in the user's mailbox. (labels.listUsersLabels) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * @return Google_Service_Gmail_ListLabelsResponse + */ + public function listUsersLabels($userId, $optParams = array()) + { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Gmail_ListLabelsResponse"); + } + /** + * Updates the specified label. This method supports patch semantics. + * (labels.patch) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param string $id + * The ID of the label to update. + * @param Google_Label $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Gmail_Label + */ + public function patch($userId, $id, Google_Service_Gmail_Label $postBody, $optParams = array()) + { + $params = array('userId' => $userId, 'id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Gmail_Label"); + } + /** + * Updates the specified label. (labels.update) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param string $id + * The ID of the label to update. + * @param Google_Label $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Gmail_Label + */ + public function update($userId, $id, Google_Service_Gmail_Label $postBody, $optParams = array()) + { + $params = array('userId' => $userId, 'id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Gmail_Label"); + } +} +/** + * The "messages" collection of methods. + * Typical usage is: + * + * $gmailService = new Google_Service_Gmail(...); + * $messages = $gmailService->messages; + * + */ +class Google_Service_Gmail_UsersMessages_Resource extends Google_Service_Resource +{ + + /** + * Immediately and permanently deletes the specified message. This operation + * cannot be undone. Prefer messages.trash instead. (messages.delete) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param string $id + * The ID of the message to delete. + * @param array $optParams Optional parameters. + */ + public function delete($userId, $id, $optParams = array()) + { + $params = array('userId' => $userId, 'id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets the specified message. (messages.get) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param string $id + * The ID of the message to retrieve. + * @param array $optParams Optional parameters. + * + * @opt_param string format + * The format to return the message in. + * @return Google_Service_Gmail_Message + */ + public function get($userId, $id, $optParams = array()) + { + $params = array('userId' => $userId, 'id' => $id); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Gmail_Message"); + } + /** + * Directly imports a message into only this user's mailbox, similar to + * receiving via SMTP. Does not send a message. (messages.import) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param Google_Message $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Gmail_Message + */ + public function import($userId, Google_Service_Gmail_Message $postBody, $optParams = array()) + { + $params = array('userId' => $userId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('import', array($params), "Google_Service_Gmail_Message"); + } + /** + * Directly inserts a message into only this user's mailbox. Does not send a + * message. (messages.insert) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param Google_Message $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Gmail_Message + */ + public function insert($userId, Google_Service_Gmail_Message $postBody, $optParams = array()) + { + $params = array('userId' => $userId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Gmail_Message"); + } + /** + * Lists the messages in the user's mailbox. (messages.listUsersMessages) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * + * @opt_param string maxResults + * Maximum number of messages to return. + * @opt_param string q + * Only return messages matching the specified query. Supports the same query format as the Gmail + * search box. For example, "from:someuser@example.com rfc822msgid: is:unread". + * @opt_param string pageToken + * Page token to retrieve a specific page of results in the list. + * @opt_param bool includeSpamTrash + * Include messages from SPAM and TRASH in the results. + * @opt_param string labelIds + * Only return messages with labels that match all of the specified label IDs. + * @return Google_Service_Gmail_ListMessagesResponse + */ + public function listUsersMessages($userId, $optParams = array()) + { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Gmail_ListMessagesResponse"); + } + /** + * Modifies the labels on the specified message. (messages.modify) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param string $id + * The ID of the message to modify. + * @param Google_ModifyMessageRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Gmail_Message + */ + public function modify($userId, $id, Google_Service_Gmail_ModifyMessageRequest $postBody, $optParams = array()) + { + $params = array('userId' => $userId, 'id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('modify', array($params), "Google_Service_Gmail_Message"); + } + /** + * Sends the specified message to the recipients in the To, Cc, and Bcc headers. + * (messages.send) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param Google_Message $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Gmail_Message + */ + public function send($userId, Google_Service_Gmail_Message $postBody, $optParams = array()) + { + $params = array('userId' => $userId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('send', array($params), "Google_Service_Gmail_Message"); + } + /** + * Moves the specified message to the trash. (messages.trash) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param string $id + * The ID of the message to Trash. + * @param array $optParams Optional parameters. + * @return Google_Service_Gmail_Message + */ + public function trash($userId, $id, $optParams = array()) + { + $params = array('userId' => $userId, 'id' => $id); + $params = array_merge($params, $optParams); + return $this->call('trash', array($params), "Google_Service_Gmail_Message"); + } + /** + * Removes the specified message from the trash. (messages.untrash) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param string $id + * The ID of the message to remove from Trash. + * @param array $optParams Optional parameters. + * @return Google_Service_Gmail_Message + */ + public function untrash($userId, $id, $optParams = array()) + { + $params = array('userId' => $userId, 'id' => $id); + $params = array_merge($params, $optParams); + return $this->call('untrash', array($params), "Google_Service_Gmail_Message"); + } +} + +/** + * The "attachments" collection of methods. + * Typical usage is: + * + * $gmailService = new Google_Service_Gmail(...); + * $attachments = $gmailService->attachments; + * + */ +class Google_Service_Gmail_UsersMessagesAttachments_Resource extends Google_Service_Resource +{ + + /** + * Gets the specified message attachment. (attachments.get) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param string $messageId + * The ID of the message containing the attachment. + * @param string $id + * The ID of the attachment. + * @param array $optParams Optional parameters. + * @return Google_Service_Gmail_MessagePartBody + */ + public function get($userId, $messageId, $id, $optParams = array()) + { + $params = array('userId' => $userId, 'messageId' => $messageId, 'id' => $id); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Gmail_MessagePartBody"); + } +} +/** + * The "threads" collection of methods. + * Typical usage is: + * + * $gmailService = new Google_Service_Gmail(...); + * $threads = $gmailService->threads; + * + */ +class Google_Service_Gmail_UsersThreads_Resource extends Google_Service_Resource +{ + + /** + * Immediately and permanently deletes the specified thread. This operation + * cannot be undone. Prefer threads.trash instead. (threads.delete) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param string $id + * ID of the Thread to delete. + * @param array $optParams Optional parameters. + */ + public function delete($userId, $id, $optParams = array()) + { + $params = array('userId' => $userId, 'id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets the specified thread. (threads.get) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param string $id + * The ID of the thread to retrieve. + * @param array $optParams Optional parameters. + * @return Google_Service_Gmail_Thread + */ + public function get($userId, $id, $optParams = array()) + { + $params = array('userId' => $userId, 'id' => $id); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Gmail_Thread"); + } + /** + * Lists the threads in the user's mailbox. (threads.listUsersThreads) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param array $optParams Optional parameters. + * + * @opt_param string maxResults + * Maximum number of threads to return. + * @opt_param string q + * Only return threads matching the specified query. Supports the same query format as the Gmail + * search box. For example, "from:someuser@example.com rfc822msgid: is:unread". + * @opt_param string pageToken + * Page token to retrieve a specific page of results in the list. + * @opt_param bool includeSpamTrash + * Include threads from SPAM and TRASH in the results. + * @opt_param string labelIds + * Only return threads with labels that match all of the specified label IDs. + * @return Google_Service_Gmail_ListThreadsResponse + */ + public function listUsersThreads($userId, $optParams = array()) + { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Gmail_ListThreadsResponse"); + } + /** + * Modifies the labels applied to the thread. This applies to all messages in + * the thread. (threads.modify) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param string $id + * The ID of the thread to modify. + * @param Google_ModifyThreadRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Gmail_Thread + */ + public function modify($userId, $id, Google_Service_Gmail_ModifyThreadRequest $postBody, $optParams = array()) + { + $params = array('userId' => $userId, 'id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('modify', array($params), "Google_Service_Gmail_Thread"); + } + /** + * Moves the specified thread to the trash. (threads.trash) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param string $id + * The ID of the thread to Trash. + * @param array $optParams Optional parameters. + * @return Google_Service_Gmail_Thread + */ + public function trash($userId, $id, $optParams = array()) + { + $params = array('userId' => $userId, 'id' => $id); + $params = array_merge($params, $optParams); + return $this->call('trash', array($params), "Google_Service_Gmail_Thread"); + } + /** + * Removes the specified thread from the trash. (threads.untrash) + * + * @param string $userId + * The user's email address. The special value me can be used to indicate the authenticated user. + * @param string $id + * The ID of the thread to remove from Trash. + * @param array $optParams Optional parameters. + * @return Google_Service_Gmail_Thread + */ + public function untrash($userId, $id, $optParams = array()) + { + $params = array('userId' => $userId, 'id' => $id); + $params = array_merge($params, $optParams); + return $this->call('untrash', array($params), "Google_Service_Gmail_Thread"); + } +} + + + + +class Google_Service_Gmail_Draft extends Google_Model +{ + public $id; + protected $messageType = 'Google_Service_Gmail_Message'; + protected $messageDataType = ''; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setMessage(Google_Service_Gmail_Message $message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_Gmail_History extends Google_Collection +{ + public $id; + protected $messagesType = 'Google_Service_Gmail_Message'; + protected $messagesDataType = 'array'; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setMessages($messages) + { + $this->messages = $messages; + } + + public function getMessages() + { + return $this->messages; + } +} + +class Google_Service_Gmail_Label extends Google_Model +{ + public $id; + public $labelListVisibility; + public $messageListVisibility; + public $name; + public $type; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setLabelListVisibility($labelListVisibility) + { + $this->labelListVisibility = $labelListVisibility; + } + + public function getLabelListVisibility() + { + return $this->labelListVisibility; + } + + public function setMessageListVisibility($messageListVisibility) + { + $this->messageListVisibility = $messageListVisibility; + } + + public function getMessageListVisibility() + { + return $this->messageListVisibility; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Gmail_ListDraftsResponse extends Google_Collection +{ + protected $draftsType = 'Google_Service_Gmail_Draft'; + protected $draftsDataType = 'array'; + public $nextPageToken; + public $resultSizeEstimate; + + public function setDrafts($drafts) + { + $this->drafts = $drafts; + } + + public function getDrafts() + { + return $this->drafts; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setResultSizeEstimate($resultSizeEstimate) + { + $this->resultSizeEstimate = $resultSizeEstimate; + } + + public function getResultSizeEstimate() + { + return $this->resultSizeEstimate; + } +} + +class Google_Service_Gmail_ListHistoryResponse extends Google_Collection +{ + protected $historyType = 'Google_Service_Gmail_History'; + protected $historyDataType = 'array'; + public $historyId; + public $nextPageToken; + + public function setHistory($history) + { + $this->history = $history; + } + + public function getHistory() + { + return $this->history; + } + + public function setHistoryId($historyId) + { + $this->historyId = $historyId; + } + + public function getHistoryId() + { + return $this->historyId; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Gmail_ListLabelsResponse extends Google_Collection +{ + protected $labelsType = 'Google_Service_Gmail_Label'; + protected $labelsDataType = 'array'; + + public function setLabels($labels) + { + $this->labels = $labels; + } + + public function getLabels() + { + return $this->labels; + } +} + +class Google_Service_Gmail_ListMessagesResponse extends Google_Collection +{ + protected $messagesType = 'Google_Service_Gmail_Message'; + protected $messagesDataType = 'array'; + public $nextPageToken; + public $resultSizeEstimate; + + public function setMessages($messages) + { + $this->messages = $messages; + } + + public function getMessages() + { + return $this->messages; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setResultSizeEstimate($resultSizeEstimate) + { + $this->resultSizeEstimate = $resultSizeEstimate; + } + + public function getResultSizeEstimate() + { + return $this->resultSizeEstimate; + } +} + +class Google_Service_Gmail_ListThreadsResponse extends Google_Collection +{ + public $nextPageToken; + public $resultSizeEstimate; + protected $threadsType = 'Google_Service_Gmail_Thread'; + protected $threadsDataType = 'array'; + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setResultSizeEstimate($resultSizeEstimate) + { + $this->resultSizeEstimate = $resultSizeEstimate; + } + + public function getResultSizeEstimate() + { + return $this->resultSizeEstimate; + } + + public function setThreads($threads) + { + $this->threads = $threads; + } + + public function getThreads() + { + return $this->threads; + } +} + +class Google_Service_Gmail_Message extends Google_Collection +{ + public $historyId; + public $id; + public $labelIds; + protected $payloadType = 'Google_Service_Gmail_MessagePart'; + protected $payloadDataType = ''; + public $raw; + public $sizeEstimate; + public $snippet; + public $threadId; + + public function setHistoryId($historyId) + { + $this->historyId = $historyId; + } + + public function getHistoryId() + { + return $this->historyId; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setLabelIds($labelIds) + { + $this->labelIds = $labelIds; + } + + public function getLabelIds() + { + return $this->labelIds; + } + + public function setPayload(Google_Service_Gmail_MessagePart $payload) + { + $this->payload = $payload; + } + + public function getPayload() + { + return $this->payload; + } + + public function setRaw($raw) + { + $this->raw = $raw; + } + + public function getRaw() + { + return $this->raw; + } + + public function setSizeEstimate($sizeEstimate) + { + $this->sizeEstimate = $sizeEstimate; + } + + public function getSizeEstimate() + { + return $this->sizeEstimate; + } + + public function setSnippet($snippet) + { + $this->snippet = $snippet; + } + + public function getSnippet() + { + return $this->snippet; + } + + public function setThreadId($threadId) + { + $this->threadId = $threadId; + } + + public function getThreadId() + { + return $this->threadId; + } +} + +class Google_Service_Gmail_MessagePart extends Google_Collection +{ + protected $bodyType = 'Google_Service_Gmail_MessagePartBody'; + protected $bodyDataType = ''; + public $filename; + protected $headersType = 'Google_Service_Gmail_MessagePartHeader'; + protected $headersDataType = 'array'; + public $mimeType; + public $partId; + protected $partsType = 'Google_Service_Gmail_MessagePart'; + protected $partsDataType = 'array'; + + public function setBody(Google_Service_Gmail_MessagePartBody $body) + { + $this->body = $body; + } + + public function getBody() + { + return $this->body; + } + + public function setFilename($filename) + { + $this->filename = $filename; + } + + public function getFilename() + { + return $this->filename; + } + + public function setHeaders($headers) + { + $this->headers = $headers; + } + + public function getHeaders() + { + return $this->headers; + } + + public function setMimeType($mimeType) + { + $this->mimeType = $mimeType; + } + + public function getMimeType() + { + return $this->mimeType; + } + + public function setPartId($partId) + { + $this->partId = $partId; + } + + public function getPartId() + { + return $this->partId; + } + + public function setParts($parts) + { + $this->parts = $parts; + } + + public function getParts() + { + return $this->parts; + } +} + +class Google_Service_Gmail_MessagePartBody extends Google_Model +{ + public $attachmentId; + public $data; + public $size; + + public function setAttachmentId($attachmentId) + { + $this->attachmentId = $attachmentId; + } + + public function getAttachmentId() + { + return $this->attachmentId; + } + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setSize($size) + { + $this->size = $size; + } + + public function getSize() + { + return $this->size; + } +} + +class Google_Service_Gmail_MessagePartHeader extends Google_Model +{ + public $name; + public $value; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Gmail_ModifyMessageRequest extends Google_Collection +{ + public $addLabelIds; + public $removeLabelIds; + + public function setAddLabelIds($addLabelIds) + { + $this->addLabelIds = $addLabelIds; + } + + public function getAddLabelIds() + { + return $this->addLabelIds; + } + + public function setRemoveLabelIds($removeLabelIds) + { + $this->removeLabelIds = $removeLabelIds; + } + + public function getRemoveLabelIds() + { + return $this->removeLabelIds; + } +} + +class Google_Service_Gmail_ModifyThreadRequest extends Google_Collection +{ + public $addLabelIds; + public $removeLabelIds; + + public function setAddLabelIds($addLabelIds) + { + $this->addLabelIds = $addLabelIds; + } + + public function getAddLabelIds() + { + return $this->addLabelIds; + } + + public function setRemoveLabelIds($removeLabelIds) + { + $this->removeLabelIds = $removeLabelIds; + } + + public function getRemoveLabelIds() + { + return $this->removeLabelIds; + } +} + +class Google_Service_Gmail_Thread extends Google_Collection +{ + public $historyId; + public $id; + protected $messagesType = 'Google_Service_Gmail_Message'; + protected $messagesDataType = 'array'; + public $snippet; + + public function setHistoryId($historyId) + { + $this->historyId = $historyId; + } + + public function getHistoryId() + { + return $this->historyId; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setMessages($messages) + { + $this->messages = $messages; + } + + public function getMessages() + { + return $this->messages; + } + + public function setSnippet($snippet) + { + $this->snippet = $snippet; + } + + public function getSnippet() + { + return $this->snippet; + } +} diff --git a/oauth/Google/Service/GroupsMigration.php b/oauth/Google/Service/GroupsMigration.php new file mode 100644 index 0000000..71e860c --- /dev/null +++ b/oauth/Google/Service/GroupsMigration.php @@ -0,0 +1,129 @@ + + * Groups Migration Api. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_GroupsMigration extends Google_Service +{ + + + public $archive; + + + /** + * Constructs the internal representation of the GroupsMigration service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'groups/v1/groups/'; + $this->version = 'v1'; + $this->serviceName = 'groupsmigration'; + + $this->archive = new Google_Service_GroupsMigration_Archive_Resource( + $this, + $this->serviceName, + 'archive', + array( + 'methods' => array( + 'insert' => array( + 'path' => '{groupId}/archive', + 'httpMethod' => 'POST', + 'parameters' => array( + 'groupId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "archive" collection of methods. + * Typical usage is: + * + * $groupsmigrationService = new Google_Service_GroupsMigration(...); + * $archive = $groupsmigrationService->archive; + * + */ +class Google_Service_GroupsMigration_Archive_Resource extends Google_Service_Resource +{ + + /** + * Inserts a new mail into the archive of the Google group. (archive.insert) + * + * @param string $groupId + * The group ID + * @param array $optParams Optional parameters. + * @return Google_Service_GroupsMigration_Groups + */ + public function insert($groupId, $optParams = array()) + { + $params = array('groupId' => $groupId); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_GroupsMigration_Groups"); + } +} + + + + +class Google_Service_GroupsMigration_Groups extends Google_Model +{ + public $kind; + public $responseCode; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setResponseCode($responseCode) + { + $this->responseCode = $responseCode; + } + + public function getResponseCode() + { + return $this->responseCode; + } +} diff --git a/oauth/Google/Service/Groupssettings.php b/oauth/Google/Service/Groupssettings.php new file mode 100644 index 0000000..b14b87c --- /dev/null +++ b/oauth/Google/Service/Groupssettings.php @@ -0,0 +1,467 @@ + + * Lets you manage permission levels and related settings of a group. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Groupssettings extends Google_Service +{ + /** View and manage the settings of a Google Apps Group. */ + const APPS_GROUPS_SETTINGS = "https://www.googleapis.com/auth/apps.groups.settings"; + + public $groups; + + + /** + * Constructs the internal representation of the Groupssettings service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'groups/v1/groups/'; + $this->version = 'v1'; + $this->serviceName = 'groupssettings'; + + $this->groups = new Google_Service_Groupssettings_Groups_Resource( + $this, + $this->serviceName, + 'groups', + array( + 'methods' => array( + 'get' => array( + 'path' => '{groupUniqueId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'groupUniqueId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => '{groupUniqueId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'groupUniqueId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => '{groupUniqueId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'groupUniqueId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "groups" collection of methods. + * Typical usage is: + * + * $groupssettingsService = new Google_Service_Groupssettings(...); + * $groups = $groupssettingsService->groups; + * + */ +class Google_Service_Groupssettings_Groups_Resource extends Google_Service_Resource +{ + + /** + * Gets one resource by id. (groups.get) + * + * @param string $groupUniqueId + * The resource ID + * @param array $optParams Optional parameters. + * @return Google_Service_Groupssettings_Groups + */ + public function get($groupUniqueId, $optParams = array()) + { + $params = array('groupUniqueId' => $groupUniqueId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Groupssettings_Groups"); + } + /** + * Updates an existing resource. This method supports patch semantics. + * (groups.patch) + * + * @param string $groupUniqueId + * The resource ID + * @param Google_Groups $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Groupssettings_Groups + */ + public function patch($groupUniqueId, Google_Service_Groupssettings_Groups $postBody, $optParams = array()) + { + $params = array('groupUniqueId' => $groupUniqueId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Groupssettings_Groups"); + } + /** + * Updates an existing resource. (groups.update) + * + * @param string $groupUniqueId + * The resource ID + * @param Google_Groups $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Groupssettings_Groups + */ + public function update($groupUniqueId, Google_Service_Groupssettings_Groups $postBody, $optParams = array()) + { + $params = array('groupUniqueId' => $groupUniqueId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Groupssettings_Groups"); + } +} + + + + +class Google_Service_Groupssettings_Groups extends Google_Model +{ + public $allowExternalMembers; + public $allowGoogleCommunication; + public $allowWebPosting; + public $archiveOnly; + public $customReplyTo; + public $defaultMessageDenyNotificationText; + public $description; + public $email; + public $includeInGlobalAddressList; + public $isArchived; + public $kind; + public $maxMessageBytes; + public $membersCanPostAsTheGroup; + public $messageDisplayFont; + public $messageModerationLevel; + public $name; + public $primaryLanguage; + public $replyTo; + public $sendMessageDenyNotification; + public $showInGroupDirectory; + public $spamModerationLevel; + public $whoCanContactOwner; + public $whoCanInvite; + public $whoCanJoin; + public $whoCanLeaveGroup; + public $whoCanPostMessage; + public $whoCanViewGroup; + public $whoCanViewMembership; + + public function setAllowExternalMembers($allowExternalMembers) + { + $this->allowExternalMembers = $allowExternalMembers; + } + + public function getAllowExternalMembers() + { + return $this->allowExternalMembers; + } + + public function setAllowGoogleCommunication($allowGoogleCommunication) + { + $this->allowGoogleCommunication = $allowGoogleCommunication; + } + + public function getAllowGoogleCommunication() + { + return $this->allowGoogleCommunication; + } + + public function setAllowWebPosting($allowWebPosting) + { + $this->allowWebPosting = $allowWebPosting; + } + + public function getAllowWebPosting() + { + return $this->allowWebPosting; + } + + public function setArchiveOnly($archiveOnly) + { + $this->archiveOnly = $archiveOnly; + } + + public function getArchiveOnly() + { + return $this->archiveOnly; + } + + public function setCustomReplyTo($customReplyTo) + { + $this->customReplyTo = $customReplyTo; + } + + public function getCustomReplyTo() + { + return $this->customReplyTo; + } + + public function setDefaultMessageDenyNotificationText($defaultMessageDenyNotificationText) + { + $this->defaultMessageDenyNotificationText = $defaultMessageDenyNotificationText; + } + + public function getDefaultMessageDenyNotificationText() + { + return $this->defaultMessageDenyNotificationText; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setIncludeInGlobalAddressList($includeInGlobalAddressList) + { + $this->includeInGlobalAddressList = $includeInGlobalAddressList; + } + + public function getIncludeInGlobalAddressList() + { + return $this->includeInGlobalAddressList; + } + + public function setIsArchived($isArchived) + { + $this->isArchived = $isArchived; + } + + public function getIsArchived() + { + return $this->isArchived; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMaxMessageBytes($maxMessageBytes) + { + $this->maxMessageBytes = $maxMessageBytes; + } + + public function getMaxMessageBytes() + { + return $this->maxMessageBytes; + } + + public function setMembersCanPostAsTheGroup($membersCanPostAsTheGroup) + { + $this->membersCanPostAsTheGroup = $membersCanPostAsTheGroup; + } + + public function getMembersCanPostAsTheGroup() + { + return $this->membersCanPostAsTheGroup; + } + + public function setMessageDisplayFont($messageDisplayFont) + { + $this->messageDisplayFont = $messageDisplayFont; + } + + public function getMessageDisplayFont() + { + return $this->messageDisplayFont; + } + + public function setMessageModerationLevel($messageModerationLevel) + { + $this->messageModerationLevel = $messageModerationLevel; + } + + public function getMessageModerationLevel() + { + return $this->messageModerationLevel; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPrimaryLanguage($primaryLanguage) + { + $this->primaryLanguage = $primaryLanguage; + } + + public function getPrimaryLanguage() + { + return $this->primaryLanguage; + } + + public function setReplyTo($replyTo) + { + $this->replyTo = $replyTo; + } + + public function getReplyTo() + { + return $this->replyTo; + } + + public function setSendMessageDenyNotification($sendMessageDenyNotification) + { + $this->sendMessageDenyNotification = $sendMessageDenyNotification; + } + + public function getSendMessageDenyNotification() + { + return $this->sendMessageDenyNotification; + } + + public function setShowInGroupDirectory($showInGroupDirectory) + { + $this->showInGroupDirectory = $showInGroupDirectory; + } + + public function getShowInGroupDirectory() + { + return $this->showInGroupDirectory; + } + + public function setSpamModerationLevel($spamModerationLevel) + { + $this->spamModerationLevel = $spamModerationLevel; + } + + public function getSpamModerationLevel() + { + return $this->spamModerationLevel; + } + + public function setWhoCanContactOwner($whoCanContactOwner) + { + $this->whoCanContactOwner = $whoCanContactOwner; + } + + public function getWhoCanContactOwner() + { + return $this->whoCanContactOwner; + } + + public function setWhoCanInvite($whoCanInvite) + { + $this->whoCanInvite = $whoCanInvite; + } + + public function getWhoCanInvite() + { + return $this->whoCanInvite; + } + + public function setWhoCanJoin($whoCanJoin) + { + $this->whoCanJoin = $whoCanJoin; + } + + public function getWhoCanJoin() + { + return $this->whoCanJoin; + } + + public function setWhoCanLeaveGroup($whoCanLeaveGroup) + { + $this->whoCanLeaveGroup = $whoCanLeaveGroup; + } + + public function getWhoCanLeaveGroup() + { + return $this->whoCanLeaveGroup; + } + + public function setWhoCanPostMessage($whoCanPostMessage) + { + $this->whoCanPostMessage = $whoCanPostMessage; + } + + public function getWhoCanPostMessage() + { + return $this->whoCanPostMessage; + } + + public function setWhoCanViewGroup($whoCanViewGroup) + { + $this->whoCanViewGroup = $whoCanViewGroup; + } + + public function getWhoCanViewGroup() + { + return $this->whoCanViewGroup; + } + + public function setWhoCanViewMembership($whoCanViewMembership) + { + $this->whoCanViewMembership = $whoCanViewMembership; + } + + public function getWhoCanViewMembership() + { + return $this->whoCanViewMembership; + } +} diff --git a/oauth/Google/Service/IdentityToolkit.php b/oauth/Google/Service/IdentityToolkit.php new file mode 100644 index 0000000..eba918b --- /dev/null +++ b/oauth/Google/Service/IdentityToolkit.php @@ -0,0 +1,1760 @@ + + * Help the third party sites to implement federated login. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_IdentityToolkit extends Google_Service +{ + + + public $relyingparty; + + + /** + * Constructs the internal representation of the IdentityToolkit service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'identitytoolkit/v3/relyingparty/'; + $this->version = 'v3'; + $this->serviceName = 'identitytoolkit'; + + $this->relyingparty = new Google_Service_IdentityToolkit_Relyingparty_Resource( + $this, + $this->serviceName, + 'relyingparty', + array( + 'methods' => array( + 'createAuthUri' => array( + 'path' => 'createAuthUri', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'deleteAccount' => array( + 'path' => 'deleteAccount', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'downloadAccount' => array( + 'path' => 'downloadAccount', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'getAccountInfo' => array( + 'path' => 'getAccountInfo', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'getOobConfirmationCode' => array( + 'path' => 'getOobConfirmationCode', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'getPublicKeys' => array( + 'path' => 'publicKeys', + 'httpMethod' => 'GET', + 'parameters' => array(), + ),'resetPassword' => array( + 'path' => 'resetPassword', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'setAccountInfo' => array( + 'path' => 'setAccountInfo', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'uploadAccount' => array( + 'path' => 'uploadAccount', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'verifyAssertion' => array( + 'path' => 'verifyAssertion', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'verifyPassword' => array( + 'path' => 'verifyPassword', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + } +} + + +/** + * The "relyingparty" collection of methods. + * Typical usage is: + * + * $identitytoolkitService = new Google_Service_IdentityToolkit(...); + * $relyingparty = $identitytoolkitService->relyingparty; + * + */ +class Google_Service_IdentityToolkit_Relyingparty_Resource extends Google_Service_Resource +{ + + /** + * Creates the URI used by the IdP to authenticate the user. + * (relyingparty.createAuthUri) + * + * @param Google_IdentitytoolkitRelyingpartyCreateAuthUriRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_CreateAuthUriResponse + */ + public function createAuthUri(Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyCreateAuthUriRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('createAuthUri', array($params), "Google_Service_IdentityToolkit_CreateAuthUriResponse"); + } + /** + * Delete user account. (relyingparty.deleteAccount) + * + * @param Google_IdentitytoolkitRelyingpartyDeleteAccountRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_DeleteAccountResponse + */ + public function deleteAccount(Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyDeleteAccountRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('deleteAccount', array($params), "Google_Service_IdentityToolkit_DeleteAccountResponse"); + } + /** + * Batch download user accounts. (relyingparty.downloadAccount) + * + * @param Google_IdentitytoolkitRelyingpartyDownloadAccountRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_DownloadAccountResponse + */ + public function downloadAccount(Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyDownloadAccountRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('downloadAccount', array($params), "Google_Service_IdentityToolkit_DownloadAccountResponse"); + } + /** + * Returns the account info. (relyingparty.getAccountInfo) + * + * @param Google_IdentitytoolkitRelyingpartyGetAccountInfoRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_GetAccountInfoResponse + */ + public function getAccountInfo(Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyGetAccountInfoRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('getAccountInfo', array($params), "Google_Service_IdentityToolkit_GetAccountInfoResponse"); + } + /** + * Get a code for user action confirmation. + * (relyingparty.getOobConfirmationCode) + * + * @param Google_Relyingparty $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_GetOobConfirmationCodeResponse + */ + public function getOobConfirmationCode(Google_Service_IdentityToolkit_Relyingparty $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('getOobConfirmationCode', array($params), "Google_Service_IdentityToolkit_GetOobConfirmationCodeResponse"); + } + /** + * Get token signing public key. (relyingparty.getPublicKeys) + * + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyGetPublicKeysResponse + */ + public function getPublicKeys($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('getPublicKeys', array($params), "Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyGetPublicKeysResponse"); + } + /** + * Set account info for a user. (relyingparty.resetPassword) + * + * @param Google_IdentitytoolkitRelyingpartyResetPasswordRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_ResetPasswordResponse + */ + public function resetPassword(Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyResetPasswordRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('resetPassword', array($params), "Google_Service_IdentityToolkit_ResetPasswordResponse"); + } + /** + * Set account info for a user. (relyingparty.setAccountInfo) + * + * @param Google_IdentitytoolkitRelyingpartySetAccountInfoRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_SetAccountInfoResponse + */ + public function setAccountInfo(Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartySetAccountInfoRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('setAccountInfo', array($params), "Google_Service_IdentityToolkit_SetAccountInfoResponse"); + } + /** + * Batch upload existing user accounts. (relyingparty.uploadAccount) + * + * @param Google_IdentitytoolkitRelyingpartyUploadAccountRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_UploadAccountResponse + */ + public function uploadAccount(Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyUploadAccountRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('uploadAccount', array($params), "Google_Service_IdentityToolkit_UploadAccountResponse"); + } + /** + * Verifies the assertion returned by the IdP. (relyingparty.verifyAssertion) + * + * @param Google_IdentitytoolkitRelyingpartyVerifyAssertionRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_VerifyAssertionResponse + */ + public function verifyAssertion(Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyVerifyAssertionRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('verifyAssertion', array($params), "Google_Service_IdentityToolkit_VerifyAssertionResponse"); + } + /** + * Verifies the user entered password. (relyingparty.verifyPassword) + * + * @param Google_IdentitytoolkitRelyingpartyVerifyPasswordRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_IdentityToolkit_VerifyPasswordResponse + */ + public function verifyPassword(Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyVerifyPasswordRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('verifyPassword', array($params), "Google_Service_IdentityToolkit_VerifyPasswordResponse"); + } +} + + + + +class Google_Service_IdentityToolkit_CreateAuthUriResponse extends Google_Model +{ + public $authUri; + public $forExistingProvider; + public $kind; + public $providerId; + public $registered; + + public function setAuthUri($authUri) + { + $this->authUri = $authUri; + } + + public function getAuthUri() + { + return $this->authUri; + } + + public function setForExistingProvider($forExistingProvider) + { + $this->forExistingProvider = $forExistingProvider; + } + + public function getForExistingProvider() + { + return $this->forExistingProvider; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setProviderId($providerId) + { + $this->providerId = $providerId; + } + + public function getProviderId() + { + return $this->providerId; + } + + public function setRegistered($registered) + { + $this->registered = $registered; + } + + public function getRegistered() + { + return $this->registered; + } +} + +class Google_Service_IdentityToolkit_DeleteAccountResponse extends Google_Model +{ + public $kind; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_IdentityToolkit_DownloadAccountResponse extends Google_Collection +{ + public $kind; + public $nextPageToken; + protected $usersType = 'Google_Service_IdentityToolkit_UserInfo'; + protected $usersDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setUsers($users) + { + $this->users = $users; + } + + public function getUsers() + { + return $this->users; + } +} + +class Google_Service_IdentityToolkit_GetAccountInfoResponse extends Google_Collection +{ + public $kind; + protected $usersType = 'Google_Service_IdentityToolkit_UserInfo'; + protected $usersDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setUsers($users) + { + $this->users = $users; + } + + public function getUsers() + { + return $this->users; + } +} + +class Google_Service_IdentityToolkit_GetOobConfirmationCodeResponse extends Google_Model +{ + public $kind; + public $oobCode; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setOobCode($oobCode) + { + $this->oobCode = $oobCode; + } + + public function getOobCode() + { + return $this->oobCode; + } +} + +class Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyCreateAuthUriRequest extends Google_Model +{ + public $appId; + public $clientId; + public $context; + public $continueUri; + public $identifier; + public $openidRealm; + public $otaApp; + public $providerId; + + public function setAppId($appId) + { + $this->appId = $appId; + } + + public function getAppId() + { + return $this->appId; + } + + public function setClientId($clientId) + { + $this->clientId = $clientId; + } + + public function getClientId() + { + return $this->clientId; + } + + public function setContext($context) + { + $this->context = $context; + } + + public function getContext() + { + return $this->context; + } + + public function setContinueUri($continueUri) + { + $this->continueUri = $continueUri; + } + + public function getContinueUri() + { + return $this->continueUri; + } + + public function setIdentifier($identifier) + { + $this->identifier = $identifier; + } + + public function getIdentifier() + { + return $this->identifier; + } + + public function setOpenidRealm($openidRealm) + { + $this->openidRealm = $openidRealm; + } + + public function getOpenidRealm() + { + return $this->openidRealm; + } + + public function setOtaApp($otaApp) + { + $this->otaApp = $otaApp; + } + + public function getOtaApp() + { + return $this->otaApp; + } + + public function setProviderId($providerId) + { + $this->providerId = $providerId; + } + + public function getProviderId() + { + return $this->providerId; + } +} + +class Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyDeleteAccountRequest extends Google_Model +{ + public $localId; + + public function setLocalId($localId) + { + $this->localId = $localId; + } + + public function getLocalId() + { + return $this->localId; + } +} + +class Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyDownloadAccountRequest extends Google_Model +{ + public $maxResults; + public $nextPageToken; + + public function setMaxResults($maxResults) + { + $this->maxResults = $maxResults; + } + + public function getMaxResults() + { + return $this->maxResults; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyGetAccountInfoRequest extends Google_Collection +{ + public $email; + public $idToken; + public $localId; + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setIdToken($idToken) + { + $this->idToken = $idToken; + } + + public function getIdToken() + { + return $this->idToken; + } + + public function setLocalId($localId) + { + $this->localId = $localId; + } + + public function getLocalId() + { + return $this->localId; + } +} + +class Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyGetPublicKeysResponse extends Google_Model +{ + +} + +class Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyResetPasswordRequest extends Google_Model +{ + public $email; + public $newPassword; + public $oldPassword; + public $oobCode; + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setNewPassword($newPassword) + { + $this->newPassword = $newPassword; + } + + public function getNewPassword() + { + return $this->newPassword; + } + + public function setOldPassword($oldPassword) + { + $this->oldPassword = $oldPassword; + } + + public function getOldPassword() + { + return $this->oldPassword; + } + + public function setOobCode($oobCode) + { + $this->oobCode = $oobCode; + } + + public function getOobCode() + { + return $this->oobCode; + } +} + +class Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartySetAccountInfoRequest extends Google_Collection +{ + public $captchaChallenge; + public $captchaResponse; + public $displayName; + public $email; + public $emailVerified; + public $idToken; + public $localId; + public $oobCode; + public $password; + public $provider; + public $upgradeToFederatedLogin; + + public function setCaptchaChallenge($captchaChallenge) + { + $this->captchaChallenge = $captchaChallenge; + } + + public function getCaptchaChallenge() + { + return $this->captchaChallenge; + } + + public function setCaptchaResponse($captchaResponse) + { + $this->captchaResponse = $captchaResponse; + } + + public function getCaptchaResponse() + { + return $this->captchaResponse; + } + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setEmailVerified($emailVerified) + { + $this->emailVerified = $emailVerified; + } + + public function getEmailVerified() + { + return $this->emailVerified; + } + + public function setIdToken($idToken) + { + $this->idToken = $idToken; + } + + public function getIdToken() + { + return $this->idToken; + } + + public function setLocalId($localId) + { + $this->localId = $localId; + } + + public function getLocalId() + { + return $this->localId; + } + + public function setOobCode($oobCode) + { + $this->oobCode = $oobCode; + } + + public function getOobCode() + { + return $this->oobCode; + } + + public function setPassword($password) + { + $this->password = $password; + } + + public function getPassword() + { + return $this->password; + } + + public function setProvider($provider) + { + $this->provider = $provider; + } + + public function getProvider() + { + return $this->provider; + } + + public function setUpgradeToFederatedLogin($upgradeToFederatedLogin) + { + $this->upgradeToFederatedLogin = $upgradeToFederatedLogin; + } + + public function getUpgradeToFederatedLogin() + { + return $this->upgradeToFederatedLogin; + } +} + +class Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyUploadAccountRequest extends Google_Collection +{ + public $hashAlgorithm; + public $memoryCost; + public $rounds; + public $saltSeparator; + public $signerKey; + protected $usersType = 'Google_Service_IdentityToolkit_UserInfo'; + protected $usersDataType = 'array'; + + public function setHashAlgorithm($hashAlgorithm) + { + $this->hashAlgorithm = $hashAlgorithm; + } + + public function getHashAlgorithm() + { + return $this->hashAlgorithm; + } + + public function setMemoryCost($memoryCost) + { + $this->memoryCost = $memoryCost; + } + + public function getMemoryCost() + { + return $this->memoryCost; + } + + public function setRounds($rounds) + { + $this->rounds = $rounds; + } + + public function getRounds() + { + return $this->rounds; + } + + public function setSaltSeparator($saltSeparator) + { + $this->saltSeparator = $saltSeparator; + } + + public function getSaltSeparator() + { + return $this->saltSeparator; + } + + public function setSignerKey($signerKey) + { + $this->signerKey = $signerKey; + } + + public function getSignerKey() + { + return $this->signerKey; + } + + public function setUsers($users) + { + $this->users = $users; + } + + public function getUsers() + { + return $this->users; + } +} + +class Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyVerifyAssertionRequest extends Google_Model +{ + public $pendingIdToken; + public $postBody; + public $requestUri; + + public function setPendingIdToken($pendingIdToken) + { + $this->pendingIdToken = $pendingIdToken; + } + + public function getPendingIdToken() + { + return $this->pendingIdToken; + } + + public function setPostBody($postBody) + { + $this->postBody = $postBody; + } + + public function getPostBody() + { + return $this->postBody; + } + + public function setRequestUri($requestUri) + { + $this->requestUri = $requestUri; + } + + public function getRequestUri() + { + return $this->requestUri; + } +} + +class Google_Service_IdentityToolkit_IdentitytoolkitRelyingpartyVerifyPasswordRequest extends Google_Model +{ + public $captchaChallenge; + public $captchaResponse; + public $email; + public $password; + public $pendingIdToken; + + public function setCaptchaChallenge($captchaChallenge) + { + $this->captchaChallenge = $captchaChallenge; + } + + public function getCaptchaChallenge() + { + return $this->captchaChallenge; + } + + public function setCaptchaResponse($captchaResponse) + { + $this->captchaResponse = $captchaResponse; + } + + public function getCaptchaResponse() + { + return $this->captchaResponse; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setPassword($password) + { + $this->password = $password; + } + + public function getPassword() + { + return $this->password; + } + + public function setPendingIdToken($pendingIdToken) + { + $this->pendingIdToken = $pendingIdToken; + } + + public function getPendingIdToken() + { + return $this->pendingIdToken; + } +} + +class Google_Service_IdentityToolkit_Relyingparty extends Google_Model +{ + public $captchaResp; + public $challenge; + public $email; + public $idToken; + public $kind; + public $newEmail; + public $requestType; + public $userIp; + + public function setCaptchaResp($captchaResp) + { + $this->captchaResp = $captchaResp; + } + + public function getCaptchaResp() + { + return $this->captchaResp; + } + + public function setChallenge($challenge) + { + $this->challenge = $challenge; + } + + public function getChallenge() + { + return $this->challenge; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setIdToken($idToken) + { + $this->idToken = $idToken; + } + + public function getIdToken() + { + return $this->idToken; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNewEmail($newEmail) + { + $this->newEmail = $newEmail; + } + + public function getNewEmail() + { + return $this->newEmail; + } + + public function setRequestType($requestType) + { + $this->requestType = $requestType; + } + + public function getRequestType() + { + return $this->requestType; + } + + public function setUserIp($userIp) + { + $this->userIp = $userIp; + } + + public function getUserIp() + { + return $this->userIp; + } +} + +class Google_Service_IdentityToolkit_ResetPasswordResponse extends Google_Model +{ + public $email; + public $kind; + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_IdentityToolkit_SetAccountInfoResponse extends Google_Collection +{ + public $displayName; + public $email; + public $idToken; + public $kind; + protected $providerUserInfoType = 'Google_Service_IdentityToolkit_SetAccountInfoResponseProviderUserInfo'; + protected $providerUserInfoDataType = 'array'; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setIdToken($idToken) + { + $this->idToken = $idToken; + } + + public function getIdToken() + { + return $this->idToken; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setProviderUserInfo($providerUserInfo) + { + $this->providerUserInfo = $providerUserInfo; + } + + public function getProviderUserInfo() + { + return $this->providerUserInfo; + } +} + +class Google_Service_IdentityToolkit_SetAccountInfoResponseProviderUserInfo extends Google_Model +{ + public $displayName; + public $photoUrl; + public $providerId; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setPhotoUrl($photoUrl) + { + $this->photoUrl = $photoUrl; + } + + public function getPhotoUrl() + { + return $this->photoUrl; + } + + public function setProviderId($providerId) + { + $this->providerId = $providerId; + } + + public function getProviderId() + { + return $this->providerId; + } +} + +class Google_Service_IdentityToolkit_UploadAccountResponse extends Google_Collection +{ + protected $errorType = 'Google_Service_IdentityToolkit_UploadAccountResponseError'; + protected $errorDataType = 'array'; + public $kind; + + public function setError($error) + { + $this->error = $error; + } + + public function getError() + { + return $this->error; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_IdentityToolkit_UploadAccountResponseError extends Google_Model +{ + public $index; + public $message; + + public function setIndex($index) + { + $this->index = $index; + } + + public function getIndex() + { + return $this->index; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_IdentityToolkit_UserInfo extends Google_Collection +{ + public $displayName; + public $email; + public $emailVerified; + public $localId; + public $passwordHash; + public $passwordUpdatedAt; + public $photoUrl; + protected $providerUserInfoType = 'Google_Service_IdentityToolkit_UserInfoProviderUserInfo'; + protected $providerUserInfoDataType = 'array'; + public $salt; + public $version; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setEmailVerified($emailVerified) + { + $this->emailVerified = $emailVerified; + } + + public function getEmailVerified() + { + return $this->emailVerified; + } + + public function setLocalId($localId) + { + $this->localId = $localId; + } + + public function getLocalId() + { + return $this->localId; + } + + public function setPasswordHash($passwordHash) + { + $this->passwordHash = $passwordHash; + } + + public function getPasswordHash() + { + return $this->passwordHash; + } + + public function setPasswordUpdatedAt($passwordUpdatedAt) + { + $this->passwordUpdatedAt = $passwordUpdatedAt; + } + + public function getPasswordUpdatedAt() + { + return $this->passwordUpdatedAt; + } + + public function setPhotoUrl($photoUrl) + { + $this->photoUrl = $photoUrl; + } + + public function getPhotoUrl() + { + return $this->photoUrl; + } + + public function setProviderUserInfo($providerUserInfo) + { + $this->providerUserInfo = $providerUserInfo; + } + + public function getProviderUserInfo() + { + return $this->providerUserInfo; + } + + public function setSalt($salt) + { + $this->salt = $salt; + } + + public function getSalt() + { + return $this->salt; + } + + public function setVersion($version) + { + $this->version = $version; + } + + public function getVersion() + { + return $this->version; + } +} + +class Google_Service_IdentityToolkit_UserInfoProviderUserInfo extends Google_Model +{ + public $displayName; + public $federatedId; + public $photoUrl; + public $providerId; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setFederatedId($federatedId) + { + $this->federatedId = $federatedId; + } + + public function getFederatedId() + { + return $this->federatedId; + } + + public function setPhotoUrl($photoUrl) + { + $this->photoUrl = $photoUrl; + } + + public function getPhotoUrl() + { + return $this->photoUrl; + } + + public function setProviderId($providerId) + { + $this->providerId = $providerId; + } + + public function getProviderId() + { + return $this->providerId; + } +} + +class Google_Service_IdentityToolkit_VerifyAssertionResponse extends Google_Collection +{ + public $action; + public $appInstallationUrl; + public $appScheme; + public $context; + public $dateOfBirth; + public $displayName; + public $email; + public $emailRecycled; + public $emailVerified; + public $federatedId; + public $firstName; + public $fullName; + public $idToken; + public $inputEmail; + public $kind; + public $language; + public $lastName; + public $localId; + public $needConfirmation; + public $nickName; + public $oauthRequestToken; + public $oauthScope; + public $originalEmail; + public $photoUrl; + public $providerId; + public $timeZone; + public $verifiedProvider; + + public function setAction($action) + { + $this->action = $action; + } + + public function getAction() + { + return $this->action; + } + + public function setAppInstallationUrl($appInstallationUrl) + { + $this->appInstallationUrl = $appInstallationUrl; + } + + public function getAppInstallationUrl() + { + return $this->appInstallationUrl; + } + + public function setAppScheme($appScheme) + { + $this->appScheme = $appScheme; + } + + public function getAppScheme() + { + return $this->appScheme; + } + + public function setContext($context) + { + $this->context = $context; + } + + public function getContext() + { + return $this->context; + } + + public function setDateOfBirth($dateOfBirth) + { + $this->dateOfBirth = $dateOfBirth; + } + + public function getDateOfBirth() + { + return $this->dateOfBirth; + } + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setEmailRecycled($emailRecycled) + { + $this->emailRecycled = $emailRecycled; + } + + public function getEmailRecycled() + { + return $this->emailRecycled; + } + + public function setEmailVerified($emailVerified) + { + $this->emailVerified = $emailVerified; + } + + public function getEmailVerified() + { + return $this->emailVerified; + } + + public function setFederatedId($federatedId) + { + $this->federatedId = $federatedId; + } + + public function getFederatedId() + { + return $this->federatedId; + } + + public function setFirstName($firstName) + { + $this->firstName = $firstName; + } + + public function getFirstName() + { + return $this->firstName; + } + + public function setFullName($fullName) + { + $this->fullName = $fullName; + } + + public function getFullName() + { + return $this->fullName; + } + + public function setIdToken($idToken) + { + $this->idToken = $idToken; + } + + public function getIdToken() + { + return $this->idToken; + } + + public function setInputEmail($inputEmail) + { + $this->inputEmail = $inputEmail; + } + + public function getInputEmail() + { + return $this->inputEmail; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLanguage($language) + { + $this->language = $language; + } + + public function getLanguage() + { + return $this->language; + } + + public function setLastName($lastName) + { + $this->lastName = $lastName; + } + + public function getLastName() + { + return $this->lastName; + } + + public function setLocalId($localId) + { + $this->localId = $localId; + } + + public function getLocalId() + { + return $this->localId; + } + + public function setNeedConfirmation($needConfirmation) + { + $this->needConfirmation = $needConfirmation; + } + + public function getNeedConfirmation() + { + return $this->needConfirmation; + } + + public function setNickName($nickName) + { + $this->nickName = $nickName; + } + + public function getNickName() + { + return $this->nickName; + } + + public function setOauthRequestToken($oauthRequestToken) + { + $this->oauthRequestToken = $oauthRequestToken; + } + + public function getOauthRequestToken() + { + return $this->oauthRequestToken; + } + + public function setOauthScope($oauthScope) + { + $this->oauthScope = $oauthScope; + } + + public function getOauthScope() + { + return $this->oauthScope; + } + + public function setOriginalEmail($originalEmail) + { + $this->originalEmail = $originalEmail; + } + + public function getOriginalEmail() + { + return $this->originalEmail; + } + + public function setPhotoUrl($photoUrl) + { + $this->photoUrl = $photoUrl; + } + + public function getPhotoUrl() + { + return $this->photoUrl; + } + + public function setProviderId($providerId) + { + $this->providerId = $providerId; + } + + public function getProviderId() + { + return $this->providerId; + } + + public function setTimeZone($timeZone) + { + $this->timeZone = $timeZone; + } + + public function getTimeZone() + { + return $this->timeZone; + } + + public function setVerifiedProvider($verifiedProvider) + { + $this->verifiedProvider = $verifiedProvider; + } + + public function getVerifiedProvider() + { + return $this->verifiedProvider; + } +} + +class Google_Service_IdentityToolkit_VerifyPasswordResponse extends Google_Model +{ + public $displayName; + public $email; + public $idToken; + public $kind; + public $localId; + public $photoUrl; + public $registered; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setIdToken($idToken) + { + $this->idToken = $idToken; + } + + public function getIdToken() + { + return $this->idToken; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLocalId($localId) + { + $this->localId = $localId; + } + + public function getLocalId() + { + return $this->localId; + } + + public function setPhotoUrl($photoUrl) + { + $this->photoUrl = $photoUrl; + } + + public function getPhotoUrl() + { + return $this->photoUrl; + } + + public function setRegistered($registered) + { + $this->registered = $registered; + } + + public function getRegistered() + { + return $this->registered; + } +} diff --git a/oauth/Google/Service/Licensing.php b/oauth/Google/Service/Licensing.php new file mode 100644 index 0000000..81b13ba --- /dev/null +++ b/oauth/Google/Service/Licensing.php @@ -0,0 +1,499 @@ + + * Licensing API to view and manage license for your domain. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Licensing extends Google_Service +{ + + + public $licenseAssignments; + + + /** + * Constructs the internal representation of the Licensing service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'apps/licensing/v1/product/'; + $this->version = 'v1'; + $this->serviceName = 'licensing'; + + $this->licenseAssignments = new Google_Service_Licensing_LicenseAssignments_Resource( + $this, + $this->serviceName, + 'licenseAssignments', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{productId}/sku/{skuId}/user/{userId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'productId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'skuId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{productId}/sku/{skuId}/user/{userId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'productId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'skuId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{productId}/sku/{skuId}/user', + 'httpMethod' => 'POST', + 'parameters' => array( + 'productId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'skuId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'listForProduct' => array( + 'path' => '{productId}/users', + 'httpMethod' => 'GET', + 'parameters' => array( + 'productId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customerId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'listForProductAndSku' => array( + 'path' => '{productId}/sku/{skuId}/users', + 'httpMethod' => 'GET', + 'parameters' => array( + 'productId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'skuId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customerId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => '{productId}/sku/{skuId}/user/{userId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'productId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'skuId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => '{productId}/sku/{skuId}/user/{userId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'productId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'skuId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "licenseAssignments" collection of methods. + * Typical usage is: + * + * $licensingService = new Google_Service_Licensing(...); + * $licenseAssignments = $licensingService->licenseAssignments; + * + */ +class Google_Service_Licensing_LicenseAssignments_Resource extends Google_Service_Resource +{ + + /** + * Revoke License. (licenseAssignments.delete) + * + * @param string $productId + * Name for product + * @param string $skuId + * Name for sku + * @param string $userId + * email id or unique Id of the user + * @param array $optParams Optional parameters. + */ + public function delete($productId, $skuId, $userId, $optParams = array()) + { + $params = array('productId' => $productId, 'skuId' => $skuId, 'userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Get license assignment of a particular product and sku for a user + * (licenseAssignments.get) + * + * @param string $productId + * Name for product + * @param string $skuId + * Name for sku + * @param string $userId + * email id or unique Id of the user + * @param array $optParams Optional parameters. + * @return Google_Service_Licensing_LicenseAssignment + */ + public function get($productId, $skuId, $userId, $optParams = array()) + { + $params = array('productId' => $productId, 'skuId' => $skuId, 'userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Licensing_LicenseAssignment"); + } + /** + * Assign License. (licenseAssignments.insert) + * + * @param string $productId + * Name for product + * @param string $skuId + * Name for sku + * @param Google_LicenseAssignmentInsert $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Licensing_LicenseAssignment + */ + public function insert($productId, $skuId, Google_Service_Licensing_LicenseAssignmentInsert $postBody, $optParams = array()) + { + $params = array('productId' => $productId, 'skuId' => $skuId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Licensing_LicenseAssignment"); + } + /** + * List license assignments for given product of the customer. + * (licenseAssignments.listForProduct) + * + * @param string $productId + * Name for product + * @param string $customerId + * CustomerId represents the customer for whom licenseassignments are queried + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Token to fetch the next page.Optional. By default server will return first page + * @opt_param string maxResults + * Maximum number of campaigns to return at one time. Must be positive. Optional. Default value is + * 100. + * @return Google_Service_Licensing_LicenseAssignmentList + */ + public function listForProduct($productId, $customerId, $optParams = array()) + { + $params = array('productId' => $productId, 'customerId' => $customerId); + $params = array_merge($params, $optParams); + return $this->call('listForProduct', array($params), "Google_Service_Licensing_LicenseAssignmentList"); + } + /** + * List license assignments for given product and sku of the customer. + * (licenseAssignments.listForProductAndSku) + * + * @param string $productId + * Name for product + * @param string $skuId + * Name for sku + * @param string $customerId + * CustomerId represents the customer for whom licenseassignments are queried + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Token to fetch the next page.Optional. By default server will return first page + * @opt_param string maxResults + * Maximum number of campaigns to return at one time. Must be positive. Optional. Default value is + * 100. + * @return Google_Service_Licensing_LicenseAssignmentList + */ + public function listForProductAndSku($productId, $skuId, $customerId, $optParams = array()) + { + $params = array('productId' => $productId, 'skuId' => $skuId, 'customerId' => $customerId); + $params = array_merge($params, $optParams); + return $this->call('listForProductAndSku', array($params), "Google_Service_Licensing_LicenseAssignmentList"); + } + /** + * Assign License. This method supports patch semantics. + * (licenseAssignments.patch) + * + * @param string $productId + * Name for product + * @param string $skuId + * Name for sku for which license would be revoked + * @param string $userId + * email id or unique Id of the user + * @param Google_LicenseAssignment $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Licensing_LicenseAssignment + */ + public function patch($productId, $skuId, $userId, Google_Service_Licensing_LicenseAssignment $postBody, $optParams = array()) + { + $params = array('productId' => $productId, 'skuId' => $skuId, 'userId' => $userId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Licensing_LicenseAssignment"); + } + /** + * Assign License. (licenseAssignments.update) + * + * @param string $productId + * Name for product + * @param string $skuId + * Name for sku for which license would be revoked + * @param string $userId + * email id or unique Id of the user + * @param Google_LicenseAssignment $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Licensing_LicenseAssignment + */ + public function update($productId, $skuId, $userId, Google_Service_Licensing_LicenseAssignment $postBody, $optParams = array()) + { + $params = array('productId' => $productId, 'skuId' => $skuId, 'userId' => $userId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Licensing_LicenseAssignment"); + } +} + + + + +class Google_Service_Licensing_LicenseAssignment extends Google_Model +{ + public $etags; + public $kind; + public $productId; + public $selfLink; + public $skuId; + public $userId; + + public function setEtags($etags) + { + $this->etags = $etags; + } + + public function getEtags() + { + return $this->etags; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setProductId($productId) + { + $this->productId = $productId; + } + + public function getProductId() + { + return $this->productId; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setSkuId($skuId) + { + $this->skuId = $skuId; + } + + public function getSkuId() + { + return $this->skuId; + } + + public function setUserId($userId) + { + $this->userId = $userId; + } + + public function getUserId() + { + return $this->userId; + } +} + +class Google_Service_Licensing_LicenseAssignmentInsert extends Google_Model +{ + public $userId; + + public function setUserId($userId) + { + $this->userId = $userId; + } + + public function getUserId() + { + return $this->userId; + } +} + +class Google_Service_Licensing_LicenseAssignmentList extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Licensing_LicenseAssignment'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} diff --git a/oauth/Google/Service/Manager.php b/oauth/Google/Service/Manager.php new file mode 100644 index 0000000..e997188 --- /dev/null +++ b/oauth/Google/Service/Manager.php @@ -0,0 +1,1940 @@ + + * The Deployment Manager API allows users to declaratively configure, deploy and run complex solutions on the Google Cloud Platform. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Manager extends Google_Service +{ + /** View and manage your applications deployed on Google App Engine. */ + const APPENGINE_ADMIN = "https://www.googleapis.com/auth/appengine.admin"; + /** View and manage your data across Google Cloud Platform services. */ + const CLOUD_PLATFORM = "https://www.googleapis.com/auth/cloud-platform"; + /** View and manage your Google Compute Engine resources. */ + const COMPUTE = "https://www.googleapis.com/auth/compute"; + /** Manage your data in Google Cloud Storage. */ + const DEVSTORAGE_READ_WRITE = "https://www.googleapis.com/auth/devstorage.read_write"; + /** View and manage your Google Cloud Platform management resources and deployment status information. */ + const NDEV_CLOUDMAN = "https://www.googleapis.com/auth/ndev.cloudman"; + /** View your Google Cloud Platform management resources and deployment status information. */ + const NDEV_CLOUDMAN_READONLY = "https://www.googleapis.com/auth/ndev.cloudman.readonly"; + + public $deployments; + public $templates; + + + /** + * Constructs the internal representation of the Manager service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'manager/v1beta2/projects/'; + $this->version = 'v1beta2'; + $this->serviceName = 'manager'; + + $this->deployments = new Google_Service_Manager_Deployments_Resource( + $this, + $this->serviceName, + 'deployments', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{projectId}/regions/{region}/deployments/{deploymentName}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'deploymentName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{projectId}/regions/{region}/deployments/{deploymentName}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'deploymentName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{projectId}/regions/{region}/deployments', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{projectId}/regions/{region}/deployments', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->templates = new Google_Service_Manager_Templates_Resource( + $this, + $this->serviceName, + 'templates', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{projectId}/templates/{templateName}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'templateName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{projectId}/templates/{templateName}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'templateName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{projectId}/templates', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{projectId}/templates', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "deployments" collection of methods. + * Typical usage is: + * + * $managerService = new Google_Service_Manager(...); + * $deployments = $managerService->deployments; + * + */ +class Google_Service_Manager_Deployments_Resource extends Google_Service_Resource +{ + + /** + * (deployments.delete) + * + * @param string $projectId + * + * @param string $region + * + * @param string $deploymentName + * + * @param array $optParams Optional parameters. + */ + public function delete($projectId, $region, $deploymentName, $optParams = array()) + { + $params = array('projectId' => $projectId, 'region' => $region, 'deploymentName' => $deploymentName); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * (deployments.get) + * + * @param string $projectId + * + * @param string $region + * + * @param string $deploymentName + * + * @param array $optParams Optional parameters. + * @return Google_Service_Manager_Deployment + */ + public function get($projectId, $region, $deploymentName, $optParams = array()) + { + $params = array('projectId' => $projectId, 'region' => $region, 'deploymentName' => $deploymentName); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Manager_Deployment"); + } + /** + * (deployments.insert) + * + * @param string $projectId + * + * @param string $region + * + * @param Google_Deployment $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Manager_Deployment + */ + public function insert($projectId, $region, Google_Service_Manager_Deployment $postBody, $optParams = array()) + { + $params = array('projectId' => $projectId, 'region' => $region, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Manager_Deployment"); + } + /** + * (deployments.listDeployments) + * + * @param string $projectId + * + * @param string $region + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Specifies a nextPageToken returned by a previous list request. This token can be used to request + * the next page of results from a previous list request. + * @opt_param int maxResults + * Maximum count of results to be returned. Acceptable values are 0 to 100, inclusive. (Default: + * 50) + * @return Google_Service_Manager_DeploymentsListResponse + */ + public function listDeployments($projectId, $region, $optParams = array()) + { + $params = array('projectId' => $projectId, 'region' => $region); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Manager_DeploymentsListResponse"); + } +} + +/** + * The "templates" collection of methods. + * Typical usage is: + * + * $managerService = new Google_Service_Manager(...); + * $templates = $managerService->templates; + * + */ +class Google_Service_Manager_Templates_Resource extends Google_Service_Resource +{ + + /** + * (templates.delete) + * + * @param string $projectId + * + * @param string $templateName + * + * @param array $optParams Optional parameters. + */ + public function delete($projectId, $templateName, $optParams = array()) + { + $params = array('projectId' => $projectId, 'templateName' => $templateName); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * (templates.get) + * + * @param string $projectId + * + * @param string $templateName + * + * @param array $optParams Optional parameters. + * @return Google_Service_Manager_Template + */ + public function get($projectId, $templateName, $optParams = array()) + { + $params = array('projectId' => $projectId, 'templateName' => $templateName); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Manager_Template"); + } + /** + * (templates.insert) + * + * @param string $projectId + * + * @param Google_Template $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Manager_Template + */ + public function insert($projectId, Google_Service_Manager_Template $postBody, $optParams = array()) + { + $params = array('projectId' => $projectId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Manager_Template"); + } + /** + * (templates.listTemplates) + * + * @param string $projectId + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Specifies a nextPageToken returned by a previous list request. This token can be used to request + * the next page of results from a previous list request. + * @opt_param int maxResults + * Maximum count of results to be returned. Acceptable values are 0 to 100, inclusive. (Default: + * 50) + * @return Google_Service_Manager_TemplatesListResponse + */ + public function listTemplates($projectId, $optParams = array()) + { + $params = array('projectId' => $projectId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Manager_TemplatesListResponse"); + } +} + + + + +class Google_Service_Manager_AccessConfig extends Google_Model +{ + public $name; + public $natIp; + public $type; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNatIp($natIp) + { + $this->natIp = $natIp; + } + + public function getNatIp() + { + return $this->natIp; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Manager_Action extends Google_Collection +{ + public $commands; + public $timeoutMs; + + public function setCommands($commands) + { + $this->commands = $commands; + } + + public function getCommands() + { + return $this->commands; + } + + public function setTimeoutMs($timeoutMs) + { + $this->timeoutMs = $timeoutMs; + } + + public function getTimeoutMs() + { + return $this->timeoutMs; + } +} + +class Google_Service_Manager_AllowedRule extends Google_Collection +{ + public $iPProtocol; + public $ports; + + public function setIPProtocol($iPProtocol) + { + $this->iPProtocol = $iPProtocol; + } + + public function getIPProtocol() + { + return $this->iPProtocol; + } + + public function setPorts($ports) + { + $this->ports = $ports; + } + + public function getPorts() + { + return $this->ports; + } +} + +class Google_Service_Manager_AutoscalingModule extends Google_Model +{ + public $coolDownPeriodSec; + public $description; + public $maxNumReplicas; + public $minNumReplicas; + public $signalType; + public $targetModule; + public $targetUtilization; + + public function setCoolDownPeriodSec($coolDownPeriodSec) + { + $this->coolDownPeriodSec = $coolDownPeriodSec; + } + + public function getCoolDownPeriodSec() + { + return $this->coolDownPeriodSec; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setMaxNumReplicas($maxNumReplicas) + { + $this->maxNumReplicas = $maxNumReplicas; + } + + public function getMaxNumReplicas() + { + return $this->maxNumReplicas; + } + + public function setMinNumReplicas($minNumReplicas) + { + $this->minNumReplicas = $minNumReplicas; + } + + public function getMinNumReplicas() + { + return $this->minNumReplicas; + } + + public function setSignalType($signalType) + { + $this->signalType = $signalType; + } + + public function getSignalType() + { + return $this->signalType; + } + + public function setTargetModule($targetModule) + { + $this->targetModule = $targetModule; + } + + public function getTargetModule() + { + return $this->targetModule; + } + + public function setTargetUtilization($targetUtilization) + { + $this->targetUtilization = $targetUtilization; + } + + public function getTargetUtilization() + { + return $this->targetUtilization; + } +} + +class Google_Service_Manager_AutoscalingModuleStatus extends Google_Model +{ + public $autoscalingConfigUrl; + + public function setAutoscalingConfigUrl($autoscalingConfigUrl) + { + $this->autoscalingConfigUrl = $autoscalingConfigUrl; + } + + public function getAutoscalingConfigUrl() + { + return $this->autoscalingConfigUrl; + } +} + +class Google_Service_Manager_DeployState extends Google_Model +{ + public $details; + public $status; + + public function setDetails($details) + { + $this->details = $details; + } + + public function getDetails() + { + return $this->details; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_Manager_Deployment extends Google_Collection +{ + public $creationDate; + public $description; + protected $modulesType = 'Google_Service_Manager_ModuleStatus'; + protected $modulesDataType = 'map'; + public $name; + protected $overridesType = 'Google_Service_Manager_ParamOverride'; + protected $overridesDataType = 'array'; + protected $stateType = 'Google_Service_Manager_DeployState'; + protected $stateDataType = ''; + public $templateName; + + public function setCreationDate($creationDate) + { + $this->creationDate = $creationDate; + } + + public function getCreationDate() + { + return $this->creationDate; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setModules($modules) + { + $this->modules = $modules; + } + + public function getModules() + { + return $this->modules; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setOverrides($overrides) + { + $this->overrides = $overrides; + } + + public function getOverrides() + { + return $this->overrides; + } + + public function setState(Google_Service_Manager_DeployState $state) + { + $this->state = $state; + } + + public function getState() + { + return $this->state; + } + + public function setTemplateName($templateName) + { + $this->templateName = $templateName; + } + + public function getTemplateName() + { + return $this->templateName; + } +} + +class Google_Service_Manager_DeploymentModules extends Google_Model +{ + +} + +class Google_Service_Manager_DeploymentsListResponse extends Google_Collection +{ + public $nextPageToken; + protected $resourcesType = 'Google_Service_Manager_Deployment'; + protected $resourcesDataType = 'array'; + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setResources($resources) + { + $this->resources = $resources; + } + + public function getResources() + { + return $this->resources; + } +} + +class Google_Service_Manager_DiskAttachment extends Google_Model +{ + public $deviceName; + public $index; + + public function setDeviceName($deviceName) + { + $this->deviceName = $deviceName; + } + + public function getDeviceName() + { + return $this->deviceName; + } + + public function setIndex($index) + { + $this->index = $index; + } + + public function getIndex() + { + return $this->index; + } +} + +class Google_Service_Manager_EnvVariable extends Google_Model +{ + public $hidden; + public $value; + + public function setHidden($hidden) + { + $this->hidden = $hidden; + } + + public function getHidden() + { + return $this->hidden; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Manager_ExistingDisk extends Google_Model +{ + protected $attachmentType = 'Google_Service_Manager_DiskAttachment'; + protected $attachmentDataType = ''; + public $source; + + public function setAttachment(Google_Service_Manager_DiskAttachment $attachment) + { + $this->attachment = $attachment; + } + + public function getAttachment() + { + return $this->attachment; + } + + public function setSource($source) + { + $this->source = $source; + } + + public function getSource() + { + return $this->source; + } +} + +class Google_Service_Manager_FirewallModule extends Google_Collection +{ + protected $allowedType = 'Google_Service_Manager_AllowedRule'; + protected $allowedDataType = 'array'; + public $description; + public $network; + public $sourceRanges; + public $sourceTags; + public $targetTags; + + public function setAllowed($allowed) + { + $this->allowed = $allowed; + } + + public function getAllowed() + { + return $this->allowed; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setNetwork($network) + { + $this->network = $network; + } + + public function getNetwork() + { + return $this->network; + } + + public function setSourceRanges($sourceRanges) + { + $this->sourceRanges = $sourceRanges; + } + + public function getSourceRanges() + { + return $this->sourceRanges; + } + + public function setSourceTags($sourceTags) + { + $this->sourceTags = $sourceTags; + } + + public function getSourceTags() + { + return $this->sourceTags; + } + + public function setTargetTags($targetTags) + { + $this->targetTags = $targetTags; + } + + public function getTargetTags() + { + return $this->targetTags; + } +} + +class Google_Service_Manager_FirewallModuleStatus extends Google_Model +{ + public $firewallUrl; + + public function setFirewallUrl($firewallUrl) + { + $this->firewallUrl = $firewallUrl; + } + + public function getFirewallUrl() + { + return $this->firewallUrl; + } +} + +class Google_Service_Manager_HealthCheckModule extends Google_Model +{ + public $checkIntervalSec; + public $description; + public $healthyThreshold; + public $host; + public $path; + public $port; + public $timeoutSec; + public $unhealthyThreshold; + + public function setCheckIntervalSec($checkIntervalSec) + { + $this->checkIntervalSec = $checkIntervalSec; + } + + public function getCheckIntervalSec() + { + return $this->checkIntervalSec; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setHealthyThreshold($healthyThreshold) + { + $this->healthyThreshold = $healthyThreshold; + } + + public function getHealthyThreshold() + { + return $this->healthyThreshold; + } + + public function setHost($host) + { + $this->host = $host; + } + + public function getHost() + { + return $this->host; + } + + public function setPath($path) + { + $this->path = $path; + } + + public function getPath() + { + return $this->path; + } + + public function setPort($port) + { + $this->port = $port; + } + + public function getPort() + { + return $this->port; + } + + public function setTimeoutSec($timeoutSec) + { + $this->timeoutSec = $timeoutSec; + } + + public function getTimeoutSec() + { + return $this->timeoutSec; + } + + public function setUnhealthyThreshold($unhealthyThreshold) + { + $this->unhealthyThreshold = $unhealthyThreshold; + } + + public function getUnhealthyThreshold() + { + return $this->unhealthyThreshold; + } +} + +class Google_Service_Manager_HealthCheckModuleStatus extends Google_Model +{ + public $healthCheckUrl; + + public function setHealthCheckUrl($healthCheckUrl) + { + $this->healthCheckUrl = $healthCheckUrl; + } + + public function getHealthCheckUrl() + { + return $this->healthCheckUrl; + } +} + +class Google_Service_Manager_LbModule extends Google_Collection +{ + public $description; + public $healthChecks; + public $ipAddress; + public $ipProtocol; + public $portRange; + public $targetModules; + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setHealthChecks($healthChecks) + { + $this->healthChecks = $healthChecks; + } + + public function getHealthChecks() + { + return $this->healthChecks; + } + + public function setIpAddress($ipAddress) + { + $this->ipAddress = $ipAddress; + } + + public function getIpAddress() + { + return $this->ipAddress; + } + + public function setIpProtocol($ipProtocol) + { + $this->ipProtocol = $ipProtocol; + } + + public function getIpProtocol() + { + return $this->ipProtocol; + } + + public function setPortRange($portRange) + { + $this->portRange = $portRange; + } + + public function getPortRange() + { + return $this->portRange; + } + + public function setTargetModules($targetModules) + { + $this->targetModules = $targetModules; + } + + public function getTargetModules() + { + return $this->targetModules; + } +} + +class Google_Service_Manager_LbModuleStatus extends Google_Model +{ + public $forwardingRuleUrl; + public $targetPoolUrl; + + public function setForwardingRuleUrl($forwardingRuleUrl) + { + $this->forwardingRuleUrl = $forwardingRuleUrl; + } + + public function getForwardingRuleUrl() + { + return $this->forwardingRuleUrl; + } + + public function setTargetPoolUrl($targetPoolUrl) + { + $this->targetPoolUrl = $targetPoolUrl; + } + + public function getTargetPoolUrl() + { + return $this->targetPoolUrl; + } +} + +class Google_Service_Manager_Metadata extends Google_Collection +{ + public $fingerPrint; + protected $itemsType = 'Google_Service_Manager_MetadataItem'; + protected $itemsDataType = 'array'; + + public function setFingerPrint($fingerPrint) + { + $this->fingerPrint = $fingerPrint; + } + + public function getFingerPrint() + { + return $this->fingerPrint; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } +} + +class Google_Service_Manager_MetadataItem extends Google_Model +{ + public $key; + public $value; + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Manager_Module extends Google_Model +{ + protected $autoscalingModuleType = 'Google_Service_Manager_AutoscalingModule'; + protected $autoscalingModuleDataType = ''; + protected $firewallModuleType = 'Google_Service_Manager_FirewallModule'; + protected $firewallModuleDataType = ''; + protected $healthCheckModuleType = 'Google_Service_Manager_HealthCheckModule'; + protected $healthCheckModuleDataType = ''; + protected $lbModuleType = 'Google_Service_Manager_LbModule'; + protected $lbModuleDataType = ''; + protected $networkModuleType = 'Google_Service_Manager_NetworkModule'; + protected $networkModuleDataType = ''; + protected $replicaPoolModuleType = 'Google_Service_Manager_ReplicaPoolModule'; + protected $replicaPoolModuleDataType = ''; + public $type; + + public function setAutoscalingModule(Google_Service_Manager_AutoscalingModule $autoscalingModule) + { + $this->autoscalingModule = $autoscalingModule; + } + + public function getAutoscalingModule() + { + return $this->autoscalingModule; + } + + public function setFirewallModule(Google_Service_Manager_FirewallModule $firewallModule) + { + $this->firewallModule = $firewallModule; + } + + public function getFirewallModule() + { + return $this->firewallModule; + } + + public function setHealthCheckModule(Google_Service_Manager_HealthCheckModule $healthCheckModule) + { + $this->healthCheckModule = $healthCheckModule; + } + + public function getHealthCheckModule() + { + return $this->healthCheckModule; + } + + public function setLbModule(Google_Service_Manager_LbModule $lbModule) + { + $this->lbModule = $lbModule; + } + + public function getLbModule() + { + return $this->lbModule; + } + + public function setNetworkModule(Google_Service_Manager_NetworkModule $networkModule) + { + $this->networkModule = $networkModule; + } + + public function getNetworkModule() + { + return $this->networkModule; + } + + public function setReplicaPoolModule(Google_Service_Manager_ReplicaPoolModule $replicaPoolModule) + { + $this->replicaPoolModule = $replicaPoolModule; + } + + public function getReplicaPoolModule() + { + return $this->replicaPoolModule; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Manager_ModuleStatus extends Google_Model +{ + protected $autoscalingModuleStatusType = 'Google_Service_Manager_AutoscalingModuleStatus'; + protected $autoscalingModuleStatusDataType = ''; + protected $firewallModuleStatusType = 'Google_Service_Manager_FirewallModuleStatus'; + protected $firewallModuleStatusDataType = ''; + protected $healthCheckModuleStatusType = 'Google_Service_Manager_HealthCheckModuleStatus'; + protected $healthCheckModuleStatusDataType = ''; + protected $lbModuleStatusType = 'Google_Service_Manager_LbModuleStatus'; + protected $lbModuleStatusDataType = ''; + protected $networkModuleStatusType = 'Google_Service_Manager_NetworkModuleStatus'; + protected $networkModuleStatusDataType = ''; + protected $replicaPoolModuleStatusType = 'Google_Service_Manager_ReplicaPoolModuleStatus'; + protected $replicaPoolModuleStatusDataType = ''; + protected $stateType = 'Google_Service_Manager_DeployState'; + protected $stateDataType = ''; + public $type; + + public function setAutoscalingModuleStatus(Google_Service_Manager_AutoscalingModuleStatus $autoscalingModuleStatus) + { + $this->autoscalingModuleStatus = $autoscalingModuleStatus; + } + + public function getAutoscalingModuleStatus() + { + return $this->autoscalingModuleStatus; + } + + public function setFirewallModuleStatus(Google_Service_Manager_FirewallModuleStatus $firewallModuleStatus) + { + $this->firewallModuleStatus = $firewallModuleStatus; + } + + public function getFirewallModuleStatus() + { + return $this->firewallModuleStatus; + } + + public function setHealthCheckModuleStatus(Google_Service_Manager_HealthCheckModuleStatus $healthCheckModuleStatus) + { + $this->healthCheckModuleStatus = $healthCheckModuleStatus; + } + + public function getHealthCheckModuleStatus() + { + return $this->healthCheckModuleStatus; + } + + public function setLbModuleStatus(Google_Service_Manager_LbModuleStatus $lbModuleStatus) + { + $this->lbModuleStatus = $lbModuleStatus; + } + + public function getLbModuleStatus() + { + return $this->lbModuleStatus; + } + + public function setNetworkModuleStatus(Google_Service_Manager_NetworkModuleStatus $networkModuleStatus) + { + $this->networkModuleStatus = $networkModuleStatus; + } + + public function getNetworkModuleStatus() + { + return $this->networkModuleStatus; + } + + public function setReplicaPoolModuleStatus(Google_Service_Manager_ReplicaPoolModuleStatus $replicaPoolModuleStatus) + { + $this->replicaPoolModuleStatus = $replicaPoolModuleStatus; + } + + public function getReplicaPoolModuleStatus() + { + return $this->replicaPoolModuleStatus; + } + + public function setState(Google_Service_Manager_DeployState $state) + { + $this->state = $state; + } + + public function getState() + { + return $this->state; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Manager_NetworkInterface extends Google_Collection +{ + protected $accessConfigsType = 'Google_Service_Manager_AccessConfig'; + protected $accessConfigsDataType = 'array'; + public $name; + public $network; + public $networkIp; + + public function setAccessConfigs($accessConfigs) + { + $this->accessConfigs = $accessConfigs; + } + + public function getAccessConfigs() + { + return $this->accessConfigs; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNetwork($network) + { + $this->network = $network; + } + + public function getNetwork() + { + return $this->network; + } + + public function setNetworkIp($networkIp) + { + $this->networkIp = $networkIp; + } + + public function getNetworkIp() + { + return $this->networkIp; + } +} + +class Google_Service_Manager_NetworkModule extends Google_Model +{ + public $iPv4Range; + public $description; + public $gatewayIPv4; + + public function setIPv4Range($iPv4Range) + { + $this->iPv4Range = $iPv4Range; + } + + public function getIPv4Range() + { + return $this->iPv4Range; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setGatewayIPv4($gatewayIPv4) + { + $this->gatewayIPv4 = $gatewayIPv4; + } + + public function getGatewayIPv4() + { + return $this->gatewayIPv4; + } +} + +class Google_Service_Manager_NetworkModuleStatus extends Google_Model +{ + public $networkUrl; + + public function setNetworkUrl($networkUrl) + { + $this->networkUrl = $networkUrl; + } + + public function getNetworkUrl() + { + return $this->networkUrl; + } +} + +class Google_Service_Manager_NewDisk extends Google_Model +{ + protected $attachmentType = 'Google_Service_Manager_DiskAttachment'; + protected $attachmentDataType = ''; + public $autoDelete; + public $boot; + protected $initializeParamsType = 'Google_Service_Manager_NewDiskInitializeParams'; + protected $initializeParamsDataType = ''; + + public function setAttachment(Google_Service_Manager_DiskAttachment $attachment) + { + $this->attachment = $attachment; + } + + public function getAttachment() + { + return $this->attachment; + } + + public function setAutoDelete($autoDelete) + { + $this->autoDelete = $autoDelete; + } + + public function getAutoDelete() + { + return $this->autoDelete; + } + + public function setBoot($boot) + { + $this->boot = $boot; + } + + public function getBoot() + { + return $this->boot; + } + + public function setInitializeParams(Google_Service_Manager_NewDiskInitializeParams $initializeParams) + { + $this->initializeParams = $initializeParams; + } + + public function getInitializeParams() + { + return $this->initializeParams; + } +} + +class Google_Service_Manager_NewDiskInitializeParams extends Google_Model +{ + public $diskSizeGb; + public $sourceImage; + + public function setDiskSizeGb($diskSizeGb) + { + $this->diskSizeGb = $diskSizeGb; + } + + public function getDiskSizeGb() + { + return $this->diskSizeGb; + } + + public function setSourceImage($sourceImage) + { + $this->sourceImage = $sourceImage; + } + + public function getSourceImage() + { + return $this->sourceImage; + } +} + +class Google_Service_Manager_ParamOverride extends Google_Model +{ + public $path; + public $value; + + public function setPath($path) + { + $this->path = $path; + } + + public function getPath() + { + return $this->path; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Manager_ReplicaPoolModule extends Google_Collection +{ + protected $envVariablesType = 'Google_Service_Manager_EnvVariable'; + protected $envVariablesDataType = 'map'; + public $healthChecks; + public $numReplicas; + protected $replicaPoolParamsType = 'Google_Service_Manager_ReplicaPoolParams'; + protected $replicaPoolParamsDataType = ''; + public $resourceView; + + public function setEnvVariables($envVariables) + { + $this->envVariables = $envVariables; + } + + public function getEnvVariables() + { + return $this->envVariables; + } + + public function setHealthChecks($healthChecks) + { + $this->healthChecks = $healthChecks; + } + + public function getHealthChecks() + { + return $this->healthChecks; + } + + public function setNumReplicas($numReplicas) + { + $this->numReplicas = $numReplicas; + } + + public function getNumReplicas() + { + return $this->numReplicas; + } + + public function setReplicaPoolParams(Google_Service_Manager_ReplicaPoolParams $replicaPoolParams) + { + $this->replicaPoolParams = $replicaPoolParams; + } + + public function getReplicaPoolParams() + { + return $this->replicaPoolParams; + } + + public function setResourceView($resourceView) + { + $this->resourceView = $resourceView; + } + + public function getResourceView() + { + return $this->resourceView; + } +} + +class Google_Service_Manager_ReplicaPoolModuleEnvVariables extends Google_Model +{ + +} + +class Google_Service_Manager_ReplicaPoolModuleStatus extends Google_Model +{ + public $replicaPoolUrl; + public $resourceViewUrl; + + public function setReplicaPoolUrl($replicaPoolUrl) + { + $this->replicaPoolUrl = $replicaPoolUrl; + } + + public function getReplicaPoolUrl() + { + return $this->replicaPoolUrl; + } + + public function setResourceViewUrl($resourceViewUrl) + { + $this->resourceViewUrl = $resourceViewUrl; + } + + public function getResourceViewUrl() + { + return $this->resourceViewUrl; + } +} + +class Google_Service_Manager_ReplicaPoolParams extends Google_Model +{ + protected $v1beta1Type = 'Google_Service_Manager_ReplicaPoolParamsV1Beta1'; + protected $v1beta1DataType = ''; + + public function setV1beta1(Google_Service_Manager_ReplicaPoolParamsV1Beta1 $v1beta1) + { + $this->v1beta1 = $v1beta1; + } + + public function getV1beta1() + { + return $this->v1beta1; + } +} + +class Google_Service_Manager_ReplicaPoolParamsV1Beta1 extends Google_Collection +{ + public $autoRestart; + public $baseInstanceName; + public $canIpForward; + public $description; + protected $disksToAttachType = 'Google_Service_Manager_ExistingDisk'; + protected $disksToAttachDataType = 'array'; + protected $disksToCreateType = 'Google_Service_Manager_NewDisk'; + protected $disksToCreateDataType = 'array'; + public $initAction; + public $machineType; + protected $metadataType = 'Google_Service_Manager_Metadata'; + protected $metadataDataType = ''; + protected $networkInterfacesType = 'Google_Service_Manager_NetworkInterface'; + protected $networkInterfacesDataType = 'array'; + public $onHostMaintenance; + protected $serviceAccountsType = 'Google_Service_Manager_ServiceAccount'; + protected $serviceAccountsDataType = 'array'; + protected $tagsType = 'Google_Service_Manager_Tag'; + protected $tagsDataType = ''; + public $zone; + + public function setAutoRestart($autoRestart) + { + $this->autoRestart = $autoRestart; + } + + public function getAutoRestart() + { + return $this->autoRestart; + } + + public function setBaseInstanceName($baseInstanceName) + { + $this->baseInstanceName = $baseInstanceName; + } + + public function getBaseInstanceName() + { + return $this->baseInstanceName; + } + + public function setCanIpForward($canIpForward) + { + $this->canIpForward = $canIpForward; + } + + public function getCanIpForward() + { + return $this->canIpForward; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDisksToAttach($disksToAttach) + { + $this->disksToAttach = $disksToAttach; + } + + public function getDisksToAttach() + { + return $this->disksToAttach; + } + + public function setDisksToCreate($disksToCreate) + { + $this->disksToCreate = $disksToCreate; + } + + public function getDisksToCreate() + { + return $this->disksToCreate; + } + + public function setInitAction($initAction) + { + $this->initAction = $initAction; + } + + public function getInitAction() + { + return $this->initAction; + } + + public function setMachineType($machineType) + { + $this->machineType = $machineType; + } + + public function getMachineType() + { + return $this->machineType; + } + + public function setMetadata(Google_Service_Manager_Metadata $metadata) + { + $this->metadata = $metadata; + } + + public function getMetadata() + { + return $this->metadata; + } + + public function setNetworkInterfaces($networkInterfaces) + { + $this->networkInterfaces = $networkInterfaces; + } + + public function getNetworkInterfaces() + { + return $this->networkInterfaces; + } + + public function setOnHostMaintenance($onHostMaintenance) + { + $this->onHostMaintenance = $onHostMaintenance; + } + + public function getOnHostMaintenance() + { + return $this->onHostMaintenance; + } + + public function setServiceAccounts($serviceAccounts) + { + $this->serviceAccounts = $serviceAccounts; + } + + public function getServiceAccounts() + { + return $this->serviceAccounts; + } + + public function setTags(Google_Service_Manager_Tag $tags) + { + $this->tags = $tags; + } + + public function getTags() + { + return $this->tags; + } + + public function setZone($zone) + { + $this->zone = $zone; + } + + public function getZone() + { + return $this->zone; + } +} + +class Google_Service_Manager_ServiceAccount extends Google_Collection +{ + public $email; + public $scopes; + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setScopes($scopes) + { + $this->scopes = $scopes; + } + + public function getScopes() + { + return $this->scopes; + } +} + +class Google_Service_Manager_Tag extends Google_Collection +{ + public $fingerPrint; + public $items; + + public function setFingerPrint($fingerPrint) + { + $this->fingerPrint = $fingerPrint; + } + + public function getFingerPrint() + { + return $this->fingerPrint; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } +} + +class Google_Service_Manager_Template extends Google_Model +{ + protected $actionsType = 'Google_Service_Manager_Action'; + protected $actionsDataType = 'map'; + public $description; + protected $modulesType = 'Google_Service_Manager_Module'; + protected $modulesDataType = 'map'; + public $name; + + public function setActions($actions) + { + $this->actions = $actions; + } + + public function getActions() + { + return $this->actions; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setModules($modules) + { + $this->modules = $modules; + } + + public function getModules() + { + return $this->modules; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_Manager_TemplateActions extends Google_Model +{ + +} + +class Google_Service_Manager_TemplateModules extends Google_Model +{ + +} + +class Google_Service_Manager_TemplatesListResponse extends Google_Collection +{ + public $nextPageToken; + protected $resourcesType = 'Google_Service_Manager_Template'; + protected $resourcesDataType = 'array'; + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setResources($resources) + { + $this->resources = $resources; + } + + public function getResources() + { + return $this->resources; + } +} diff --git a/oauth/Google/Service/MapsEngine.php b/oauth/Google/Service/MapsEngine.php new file mode 100644 index 0000000..3e57bb4 --- /dev/null +++ b/oauth/Google/Service/MapsEngine.php @@ -0,0 +1,4772 @@ + + * The Google Maps Engine API allows developers to store and query geospatial vector and raster data. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_MapsEngine extends Google_Service +{ + /** View and manage your Google Maps Engine data. */ + const MAPSENGINE = "https://www.googleapis.com/auth/mapsengine"; + /** View your Google Maps Engine data. */ + const MAPSENGINE_READONLY = "https://www.googleapis.com/auth/mapsengine.readonly"; + + public $assets; + public $assets_parents; + public $layers; + public $layers_parents; + public $maps; + public $projects; + public $rasterCollections; + public $rasterCollections_parents; + public $rasterCollections_rasters; + public $rasters; + public $rasters_files; + public $rasters_parents; + public $tables; + public $tables_features; + public $tables_files; + public $tables_parents; + + + /** + * Constructs the internal representation of the MapsEngine service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'mapsengine/v1/'; + $this->version = 'v1'; + $this->serviceName = 'mapsengine'; + + $this->assets = new Google_Service_MapsEngine_Assets_Resource( + $this, + $this->serviceName, + 'assets', + array( + 'methods' => array( + 'get' => array( + 'path' => 'assets/{id}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'assets', + 'httpMethod' => 'GET', + 'parameters' => array( + 'modifiedAfter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'createdAfter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'tags' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projectId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'creatorEmail' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'bbox' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'modifiedBefore' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'createdBefore' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'type' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->assets_parents = new Google_Service_MapsEngine_AssetsParents_Resource( + $this, + $this->serviceName, + 'parents', + array( + 'methods' => array( + 'list' => array( + 'path' => 'assets/{id}/parents', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->layers = new Google_Service_MapsEngine_Layers_Resource( + $this, + $this->serviceName, + 'layers', + array( + 'methods' => array( + 'cancelProcessing' => array( + 'path' => 'layers/{id}/cancelProcessing', + 'httpMethod' => 'POST', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'create' => array( + 'path' => 'layers', + 'httpMethod' => 'POST', + 'parameters' => array( + 'process' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'delete' => array( + 'path' => 'layers/{id}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'layers/{id}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'version' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'layers', + 'httpMethod' => 'GET', + 'parameters' => array( + 'modifiedAfter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'createdAfter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'tags' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projectId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'creatorEmail' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'bbox' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'modifiedBefore' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'createdBefore' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'layers/{id}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'process' => array( + 'path' => 'layers/{id}/process', + 'httpMethod' => 'POST', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'publish' => array( + 'path' => 'layers/{id}/publish', + 'httpMethod' => 'POST', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'unpublish' => array( + 'path' => 'layers/{id}/unpublish', + 'httpMethod' => 'POST', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->layers_parents = new Google_Service_MapsEngine_LayersParents_Resource( + $this, + $this->serviceName, + 'parents', + array( + 'methods' => array( + 'list' => array( + 'path' => 'layers/{id}/parents', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->maps = new Google_Service_MapsEngine_Maps_Resource( + $this, + $this->serviceName, + 'maps', + array( + 'methods' => array( + 'create' => array( + 'path' => 'maps', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'delete' => array( + 'path' => 'maps/{id}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'maps/{id}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'version' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'maps', + 'httpMethod' => 'GET', + 'parameters' => array( + 'modifiedAfter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'createdAfter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'tags' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projectId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'creatorEmail' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'bbox' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'modifiedBefore' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'createdBefore' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'maps/{id}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'publish' => array( + 'path' => 'maps/{id}/publish', + 'httpMethod' => 'POST', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'unpublish' => array( + 'path' => 'maps/{id}/unpublish', + 'httpMethod' => 'POST', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->projects = new Google_Service_MapsEngine_Projects_Resource( + $this, + $this->serviceName, + 'projects', + array( + 'methods' => array( + 'list' => array( + 'path' => 'projects', + 'httpMethod' => 'GET', + 'parameters' => array(), + ), + ) + ) + ); + $this->rasterCollections = new Google_Service_MapsEngine_RasterCollections_Resource( + $this, + $this->serviceName, + 'rasterCollections', + array( + 'methods' => array( + 'cancelProcessing' => array( + 'path' => 'rasterCollections/{id}/cancelProcessing', + 'httpMethod' => 'POST', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'create' => array( + 'path' => 'rasterCollections', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'delete' => array( + 'path' => 'rasterCollections/{id}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'rasterCollections/{id}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'rasterCollections', + 'httpMethod' => 'GET', + 'parameters' => array( + 'modifiedAfter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'createdAfter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'tags' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projectId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'creatorEmail' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'bbox' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'modifiedBefore' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'createdBefore' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'rasterCollections/{id}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'process' => array( + 'path' => 'rasterCollections/{id}/process', + 'httpMethod' => 'POST', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->rasterCollections_parents = new Google_Service_MapsEngine_RasterCollectionsParents_Resource( + $this, + $this->serviceName, + 'parents', + array( + 'methods' => array( + 'list' => array( + 'path' => 'rasterCollections/{id}/parents', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->rasterCollections_rasters = new Google_Service_MapsEngine_RasterCollectionsRasters_Resource( + $this, + $this->serviceName, + 'rasters', + array( + 'methods' => array( + 'batchDelete' => array( + 'path' => 'rasterCollections/{id}/rasters/batchDelete', + 'httpMethod' => 'POST', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'batchInsert' => array( + 'path' => 'rasterCollections/{id}/rasters/batchInsert', + 'httpMethod' => 'POST', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'rasterCollections/{id}/rasters', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'modifiedAfter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'createdAfter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'tags' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'creatorEmail' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'bbox' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'modifiedBefore' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'createdBefore' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->rasters = new Google_Service_MapsEngine_Rasters_Resource( + $this, + $this->serviceName, + 'rasters', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'rasters/{id}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'rasters/{id}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => 'rasters/{id}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'upload' => array( + 'path' => 'rasters/upload', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->rasters_files = new Google_Service_MapsEngine_RastersFiles_Resource( + $this, + $this->serviceName, + 'files', + array( + 'methods' => array( + 'insert' => array( + 'path' => 'rasters/{id}/files', + 'httpMethod' => 'POST', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filename' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->rasters_parents = new Google_Service_MapsEngine_RastersParents_Resource( + $this, + $this->serviceName, + 'parents', + array( + 'methods' => array( + 'list' => array( + 'path' => 'rasters/{id}/parents', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->tables = new Google_Service_MapsEngine_Tables_Resource( + $this, + $this->serviceName, + 'tables', + array( + 'methods' => array( + 'create' => array( + 'path' => 'tables', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'delete' => array( + 'path' => 'tables/{id}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'tables/{id}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'version' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'tables', + 'httpMethod' => 'GET', + 'parameters' => array( + 'modifiedAfter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'createdAfter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'tags' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projectId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'creatorEmail' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'bbox' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'modifiedBefore' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'createdBefore' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'tables/{id}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'upload' => array( + 'path' => 'tables/upload', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->tables_features = new Google_Service_MapsEngine_TablesFeatures_Resource( + $this, + $this->serviceName, + 'features', + array( + 'methods' => array( + 'batchDelete' => array( + 'path' => 'tables/{id}/features/batchDelete', + 'httpMethod' => 'POST', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'batchInsert' => array( + 'path' => 'tables/{id}/features/batchInsert', + 'httpMethod' => 'POST', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'batchPatch' => array( + 'path' => 'tables/{id}/features/batchPatch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'tables/{tableId}/features/{id}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'tableId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'version' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'select' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'tables/{id}/features', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'intersects' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'version' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'limit' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'include' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'where' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'select' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->tables_files = new Google_Service_MapsEngine_TablesFiles_Resource( + $this, + $this->serviceName, + 'files', + array( + 'methods' => array( + 'insert' => array( + 'path' => 'tables/{id}/files', + 'httpMethod' => 'POST', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'filename' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->tables_parents = new Google_Service_MapsEngine_TablesParents_Resource( + $this, + $this->serviceName, + 'parents', + array( + 'methods' => array( + 'list' => array( + 'path' => 'tables/{id}/parents', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "assets" collection of methods. + * Typical usage is: + * + * $mapsengineService = new Google_Service_MapsEngine(...); + * $assets = $mapsengineService->assets; + * + */ +class Google_Service_MapsEngine_Assets_Resource extends Google_Service_Resource +{ + + /** + * Return metadata for a particular asset. (assets.get) + * + * @param string $id + * The ID of the asset. + * @param array $optParams Optional parameters. + * @return Google_Service_MapsEngine_Asset + */ + public function get($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_MapsEngine_Asset"); + } + /** + * Return all assets readable by the current user. (assets.listAssets) + * + * @param array $optParams Optional parameters. + * + * @opt_param string modifiedAfter + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been modified at or after this time. + * @opt_param string createdAfter + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been created at or after this time. + * @opt_param string tags + * A comma separated list of tags. Returned assets will contain all the tags from the list. + * @opt_param string projectId + * The ID of a Maps Engine project, used to filter the response. To list all available projects + * with their IDs, send a Projects: list request. You can also find your project ID as the value of + * the DashboardPlace:cid URL parameter when signed in to mapsengine.google.com. + * @opt_param string maxResults + * The maximum number of items to include in a single response page. The maximum supported value is + * 100. + * @opt_param string pageToken + * The continuation token, used to page through large result sets. To get the next page of results, + * set this parameter to the value of nextPageToken from the previous response. + * @opt_param string creatorEmail + * An email address representing a user. Returned assets that have been created by the user + * associated with the provided email address. + * @opt_param string bbox + * A bounding box, expressed as "west,south,east,north". If set, only assets which intersect this + * bounding box will be returned. + * @opt_param string modifiedBefore + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been modified at or before this time. + * @opt_param string createdBefore + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been created at or before this time. + * @opt_param string type + * An asset type restriction. If set, only resources of this type will be returned. + * @return Google_Service_MapsEngine_AssetsListResponse + */ + public function listAssets($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_MapsEngine_AssetsListResponse"); + } +} + +/** + * The "parents" collection of methods. + * Typical usage is: + * + * $mapsengineService = new Google_Service_MapsEngine(...); + * $parents = $mapsengineService->parents; + * + */ +class Google_Service_MapsEngine_AssetsParents_Resource extends Google_Service_Resource +{ + + /** + * Return all parent ids of the specified asset. (parents.listAssetsParents) + * + * @param string $id + * The ID of the asset whose parents will be listed. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The continuation token, used to page through large result sets. To get the next page of results, + * set this parameter to the value of nextPageToken from the previous response. + * @opt_param string maxResults + * The maximum number of items to include in a single response page. The maximum supported value is + * 50. + * @return Google_Service_MapsEngine_ParentsListResponse + */ + public function listAssetsParents($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_MapsEngine_ParentsListResponse"); + } +} + +/** + * The "layers" collection of methods. + * Typical usage is: + * + * $mapsengineService = new Google_Service_MapsEngine(...); + * $layers = $mapsengineService->layers; + * + */ +class Google_Service_MapsEngine_Layers_Resource extends Google_Service_Resource +{ + + /** + * Cancel processing on a layer asset. (layers.cancelProcessing) + * + * @param string $id + * The ID of the layer. + * @param array $optParams Optional parameters. + * @return Google_Service_MapsEngine_ProcessResponse + */ + public function cancelProcessing($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('cancelProcessing', array($params), "Google_Service_MapsEngine_ProcessResponse"); + } + /** + * Create a layer asset. (layers.create) + * + * @param Google_Layer $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool process + * Whether to queue the created layer for processing. + * @return Google_Service_MapsEngine_Layer + */ + public function create(Google_Service_MapsEngine_Layer $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_MapsEngine_Layer"); + } + /** + * Delete a layer. (layers.delete) + * + * @param string $id + * The ID of the layer. Only the layer creator or project owner are permitted to delete. If the + * layer is published, or included in a map, the request will fail. Unpublish the layer, and remove + * it from all maps prior to deleting. + * @param array $optParams Optional parameters. + */ + public function delete($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Return metadata for a particular layer. (layers.get) + * + * @param string $id + * The ID of the layer. + * @param array $optParams Optional parameters. + * + * @opt_param string version + * + * @return Google_Service_MapsEngine_Layer + */ + public function get($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_MapsEngine_Layer"); + } + /** + * Return all layers readable by the current user. (layers.listLayers) + * + * @param array $optParams Optional parameters. + * + * @opt_param string modifiedAfter + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been modified at or after this time. + * @opt_param string createdAfter + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been created at or after this time. + * @opt_param string tags + * A comma separated list of tags. Returned assets will contain all the tags from the list. + * @opt_param string projectId + * The ID of a Maps Engine project, used to filter the response. To list all available projects + * with their IDs, send a Projects: list request. You can also find your project ID as the value of + * the DashboardPlace:cid URL parameter when signed in to mapsengine.google.com. + * @opt_param string maxResults + * The maximum number of items to include in a single response page. The maximum supported value is + * 100. + * @opt_param string pageToken + * The continuation token, used to page through large result sets. To get the next page of results, + * set this parameter to the value of nextPageToken from the previous response. + * @opt_param string creatorEmail + * An email address representing a user. Returned assets that have been created by the user + * associated with the provided email address. + * @opt_param string bbox + * A bounding box, expressed as "west,south,east,north". If set, only assets which intersect this + * bounding box will be returned. + * @opt_param string modifiedBefore + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been modified at or before this time. + * @opt_param string createdBefore + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been created at or before this time. + * @return Google_Service_MapsEngine_LayersListResponse + */ + public function listLayers($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_MapsEngine_LayersListResponse"); + } + /** + * Mutate a layer asset. (layers.patch) + * + * @param string $id + * The ID of the layer. + * @param Google_Layer $postBody + * @param array $optParams Optional parameters. + */ + public function patch($id, Google_Service_MapsEngine_Layer $postBody, $optParams = array()) + { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params)); + } + /** + * Process a layer asset. (layers.process) + * + * @param string $id + * The ID of the layer. + * @param array $optParams Optional parameters. + * @return Google_Service_MapsEngine_ProcessResponse + */ + public function process($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('process', array($params), "Google_Service_MapsEngine_ProcessResponse"); + } + /** + * Publish a layer asset. (layers.publish) + * + * @param string $id + * The ID of the layer. + * @param array $optParams Optional parameters. + * @return Google_Service_MapsEngine_PublishResponse + */ + public function publish($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('publish', array($params), "Google_Service_MapsEngine_PublishResponse"); + } + /** + * Unpublish a layer asset. (layers.unpublish) + * + * @param string $id + * The ID of the layer. + * @param array $optParams Optional parameters. + * @return Google_Service_MapsEngine_PublishResponse + */ + public function unpublish($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('unpublish', array($params), "Google_Service_MapsEngine_PublishResponse"); + } +} + +/** + * The "parents" collection of methods. + * Typical usage is: + * + * $mapsengineService = new Google_Service_MapsEngine(...); + * $parents = $mapsengineService->parents; + * + */ +class Google_Service_MapsEngine_LayersParents_Resource extends Google_Service_Resource +{ + + /** + * Return all parent ids of the specified layer. (parents.listLayersParents) + * + * @param string $id + * The ID of the layer whose parents will be listed. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The continuation token, used to page through large result sets. To get the next page of results, + * set this parameter to the value of nextPageToken from the previous response. + * @opt_param string maxResults + * The maximum number of items to include in a single response page. The maximum supported value is + * 50. + * @return Google_Service_MapsEngine_ParentsListResponse + */ + public function listLayersParents($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_MapsEngine_ParentsListResponse"); + } +} + +/** + * The "maps" collection of methods. + * Typical usage is: + * + * $mapsengineService = new Google_Service_MapsEngine(...); + * $maps = $mapsengineService->maps; + * + */ +class Google_Service_MapsEngine_Maps_Resource extends Google_Service_Resource +{ + + /** + * Create a map asset. (maps.create) + * + * @param Google_Map $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_MapsEngine_Map + */ + public function create(Google_Service_MapsEngine_Map $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_MapsEngine_Map"); + } + /** + * Delete a map. (maps.delete) + * + * @param string $id + * The ID of the map. Only the map creator or project owner are permitted to delete. If the map is + * published the request will fail. Unpublish the map prior to deleting. + * @param array $optParams Optional parameters. + */ + public function delete($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Return metadata for a particular map. (maps.get) + * + * @param string $id + * The ID of the map. + * @param array $optParams Optional parameters. + * + * @opt_param string version + * + * @return Google_Service_MapsEngine_Map + */ + public function get($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_MapsEngine_Map"); + } + /** + * Return all maps readable by the current user. (maps.listMaps) + * + * @param array $optParams Optional parameters. + * + * @opt_param string modifiedAfter + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been modified at or after this time. + * @opt_param string createdAfter + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been created at or after this time. + * @opt_param string tags + * A comma separated list of tags. Returned assets will contain all the tags from the list. + * @opt_param string projectId + * The ID of a Maps Engine project, used to filter the response. To list all available projects + * with their IDs, send a Projects: list request. You can also find your project ID as the value of + * the DashboardPlace:cid URL parameter when signed in to mapsengine.google.com. + * @opt_param string maxResults + * The maximum number of items to include in a single response page. The maximum supported value is + * 100. + * @opt_param string pageToken + * The continuation token, used to page through large result sets. To get the next page of results, + * set this parameter to the value of nextPageToken from the previous response. + * @opt_param string creatorEmail + * An email address representing a user. Returned assets that have been created by the user + * associated with the provided email address. + * @opt_param string bbox + * A bounding box, expressed as "west,south,east,north". If set, only assets which intersect this + * bounding box will be returned. + * @opt_param string modifiedBefore + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been modified at or before this time. + * @opt_param string createdBefore + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been created at or before this time. + * @return Google_Service_MapsEngine_MapsListResponse + */ + public function listMaps($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_MapsEngine_MapsListResponse"); + } + /** + * Mutate a map asset. (maps.patch) + * + * @param string $id + * The ID of the map. + * @param Google_Map $postBody + * @param array $optParams Optional parameters. + */ + public function patch($id, Google_Service_MapsEngine_Map $postBody, $optParams = array()) + { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params)); + } + /** + * Publish a map asset. (maps.publish) + * + * @param string $id + * The ID of the map. + * @param array $optParams Optional parameters. + * @return Google_Service_MapsEngine_PublishResponse + */ + public function publish($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('publish', array($params), "Google_Service_MapsEngine_PublishResponse"); + } + /** + * Unpublish a map asset. (maps.unpublish) + * + * @param string $id + * The ID of the map. + * @param array $optParams Optional parameters. + * @return Google_Service_MapsEngine_PublishResponse + */ + public function unpublish($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('unpublish', array($params), "Google_Service_MapsEngine_PublishResponse"); + } +} + +/** + * The "projects" collection of methods. + * Typical usage is: + * + * $mapsengineService = new Google_Service_MapsEngine(...); + * $projects = $mapsengineService->projects; + * + */ +class Google_Service_MapsEngine_Projects_Resource extends Google_Service_Resource +{ + + /** + * Return all projects readable by the current user. (projects.listProjects) + * + * @param array $optParams Optional parameters. + * @return Google_Service_MapsEngine_ProjectsListResponse + */ + public function listProjects($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_MapsEngine_ProjectsListResponse"); + } +} + +/** + * The "rasterCollections" collection of methods. + * Typical usage is: + * + * $mapsengineService = new Google_Service_MapsEngine(...); + * $rasterCollections = $mapsengineService->rasterCollections; + * + */ +class Google_Service_MapsEngine_RasterCollections_Resource extends Google_Service_Resource +{ + + /** + * Cancel processing on a raster collection asset. + * (rasterCollections.cancelProcessing) + * + * @param string $id + * The ID of the raster collection. + * @param array $optParams Optional parameters. + * @return Google_Service_MapsEngine_ProcessResponse + */ + public function cancelProcessing($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('cancelProcessing', array($params), "Google_Service_MapsEngine_ProcessResponse"); + } + /** + * Create a raster collection asset. (rasterCollections.create) + * + * @param Google_RasterCollection $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_MapsEngine_RasterCollection + */ + public function create(Google_Service_MapsEngine_RasterCollection $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_MapsEngine_RasterCollection"); + } + /** + * Delete a raster collection. (rasterCollections.delete) + * + * @param string $id + * The ID of the raster collection. Only the raster collection creator or project owner are + * permitted to delete. If the rastor collection is included in a layer, the request will fail. + * Remove the raster collection from all layers prior to deleting. + * @param array $optParams Optional parameters. + */ + public function delete($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Return metadata for a particular raster collection. (rasterCollections.get) + * + * @param string $id + * The ID of the raster collection. + * @param array $optParams Optional parameters. + * @return Google_Service_MapsEngine_RasterCollection + */ + public function get($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_MapsEngine_RasterCollection"); + } + /** + * Return all raster collections readable by the current user. + * (rasterCollections.listRasterCollections) + * + * @param array $optParams Optional parameters. + * + * @opt_param string modifiedAfter + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been modified at or after this time. + * @opt_param string createdAfter + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been created at or after this time. + * @opt_param string tags + * A comma separated list of tags. Returned assets will contain all the tags from the list. + * @opt_param string projectId + * The ID of a Maps Engine project, used to filter the response. To list all available projects + * with their IDs, send a Projects: list request. You can also find your project ID as the value of + * the DashboardPlace:cid URL parameter when signed in to mapsengine.google.com. + * @opt_param string maxResults + * The maximum number of items to include in a single response page. The maximum supported value is + * 100. + * @opt_param string pageToken + * The continuation token, used to page through large result sets. To get the next page of results, + * set this parameter to the value of nextPageToken from the previous response. + * @opt_param string creatorEmail + * An email address representing a user. Returned assets that have been created by the user + * associated with the provided email address. + * @opt_param string bbox + * A bounding box, expressed as "west,south,east,north". If set, only assets which intersect this + * bounding box will be returned. + * @opt_param string modifiedBefore + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been modified at or before this time. + * @opt_param string createdBefore + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been created at or before this time. + * @return Google_Service_MapsEngine_RasterCollectionsListResponse + */ + public function listRasterCollections($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_MapsEngine_RasterCollectionsListResponse"); + } + /** + * Mutate a raster collection asset. (rasterCollections.patch) + * + * @param string $id + * The ID of the raster collection. + * @param Google_RasterCollection $postBody + * @param array $optParams Optional parameters. + */ + public function patch($id, Google_Service_MapsEngine_RasterCollection $postBody, $optParams = array()) + { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params)); + } + /** + * Process a raster collection asset. (rasterCollections.process) + * + * @param string $id + * The ID of the raster collection. + * @param array $optParams Optional parameters. + * @return Google_Service_MapsEngine_ProcessResponse + */ + public function process($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('process', array($params), "Google_Service_MapsEngine_ProcessResponse"); + } +} + +/** + * The "parents" collection of methods. + * Typical usage is: + * + * $mapsengineService = new Google_Service_MapsEngine(...); + * $parents = $mapsengineService->parents; + * + */ +class Google_Service_MapsEngine_RasterCollectionsParents_Resource extends Google_Service_Resource +{ + + /** + * Return all parent ids of the specified raster collection. + * (parents.listRasterCollectionsParents) + * + * @param string $id + * The ID of the raster collection whose parents will be listed. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The continuation token, used to page through large result sets. To get the next page of results, + * set this parameter to the value of nextPageToken from the previous response. + * @opt_param string maxResults + * The maximum number of items to include in a single response page. The maximum supported value is + * 50. + * @return Google_Service_MapsEngine_ParentsListResponse + */ + public function listRasterCollectionsParents($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_MapsEngine_ParentsListResponse"); + } +} +/** + * The "rasters" collection of methods. + * Typical usage is: + * + * $mapsengineService = new Google_Service_MapsEngine(...); + * $rasters = $mapsengineService->rasters; + * + */ +class Google_Service_MapsEngine_RasterCollectionsRasters_Resource extends Google_Service_Resource +{ + + /** + * Remove rasters from an existing raster collection. + * + * Up to 50 rasters can be included in a single batchDelete request. Each + * batchDelete request is atomic. (rasters.batchDelete) + * + * @param string $id + * The ID of the raster collection to which these rasters belong. + * @param Google_RasterCollectionsRasterBatchDeleteRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_MapsEngine_RasterCollectionsRastersBatchDeleteResponse + */ + public function batchDelete($id, Google_Service_MapsEngine_RasterCollectionsRasterBatchDeleteRequest $postBody, $optParams = array()) + { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('batchDelete', array($params), "Google_Service_MapsEngine_RasterCollectionsRastersBatchDeleteResponse"); + } + /** + * Add rasters to an existing raster collection. Rasters must be successfully + * processed in order to be added to a raster collection. + * + * Up to 50 rasters can be included in a single batchInsert request. Each + * batchInsert request is atomic. (rasters.batchInsert) + * + * @param string $id + * The ID of the raster collection to which these rasters belong. + * @param Google_RasterCollectionsRastersBatchInsertRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_MapsEngine_RasterCollectionsRastersBatchInsertResponse + */ + public function batchInsert($id, Google_Service_MapsEngine_RasterCollectionsRastersBatchInsertRequest $postBody, $optParams = array()) + { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('batchInsert', array($params), "Google_Service_MapsEngine_RasterCollectionsRastersBatchInsertResponse"); + } + /** + * Return all rasters within a raster collection. + * (rasters.listRasterCollectionsRasters) + * + * @param string $id + * The ID of the raster collection to which these rasters belong. + * @param array $optParams Optional parameters. + * + * @opt_param string modifiedAfter + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been modified at or after this time. + * @opt_param string createdAfter + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been created at or after this time. + * @opt_param string tags + * A comma separated list of tags. Returned assets will contain all the tags from the list. + * @opt_param string maxResults + * The maximum number of items to include in a single response page. The maximum supported value is + * 100. + * @opt_param string pageToken + * The continuation token, used to page through large result sets. To get the next page of results, + * set this parameter to the value of nextPageToken from the previous response. + * @opt_param string creatorEmail + * An email address representing a user. Returned assets that have been created by the user + * associated with the provided email address. + * @opt_param string bbox + * A bounding box, expressed as "west,south,east,north". If set, only assets which intersect this + * bounding box will be returned. + * @opt_param string modifiedBefore + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been modified at or before this time. + * @opt_param string createdBefore + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been created at or before this time. + * @return Google_Service_MapsEngine_RasterCollectionsRastersListResponse + */ + public function listRasterCollectionsRasters($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_MapsEngine_RasterCollectionsRastersListResponse"); + } +} + +/** + * The "rasters" collection of methods. + * Typical usage is: + * + * $mapsengineService = new Google_Service_MapsEngine(...); + * $rasters = $mapsengineService->rasters; + * + */ +class Google_Service_MapsEngine_Rasters_Resource extends Google_Service_Resource +{ + + /** + * Delete a raster. (rasters.delete) + * + * @param string $id + * The ID of the raster. Only the raster creator or project owner are permitted to delete. If the + * raster is included in a layer or mosaic, the request will fail. Remove it from all parents prior + * to deleting. + * @param array $optParams Optional parameters. + */ + public function delete($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Return metadata for a single raster. (rasters.get) + * + * @param string $id + * The ID of the raster. + * @param array $optParams Optional parameters. + * @return Google_Service_MapsEngine_Raster + */ + public function get($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_MapsEngine_Raster"); + } + /** + * Mutate a raster asset. (rasters.patch) + * + * @param string $id + * The ID of the raster. + * @param Google_Raster $postBody + * @param array $optParams Optional parameters. + */ + public function patch($id, Google_Service_MapsEngine_Raster $postBody, $optParams = array()) + { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params)); + } + /** + * Create a skeleton raster asset for upload. (rasters.upload) + * + * @param Google_Raster $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_MapsEngine_Raster + */ + public function upload(Google_Service_MapsEngine_Raster $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('upload', array($params), "Google_Service_MapsEngine_Raster"); + } +} + +/** + * The "files" collection of methods. + * Typical usage is: + * + * $mapsengineService = new Google_Service_MapsEngine(...); + * $files = $mapsengineService->files; + * + */ +class Google_Service_MapsEngine_RastersFiles_Resource extends Google_Service_Resource +{ + + /** + * Upload a file to a raster asset. (files.insert) + * + * @param string $id + * The ID of the raster asset. + * @param string $filename + * The file name of this uploaded file. + * @param array $optParams Optional parameters. + */ + public function insert($id, $filename, $optParams = array()) + { + $params = array('id' => $id, 'filename' => $filename); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params)); + } +} +/** + * The "parents" collection of methods. + * Typical usage is: + * + * $mapsengineService = new Google_Service_MapsEngine(...); + * $parents = $mapsengineService->parents; + * + */ +class Google_Service_MapsEngine_RastersParents_Resource extends Google_Service_Resource +{ + + /** + * Return all parent ids of the specified rasters. (parents.listRastersParents) + * + * @param string $id + * The ID of the rasters whose parents will be listed. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The continuation token, used to page through large result sets. To get the next page of results, + * set this parameter to the value of nextPageToken from the previous response. + * @opt_param string maxResults + * The maximum number of items to include in a single response page. The maximum supported value is + * 50. + * @return Google_Service_MapsEngine_ParentsListResponse + */ + public function listRastersParents($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_MapsEngine_ParentsListResponse"); + } +} + +/** + * The "tables" collection of methods. + * Typical usage is: + * + * $mapsengineService = new Google_Service_MapsEngine(...); + * $tables = $mapsengineService->tables; + * + */ +class Google_Service_MapsEngine_Tables_Resource extends Google_Service_Resource +{ + + /** + * Create a table asset. (tables.create) + * + * @param Google_Table $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_MapsEngine_Table + */ + public function create(Google_Service_MapsEngine_Table $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_MapsEngine_Table"); + } + /** + * Delete a table. (tables.delete) + * + * @param string $id + * The ID of the table. Only the table creator or project owner are permitted to delete. If the + * table is included in a layer, the request will fail. Remove it from all layers prior to + * deleting. + * @param array $optParams Optional parameters. + */ + public function delete($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Return metadata for a particular table, including the schema. (tables.get) + * + * @param string $id + * The ID of the table. + * @param array $optParams Optional parameters. + * + * @opt_param string version + * + * @return Google_Service_MapsEngine_Table + */ + public function get($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_MapsEngine_Table"); + } + /** + * Return all tables readable by the current user. (tables.listTables) + * + * @param array $optParams Optional parameters. + * + * @opt_param string modifiedAfter + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been modified at or after this time. + * @opt_param string createdAfter + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been created at or after this time. + * @opt_param string tags + * A comma separated list of tags. Returned assets will contain all the tags from the list. + * @opt_param string projectId + * The ID of a Maps Engine project, used to filter the response. To list all available projects + * with their IDs, send a Projects: list request. You can also find your project ID as the value of + * the DashboardPlace:cid URL parameter when signed in to mapsengine.google.com. + * @opt_param string maxResults + * The maximum number of items to include in a single response page. The maximum supported value is + * 100. + * @opt_param string pageToken + * The continuation token, used to page through large result sets. To get the next page of results, + * set this parameter to the value of nextPageToken from the previous response. + * @opt_param string creatorEmail + * An email address representing a user. Returned assets that have been created by the user + * associated with the provided email address. + * @opt_param string bbox + * A bounding box, expressed as "west,south,east,north". If set, only assets which intersect this + * bounding box will be returned. + * @opt_param string modifiedBefore + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been modified at or before this time. + * @opt_param string createdBefore + * An RFC 3339 formatted date-time value (e.g. 1970-01-01T00:00:00Z). Returned assets will have + * been created at or before this time. + * @return Google_Service_MapsEngine_TablesListResponse + */ + public function listTables($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_MapsEngine_TablesListResponse"); + } + /** + * Mutate a table asset. (tables.patch) + * + * @param string $id + * The ID of the table. + * @param Google_Table $postBody + * @param array $optParams Optional parameters. + */ + public function patch($id, Google_Service_MapsEngine_Table $postBody, $optParams = array()) + { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params)); + } + /** + * Create a placeholder table asset to which table files can be uploaded. Once + * the placeholder has been created, files are uploaded to the + * https://www.googleapis.com/upload/mapsengine/v1/tables/table_id/files + * endpoint. See Table Upload in the Developer's Guide or Table.files: insert in + * the reference documentation for more information. (tables.upload) + * + * @param Google_Table $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_MapsEngine_Table + */ + public function upload(Google_Service_MapsEngine_Table $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('upload', array($params), "Google_Service_MapsEngine_Table"); + } +} + +/** + * The "features" collection of methods. + * Typical usage is: + * + * $mapsengineService = new Google_Service_MapsEngine(...); + * $features = $mapsengineService->features; + * + */ +class Google_Service_MapsEngine_TablesFeatures_Resource extends Google_Service_Resource +{ + + /** + * Delete all features matching the given IDs. (features.batchDelete) + * + * @param string $id + * The ID of the table that contains the features to be deleted. + * @param Google_FeaturesBatchDeleteRequest $postBody + * @param array $optParams Optional parameters. + */ + public function batchDelete($id, Google_Service_MapsEngine_FeaturesBatchDeleteRequest $postBody, $optParams = array()) + { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('batchDelete', array($params)); + } + /** + * Append features to an existing table. + * + * A single batchInsert request can create: + * + * - Up to 50 features. - A combined total of 10 000 vertices. Feature limits + * are documented in the Supported data formats and limits article of the Google + * Maps Engine help center. Note that free and paid accounts have different + * limits. + * + * For more information about inserting features, read Creating features in the + * Google Maps Engine developer's guide. (features.batchInsert) + * + * @param string $id + * The ID of the table to append the features to. + * @param Google_FeaturesBatchInsertRequest $postBody + * @param array $optParams Optional parameters. + */ + public function batchInsert($id, Google_Service_MapsEngine_FeaturesBatchInsertRequest $postBody, $optParams = array()) + { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('batchInsert', array($params)); + } + /** + * Update the supplied features. + * + * A single batchPatch request can update: + * + * - Up to 50 features. - A combined total of 10 000 vertices. Feature limits + * are documented in the Supported data formats and limits article of the Google + * Maps Engine help center. Note that free and paid accounts have different + * limits. + * + * Feature updates use HTTP PATCH semantics: + * + * - A supplied value replaces an existing value (if any) in that field. - + * Omitted fields remain unchanged. - Complex values in geometries and + * properties must be replaced as atomic units. For example, providing just the + * coordinates of a geometry is not allowed; the complete geometry, including + * type, must be supplied. - Setting a property's value to null deletes that + * property. For more information about updating features, read Updating + * features in the Google Maps Engine developer's guide. (features.batchPatch) + * + * @param string $id + * The ID of the table containing the features to be patched. + * @param Google_FeaturesBatchPatchRequest $postBody + * @param array $optParams Optional parameters. + */ + public function batchPatch($id, Google_Service_MapsEngine_FeaturesBatchPatchRequest $postBody, $optParams = array()) + { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('batchPatch', array($params)); + } + /** + * Return a single feature, given its ID. (features.get) + * + * @param string $tableId + * The ID of the table. + * @param string $id + * The ID of the feature to get. + * @param array $optParams Optional parameters. + * + * @opt_param string version + * The table version to access. See Accessing Public Data for information. + * @opt_param string select + * A SQL-like projection clause used to specify returned properties. If this parameter is not + * included, all properties are returned. + * @return Google_Service_MapsEngine_Feature + */ + public function get($tableId, $id, $optParams = array()) + { + $params = array('tableId' => $tableId, 'id' => $id); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_MapsEngine_Feature"); + } + /** + * Return all features readable by the current user. + * (features.listTablesFeatures) + * + * @param string $id + * The ID of the table to which these features belong. + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy + * An SQL-like order by clause used to sort results. If this parameter is not included, the order + * of features is undefined. + * @opt_param string intersects + * A geometry literal that specifies the spatial restriction of the query. + * @opt_param string maxResults + * The maximum number of items to include in the response, used for paging. The maximum supported + * value is 1000. + * @opt_param string pageToken + * The continuation token, used to page through large result sets. To get the next page of results, + * set this parameter to the value of nextPageToken from the previous response. + * @opt_param string version + * The table version to access. See Accessing Public Data for information. + * @opt_param string limit + * The total number of features to return from the query, irrespective of the number of pages. + * @opt_param string include + * A comma separated list of optional data to include. Optional data available: schema. + * @opt_param string where + * An SQL-like predicate used to filter results. + * @opt_param string select + * A SQL-like projection clause used to specify returned properties. If this parameter is not + * included, all properties are returned. + * @return Google_Service_MapsEngine_FeaturesListResponse + */ + public function listTablesFeatures($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_MapsEngine_FeaturesListResponse"); + } +} +/** + * The "files" collection of methods. + * Typical usage is: + * + * $mapsengineService = new Google_Service_MapsEngine(...); + * $files = $mapsengineService->files; + * + */ +class Google_Service_MapsEngine_TablesFiles_Resource extends Google_Service_Resource +{ + + /** + * Upload a file to a placeholder table asset. See Table Upload in the + * Developer's Guide for more information. Supported file types are listed in + * the Supported data formats and limits article of the Google Maps Engine help + * center. (files.insert) + * + * @param string $id + * The ID of the table asset. + * @param string $filename + * The file name of this uploaded file. + * @param array $optParams Optional parameters. + */ + public function insert($id, $filename, $optParams = array()) + { + $params = array('id' => $id, 'filename' => $filename); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params)); + } +} +/** + * The "parents" collection of methods. + * Typical usage is: + * + * $mapsengineService = new Google_Service_MapsEngine(...); + * $parents = $mapsengineService->parents; + * + */ +class Google_Service_MapsEngine_TablesParents_Resource extends Google_Service_Resource +{ + + /** + * Return all parent ids of the specified table. (parents.listTablesParents) + * + * @param string $id + * The ID of the table whose parents will be listed. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The continuation token, used to page through large result sets. To get the next page of results, + * set this parameter to the value of nextPageToken from the previous response. + * @opt_param string maxResults + * The maximum number of items to include in a single response page. The maximum supported value is + * 50. + * @return Google_Service_MapsEngine_ParentsListResponse + */ + public function listTablesParents($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_MapsEngine_ParentsListResponse"); + } +} + + + + +class Google_Service_MapsEngine_AcquisitionTime extends Google_Model +{ + public $end; + public $precision; + public $start; + + public function setEnd($end) + { + $this->end = $end; + } + + public function getEnd() + { + return $this->end; + } + + public function setPrecision($precision) + { + $this->precision = $precision; + } + + public function getPrecision() + { + return $this->precision; + } + + public function setStart($start) + { + $this->start = $start; + } + + public function getStart() + { + return $this->start; + } +} + +class Google_Service_MapsEngine_Asset extends Google_Collection +{ + public $bbox; + public $creationTime; + public $description; + public $etag; + public $id; + public $lastModifiedTime; + public $name; + public $projectId; + public $resource; + public $tags; + public $type; + + public function setBbox($bbox) + { + $this->bbox = $bbox; + } + + public function getBbox() + { + return $this->bbox; + } + + public function setCreationTime($creationTime) + { + $this->creationTime = $creationTime; + } + + public function getCreationTime() + { + return $this->creationTime; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setLastModifiedTime($lastModifiedTime) + { + $this->lastModifiedTime = $lastModifiedTime; + } + + public function getLastModifiedTime() + { + return $this->lastModifiedTime; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setProjectId($projectId) + { + $this->projectId = $projectId; + } + + public function getProjectId() + { + return $this->projectId; + } + + public function setResource($resource) + { + $this->resource = $resource; + } + + public function getResource() + { + return $this->resource; + } + + public function setTags($tags) + { + $this->tags = $tags; + } + + public function getTags() + { + return $this->tags; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_MapsEngine_AssetsListResponse extends Google_Collection +{ + protected $assetsType = 'Google_Service_MapsEngine_Asset'; + protected $assetsDataType = 'array'; + public $nextPageToken; + + public function setAssets($assets) + { + $this->assets = $assets; + } + + public function getAssets() + { + return $this->assets; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_MapsEngine_Border extends Google_Model +{ + public $color; + public $opacity; + public $width; + + public function setColor($color) + { + $this->color = $color; + } + + public function getColor() + { + return $this->color; + } + + public function setOpacity($opacity) + { + $this->opacity = $opacity; + } + + public function getOpacity() + { + return $this->opacity; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_MapsEngine_Color extends Google_Model +{ + public $color; + public $opacity; + + public function setColor($color) + { + $this->color = $color; + } + + public function getColor() + { + return $this->color; + } + + public function setOpacity($opacity) + { + $this->opacity = $opacity; + } + + public function getOpacity() + { + return $this->opacity; + } +} + +class Google_Service_MapsEngine_Datasource extends Google_Model +{ + public $id; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } +} + +class Google_Service_MapsEngine_DisplayRule extends Google_Collection +{ + protected $filtersType = 'Google_Service_MapsEngine_Filter'; + protected $filtersDataType = 'array'; + protected $lineOptionsType = 'Google_Service_MapsEngine_LineStyle'; + protected $lineOptionsDataType = ''; + public $name; + protected $pointOptionsType = 'Google_Service_MapsEngine_PointStyle'; + protected $pointOptionsDataType = ''; + protected $polygonOptionsType = 'Google_Service_MapsEngine_PolygonStyle'; + protected $polygonOptionsDataType = ''; + protected $zoomLevelsType = 'Google_Service_MapsEngine_ZoomLevels'; + protected $zoomLevelsDataType = ''; + + public function setFilters($filters) + { + $this->filters = $filters; + } + + public function getFilters() + { + return $this->filters; + } + + public function setLineOptions(Google_Service_MapsEngine_LineStyle $lineOptions) + { + $this->lineOptions = $lineOptions; + } + + public function getLineOptions() + { + return $this->lineOptions; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPointOptions(Google_Service_MapsEngine_PointStyle $pointOptions) + { + $this->pointOptions = $pointOptions; + } + + public function getPointOptions() + { + return $this->pointOptions; + } + + public function setPolygonOptions(Google_Service_MapsEngine_PolygonStyle $polygonOptions) + { + $this->polygonOptions = $polygonOptions; + } + + public function getPolygonOptions() + { + return $this->polygonOptions; + } + + public function setZoomLevels(Google_Service_MapsEngine_ZoomLevels $zoomLevels) + { + $this->zoomLevels = $zoomLevels; + } + + public function getZoomLevels() + { + return $this->zoomLevels; + } +} + +class Google_Service_MapsEngine_Feature extends Google_Model +{ + protected $geometryType = 'Google_Service_MapsEngine_GeoJsonGeometry'; + protected $geometryDataType = ''; + public $properties; + public $type; + + public function setGeometry(Google_Service_MapsEngine_GeoJsonGeometry $geometry) + { + $this->geometry = $geometry; + } + + public function getGeometry() + { + return $this->geometry; + } + + public function setProperties($properties) + { + $this->properties = $properties; + } + + public function getProperties() + { + return $this->properties; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_MapsEngine_FeatureInfo extends Google_Model +{ + public $content; + + public function setContent($content) + { + $this->content = $content; + } + + public function getContent() + { + return $this->content; + } +} + +class Google_Service_MapsEngine_FeaturesBatchDeleteRequest extends Google_Collection +{ + public $gxIds; + public $primaryKeys; + + public function setGxIds($gxIds) + { + $this->gxIds = $gxIds; + } + + public function getGxIds() + { + return $this->gxIds; + } + + public function setPrimaryKeys($primaryKeys) + { + $this->primaryKeys = $primaryKeys; + } + + public function getPrimaryKeys() + { + return $this->primaryKeys; + } +} + +class Google_Service_MapsEngine_FeaturesBatchInsertRequest extends Google_Collection +{ + protected $featuresType = 'Google_Service_MapsEngine_Feature'; + protected $featuresDataType = 'array'; + + public function setFeatures($features) + { + $this->features = $features; + } + + public function getFeatures() + { + return $this->features; + } +} + +class Google_Service_MapsEngine_FeaturesBatchPatchRequest extends Google_Collection +{ + protected $featuresType = 'Google_Service_MapsEngine_Feature'; + protected $featuresDataType = 'array'; + + public function setFeatures($features) + { + $this->features = $features; + } + + public function getFeatures() + { + return $this->features; + } +} + +class Google_Service_MapsEngine_FeaturesListResponse extends Google_Collection +{ + public $allowedQueriesPerSecond; + protected $featuresType = 'Google_Service_MapsEngine_Feature'; + protected $featuresDataType = 'array'; + public $nextPageToken; + protected $schemaType = 'Google_Service_MapsEngine_Schema'; + protected $schemaDataType = ''; + public $type; + + public function setAllowedQueriesPerSecond($allowedQueriesPerSecond) + { + $this->allowedQueriesPerSecond = $allowedQueriesPerSecond; + } + + public function getAllowedQueriesPerSecond() + { + return $this->allowedQueriesPerSecond; + } + + public function setFeatures($features) + { + $this->features = $features; + } + + public function getFeatures() + { + return $this->features; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSchema(Google_Service_MapsEngine_Schema $schema) + { + $this->schema = $schema; + } + + public function getSchema() + { + return $this->schema; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_MapsEngine_Filter extends Google_Model +{ + public $column; + public $operator; + public $value; + + public function setColumn($column) + { + $this->column = $column; + } + + public function getColumn() + { + return $this->column; + } + + public function setOperator($operator) + { + $this->operator = $operator; + } + + public function getOperator() + { + return $this->operator; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_MapsEngine_GeoJsonGeometry extends Google_Model +{ + public $type; + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_MapsEngine_GeoJsonGeometryCollection extends Google_Collection +{ + protected $geometriesType = 'Google_Service_MapsEngine_GeoJsonGeometry'; + protected $geometriesDataType = 'array'; + + public function setGeometries($geometries) + { + $this->geometries = $geometries; + } + + public function getGeometries() + { + return $this->geometries; + } +} + +class Google_Service_MapsEngine_GeoJsonLineString extends Google_Collection +{ + public $coordinates; + + public function setCoordinates($coordinates) + { + $this->coordinates = $coordinates; + } + + public function getCoordinates() + { + return $this->coordinates; + } +} + +class Google_Service_MapsEngine_GeoJsonMultiLineString extends Google_Collection +{ + public $coordinates; + + public function setCoordinates($coordinates) + { + $this->coordinates = $coordinates; + } + + public function getCoordinates() + { + return $this->coordinates; + } +} + +class Google_Service_MapsEngine_GeoJsonMultiPoint extends Google_Collection +{ + public $coordinates; + + public function setCoordinates($coordinates) + { + $this->coordinates = $coordinates; + } + + public function getCoordinates() + { + return $this->coordinates; + } +} + +class Google_Service_MapsEngine_GeoJsonMultiPolygon extends Google_Collection +{ + public $coordinates; + + public function setCoordinates($coordinates) + { + $this->coordinates = $coordinates; + } + + public function getCoordinates() + { + return $this->coordinates; + } +} + +class Google_Service_MapsEngine_GeoJsonPoint extends Google_Collection +{ + public $coordinates; + + public function setCoordinates($coordinates) + { + $this->coordinates = $coordinates; + } + + public function getCoordinates() + { + return $this->coordinates; + } +} + +class Google_Service_MapsEngine_GeoJsonPolygon extends Google_Collection +{ + public $coordinates; + + public function setCoordinates($coordinates) + { + $this->coordinates = $coordinates; + } + + public function getCoordinates() + { + return $this->coordinates; + } +} + +class Google_Service_MapsEngine_GeoJsonProperties extends Google_Model +{ + +} + +class Google_Service_MapsEngine_IconStyle extends Google_Model +{ + public $id; + public $name; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_MapsEngine_LabelStyle extends Google_Model +{ + public $color; + public $column; + public $fontStyle; + public $fontWeight; + public $opacity; + protected $outlineType = 'Google_Service_MapsEngine_Color'; + protected $outlineDataType = ''; + public $size; + + public function setColor($color) + { + $this->color = $color; + } + + public function getColor() + { + return $this->color; + } + + public function setColumn($column) + { + $this->column = $column; + } + + public function getColumn() + { + return $this->column; + } + + public function setFontStyle($fontStyle) + { + $this->fontStyle = $fontStyle; + } + + public function getFontStyle() + { + return $this->fontStyle; + } + + public function setFontWeight($fontWeight) + { + $this->fontWeight = $fontWeight; + } + + public function getFontWeight() + { + return $this->fontWeight; + } + + public function setOpacity($opacity) + { + $this->opacity = $opacity; + } + + public function getOpacity() + { + return $this->opacity; + } + + public function setOutline(Google_Service_MapsEngine_Color $outline) + { + $this->outline = $outline; + } + + public function getOutline() + { + return $this->outline; + } + + public function setSize($size) + { + $this->size = $size; + } + + public function getSize() + { + return $this->size; + } +} + +class Google_Service_MapsEngine_Layer extends Google_Collection +{ + public $bbox; + public $creationTime; + public $datasourceType; + protected $datasourcesType = 'Google_Service_MapsEngine_Datasource'; + protected $datasourcesDataType = 'array'; + public $description; + public $draftAccessList; + public $etag; + public $id; + public $lastModifiedTime; + public $name; + public $processingStatus; + public $projectId; + public $publishedAccessList; + protected $styleType = 'Google_Service_MapsEngine_VectorStyle'; + protected $styleDataType = ''; + public $tags; + + public function setBbox($bbox) + { + $this->bbox = $bbox; + } + + public function getBbox() + { + return $this->bbox; + } + + public function setCreationTime($creationTime) + { + $this->creationTime = $creationTime; + } + + public function getCreationTime() + { + return $this->creationTime; + } + + public function setDatasourceType($datasourceType) + { + $this->datasourceType = $datasourceType; + } + + public function getDatasourceType() + { + return $this->datasourceType; + } + + public function setDatasources(Google_Service_MapsEngine_Datasource $datasources) + { + $this->datasources = $datasources; + } + + public function getDatasources() + { + return $this->datasources; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDraftAccessList($draftAccessList) + { + $this->draftAccessList = $draftAccessList; + } + + public function getDraftAccessList() + { + return $this->draftAccessList; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setLastModifiedTime($lastModifiedTime) + { + $this->lastModifiedTime = $lastModifiedTime; + } + + public function getLastModifiedTime() + { + return $this->lastModifiedTime; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setProcessingStatus($processingStatus) + { + $this->processingStatus = $processingStatus; + } + + public function getProcessingStatus() + { + return $this->processingStatus; + } + + public function setProjectId($projectId) + { + $this->projectId = $projectId; + } + + public function getProjectId() + { + return $this->projectId; + } + + public function setPublishedAccessList($publishedAccessList) + { + $this->publishedAccessList = $publishedAccessList; + } + + public function getPublishedAccessList() + { + return $this->publishedAccessList; + } + + public function setStyle(Google_Service_MapsEngine_VectorStyle $style) + { + $this->style = $style; + } + + public function getStyle() + { + return $this->style; + } + + public function setTags($tags) + { + $this->tags = $tags; + } + + public function getTags() + { + return $this->tags; + } +} + +class Google_Service_MapsEngine_LayersListResponse extends Google_Collection +{ + protected $layersType = 'Google_Service_MapsEngine_Layer'; + protected $layersDataType = 'array'; + public $nextPageToken; + + public function setLayers($layers) + { + $this->layers = $layers; + } + + public function getLayers() + { + return $this->layers; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_MapsEngine_LineStyle extends Google_Collection +{ + protected $borderType = 'Google_Service_MapsEngine_Border'; + protected $borderDataType = ''; + public $dash; + protected $labelType = 'Google_Service_MapsEngine_LabelStyle'; + protected $labelDataType = ''; + protected $strokeType = 'Google_Service_MapsEngine_LineStyleStroke'; + protected $strokeDataType = ''; + + public function setBorder(Google_Service_MapsEngine_Border $border) + { + $this->border = $border; + } + + public function getBorder() + { + return $this->border; + } + + public function setDash($dash) + { + $this->dash = $dash; + } + + public function getDash() + { + return $this->dash; + } + + public function setLabel(Google_Service_MapsEngine_LabelStyle $label) + { + $this->label = $label; + } + + public function getLabel() + { + return $this->label; + } + + public function setStroke(Google_Service_MapsEngine_LineStyleStroke $stroke) + { + $this->stroke = $stroke; + } + + public function getStroke() + { + return $this->stroke; + } +} + +class Google_Service_MapsEngine_LineStyleStroke extends Google_Model +{ + public $color; + public $opacity; + public $width; + + public function setColor($color) + { + $this->color = $color; + } + + public function getColor() + { + return $this->color; + } + + public function setOpacity($opacity) + { + $this->opacity = $opacity; + } + + public function getOpacity() + { + return $this->opacity; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_MapsEngine_Map extends Google_Collection +{ + public $bbox; + protected $contentsType = 'Google_Service_MapsEngine_MapItem'; + protected $contentsDataType = ''; + public $creationTime; + public $defaultViewport; + public $description; + public $draftAccessList; + public $etag; + public $id; + public $lastModifiedTime; + public $name; + public $processingStatus; + public $projectId; + public $publishedAccessList; + public $publishingStatus; + public $tags; + public $versions; + + public function setBbox($bbox) + { + $this->bbox = $bbox; + } + + public function getBbox() + { + return $this->bbox; + } + + public function setContents(Google_Service_MapsEngine_MapItem $contents) + { + $this->contents = $contents; + } + + public function getContents() + { + return $this->contents; + } + + public function setCreationTime($creationTime) + { + $this->creationTime = $creationTime; + } + + public function getCreationTime() + { + return $this->creationTime; + } + + public function setDefaultViewport($defaultViewport) + { + $this->defaultViewport = $defaultViewport; + } + + public function getDefaultViewport() + { + return $this->defaultViewport; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDraftAccessList($draftAccessList) + { + $this->draftAccessList = $draftAccessList; + } + + public function getDraftAccessList() + { + return $this->draftAccessList; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setLastModifiedTime($lastModifiedTime) + { + $this->lastModifiedTime = $lastModifiedTime; + } + + public function getLastModifiedTime() + { + return $this->lastModifiedTime; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setProcessingStatus($processingStatus) + { + $this->processingStatus = $processingStatus; + } + + public function getProcessingStatus() + { + return $this->processingStatus; + } + + public function setProjectId($projectId) + { + $this->projectId = $projectId; + } + + public function getProjectId() + { + return $this->projectId; + } + + public function setPublishedAccessList($publishedAccessList) + { + $this->publishedAccessList = $publishedAccessList; + } + + public function getPublishedAccessList() + { + return $this->publishedAccessList; + } + + public function setPublishingStatus($publishingStatus) + { + $this->publishingStatus = $publishingStatus; + } + + public function getPublishingStatus() + { + return $this->publishingStatus; + } + + public function setTags($tags) + { + $this->tags = $tags; + } + + public function getTags() + { + return $this->tags; + } + + public function setVersions($versions) + { + $this->versions = $versions; + } + + public function getVersions() + { + return $this->versions; + } +} + +class Google_Service_MapsEngine_MapFolder extends Google_Collection +{ + protected $contentsType = 'Google_Service_MapsEngine_MapItem'; + protected $contentsDataType = 'array'; + public $defaultViewport; + public $expandable; + public $key; + public $name; + public $visibility; + + public function setContents($contents) + { + $this->contents = $contents; + } + + public function getContents() + { + return $this->contents; + } + + public function setDefaultViewport($defaultViewport) + { + $this->defaultViewport = $defaultViewport; + } + + public function getDefaultViewport() + { + return $this->defaultViewport; + } + + public function setExpandable($expandable) + { + $this->expandable = $expandable; + } + + public function getExpandable() + { + return $this->expandable; + } + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setVisibility($visibility) + { + $this->visibility = $visibility; + } + + public function getVisibility() + { + return $this->visibility; + } +} + +class Google_Service_MapsEngine_MapItem extends Google_Model +{ + public $type; + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_MapsEngine_MapKmlLink extends Google_Collection +{ + public $defaultViewport; + public $kmlUrl; + public $name; + public $visibility; + + public function setDefaultViewport($defaultViewport) + { + $this->defaultViewport = $defaultViewport; + } + + public function getDefaultViewport() + { + return $this->defaultViewport; + } + + public function setKmlUrl($kmlUrl) + { + $this->kmlUrl = $kmlUrl; + } + + public function getKmlUrl() + { + return $this->kmlUrl; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setVisibility($visibility) + { + $this->visibility = $visibility; + } + + public function getVisibility() + { + return $this->visibility; + } +} + +class Google_Service_MapsEngine_MapLayer extends Google_Collection +{ + public $defaultViewport; + public $id; + public $key; + public $name; + public $visibility; + + public function setDefaultViewport($defaultViewport) + { + $this->defaultViewport = $defaultViewport; + } + + public function getDefaultViewport() + { + return $this->defaultViewport; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setVisibility($visibility) + { + $this->visibility = $visibility; + } + + public function getVisibility() + { + return $this->visibility; + } +} + +class Google_Service_MapsEngine_MapsListResponse extends Google_Collection +{ + protected $mapsType = 'Google_Service_MapsEngine_Map'; + protected $mapsDataType = 'array'; + public $nextPageToken; + + public function setMaps($maps) + { + $this->maps = $maps; + } + + public function getMaps() + { + return $this->maps; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_MapsEngine_MapsengineFile extends Google_Model +{ + public $filename; + public $size; + public $uploadStatus; + + public function setFilename($filename) + { + $this->filename = $filename; + } + + public function getFilename() + { + return $this->filename; + } + + public function setSize($size) + { + $this->size = $size; + } + + public function getSize() + { + return $this->size; + } + + public function setUploadStatus($uploadStatus) + { + $this->uploadStatus = $uploadStatus; + } + + public function getUploadStatus() + { + return $this->uploadStatus; + } +} + +class Google_Service_MapsEngine_Parent extends Google_Model +{ + public $id; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } +} + +class Google_Service_MapsEngine_ParentsListResponse extends Google_Collection +{ + public $nextPageToken; + protected $parentsType = 'Google_Service_MapsEngine_Parent'; + protected $parentsDataType = 'array'; + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setParents($parents) + { + $this->parents = $parents; + } + + public function getParents() + { + return $this->parents; + } +} + +class Google_Service_MapsEngine_PointStyle extends Google_Model +{ + protected $iconType = 'Google_Service_MapsEngine_IconStyle'; + protected $iconDataType = ''; + protected $labelType = 'Google_Service_MapsEngine_LabelStyle'; + protected $labelDataType = ''; + + public function setIcon(Google_Service_MapsEngine_IconStyle $icon) + { + $this->icon = $icon; + } + + public function getIcon() + { + return $this->icon; + } + + public function setLabel(Google_Service_MapsEngine_LabelStyle $label) + { + $this->label = $label; + } + + public function getLabel() + { + return $this->label; + } +} + +class Google_Service_MapsEngine_PolygonStyle extends Google_Model +{ + protected $fillType = 'Google_Service_MapsEngine_Color'; + protected $fillDataType = ''; + protected $strokeType = 'Google_Service_MapsEngine_Border'; + protected $strokeDataType = ''; + + public function setFill(Google_Service_MapsEngine_Color $fill) + { + $this->fill = $fill; + } + + public function getFill() + { + return $this->fill; + } + + public function setStroke(Google_Service_MapsEngine_Border $stroke) + { + $this->stroke = $stroke; + } + + public function getStroke() + { + return $this->stroke; + } +} + +class Google_Service_MapsEngine_ProcessResponse extends Google_Model +{ + +} + +class Google_Service_MapsEngine_Project extends Google_Model +{ + public $id; + public $name; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_MapsEngine_ProjectsListResponse extends Google_Collection +{ + protected $projectsType = 'Google_Service_MapsEngine_Project'; + protected $projectsDataType = 'array'; + + public function setProjects($projects) + { + $this->projects = $projects; + } + + public function getProjects() + { + return $this->projects; + } +} + +class Google_Service_MapsEngine_PublishResponse extends Google_Model +{ + +} + +class Google_Service_MapsEngine_Raster extends Google_Collection +{ + protected $acquisitionTimeType = 'Google_Service_MapsEngine_AcquisitionTime'; + protected $acquisitionTimeDataType = ''; + public $attribution; + public $bbox; + public $creationTime; + public $description; + public $draftAccessList; + public $etag; + protected $filesType = 'Google_Service_MapsEngine_MapsengineFile'; + protected $filesDataType = 'array'; + public $id; + public $lastModifiedTime; + public $maskType; + public $name; + public $processingStatus; + public $projectId; + public $rasterType; + public $tags; + + public function setAcquisitionTime(Google_Service_MapsEngine_AcquisitionTime $acquisitionTime) + { + $this->acquisitionTime = $acquisitionTime; + } + + public function getAcquisitionTime() + { + return $this->acquisitionTime; + } + + public function setAttribution($attribution) + { + $this->attribution = $attribution; + } + + public function getAttribution() + { + return $this->attribution; + } + + public function setBbox($bbox) + { + $this->bbox = $bbox; + } + + public function getBbox() + { + return $this->bbox; + } + + public function setCreationTime($creationTime) + { + $this->creationTime = $creationTime; + } + + public function getCreationTime() + { + return $this->creationTime; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDraftAccessList($draftAccessList) + { + $this->draftAccessList = $draftAccessList; + } + + public function getDraftAccessList() + { + return $this->draftAccessList; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setFiles($files) + { + $this->files = $files; + } + + public function getFiles() + { + return $this->files; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setLastModifiedTime($lastModifiedTime) + { + $this->lastModifiedTime = $lastModifiedTime; + } + + public function getLastModifiedTime() + { + return $this->lastModifiedTime; + } + + public function setMaskType($maskType) + { + $this->maskType = $maskType; + } + + public function getMaskType() + { + return $this->maskType; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setProcessingStatus($processingStatus) + { + $this->processingStatus = $processingStatus; + } + + public function getProcessingStatus() + { + return $this->processingStatus; + } + + public function setProjectId($projectId) + { + $this->projectId = $projectId; + } + + public function getProjectId() + { + return $this->projectId; + } + + public function setRasterType($rasterType) + { + $this->rasterType = $rasterType; + } + + public function getRasterType() + { + return $this->rasterType; + } + + public function setTags($tags) + { + $this->tags = $tags; + } + + public function getTags() + { + return $this->tags; + } +} + +class Google_Service_MapsEngine_RasterCollection extends Google_Collection +{ + public $attribution; + public $bbox; + public $creationTime; + public $description; + public $draftAccessList; + public $etag; + public $id; + public $lastModifiedTime; + public $mosaic; + public $name; + public $processingStatus; + public $projectId; + public $rasterType; + public $tags; + + public function setAttribution($attribution) + { + $this->attribution = $attribution; + } + + public function getAttribution() + { + return $this->attribution; + } + + public function setBbox($bbox) + { + $this->bbox = $bbox; + } + + public function getBbox() + { + return $this->bbox; + } + + public function setCreationTime($creationTime) + { + $this->creationTime = $creationTime; + } + + public function getCreationTime() + { + return $this->creationTime; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDraftAccessList($draftAccessList) + { + $this->draftAccessList = $draftAccessList; + } + + public function getDraftAccessList() + { + return $this->draftAccessList; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setLastModifiedTime($lastModifiedTime) + { + $this->lastModifiedTime = $lastModifiedTime; + } + + public function getLastModifiedTime() + { + return $this->lastModifiedTime; + } + + public function setMosaic($mosaic) + { + $this->mosaic = $mosaic; + } + + public function getMosaic() + { + return $this->mosaic; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setProcessingStatus($processingStatus) + { + $this->processingStatus = $processingStatus; + } + + public function getProcessingStatus() + { + return $this->processingStatus; + } + + public function setProjectId($projectId) + { + $this->projectId = $projectId; + } + + public function getProjectId() + { + return $this->projectId; + } + + public function setRasterType($rasterType) + { + $this->rasterType = $rasterType; + } + + public function getRasterType() + { + return $this->rasterType; + } + + public function setTags($tags) + { + $this->tags = $tags; + } + + public function getTags() + { + return $this->tags; + } +} + +class Google_Service_MapsEngine_RasterCollectionsListResponse extends Google_Collection +{ + public $nextPageToken; + protected $rasterCollectionsType = 'Google_Service_MapsEngine_RasterCollection'; + protected $rasterCollectionsDataType = 'array'; + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setRasterCollections($rasterCollections) + { + $this->rasterCollections = $rasterCollections; + } + + public function getRasterCollections() + { + return $this->rasterCollections; + } +} + +class Google_Service_MapsEngine_RasterCollectionsRaster extends Google_Collection +{ + public $bbox; + public $creationTime; + public $description; + public $id; + public $lastModifiedTime; + public $name; + public $projectId; + public $rasterType; + public $tags; + + public function setBbox($bbox) + { + $this->bbox = $bbox; + } + + public function getBbox() + { + return $this->bbox; + } + + public function setCreationTime($creationTime) + { + $this->creationTime = $creationTime; + } + + public function getCreationTime() + { + return $this->creationTime; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setLastModifiedTime($lastModifiedTime) + { + $this->lastModifiedTime = $lastModifiedTime; + } + + public function getLastModifiedTime() + { + return $this->lastModifiedTime; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setProjectId($projectId) + { + $this->projectId = $projectId; + } + + public function getProjectId() + { + return $this->projectId; + } + + public function setRasterType($rasterType) + { + $this->rasterType = $rasterType; + } + + public function getRasterType() + { + return $this->rasterType; + } + + public function setTags($tags) + { + $this->tags = $tags; + } + + public function getTags() + { + return $this->tags; + } +} + +class Google_Service_MapsEngine_RasterCollectionsRasterBatchDeleteRequest extends Google_Collection +{ + public $ids; + + public function setIds($ids) + { + $this->ids = $ids; + } + + public function getIds() + { + return $this->ids; + } +} + +class Google_Service_MapsEngine_RasterCollectionsRastersBatchDeleteResponse extends Google_Model +{ + +} + +class Google_Service_MapsEngine_RasterCollectionsRastersBatchInsertRequest extends Google_Collection +{ + public $ids; + + public function setIds($ids) + { + $this->ids = $ids; + } + + public function getIds() + { + return $this->ids; + } +} + +class Google_Service_MapsEngine_RasterCollectionsRastersBatchInsertResponse extends Google_Model +{ + +} + +class Google_Service_MapsEngine_RasterCollectionsRastersListResponse extends Google_Collection +{ + public $nextPageToken; + protected $rastersType = 'Google_Service_MapsEngine_RasterCollectionsRaster'; + protected $rastersDataType = 'array'; + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setRasters($rasters) + { + $this->rasters = $rasters; + } + + public function getRasters() + { + return $this->rasters; + } +} + +class Google_Service_MapsEngine_Schema extends Google_Collection +{ + protected $columnsType = 'Google_Service_MapsEngine_TableColumn'; + protected $columnsDataType = 'array'; + public $primaryGeometry; + public $primaryKey; + + public function setColumns($columns) + { + $this->columns = $columns; + } + + public function getColumns() + { + return $this->columns; + } + + public function setPrimaryGeometry($primaryGeometry) + { + $this->primaryGeometry = $primaryGeometry; + } + + public function getPrimaryGeometry() + { + return $this->primaryGeometry; + } + + public function setPrimaryKey($primaryKey) + { + $this->primaryKey = $primaryKey; + } + + public function getPrimaryKey() + { + return $this->primaryKey; + } +} + +class Google_Service_MapsEngine_Table extends Google_Collection +{ + public $bbox; + public $creationTime; + public $description; + public $draftAccessList; + public $etag; + protected $filesType = 'Google_Service_MapsEngine_MapsengineFile'; + protected $filesDataType = 'array'; + public $id; + public $lastModifiedTime; + public $name; + public $processingStatus; + public $projectId; + public $publishedAccessList; + protected $schemaType = 'Google_Service_MapsEngine_Schema'; + protected $schemaDataType = ''; + public $sourceEncoding; + public $tags; + + public function setBbox($bbox) + { + $this->bbox = $bbox; + } + + public function getBbox() + { + return $this->bbox; + } + + public function setCreationTime($creationTime) + { + $this->creationTime = $creationTime; + } + + public function getCreationTime() + { + return $this->creationTime; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDraftAccessList($draftAccessList) + { + $this->draftAccessList = $draftAccessList; + } + + public function getDraftAccessList() + { + return $this->draftAccessList; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setFiles($files) + { + $this->files = $files; + } + + public function getFiles() + { + return $this->files; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setLastModifiedTime($lastModifiedTime) + { + $this->lastModifiedTime = $lastModifiedTime; + } + + public function getLastModifiedTime() + { + return $this->lastModifiedTime; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setProcessingStatus($processingStatus) + { + $this->processingStatus = $processingStatus; + } + + public function getProcessingStatus() + { + return $this->processingStatus; + } + + public function setProjectId($projectId) + { + $this->projectId = $projectId; + } + + public function getProjectId() + { + return $this->projectId; + } + + public function setPublishedAccessList($publishedAccessList) + { + $this->publishedAccessList = $publishedAccessList; + } + + public function getPublishedAccessList() + { + return $this->publishedAccessList; + } + + public function setSchema(Google_Service_MapsEngine_Schema $schema) + { + $this->schema = $schema; + } + + public function getSchema() + { + return $this->schema; + } + + public function setSourceEncoding($sourceEncoding) + { + $this->sourceEncoding = $sourceEncoding; + } + + public function getSourceEncoding() + { + return $this->sourceEncoding; + } + + public function setTags($tags) + { + $this->tags = $tags; + } + + public function getTags() + { + return $this->tags; + } +} + +class Google_Service_MapsEngine_TableColumn extends Google_Model +{ + public $name; + public $type; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_MapsEngine_TablesListResponse extends Google_Collection +{ + public $nextPageToken; + protected $tablesType = 'Google_Service_MapsEngine_Table'; + protected $tablesDataType = 'array'; + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setTables($tables) + { + $this->tables = $tables; + } + + public function getTables() + { + return $this->tables; + } +} + +class Google_Service_MapsEngine_VectorStyle extends Google_Collection +{ + protected $displayRulesType = 'Google_Service_MapsEngine_DisplayRule'; + protected $displayRulesDataType = 'array'; + protected $featureInfoType = 'Google_Service_MapsEngine_FeatureInfo'; + protected $featureInfoDataType = ''; + public $type; + + public function setDisplayRules($displayRules) + { + $this->displayRules = $displayRules; + } + + public function getDisplayRules() + { + return $this->displayRules; + } + + public function setFeatureInfo(Google_Service_MapsEngine_FeatureInfo $featureInfo) + { + $this->featureInfo = $featureInfo; + } + + public function getFeatureInfo() + { + return $this->featureInfo; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_MapsEngine_ZoomLevels extends Google_Model +{ + public $max; + public $min; + + public function setMax($max) + { + $this->max = $max; + } + + public function getMax() + { + return $this->max; + } + + public function setMin($min) + { + $this->min = $min; + } + + public function getMin() + { + return $this->min; + } +} diff --git a/oauth/Google/Service/Mirror.php b/oauth/Google/Service/Mirror.php new file mode 100644 index 0000000..a44efd0 --- /dev/null +++ b/oauth/Google/Service/Mirror.php @@ -0,0 +1,2032 @@ + + * API for interacting with Glass users via the timeline. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Mirror extends Google_Service +{ + /** View your location. */ + const GLASS_LOCATION = "https://www.googleapis.com/auth/glass.location"; + /** View and manage your Glass timeline. */ + const GLASS_TIMELINE = "https://www.googleapis.com/auth/glass.timeline"; + + public $accounts; + public $contacts; + public $locations; + public $settings; + public $subscriptions; + public $timeline; + public $timeline_attachments; + + + /** + * Constructs the internal representation of the Mirror service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'mirror/v1/'; + $this->version = 'v1'; + $this->serviceName = 'mirror'; + + $this->accounts = new Google_Service_Mirror_Accounts_Resource( + $this, + $this->serviceName, + 'accounts', + array( + 'methods' => array( + 'insert' => array( + 'path' => 'accounts/{userToken}/{accountType}/{accountName}', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userToken' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'accountType' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'accountName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->contacts = new Google_Service_Mirror_Contacts_Resource( + $this, + $this->serviceName, + 'contacts', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'contacts/{id}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'contacts/{id}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'contacts', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'list' => array( + 'path' => 'contacts', + 'httpMethod' => 'GET', + 'parameters' => array(), + ),'patch' => array( + 'path' => 'contacts/{id}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'contacts/{id}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->locations = new Google_Service_Mirror_Locations_Resource( + $this, + $this->serviceName, + 'locations', + array( + 'methods' => array( + 'get' => array( + 'path' => 'locations/{id}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'locations', + 'httpMethod' => 'GET', + 'parameters' => array(), + ), + ) + ) + ); + $this->settings = new Google_Service_Mirror_Settings_Resource( + $this, + $this->serviceName, + 'settings', + array( + 'methods' => array( + 'get' => array( + 'path' => 'settings/{id}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->subscriptions = new Google_Service_Mirror_Subscriptions_Resource( + $this, + $this->serviceName, + 'subscriptions', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'subscriptions/{id}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'subscriptions', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'list' => array( + 'path' => 'subscriptions', + 'httpMethod' => 'GET', + 'parameters' => array(), + ),'update' => array( + 'path' => 'subscriptions/{id}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->timeline = new Google_Service_Mirror_Timeline_Resource( + $this, + $this->serviceName, + 'timeline', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'timeline/{id}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'timeline/{id}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'timeline', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'list' => array( + 'path' => 'timeline', + 'httpMethod' => 'GET', + 'parameters' => array( + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'includeDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sourceItemId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pinnedOnly' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'bundleId' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'timeline/{id}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'timeline/{id}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->timeline_attachments = new Google_Service_Mirror_TimelineAttachments_Resource( + $this, + $this->serviceName, + 'attachments', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'timeline/{itemId}/attachments/{attachmentId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'itemId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'attachmentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'timeline/{itemId}/attachments/{attachmentId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'itemId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'attachmentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'timeline/{itemId}/attachments', + 'httpMethod' => 'POST', + 'parameters' => array( + 'itemId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'timeline/{itemId}/attachments', + 'httpMethod' => 'GET', + 'parameters' => array( + 'itemId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "accounts" collection of methods. + * Typical usage is: + * + * $mirrorService = new Google_Service_Mirror(...); + * $accounts = $mirrorService->accounts; + * + */ +class Google_Service_Mirror_Accounts_Resource extends Google_Service_Resource +{ + + /** + * Inserts a new account for a user (accounts.insert) + * + * @param string $userToken + * The ID for the user. + * @param string $accountType + * Account type to be passed to Android Account Manager. + * @param string $accountName + * The name of the account to be passed to the Android Account Manager. + * @param Google_Account $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Mirror_Account + */ + public function insert($userToken, $accountType, $accountName, Google_Service_Mirror_Account $postBody, $optParams = array()) + { + $params = array('userToken' => $userToken, 'accountType' => $accountType, 'accountName' => $accountName, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Mirror_Account"); + } +} + +/** + * The "contacts" collection of methods. + * Typical usage is: + * + * $mirrorService = new Google_Service_Mirror(...); + * $contacts = $mirrorService->contacts; + * + */ +class Google_Service_Mirror_Contacts_Resource extends Google_Service_Resource +{ + + /** + * Deletes a contact. (contacts.delete) + * + * @param string $id + * The ID of the contact. + * @param array $optParams Optional parameters. + */ + public function delete($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets a single contact by ID. (contacts.get) + * + * @param string $id + * The ID of the contact. + * @param array $optParams Optional parameters. + * @return Google_Service_Mirror_Contact + */ + public function get($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Mirror_Contact"); + } + /** + * Inserts a new contact. (contacts.insert) + * + * @param Google_Contact $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Mirror_Contact + */ + public function insert(Google_Service_Mirror_Contact $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Mirror_Contact"); + } + /** + * Retrieves a list of contacts for the authenticated user. + * (contacts.listContacts) + * + * @param array $optParams Optional parameters. + * @return Google_Service_Mirror_ContactsListResponse + */ + public function listContacts($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Mirror_ContactsListResponse"); + } + /** + * Updates a contact in place. This method supports patch semantics. + * (contacts.patch) + * + * @param string $id + * The ID of the contact. + * @param Google_Contact $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Mirror_Contact + */ + public function patch($id, Google_Service_Mirror_Contact $postBody, $optParams = array()) + { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Mirror_Contact"); + } + /** + * Updates a contact in place. (contacts.update) + * + * @param string $id + * The ID of the contact. + * @param Google_Contact $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Mirror_Contact + */ + public function update($id, Google_Service_Mirror_Contact $postBody, $optParams = array()) + { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Mirror_Contact"); + } +} + +/** + * The "locations" collection of methods. + * Typical usage is: + * + * $mirrorService = new Google_Service_Mirror(...); + * $locations = $mirrorService->locations; + * + */ +class Google_Service_Mirror_Locations_Resource extends Google_Service_Resource +{ + + /** + * Gets a single location by ID. (locations.get) + * + * @param string $id + * The ID of the location or latest for the last known location. + * @param array $optParams Optional parameters. + * @return Google_Service_Mirror_Location + */ + public function get($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Mirror_Location"); + } + /** + * Retrieves a list of locations for the user. (locations.listLocations) + * + * @param array $optParams Optional parameters. + * @return Google_Service_Mirror_LocationsListResponse + */ + public function listLocations($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Mirror_LocationsListResponse"); + } +} + +/** + * The "settings" collection of methods. + * Typical usage is: + * + * $mirrorService = new Google_Service_Mirror(...); + * $settings = $mirrorService->settings; + * + */ +class Google_Service_Mirror_Settings_Resource extends Google_Service_Resource +{ + + /** + * Gets a single setting by ID. (settings.get) + * + * @param string $id + * The ID of the setting. The following IDs are valid: + - locale - The key to the user’s + * language/locale (BCP 47 identifier) that Glassware should use to render localized content. + - + * timezone - The key to the user’s current time zone region as defined in the tz database. + * Example: America/Los_Angeles. + * @param array $optParams Optional parameters. + * @return Google_Service_Mirror_Setting + */ + public function get($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Mirror_Setting"); + } +} + +/** + * The "subscriptions" collection of methods. + * Typical usage is: + * + * $mirrorService = new Google_Service_Mirror(...); + * $subscriptions = $mirrorService->subscriptions; + * + */ +class Google_Service_Mirror_Subscriptions_Resource extends Google_Service_Resource +{ + + /** + * Deletes a subscription. (subscriptions.delete) + * + * @param string $id + * The ID of the subscription. + * @param array $optParams Optional parameters. + */ + public function delete($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Creates a new subscription. (subscriptions.insert) + * + * @param Google_Subscription $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Mirror_Subscription + */ + public function insert(Google_Service_Mirror_Subscription $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Mirror_Subscription"); + } + /** + * Retrieves a list of subscriptions for the authenticated user and service. + * (subscriptions.listSubscriptions) + * + * @param array $optParams Optional parameters. + * @return Google_Service_Mirror_SubscriptionsListResponse + */ + public function listSubscriptions($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Mirror_SubscriptionsListResponse"); + } + /** + * Updates an existing subscription in place. (subscriptions.update) + * + * @param string $id + * The ID of the subscription. + * @param Google_Subscription $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Mirror_Subscription + */ + public function update($id, Google_Service_Mirror_Subscription $postBody, $optParams = array()) + { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Mirror_Subscription"); + } +} + +/** + * The "timeline" collection of methods. + * Typical usage is: + * + * $mirrorService = new Google_Service_Mirror(...); + * $timeline = $mirrorService->timeline; + * + */ +class Google_Service_Mirror_Timeline_Resource extends Google_Service_Resource +{ + + /** + * Deletes a timeline item. (timeline.delete) + * + * @param string $id + * The ID of the timeline item. + * @param array $optParams Optional parameters. + */ + public function delete($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets a single timeline item by ID. (timeline.get) + * + * @param string $id + * The ID of the timeline item. + * @param array $optParams Optional parameters. + * @return Google_Service_Mirror_TimelineItem + */ + public function get($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Mirror_TimelineItem"); + } + /** + * Inserts a new item into the timeline. (timeline.insert) + * + * @param Google_TimelineItem $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Mirror_TimelineItem + */ + public function insert(Google_Service_Mirror_TimelineItem $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Mirror_TimelineItem"); + } + /** + * Retrieves a list of timeline items for the authenticated user. + * (timeline.listTimeline) + * + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy + * Controls the order in which timeline items are returned. + * @opt_param bool includeDeleted + * If true, tombstone records for deleted items will be returned. + * @opt_param string maxResults + * The maximum number of items to include in the response, used for paging. + * @opt_param string pageToken + * Token for the page of results to return. + * @opt_param string sourceItemId + * If provided, only items with the given sourceItemId will be returned. + * @opt_param bool pinnedOnly + * If true, only pinned items will be returned. + * @opt_param string bundleId + * If provided, only items with the given bundleId will be returned. + * @return Google_Service_Mirror_TimelineListResponse + */ + public function listTimeline($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Mirror_TimelineListResponse"); + } + /** + * Updates a timeline item in place. This method supports patch semantics. + * (timeline.patch) + * + * @param string $id + * The ID of the timeline item. + * @param Google_TimelineItem $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Mirror_TimelineItem + */ + public function patch($id, Google_Service_Mirror_TimelineItem $postBody, $optParams = array()) + { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Mirror_TimelineItem"); + } + /** + * Updates a timeline item in place. (timeline.update) + * + * @param string $id + * The ID of the timeline item. + * @param Google_TimelineItem $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Mirror_TimelineItem + */ + public function update($id, Google_Service_Mirror_TimelineItem $postBody, $optParams = array()) + { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Mirror_TimelineItem"); + } +} + +/** + * The "attachments" collection of methods. + * Typical usage is: + * + * $mirrorService = new Google_Service_Mirror(...); + * $attachments = $mirrorService->attachments; + * + */ +class Google_Service_Mirror_TimelineAttachments_Resource extends Google_Service_Resource +{ + + /** + * Deletes an attachment from a timeline item. (attachments.delete) + * + * @param string $itemId + * The ID of the timeline item the attachment belongs to. + * @param string $attachmentId + * The ID of the attachment. + * @param array $optParams Optional parameters. + */ + public function delete($itemId, $attachmentId, $optParams = array()) + { + $params = array('itemId' => $itemId, 'attachmentId' => $attachmentId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves an attachment on a timeline item by item ID and attachment ID. + * (attachments.get) + * + * @param string $itemId + * The ID of the timeline item the attachment belongs to. + * @param string $attachmentId + * The ID of the attachment. + * @param array $optParams Optional parameters. + * @return Google_Service_Mirror_Attachment + */ + public function get($itemId, $attachmentId, $optParams = array()) + { + $params = array('itemId' => $itemId, 'attachmentId' => $attachmentId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Mirror_Attachment"); + } + /** + * Adds a new attachment to a timeline item. (attachments.insert) + * + * @param string $itemId + * The ID of the timeline item the attachment belongs to. + * @param array $optParams Optional parameters. + * @return Google_Service_Mirror_Attachment + */ + public function insert($itemId, $optParams = array()) + { + $params = array('itemId' => $itemId); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Mirror_Attachment"); + } + /** + * Returns a list of attachments for a timeline item. + * (attachments.listTimelineAttachments) + * + * @param string $itemId + * The ID of the timeline item whose attachments should be listed. + * @param array $optParams Optional parameters. + * @return Google_Service_Mirror_AttachmentsListResponse + */ + public function listTimelineAttachments($itemId, $optParams = array()) + { + $params = array('itemId' => $itemId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Mirror_AttachmentsListResponse"); + } +} + + + + +class Google_Service_Mirror_Account extends Google_Collection +{ + protected $authTokensType = 'Google_Service_Mirror_AuthToken'; + protected $authTokensDataType = 'array'; + public $features; + public $password; + protected $userDataType = 'Google_Service_Mirror_UserData'; + protected $userDataDataType = 'array'; + + public function setAuthTokens($authTokens) + { + $this->authTokens = $authTokens; + } + + public function getAuthTokens() + { + return $this->authTokens; + } + + public function setFeatures($features) + { + $this->features = $features; + } + + public function getFeatures() + { + return $this->features; + } + + public function setPassword($password) + { + $this->password = $password; + } + + public function getPassword() + { + return $this->password; + } + + public function setUserData($userData) + { + $this->userData = $userData; + } + + public function getUserData() + { + return $this->userData; + } +} + +class Google_Service_Mirror_Attachment extends Google_Model +{ + public $contentType; + public $contentUrl; + public $id; + public $isProcessingContent; + + public function setContentType($contentType) + { + $this->contentType = $contentType; + } + + public function getContentType() + { + return $this->contentType; + } + + public function setContentUrl($contentUrl) + { + $this->contentUrl = $contentUrl; + } + + public function getContentUrl() + { + return $this->contentUrl; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setIsProcessingContent($isProcessingContent) + { + $this->isProcessingContent = $isProcessingContent; + } + + public function getIsProcessingContent() + { + return $this->isProcessingContent; + } +} + +class Google_Service_Mirror_AttachmentsListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_Mirror_Attachment'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Mirror_AuthToken extends Google_Model +{ + public $authToken; + public $type; + + public function setAuthToken($authToken) + { + $this->authToken = $authToken; + } + + public function getAuthToken() + { + return $this->authToken; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Mirror_Command extends Google_Model +{ + public $type; + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Mirror_Contact extends Google_Collection +{ + protected $acceptCommandsType = 'Google_Service_Mirror_Command'; + protected $acceptCommandsDataType = 'array'; + public $acceptTypes; + public $displayName; + public $id; + public $imageUrls; + public $kind; + public $phoneNumber; + public $priority; + public $sharingFeatures; + public $source; + public $speakableName; + public $type; + + public function setAcceptCommands($acceptCommands) + { + $this->acceptCommands = $acceptCommands; + } + + public function getAcceptCommands() + { + return $this->acceptCommands; + } + + public function setAcceptTypes($acceptTypes) + { + $this->acceptTypes = $acceptTypes; + } + + public function getAcceptTypes() + { + return $this->acceptTypes; + } + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImageUrls($imageUrls) + { + $this->imageUrls = $imageUrls; + } + + public function getImageUrls() + { + return $this->imageUrls; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPhoneNumber($phoneNumber) + { + $this->phoneNumber = $phoneNumber; + } + + public function getPhoneNumber() + { + return $this->phoneNumber; + } + + public function setPriority($priority) + { + $this->priority = $priority; + } + + public function getPriority() + { + return $this->priority; + } + + public function setSharingFeatures($sharingFeatures) + { + $this->sharingFeatures = $sharingFeatures; + } + + public function getSharingFeatures() + { + return $this->sharingFeatures; + } + + public function setSource($source) + { + $this->source = $source; + } + + public function getSource() + { + return $this->source; + } + + public function setSpeakableName($speakableName) + { + $this->speakableName = $speakableName; + } + + public function getSpeakableName() + { + return $this->speakableName; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Mirror_ContactsListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_Mirror_Contact'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Mirror_Location extends Google_Model +{ + public $accuracy; + public $address; + public $displayName; + public $id; + public $kind; + public $latitude; + public $longitude; + public $timestamp; + + public function setAccuracy($accuracy) + { + $this->accuracy = $accuracy; + } + + public function getAccuracy() + { + return $this->accuracy; + } + + public function setAddress($address) + { + $this->address = $address; + } + + public function getAddress() + { + return $this->address; + } + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLatitude($latitude) + { + $this->latitude = $latitude; + } + + public function getLatitude() + { + return $this->latitude; + } + + public function setLongitude($longitude) + { + $this->longitude = $longitude; + } + + public function getLongitude() + { + return $this->longitude; + } + + public function setTimestamp($timestamp) + { + $this->timestamp = $timestamp; + } + + public function getTimestamp() + { + return $this->timestamp; + } +} + +class Google_Service_Mirror_LocationsListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_Mirror_Location'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Mirror_MenuItem extends Google_Collection +{ + public $action; + public $id; + public $payload; + public $removeWhenSelected; + protected $valuesType = 'Google_Service_Mirror_MenuValue'; + protected $valuesDataType = 'array'; + + public function setAction($action) + { + $this->action = $action; + } + + public function getAction() + { + return $this->action; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setPayload($payload) + { + $this->payload = $payload; + } + + public function getPayload() + { + return $this->payload; + } + + public function setRemoveWhenSelected($removeWhenSelected) + { + $this->removeWhenSelected = $removeWhenSelected; + } + + public function getRemoveWhenSelected() + { + return $this->removeWhenSelected; + } + + public function setValues($values) + { + $this->values = $values; + } + + public function getValues() + { + return $this->values; + } +} + +class Google_Service_Mirror_MenuValue extends Google_Model +{ + public $displayName; + public $iconUrl; + public $state; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setIconUrl($iconUrl) + { + $this->iconUrl = $iconUrl; + } + + public function getIconUrl() + { + return $this->iconUrl; + } + + public function setState($state) + { + $this->state = $state; + } + + public function getState() + { + return $this->state; + } +} + +class Google_Service_Mirror_Notification extends Google_Collection +{ + public $collection; + public $itemId; + public $operation; + protected $userActionsType = 'Google_Service_Mirror_UserAction'; + protected $userActionsDataType = 'array'; + public $userToken; + public $verifyToken; + + public function setCollection($collection) + { + $this->collection = $collection; + } + + public function getCollection() + { + return $this->collection; + } + + public function setItemId($itemId) + { + $this->itemId = $itemId; + } + + public function getItemId() + { + return $this->itemId; + } + + public function setOperation($operation) + { + $this->operation = $operation; + } + + public function getOperation() + { + return $this->operation; + } + + public function setUserActions($userActions) + { + $this->userActions = $userActions; + } + + public function getUserActions() + { + return $this->userActions; + } + + public function setUserToken($userToken) + { + $this->userToken = $userToken; + } + + public function getUserToken() + { + return $this->userToken; + } + + public function setVerifyToken($verifyToken) + { + $this->verifyToken = $verifyToken; + } + + public function getVerifyToken() + { + return $this->verifyToken; + } +} + +class Google_Service_Mirror_NotificationConfig extends Google_Model +{ + public $deliveryTime; + public $level; + + public function setDeliveryTime($deliveryTime) + { + $this->deliveryTime = $deliveryTime; + } + + public function getDeliveryTime() + { + return $this->deliveryTime; + } + + public function setLevel($level) + { + $this->level = $level; + } + + public function getLevel() + { + return $this->level; + } +} + +class Google_Service_Mirror_Setting extends Google_Model +{ + public $id; + public $kind; + public $value; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Mirror_Subscription extends Google_Collection +{ + public $callbackUrl; + public $collection; + public $id; + public $kind; + protected $notificationType = 'Google_Service_Mirror_Notification'; + protected $notificationDataType = ''; + public $operation; + public $updated; + public $userToken; + public $verifyToken; + + public function setCallbackUrl($callbackUrl) + { + $this->callbackUrl = $callbackUrl; + } + + public function getCallbackUrl() + { + return $this->callbackUrl; + } + + public function setCollection($collection) + { + $this->collection = $collection; + } + + public function getCollection() + { + return $this->collection; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNotification(Google_Service_Mirror_Notification $notification) + { + $this->notification = $notification; + } + + public function getNotification() + { + return $this->notification; + } + + public function setOperation($operation) + { + $this->operation = $operation; + } + + public function getOperation() + { + return $this->operation; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setUserToken($userToken) + { + $this->userToken = $userToken; + } + + public function getUserToken() + { + return $this->userToken; + } + + public function setVerifyToken($verifyToken) + { + $this->verifyToken = $verifyToken; + } + + public function getVerifyToken() + { + return $this->verifyToken; + } +} + +class Google_Service_Mirror_SubscriptionsListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_Mirror_Subscription'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Mirror_TimelineItem extends Google_Collection +{ + protected $attachmentsType = 'Google_Service_Mirror_Attachment'; + protected $attachmentsDataType = 'array'; + public $bundleId; + public $canonicalUrl; + public $created; + protected $creatorType = 'Google_Service_Mirror_Contact'; + protected $creatorDataType = ''; + public $displayTime; + public $etag; + public $html; + public $id; + public $inReplyTo; + public $isBundleCover; + public $isDeleted; + public $isPinned; + public $kind; + protected $locationType = 'Google_Service_Mirror_Location'; + protected $locationDataType = ''; + protected $menuItemsType = 'Google_Service_Mirror_MenuItem'; + protected $menuItemsDataType = 'array'; + protected $notificationType = 'Google_Service_Mirror_NotificationConfig'; + protected $notificationDataType = ''; + public $pinScore; + protected $recipientsType = 'Google_Service_Mirror_Contact'; + protected $recipientsDataType = 'array'; + public $selfLink; + public $sourceItemId; + public $speakableText; + public $speakableType; + public $text; + public $title; + public $updated; + + public function setAttachments($attachments) + { + $this->attachments = $attachments; + } + + public function getAttachments() + { + return $this->attachments; + } + + public function setBundleId($bundleId) + { + $this->bundleId = $bundleId; + } + + public function getBundleId() + { + return $this->bundleId; + } + + public function setCanonicalUrl($canonicalUrl) + { + $this->canonicalUrl = $canonicalUrl; + } + + public function getCanonicalUrl() + { + return $this->canonicalUrl; + } + + public function setCreated($created) + { + $this->created = $created; + } + + public function getCreated() + { + return $this->created; + } + + public function setCreator(Google_Service_Mirror_Contact $creator) + { + $this->creator = $creator; + } + + public function getCreator() + { + return $this->creator; + } + + public function setDisplayTime($displayTime) + { + $this->displayTime = $displayTime; + } + + public function getDisplayTime() + { + return $this->displayTime; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setHtml($html) + { + $this->html = $html; + } + + public function getHtml() + { + return $this->html; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInReplyTo($inReplyTo) + { + $this->inReplyTo = $inReplyTo; + } + + public function getInReplyTo() + { + return $this->inReplyTo; + } + + public function setIsBundleCover($isBundleCover) + { + $this->isBundleCover = $isBundleCover; + } + + public function getIsBundleCover() + { + return $this->isBundleCover; + } + + public function setIsDeleted($isDeleted) + { + $this->isDeleted = $isDeleted; + } + + public function getIsDeleted() + { + return $this->isDeleted; + } + + public function setIsPinned($isPinned) + { + $this->isPinned = $isPinned; + } + + public function getIsPinned() + { + return $this->isPinned; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLocation(Google_Service_Mirror_Location $location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setMenuItems($menuItems) + { + $this->menuItems = $menuItems; + } + + public function getMenuItems() + { + return $this->menuItems; + } + + public function setNotification(Google_Service_Mirror_NotificationConfig $notification) + { + $this->notification = $notification; + } + + public function getNotification() + { + return $this->notification; + } + + public function setPinScore($pinScore) + { + $this->pinScore = $pinScore; + } + + public function getPinScore() + { + return $this->pinScore; + } + + public function setRecipients($recipients) + { + $this->recipients = $recipients; + } + + public function getRecipients() + { + return $this->recipients; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setSourceItemId($sourceItemId) + { + $this->sourceItemId = $sourceItemId; + } + + public function getSourceItemId() + { + return $this->sourceItemId; + } + + public function setSpeakableText($speakableText) + { + $this->speakableText = $speakableText; + } + + public function getSpeakableText() + { + return $this->speakableText; + } + + public function setSpeakableType($speakableType) + { + $this->speakableType = $speakableType; + } + + public function getSpeakableType() + { + return $this->speakableType; + } + + public function setText($text) + { + $this->text = $text; + } + + public function getText() + { + return $this->text; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } +} + +class Google_Service_Mirror_TimelineListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_Mirror_TimelineItem'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Mirror_UserAction extends Google_Model +{ + public $payload; + public $type; + + public function setPayload($payload) + { + $this->payload = $payload; + } + + public function getPayload() + { + return $this->payload; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Mirror_UserData extends Google_Model +{ + public $key; + public $value; + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} diff --git a/oauth/Google/Service/Oauth2.php b/oauth/Google/Service/Oauth2.php new file mode 100644 index 0000000..766cf4a --- /dev/null +++ b/oauth/Google/Service/Oauth2.php @@ -0,0 +1,412 @@ + + * Lets you access OAuth2 protocol related APIs. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Oauth2 extends Google_Service +{ + /** Know your basic profile info and list of people in your circles.. */ + const PLUS_LOGIN = "https://www.googleapis.com/auth/plus.login"; + /** Know who you are on Google. */ + const PLUS_ME = "https://www.googleapis.com/auth/plus.me"; + /** View your email address. */ + const USERINFO_EMAIL = "https://www.googleapis.com/auth/userinfo.email"; + /** View your basic profile info. */ + const USERINFO_PROFILE = "https://www.googleapis.com/auth/userinfo.profile"; + + public $userinfo; + public $userinfo_v2_me; + private $base_methods; + + /** + * Constructs the internal representation of the Oauth2 service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = ''; + $this->version = 'v2'; + $this->serviceName = 'oauth2'; + + $this->userinfo = new Google_Service_Oauth2_Userinfo_Resource( + $this, + $this->serviceName, + 'userinfo', + array( + 'methods' => array( + 'get' => array( + 'path' => 'oauth2/v2/userinfo', + 'httpMethod' => 'GET', + 'parameters' => array(), + ), + ) + ) + ); + $this->userinfo_v2_me = new Google_Service_Oauth2_UserinfoV2Me_Resource( + $this, + $this->serviceName, + 'me', + array( + 'methods' => array( + 'get' => array( + 'path' => 'userinfo/v2/me', + 'httpMethod' => 'GET', + 'parameters' => array(), + ), + ) + ) + ); + $this->base_methods = new Google_Service_Resource( + $this, + $this->serviceName, + '', + array( + 'methods' => array( + 'tokeninfo' => array( + 'path' => 'oauth2/v2/tokeninfo', + 'httpMethod' => 'POST', + 'parameters' => array( + 'access_token' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'id_token' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } + /** + * (tokeninfo) + * + * @param array $optParams Optional parameters. + * + * @opt_param string access_token + * + * @opt_param string id_token + * + * @return Google_Service_Oauth2_Tokeninfo + */ + public function tokeninfo($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->base_methods->call('tokeninfo', array($params), "Google_Service_Oauth2_Tokeninfo"); + } +} + + +/** + * The "userinfo" collection of methods. + * Typical usage is: + * + * $oauth2Service = new Google_Service_Oauth2(...); + * $userinfo = $oauth2Service->userinfo; + * + */ +class Google_Service_Oauth2_Userinfo_Resource extends Google_Service_Resource +{ + + /** + * (userinfo.get) + * + * @param array $optParams Optional parameters. + * @return Google_Service_Oauth2_Userinfoplus + */ + public function get($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Oauth2_Userinfoplus"); + } +} + +/** + * The "v2" collection of methods. + * Typical usage is: + * + * $oauth2Service = new Google_Service_Oauth2(...); + * $v2 = $oauth2Service->v2; + * + */ +class Google_Service_Oauth2_UserinfoV2_Resource extends Google_Service_Resource +{ + +} + +/** + * The "me" collection of methods. + * Typical usage is: + * + * $oauth2Service = new Google_Service_Oauth2(...); + * $me = $oauth2Service->me; + * + */ +class Google_Service_Oauth2_UserinfoV2Me_Resource extends Google_Service_Resource +{ + + /** + * (me.get) + * + * @param array $optParams Optional parameters. + * @return Google_Service_Oauth2_Userinfoplus + */ + public function get($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Oauth2_Userinfoplus"); + } +} + + + + +class Google_Service_Oauth2_Tokeninfo extends Google_Model +{ + public $accessType; + public $audience; + public $email; + public $expiresIn; + public $issuedTo; + public $scope; + public $userId; + public $verifiedEmail; + + public function setAccessType($accessType) + { + $this->accessType = $accessType; + } + + public function getAccessType() + { + return $this->accessType; + } + + public function setAudience($audience) + { + $this->audience = $audience; + } + + public function getAudience() + { + return $this->audience; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setExpiresIn($expiresIn) + { + $this->expiresIn = $expiresIn; + } + + public function getExpiresIn() + { + return $this->expiresIn; + } + + public function setIssuedTo($issuedTo) + { + $this->issuedTo = $issuedTo; + } + + public function getIssuedTo() + { + return $this->issuedTo; + } + + public function setScope($scope) + { + $this->scope = $scope; + } + + public function getScope() + { + return $this->scope; + } + + public function setUserId($userId) + { + $this->userId = $userId; + } + + public function getUserId() + { + return $this->userId; + } + + public function setVerifiedEmail($verifiedEmail) + { + $this->verifiedEmail = $verifiedEmail; + } + + public function getVerifiedEmail() + { + return $this->verifiedEmail; + } +} + +class Google_Service_Oauth2_Userinfoplus extends Google_Model +{ + public $email; + public $familyName; + public $gender; + public $givenName; + public $hd; + public $id; + public $link; + public $locale; + public $name; + public $picture; + public $verifiedEmail; + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setFamilyName($familyName) + { + $this->familyName = $familyName; + } + + public function getFamilyName() + { + return $this->familyName; + } + + public function setGender($gender) + { + $this->gender = $gender; + } + + public function getGender() + { + return $this->gender; + } + + public function setGivenName($givenName) + { + $this->givenName = $givenName; + } + + public function getGivenName() + { + return $this->givenName; + } + + public function setHd($hd) + { + $this->hd = $hd; + } + + public function getHd() + { + return $this->hd; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setLink($link) + { + $this->link = $link; + } + + public function getLink() + { + return $this->link; + } + + public function setLocale($locale) + { + $this->locale = $locale; + } + + public function getLocale() + { + return $this->locale; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPicture($picture) + { + $this->picture = $picture; + } + + public function getPicture() + { + return $this->picture; + } + + public function setVerifiedEmail($verifiedEmail) + { + $this->verifiedEmail = $verifiedEmail; + } + + public function getVerifiedEmail() + { + return $this->verifiedEmail; + } +} diff --git a/oauth/Google/Service/Orkut.php b/oauth/Google/Service/Orkut.php new file mode 100644 index 0000000..77bbc49 --- /dev/null +++ b/oauth/Google/Service/Orkut.php @@ -0,0 +1,4025 @@ + + * Lets you manage activities, comments and badges in Orkut. More stuff coming in time. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Orkut extends Google_Service +{ + /** Manage your Orkut activity. */ + const ORKUT = "https://www.googleapis.com/auth/orkut"; + /** View your Orkut data. */ + const ORKUT_READONLY = "https://www.googleapis.com/auth/orkut.readonly"; + + public $acl; + public $activities; + public $activityVisibility; + public $badges; + public $comments; + public $communities; + public $communityFollow; + public $communityMembers; + public $communityMessages; + public $communityPollComments; + public $communityPollVotes; + public $communityPolls; + public $communityRelated; + public $communityTopics; + public $counters; + public $scraps; + + + /** + * Constructs the internal representation of the Orkut service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'orkut/v2/'; + $this->version = 'v2'; + $this->serviceName = 'orkut'; + + $this->acl = new Google_Service_Orkut_Acl_Resource( + $this, + $this->serviceName, + 'acl', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'activities/{activityId}/acl/{userId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'activityId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->activities = new Google_Service_Orkut_Activities_Resource( + $this, + $this->serviceName, + 'activities', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'activities/{activityId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'activityId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'people/{userId}/activities/{collection}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'collection' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'hl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->activityVisibility = new Google_Service_Orkut_ActivityVisibility_Resource( + $this, + $this->serviceName, + 'activityVisibility', + array( + 'methods' => array( + 'get' => array( + 'path' => 'activities/{activityId}/visibility', + 'httpMethod' => 'GET', + 'parameters' => array( + 'activityId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => 'activities/{activityId}/visibility', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'activityId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'activities/{activityId}/visibility', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'activityId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->badges = new Google_Service_Orkut_Badges_Resource( + $this, + $this->serviceName, + 'badges', + array( + 'methods' => array( + 'get' => array( + 'path' => 'people/{userId}/badges/{badgeId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'badgeId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'people/{userId}/badges', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->comments = new Google_Service_Orkut_Comments_Resource( + $this, + $this->serviceName, + 'comments', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'comments/{commentId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'comments/{commentId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'hl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'activities/{activityId}/comments', + 'httpMethod' => 'POST', + 'parameters' => array( + 'activityId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'activities/{activityId}/comments', + 'httpMethod' => 'GET', + 'parameters' => array( + 'activityId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'hl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->communities = new Google_Service_Orkut_Communities_Resource( + $this, + $this->serviceName, + 'communities', + array( + 'methods' => array( + 'get' => array( + 'path' => 'communities/{communityId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'communityId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'hl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'people/{userId}/communities', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'hl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->communityFollow = new Google_Service_Orkut_CommunityFollow_Resource( + $this, + $this->serviceName, + 'communityFollow', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'communities/{communityId}/followers/{userId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'communityId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'communities/{communityId}/followers/{userId}', + 'httpMethod' => 'POST', + 'parameters' => array( + 'communityId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->communityMembers = new Google_Service_Orkut_CommunityMembers_Resource( + $this, + $this->serviceName, + 'communityMembers', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'communities/{communityId}/members/{userId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'communityId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'communities/{communityId}/members/{userId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'communityId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'hl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'communities/{communityId}/members/{userId}', + 'httpMethod' => 'POST', + 'parameters' => array( + 'communityId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'communities/{communityId}/members', + 'httpMethod' => 'GET', + 'parameters' => array( + 'communityId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'friendsOnly' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'hl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->communityMessages = new Google_Service_Orkut_CommunityMessages_Resource( + $this, + $this->serviceName, + 'communityMessages', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'communities/{communityId}/topics/{topicId}/messages/{messageId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'communityId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'topicId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'messageId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'communities/{communityId}/topics/{topicId}/messages', + 'httpMethod' => 'POST', + 'parameters' => array( + 'communityId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'topicId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'communities/{communityId}/topics/{topicId}/messages', + 'httpMethod' => 'GET', + 'parameters' => array( + 'communityId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'topicId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'hl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->communityPollComments = new Google_Service_Orkut_CommunityPollComments_Resource( + $this, + $this->serviceName, + 'communityPollComments', + array( + 'methods' => array( + 'insert' => array( + 'path' => 'communities/{communityId}/polls/{pollId}/comments', + 'httpMethod' => 'POST', + 'parameters' => array( + 'communityId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'pollId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'communities/{communityId}/polls/{pollId}/comments', + 'httpMethod' => 'GET', + 'parameters' => array( + 'communityId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'pollId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'hl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->communityPollVotes = new Google_Service_Orkut_CommunityPollVotes_Resource( + $this, + $this->serviceName, + 'communityPollVotes', + array( + 'methods' => array( + 'insert' => array( + 'path' => 'communities/{communityId}/polls/{pollId}/votes', + 'httpMethod' => 'POST', + 'parameters' => array( + 'communityId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'pollId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->communityPolls = new Google_Service_Orkut_CommunityPolls_Resource( + $this, + $this->serviceName, + 'communityPolls', + array( + 'methods' => array( + 'get' => array( + 'path' => 'communities/{communityId}/polls/{pollId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'communityId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'pollId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'hl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'communities/{communityId}/polls', + 'httpMethod' => 'GET', + 'parameters' => array( + 'communityId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'hl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->communityRelated = new Google_Service_Orkut_CommunityRelated_Resource( + $this, + $this->serviceName, + 'communityRelated', + array( + 'methods' => array( + 'list' => array( + 'path' => 'communities/{communityId}/related', + 'httpMethod' => 'GET', + 'parameters' => array( + 'communityId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'hl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->communityTopics = new Google_Service_Orkut_CommunityTopics_Resource( + $this, + $this->serviceName, + 'communityTopics', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'communities/{communityId}/topics/{topicId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'communityId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'topicId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'communities/{communityId}/topics/{topicId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'communityId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'topicId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'hl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'communities/{communityId}/topics', + 'httpMethod' => 'POST', + 'parameters' => array( + 'communityId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'isShout' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'list' => array( + 'path' => 'communities/{communityId}/topics', + 'httpMethod' => 'GET', + 'parameters' => array( + 'communityId' => array( + 'location' => 'path', + 'type' => 'integer', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'hl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->counters = new Google_Service_Orkut_Counters_Resource( + $this, + $this->serviceName, + 'counters', + array( + 'methods' => array( + 'list' => array( + 'path' => 'people/{userId}/counters', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->scraps = new Google_Service_Orkut_Scraps_Resource( + $this, + $this->serviceName, + 'scraps', + array( + 'methods' => array( + 'insert' => array( + 'path' => 'activities/scraps', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + } +} + + +/** + * The "acl" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_Service_Orkut(...); + * $acl = $orkutService->acl; + * + */ +class Google_Service_Orkut_Acl_Resource extends Google_Service_Resource +{ + + /** + * Excludes an element from the ACL of the activity. (acl.delete) + * + * @param string $activityId + * ID of the activity. + * @param string $userId + * ID of the user to be removed from the activity. + * @param array $optParams Optional parameters. + */ + public function delete($activityId, $userId, $optParams = array()) + { + $params = array('activityId' => $activityId, 'userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } +} + +/** + * The "activities" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_Service_Orkut(...); + * $activities = $orkutService->activities; + * + */ +class Google_Service_Orkut_Activities_Resource extends Google_Service_Resource +{ + + /** + * Deletes an existing activity, if the access controls allow it. + * (activities.delete) + * + * @param string $activityId + * ID of the activity to remove. + * @param array $optParams Optional parameters. + */ + public function delete($activityId, $optParams = array()) + { + $params = array('activityId' => $activityId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves a list of activities. (activities.listActivities) + * + * @param string $userId + * The ID of the user whose activities will be listed. Can be me to refer to the viewer (i.e. the + * authenticated user). + * @param string $collection + * The collection of activities to list. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token that allows pagination. + * @opt_param string maxResults + * The maximum number of activities to include in the response. + * @opt_param string hl + * Specifies the interface language (host language) of your user interface. + * @return Google_Service_Orkut_ActivityList + */ + public function listActivities($userId, $collection, $optParams = array()) + { + $params = array('userId' => $userId, 'collection' => $collection); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Orkut_ActivityList"); + } +} + +/** + * The "activityVisibility" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_Service_Orkut(...); + * $activityVisibility = $orkutService->activityVisibility; + * + */ +class Google_Service_Orkut_ActivityVisibility_Resource extends Google_Service_Resource +{ + + /** + * Gets the visibility of an existing activity. (activityVisibility.get) + * + * @param string $activityId + * ID of the activity to get the visibility. + * @param array $optParams Optional parameters. + * @return Google_Service_Orkut_Visibility + */ + public function get($activityId, $optParams = array()) + { + $params = array('activityId' => $activityId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Orkut_Visibility"); + } + /** + * Updates the visibility of an existing activity. This method supports patch + * semantics. (activityVisibility.patch) + * + * @param string $activityId + * ID of the activity. + * @param Google_Visibility $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Orkut_Visibility + */ + public function patch($activityId, Google_Service_Orkut_Visibility $postBody, $optParams = array()) + { + $params = array('activityId' => $activityId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Orkut_Visibility"); + } + /** + * Updates the visibility of an existing activity. (activityVisibility.update) + * + * @param string $activityId + * ID of the activity. + * @param Google_Visibility $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Orkut_Visibility + */ + public function update($activityId, Google_Service_Orkut_Visibility $postBody, $optParams = array()) + { + $params = array('activityId' => $activityId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Orkut_Visibility"); + } +} + +/** + * The "badges" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_Service_Orkut(...); + * $badges = $orkutService->badges; + * + */ +class Google_Service_Orkut_Badges_Resource extends Google_Service_Resource +{ + + /** + * Retrieves a badge from a user. (badges.get) + * + * @param string $userId + * The ID of the user whose badges will be listed. Can be me to refer to caller. + * @param string $badgeId + * The ID of the badge that will be retrieved. + * @param array $optParams Optional parameters. + * @return Google_Service_Orkut_Badge + */ + public function get($userId, $badgeId, $optParams = array()) + { + $params = array('userId' => $userId, 'badgeId' => $badgeId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Orkut_Badge"); + } + /** + * Retrieves the list of visible badges of a user. (badges.listBadges) + * + * @param string $userId + * The id of the user whose badges will be listed. Can be me to refer to caller. + * @param array $optParams Optional parameters. + * @return Google_Service_Orkut_BadgeList + */ + public function listBadges($userId, $optParams = array()) + { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Orkut_BadgeList"); + } +} + +/** + * The "comments" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_Service_Orkut(...); + * $comments = $orkutService->comments; + * + */ +class Google_Service_Orkut_Comments_Resource extends Google_Service_Resource +{ + + /** + * Deletes an existing comment. (comments.delete) + * + * @param string $commentId + * ID of the comment to remove. + * @param array $optParams Optional parameters. + */ + public function delete($commentId, $optParams = array()) + { + $params = array('commentId' => $commentId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves an existing comment. (comments.get) + * + * @param string $commentId + * ID of the comment to get. + * @param array $optParams Optional parameters. + * + * @opt_param string hl + * Specifies the interface language (host language) of your user interface. + * @return Google_Service_Orkut_Comment + */ + public function get($commentId, $optParams = array()) + { + $params = array('commentId' => $commentId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Orkut_Comment"); + } + /** + * Inserts a new comment to an activity. (comments.insert) + * + * @param string $activityId + * The ID of the activity to contain the new comment. + * @param Google_Comment $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Orkut_Comment + */ + public function insert($activityId, Google_Service_Orkut_Comment $postBody, $optParams = array()) + { + $params = array('activityId' => $activityId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Orkut_Comment"); + } + /** + * Retrieves a list of comments, possibly filtered. (comments.listComments) + * + * @param string $activityId + * The ID of the activity containing the comments. + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy + * Sort search results. + * @opt_param string pageToken + * A continuation token that allows pagination. + * @opt_param string maxResults + * The maximum number of activities to include in the response. + * @opt_param string hl + * Specifies the interface language (host language) of your user interface. + * @return Google_Service_Orkut_CommentList + */ + public function listComments($activityId, $optParams = array()) + { + $params = array('activityId' => $activityId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Orkut_CommentList"); + } +} + +/** + * The "communities" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_Service_Orkut(...); + * $communities = $orkutService->communities; + * + */ +class Google_Service_Orkut_Communities_Resource extends Google_Service_Resource +{ + + /** + * Retrieves the basic information (aka. profile) of a community. + * (communities.get) + * + * @param int $communityId + * The ID of the community to get. + * @param array $optParams Optional parameters. + * + * @opt_param string hl + * Specifies the interface language (host language) of your user interface. + * @return Google_Service_Orkut_Community + */ + public function get($communityId, $optParams = array()) + { + $params = array('communityId' => $communityId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Orkut_Community"); + } + /** + * Retrieves the list of communities the current user is a member of. + * (communities.listCommunities) + * + * @param string $userId + * The ID of the user whose communities will be listed. Can be me to refer to caller. + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy + * How to order the communities by. + * @opt_param string maxResults + * The maximum number of communities to include in the response. + * @opt_param string hl + * Specifies the interface language (host language) of your user interface. + * @return Google_Service_Orkut_CommunityList + */ + public function listCommunities($userId, $optParams = array()) + { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Orkut_CommunityList"); + } +} + +/** + * The "communityFollow" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_Service_Orkut(...); + * $communityFollow = $orkutService->communityFollow; + * + */ +class Google_Service_Orkut_CommunityFollow_Resource extends Google_Service_Resource +{ + + /** + * Removes a user from the followers of a community. (communityFollow.delete) + * + * @param int $communityId + * ID of the community. + * @param string $userId + * ID of the user. + * @param array $optParams Optional parameters. + */ + public function delete($communityId, $userId, $optParams = array()) + { + $params = array('communityId' => $communityId, 'userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Adds a user as a follower of a community. (communityFollow.insert) + * + * @param int $communityId + * ID of the community. + * @param string $userId + * ID of the user. + * @param array $optParams Optional parameters. + * @return Google_Service_Orkut_CommunityMembers + */ + public function insert($communityId, $userId, $optParams = array()) + { + $params = array('communityId' => $communityId, 'userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Orkut_CommunityMembers"); + } +} + +/** + * The "communityMembers" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_Service_Orkut(...); + * $communityMembers = $orkutService->communityMembers; + * + */ +class Google_Service_Orkut_CommunityMembers_Resource extends Google_Service_Resource +{ + + /** + * Makes the user leave a community. (communityMembers.delete) + * + * @param int $communityId + * ID of the community. + * @param string $userId + * ID of the user. + * @param array $optParams Optional parameters. + */ + public function delete($communityId, $userId, $optParams = array()) + { + $params = array('communityId' => $communityId, 'userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves the relationship between a user and a community. + * (communityMembers.get) + * + * @param int $communityId + * ID of the community. + * @param string $userId + * ID of the user. + * @param array $optParams Optional parameters. + * + * @opt_param string hl + * Specifies the interface language (host language) of your user interface. + * @return Google_Service_Orkut_CommunityMembers + */ + public function get($communityId, $userId, $optParams = array()) + { + $params = array('communityId' => $communityId, 'userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Orkut_CommunityMembers"); + } + /** + * Makes the user join a community. (communityMembers.insert) + * + * @param int $communityId + * ID of the community. + * @param string $userId + * ID of the user. + * @param array $optParams Optional parameters. + * @return Google_Service_Orkut_CommunityMembers + */ + public function insert($communityId, $userId, $optParams = array()) + { + $params = array('communityId' => $communityId, 'userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Orkut_CommunityMembers"); + } + /** + * Lists members of a community. Use the pagination tokens to retrieve the full + * list; do not rely on the member count available in the community profile + * information to know when to stop iterating, as that count may be approximate. + * (communityMembers.listCommunityMembers) + * + * @param int $communityId + * The ID of the community whose members will be listed. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token that allows pagination. + * @opt_param bool friendsOnly + * Whether to list only community members who are friends of the user. + * @opt_param string maxResults + * The maximum number of members to include in the response. + * @opt_param string hl + * Specifies the interface language (host language) of your user interface. + * @return Google_Service_Orkut_CommunityMembersList + */ + public function listCommunityMembers($communityId, $optParams = array()) + { + $params = array('communityId' => $communityId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Orkut_CommunityMembersList"); + } +} + +/** + * The "communityMessages" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_Service_Orkut(...); + * $communityMessages = $orkutService->communityMessages; + * + */ +class Google_Service_Orkut_CommunityMessages_Resource extends Google_Service_Resource +{ + + /** + * Moves a message of the community to the trash folder. + * (communityMessages.delete) + * + * @param int $communityId + * The ID of the community whose message will be moved to the trash folder. + * @param string $topicId + * The ID of the topic whose message will be moved to the trash folder. + * @param string $messageId + * The ID of the message to be moved to the trash folder. + * @param array $optParams Optional parameters. + */ + public function delete($communityId, $topicId, $messageId, $optParams = array()) + { + $params = array('communityId' => $communityId, 'topicId' => $topicId, 'messageId' => $messageId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Adds a message to a given community topic. (communityMessages.insert) + * + * @param int $communityId + * The ID of the community the message should be added to. + * @param string $topicId + * The ID of the topic the message should be added to. + * @param Google_CommunityMessage $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Orkut_CommunityMessage + */ + public function insert($communityId, $topicId, Google_Service_Orkut_CommunityMessage $postBody, $optParams = array()) + { + $params = array('communityId' => $communityId, 'topicId' => $topicId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Orkut_CommunityMessage"); + } + /** + * Retrieves the messages of a topic of a community. + * (communityMessages.listCommunityMessages) + * + * @param int $communityId + * The ID of the community which messages will be listed. + * @param string $topicId + * The ID of the topic which messages will be listed. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token that allows pagination. + * @opt_param string maxResults + * The maximum number of messages to include in the response. + * @opt_param string hl + * Specifies the interface language (host language) of your user interface. + * @return Google_Service_Orkut_CommunityMessageList + */ + public function listCommunityMessages($communityId, $topicId, $optParams = array()) + { + $params = array('communityId' => $communityId, 'topicId' => $topicId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Orkut_CommunityMessageList"); + } +} + +/** + * The "communityPollComments" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_Service_Orkut(...); + * $communityPollComments = $orkutService->communityPollComments; + * + */ +class Google_Service_Orkut_CommunityPollComments_Resource extends Google_Service_Resource +{ + + /** + * Adds a comment on a community poll. (communityPollComments.insert) + * + * @param int $communityId + * The ID of the community whose poll is being commented. + * @param string $pollId + * The ID of the poll being commented. + * @param Google_CommunityPollComment $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Orkut_CommunityPollComment + */ + public function insert($communityId, $pollId, Google_Service_Orkut_CommunityPollComment $postBody, $optParams = array()) + { + $params = array('communityId' => $communityId, 'pollId' => $pollId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Orkut_CommunityPollComment"); + } + /** + * Retrieves the comments of a community poll. + * (communityPollComments.listCommunityPollComments) + * + * @param int $communityId + * The ID of the community whose poll is having its comments listed. + * @param string $pollId + * The ID of the community whose polls will be listed. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token that allows pagination. + * @opt_param string maxResults + * The maximum number of comments to include in the response. + * @opt_param string hl + * Specifies the interface language (host language) of your user interface. + * @return Google_Service_Orkut_CommunityPollCommentList + */ + public function listCommunityPollComments($communityId, $pollId, $optParams = array()) + { + $params = array('communityId' => $communityId, 'pollId' => $pollId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Orkut_CommunityPollCommentList"); + } +} + +/** + * The "communityPollVotes" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_Service_Orkut(...); + * $communityPollVotes = $orkutService->communityPollVotes; + * + */ +class Google_Service_Orkut_CommunityPollVotes_Resource extends Google_Service_Resource +{ + + /** + * Votes on a community poll. (communityPollVotes.insert) + * + * @param int $communityId + * The ID of the community whose poll is being voted. + * @param string $pollId + * The ID of the poll being voted. + * @param Google_CommunityPollVote $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Orkut_CommunityPollVote + */ + public function insert($communityId, $pollId, Google_Service_Orkut_CommunityPollVote $postBody, $optParams = array()) + { + $params = array('communityId' => $communityId, 'pollId' => $pollId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Orkut_CommunityPollVote"); + } +} + +/** + * The "communityPolls" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_Service_Orkut(...); + * $communityPolls = $orkutService->communityPolls; + * + */ +class Google_Service_Orkut_CommunityPolls_Resource extends Google_Service_Resource +{ + + /** + * Retrieves one specific poll of a community. (communityPolls.get) + * + * @param int $communityId + * The ID of the community for whose poll will be retrieved. + * @param string $pollId + * The ID of the poll to get. + * @param array $optParams Optional parameters. + * + * @opt_param string hl + * Specifies the interface language (host language) of your user interface. + * @return Google_Service_Orkut_CommunityPoll + */ + public function get($communityId, $pollId, $optParams = array()) + { + $params = array('communityId' => $communityId, 'pollId' => $pollId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Orkut_CommunityPoll"); + } + /** + * Retrieves the polls of a community. (communityPolls.listCommunityPolls) + * + * @param int $communityId + * The ID of the community which polls will be listed. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token that allows pagination. + * @opt_param string maxResults + * The maximum number of polls to include in the response. + * @opt_param string hl + * Specifies the interface language (host language) of your user interface. + * @return Google_Service_Orkut_CommunityPollList + */ + public function listCommunityPolls($communityId, $optParams = array()) + { + $params = array('communityId' => $communityId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Orkut_CommunityPollList"); + } +} + +/** + * The "communityRelated" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_Service_Orkut(...); + * $communityRelated = $orkutService->communityRelated; + * + */ +class Google_Service_Orkut_CommunityRelated_Resource extends Google_Service_Resource +{ + + /** + * Retrieves the communities related to another one. + * (communityRelated.listCommunityRelated) + * + * @param int $communityId + * The ID of the community whose related communities will be listed. + * @param array $optParams Optional parameters. + * + * @opt_param string hl + * Specifies the interface language (host language) of your user interface. + * @return Google_Service_Orkut_CommunityList + */ + public function listCommunityRelated($communityId, $optParams = array()) + { + $params = array('communityId' => $communityId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Orkut_CommunityList"); + } +} + +/** + * The "communityTopics" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_Service_Orkut(...); + * $communityTopics = $orkutService->communityTopics; + * + */ +class Google_Service_Orkut_CommunityTopics_Resource extends Google_Service_Resource +{ + + /** + * Moves a topic of the community to the trash folder. (communityTopics.delete) + * + * @param int $communityId + * The ID of the community whose topic will be moved to the trash folder. + * @param string $topicId + * The ID of the topic to be moved to the trash folder. + * @param array $optParams Optional parameters. + */ + public function delete($communityId, $topicId, $optParams = array()) + { + $params = array('communityId' => $communityId, 'topicId' => $topicId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves a topic of a community. (communityTopics.get) + * + * @param int $communityId + * The ID of the community whose topic will be retrieved. + * @param string $topicId + * The ID of the topic to get. + * @param array $optParams Optional parameters. + * + * @opt_param string hl + * Specifies the interface language (host language) of your user interface. + * @return Google_Service_Orkut_CommunityTopic + */ + public function get($communityId, $topicId, $optParams = array()) + { + $params = array('communityId' => $communityId, 'topicId' => $topicId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Orkut_CommunityTopic"); + } + /** + * Adds a topic to a given community. (communityTopics.insert) + * + * @param int $communityId + * The ID of the community the topic should be added to. + * @param Google_CommunityTopic $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool isShout + * Whether this topic is a shout. + * @return Google_Service_Orkut_CommunityTopic + */ + public function insert($communityId, Google_Service_Orkut_CommunityTopic $postBody, $optParams = array()) + { + $params = array('communityId' => $communityId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Orkut_CommunityTopic"); + } + /** + * Retrieves the topics of a community. (communityTopics.listCommunityTopics) + * + * @param int $communityId + * The ID of the community which topics will be listed. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A continuation token that allows pagination. + * @opt_param string maxResults + * The maximum number of topics to include in the response. + * @opt_param string hl + * Specifies the interface language (host language) of your user interface. + * @return Google_Service_Orkut_CommunityTopicList + */ + public function listCommunityTopics($communityId, $optParams = array()) + { + $params = array('communityId' => $communityId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Orkut_CommunityTopicList"); + } +} + +/** + * The "counters" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_Service_Orkut(...); + * $counters = $orkutService->counters; + * + */ +class Google_Service_Orkut_Counters_Resource extends Google_Service_Resource +{ + + /** + * Retrieves the counters of a user. (counters.listCounters) + * + * @param string $userId + * The ID of the user whose counters will be listed. Can be me to refer to caller. + * @param array $optParams Optional parameters. + * @return Google_Service_Orkut_Counters + */ + public function listCounters($userId, $optParams = array()) + { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Orkut_Counters"); + } +} + +/** + * The "scraps" collection of methods. + * Typical usage is: + * + * $orkutService = new Google_Service_Orkut(...); + * $scraps = $orkutService->scraps; + * + */ +class Google_Service_Orkut_Scraps_Resource extends Google_Service_Resource +{ + + /** + * Creates a new scrap. (scraps.insert) + * + * @param Google_Activity $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Orkut_Activity + */ + public function insert(Google_Service_Orkut_Activity $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Orkut_Activity"); + } +} + + + + +class Google_Service_Orkut_Acl extends Google_Collection +{ + public $description; + protected $itemsType = 'Google_Service_Orkut_AclItems'; + protected $itemsDataType = 'array'; + public $kind; + public $totalParticipants; + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setTotalParticipants($totalParticipants) + { + $this->totalParticipants = $totalParticipants; + } + + public function getTotalParticipants() + { + return $this->totalParticipants; + } +} + +class Google_Service_Orkut_AclItems extends Google_Model +{ + public $id; + public $type; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Orkut_Activity extends Google_Collection +{ + protected $accessType = 'Google_Service_Orkut_Acl'; + protected $accessDataType = ''; + protected $actorType = 'Google_Service_Orkut_OrkutAuthorResource'; + protected $actorDataType = ''; + public $id; + public $kind; + protected $linksType = 'Google_Service_Orkut_OrkutLinkResource'; + protected $linksDataType = 'array'; + protected $objectType = 'Google_Service_Orkut_ActivityObject'; + protected $objectDataType = ''; + public $published; + public $title; + public $updated; + public $verb; + + public function setAccess(Google_Service_Orkut_Acl $access) + { + $this->access = $access; + } + + public function getAccess() + { + return $this->access; + } + + public function setActor(Google_Service_Orkut_OrkutAuthorResource $actor) + { + $this->actor = $actor; + } + + public function getActor() + { + return $this->actor; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLinks($links) + { + $this->links = $links; + } + + public function getLinks() + { + return $this->links; + } + + public function setObject(Google_Service_Orkut_ActivityObject $object) + { + $this->object = $object; + } + + public function getObject() + { + return $this->object; + } + + public function setPublished($published) + { + $this->published = $published; + } + + public function getPublished() + { + return $this->published; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setVerb($verb) + { + $this->verb = $verb; + } + + public function getVerb() + { + return $this->verb; + } +} + +class Google_Service_Orkut_ActivityList extends Google_Collection +{ + protected $itemsType = 'Google_Service_Orkut_Activity'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Orkut_ActivityObject extends Google_Collection +{ + public $content; + protected $itemsType = 'Google_Service_Orkut_OrkutActivityobjectsResource'; + protected $itemsDataType = 'array'; + public $objectType; + protected $repliesType = 'Google_Service_Orkut_ActivityObjectReplies'; + protected $repliesDataType = ''; + + public function setContent($content) + { + $this->content = $content; + } + + public function getContent() + { + return $this->content; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setObjectType($objectType) + { + $this->objectType = $objectType; + } + + public function getObjectType() + { + return $this->objectType; + } + + public function setReplies(Google_Service_Orkut_ActivityObjectReplies $replies) + { + $this->replies = $replies; + } + + public function getReplies() + { + return $this->replies; + } +} + +class Google_Service_Orkut_ActivityObjectReplies extends Google_Collection +{ + protected $itemsType = 'Google_Service_Orkut_Comment'; + protected $itemsDataType = 'array'; + public $totalItems; + public $url; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Orkut_Badge extends Google_Model +{ + public $badgeLargeLogo; + public $badgeSmallLogo; + public $caption; + public $description; + public $id; + public $kind; + public $sponsorLogo; + public $sponsorName; + public $sponsorUrl; + + public function setBadgeLargeLogo($badgeLargeLogo) + { + $this->badgeLargeLogo = $badgeLargeLogo; + } + + public function getBadgeLargeLogo() + { + return $this->badgeLargeLogo; + } + + public function setBadgeSmallLogo($badgeSmallLogo) + { + $this->badgeSmallLogo = $badgeSmallLogo; + } + + public function getBadgeSmallLogo() + { + return $this->badgeSmallLogo; + } + + public function setCaption($caption) + { + $this->caption = $caption; + } + + public function getCaption() + { + return $this->caption; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSponsorLogo($sponsorLogo) + { + $this->sponsorLogo = $sponsorLogo; + } + + public function getSponsorLogo() + { + return $this->sponsorLogo; + } + + public function setSponsorName($sponsorName) + { + $this->sponsorName = $sponsorName; + } + + public function getSponsorName() + { + return $this->sponsorName; + } + + public function setSponsorUrl($sponsorUrl) + { + $this->sponsorUrl = $sponsorUrl; + } + + public function getSponsorUrl() + { + return $this->sponsorUrl; + } +} + +class Google_Service_Orkut_BadgeList extends Google_Collection +{ + protected $itemsType = 'Google_Service_Orkut_Badge'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Orkut_Comment extends Google_Collection +{ + protected $actorType = 'Google_Service_Orkut_OrkutAuthorResource'; + protected $actorDataType = ''; + public $content; + public $id; + protected $inReplyToType = 'Google_Service_Orkut_CommentInReplyTo'; + protected $inReplyToDataType = ''; + public $kind; + protected $linksType = 'Google_Service_Orkut_OrkutLinkResource'; + protected $linksDataType = 'array'; + public $published; + + public function setActor(Google_Service_Orkut_OrkutAuthorResource $actor) + { + $this->actor = $actor; + } + + public function getActor() + { + return $this->actor; + } + + public function setContent($content) + { + $this->content = $content; + } + + public function getContent() + { + return $this->content; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInReplyTo(Google_Service_Orkut_CommentInReplyTo $inReplyTo) + { + $this->inReplyTo = $inReplyTo; + } + + public function getInReplyTo() + { + return $this->inReplyTo; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLinks($links) + { + $this->links = $links; + } + + public function getLinks() + { + return $this->links; + } + + public function setPublished($published) + { + $this->published = $published; + } + + public function getPublished() + { + return $this->published; + } +} + +class Google_Service_Orkut_CommentInReplyTo extends Google_Model +{ + public $href; + public $ref; + public $rel; + public $type; + + public function setHref($href) + { + $this->href = $href; + } + + public function getHref() + { + return $this->href; + } + + public function setRef($ref) + { + $this->ref = $ref; + } + + public function getRef() + { + return $this->ref; + } + + public function setRel($rel) + { + $this->rel = $rel; + } + + public function getRel() + { + return $this->rel; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Orkut_CommentList extends Google_Collection +{ + protected $itemsType = 'Google_Service_Orkut_Comment'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $previousPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPreviousPageToken($previousPageToken) + { + $this->previousPageToken = $previousPageToken; + } + + public function getPreviousPageToken() + { + return $this->previousPageToken; + } +} + +class Google_Service_Orkut_Community extends Google_Collection +{ + public $category; + protected $coOwnersType = 'Google_Service_Orkut_OrkutAuthorResource'; + protected $coOwnersDataType = 'array'; + public $creationDate; + public $description; + public $id; + public $kind; + public $language; + protected $linksType = 'Google_Service_Orkut_OrkutLinkResource'; + protected $linksDataType = 'array'; + public $location; + public $memberCount; + protected $moderatorsType = 'Google_Service_Orkut_OrkutAuthorResource'; + protected $moderatorsDataType = 'array'; + public $name; + protected $ownerType = 'Google_Service_Orkut_OrkutAuthorResource'; + protected $ownerDataType = ''; + public $photoUrl; + + public function setCategory($category) + { + $this->category = $category; + } + + public function getCategory() + { + return $this->category; + } + + public function setCoOwners($coOwners) + { + $this->coOwners = $coOwners; + } + + public function getCoOwners() + { + return $this->coOwners; + } + + public function setCreationDate($creationDate) + { + $this->creationDate = $creationDate; + } + + public function getCreationDate() + { + return $this->creationDate; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLanguage($language) + { + $this->language = $language; + } + + public function getLanguage() + { + return $this->language; + } + + public function setLinks($links) + { + $this->links = $links; + } + + public function getLinks() + { + return $this->links; + } + + public function setLocation($location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setMemberCount($memberCount) + { + $this->memberCount = $memberCount; + } + + public function getMemberCount() + { + return $this->memberCount; + } + + public function setModerators($moderators) + { + $this->moderators = $moderators; + } + + public function getModerators() + { + return $this->moderators; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setOwner(Google_Service_Orkut_OrkutAuthorResource $owner) + { + $this->owner = $owner; + } + + public function getOwner() + { + return $this->owner; + } + + public function setPhotoUrl($photoUrl) + { + $this->photoUrl = $photoUrl; + } + + public function getPhotoUrl() + { + return $this->photoUrl; + } +} + +class Google_Service_Orkut_CommunityList extends Google_Collection +{ + protected $itemsType = 'Google_Service_Orkut_Community'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Orkut_CommunityMembers extends Google_Model +{ + protected $communityMembershipStatusType = 'Google_Service_Orkut_CommunityMembershipStatus'; + protected $communityMembershipStatusDataType = ''; + public $kind; + protected $personType = 'Google_Service_Orkut_OrkutActivitypersonResource'; + protected $personDataType = ''; + + public function setCommunityMembershipStatus(Google_Service_Orkut_CommunityMembershipStatus $communityMembershipStatus) + { + $this->communityMembershipStatus = $communityMembershipStatus; + } + + public function getCommunityMembershipStatus() + { + return $this->communityMembershipStatus; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPerson(Google_Service_Orkut_OrkutActivitypersonResource $person) + { + $this->person = $person; + } + + public function getPerson() + { + return $this->person; + } +} + +class Google_Service_Orkut_CommunityMembersList extends Google_Collection +{ + public $firstPageToken; + protected $itemsType = 'Google_Service_Orkut_CommunityMembers'; + protected $itemsDataType = 'array'; + public $kind; + public $lastPageToken; + public $nextPageToken; + public $prevPageToken; + + public function setFirstPageToken($firstPageToken) + { + $this->firstPageToken = $firstPageToken; + } + + public function getFirstPageToken() + { + return $this->firstPageToken; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastPageToken($lastPageToken) + { + $this->lastPageToken = $lastPageToken; + } + + public function getLastPageToken() + { + return $this->lastPageToken; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPrevPageToken($prevPageToken) + { + $this->prevPageToken = $prevPageToken; + } + + public function getPrevPageToken() + { + return $this->prevPageToken; + } +} + +class Google_Service_Orkut_CommunityMembershipStatus extends Google_Model +{ + public $canCreatePoll; + public $canCreateTopic; + public $canShout; + public $isCoOwner; + public $isFollowing; + public $isModerator; + public $isOwner; + public $isRestoreAvailable; + public $isTakebackAvailable; + public $kind; + public $status; + + public function setCanCreatePoll($canCreatePoll) + { + $this->canCreatePoll = $canCreatePoll; + } + + public function getCanCreatePoll() + { + return $this->canCreatePoll; + } + + public function setCanCreateTopic($canCreateTopic) + { + $this->canCreateTopic = $canCreateTopic; + } + + public function getCanCreateTopic() + { + return $this->canCreateTopic; + } + + public function setCanShout($canShout) + { + $this->canShout = $canShout; + } + + public function getCanShout() + { + return $this->canShout; + } + + public function setIsCoOwner($isCoOwner) + { + $this->isCoOwner = $isCoOwner; + } + + public function getIsCoOwner() + { + return $this->isCoOwner; + } + + public function setIsFollowing($isFollowing) + { + $this->isFollowing = $isFollowing; + } + + public function getIsFollowing() + { + return $this->isFollowing; + } + + public function setIsModerator($isModerator) + { + $this->isModerator = $isModerator; + } + + public function getIsModerator() + { + return $this->isModerator; + } + + public function setIsOwner($isOwner) + { + $this->isOwner = $isOwner; + } + + public function getIsOwner() + { + return $this->isOwner; + } + + public function setIsRestoreAvailable($isRestoreAvailable) + { + $this->isRestoreAvailable = $isRestoreAvailable; + } + + public function getIsRestoreAvailable() + { + return $this->isRestoreAvailable; + } + + public function setIsTakebackAvailable($isTakebackAvailable) + { + $this->isTakebackAvailable = $isTakebackAvailable; + } + + public function getIsTakebackAvailable() + { + return $this->isTakebackAvailable; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_Orkut_CommunityMessage extends Google_Collection +{ + public $addedDate; + protected $authorType = 'Google_Service_Orkut_OrkutAuthorResource'; + protected $authorDataType = ''; + public $body; + public $id; + public $isSpam; + public $kind; + protected $linksType = 'Google_Service_Orkut_OrkutLinkResource'; + protected $linksDataType = 'array'; + public $subject; + + public function setAddedDate($addedDate) + { + $this->addedDate = $addedDate; + } + + public function getAddedDate() + { + return $this->addedDate; + } + + public function setAuthor(Google_Service_Orkut_OrkutAuthorResource $author) + { + $this->author = $author; + } + + public function getAuthor() + { + return $this->author; + } + + public function setBody($body) + { + $this->body = $body; + } + + public function getBody() + { + return $this->body; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setIsSpam($isSpam) + { + $this->isSpam = $isSpam; + } + + public function getIsSpam() + { + return $this->isSpam; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLinks($links) + { + $this->links = $links; + } + + public function getLinks() + { + return $this->links; + } + + public function setSubject($subject) + { + $this->subject = $subject; + } + + public function getSubject() + { + return $this->subject; + } +} + +class Google_Service_Orkut_CommunityMessageList extends Google_Collection +{ + public $firstPageToken; + protected $itemsType = 'Google_Service_Orkut_CommunityMessage'; + protected $itemsDataType = 'array'; + public $kind; + public $lastPageToken; + public $nextPageToken; + public $prevPageToken; + + public function setFirstPageToken($firstPageToken) + { + $this->firstPageToken = $firstPageToken; + } + + public function getFirstPageToken() + { + return $this->firstPageToken; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastPageToken($lastPageToken) + { + $this->lastPageToken = $lastPageToken; + } + + public function getLastPageToken() + { + return $this->lastPageToken; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPrevPageToken($prevPageToken) + { + $this->prevPageToken = $prevPageToken; + } + + public function getPrevPageToken() + { + return $this->prevPageToken; + } +} + +class Google_Service_Orkut_CommunityPoll extends Google_Collection +{ + protected $authorType = 'Google_Service_Orkut_OrkutAuthorResource'; + protected $authorDataType = ''; + public $communityId; + public $creationTime; + public $description; + public $endingTime; + public $hasVoted; + public $id; + protected $imageType = 'Google_Service_Orkut_CommunityPollImage'; + protected $imageDataType = ''; + public $isClosed; + public $isMultipleAnswers; + public $isOpenForVoting; + public $isRestricted; + public $isSpam; + public $isUsersVotePublic; + public $isVotingAllowedForNonMembers; + public $kind; + public $lastUpdate; + protected $linksType = 'Google_Service_Orkut_OrkutLinkResource'; + protected $linksDataType = 'array'; + protected $optionsType = 'Google_Service_Orkut_OrkutCommunitypolloptionResource'; + protected $optionsDataType = 'array'; + public $question; + public $totalNumberOfVotes; + public $votedOptions; + + public function setAuthor(Google_Service_Orkut_OrkutAuthorResource $author) + { + $this->author = $author; + } + + public function getAuthor() + { + return $this->author; + } + + public function setCommunityId($communityId) + { + $this->communityId = $communityId; + } + + public function getCommunityId() + { + return $this->communityId; + } + + public function setCreationTime($creationTime) + { + $this->creationTime = $creationTime; + } + + public function getCreationTime() + { + return $this->creationTime; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setEndingTime($endingTime) + { + $this->endingTime = $endingTime; + } + + public function getEndingTime() + { + return $this->endingTime; + } + + public function setHasVoted($hasVoted) + { + $this->hasVoted = $hasVoted; + } + + public function getHasVoted() + { + return $this->hasVoted; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImage(Google_Service_Orkut_CommunityPollImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setIsClosed($isClosed) + { + $this->isClosed = $isClosed; + } + + public function getIsClosed() + { + return $this->isClosed; + } + + public function setIsMultipleAnswers($isMultipleAnswers) + { + $this->isMultipleAnswers = $isMultipleAnswers; + } + + public function getIsMultipleAnswers() + { + return $this->isMultipleAnswers; + } + + public function setIsOpenForVoting($isOpenForVoting) + { + $this->isOpenForVoting = $isOpenForVoting; + } + + public function getIsOpenForVoting() + { + return $this->isOpenForVoting; + } + + public function setIsRestricted($isRestricted) + { + $this->isRestricted = $isRestricted; + } + + public function getIsRestricted() + { + return $this->isRestricted; + } + + public function setIsSpam($isSpam) + { + $this->isSpam = $isSpam; + } + + public function getIsSpam() + { + return $this->isSpam; + } + + public function setIsUsersVotePublic($isUsersVotePublic) + { + $this->isUsersVotePublic = $isUsersVotePublic; + } + + public function getIsUsersVotePublic() + { + return $this->isUsersVotePublic; + } + + public function setIsVotingAllowedForNonMembers($isVotingAllowedForNonMembers) + { + $this->isVotingAllowedForNonMembers = $isVotingAllowedForNonMembers; + } + + public function getIsVotingAllowedForNonMembers() + { + return $this->isVotingAllowedForNonMembers; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastUpdate($lastUpdate) + { + $this->lastUpdate = $lastUpdate; + } + + public function getLastUpdate() + { + return $this->lastUpdate; + } + + public function setLinks($links) + { + $this->links = $links; + } + + public function getLinks() + { + return $this->links; + } + + public function setOptions($options) + { + $this->options = $options; + } + + public function getOptions() + { + return $this->options; + } + + public function setQuestion($question) + { + $this->question = $question; + } + + public function getQuestion() + { + return $this->question; + } + + public function setTotalNumberOfVotes($totalNumberOfVotes) + { + $this->totalNumberOfVotes = $totalNumberOfVotes; + } + + public function getTotalNumberOfVotes() + { + return $this->totalNumberOfVotes; + } + + public function setVotedOptions($votedOptions) + { + $this->votedOptions = $votedOptions; + } + + public function getVotedOptions() + { + return $this->votedOptions; + } +} + +class Google_Service_Orkut_CommunityPollComment extends Google_Model +{ + public $addedDate; + protected $authorType = 'Google_Service_Orkut_OrkutAuthorResource'; + protected $authorDataType = ''; + public $body; + public $id; + public $kind; + + public function setAddedDate($addedDate) + { + $this->addedDate = $addedDate; + } + + public function getAddedDate() + { + return $this->addedDate; + } + + public function setAuthor(Google_Service_Orkut_OrkutAuthorResource $author) + { + $this->author = $author; + } + + public function getAuthor() + { + return $this->author; + } + + public function setBody($body) + { + $this->body = $body; + } + + public function getBody() + { + return $this->body; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Orkut_CommunityPollCommentList extends Google_Collection +{ + public $firstPageToken; + protected $itemsType = 'Google_Service_Orkut_CommunityPollComment'; + protected $itemsDataType = 'array'; + public $kind; + public $lastPageToken; + public $nextPageToken; + public $prevPageToken; + + public function setFirstPageToken($firstPageToken) + { + $this->firstPageToken = $firstPageToken; + } + + public function getFirstPageToken() + { + return $this->firstPageToken; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastPageToken($lastPageToken) + { + $this->lastPageToken = $lastPageToken; + } + + public function getLastPageToken() + { + return $this->lastPageToken; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPrevPageToken($prevPageToken) + { + $this->prevPageToken = $prevPageToken; + } + + public function getPrevPageToken() + { + return $this->prevPageToken; + } +} + +class Google_Service_Orkut_CommunityPollImage extends Google_Model +{ + public $url; + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Orkut_CommunityPollList extends Google_Collection +{ + public $firstPageToken; + protected $itemsType = 'Google_Service_Orkut_CommunityPoll'; + protected $itemsDataType = 'array'; + public $kind; + public $lastPageToken; + public $nextPageToken; + public $prevPageToken; + + public function setFirstPageToken($firstPageToken) + { + $this->firstPageToken = $firstPageToken; + } + + public function getFirstPageToken() + { + return $this->firstPageToken; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastPageToken($lastPageToken) + { + $this->lastPageToken = $lastPageToken; + } + + public function getLastPageToken() + { + return $this->lastPageToken; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPrevPageToken($prevPageToken) + { + $this->prevPageToken = $prevPageToken; + } + + public function getPrevPageToken() + { + return $this->prevPageToken; + } +} + +class Google_Service_Orkut_CommunityPollVote extends Google_Collection +{ + public $isVotevisible; + public $kind; + public $optionIds; + + public function setIsVotevisible($isVotevisible) + { + $this->isVotevisible = $isVotevisible; + } + + public function getIsVotevisible() + { + return $this->isVotevisible; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setOptionIds($optionIds) + { + $this->optionIds = $optionIds; + } + + public function getOptionIds() + { + return $this->optionIds; + } +} + +class Google_Service_Orkut_CommunityTopic extends Google_Collection +{ + protected $authorType = 'Google_Service_Orkut_OrkutAuthorResource'; + protected $authorDataType = ''; + public $body; + public $id; + public $isClosed; + public $kind; + public $lastUpdate; + public $latestMessageSnippet; + protected $linksType = 'Google_Service_Orkut_OrkutLinkResource'; + protected $linksDataType = 'array'; + protected $messagesType = 'Google_Service_Orkut_CommunityMessage'; + protected $messagesDataType = 'array'; + public $numberOfReplies; + public $title; + + public function setAuthor(Google_Service_Orkut_OrkutAuthorResource $author) + { + $this->author = $author; + } + + public function getAuthor() + { + return $this->author; + } + + public function setBody($body) + { + $this->body = $body; + } + + public function getBody() + { + return $this->body; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setIsClosed($isClosed) + { + $this->isClosed = $isClosed; + } + + public function getIsClosed() + { + return $this->isClosed; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastUpdate($lastUpdate) + { + $this->lastUpdate = $lastUpdate; + } + + public function getLastUpdate() + { + return $this->lastUpdate; + } + + public function setLatestMessageSnippet($latestMessageSnippet) + { + $this->latestMessageSnippet = $latestMessageSnippet; + } + + public function getLatestMessageSnippet() + { + return $this->latestMessageSnippet; + } + + public function setLinks($links) + { + $this->links = $links; + } + + public function getLinks() + { + return $this->links; + } + + public function setMessages($messages) + { + $this->messages = $messages; + } + + public function getMessages() + { + return $this->messages; + } + + public function setNumberOfReplies($numberOfReplies) + { + $this->numberOfReplies = $numberOfReplies; + } + + public function getNumberOfReplies() + { + return $this->numberOfReplies; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_Orkut_CommunityTopicList extends Google_Collection +{ + public $firstPageToken; + protected $itemsType = 'Google_Service_Orkut_CommunityTopic'; + protected $itemsDataType = 'array'; + public $kind; + public $lastPageToken; + public $nextPageToken; + public $prevPageToken; + + public function setFirstPageToken($firstPageToken) + { + $this->firstPageToken = $firstPageToken; + } + + public function getFirstPageToken() + { + return $this->firstPageToken; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastPageToken($lastPageToken) + { + $this->lastPageToken = $lastPageToken; + } + + public function getLastPageToken() + { + return $this->lastPageToken; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPrevPageToken($prevPageToken) + { + $this->prevPageToken = $prevPageToken; + } + + public function getPrevPageToken() + { + return $this->prevPageToken; + } +} + +class Google_Service_Orkut_Counters extends Google_Collection +{ + protected $itemsType = 'Google_Service_Orkut_OrkutCounterResource'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Orkut_OrkutActivityobjectsResource extends Google_Collection +{ + protected $communityType = 'Google_Service_Orkut_Community'; + protected $communityDataType = ''; + public $content; + public $displayName; + public $id; + protected $linksType = 'Google_Service_Orkut_OrkutLinkResource'; + protected $linksDataType = 'array'; + public $objectType; + protected $personType = 'Google_Service_Orkut_OrkutActivitypersonResource'; + protected $personDataType = ''; + + public function setCommunity(Google_Service_Orkut_Community $community) + { + $this->community = $community; + } + + public function getCommunity() + { + return $this->community; + } + + public function setContent($content) + { + $this->content = $content; + } + + public function getContent() + { + return $this->content; + } + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setLinks($links) + { + $this->links = $links; + } + + public function getLinks() + { + return $this->links; + } + + public function setObjectType($objectType) + { + $this->objectType = $objectType; + } + + public function getObjectType() + { + return $this->objectType; + } + + public function setPerson(Google_Service_Orkut_OrkutActivitypersonResource $person) + { + $this->person = $person; + } + + public function getPerson() + { + return $this->person; + } +} + +class Google_Service_Orkut_OrkutActivitypersonResource extends Google_Model +{ + public $birthday; + public $gender; + public $id; + protected $imageType = 'Google_Service_Orkut_OrkutActivitypersonResourceImage'; + protected $imageDataType = ''; + protected $nameType = 'Google_Service_Orkut_OrkutActivitypersonResourceName'; + protected $nameDataType = ''; + public $url; + + public function setBirthday($birthday) + { + $this->birthday = $birthday; + } + + public function getBirthday() + { + return $this->birthday; + } + + public function setGender($gender) + { + $this->gender = $gender; + } + + public function getGender() + { + return $this->gender; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImage(Google_Service_Orkut_OrkutActivitypersonResourceImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setName(Google_Service_Orkut_OrkutActivitypersonResourceName $name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Orkut_OrkutActivitypersonResourceImage extends Google_Model +{ + public $url; + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Orkut_OrkutActivitypersonResourceName extends Google_Model +{ + public $familyName; + public $givenName; + + public function setFamilyName($familyName) + { + $this->familyName = $familyName; + } + + public function getFamilyName() + { + return $this->familyName; + } + + public function setGivenName($givenName) + { + $this->givenName = $givenName; + } + + public function getGivenName() + { + return $this->givenName; + } +} + +class Google_Service_Orkut_OrkutAuthorResource extends Google_Model +{ + public $displayName; + public $id; + protected $imageType = 'Google_Service_Orkut_OrkutAuthorResourceImage'; + protected $imageDataType = ''; + public $url; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImage(Google_Service_Orkut_OrkutAuthorResourceImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Orkut_OrkutAuthorResourceImage extends Google_Model +{ + public $url; + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Orkut_OrkutCommunitypolloptionResource extends Google_Model +{ + public $description; + protected $imageType = 'Google_Service_Orkut_OrkutCommunitypolloptionResourceImage'; + protected $imageDataType = ''; + public $numberOfVotes; + public $optionId; + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setImage(Google_Service_Orkut_OrkutCommunitypolloptionResourceImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setNumberOfVotes($numberOfVotes) + { + $this->numberOfVotes = $numberOfVotes; + } + + public function getNumberOfVotes() + { + return $this->numberOfVotes; + } + + public function setOptionId($optionId) + { + $this->optionId = $optionId; + } + + public function getOptionId() + { + return $this->optionId; + } +} + +class Google_Service_Orkut_OrkutCommunitypolloptionResourceImage extends Google_Model +{ + public $url; + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Orkut_OrkutCounterResource extends Google_Model +{ + protected $linkType = 'Google_Service_Orkut_OrkutLinkResource'; + protected $linkDataType = ''; + public $name; + public $total; + + public function setLink(Google_Service_Orkut_OrkutLinkResource $link) + { + $this->link = $link; + } + + public function getLink() + { + return $this->link; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setTotal($total) + { + $this->total = $total; + } + + public function getTotal() + { + return $this->total; + } +} + +class Google_Service_Orkut_OrkutLinkResource extends Google_Model +{ + public $href; + public $rel; + public $title; + public $type; + + public function setHref($href) + { + $this->href = $href; + } + + public function getHref() + { + return $this->href; + } + + public function setRel($rel) + { + $this->rel = $rel; + } + + public function getRel() + { + return $this->rel; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Orkut_Visibility extends Google_Collection +{ + public $kind; + protected $linksType = 'Google_Service_Orkut_OrkutLinkResource'; + protected $linksDataType = 'array'; + public $visibility; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLinks($links) + { + $this->links = $links; + } + + public function getLinks() + { + return $this->links; + } + + public function setVisibility($visibility) + { + $this->visibility = $visibility; + } + + public function getVisibility() + { + return $this->visibility; + } +} diff --git a/oauth/Google/Service/Pagespeedonline.php b/oauth/Google/Service/Pagespeedonline.php new file mode 100644 index 0000000..e1632d7 --- /dev/null +++ b/oauth/Google/Service/Pagespeedonline.php @@ -0,0 +1,761 @@ + + * Lets you analyze the performance of a web page and get tailored suggestions to make that page faster. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Pagespeedonline extends Google_Service +{ + + + public $pagespeedapi; + + + /** + * Constructs the internal representation of the Pagespeedonline service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'pagespeedonline/v1/'; + $this->version = 'v1'; + $this->serviceName = 'pagespeedonline'; + + $this->pagespeedapi = new Google_Service_Pagespeedonline_Pagespeedapi_Resource( + $this, + $this->serviceName, + 'pagespeedapi', + array( + 'methods' => array( + 'runpagespeed' => array( + 'path' => 'runPagespeed', + 'httpMethod' => 'GET', + 'parameters' => array( + 'url' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'screenshot' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'rule' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'strategy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'filter_third_party_resources' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "pagespeedapi" collection of methods. + * Typical usage is: + * + * $pagespeedonlineService = new Google_Service_Pagespeedonline(...); + * $pagespeedapi = $pagespeedonlineService->pagespeedapi; + * + */ +class Google_Service_Pagespeedonline_Pagespeedapi_Resource extends Google_Service_Resource +{ + + /** + * Runs Page Speed analysis on the page at the specified URL, and returns a Page + * Speed score, a list of suggestions to make that page faster, and other + * information. (pagespeedapi.runpagespeed) + * + * @param string $url + * The URL to fetch and analyze + * @param array $optParams Optional parameters. + * + * @opt_param bool screenshot + * Indicates if binary data containing a screenshot should be included + * @opt_param string locale + * The locale used to localize formatted results + * @opt_param string rule + * A Page Speed rule to run; if none are given, all rules are run + * @opt_param string strategy + * The analysis strategy to use + * @opt_param bool filter_third_party_resources + * Indicates if third party resources should be filtered out before PageSpeed analysis. + * @return Google_Service_Pagespeedonline_Result + */ + public function runpagespeed($url, $optParams = array()) + { + $params = array('url' => $url); + $params = array_merge($params, $optParams); + return $this->call('runpagespeed', array($params), "Google_Service_Pagespeedonline_Result"); + } +} + + + + +class Google_Service_Pagespeedonline_Result extends Google_Collection +{ + protected $formattedResultsType = 'Google_Service_Pagespeedonline_ResultFormattedResults'; + protected $formattedResultsDataType = ''; + public $id; + public $invalidRules; + public $kind; + protected $pageStatsType = 'Google_Service_Pagespeedonline_ResultPageStats'; + protected $pageStatsDataType = ''; + public $responseCode; + public $score; + protected $screenshotType = 'Google_Service_Pagespeedonline_ResultScreenshot'; + protected $screenshotDataType = ''; + public $title; + protected $versionType = 'Google_Service_Pagespeedonline_ResultVersion'; + protected $versionDataType = ''; + + public function setFormattedResults(Google_Service_Pagespeedonline_ResultFormattedResults $formattedResults) + { + $this->formattedResults = $formattedResults; + } + + public function getFormattedResults() + { + return $this->formattedResults; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInvalidRules($invalidRules) + { + $this->invalidRules = $invalidRules; + } + + public function getInvalidRules() + { + return $this->invalidRules; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPageStats(Google_Service_Pagespeedonline_ResultPageStats $pageStats) + { + $this->pageStats = $pageStats; + } + + public function getPageStats() + { + return $this->pageStats; + } + + public function setResponseCode($responseCode) + { + $this->responseCode = $responseCode; + } + + public function getResponseCode() + { + return $this->responseCode; + } + + public function setScore($score) + { + $this->score = $score; + } + + public function getScore() + { + return $this->score; + } + + public function setScreenshot(Google_Service_Pagespeedonline_ResultScreenshot $screenshot) + { + $this->screenshot = $screenshot; + } + + public function getScreenshot() + { + return $this->screenshot; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setVersion(Google_Service_Pagespeedonline_ResultVersion $version) + { + $this->version = $version; + } + + public function getVersion() + { + return $this->version; + } +} + +class Google_Service_Pagespeedonline_ResultFormattedResults extends Google_Model +{ + public $locale; + protected $ruleResultsType = 'Google_Service_Pagespeedonline_ResultFormattedResultsRuleResultsElement'; + protected $ruleResultsDataType = 'map'; + + public function setLocale($locale) + { + $this->locale = $locale; + } + + public function getLocale() + { + return $this->locale; + } + + public function setRuleResults($ruleResults) + { + $this->ruleResults = $ruleResults; + } + + public function getRuleResults() + { + return $this->ruleResults; + } +} + +class Google_Service_Pagespeedonline_ResultFormattedResultsRuleResults extends Google_Model +{ + +} + +class Google_Service_Pagespeedonline_ResultFormattedResultsRuleResultsElement extends Google_Collection +{ + public $localizedRuleName; + public $ruleImpact; + protected $urlBlocksType = 'Google_Service_Pagespeedonline_ResultFormattedResultsRuleResultsElementUrlBlocks'; + protected $urlBlocksDataType = 'array'; + + public function setLocalizedRuleName($localizedRuleName) + { + $this->localizedRuleName = $localizedRuleName; + } + + public function getLocalizedRuleName() + { + return $this->localizedRuleName; + } + + public function setRuleImpact($ruleImpact) + { + $this->ruleImpact = $ruleImpact; + } + + public function getRuleImpact() + { + return $this->ruleImpact; + } + + public function setUrlBlocks($urlBlocks) + { + $this->urlBlocks = $urlBlocks; + } + + public function getUrlBlocks() + { + return $this->urlBlocks; + } +} + +class Google_Service_Pagespeedonline_ResultFormattedResultsRuleResultsElementUrlBlocks extends Google_Collection +{ + protected $headerType = 'Google_Service_Pagespeedonline_ResultFormattedResultsRuleResultsElementUrlBlocksHeader'; + protected $headerDataType = ''; + protected $urlsType = 'Google_Service_Pagespeedonline_ResultFormattedResultsRuleResultsElementUrlBlocksUrls'; + protected $urlsDataType = 'array'; + + public function setHeader(Google_Service_Pagespeedonline_ResultFormattedResultsRuleResultsElementUrlBlocksHeader $header) + { + $this->header = $header; + } + + public function getHeader() + { + return $this->header; + } + + public function setUrls($urls) + { + $this->urls = $urls; + } + + public function getUrls() + { + return $this->urls; + } +} + +class Google_Service_Pagespeedonline_ResultFormattedResultsRuleResultsElementUrlBlocksHeader extends Google_Collection +{ + protected $argsType = 'Google_Service_Pagespeedonline_ResultFormattedResultsRuleResultsElementUrlBlocksHeaderArgs'; + protected $argsDataType = 'array'; + public $format; + + public function setArgs($args) + { + $this->args = $args; + } + + public function getArgs() + { + return $this->args; + } + + public function setFormat($format) + { + $this->format = $format; + } + + public function getFormat() + { + return $this->format; + } +} + +class Google_Service_Pagespeedonline_ResultFormattedResultsRuleResultsElementUrlBlocksHeaderArgs extends Google_Model +{ + public $type; + public $value; + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Pagespeedonline_ResultFormattedResultsRuleResultsElementUrlBlocksUrls extends Google_Collection +{ + protected $detailsType = 'Google_Service_Pagespeedonline_ResultFormattedResultsRuleResultsElementUrlBlocksUrlsDetails'; + protected $detailsDataType = 'array'; + protected $resultType = 'Google_Service_Pagespeedonline_ResultFormattedResultsRuleResultsElementUrlBlocksUrlsResult'; + protected $resultDataType = ''; + + public function setDetails($details) + { + $this->details = $details; + } + + public function getDetails() + { + return $this->details; + } + + public function setResult(Google_Service_Pagespeedonline_ResultFormattedResultsRuleResultsElementUrlBlocksUrlsResult $result) + { + $this->result = $result; + } + + public function getResult() + { + return $this->result; + } +} + +class Google_Service_Pagespeedonline_ResultFormattedResultsRuleResultsElementUrlBlocksUrlsDetails extends Google_Collection +{ + protected $argsType = 'Google_Service_Pagespeedonline_ResultFormattedResultsRuleResultsElementUrlBlocksUrlsDetailsArgs'; + protected $argsDataType = 'array'; + public $format; + + public function setArgs($args) + { + $this->args = $args; + } + + public function getArgs() + { + return $this->args; + } + + public function setFormat($format) + { + $this->format = $format; + } + + public function getFormat() + { + return $this->format; + } +} + +class Google_Service_Pagespeedonline_ResultFormattedResultsRuleResultsElementUrlBlocksUrlsDetailsArgs extends Google_Model +{ + public $type; + public $value; + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Pagespeedonline_ResultFormattedResultsRuleResultsElementUrlBlocksUrlsResult extends Google_Collection +{ + protected $argsType = 'Google_Service_Pagespeedonline_ResultFormattedResultsRuleResultsElementUrlBlocksUrlsResultArgs'; + protected $argsDataType = 'array'; + public $format; + + public function setArgs($args) + { + $this->args = $args; + } + + public function getArgs() + { + return $this->args; + } + + public function setFormat($format) + { + $this->format = $format; + } + + public function getFormat() + { + return $this->format; + } +} + +class Google_Service_Pagespeedonline_ResultFormattedResultsRuleResultsElementUrlBlocksUrlsResultArgs extends Google_Model +{ + public $type; + public $value; + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Pagespeedonline_ResultPageStats extends Google_Model +{ + public $cssResponseBytes; + public $flashResponseBytes; + public $htmlResponseBytes; + public $imageResponseBytes; + public $javascriptResponseBytes; + public $numberCssResources; + public $numberHosts; + public $numberJsResources; + public $numberResources; + public $numberStaticResources; + public $otherResponseBytes; + public $textResponseBytes; + public $totalRequestBytes; + + public function setCssResponseBytes($cssResponseBytes) + { + $this->cssResponseBytes = $cssResponseBytes; + } + + public function getCssResponseBytes() + { + return $this->cssResponseBytes; + } + + public function setFlashResponseBytes($flashResponseBytes) + { + $this->flashResponseBytes = $flashResponseBytes; + } + + public function getFlashResponseBytes() + { + return $this->flashResponseBytes; + } + + public function setHtmlResponseBytes($htmlResponseBytes) + { + $this->htmlResponseBytes = $htmlResponseBytes; + } + + public function getHtmlResponseBytes() + { + return $this->htmlResponseBytes; + } + + public function setImageResponseBytes($imageResponseBytes) + { + $this->imageResponseBytes = $imageResponseBytes; + } + + public function getImageResponseBytes() + { + return $this->imageResponseBytes; + } + + public function setJavascriptResponseBytes($javascriptResponseBytes) + { + $this->javascriptResponseBytes = $javascriptResponseBytes; + } + + public function getJavascriptResponseBytes() + { + return $this->javascriptResponseBytes; + } + + public function setNumberCssResources($numberCssResources) + { + $this->numberCssResources = $numberCssResources; + } + + public function getNumberCssResources() + { + return $this->numberCssResources; + } + + public function setNumberHosts($numberHosts) + { + $this->numberHosts = $numberHosts; + } + + public function getNumberHosts() + { + return $this->numberHosts; + } + + public function setNumberJsResources($numberJsResources) + { + $this->numberJsResources = $numberJsResources; + } + + public function getNumberJsResources() + { + return $this->numberJsResources; + } + + public function setNumberResources($numberResources) + { + $this->numberResources = $numberResources; + } + + public function getNumberResources() + { + return $this->numberResources; + } + + public function setNumberStaticResources($numberStaticResources) + { + $this->numberStaticResources = $numberStaticResources; + } + + public function getNumberStaticResources() + { + return $this->numberStaticResources; + } + + public function setOtherResponseBytes($otherResponseBytes) + { + $this->otherResponseBytes = $otherResponseBytes; + } + + public function getOtherResponseBytes() + { + return $this->otherResponseBytes; + } + + public function setTextResponseBytes($textResponseBytes) + { + $this->textResponseBytes = $textResponseBytes; + } + + public function getTextResponseBytes() + { + return $this->textResponseBytes; + } + + public function setTotalRequestBytes($totalRequestBytes) + { + $this->totalRequestBytes = $totalRequestBytes; + } + + public function getTotalRequestBytes() + { + return $this->totalRequestBytes; + } +} + +class Google_Service_Pagespeedonline_ResultScreenshot extends Google_Model +{ + public $data; + public $height; + public $mimeType; + public $width; + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setMimeType($mimeType) + { + $this->mimeType = $mimeType; + } + + public function getMimeType() + { + return $this->mimeType; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_Pagespeedonline_ResultVersion extends Google_Model +{ + public $major; + public $minor; + + public function setMajor($major) + { + $this->major = $major; + } + + public function getMajor() + { + return $this->major; + } + + public function setMinor($minor) + { + $this->minor = $minor; + } + + public function getMinor() + { + return $this->minor; + } +} diff --git a/oauth/Google/Service/Plus.php b/oauth/Google/Service/Plus.php new file mode 100644 index 0000000..2f8721d --- /dev/null +++ b/oauth/Google/Service/Plus.php @@ -0,0 +1,3855 @@ + + * The Google+ API enables developers to build on top of the Google+ platform. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Plus extends Google_Service +{ + /** Know your basic profile info and list of people in your circles.. */ + const PLUS_LOGIN = "https://www.googleapis.com/auth/plus.login"; + /** Know who you are on Google. */ + const PLUS_ME = "https://www.googleapis.com/auth/plus.me"; + /** View your email address. */ + const USERINFO_EMAIL = "https://www.googleapis.com/auth/userinfo.email"; + /** View your basic profile info. */ + const USERINFO_PROFILE = "https://www.googleapis.com/auth/userinfo.profile"; + + public $activities; + public $comments; + public $moments; + public $people; + + + /** + * Constructs the internal representation of the Plus service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'plus/v1/'; + $this->version = 'v1'; + $this->serviceName = 'plus'; + + $this->activities = new Google_Service_Plus_Activities_Resource( + $this, + $this->serviceName, + 'activities', + array( + 'methods' => array( + 'get' => array( + 'path' => 'activities/{activityId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'activityId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'people/{userId}/activities/{collection}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'collection' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'search' => array( + 'path' => 'activities', + 'httpMethod' => 'GET', + 'parameters' => array( + 'query' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->comments = new Google_Service_Plus_Comments_Resource( + $this, + $this->serviceName, + 'comments', + array( + 'methods' => array( + 'get' => array( + 'path' => 'comments/{commentId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'activities/{activityId}/comments', + 'httpMethod' => 'GET', + 'parameters' => array( + 'activityId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sortOrder' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->moments = new Google_Service_Plus_Moments_Resource( + $this, + $this->serviceName, + 'moments', + array( + 'methods' => array( + 'insert' => array( + 'path' => 'people/{userId}/moments/{collection}', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'collection' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'debug' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'list' => array( + 'path' => 'people/{userId}/moments/{collection}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'collection' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'targetUrl' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'type' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'remove' => array( + 'path' => 'moments/{id}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->people = new Google_Service_Plus_People_Resource( + $this, + $this->serviceName, + 'people', + array( + 'methods' => array( + 'get' => array( + 'path' => 'people/{userId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'people/{userId}/people/{collection}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'collection' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'listByActivity' => array( + 'path' => 'activities/{activityId}/people/{collection}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'activityId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'collection' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'search' => array( + 'path' => 'people', + 'httpMethod' => 'GET', + 'parameters' => array( + 'query' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'language' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "activities" collection of methods. + * Typical usage is: + * + * $plusService = new Google_Service_Plus(...); + * $activities = $plusService->activities; + * + */ +class Google_Service_Plus_Activities_Resource extends Google_Service_Resource +{ + + /** + * Get an activity. (activities.get) + * + * @param string $activityId + * The ID of the activity to get. + * @param array $optParams Optional parameters. + * @return Google_Service_Plus_Activity + */ + public function get($activityId, $optParams = array()) + { + $params = array('activityId' => $activityId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Plus_Activity"); + } + /** + * List all of the activities in the specified collection for a particular user. + * (activities.listActivities) + * + * @param string $userId + * The ID of the user to get activities for. The special value "me" can be used to indicate the + * authenticated user. + * @param string $collection + * The collection of activities to list. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The continuation token, which is used to page through large result sets. To get the next page of + * results, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of activities to include in the response, which is used for paging. For any + * response, the actual number returned might be less than the specified maxResults. + * @return Google_Service_Plus_ActivityFeed + */ + public function listActivities($userId, $collection, $optParams = array()) + { + $params = array('userId' => $userId, 'collection' => $collection); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Plus_ActivityFeed"); + } + /** + * Search public activities. (activities.search) + * + * @param string $query + * Full-text search query string. + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy + * Specifies how to order search results. + * @opt_param string pageToken + * The continuation token, which is used to page through large result sets. To get the next page of + * results, set this parameter to the value of "nextPageToken" from the previous response. This + * token can be of any length. + * @opt_param string maxResults + * The maximum number of activities to include in the response, which is used for paging. For any + * response, the actual number returned might be less than the specified maxResults. + * @opt_param string language + * Specify the preferred language to search with. See search language codes for available values. + * @return Google_Service_Plus_ActivityFeed + */ + public function search($query, $optParams = array()) + { + $params = array('query' => $query); + $params = array_merge($params, $optParams); + return $this->call('search', array($params), "Google_Service_Plus_ActivityFeed"); + } +} + +/** + * The "comments" collection of methods. + * Typical usage is: + * + * $plusService = new Google_Service_Plus(...); + * $comments = $plusService->comments; + * + */ +class Google_Service_Plus_Comments_Resource extends Google_Service_Resource +{ + + /** + * Get a comment. (comments.get) + * + * @param string $commentId + * The ID of the comment to get. + * @param array $optParams Optional parameters. + * @return Google_Service_Plus_Comment + */ + public function get($commentId, $optParams = array()) + { + $params = array('commentId' => $commentId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Plus_Comment"); + } + /** + * List all of the comments for an activity. (comments.listComments) + * + * @param string $activityId + * The ID of the activity to get comments for. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The continuation token, which is used to page through large result sets. To get the next page of + * results, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string sortOrder + * The order in which to sort the list of comments. + * @opt_param string maxResults + * The maximum number of comments to include in the response, which is used for paging. For any + * response, the actual number returned might be less than the specified maxResults. + * @return Google_Service_Plus_CommentFeed + */ + public function listComments($activityId, $optParams = array()) + { + $params = array('activityId' => $activityId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Plus_CommentFeed"); + } +} + +/** + * The "moments" collection of methods. + * Typical usage is: + * + * $plusService = new Google_Service_Plus(...); + * $moments = $plusService->moments; + * + */ +class Google_Service_Plus_Moments_Resource extends Google_Service_Resource +{ + + /** + * Record a moment representing a user's action such as making a purchase or + * commenting on a blog. (moments.insert) + * + * @param string $userId + * The ID of the user to record actions for. The only valid values are "me" and the ID of the + * authenticated user. + * @param string $collection + * The collection to which to write moments. + * @param Google_Moment $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool debug + * Return the moment as written. Should be used only for debugging. + * @return Google_Service_Plus_Moment + */ + public function insert($userId, $collection, Google_Service_Plus_Moment $postBody, $optParams = array()) + { + $params = array('userId' => $userId, 'collection' => $collection, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Plus_Moment"); + } + /** + * List all of the moments for a particular user. (moments.listMoments) + * + * @param string $userId + * The ID of the user to get moments for. The special value "me" can be used to indicate the + * authenticated user. + * @param string $collection + * The collection of moments to list. + * @param array $optParams Optional parameters. + * + * @opt_param string maxResults + * The maximum number of moments to include in the response, which is used for paging. For any + * response, the actual number returned might be less than the specified maxResults. + * @opt_param string pageToken + * The continuation token, which is used to page through large result sets. To get the next page of + * results, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string targetUrl + * Only moments containing this targetUrl will be returned. + * @opt_param string type + * Only moments of this type will be returned. + * @return Google_Service_Plus_MomentsFeed + */ + public function listMoments($userId, $collection, $optParams = array()) + { + $params = array('userId' => $userId, 'collection' => $collection); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Plus_MomentsFeed"); + } + /** + * Delete a moment. (moments.remove) + * + * @param string $id + * The ID of the moment to delete. + * @param array $optParams Optional parameters. + */ + public function remove($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('remove', array($params)); + } +} + +/** + * The "people" collection of methods. + * Typical usage is: + * + * $plusService = new Google_Service_Plus(...); + * $people = $plusService->people; + * + */ +class Google_Service_Plus_People_Resource extends Google_Service_Resource +{ + + /** + * Get a person's profile. If your app uses scope + * https://www.googleapis.com/auth/plus.login, this method is guaranteed to + * return ageRange and language. (people.get) + * + * @param string $userId + * The ID of the person to get the profile for. The special value "me" can be used to indicate the + * authenticated user. + * @param array $optParams Optional parameters. + * @return Google_Service_Plus_Person + */ + public function get($userId, $optParams = array()) + { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Plus_Person"); + } + /** + * List all of the people in the specified collection. (people.listPeople) + * + * @param string $userId + * Get the collection of people for the person identified. Use "me" to indicate the authenticated + * user. + * @param string $collection + * The collection of people to list. + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy + * The order to return people in. + * @opt_param string pageToken + * The continuation token, which is used to page through large result sets. To get the next page of + * results, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of people to include in the response, which is used for paging. For any + * response, the actual number returned might be less than the specified maxResults. + * @return Google_Service_Plus_PeopleFeed + */ + public function listPeople($userId, $collection, $optParams = array()) + { + $params = array('userId' => $userId, 'collection' => $collection); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Plus_PeopleFeed"); + } + /** + * List all of the people in the specified collection for a particular activity. + * (people.listByActivity) + * + * @param string $activityId + * The ID of the activity to get the list of people for. + * @param string $collection + * The collection of people to list. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The continuation token, which is used to page through large result sets. To get the next page of + * results, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of people to include in the response, which is used for paging. For any + * response, the actual number returned might be less than the specified maxResults. + * @return Google_Service_Plus_PeopleFeed + */ + public function listByActivity($activityId, $collection, $optParams = array()) + { + $params = array('activityId' => $activityId, 'collection' => $collection); + $params = array_merge($params, $optParams); + return $this->call('listByActivity', array($params), "Google_Service_Plus_PeopleFeed"); + } + /** + * Search all public profiles. (people.search) + * + * @param string $query + * Specify a query string for full text search of public text in all profiles. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The continuation token, which is used to page through large result sets. To get the next page of + * results, set this parameter to the value of "nextPageToken" from the previous response. This + * token can be of any length. + * @opt_param string maxResults + * The maximum number of people to include in the response, which is used for paging. For any + * response, the actual number returned might be less than the specified maxResults. + * @opt_param string language + * Specify the preferred language to search with. See search language codes for available values. + * @return Google_Service_Plus_PeopleFeed + */ + public function search($query, $optParams = array()) + { + $params = array('query' => $query); + $params = array_merge($params, $optParams); + return $this->call('search', array($params), "Google_Service_Plus_PeopleFeed"); + } +} + + + + +class Google_Service_Plus_Acl extends Google_Collection +{ + public $description; + protected $itemsType = 'Google_Service_Plus_PlusAclentryResource'; + protected $itemsDataType = 'array'; + public $kind; + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Plus_Activity extends Google_Model +{ + protected $accessType = 'Google_Service_Plus_Acl'; + protected $accessDataType = ''; + protected $actorType = 'Google_Service_Plus_ActivityActor'; + protected $actorDataType = ''; + public $address; + public $annotation; + public $crosspostSource; + public $etag; + public $geocode; + public $id; + public $kind; + protected $locationType = 'Google_Service_Plus_Place'; + protected $locationDataType = ''; + protected $objectType = 'Google_Service_Plus_ActivityObject'; + protected $objectDataType = ''; + public $placeId; + public $placeName; + protected $providerType = 'Google_Service_Plus_ActivityProvider'; + protected $providerDataType = ''; + public $published; + public $radius; + public $title; + public $updated; + public $url; + public $verb; + + public function setAccess(Google_Service_Plus_Acl $access) + { + $this->access = $access; + } + + public function getAccess() + { + return $this->access; + } + + public function setActor(Google_Service_Plus_ActivityActor $actor) + { + $this->actor = $actor; + } + + public function getActor() + { + return $this->actor; + } + + public function setAddress($address) + { + $this->address = $address; + } + + public function getAddress() + { + return $this->address; + } + + public function setAnnotation($annotation) + { + $this->annotation = $annotation; + } + + public function getAnnotation() + { + return $this->annotation; + } + + public function setCrosspostSource($crosspostSource) + { + $this->crosspostSource = $crosspostSource; + } + + public function getCrosspostSource() + { + return $this->crosspostSource; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setGeocode($geocode) + { + $this->geocode = $geocode; + } + + public function getGeocode() + { + return $this->geocode; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLocation(Google_Service_Plus_Place $location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setObject(Google_Service_Plus_ActivityObject $object) + { + $this->object = $object; + } + + public function getObject() + { + return $this->object; + } + + public function setPlaceId($placeId) + { + $this->placeId = $placeId; + } + + public function getPlaceId() + { + return $this->placeId; + } + + public function setPlaceName($placeName) + { + $this->placeName = $placeName; + } + + public function getPlaceName() + { + return $this->placeName; + } + + public function setProvider(Google_Service_Plus_ActivityProvider $provider) + { + $this->provider = $provider; + } + + public function getProvider() + { + return $this->provider; + } + + public function setPublished($published) + { + $this->published = $published; + } + + public function getPublished() + { + return $this->published; + } + + public function setRadius($radius) + { + $this->radius = $radius; + } + + public function getRadius() + { + return $this->radius; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } + + public function setVerb($verb) + { + $this->verb = $verb; + } + + public function getVerb() + { + return $this->verb; + } +} + +class Google_Service_Plus_ActivityActor extends Google_Model +{ + public $displayName; + public $id; + protected $imageType = 'Google_Service_Plus_ActivityActorImage'; + protected $imageDataType = ''; + protected $nameType = 'Google_Service_Plus_ActivityActorName'; + protected $nameDataType = ''; + public $url; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImage(Google_Service_Plus_ActivityActorImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setName(Google_Service_Plus_ActivityActorName $name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Plus_ActivityActorImage extends Google_Model +{ + public $url; + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Plus_ActivityActorName extends Google_Model +{ + public $familyName; + public $givenName; + + public function setFamilyName($familyName) + { + $this->familyName = $familyName; + } + + public function getFamilyName() + { + return $this->familyName; + } + + public function setGivenName($givenName) + { + $this->givenName = $givenName; + } + + public function getGivenName() + { + return $this->givenName; + } +} + +class Google_Service_Plus_ActivityFeed extends Google_Collection +{ + public $etag; + public $id; + protected $itemsType = 'Google_Service_Plus_Activity'; + protected $itemsDataType = 'array'; + public $kind; + public $nextLink; + public $nextPageToken; + public $selfLink; + public $title; + public $updated; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } +} + +class Google_Service_Plus_ActivityObject extends Google_Collection +{ + protected $actorType = 'Google_Service_Plus_ActivityObjectActor'; + protected $actorDataType = ''; + protected $attachmentsType = 'Google_Service_Plus_ActivityObjectAttachments'; + protected $attachmentsDataType = 'array'; + public $content; + public $id; + public $objectType; + public $originalContent; + protected $plusonersType = 'Google_Service_Plus_ActivityObjectPlusoners'; + protected $plusonersDataType = ''; + protected $repliesType = 'Google_Service_Plus_ActivityObjectReplies'; + protected $repliesDataType = ''; + protected $resharersType = 'Google_Service_Plus_ActivityObjectResharers'; + protected $resharersDataType = ''; + public $url; + + public function setActor(Google_Service_Plus_ActivityObjectActor $actor) + { + $this->actor = $actor; + } + + public function getActor() + { + return $this->actor; + } + + public function setAttachments($attachments) + { + $this->attachments = $attachments; + } + + public function getAttachments() + { + return $this->attachments; + } + + public function setContent($content) + { + $this->content = $content; + } + + public function getContent() + { + return $this->content; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setObjectType($objectType) + { + $this->objectType = $objectType; + } + + public function getObjectType() + { + return $this->objectType; + } + + public function setOriginalContent($originalContent) + { + $this->originalContent = $originalContent; + } + + public function getOriginalContent() + { + return $this->originalContent; + } + + public function setPlusoners(Google_Service_Plus_ActivityObjectPlusoners $plusoners) + { + $this->plusoners = $plusoners; + } + + public function getPlusoners() + { + return $this->plusoners; + } + + public function setReplies(Google_Service_Plus_ActivityObjectReplies $replies) + { + $this->replies = $replies; + } + + public function getReplies() + { + return $this->replies; + } + + public function setResharers(Google_Service_Plus_ActivityObjectResharers $resharers) + { + $this->resharers = $resharers; + } + + public function getResharers() + { + return $this->resharers; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Plus_ActivityObjectActor extends Google_Model +{ + public $displayName; + public $id; + protected $imageType = 'Google_Service_Plus_ActivityObjectActorImage'; + protected $imageDataType = ''; + public $url; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImage(Google_Service_Plus_ActivityObjectActorImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Plus_ActivityObjectActorImage extends Google_Model +{ + public $url; + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Plus_ActivityObjectAttachments extends Google_Collection +{ + public $content; + public $displayName; + protected $embedType = 'Google_Service_Plus_ActivityObjectAttachmentsEmbed'; + protected $embedDataType = ''; + protected $fullImageType = 'Google_Service_Plus_ActivityObjectAttachmentsFullImage'; + protected $fullImageDataType = ''; + public $id; + protected $imageType = 'Google_Service_Plus_ActivityObjectAttachmentsImage'; + protected $imageDataType = ''; + public $objectType; + protected $thumbnailsType = 'Google_Service_Plus_ActivityObjectAttachmentsThumbnails'; + protected $thumbnailsDataType = 'array'; + public $url; + + public function setContent($content) + { + $this->content = $content; + } + + public function getContent() + { + return $this->content; + } + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setEmbed(Google_Service_Plus_ActivityObjectAttachmentsEmbed $embed) + { + $this->embed = $embed; + } + + public function getEmbed() + { + return $this->embed; + } + + public function setFullImage(Google_Service_Plus_ActivityObjectAttachmentsFullImage $fullImage) + { + $this->fullImage = $fullImage; + } + + public function getFullImage() + { + return $this->fullImage; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImage(Google_Service_Plus_ActivityObjectAttachmentsImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setObjectType($objectType) + { + $this->objectType = $objectType; + } + + public function getObjectType() + { + return $this->objectType; + } + + public function setThumbnails($thumbnails) + { + $this->thumbnails = $thumbnails; + } + + public function getThumbnails() + { + return $this->thumbnails; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Plus_ActivityObjectAttachmentsEmbed extends Google_Model +{ + public $type; + public $url; + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Plus_ActivityObjectAttachmentsFullImage extends Google_Model +{ + public $height; + public $type; + public $url; + public $width; + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_Plus_ActivityObjectAttachmentsImage extends Google_Model +{ + public $height; + public $type; + public $url; + public $width; + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_Plus_ActivityObjectAttachmentsThumbnails extends Google_Model +{ + public $description; + protected $imageType = 'Google_Service_Plus_ActivityObjectAttachmentsThumbnailsImage'; + protected $imageDataType = ''; + public $url; + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setImage(Google_Service_Plus_ActivityObjectAttachmentsThumbnailsImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Plus_ActivityObjectAttachmentsThumbnailsImage extends Google_Model +{ + public $height; + public $type; + public $url; + public $width; + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_Plus_ActivityObjectPlusoners extends Google_Model +{ + public $selfLink; + public $totalItems; + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_Plus_ActivityObjectReplies extends Google_Model +{ + public $selfLink; + public $totalItems; + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_Plus_ActivityObjectResharers extends Google_Model +{ + public $selfLink; + public $totalItems; + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_Plus_ActivityProvider extends Google_Model +{ + public $title; + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_Plus_Comment extends Google_Collection +{ + protected $actorType = 'Google_Service_Plus_CommentActor'; + protected $actorDataType = ''; + public $etag; + public $id; + protected $inReplyToType = 'Google_Service_Plus_CommentInReplyTo'; + protected $inReplyToDataType = 'array'; + public $kind; + protected $objectType = 'Google_Service_Plus_CommentObject'; + protected $objectDataType = ''; + protected $plusonersType = 'Google_Service_Plus_CommentPlusoners'; + protected $plusonersDataType = ''; + public $published; + public $selfLink; + public $updated; + public $verb; + + public function setActor(Google_Service_Plus_CommentActor $actor) + { + $this->actor = $actor; + } + + public function getActor() + { + return $this->actor; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInReplyTo($inReplyTo) + { + $this->inReplyTo = $inReplyTo; + } + + public function getInReplyTo() + { + return $this->inReplyTo; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setObject(Google_Service_Plus_CommentObject $object) + { + $this->object = $object; + } + + public function getObject() + { + return $this->object; + } + + public function setPlusoners(Google_Service_Plus_CommentPlusoners $plusoners) + { + $this->plusoners = $plusoners; + } + + public function getPlusoners() + { + return $this->plusoners; + } + + public function setPublished($published) + { + $this->published = $published; + } + + public function getPublished() + { + return $this->published; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setVerb($verb) + { + $this->verb = $verb; + } + + public function getVerb() + { + return $this->verb; + } +} + +class Google_Service_Plus_CommentActor extends Google_Model +{ + public $displayName; + public $id; + protected $imageType = 'Google_Service_Plus_CommentActorImage'; + protected $imageDataType = ''; + public $url; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImage(Google_Service_Plus_CommentActorImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Plus_CommentActorImage extends Google_Model +{ + public $url; + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Plus_CommentFeed extends Google_Collection +{ + public $etag; + public $id; + protected $itemsType = 'Google_Service_Plus_Comment'; + protected $itemsDataType = 'array'; + public $kind; + public $nextLink; + public $nextPageToken; + public $title; + public $updated; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } +} + +class Google_Service_Plus_CommentInReplyTo extends Google_Model +{ + public $id; + public $url; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Plus_CommentObject extends Google_Model +{ + public $content; + public $objectType; + public $originalContent; + + public function setContent($content) + { + $this->content = $content; + } + + public function getContent() + { + return $this->content; + } + + public function setObjectType($objectType) + { + $this->objectType = $objectType; + } + + public function getObjectType() + { + return $this->objectType; + } + + public function setOriginalContent($originalContent) + { + $this->originalContent = $originalContent; + } + + public function getOriginalContent() + { + return $this->originalContent; + } +} + +class Google_Service_Plus_CommentPlusoners extends Google_Model +{ + public $totalItems; + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_Plus_ItemScope extends Google_Collection +{ + protected $aboutType = 'Google_Service_Plus_ItemScope'; + protected $aboutDataType = ''; + public $additionalName; + protected $addressType = 'Google_Service_Plus_ItemScope'; + protected $addressDataType = ''; + public $addressCountry; + public $addressLocality; + public $addressRegion; + protected $associatedMediaType = 'Google_Service_Plus_ItemScope'; + protected $associatedMediaDataType = 'array'; + public $attendeeCount; + protected $attendeesType = 'Google_Service_Plus_ItemScope'; + protected $attendeesDataType = 'array'; + protected $audioType = 'Google_Service_Plus_ItemScope'; + protected $audioDataType = ''; + protected $authorType = 'Google_Service_Plus_ItemScope'; + protected $authorDataType = 'array'; + public $bestRating; + public $birthDate; + protected $byArtistType = 'Google_Service_Plus_ItemScope'; + protected $byArtistDataType = ''; + public $caption; + public $contentSize; + public $contentUrl; + protected $contributorType = 'Google_Service_Plus_ItemScope'; + protected $contributorDataType = 'array'; + public $dateCreated; + public $dateModified; + public $datePublished; + public $description; + public $duration; + public $embedUrl; + public $endDate; + public $familyName; + public $gender; + protected $geoType = 'Google_Service_Plus_ItemScope'; + protected $geoDataType = ''; + public $givenName; + public $height; + public $id; + public $image; + protected $inAlbumType = 'Google_Service_Plus_ItemScope'; + protected $inAlbumDataType = ''; + public $kind; + public $latitude; + protected $locationType = 'Google_Service_Plus_ItemScope'; + protected $locationDataType = ''; + public $longitude; + public $name; + protected $partOfTVSeriesType = 'Google_Service_Plus_ItemScope'; + protected $partOfTVSeriesDataType = ''; + protected $performersType = 'Google_Service_Plus_ItemScope'; + protected $performersDataType = 'array'; + public $playerType; + public $postOfficeBoxNumber; + public $postalCode; + public $ratingValue; + protected $reviewRatingType = 'Google_Service_Plus_ItemScope'; + protected $reviewRatingDataType = ''; + public $startDate; + public $streetAddress; + public $text; + protected $thumbnailType = 'Google_Service_Plus_ItemScope'; + protected $thumbnailDataType = ''; + public $thumbnailUrl; + public $tickerSymbol; + public $type; + public $url; + public $width; + public $worstRating; + + public function setAbout(Google_Service_Plus_ItemScope $about) + { + $this->about = $about; + } + + public function getAbout() + { + return $this->about; + } + + public function setAdditionalName($additionalName) + { + $this->additionalName = $additionalName; + } + + public function getAdditionalName() + { + return $this->additionalName; + } + + public function setAddress(Google_Service_Plus_ItemScope $address) + { + $this->address = $address; + } + + public function getAddress() + { + return $this->address; + } + + public function setAddressCountry($addressCountry) + { + $this->addressCountry = $addressCountry; + } + + public function getAddressCountry() + { + return $this->addressCountry; + } + + public function setAddressLocality($addressLocality) + { + $this->addressLocality = $addressLocality; + } + + public function getAddressLocality() + { + return $this->addressLocality; + } + + public function setAddressRegion($addressRegion) + { + $this->addressRegion = $addressRegion; + } + + public function getAddressRegion() + { + return $this->addressRegion; + } + + public function setAssociatedMedia($associatedMedia) + { + $this->associatedMedia = $associatedMedia; + } + + public function getAssociatedMedia() + { + return $this->associatedMedia; + } + + public function setAttendeeCount($attendeeCount) + { + $this->attendeeCount = $attendeeCount; + } + + public function getAttendeeCount() + { + return $this->attendeeCount; + } + + public function setAttendees($attendees) + { + $this->attendees = $attendees; + } + + public function getAttendees() + { + return $this->attendees; + } + + public function setAudio(Google_Service_Plus_ItemScope $audio) + { + $this->audio = $audio; + } + + public function getAudio() + { + return $this->audio; + } + + public function setAuthor($author) + { + $this->author = $author; + } + + public function getAuthor() + { + return $this->author; + } + + public function setBestRating($bestRating) + { + $this->bestRating = $bestRating; + } + + public function getBestRating() + { + return $this->bestRating; + } + + public function setBirthDate($birthDate) + { + $this->birthDate = $birthDate; + } + + public function getBirthDate() + { + return $this->birthDate; + } + + public function setByArtist(Google_Service_Plus_ItemScope $byArtist) + { + $this->byArtist = $byArtist; + } + + public function getByArtist() + { + return $this->byArtist; + } + + public function setCaption($caption) + { + $this->caption = $caption; + } + + public function getCaption() + { + return $this->caption; + } + + public function setContentSize($contentSize) + { + $this->contentSize = $contentSize; + } + + public function getContentSize() + { + return $this->contentSize; + } + + public function setContentUrl($contentUrl) + { + $this->contentUrl = $contentUrl; + } + + public function getContentUrl() + { + return $this->contentUrl; + } + + public function setContributor($contributor) + { + $this->contributor = $contributor; + } + + public function getContributor() + { + return $this->contributor; + } + + public function setDateCreated($dateCreated) + { + $this->dateCreated = $dateCreated; + } + + public function getDateCreated() + { + return $this->dateCreated; + } + + public function setDateModified($dateModified) + { + $this->dateModified = $dateModified; + } + + public function getDateModified() + { + return $this->dateModified; + } + + public function setDatePublished($datePublished) + { + $this->datePublished = $datePublished; + } + + public function getDatePublished() + { + return $this->datePublished; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDuration($duration) + { + $this->duration = $duration; + } + + public function getDuration() + { + return $this->duration; + } + + public function setEmbedUrl($embedUrl) + { + $this->embedUrl = $embedUrl; + } + + public function getEmbedUrl() + { + return $this->embedUrl; + } + + public function setEndDate($endDate) + { + $this->endDate = $endDate; + } + + public function getEndDate() + { + return $this->endDate; + } + + public function setFamilyName($familyName) + { + $this->familyName = $familyName; + } + + public function getFamilyName() + { + return $this->familyName; + } + + public function setGender($gender) + { + $this->gender = $gender; + } + + public function getGender() + { + return $this->gender; + } + + public function setGeo(Google_Service_Plus_ItemScope $geo) + { + $this->geo = $geo; + } + + public function getGeo() + { + return $this->geo; + } + + public function setGivenName($givenName) + { + $this->givenName = $givenName; + } + + public function getGivenName() + { + return $this->givenName; + } + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImage($image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setInAlbum(Google_Service_Plus_ItemScope $inAlbum) + { + $this->inAlbum = $inAlbum; + } + + public function getInAlbum() + { + return $this->inAlbum; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLatitude($latitude) + { + $this->latitude = $latitude; + } + + public function getLatitude() + { + return $this->latitude; + } + + public function setLocation(Google_Service_Plus_ItemScope $location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setLongitude($longitude) + { + $this->longitude = $longitude; + } + + public function getLongitude() + { + return $this->longitude; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPartOfTVSeries(Google_Service_Plus_ItemScope $partOfTVSeries) + { + $this->partOfTVSeries = $partOfTVSeries; + } + + public function getPartOfTVSeries() + { + return $this->partOfTVSeries; + } + + public function setPerformers($performers) + { + $this->performers = $performers; + } + + public function getPerformers() + { + return $this->performers; + } + + public function setPlayerType($playerType) + { + $this->playerType = $playerType; + } + + public function getPlayerType() + { + return $this->playerType; + } + + public function setPostOfficeBoxNumber($postOfficeBoxNumber) + { + $this->postOfficeBoxNumber = $postOfficeBoxNumber; + } + + public function getPostOfficeBoxNumber() + { + return $this->postOfficeBoxNumber; + } + + public function setPostalCode($postalCode) + { + $this->postalCode = $postalCode; + } + + public function getPostalCode() + { + return $this->postalCode; + } + + public function setRatingValue($ratingValue) + { + $this->ratingValue = $ratingValue; + } + + public function getRatingValue() + { + return $this->ratingValue; + } + + public function setReviewRating(Google_Service_Plus_ItemScope $reviewRating) + { + $this->reviewRating = $reviewRating; + } + + public function getReviewRating() + { + return $this->reviewRating; + } + + public function setStartDate($startDate) + { + $this->startDate = $startDate; + } + + public function getStartDate() + { + return $this->startDate; + } + + public function setStreetAddress($streetAddress) + { + $this->streetAddress = $streetAddress; + } + + public function getStreetAddress() + { + return $this->streetAddress; + } + + public function setText($text) + { + $this->text = $text; + } + + public function getText() + { + return $this->text; + } + + public function setThumbnail(Google_Service_Plus_ItemScope $thumbnail) + { + $this->thumbnail = $thumbnail; + } + + public function getThumbnail() + { + return $this->thumbnail; + } + + public function setThumbnailUrl($thumbnailUrl) + { + $this->thumbnailUrl = $thumbnailUrl; + } + + public function getThumbnailUrl() + { + return $this->thumbnailUrl; + } + + public function setTickerSymbol($tickerSymbol) + { + $this->tickerSymbol = $tickerSymbol; + } + + public function getTickerSymbol() + { + return $this->tickerSymbol; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } + + public function setWorstRating($worstRating) + { + $this->worstRating = $worstRating; + } + + public function getWorstRating() + { + return $this->worstRating; + } +} + +class Google_Service_Plus_Moment extends Google_Model +{ + public $id; + public $kind; + protected $objectType = 'Google_Service_Plus_ItemScope'; + protected $objectDataType = ''; + protected $resultType = 'Google_Service_Plus_ItemScope'; + protected $resultDataType = ''; + public $startDate; + protected $targetType = 'Google_Service_Plus_ItemScope'; + protected $targetDataType = ''; + public $type; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setObject(Google_Service_Plus_ItemScope $object) + { + $this->object = $object; + } + + public function getObject() + { + return $this->object; + } + + public function setResult(Google_Service_Plus_ItemScope $result) + { + $this->result = $result; + } + + public function getResult() + { + return $this->result; + } + + public function setStartDate($startDate) + { + $this->startDate = $startDate; + } + + public function getStartDate() + { + return $this->startDate; + } + + public function setTarget(Google_Service_Plus_ItemScope $target) + { + $this->target = $target; + } + + public function getTarget() + { + return $this->target; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Plus_MomentsFeed extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Plus_Moment'; + protected $itemsDataType = 'array'; + public $kind; + public $nextLink; + public $nextPageToken; + public $selfLink; + public $title; + public $updated; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } +} + +class Google_Service_Plus_PeopleFeed extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Plus_Person'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + public $title; + public $totalItems; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_Plus_Person extends Google_Collection +{ + public $aboutMe; + protected $ageRangeType = 'Google_Service_Plus_PersonAgeRange'; + protected $ageRangeDataType = ''; + public $birthday; + public $braggingRights; + public $circledByCount; + protected $coverType = 'Google_Service_Plus_PersonCover'; + protected $coverDataType = ''; + public $currentLocation; + public $displayName; + public $domain; + protected $emailsType = 'Google_Service_Plus_PersonEmails'; + protected $emailsDataType = 'array'; + public $etag; + public $gender; + public $id; + protected $imageType = 'Google_Service_Plus_PersonImage'; + protected $imageDataType = ''; + public $isPlusUser; + public $kind; + public $language; + protected $nameType = 'Google_Service_Plus_PersonName'; + protected $nameDataType = ''; + public $nickname; + public $objectType; + public $occupation; + protected $organizationsType = 'Google_Service_Plus_PersonOrganizations'; + protected $organizationsDataType = 'array'; + protected $placesLivedType = 'Google_Service_Plus_PersonPlacesLived'; + protected $placesLivedDataType = 'array'; + public $plusOneCount; + public $relationshipStatus; + public $skills; + public $tagline; + public $url; + protected $urlsType = 'Google_Service_Plus_PersonUrls'; + protected $urlsDataType = 'array'; + public $verified; + + public function setAboutMe($aboutMe) + { + $this->aboutMe = $aboutMe; + } + + public function getAboutMe() + { + return $this->aboutMe; + } + + public function setAgeRange(Google_Service_Plus_PersonAgeRange $ageRange) + { + $this->ageRange = $ageRange; + } + + public function getAgeRange() + { + return $this->ageRange; + } + + public function setBirthday($birthday) + { + $this->birthday = $birthday; + } + + public function getBirthday() + { + return $this->birthday; + } + + public function setBraggingRights($braggingRights) + { + $this->braggingRights = $braggingRights; + } + + public function getBraggingRights() + { + return $this->braggingRights; + } + + public function setCircledByCount($circledByCount) + { + $this->circledByCount = $circledByCount; + } + + public function getCircledByCount() + { + return $this->circledByCount; + } + + public function setCover(Google_Service_Plus_PersonCover $cover) + { + $this->cover = $cover; + } + + public function getCover() + { + return $this->cover; + } + + public function setCurrentLocation($currentLocation) + { + $this->currentLocation = $currentLocation; + } + + public function getCurrentLocation() + { + return $this->currentLocation; + } + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setDomain($domain) + { + $this->domain = $domain; + } + + public function getDomain() + { + return $this->domain; + } + + public function setEmails($emails) + { + $this->emails = $emails; + } + + public function getEmails() + { + return $this->emails; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setGender($gender) + { + $this->gender = $gender; + } + + public function getGender() + { + return $this->gender; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImage(Google_Service_Plus_PersonImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setIsPlusUser($isPlusUser) + { + $this->isPlusUser = $isPlusUser; + } + + public function getIsPlusUser() + { + return $this->isPlusUser; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLanguage($language) + { + $this->language = $language; + } + + public function getLanguage() + { + return $this->language; + } + + public function setName(Google_Service_Plus_PersonName $name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNickname($nickname) + { + $this->nickname = $nickname; + } + + public function getNickname() + { + return $this->nickname; + } + + public function setObjectType($objectType) + { + $this->objectType = $objectType; + } + + public function getObjectType() + { + return $this->objectType; + } + + public function setOccupation($occupation) + { + $this->occupation = $occupation; + } + + public function getOccupation() + { + return $this->occupation; + } + + public function setOrganizations($organizations) + { + $this->organizations = $organizations; + } + + public function getOrganizations() + { + return $this->organizations; + } + + public function setPlacesLived($placesLived) + { + $this->placesLived = $placesLived; + } + + public function getPlacesLived() + { + return $this->placesLived; + } + + public function setPlusOneCount($plusOneCount) + { + $this->plusOneCount = $plusOneCount; + } + + public function getPlusOneCount() + { + return $this->plusOneCount; + } + + public function setRelationshipStatus($relationshipStatus) + { + $this->relationshipStatus = $relationshipStatus; + } + + public function getRelationshipStatus() + { + return $this->relationshipStatus; + } + + public function setSkills($skills) + { + $this->skills = $skills; + } + + public function getSkills() + { + return $this->skills; + } + + public function setTagline($tagline) + { + $this->tagline = $tagline; + } + + public function getTagline() + { + return $this->tagline; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } + + public function setUrls($urls) + { + $this->urls = $urls; + } + + public function getUrls() + { + return $this->urls; + } + + public function setVerified($verified) + { + $this->verified = $verified; + } + + public function getVerified() + { + return $this->verified; + } +} + +class Google_Service_Plus_PersonAgeRange extends Google_Model +{ + public $max; + public $min; + + public function setMax($max) + { + $this->max = $max; + } + + public function getMax() + { + return $this->max; + } + + public function setMin($min) + { + $this->min = $min; + } + + public function getMin() + { + return $this->min; + } +} + +class Google_Service_Plus_PersonCover extends Google_Model +{ + protected $coverInfoType = 'Google_Service_Plus_PersonCoverCoverInfo'; + protected $coverInfoDataType = ''; + protected $coverPhotoType = 'Google_Service_Plus_PersonCoverCoverPhoto'; + protected $coverPhotoDataType = ''; + public $layout; + + public function setCoverInfo(Google_Service_Plus_PersonCoverCoverInfo $coverInfo) + { + $this->coverInfo = $coverInfo; + } + + public function getCoverInfo() + { + return $this->coverInfo; + } + + public function setCoverPhoto(Google_Service_Plus_PersonCoverCoverPhoto $coverPhoto) + { + $this->coverPhoto = $coverPhoto; + } + + public function getCoverPhoto() + { + return $this->coverPhoto; + } + + public function setLayout($layout) + { + $this->layout = $layout; + } + + public function getLayout() + { + return $this->layout; + } +} + +class Google_Service_Plus_PersonCoverCoverInfo extends Google_Model +{ + public $leftImageOffset; + public $topImageOffset; + + public function setLeftImageOffset($leftImageOffset) + { + $this->leftImageOffset = $leftImageOffset; + } + + public function getLeftImageOffset() + { + return $this->leftImageOffset; + } + + public function setTopImageOffset($topImageOffset) + { + $this->topImageOffset = $topImageOffset; + } + + public function getTopImageOffset() + { + return $this->topImageOffset; + } +} + +class Google_Service_Plus_PersonCoverCoverPhoto extends Google_Model +{ + public $height; + public $url; + public $width; + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_Plus_PersonEmails extends Google_Model +{ + public $type; + public $value; + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Plus_PersonImage extends Google_Model +{ + public $isDefault; + public $url; + + public function setIsDefault($isDefault) + { + $this->isDefault = $isDefault; + } + + public function getIsDefault() + { + return $this->isDefault; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_Plus_PersonName extends Google_Model +{ + public $familyName; + public $formatted; + public $givenName; + public $honorificPrefix; + public $honorificSuffix; + public $middleName; + + public function setFamilyName($familyName) + { + $this->familyName = $familyName; + } + + public function getFamilyName() + { + return $this->familyName; + } + + public function setFormatted($formatted) + { + $this->formatted = $formatted; + } + + public function getFormatted() + { + return $this->formatted; + } + + public function setGivenName($givenName) + { + $this->givenName = $givenName; + } + + public function getGivenName() + { + return $this->givenName; + } + + public function setHonorificPrefix($honorificPrefix) + { + $this->honorificPrefix = $honorificPrefix; + } + + public function getHonorificPrefix() + { + return $this->honorificPrefix; + } + + public function setHonorificSuffix($honorificSuffix) + { + $this->honorificSuffix = $honorificSuffix; + } + + public function getHonorificSuffix() + { + return $this->honorificSuffix; + } + + public function setMiddleName($middleName) + { + $this->middleName = $middleName; + } + + public function getMiddleName() + { + return $this->middleName; + } +} + +class Google_Service_Plus_PersonOrganizations extends Google_Model +{ + public $department; + public $description; + public $endDate; + public $location; + public $name; + public $primary; + public $startDate; + public $title; + public $type; + + public function setDepartment($department) + { + $this->department = $department; + } + + public function getDepartment() + { + return $this->department; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setEndDate($endDate) + { + $this->endDate = $endDate; + } + + public function getEndDate() + { + return $this->endDate; + } + + public function setLocation($location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPrimary($primary) + { + $this->primary = $primary; + } + + public function getPrimary() + { + return $this->primary; + } + + public function setStartDate($startDate) + { + $this->startDate = $startDate; + } + + public function getStartDate() + { + return $this->startDate; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Plus_PersonPlacesLived extends Google_Model +{ + public $primary; + public $value; + + public function setPrimary($primary) + { + $this->primary = $primary; + } + + public function getPrimary() + { + return $this->primary; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Plus_PersonUrls extends Google_Model +{ + public $label; + public $type; + public $value; + + public function setLabel($label) + { + $this->label = $label; + } + + public function getLabel() + { + return $this->label; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Plus_Place extends Google_Model +{ + protected $addressType = 'Google_Service_Plus_PlaceAddress'; + protected $addressDataType = ''; + public $displayName; + public $id; + public $kind; + protected $positionType = 'Google_Service_Plus_PlacePosition'; + protected $positionDataType = ''; + + public function setAddress(Google_Service_Plus_PlaceAddress $address) + { + $this->address = $address; + } + + public function getAddress() + { + return $this->address; + } + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPosition(Google_Service_Plus_PlacePosition $position) + { + $this->position = $position; + } + + public function getPosition() + { + return $this->position; + } +} + +class Google_Service_Plus_PlaceAddress extends Google_Model +{ + public $formatted; + + public function setFormatted($formatted) + { + $this->formatted = $formatted; + } + + public function getFormatted() + { + return $this->formatted; + } +} + +class Google_Service_Plus_PlacePosition extends Google_Model +{ + public $latitude; + public $longitude; + + public function setLatitude($latitude) + { + $this->latitude = $latitude; + } + + public function getLatitude() + { + return $this->latitude; + } + + public function setLongitude($longitude) + { + $this->longitude = $longitude; + } + + public function getLongitude() + { + return $this->longitude; + } +} + +class Google_Service_Plus_PlusAclentryResource extends Google_Model +{ + public $displayName; + public $id; + public $type; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} diff --git a/oauth/Google/Service/PlusDomains.php b/oauth/Google/Service/PlusDomains.php new file mode 100644 index 0000000..3cd3bbe --- /dev/null +++ b/oauth/Google/Service/PlusDomains.php @@ -0,0 +1,4010 @@ + + * The Google+ API enables developers to build on top of the Google+ platform. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_PlusDomains extends Google_Service +{ + /** View your circles and the people and pages in them. */ + const PLUS_CIRCLES_READ = "https://www.googleapis.com/auth/plus.circles.read"; + /** Manage your circles and add people and pages. People and pages you add to your circles will be notified. Others may see this information publicly. People you add to circles can use Hangouts with you.. */ + const PLUS_CIRCLES_WRITE = "https://www.googleapis.com/auth/plus.circles.write"; + /** Know your basic profile info and list of people in your circles.. */ + const PLUS_LOGIN = "https://www.googleapis.com/auth/plus.login"; + /** Know who you are on Google. */ + const PLUS_ME = "https://www.googleapis.com/auth/plus.me"; + /** Send your photos and videos to Google+. */ + const PLUS_MEDIA_UPLOAD = "https://www.googleapis.com/auth/plus.media.upload"; + /** View your own Google+ profile and profiles visible to you. */ + const PLUS_PROFILES_READ = "https://www.googleapis.com/auth/plus.profiles.read"; + /** View your Google+ posts, comments, and stream. */ + const PLUS_STREAM_READ = "https://www.googleapis.com/auth/plus.stream.read"; + /** Manage your Google+ posts, comments, and stream. */ + const PLUS_STREAM_WRITE = "https://www.googleapis.com/auth/plus.stream.write"; + /** View your email address. */ + const USERINFO_EMAIL = "https://www.googleapis.com/auth/userinfo.email"; + /** View your basic profile info. */ + const USERINFO_PROFILE = "https://www.googleapis.com/auth/userinfo.profile"; + + public $activities; + public $audiences; + public $circles; + public $comments; + public $media; + public $people; + + + /** + * Constructs the internal representation of the PlusDomains service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'plusDomains/v1/'; + $this->version = 'v1'; + $this->serviceName = 'plusDomains'; + + $this->activities = new Google_Service_PlusDomains_Activities_Resource( + $this, + $this->serviceName, + 'activities', + array( + 'methods' => array( + 'get' => array( + 'path' => 'activities/{activityId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'activityId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'people/{userId}/activities', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'preview' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'list' => array( + 'path' => 'people/{userId}/activities/{collection}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'collection' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->audiences = new Google_Service_PlusDomains_Audiences_Resource( + $this, + $this->serviceName, + 'audiences', + array( + 'methods' => array( + 'list' => array( + 'path' => 'people/{userId}/audiences', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->circles = new Google_Service_PlusDomains_Circles_Resource( + $this, + $this->serviceName, + 'circles', + array( + 'methods' => array( + 'addPeople' => array( + 'path' => 'circles/{circleId}/people', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'circleId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'userId' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'email' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + ), + ),'get' => array( + 'path' => 'circles/{circleId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'circleId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'people/{userId}/circles', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'people/{userId}/circles', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'circles/{circleId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'circleId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'remove' => array( + 'path' => 'circles/{circleId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'circleId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'removePeople' => array( + 'path' => 'circles/{circleId}/people', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'circleId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'userId' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + 'email' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + ), + ),'update' => array( + 'path' => 'circles/{circleId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'circleId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->comments = new Google_Service_PlusDomains_Comments_Resource( + $this, + $this->serviceName, + 'comments', + array( + 'methods' => array( + 'get' => array( + 'path' => 'comments/{commentId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'commentId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'activities/{activityId}/comments', + 'httpMethod' => 'POST', + 'parameters' => array( + 'activityId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'activities/{activityId}/comments', + 'httpMethod' => 'GET', + 'parameters' => array( + 'activityId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sortOrder' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->media = new Google_Service_PlusDomains_Media_Resource( + $this, + $this->serviceName, + 'media', + array( + 'methods' => array( + 'insert' => array( + 'path' => 'people/{userId}/media/{collection}', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'collection' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->people = new Google_Service_PlusDomains_People_Resource( + $this, + $this->serviceName, + 'people', + array( + 'methods' => array( + 'get' => array( + 'path' => 'people/{userId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'people/{userId}/people/{collection}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'collection' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'orderBy' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'listByActivity' => array( + 'path' => 'activities/{activityId}/people/{collection}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'activityId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'collection' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'listByCircle' => array( + 'path' => 'circles/{circleId}/people', + 'httpMethod' => 'GET', + 'parameters' => array( + 'circleId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "activities" collection of methods. + * Typical usage is: + * + * $plusDomainsService = new Google_Service_PlusDomains(...); + * $activities = $plusDomainsService->activities; + * + */ +class Google_Service_PlusDomains_Activities_Resource extends Google_Service_Resource +{ + + /** + * Get an activity. (activities.get) + * + * @param string $activityId + * The ID of the activity to get. + * @param array $optParams Optional parameters. + * @return Google_Service_PlusDomains_Activity + */ + public function get($activityId, $optParams = array()) + { + $params = array('activityId' => $activityId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_PlusDomains_Activity"); + } + /** + * Create a new activity for the authenticated user. (activities.insert) + * + * @param string $userId + * The ID of the user to create the activity on behalf of. Its value should be "me", to indicate + * the authenticated user. + * @param Google_Activity $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool preview + * If "true", extract the potential media attachments for a URL. The response will include all + * possible attachments for a URL, including video, photos, and articles based on the content of + * the page. + * @return Google_Service_PlusDomains_Activity + */ + public function insert($userId, Google_Service_PlusDomains_Activity $postBody, $optParams = array()) + { + $params = array('userId' => $userId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_PlusDomains_Activity"); + } + /** + * List all of the activities in the specified collection for a particular user. + * (activities.listActivities) + * + * @param string $userId + * The ID of the user to get activities for. The special value "me" can be used to indicate the + * authenticated user. + * @param string $collection + * The collection of activities to list. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The continuation token, which is used to page through large result sets. To get the next page of + * results, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of activities to include in the response, which is used for paging. For any + * response, the actual number returned might be less than the specified maxResults. + * @return Google_Service_PlusDomains_ActivityFeed + */ + public function listActivities($userId, $collection, $optParams = array()) + { + $params = array('userId' => $userId, 'collection' => $collection); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_PlusDomains_ActivityFeed"); + } +} + +/** + * The "audiences" collection of methods. + * Typical usage is: + * + * $plusDomainsService = new Google_Service_PlusDomains(...); + * $audiences = $plusDomainsService->audiences; + * + */ +class Google_Service_PlusDomains_Audiences_Resource extends Google_Service_Resource +{ + + /** + * List all of the audiences to which a user can share. + * (audiences.listAudiences) + * + * @param string $userId + * The ID of the user to get audiences for. The special value "me" can be used to indicate the + * authenticated user. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The continuation token, which is used to page through large result sets. To get the next page of + * results, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of circles to include in the response, which is used for paging. For any + * response, the actual number returned might be less than the specified maxResults. + * @return Google_Service_PlusDomains_AudiencesFeed + */ + public function listAudiences($userId, $optParams = array()) + { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_PlusDomains_AudiencesFeed"); + } +} + +/** + * The "circles" collection of methods. + * Typical usage is: + * + * $plusDomainsService = new Google_Service_PlusDomains(...); + * $circles = $plusDomainsService->circles; + * + */ +class Google_Service_PlusDomains_Circles_Resource extends Google_Service_Resource +{ + + /** + * Add a person to a circle. Google+ limits certain circle operations, including + * the number of circle adds. Learn More. (circles.addPeople) + * + * @param string $circleId + * The ID of the circle to add the person to. + * @param array $optParams Optional parameters. + * + * @opt_param string userId + * IDs of the people to add to the circle. Optional, can be repeated. + * @opt_param string email + * Email of the people to add to the circle. Optional, can be repeated. + * @return Google_Service_PlusDomains_Circle + */ + public function addPeople($circleId, $optParams = array()) + { + $params = array('circleId' => $circleId); + $params = array_merge($params, $optParams); + return $this->call('addPeople', array($params), "Google_Service_PlusDomains_Circle"); + } + /** + * Get a circle. (circles.get) + * + * @param string $circleId + * The ID of the circle to get. + * @param array $optParams Optional parameters. + * @return Google_Service_PlusDomains_Circle + */ + public function get($circleId, $optParams = array()) + { + $params = array('circleId' => $circleId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_PlusDomains_Circle"); + } + /** + * Create a new circle for the authenticated user. (circles.insert) + * + * @param string $userId + * The ID of the user to create the circle on behalf of. The value "me" can be used to indicate the + * authenticated user. + * @param Google_Circle $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_PlusDomains_Circle + */ + public function insert($userId, Google_Service_PlusDomains_Circle $postBody, $optParams = array()) + { + $params = array('userId' => $userId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_PlusDomains_Circle"); + } + /** + * List all of the circles for a user. (circles.listCircles) + * + * @param string $userId + * The ID of the user to get circles for. The special value "me" can be used to indicate the + * authenticated user. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The continuation token, which is used to page through large result sets. To get the next page of + * results, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of circles to include in the response, which is used for paging. For any + * response, the actual number returned might be less than the specified maxResults. + * @return Google_Service_PlusDomains_CircleFeed + */ + public function listCircles($userId, $optParams = array()) + { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_PlusDomains_CircleFeed"); + } + /** + * Update a circle's description. This method supports patch semantics. + * (circles.patch) + * + * @param string $circleId + * The ID of the circle to update. + * @param Google_Circle $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_PlusDomains_Circle + */ + public function patch($circleId, Google_Service_PlusDomains_Circle $postBody, $optParams = array()) + { + $params = array('circleId' => $circleId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_PlusDomains_Circle"); + } + /** + * Delete a circle. (circles.remove) + * + * @param string $circleId + * The ID of the circle to delete. + * @param array $optParams Optional parameters. + */ + public function remove($circleId, $optParams = array()) + { + $params = array('circleId' => $circleId); + $params = array_merge($params, $optParams); + return $this->call('remove', array($params)); + } + /** + * Remove a person from a circle. (circles.removePeople) + * + * @param string $circleId + * The ID of the circle to remove the person from. + * @param array $optParams Optional parameters. + * + * @opt_param string userId + * IDs of the people to remove from the circle. Optional, can be repeated. + * @opt_param string email + * Email of the people to add to the circle. Optional, can be repeated. + */ + public function removePeople($circleId, $optParams = array()) + { + $params = array('circleId' => $circleId); + $params = array_merge($params, $optParams); + return $this->call('removePeople', array($params)); + } + /** + * Update a circle's description. (circles.update) + * + * @param string $circleId + * The ID of the circle to update. + * @param Google_Circle $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_PlusDomains_Circle + */ + public function update($circleId, Google_Service_PlusDomains_Circle $postBody, $optParams = array()) + { + $params = array('circleId' => $circleId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_PlusDomains_Circle"); + } +} + +/** + * The "comments" collection of methods. + * Typical usage is: + * + * $plusDomainsService = new Google_Service_PlusDomains(...); + * $comments = $plusDomainsService->comments; + * + */ +class Google_Service_PlusDomains_Comments_Resource extends Google_Service_Resource +{ + + /** + * Get a comment. (comments.get) + * + * @param string $commentId + * The ID of the comment to get. + * @param array $optParams Optional parameters. + * @return Google_Service_PlusDomains_Comment + */ + public function get($commentId, $optParams = array()) + { + $params = array('commentId' => $commentId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_PlusDomains_Comment"); + } + /** + * Create a new comment in reply to an activity. (comments.insert) + * + * @param string $activityId + * The ID of the activity to reply to. + * @param Google_Comment $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_PlusDomains_Comment + */ + public function insert($activityId, Google_Service_PlusDomains_Comment $postBody, $optParams = array()) + { + $params = array('activityId' => $activityId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_PlusDomains_Comment"); + } + /** + * List all of the comments for an activity. (comments.listComments) + * + * @param string $activityId + * The ID of the activity to get comments for. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The continuation token, which is used to page through large result sets. To get the next page of + * results, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string sortOrder + * The order in which to sort the list of comments. + * @opt_param string maxResults + * The maximum number of comments to include in the response, which is used for paging. For any + * response, the actual number returned might be less than the specified maxResults. + * @return Google_Service_PlusDomains_CommentFeed + */ + public function listComments($activityId, $optParams = array()) + { + $params = array('activityId' => $activityId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_PlusDomains_CommentFeed"); + } +} + +/** + * The "media" collection of methods. + * Typical usage is: + * + * $plusDomainsService = new Google_Service_PlusDomains(...); + * $media = $plusDomainsService->media; + * + */ +class Google_Service_PlusDomains_Media_Resource extends Google_Service_Resource +{ + + /** + * Add a new media item to an album. The current upload size limitations are + * 36MB for a photo and 1GB for a video. Uploads do not count against quota if + * photos are less than 2048 pixels on their longest side or videos are less + * than 15 minutes in length. (media.insert) + * + * @param string $userId + * The ID of the user to create the activity on behalf of. + * @param string $collection + * + * @param Google_Media $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_PlusDomains_Media + */ + public function insert($userId, $collection, Google_Service_PlusDomains_Media $postBody, $optParams = array()) + { + $params = array('userId' => $userId, 'collection' => $collection, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_PlusDomains_Media"); + } +} + +/** + * The "people" collection of methods. + * Typical usage is: + * + * $plusDomainsService = new Google_Service_PlusDomains(...); + * $people = $plusDomainsService->people; + * + */ +class Google_Service_PlusDomains_People_Resource extends Google_Service_Resource +{ + + /** + * Get a person's profile. (people.get) + * + * @param string $userId + * The ID of the person to get the profile for. The special value "me" can be used to indicate the + * authenticated user. + * @param array $optParams Optional parameters. + * @return Google_Service_PlusDomains_Person + */ + public function get($userId, $optParams = array()) + { + $params = array('userId' => $userId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_PlusDomains_Person"); + } + /** + * List all of the people in the specified collection. (people.listPeople) + * + * @param string $userId + * Get the collection of people for the person identified. Use "me" to indicate the authenticated + * user. + * @param string $collection + * The collection of people to list. + * @param array $optParams Optional parameters. + * + * @opt_param string orderBy + * The order to return people in. + * @opt_param string pageToken + * The continuation token, which is used to page through large result sets. To get the next page of + * results, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of people to include in the response, which is used for paging. For any + * response, the actual number returned might be less than the specified maxResults. + * @return Google_Service_PlusDomains_PeopleFeed + */ + public function listPeople($userId, $collection, $optParams = array()) + { + $params = array('userId' => $userId, 'collection' => $collection); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_PlusDomains_PeopleFeed"); + } + /** + * List all of the people in the specified collection for a particular activity. + * (people.listByActivity) + * + * @param string $activityId + * The ID of the activity to get the list of people for. + * @param string $collection + * The collection of people to list. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The continuation token, which is used to page through large result sets. To get the next page of + * results, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of people to include in the response, which is used for paging. For any + * response, the actual number returned might be less than the specified maxResults. + * @return Google_Service_PlusDomains_PeopleFeed + */ + public function listByActivity($activityId, $collection, $optParams = array()) + { + $params = array('activityId' => $activityId, 'collection' => $collection); + $params = array_merge($params, $optParams); + return $this->call('listByActivity', array($params), "Google_Service_PlusDomains_PeopleFeed"); + } + /** + * List all of the people who are members of a circle. (people.listByCircle) + * + * @param string $circleId + * The ID of the circle to get the members of. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The continuation token, which is used to page through large result sets. To get the next page of + * results, set this parameter to the value of "nextPageToken" from the previous response. + * @opt_param string maxResults + * The maximum number of people to include in the response, which is used for paging. For any + * response, the actual number returned might be less than the specified maxResults. + * @return Google_Service_PlusDomains_PeopleFeed + */ + public function listByCircle($circleId, $optParams = array()) + { + $params = array('circleId' => $circleId); + $params = array_merge($params, $optParams); + return $this->call('listByCircle', array($params), "Google_Service_PlusDomains_PeopleFeed"); + } +} + + + + +class Google_Service_PlusDomains_Acl extends Google_Collection +{ + public $description; + public $domainRestricted; + protected $itemsType = 'Google_Service_PlusDomains_PlusDomainsAclentryResource'; + protected $itemsDataType = 'array'; + public $kind; + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDomainRestricted($domainRestricted) + { + $this->domainRestricted = $domainRestricted; + } + + public function getDomainRestricted() + { + return $this->domainRestricted; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_PlusDomains_Activity extends Google_Model +{ + protected $accessType = 'Google_Service_PlusDomains_Acl'; + protected $accessDataType = ''; + protected $actorType = 'Google_Service_PlusDomains_ActivityActor'; + protected $actorDataType = ''; + public $address; + public $annotation; + public $crosspostSource; + public $etag; + public $geocode; + public $id; + public $kind; + protected $locationType = 'Google_Service_PlusDomains_Place'; + protected $locationDataType = ''; + protected $objectType = 'Google_Service_PlusDomains_ActivityObject'; + protected $objectDataType = ''; + public $placeId; + public $placeName; + protected $providerType = 'Google_Service_PlusDomains_ActivityProvider'; + protected $providerDataType = ''; + public $published; + public $radius; + public $title; + public $updated; + public $url; + public $verb; + + public function setAccess(Google_Service_PlusDomains_Acl $access) + { + $this->access = $access; + } + + public function getAccess() + { + return $this->access; + } + + public function setActor(Google_Service_PlusDomains_ActivityActor $actor) + { + $this->actor = $actor; + } + + public function getActor() + { + return $this->actor; + } + + public function setAddress($address) + { + $this->address = $address; + } + + public function getAddress() + { + return $this->address; + } + + public function setAnnotation($annotation) + { + $this->annotation = $annotation; + } + + public function getAnnotation() + { + return $this->annotation; + } + + public function setCrosspostSource($crosspostSource) + { + $this->crosspostSource = $crosspostSource; + } + + public function getCrosspostSource() + { + return $this->crosspostSource; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setGeocode($geocode) + { + $this->geocode = $geocode; + } + + public function getGeocode() + { + return $this->geocode; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLocation(Google_Service_PlusDomains_Place $location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setObject(Google_Service_PlusDomains_ActivityObject $object) + { + $this->object = $object; + } + + public function getObject() + { + return $this->object; + } + + public function setPlaceId($placeId) + { + $this->placeId = $placeId; + } + + public function getPlaceId() + { + return $this->placeId; + } + + public function setPlaceName($placeName) + { + $this->placeName = $placeName; + } + + public function getPlaceName() + { + return $this->placeName; + } + + public function setProvider(Google_Service_PlusDomains_ActivityProvider $provider) + { + $this->provider = $provider; + } + + public function getProvider() + { + return $this->provider; + } + + public function setPublished($published) + { + $this->published = $published; + } + + public function getPublished() + { + return $this->published; + } + + public function setRadius($radius) + { + $this->radius = $radius; + } + + public function getRadius() + { + return $this->radius; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } + + public function setVerb($verb) + { + $this->verb = $verb; + } + + public function getVerb() + { + return $this->verb; + } +} + +class Google_Service_PlusDomains_ActivityActor extends Google_Model +{ + public $displayName; + public $id; + protected $imageType = 'Google_Service_PlusDomains_ActivityActorImage'; + protected $imageDataType = ''; + protected $nameType = 'Google_Service_PlusDomains_ActivityActorName'; + protected $nameDataType = ''; + public $url; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImage(Google_Service_PlusDomains_ActivityActorImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setName(Google_Service_PlusDomains_ActivityActorName $name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_PlusDomains_ActivityActorImage extends Google_Model +{ + public $url; + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_PlusDomains_ActivityActorName extends Google_Model +{ + public $familyName; + public $givenName; + + public function setFamilyName($familyName) + { + $this->familyName = $familyName; + } + + public function getFamilyName() + { + return $this->familyName; + } + + public function setGivenName($givenName) + { + $this->givenName = $givenName; + } + + public function getGivenName() + { + return $this->givenName; + } +} + +class Google_Service_PlusDomains_ActivityFeed extends Google_Collection +{ + public $etag; + public $id; + protected $itemsType = 'Google_Service_PlusDomains_Activity'; + protected $itemsDataType = 'array'; + public $kind; + public $nextLink; + public $nextPageToken; + public $selfLink; + public $title; + public $updated; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } +} + +class Google_Service_PlusDomains_ActivityObject extends Google_Collection +{ + protected $actorType = 'Google_Service_PlusDomains_ActivityObjectActor'; + protected $actorDataType = ''; + protected $attachmentsType = 'Google_Service_PlusDomains_ActivityObjectAttachments'; + protected $attachmentsDataType = 'array'; + public $content; + public $id; + public $objectType; + public $originalContent; + protected $plusonersType = 'Google_Service_PlusDomains_ActivityObjectPlusoners'; + protected $plusonersDataType = ''; + protected $repliesType = 'Google_Service_PlusDomains_ActivityObjectReplies'; + protected $repliesDataType = ''; + protected $resharersType = 'Google_Service_PlusDomains_ActivityObjectResharers'; + protected $resharersDataType = ''; + protected $statusForViewerType = 'Google_Service_PlusDomains_ActivityObjectStatusForViewer'; + protected $statusForViewerDataType = ''; + public $url; + + public function setActor(Google_Service_PlusDomains_ActivityObjectActor $actor) + { + $this->actor = $actor; + } + + public function getActor() + { + return $this->actor; + } + + public function setAttachments($attachments) + { + $this->attachments = $attachments; + } + + public function getAttachments() + { + return $this->attachments; + } + + public function setContent($content) + { + $this->content = $content; + } + + public function getContent() + { + return $this->content; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setObjectType($objectType) + { + $this->objectType = $objectType; + } + + public function getObjectType() + { + return $this->objectType; + } + + public function setOriginalContent($originalContent) + { + $this->originalContent = $originalContent; + } + + public function getOriginalContent() + { + return $this->originalContent; + } + + public function setPlusoners(Google_Service_PlusDomains_ActivityObjectPlusoners $plusoners) + { + $this->plusoners = $plusoners; + } + + public function getPlusoners() + { + return $this->plusoners; + } + + public function setReplies(Google_Service_PlusDomains_ActivityObjectReplies $replies) + { + $this->replies = $replies; + } + + public function getReplies() + { + return $this->replies; + } + + public function setResharers(Google_Service_PlusDomains_ActivityObjectResharers $resharers) + { + $this->resharers = $resharers; + } + + public function getResharers() + { + return $this->resharers; + } + + public function setStatusForViewer(Google_Service_PlusDomains_ActivityObjectStatusForViewer $statusForViewer) + { + $this->statusForViewer = $statusForViewer; + } + + public function getStatusForViewer() + { + return $this->statusForViewer; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_PlusDomains_ActivityObjectActor extends Google_Model +{ + public $displayName; + public $id; + protected $imageType = 'Google_Service_PlusDomains_ActivityObjectActorImage'; + protected $imageDataType = ''; + public $url; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImage(Google_Service_PlusDomains_ActivityObjectActorImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_PlusDomains_ActivityObjectActorImage extends Google_Model +{ + public $url; + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_PlusDomains_ActivityObjectAttachments extends Google_Collection +{ + public $content; + public $displayName; + protected $embedType = 'Google_Service_PlusDomains_ActivityObjectAttachmentsEmbed'; + protected $embedDataType = ''; + protected $fullImageType = 'Google_Service_PlusDomains_ActivityObjectAttachmentsFullImage'; + protected $fullImageDataType = ''; + public $id; + protected $imageType = 'Google_Service_PlusDomains_ActivityObjectAttachmentsImage'; + protected $imageDataType = ''; + public $objectType; + protected $previewThumbnailsType = 'Google_Service_PlusDomains_ActivityObjectAttachmentsPreviewThumbnails'; + protected $previewThumbnailsDataType = 'array'; + protected $thumbnailsType = 'Google_Service_PlusDomains_ActivityObjectAttachmentsThumbnails'; + protected $thumbnailsDataType = 'array'; + public $url; + + public function setContent($content) + { + $this->content = $content; + } + + public function getContent() + { + return $this->content; + } + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setEmbed(Google_Service_PlusDomains_ActivityObjectAttachmentsEmbed $embed) + { + $this->embed = $embed; + } + + public function getEmbed() + { + return $this->embed; + } + + public function setFullImage(Google_Service_PlusDomains_ActivityObjectAttachmentsFullImage $fullImage) + { + $this->fullImage = $fullImage; + } + + public function getFullImage() + { + return $this->fullImage; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImage(Google_Service_PlusDomains_ActivityObjectAttachmentsImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setObjectType($objectType) + { + $this->objectType = $objectType; + } + + public function getObjectType() + { + return $this->objectType; + } + + public function setPreviewThumbnails($previewThumbnails) + { + $this->previewThumbnails = $previewThumbnails; + } + + public function getPreviewThumbnails() + { + return $this->previewThumbnails; + } + + public function setThumbnails($thumbnails) + { + $this->thumbnails = $thumbnails; + } + + public function getThumbnails() + { + return $this->thumbnails; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_PlusDomains_ActivityObjectAttachmentsEmbed extends Google_Model +{ + public $type; + public $url; + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_PlusDomains_ActivityObjectAttachmentsFullImage extends Google_Model +{ + public $height; + public $type; + public $url; + public $width; + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_PlusDomains_ActivityObjectAttachmentsImage extends Google_Model +{ + public $height; + public $type; + public $url; + public $width; + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_PlusDomains_ActivityObjectAttachmentsPreviewThumbnails extends Google_Model +{ + public $url; + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_PlusDomains_ActivityObjectAttachmentsThumbnails extends Google_Model +{ + public $description; + protected $imageType = 'Google_Service_PlusDomains_ActivityObjectAttachmentsThumbnailsImage'; + protected $imageDataType = ''; + public $url; + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setImage(Google_Service_PlusDomains_ActivityObjectAttachmentsThumbnailsImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_PlusDomains_ActivityObjectAttachmentsThumbnailsImage extends Google_Model +{ + public $height; + public $type; + public $url; + public $width; + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_PlusDomains_ActivityObjectPlusoners extends Google_Model +{ + public $selfLink; + public $totalItems; + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_PlusDomains_ActivityObjectReplies extends Google_Model +{ + public $selfLink; + public $totalItems; + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_PlusDomains_ActivityObjectResharers extends Google_Model +{ + public $selfLink; + public $totalItems; + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_PlusDomains_ActivityObjectStatusForViewer extends Google_Model +{ + public $canComment; + public $canPlusone; + public $canUpdate; + public $isPlusOned; + public $resharingDisabled; + + public function setCanComment($canComment) + { + $this->canComment = $canComment; + } + + public function getCanComment() + { + return $this->canComment; + } + + public function setCanPlusone($canPlusone) + { + $this->canPlusone = $canPlusone; + } + + public function getCanPlusone() + { + return $this->canPlusone; + } + + public function setCanUpdate($canUpdate) + { + $this->canUpdate = $canUpdate; + } + + public function getCanUpdate() + { + return $this->canUpdate; + } + + public function setIsPlusOned($isPlusOned) + { + $this->isPlusOned = $isPlusOned; + } + + public function getIsPlusOned() + { + return $this->isPlusOned; + } + + public function setResharingDisabled($resharingDisabled) + { + $this->resharingDisabled = $resharingDisabled; + } + + public function getResharingDisabled() + { + return $this->resharingDisabled; + } +} + +class Google_Service_PlusDomains_ActivityProvider extends Google_Model +{ + public $title; + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_PlusDomains_Audience extends Google_Model +{ + public $etag; + protected $itemType = 'Google_Service_PlusDomains_PlusDomainsAclentryResource'; + protected $itemDataType = ''; + public $kind; + public $memberCount; + public $visibility; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItem(Google_Service_PlusDomains_PlusDomainsAclentryResource $item) + { + $this->item = $item; + } + + public function getItem() + { + return $this->item; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMemberCount($memberCount) + { + $this->memberCount = $memberCount; + } + + public function getMemberCount() + { + return $this->memberCount; + } + + public function setVisibility($visibility) + { + $this->visibility = $visibility; + } + + public function getVisibility() + { + return $this->visibility; + } +} + +class Google_Service_PlusDomains_AudiencesFeed extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_PlusDomains_Audience'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $totalItems; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_PlusDomains_Circle extends Google_Model +{ + public $description; + public $displayName; + public $etag; + public $id; + public $kind; + protected $peopleType = 'Google_Service_PlusDomains_CirclePeople'; + protected $peopleDataType = ''; + public $selfLink; + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPeople(Google_Service_PlusDomains_CirclePeople $people) + { + $this->people = $people; + } + + public function getPeople() + { + return $this->people; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_PlusDomains_CircleFeed extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_PlusDomains_Circle'; + protected $itemsDataType = 'array'; + public $kind; + public $nextLink; + public $nextPageToken; + public $selfLink; + public $title; + public $totalItems; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_PlusDomains_CirclePeople extends Google_Model +{ + public $totalItems; + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_PlusDomains_Comment extends Google_Collection +{ + protected $actorType = 'Google_Service_PlusDomains_CommentActor'; + protected $actorDataType = ''; + public $etag; + public $id; + protected $inReplyToType = 'Google_Service_PlusDomains_CommentInReplyTo'; + protected $inReplyToDataType = 'array'; + public $kind; + protected $objectType = 'Google_Service_PlusDomains_CommentObject'; + protected $objectDataType = ''; + protected $plusonersType = 'Google_Service_PlusDomains_CommentPlusoners'; + protected $plusonersDataType = ''; + public $published; + public $selfLink; + public $updated; + public $verb; + + public function setActor(Google_Service_PlusDomains_CommentActor $actor) + { + $this->actor = $actor; + } + + public function getActor() + { + return $this->actor; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInReplyTo($inReplyTo) + { + $this->inReplyTo = $inReplyTo; + } + + public function getInReplyTo() + { + return $this->inReplyTo; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setObject(Google_Service_PlusDomains_CommentObject $object) + { + $this->object = $object; + } + + public function getObject() + { + return $this->object; + } + + public function setPlusoners(Google_Service_PlusDomains_CommentPlusoners $plusoners) + { + $this->plusoners = $plusoners; + } + + public function getPlusoners() + { + return $this->plusoners; + } + + public function setPublished($published) + { + $this->published = $published; + } + + public function getPublished() + { + return $this->published; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setVerb($verb) + { + $this->verb = $verb; + } + + public function getVerb() + { + return $this->verb; + } +} + +class Google_Service_PlusDomains_CommentActor extends Google_Model +{ + public $displayName; + public $id; + protected $imageType = 'Google_Service_PlusDomains_CommentActorImage'; + protected $imageDataType = ''; + public $url; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImage(Google_Service_PlusDomains_CommentActorImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_PlusDomains_CommentActorImage extends Google_Model +{ + public $url; + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_PlusDomains_CommentFeed extends Google_Collection +{ + public $etag; + public $id; + protected $itemsType = 'Google_Service_PlusDomains_Comment'; + protected $itemsDataType = 'array'; + public $kind; + public $nextLink; + public $nextPageToken; + public $title; + public $updated; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextLink($nextLink) + { + $this->nextLink = $nextLink; + } + + public function getNextLink() + { + return $this->nextLink; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } +} + +class Google_Service_PlusDomains_CommentInReplyTo extends Google_Model +{ + public $id; + public $url; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_PlusDomains_CommentObject extends Google_Model +{ + public $content; + public $objectType; + public $originalContent; + + public function setContent($content) + { + $this->content = $content; + } + + public function getContent() + { + return $this->content; + } + + public function setObjectType($objectType) + { + $this->objectType = $objectType; + } + + public function getObjectType() + { + return $this->objectType; + } + + public function setOriginalContent($originalContent) + { + $this->originalContent = $originalContent; + } + + public function getOriginalContent() + { + return $this->originalContent; + } +} + +class Google_Service_PlusDomains_CommentPlusoners extends Google_Model +{ + public $totalItems; + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_PlusDomains_Media extends Google_Collection +{ + protected $authorType = 'Google_Service_PlusDomains_MediaAuthor'; + protected $authorDataType = ''; + public $displayName; + public $etag; + protected $exifType = 'Google_Service_PlusDomains_MediaExif'; + protected $exifDataType = ''; + public $height; + public $id; + public $kind; + public $mediaCreatedTime; + public $mediaUrl; + public $published; + public $sizeBytes; + protected $streamsType = 'Google_Service_PlusDomains_Videostream'; + protected $streamsDataType = 'array'; + public $summary; + public $updated; + public $url; + public $videoDuration; + public $videoStatus; + public $width; + + public function setAuthor(Google_Service_PlusDomains_MediaAuthor $author) + { + $this->author = $author; + } + + public function getAuthor() + { + return $this->author; + } + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setExif(Google_Service_PlusDomains_MediaExif $exif) + { + $this->exif = $exif; + } + + public function getExif() + { + return $this->exif; + } + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMediaCreatedTime($mediaCreatedTime) + { + $this->mediaCreatedTime = $mediaCreatedTime; + } + + public function getMediaCreatedTime() + { + return $this->mediaCreatedTime; + } + + public function setMediaUrl($mediaUrl) + { + $this->mediaUrl = $mediaUrl; + } + + public function getMediaUrl() + { + return $this->mediaUrl; + } + + public function setPublished($published) + { + $this->published = $published; + } + + public function getPublished() + { + return $this->published; + } + + public function setSizeBytes($sizeBytes) + { + $this->sizeBytes = $sizeBytes; + } + + public function getSizeBytes() + { + return $this->sizeBytes; + } + + public function setStreams($streams) + { + $this->streams = $streams; + } + + public function getStreams() + { + return $this->streams; + } + + public function setSummary($summary) + { + $this->summary = $summary; + } + + public function getSummary() + { + return $this->summary; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } + + public function setVideoDuration($videoDuration) + { + $this->videoDuration = $videoDuration; + } + + public function getVideoDuration() + { + return $this->videoDuration; + } + + public function setVideoStatus($videoStatus) + { + $this->videoStatus = $videoStatus; + } + + public function getVideoStatus() + { + return $this->videoStatus; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_PlusDomains_MediaAuthor extends Google_Model +{ + public $displayName; + public $id; + protected $imageType = 'Google_Service_PlusDomains_MediaAuthorImage'; + protected $imageDataType = ''; + public $url; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImage(Google_Service_PlusDomains_MediaAuthorImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_PlusDomains_MediaAuthorImage extends Google_Model +{ + public $url; + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_PlusDomains_MediaExif extends Google_Model +{ + public $time; + + public function setTime($time) + { + $this->time = $time; + } + + public function getTime() + { + return $this->time; + } +} + +class Google_Service_PlusDomains_PeopleFeed extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_PlusDomains_Person'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + public $title; + public $totalItems; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} + +class Google_Service_PlusDomains_Person extends Google_Collection +{ + public $aboutMe; + public $birthday; + public $braggingRights; + public $circledByCount; + protected $coverType = 'Google_Service_PlusDomains_PersonCover'; + protected $coverDataType = ''; + public $currentLocation; + public $displayName; + public $domain; + protected $emailsType = 'Google_Service_PlusDomains_PersonEmails'; + protected $emailsDataType = 'array'; + public $etag; + public $gender; + public $id; + protected $imageType = 'Google_Service_PlusDomains_PersonImage'; + protected $imageDataType = ''; + public $isPlusUser; + public $kind; + protected $nameType = 'Google_Service_PlusDomains_PersonName'; + protected $nameDataType = ''; + public $nickname; + public $objectType; + public $occupation; + protected $organizationsType = 'Google_Service_PlusDomains_PersonOrganizations'; + protected $organizationsDataType = 'array'; + protected $placesLivedType = 'Google_Service_PlusDomains_PersonPlacesLived'; + protected $placesLivedDataType = 'array'; + public $plusOneCount; + public $relationshipStatus; + public $skills; + public $tagline; + public $url; + protected $urlsType = 'Google_Service_PlusDomains_PersonUrls'; + protected $urlsDataType = 'array'; + public $verified; + + public function setAboutMe($aboutMe) + { + $this->aboutMe = $aboutMe; + } + + public function getAboutMe() + { + return $this->aboutMe; + } + + public function setBirthday($birthday) + { + $this->birthday = $birthday; + } + + public function getBirthday() + { + return $this->birthday; + } + + public function setBraggingRights($braggingRights) + { + $this->braggingRights = $braggingRights; + } + + public function getBraggingRights() + { + return $this->braggingRights; + } + + public function setCircledByCount($circledByCount) + { + $this->circledByCount = $circledByCount; + } + + public function getCircledByCount() + { + return $this->circledByCount; + } + + public function setCover(Google_Service_PlusDomains_PersonCover $cover) + { + $this->cover = $cover; + } + + public function getCover() + { + return $this->cover; + } + + public function setCurrentLocation($currentLocation) + { + $this->currentLocation = $currentLocation; + } + + public function getCurrentLocation() + { + return $this->currentLocation; + } + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setDomain($domain) + { + $this->domain = $domain; + } + + public function getDomain() + { + return $this->domain; + } + + public function setEmails($emails) + { + $this->emails = $emails; + } + + public function getEmails() + { + return $this->emails; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setGender($gender) + { + $this->gender = $gender; + } + + public function getGender() + { + return $this->gender; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setImage(Google_Service_PlusDomains_PersonImage $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setIsPlusUser($isPlusUser) + { + $this->isPlusUser = $isPlusUser; + } + + public function getIsPlusUser() + { + return $this->isPlusUser; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName(Google_Service_PlusDomains_PersonName $name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNickname($nickname) + { + $this->nickname = $nickname; + } + + public function getNickname() + { + return $this->nickname; + } + + public function setObjectType($objectType) + { + $this->objectType = $objectType; + } + + public function getObjectType() + { + return $this->objectType; + } + + public function setOccupation($occupation) + { + $this->occupation = $occupation; + } + + public function getOccupation() + { + return $this->occupation; + } + + public function setOrganizations($organizations) + { + $this->organizations = $organizations; + } + + public function getOrganizations() + { + return $this->organizations; + } + + public function setPlacesLived($placesLived) + { + $this->placesLived = $placesLived; + } + + public function getPlacesLived() + { + return $this->placesLived; + } + + public function setPlusOneCount($plusOneCount) + { + $this->plusOneCount = $plusOneCount; + } + + public function getPlusOneCount() + { + return $this->plusOneCount; + } + + public function setRelationshipStatus($relationshipStatus) + { + $this->relationshipStatus = $relationshipStatus; + } + + public function getRelationshipStatus() + { + return $this->relationshipStatus; + } + + public function setSkills($skills) + { + $this->skills = $skills; + } + + public function getSkills() + { + return $this->skills; + } + + public function setTagline($tagline) + { + $this->tagline = $tagline; + } + + public function getTagline() + { + return $this->tagline; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } + + public function setUrls($urls) + { + $this->urls = $urls; + } + + public function getUrls() + { + return $this->urls; + } + + public function setVerified($verified) + { + $this->verified = $verified; + } + + public function getVerified() + { + return $this->verified; + } +} + +class Google_Service_PlusDomains_PersonCover extends Google_Model +{ + protected $coverInfoType = 'Google_Service_PlusDomains_PersonCoverCoverInfo'; + protected $coverInfoDataType = ''; + protected $coverPhotoType = 'Google_Service_PlusDomains_PersonCoverCoverPhoto'; + protected $coverPhotoDataType = ''; + public $layout; + + public function setCoverInfo(Google_Service_PlusDomains_PersonCoverCoverInfo $coverInfo) + { + $this->coverInfo = $coverInfo; + } + + public function getCoverInfo() + { + return $this->coverInfo; + } + + public function setCoverPhoto(Google_Service_PlusDomains_PersonCoverCoverPhoto $coverPhoto) + { + $this->coverPhoto = $coverPhoto; + } + + public function getCoverPhoto() + { + return $this->coverPhoto; + } + + public function setLayout($layout) + { + $this->layout = $layout; + } + + public function getLayout() + { + return $this->layout; + } +} + +class Google_Service_PlusDomains_PersonCoverCoverInfo extends Google_Model +{ + public $leftImageOffset; + public $topImageOffset; + + public function setLeftImageOffset($leftImageOffset) + { + $this->leftImageOffset = $leftImageOffset; + } + + public function getLeftImageOffset() + { + return $this->leftImageOffset; + } + + public function setTopImageOffset($topImageOffset) + { + $this->topImageOffset = $topImageOffset; + } + + public function getTopImageOffset() + { + return $this->topImageOffset; + } +} + +class Google_Service_PlusDomains_PersonCoverCoverPhoto extends Google_Model +{ + public $height; + public $url; + public $width; + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_PlusDomains_PersonEmails extends Google_Model +{ + public $type; + public $value; + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_PlusDomains_PersonImage extends Google_Model +{ + public $isDefault; + public $url; + + public function setIsDefault($isDefault) + { + $this->isDefault = $isDefault; + } + + public function getIsDefault() + { + return $this->isDefault; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_PlusDomains_PersonName extends Google_Model +{ + public $familyName; + public $formatted; + public $givenName; + public $honorificPrefix; + public $honorificSuffix; + public $middleName; + + public function setFamilyName($familyName) + { + $this->familyName = $familyName; + } + + public function getFamilyName() + { + return $this->familyName; + } + + public function setFormatted($formatted) + { + $this->formatted = $formatted; + } + + public function getFormatted() + { + return $this->formatted; + } + + public function setGivenName($givenName) + { + $this->givenName = $givenName; + } + + public function getGivenName() + { + return $this->givenName; + } + + public function setHonorificPrefix($honorificPrefix) + { + $this->honorificPrefix = $honorificPrefix; + } + + public function getHonorificPrefix() + { + return $this->honorificPrefix; + } + + public function setHonorificSuffix($honorificSuffix) + { + $this->honorificSuffix = $honorificSuffix; + } + + public function getHonorificSuffix() + { + return $this->honorificSuffix; + } + + public function setMiddleName($middleName) + { + $this->middleName = $middleName; + } + + public function getMiddleName() + { + return $this->middleName; + } +} + +class Google_Service_PlusDomains_PersonOrganizations extends Google_Model +{ + public $department; + public $description; + public $endDate; + public $location; + public $name; + public $primary; + public $startDate; + public $title; + public $type; + + public function setDepartment($department) + { + $this->department = $department; + } + + public function getDepartment() + { + return $this->department; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setEndDate($endDate) + { + $this->endDate = $endDate; + } + + public function getEndDate() + { + return $this->endDate; + } + + public function setLocation($location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPrimary($primary) + { + $this->primary = $primary; + } + + public function getPrimary() + { + return $this->primary; + } + + public function setStartDate($startDate) + { + $this->startDate = $startDate; + } + + public function getStartDate() + { + return $this->startDate; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_PlusDomains_PersonPlacesLived extends Google_Model +{ + public $primary; + public $value; + + public function setPrimary($primary) + { + $this->primary = $primary; + } + + public function getPrimary() + { + return $this->primary; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_PlusDomains_PersonUrls extends Google_Model +{ + public $label; + public $type; + public $value; + + public function setLabel($label) + { + $this->label = $label; + } + + public function getLabel() + { + return $this->label; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_PlusDomains_Place extends Google_Model +{ + protected $addressType = 'Google_Service_PlusDomains_PlaceAddress'; + protected $addressDataType = ''; + public $displayName; + public $id; + public $kind; + protected $positionType = 'Google_Service_PlusDomains_PlacePosition'; + protected $positionDataType = ''; + + public function setAddress(Google_Service_PlusDomains_PlaceAddress $address) + { + $this->address = $address; + } + + public function getAddress() + { + return $this->address; + } + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPosition(Google_Service_PlusDomains_PlacePosition $position) + { + $this->position = $position; + } + + public function getPosition() + { + return $this->position; + } +} + +class Google_Service_PlusDomains_PlaceAddress extends Google_Model +{ + public $formatted; + + public function setFormatted($formatted) + { + $this->formatted = $formatted; + } + + public function getFormatted() + { + return $this->formatted; + } +} + +class Google_Service_PlusDomains_PlacePosition extends Google_Model +{ + public $latitude; + public $longitude; + + public function setLatitude($latitude) + { + $this->latitude = $latitude; + } + + public function getLatitude() + { + return $this->latitude; + } + + public function setLongitude($longitude) + { + $this->longitude = $longitude; + } + + public function getLongitude() + { + return $this->longitude; + } +} + +class Google_Service_PlusDomains_PlusDomainsAclentryResource extends Google_Model +{ + public $displayName; + public $id; + public $type; + + public function setDisplayName($displayName) + { + $this->displayName = $displayName; + } + + public function getDisplayName() + { + return $this->displayName; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_PlusDomains_Videostream extends Google_Model +{ + public $height; + public $type; + public $url; + public $width; + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} diff --git a/oauth/Google/Service/Prediction.php b/oauth/Google/Service/Prediction.php new file mode 100644 index 0000000..33286ba --- /dev/null +++ b/oauth/Google/Service/Prediction.php @@ -0,0 +1,1290 @@ + + * Lets you access a cloud hosted machine learning service that makes it easy to build smart apps + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Prediction extends Google_Service +{ + /** Manage your data and permissions in Google Cloud Storage. */ + const DEVSTORAGE_FULL_CONTROL = "https://www.googleapis.com/auth/devstorage.full_control"; + /** View your data in Google Cloud Storage. */ + const DEVSTORAGE_READ_ONLY = "https://www.googleapis.com/auth/devstorage.read_only"; + /** Manage your data in Google Cloud Storage. */ + const DEVSTORAGE_READ_WRITE = "https://www.googleapis.com/auth/devstorage.read_write"; + /** Manage your data in the Google Prediction API. */ + const PREDICTION = "https://www.googleapis.com/auth/prediction"; + + public $hostedmodels; + public $trainedmodels; + + + /** + * Constructs the internal representation of the Prediction service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'prediction/v1.6/projects/'; + $this->version = 'v1.6'; + $this->serviceName = 'prediction'; + + $this->hostedmodels = new Google_Service_Prediction_Hostedmodels_Resource( + $this, + $this->serviceName, + 'hostedmodels', + array( + 'methods' => array( + 'predict' => array( + 'path' => '{project}/hostedmodels/{hostedModelName}/predict', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'hostedModelName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->trainedmodels = new Google_Service_Prediction_Trainedmodels_Resource( + $this, + $this->serviceName, + 'trainedmodels', + array( + 'methods' => array( + 'analyze' => array( + 'path' => '{project}/trainedmodels/{id}/analyze', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => '{project}/trainedmodels/{id}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/trainedmodels/{id}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{project}/trainedmodels', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{project}/trainedmodels/list', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'predict' => array( + 'path' => '{project}/trainedmodels/{id}/predict', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => '{project}/trainedmodels/{id}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "hostedmodels" collection of methods. + * Typical usage is: + * + * $predictionService = new Google_Service_Prediction(...); + * $hostedmodels = $predictionService->hostedmodels; + * + */ +class Google_Service_Prediction_Hostedmodels_Resource extends Google_Service_Resource +{ + + /** + * Submit input and request an output against a hosted model. + * (hostedmodels.predict) + * + * @param string $project + * The project associated with the model. + * @param string $hostedModelName + * The name of a hosted model. + * @param Google_Input $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Prediction_Output + */ + public function predict($project, $hostedModelName, Google_Service_Prediction_Input $postBody, $optParams = array()) + { + $params = array('project' => $project, 'hostedModelName' => $hostedModelName, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('predict', array($params), "Google_Service_Prediction_Output"); + } +} + +/** + * The "trainedmodels" collection of methods. + * Typical usage is: + * + * $predictionService = new Google_Service_Prediction(...); + * $trainedmodels = $predictionService->trainedmodels; + * + */ +class Google_Service_Prediction_Trainedmodels_Resource extends Google_Service_Resource +{ + + /** + * Get analysis of the model and the data the model was trained on. + * (trainedmodels.analyze) + * + * @param string $project + * The project associated with the model. + * @param string $id + * The unique name for the predictive model. + * @param array $optParams Optional parameters. + * @return Google_Service_Prediction_Analyze + */ + public function analyze($project, $id, $optParams = array()) + { + $params = array('project' => $project, 'id' => $id); + $params = array_merge($params, $optParams); + return $this->call('analyze', array($params), "Google_Service_Prediction_Analyze"); + } + /** + * Delete a trained model. (trainedmodels.delete) + * + * @param string $project + * The project associated with the model. + * @param string $id + * The unique name for the predictive model. + * @param array $optParams Optional parameters. + */ + public function delete($project, $id, $optParams = array()) + { + $params = array('project' => $project, 'id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Check training status of your model. (trainedmodels.get) + * + * @param string $project + * The project associated with the model. + * @param string $id + * The unique name for the predictive model. + * @param array $optParams Optional parameters. + * @return Google_Service_Prediction_Insert2 + */ + public function get($project, $id, $optParams = array()) + { + $params = array('project' => $project, 'id' => $id); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Prediction_Insert2"); + } + /** + * Train a Prediction API model. (trainedmodels.insert) + * + * @param string $project + * The project associated with the model. + * @param Google_Insert $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Prediction_Insert2 + */ + public function insert($project, Google_Service_Prediction_Insert $postBody, $optParams = array()) + { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Prediction_Insert2"); + } + /** + * List available models. (trainedmodels.listTrainedmodels) + * + * @param string $project + * The project associated with the model. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Pagination token. + * @opt_param string maxResults + * Maximum number of results to return. + * @return Google_Service_Prediction_PredictionList + */ + public function listTrainedmodels($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Prediction_PredictionList"); + } + /** + * Submit model id and request a prediction. (trainedmodels.predict) + * + * @param string $project + * The project associated with the model. + * @param string $id + * The unique name for the predictive model. + * @param Google_Input $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Prediction_Output + */ + public function predict($project, $id, Google_Service_Prediction_Input $postBody, $optParams = array()) + { + $params = array('project' => $project, 'id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('predict', array($params), "Google_Service_Prediction_Output"); + } + /** + * Add new data to a trained model. (trainedmodels.update) + * + * @param string $project + * The project associated with the model. + * @param string $id + * The unique name for the predictive model. + * @param Google_Update $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Prediction_Insert2 + */ + public function update($project, $id, Google_Service_Prediction_Update $postBody, $optParams = array()) + { + $params = array('project' => $project, 'id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Prediction_Insert2"); + } +} + + + + +class Google_Service_Prediction_Analyze extends Google_Collection +{ + protected $dataDescriptionType = 'Google_Service_Prediction_AnalyzeDataDescription'; + protected $dataDescriptionDataType = ''; + public $errors; + public $id; + public $kind; + protected $modelDescriptionType = 'Google_Service_Prediction_AnalyzeModelDescription'; + protected $modelDescriptionDataType = ''; + public $selfLink; + + public function setDataDescription(Google_Service_Prediction_AnalyzeDataDescription $dataDescription) + { + $this->dataDescription = $dataDescription; + } + + public function getDataDescription() + { + return $this->dataDescription; + } + + public function setErrors($errors) + { + $this->errors = $errors; + } + + public function getErrors() + { + return $this->errors; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setModelDescription(Google_Service_Prediction_AnalyzeModelDescription $modelDescription) + { + $this->modelDescription = $modelDescription; + } + + public function getModelDescription() + { + return $this->modelDescription; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Prediction_AnalyzeDataDescription extends Google_Collection +{ + protected $featuresType = 'Google_Service_Prediction_AnalyzeDataDescriptionFeatures'; + protected $featuresDataType = 'array'; + protected $outputFeatureType = 'Google_Service_Prediction_AnalyzeDataDescriptionOutputFeature'; + protected $outputFeatureDataType = ''; + + public function setFeatures($features) + { + $this->features = $features; + } + + public function getFeatures() + { + return $this->features; + } + + public function setOutputFeature(Google_Service_Prediction_AnalyzeDataDescriptionOutputFeature $outputFeature) + { + $this->outputFeature = $outputFeature; + } + + public function getOutputFeature() + { + return $this->outputFeature; + } +} + +class Google_Service_Prediction_AnalyzeDataDescriptionFeatures extends Google_Model +{ + protected $categoricalType = 'Google_Service_Prediction_AnalyzeDataDescriptionFeaturesCategorical'; + protected $categoricalDataType = ''; + public $index; + protected $numericType = 'Google_Service_Prediction_AnalyzeDataDescriptionFeaturesNumeric'; + protected $numericDataType = ''; + protected $textType = 'Google_Service_Prediction_AnalyzeDataDescriptionFeaturesText'; + protected $textDataType = ''; + + public function setCategorical(Google_Service_Prediction_AnalyzeDataDescriptionFeaturesCategorical $categorical) + { + $this->categorical = $categorical; + } + + public function getCategorical() + { + return $this->categorical; + } + + public function setIndex($index) + { + $this->index = $index; + } + + public function getIndex() + { + return $this->index; + } + + public function setNumeric(Google_Service_Prediction_AnalyzeDataDescriptionFeaturesNumeric $numeric) + { + $this->numeric = $numeric; + } + + public function getNumeric() + { + return $this->numeric; + } + + public function setText(Google_Service_Prediction_AnalyzeDataDescriptionFeaturesText $text) + { + $this->text = $text; + } + + public function getText() + { + return $this->text; + } +} + +class Google_Service_Prediction_AnalyzeDataDescriptionFeaturesCategorical extends Google_Collection +{ + public $count; + protected $valuesType = 'Google_Service_Prediction_AnalyzeDataDescriptionFeaturesCategoricalValues'; + protected $valuesDataType = 'array'; + + public function setCount($count) + { + $this->count = $count; + } + + public function getCount() + { + return $this->count; + } + + public function setValues($values) + { + $this->values = $values; + } + + public function getValues() + { + return $this->values; + } +} + +class Google_Service_Prediction_AnalyzeDataDescriptionFeaturesCategoricalValues extends Google_Model +{ + public $count; + public $value; + + public function setCount($count) + { + $this->count = $count; + } + + public function getCount() + { + return $this->count; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Prediction_AnalyzeDataDescriptionFeaturesNumeric extends Google_Model +{ + public $count; + public $mean; + public $variance; + + public function setCount($count) + { + $this->count = $count; + } + + public function getCount() + { + return $this->count; + } + + public function setMean($mean) + { + $this->mean = $mean; + } + + public function getMean() + { + return $this->mean; + } + + public function setVariance($variance) + { + $this->variance = $variance; + } + + public function getVariance() + { + return $this->variance; + } +} + +class Google_Service_Prediction_AnalyzeDataDescriptionFeaturesText extends Google_Model +{ + public $count; + + public function setCount($count) + { + $this->count = $count; + } + + public function getCount() + { + return $this->count; + } +} + +class Google_Service_Prediction_AnalyzeDataDescriptionOutputFeature extends Google_Collection +{ + protected $numericType = 'Google_Service_Prediction_AnalyzeDataDescriptionOutputFeatureNumeric'; + protected $numericDataType = ''; + protected $textType = 'Google_Service_Prediction_AnalyzeDataDescriptionOutputFeatureText'; + protected $textDataType = 'array'; + + public function setNumeric(Google_Service_Prediction_AnalyzeDataDescriptionOutputFeatureNumeric $numeric) + { + $this->numeric = $numeric; + } + + public function getNumeric() + { + return $this->numeric; + } + + public function setText($text) + { + $this->text = $text; + } + + public function getText() + { + return $this->text; + } +} + +class Google_Service_Prediction_AnalyzeDataDescriptionOutputFeatureNumeric extends Google_Model +{ + public $count; + public $mean; + public $variance; + + public function setCount($count) + { + $this->count = $count; + } + + public function getCount() + { + return $this->count; + } + + public function setMean($mean) + { + $this->mean = $mean; + } + + public function getMean() + { + return $this->mean; + } + + public function setVariance($variance) + { + $this->variance = $variance; + } + + public function getVariance() + { + return $this->variance; + } +} + +class Google_Service_Prediction_AnalyzeDataDescriptionOutputFeatureText extends Google_Model +{ + public $count; + public $value; + + public function setCount($count) + { + $this->count = $count; + } + + public function getCount() + { + return $this->count; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Prediction_AnalyzeErrors extends Google_Model +{ + +} + +class Google_Service_Prediction_AnalyzeModelDescription extends Google_Model +{ + public $confusionMatrix; + public $confusionMatrixRowTotals; + protected $modelinfoType = 'Google_Service_Prediction_Insert2'; + protected $modelinfoDataType = ''; + + public function setConfusionMatrix($confusionMatrix) + { + $this->confusionMatrix = $confusionMatrix; + } + + public function getConfusionMatrix() + { + return $this->confusionMatrix; + } + + public function setConfusionMatrixRowTotals($confusionMatrixRowTotals) + { + $this->confusionMatrixRowTotals = $confusionMatrixRowTotals; + } + + public function getConfusionMatrixRowTotals() + { + return $this->confusionMatrixRowTotals; + } + + public function setModelinfo(Google_Service_Prediction_Insert2 $modelinfo) + { + $this->modelinfo = $modelinfo; + } + + public function getModelinfo() + { + return $this->modelinfo; + } +} + +class Google_Service_Prediction_AnalyzeModelDescriptionConfusionMatrix extends Google_Model +{ + +} + +class Google_Service_Prediction_AnalyzeModelDescriptionConfusionMatrixElement extends Google_Model +{ + +} + +class Google_Service_Prediction_AnalyzeModelDescriptionConfusionMatrixRowTotals extends Google_Model +{ + +} + +class Google_Service_Prediction_Input extends Google_Model +{ + protected $inputType = 'Google_Service_Prediction_InputInput'; + protected $inputDataType = ''; + + public function setInput(Google_Service_Prediction_InputInput $input) + { + $this->input = $input; + } + + public function getInput() + { + return $this->input; + } +} + +class Google_Service_Prediction_InputInput extends Google_Collection +{ + public $csvInstance; + + public function setCsvInstance($csvInstance) + { + $this->csvInstance = $csvInstance; + } + + public function getCsvInstance() + { + return $this->csvInstance; + } +} + +class Google_Service_Prediction_Insert extends Google_Collection +{ + public $id; + public $modelType; + public $sourceModel; + public $storageDataLocation; + public $storagePMMLLocation; + public $storagePMMLModelLocation; + protected $trainingInstancesType = 'Google_Service_Prediction_InsertTrainingInstances'; + protected $trainingInstancesDataType = 'array'; + public $utility; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setModelType($modelType) + { + $this->modelType = $modelType; + } + + public function getModelType() + { + return $this->modelType; + } + + public function setSourceModel($sourceModel) + { + $this->sourceModel = $sourceModel; + } + + public function getSourceModel() + { + return $this->sourceModel; + } + + public function setStorageDataLocation($storageDataLocation) + { + $this->storageDataLocation = $storageDataLocation; + } + + public function getStorageDataLocation() + { + return $this->storageDataLocation; + } + + public function setStoragePMMLLocation($storagePMMLLocation) + { + $this->storagePMMLLocation = $storagePMMLLocation; + } + + public function getStoragePMMLLocation() + { + return $this->storagePMMLLocation; + } + + public function setStoragePMMLModelLocation($storagePMMLModelLocation) + { + $this->storagePMMLModelLocation = $storagePMMLModelLocation; + } + + public function getStoragePMMLModelLocation() + { + return $this->storagePMMLModelLocation; + } + + public function setTrainingInstances($trainingInstances) + { + $this->trainingInstances = $trainingInstances; + } + + public function getTrainingInstances() + { + return $this->trainingInstances; + } + + public function setUtility($utility) + { + $this->utility = $utility; + } + + public function getUtility() + { + return $this->utility; + } +} + +class Google_Service_Prediction_Insert2 extends Google_Model +{ + public $created; + public $id; + public $kind; + protected $modelInfoType = 'Google_Service_Prediction_Insert2ModelInfo'; + protected $modelInfoDataType = ''; + public $modelType; + public $selfLink; + public $storageDataLocation; + public $storagePMMLLocation; + public $storagePMMLModelLocation; + public $trainingComplete; + public $trainingStatus; + + public function setCreated($created) + { + $this->created = $created; + } + + public function getCreated() + { + return $this->created; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setModelInfo(Google_Service_Prediction_Insert2ModelInfo $modelInfo) + { + $this->modelInfo = $modelInfo; + } + + public function getModelInfo() + { + return $this->modelInfo; + } + + public function setModelType($modelType) + { + $this->modelType = $modelType; + } + + public function getModelType() + { + return $this->modelType; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setStorageDataLocation($storageDataLocation) + { + $this->storageDataLocation = $storageDataLocation; + } + + public function getStorageDataLocation() + { + return $this->storageDataLocation; + } + + public function setStoragePMMLLocation($storagePMMLLocation) + { + $this->storagePMMLLocation = $storagePMMLLocation; + } + + public function getStoragePMMLLocation() + { + return $this->storagePMMLLocation; + } + + public function setStoragePMMLModelLocation($storagePMMLModelLocation) + { + $this->storagePMMLModelLocation = $storagePMMLModelLocation; + } + + public function getStoragePMMLModelLocation() + { + return $this->storagePMMLModelLocation; + } + + public function setTrainingComplete($trainingComplete) + { + $this->trainingComplete = $trainingComplete; + } + + public function getTrainingComplete() + { + return $this->trainingComplete; + } + + public function setTrainingStatus($trainingStatus) + { + $this->trainingStatus = $trainingStatus; + } + + public function getTrainingStatus() + { + return $this->trainingStatus; + } +} + +class Google_Service_Prediction_Insert2ModelInfo extends Google_Model +{ + public $classWeightedAccuracy; + public $classificationAccuracy; + public $meanSquaredError; + public $modelType; + public $numberInstances; + public $numberLabels; + + public function setClassWeightedAccuracy($classWeightedAccuracy) + { + $this->classWeightedAccuracy = $classWeightedAccuracy; + } + + public function getClassWeightedAccuracy() + { + return $this->classWeightedAccuracy; + } + + public function setClassificationAccuracy($classificationAccuracy) + { + $this->classificationAccuracy = $classificationAccuracy; + } + + public function getClassificationAccuracy() + { + return $this->classificationAccuracy; + } + + public function setMeanSquaredError($meanSquaredError) + { + $this->meanSquaredError = $meanSquaredError; + } + + public function getMeanSquaredError() + { + return $this->meanSquaredError; + } + + public function setModelType($modelType) + { + $this->modelType = $modelType; + } + + public function getModelType() + { + return $this->modelType; + } + + public function setNumberInstances($numberInstances) + { + $this->numberInstances = $numberInstances; + } + + public function getNumberInstances() + { + return $this->numberInstances; + } + + public function setNumberLabels($numberLabels) + { + $this->numberLabels = $numberLabels; + } + + public function getNumberLabels() + { + return $this->numberLabels; + } +} + +class Google_Service_Prediction_InsertTrainingInstances extends Google_Collection +{ + public $csvInstance; + public $output; + + public function setCsvInstance($csvInstance) + { + $this->csvInstance = $csvInstance; + } + + public function getCsvInstance() + { + return $this->csvInstance; + } + + public function setOutput($output) + { + $this->output = $output; + } + + public function getOutput() + { + return $this->output; + } +} + +class Google_Service_Prediction_InsertUtility extends Google_Model +{ + +} + +class Google_Service_Prediction_Output extends Google_Collection +{ + public $id; + public $kind; + public $outputLabel; + protected $outputMultiType = 'Google_Service_Prediction_OutputOutputMulti'; + protected $outputMultiDataType = 'array'; + public $outputValue; + public $selfLink; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setOutputLabel($outputLabel) + { + $this->outputLabel = $outputLabel; + } + + public function getOutputLabel() + { + return $this->outputLabel; + } + + public function setOutputMulti($outputMulti) + { + $this->outputMulti = $outputMulti; + } + + public function getOutputMulti() + { + return $this->outputMulti; + } + + public function setOutputValue($outputValue) + { + $this->outputValue = $outputValue; + } + + public function getOutputValue() + { + return $this->outputValue; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Prediction_OutputOutputMulti extends Google_Model +{ + public $label; + public $score; + + public function setLabel($label) + { + $this->label = $label; + } + + public function getLabel() + { + return $this->label; + } + + public function setScore($score) + { + $this->score = $score; + } + + public function getScore() + { + return $this->score; + } +} + +class Google_Service_Prediction_PredictionList extends Google_Collection +{ + protected $itemsType = 'Google_Service_Prediction_Insert2'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $selfLink; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Prediction_Update extends Google_Collection +{ + public $csvInstance; + public $output; + + public function setCsvInstance($csvInstance) + { + $this->csvInstance = $csvInstance; + } + + public function getCsvInstance() + { + return $this->csvInstance; + } + + public function setOutput($output) + { + $this->output = $output; + } + + public function getOutput() + { + return $this->output; + } +} diff --git a/oauth/Google/Service/Pubsub.php b/oauth/Google/Service/Pubsub.php new file mode 100644 index 0000000..27c4968 --- /dev/null +++ b/oauth/Google/Service/Pubsub.php @@ -0,0 +1,827 @@ + + * Provides reliable, many-to-many, asynchronous messaging between applications. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Pubsub extends Google_Service +{ + /** View and manage your data across Google Cloud Platform services. */ + const CLOUD_PLATFORM = "https://www.googleapis.com/auth/cloud-platform"; + /** View and manage Pub/Sub topics and subscriptions. */ + const PUBSUB = "https://www.googleapis.com/auth/pubsub"; + + public $subscriptions; + public $topics; + + + /** + * Constructs the internal representation of the Pubsub service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'pubsub/v1beta1/'; + $this->version = 'v1beta1'; + $this->serviceName = 'pubsub'; + + $this->subscriptions = new Google_Service_Pubsub_Subscriptions_Resource( + $this, + $this->serviceName, + 'subscriptions', + array( + 'methods' => array( + 'acknowledge' => array( + 'path' => 'subscriptions/acknowledge', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'create' => array( + 'path' => 'subscriptions', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'delete' => array( + 'path' => 'subscriptions/{+subscription}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'subscription' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'subscriptions/{+subscription}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'subscription' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'subscriptions', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'query' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'modifyAckDeadline' => array( + 'path' => 'subscriptions/modifyAckDeadline', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'modifyPushConfig' => array( + 'path' => 'subscriptions/modifyPushConfig', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'pull' => array( + 'path' => 'subscriptions/pull', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->topics = new Google_Service_Pubsub_Topics_Resource( + $this, + $this->serviceName, + 'topics', + array( + 'methods' => array( + 'create' => array( + 'path' => 'topics', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'delete' => array( + 'path' => 'topics/{+topic}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'topic' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'topics/{+topic}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'topic' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'topics', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'query' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'publish' => array( + 'path' => 'topics/publish', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + } +} + + +/** + * The "subscriptions" collection of methods. + * Typical usage is: + * + * $pubsubService = new Google_Service_Pubsub(...); + * $subscriptions = $pubsubService->subscriptions; + * + */ +class Google_Service_Pubsub_Subscriptions_Resource extends Google_Service_Resource +{ + + /** + * Acknowledges a particular received message: the Pub/Sub system can remove the + * given message from the subscription. Acknowledging a message whose Ack + * deadline has expired may succeed, but the message could have been already + * redelivered. Acknowledging a message more than once will not result in an + * error. This is only used for messages received via pull. + * (subscriptions.acknowledge) + * + * @param Google_AcknowledgeRequest $postBody + * @param array $optParams Optional parameters. + */ + public function acknowledge(Google_Service_Pubsub_AcknowledgeRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('acknowledge', array($params)); + } + /** + * Creates a subscription on a given topic for a given subscriber. If the + * subscription already exists, returns ALREADY_EXISTS. If the corresponding + * topic doesn't exist, returns NOT_FOUND. (subscriptions.create) + * + * @param Google_Subscription $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Pubsub_Subscription + */ + public function create(Google_Service_Pubsub_Subscription $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_Pubsub_Subscription"); + } + /** + * Deletes an existing subscription. All pending messages in the subscription + * are immediately dropped. Calls to Pull after deletion will return NOT_FOUND. + * (subscriptions.delete) + * + * @param string $subscription + * The subscription to delete. + * @param array $optParams Optional parameters. + */ + public function delete($subscription, $optParams = array()) + { + $params = array('subscription' => $subscription); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets the configuration details of a subscription. (subscriptions.get) + * + * @param string $subscription + * The name of the subscription to get. + * @param array $optParams Optional parameters. + * @return Google_Service_Pubsub_Subscription + */ + public function get($subscription, $optParams = array()) + { + $params = array('subscription' => $subscription); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Pubsub_Subscription"); + } + /** + * Lists matching subscriptions. (subscriptions.listSubscriptions) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The value obtained in the last ListSubscriptionsResponse for continuation. + * @opt_param int maxResults + * Maximum number of subscriptions to return. + * @opt_param string query + * A valid label query expression. + * @return Google_Service_Pubsub_ListSubscriptionsResponse + */ + public function listSubscriptions($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Pubsub_ListSubscriptionsResponse"); + } + /** + * Modifies the Ack deadline for a message received from a pull request. + * (subscriptions.modifyAckDeadline) + * + * @param Google_ModifyAckDeadlineRequest $postBody + * @param array $optParams Optional parameters. + */ + public function modifyAckDeadline(Google_Service_Pubsub_ModifyAckDeadlineRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('modifyAckDeadline', array($params)); + } + /** + * Modifies the PushConfig for a specified subscription. This method can be used + * to suspend the flow of messages to an end point by clearing the PushConfig + * field in the request. Messages will be accumulated for delivery even if no + * push configuration is defined or while the configuration is modified. + * (subscriptions.modifyPushConfig) + * + * @param Google_ModifyPushConfigRequest $postBody + * @param array $optParams Optional parameters. + */ + public function modifyPushConfig(Google_Service_Pubsub_ModifyPushConfigRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('modifyPushConfig', array($params)); + } + /** + * Pulls a single message from the server. If return_immediately is true, and no + * messages are available in the subscription, this method returns + * FAILED_PRECONDITION. The system is free to return an UNAVAILABLE error if no + * messages are available in a reasonable amount of time (to reduce system + * load). (subscriptions.pull) + * + * @param Google_PullRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Pubsub_PullResponse + */ + public function pull(Google_Service_Pubsub_PullRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('pull', array($params), "Google_Service_Pubsub_PullResponse"); + } +} + +/** + * The "topics" collection of methods. + * Typical usage is: + * + * $pubsubService = new Google_Service_Pubsub(...); + * $topics = $pubsubService->topics; + * + */ +class Google_Service_Pubsub_Topics_Resource extends Google_Service_Resource +{ + + /** + * Creates the given topic with the given name. (topics.create) + * + * @param Google_Topic $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Pubsub_Topic + */ + public function create(Google_Service_Pubsub_Topic $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('create', array($params), "Google_Service_Pubsub_Topic"); + } + /** + * Deletes the topic with the given name. All subscriptions to this topic are + * also deleted. Returns NOT_FOUND if the topic does not exist. After a topic is + * deleted, a new topic may be created with the same name. (topics.delete) + * + * @param string $topic + * Name of the topic to delete. + * @param array $optParams Optional parameters. + */ + public function delete($topic, $optParams = array()) + { + $params = array('topic' => $topic); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets the configuration of a topic. Since the topic only has the name + * attribute, this method is only useful to check the existence of a topic. If + * other attributes are added in the future, they will be returned here. + * (topics.get) + * + * @param string $topic + * The name of the topic to get. + * @param array $optParams Optional parameters. + * @return Google_Service_Pubsub_Topic + */ + public function get($topic, $optParams = array()) + { + $params = array('topic' => $topic); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Pubsub_Topic"); + } + /** + * Lists matching topics. (topics.listTopics) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The value obtained in the last ListTopicsResponse for continuation. + * @opt_param int maxResults + * Maximum number of topics to return. + * @opt_param string query + * A valid label query expression. + * @return Google_Service_Pubsub_ListTopicsResponse + */ + public function listTopics($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Pubsub_ListTopicsResponse"); + } + /** + * Adds a message to the topic. Returns NOT_FOUND if the topic does not exist. + * (topics.publish) + * + * @param Google_PublishRequest $postBody + * @param array $optParams Optional parameters. + */ + public function publish(Google_Service_Pubsub_PublishRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('publish', array($params)); + } +} + + + + +class Google_Service_Pubsub_AcknowledgeRequest extends Google_Collection +{ + public $ackId; + public $subscription; + + public function setAckId($ackId) + { + $this->ackId = $ackId; + } + + public function getAckId() + { + return $this->ackId; + } + + public function setSubscription($subscription) + { + $this->subscription = $subscription; + } + + public function getSubscription() + { + return $this->subscription; + } +} + +class Google_Service_Pubsub_Label extends Google_Model +{ + public $key; + public $numValue; + public $strValue; + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setNumValue($numValue) + { + $this->numValue = $numValue; + } + + public function getNumValue() + { + return $this->numValue; + } + + public function setStrValue($strValue) + { + $this->strValue = $strValue; + } + + public function getStrValue() + { + return $this->strValue; + } +} + +class Google_Service_Pubsub_ListSubscriptionsResponse extends Google_Collection +{ + public $nextPageToken; + protected $subscriptionType = 'Google_Service_Pubsub_Subscription'; + protected $subscriptionDataType = 'array'; + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSubscription($subscription) + { + $this->subscription = $subscription; + } + + public function getSubscription() + { + return $this->subscription; + } +} + +class Google_Service_Pubsub_ListTopicsResponse extends Google_Collection +{ + public $nextPageToken; + protected $topicType = 'Google_Service_Pubsub_Topic'; + protected $topicDataType = 'array'; + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setTopic($topic) + { + $this->topic = $topic; + } + + public function getTopic() + { + return $this->topic; + } +} + +class Google_Service_Pubsub_ModifyAckDeadlineRequest extends Google_Model +{ + public $ackDeadlineSeconds; + public $ackId; + public $subscription; + + public function setAckDeadlineSeconds($ackDeadlineSeconds) + { + $this->ackDeadlineSeconds = $ackDeadlineSeconds; + } + + public function getAckDeadlineSeconds() + { + return $this->ackDeadlineSeconds; + } + + public function setAckId($ackId) + { + $this->ackId = $ackId; + } + + public function getAckId() + { + return $this->ackId; + } + + public function setSubscription($subscription) + { + $this->subscription = $subscription; + } + + public function getSubscription() + { + return $this->subscription; + } +} + +class Google_Service_Pubsub_ModifyPushConfigRequest extends Google_Model +{ + protected $pushConfigType = 'Google_Service_Pubsub_PushConfig'; + protected $pushConfigDataType = ''; + public $subscription; + + public function setPushConfig(Google_Service_Pubsub_PushConfig $pushConfig) + { + $this->pushConfig = $pushConfig; + } + + public function getPushConfig() + { + return $this->pushConfig; + } + + public function setSubscription($subscription) + { + $this->subscription = $subscription; + } + + public function getSubscription() + { + return $this->subscription; + } +} + +class Google_Service_Pubsub_PublishRequest extends Google_Model +{ + protected $messageType = 'Google_Service_Pubsub_PubsubMessage'; + protected $messageDataType = ''; + public $topic; + + public function setMessage(Google_Service_Pubsub_PubsubMessage $message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } + + public function setTopic($topic) + { + $this->topic = $topic; + } + + public function getTopic() + { + return $this->topic; + } +} + +class Google_Service_Pubsub_PubsubEvent extends Google_Model +{ + public $deleted; + protected $messageType = 'Google_Service_Pubsub_PubsubMessage'; + protected $messageDataType = ''; + public $subscription; + public $truncated; + + public function setDeleted($deleted) + { + $this->deleted = $deleted; + } + + public function getDeleted() + { + return $this->deleted; + } + + public function setMessage(Google_Service_Pubsub_PubsubMessage $message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } + + public function setSubscription($subscription) + { + $this->subscription = $subscription; + } + + public function getSubscription() + { + return $this->subscription; + } + + public function setTruncated($truncated) + { + $this->truncated = $truncated; + } + + public function getTruncated() + { + return $this->truncated; + } +} + +class Google_Service_Pubsub_PubsubMessage extends Google_Collection +{ + public $data; + protected $labelType = 'Google_Service_Pubsub_Label'; + protected $labelDataType = 'array'; + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setLabel($label) + { + $this->label = $label; + } + + public function getLabel() + { + return $this->label; + } +} + +class Google_Service_Pubsub_PullRequest extends Google_Model +{ + public $returnImmediately; + public $subscription; + + public function setReturnImmediately($returnImmediately) + { + $this->returnImmediately = $returnImmediately; + } + + public function getReturnImmediately() + { + return $this->returnImmediately; + } + + public function setSubscription($subscription) + { + $this->subscription = $subscription; + } + + public function getSubscription() + { + return $this->subscription; + } +} + +class Google_Service_Pubsub_PullResponse extends Google_Model +{ + public $ackId; + protected $pubsubEventType = 'Google_Service_Pubsub_PubsubEvent'; + protected $pubsubEventDataType = ''; + + public function setAckId($ackId) + { + $this->ackId = $ackId; + } + + public function getAckId() + { + return $this->ackId; + } + + public function setPubsubEvent(Google_Service_Pubsub_PubsubEvent $pubsubEvent) + { + $this->pubsubEvent = $pubsubEvent; + } + + public function getPubsubEvent() + { + return $this->pubsubEvent; + } +} + +class Google_Service_Pubsub_PushConfig extends Google_Model +{ + public $pushEndpoint; + + public function setPushEndpoint($pushEndpoint) + { + $this->pushEndpoint = $pushEndpoint; + } + + public function getPushEndpoint() + { + return $this->pushEndpoint; + } +} + +class Google_Service_Pubsub_Subscription extends Google_Model +{ + public $ackDeadlineSeconds; + public $name; + protected $pushConfigType = 'Google_Service_Pubsub_PushConfig'; + protected $pushConfigDataType = ''; + public $topic; + + public function setAckDeadlineSeconds($ackDeadlineSeconds) + { + $this->ackDeadlineSeconds = $ackDeadlineSeconds; + } + + public function getAckDeadlineSeconds() + { + return $this->ackDeadlineSeconds; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPushConfig(Google_Service_Pubsub_PushConfig $pushConfig) + { + $this->pushConfig = $pushConfig; + } + + public function getPushConfig() + { + return $this->pushConfig; + } + + public function setTopic($topic) + { + $this->topic = $topic; + } + + public function getTopic() + { + return $this->topic; + } +} + +class Google_Service_Pubsub_Topic extends Google_Model +{ + public $name; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} diff --git a/oauth/Google/Service/QPXExpress.php b/oauth/Google/Service/QPXExpress.php new file mode 100644 index 0000000..ebc1cea --- /dev/null +++ b/oauth/Google/Service/QPXExpress.php @@ -0,0 +1,1700 @@ + + * Lets you find the least expensive flights between an origin and a destination. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_QPXExpress extends Google_Service +{ + + + public $trips; + + + /** + * Constructs the internal representation of the QPXExpress service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'qpxExpress/v1/trips/'; + $this->version = 'v1'; + $this->serviceName = 'qpxExpress'; + + $this->trips = new Google_Service_QPXExpress_Trips_Resource( + $this, + $this->serviceName, + 'trips', + array( + 'methods' => array( + 'search' => array( + 'path' => 'search', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + } +} + + +/** + * The "trips" collection of methods. + * Typical usage is: + * + * $qpxExpressService = new Google_Service_QPXExpress(...); + * $trips = $qpxExpressService->trips; + * + */ +class Google_Service_QPXExpress_Trips_Resource extends Google_Service_Resource +{ + + /** + * Returns a list of flights. (trips.search) + * + * @param Google_TripsSearchRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_QPXExpress_TripsSearchResponse + */ + public function search(Google_Service_QPXExpress_TripsSearchRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('search', array($params), "Google_Service_QPXExpress_TripsSearchResponse"); + } +} + + + + +class Google_Service_QPXExpress_AircraftData extends Google_Model +{ + public $code; + public $kind; + public $name; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_QPXExpress_AirportData extends Google_Model +{ + public $city; + public $code; + public $kind; + public $name; + + public function setCity($city) + { + $this->city = $city; + } + + public function getCity() + { + return $this->city; + } + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_QPXExpress_BagDescriptor extends Google_Collection +{ + public $commercialName; + public $count; + public $description; + public $kind; + public $subcode; + + public function setCommercialName($commercialName) + { + $this->commercialName = $commercialName; + } + + public function getCommercialName() + { + return $this->commercialName; + } + + public function setCount($count) + { + $this->count = $count; + } + + public function getCount() + { + return $this->count; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSubcode($subcode) + { + $this->subcode = $subcode; + } + + public function getSubcode() + { + return $this->subcode; + } +} + +class Google_Service_QPXExpress_CarrierData extends Google_Model +{ + public $code; + public $kind; + public $name; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_QPXExpress_CityData extends Google_Model +{ + public $code; + public $country; + public $kind; + public $name; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setCountry($country) + { + $this->country = $country; + } + + public function getCountry() + { + return $this->country; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_QPXExpress_Data extends Google_Collection +{ + protected $aircraftType = 'Google_Service_QPXExpress_AircraftData'; + protected $aircraftDataType = 'array'; + protected $airportType = 'Google_Service_QPXExpress_AirportData'; + protected $airportDataType = 'array'; + protected $carrierType = 'Google_Service_QPXExpress_CarrierData'; + protected $carrierDataType = 'array'; + protected $cityType = 'Google_Service_QPXExpress_CityData'; + protected $cityDataType = 'array'; + public $kind; + protected $taxType = 'Google_Service_QPXExpress_TaxData'; + protected $taxDataType = 'array'; + + public function setAircraft($aircraft) + { + $this->aircraft = $aircraft; + } + + public function getAircraft() + { + return $this->aircraft; + } + + public function setAirport($airport) + { + $this->airport = $airport; + } + + public function getAirport() + { + return $this->airport; + } + + public function setCarrier($carrier) + { + $this->carrier = $carrier; + } + + public function getCarrier() + { + return $this->carrier; + } + + public function setCity($city) + { + $this->city = $city; + } + + public function getCity() + { + return $this->city; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setTax($tax) + { + $this->tax = $tax; + } + + public function getTax() + { + return $this->tax; + } +} + +class Google_Service_QPXExpress_FareInfo extends Google_Model +{ + public $basisCode; + public $carrier; + public $destination; + public $id; + public $kind; + public $origin; + public $private; + + public function setBasisCode($basisCode) + { + $this->basisCode = $basisCode; + } + + public function getBasisCode() + { + return $this->basisCode; + } + + public function setCarrier($carrier) + { + $this->carrier = $carrier; + } + + public function getCarrier() + { + return $this->carrier; + } + + public function setDestination($destination) + { + $this->destination = $destination; + } + + public function getDestination() + { + return $this->destination; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setOrigin($origin) + { + $this->origin = $origin; + } + + public function getOrigin() + { + return $this->origin; + } + + public function setPrivate($private) + { + $this->private = $private; + } + + public function getPrivate() + { + return $this->private; + } +} + +class Google_Service_QPXExpress_FlightInfo extends Google_Model +{ + public $carrier; + public $number; + + public function setCarrier($carrier) + { + $this->carrier = $carrier; + } + + public function getCarrier() + { + return $this->carrier; + } + + public function setNumber($number) + { + $this->number = $number; + } + + public function getNumber() + { + return $this->number; + } +} + +class Google_Service_QPXExpress_FreeBaggageAllowance extends Google_Collection +{ + protected $bagDescriptorType = 'Google_Service_QPXExpress_BagDescriptor'; + protected $bagDescriptorDataType = 'array'; + public $kilos; + public $kilosPerPiece; + public $kind; + public $pieces; + public $pounds; + + public function setBagDescriptor($bagDescriptor) + { + $this->bagDescriptor = $bagDescriptor; + } + + public function getBagDescriptor() + { + return $this->bagDescriptor; + } + + public function setKilos($kilos) + { + $this->kilos = $kilos; + } + + public function getKilos() + { + return $this->kilos; + } + + public function setKilosPerPiece($kilosPerPiece) + { + $this->kilosPerPiece = $kilosPerPiece; + } + + public function getKilosPerPiece() + { + return $this->kilosPerPiece; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPieces($pieces) + { + $this->pieces = $pieces; + } + + public function getPieces() + { + return $this->pieces; + } + + public function setPounds($pounds) + { + $this->pounds = $pounds; + } + + public function getPounds() + { + return $this->pounds; + } +} + +class Google_Service_QPXExpress_LegInfo extends Google_Model +{ + public $aircraft; + public $arrivalTime; + public $changePlane; + public $connectionDuration; + public $departureTime; + public $destination; + public $destinationTerminal; + public $duration; + public $id; + public $kind; + public $meal; + public $mileage; + public $onTimePerformance; + public $operatingDisclosure; + public $origin; + public $originTerminal; + public $secure; + + public function setAircraft($aircraft) + { + $this->aircraft = $aircraft; + } + + public function getAircraft() + { + return $this->aircraft; + } + + public function setArrivalTime($arrivalTime) + { + $this->arrivalTime = $arrivalTime; + } + + public function getArrivalTime() + { + return $this->arrivalTime; + } + + public function setChangePlane($changePlane) + { + $this->changePlane = $changePlane; + } + + public function getChangePlane() + { + return $this->changePlane; + } + + public function setConnectionDuration($connectionDuration) + { + $this->connectionDuration = $connectionDuration; + } + + public function getConnectionDuration() + { + return $this->connectionDuration; + } + + public function setDepartureTime($departureTime) + { + $this->departureTime = $departureTime; + } + + public function getDepartureTime() + { + return $this->departureTime; + } + + public function setDestination($destination) + { + $this->destination = $destination; + } + + public function getDestination() + { + return $this->destination; + } + + public function setDestinationTerminal($destinationTerminal) + { + $this->destinationTerminal = $destinationTerminal; + } + + public function getDestinationTerminal() + { + return $this->destinationTerminal; + } + + public function setDuration($duration) + { + $this->duration = $duration; + } + + public function getDuration() + { + return $this->duration; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMeal($meal) + { + $this->meal = $meal; + } + + public function getMeal() + { + return $this->meal; + } + + public function setMileage($mileage) + { + $this->mileage = $mileage; + } + + public function getMileage() + { + return $this->mileage; + } + + public function setOnTimePerformance($onTimePerformance) + { + $this->onTimePerformance = $onTimePerformance; + } + + public function getOnTimePerformance() + { + return $this->onTimePerformance; + } + + public function setOperatingDisclosure($operatingDisclosure) + { + $this->operatingDisclosure = $operatingDisclosure; + } + + public function getOperatingDisclosure() + { + return $this->operatingDisclosure; + } + + public function setOrigin($origin) + { + $this->origin = $origin; + } + + public function getOrigin() + { + return $this->origin; + } + + public function setOriginTerminal($originTerminal) + { + $this->originTerminal = $originTerminal; + } + + public function getOriginTerminal() + { + return $this->originTerminal; + } + + public function setSecure($secure) + { + $this->secure = $secure; + } + + public function getSecure() + { + return $this->secure; + } +} + +class Google_Service_QPXExpress_PassengerCounts extends Google_Model +{ + public $adultCount; + public $childCount; + public $infantInLapCount; + public $infantInSeatCount; + public $kind; + public $seniorCount; + + public function setAdultCount($adultCount) + { + $this->adultCount = $adultCount; + } + + public function getAdultCount() + { + return $this->adultCount; + } + + public function setChildCount($childCount) + { + $this->childCount = $childCount; + } + + public function getChildCount() + { + return $this->childCount; + } + + public function setInfantInLapCount($infantInLapCount) + { + $this->infantInLapCount = $infantInLapCount; + } + + public function getInfantInLapCount() + { + return $this->infantInLapCount; + } + + public function setInfantInSeatCount($infantInSeatCount) + { + $this->infantInSeatCount = $infantInSeatCount; + } + + public function getInfantInSeatCount() + { + return $this->infantInSeatCount; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSeniorCount($seniorCount) + { + $this->seniorCount = $seniorCount; + } + + public function getSeniorCount() + { + return $this->seniorCount; + } +} + +class Google_Service_QPXExpress_PricingInfo extends Google_Collection +{ + public $baseFareTotal; + protected $fareType = 'Google_Service_QPXExpress_FareInfo'; + protected $fareDataType = 'array'; + public $fareCalculation; + public $kind; + public $latestTicketingTime; + protected $passengersType = 'Google_Service_QPXExpress_PassengerCounts'; + protected $passengersDataType = ''; + public $ptc; + public $refundable; + public $saleFareTotal; + public $saleTaxTotal; + public $saleTotal; + protected $segmentPricingType = 'Google_Service_QPXExpress_SegmentPricing'; + protected $segmentPricingDataType = 'array'; + protected $taxType = 'Google_Service_QPXExpress_TaxInfo'; + protected $taxDataType = 'array'; + + public function setBaseFareTotal($baseFareTotal) + { + $this->baseFareTotal = $baseFareTotal; + } + + public function getBaseFareTotal() + { + return $this->baseFareTotal; + } + + public function setFare($fare) + { + $this->fare = $fare; + } + + public function getFare() + { + return $this->fare; + } + + public function setFareCalculation($fareCalculation) + { + $this->fareCalculation = $fareCalculation; + } + + public function getFareCalculation() + { + return $this->fareCalculation; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLatestTicketingTime($latestTicketingTime) + { + $this->latestTicketingTime = $latestTicketingTime; + } + + public function getLatestTicketingTime() + { + return $this->latestTicketingTime; + } + + public function setPassengers(Google_Service_QPXExpress_PassengerCounts $passengers) + { + $this->passengers = $passengers; + } + + public function getPassengers() + { + return $this->passengers; + } + + public function setPtc($ptc) + { + $this->ptc = $ptc; + } + + public function getPtc() + { + return $this->ptc; + } + + public function setRefundable($refundable) + { + $this->refundable = $refundable; + } + + public function getRefundable() + { + return $this->refundable; + } + + public function setSaleFareTotal($saleFareTotal) + { + $this->saleFareTotal = $saleFareTotal; + } + + public function getSaleFareTotal() + { + return $this->saleFareTotal; + } + + public function setSaleTaxTotal($saleTaxTotal) + { + $this->saleTaxTotal = $saleTaxTotal; + } + + public function getSaleTaxTotal() + { + return $this->saleTaxTotal; + } + + public function setSaleTotal($saleTotal) + { + $this->saleTotal = $saleTotal; + } + + public function getSaleTotal() + { + return $this->saleTotal; + } + + public function setSegmentPricing($segmentPricing) + { + $this->segmentPricing = $segmentPricing; + } + + public function getSegmentPricing() + { + return $this->segmentPricing; + } + + public function setTax($tax) + { + $this->tax = $tax; + } + + public function getTax() + { + return $this->tax; + } +} + +class Google_Service_QPXExpress_SegmentInfo extends Google_Collection +{ + public $bookingCode; + public $bookingCodeCount; + public $cabin; + public $connectionDuration; + public $duration; + protected $flightType = 'Google_Service_QPXExpress_FlightInfo'; + protected $flightDataType = ''; + public $id; + public $kind; + protected $legType = 'Google_Service_QPXExpress_LegInfo'; + protected $legDataType = 'array'; + public $marriedSegmentGroup; + public $subjectToGovernmentApproval; + + public function setBookingCode($bookingCode) + { + $this->bookingCode = $bookingCode; + } + + public function getBookingCode() + { + return $this->bookingCode; + } + + public function setBookingCodeCount($bookingCodeCount) + { + $this->bookingCodeCount = $bookingCodeCount; + } + + public function getBookingCodeCount() + { + return $this->bookingCodeCount; + } + + public function setCabin($cabin) + { + $this->cabin = $cabin; + } + + public function getCabin() + { + return $this->cabin; + } + + public function setConnectionDuration($connectionDuration) + { + $this->connectionDuration = $connectionDuration; + } + + public function getConnectionDuration() + { + return $this->connectionDuration; + } + + public function setDuration($duration) + { + $this->duration = $duration; + } + + public function getDuration() + { + return $this->duration; + } + + public function setFlight(Google_Service_QPXExpress_FlightInfo $flight) + { + $this->flight = $flight; + } + + public function getFlight() + { + return $this->flight; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLeg($leg) + { + $this->leg = $leg; + } + + public function getLeg() + { + return $this->leg; + } + + public function setMarriedSegmentGroup($marriedSegmentGroup) + { + $this->marriedSegmentGroup = $marriedSegmentGroup; + } + + public function getMarriedSegmentGroup() + { + return $this->marriedSegmentGroup; + } + + public function setSubjectToGovernmentApproval($subjectToGovernmentApproval) + { + $this->subjectToGovernmentApproval = $subjectToGovernmentApproval; + } + + public function getSubjectToGovernmentApproval() + { + return $this->subjectToGovernmentApproval; + } +} + +class Google_Service_QPXExpress_SegmentPricing extends Google_Collection +{ + public $fareId; + protected $freeBaggageOptionType = 'Google_Service_QPXExpress_FreeBaggageAllowance'; + protected $freeBaggageOptionDataType = 'array'; + public $kind; + public $segmentId; + + public function setFareId($fareId) + { + $this->fareId = $fareId; + } + + public function getFareId() + { + return $this->fareId; + } + + public function setFreeBaggageOption($freeBaggageOption) + { + $this->freeBaggageOption = $freeBaggageOption; + } + + public function getFreeBaggageOption() + { + return $this->freeBaggageOption; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSegmentId($segmentId) + { + $this->segmentId = $segmentId; + } + + public function getSegmentId() + { + return $this->segmentId; + } +} + +class Google_Service_QPXExpress_SliceInfo extends Google_Collection +{ + public $duration; + public $kind; + protected $segmentType = 'Google_Service_QPXExpress_SegmentInfo'; + protected $segmentDataType = 'array'; + + public function setDuration($duration) + { + $this->duration = $duration; + } + + public function getDuration() + { + return $this->duration; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSegment($segment) + { + $this->segment = $segment; + } + + public function getSegment() + { + return $this->segment; + } +} + +class Google_Service_QPXExpress_SliceInput extends Google_Collection +{ + public $alliance; + public $date; + public $destination; + public $kind; + public $maxConnectionDuration; + public $maxStops; + public $origin; + public $permittedCarrier; + protected $permittedDepartureTimeType = 'Google_Service_QPXExpress_TimeOfDayRange'; + protected $permittedDepartureTimeDataType = ''; + public $preferredCabin; + public $prohibitedCarrier; + + public function setAlliance($alliance) + { + $this->alliance = $alliance; + } + + public function getAlliance() + { + return $this->alliance; + } + + public function setDate($date) + { + $this->date = $date; + } + + public function getDate() + { + return $this->date; + } + + public function setDestination($destination) + { + $this->destination = $destination; + } + + public function getDestination() + { + return $this->destination; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMaxConnectionDuration($maxConnectionDuration) + { + $this->maxConnectionDuration = $maxConnectionDuration; + } + + public function getMaxConnectionDuration() + { + return $this->maxConnectionDuration; + } + + public function setMaxStops($maxStops) + { + $this->maxStops = $maxStops; + } + + public function getMaxStops() + { + return $this->maxStops; + } + + public function setOrigin($origin) + { + $this->origin = $origin; + } + + public function getOrigin() + { + return $this->origin; + } + + public function setPermittedCarrier($permittedCarrier) + { + $this->permittedCarrier = $permittedCarrier; + } + + public function getPermittedCarrier() + { + return $this->permittedCarrier; + } + + public function setPermittedDepartureTime(Google_Service_QPXExpress_TimeOfDayRange $permittedDepartureTime) + { + $this->permittedDepartureTime = $permittedDepartureTime; + } + + public function getPermittedDepartureTime() + { + return $this->permittedDepartureTime; + } + + public function setPreferredCabin($preferredCabin) + { + $this->preferredCabin = $preferredCabin; + } + + public function getPreferredCabin() + { + return $this->preferredCabin; + } + + public function setProhibitedCarrier($prohibitedCarrier) + { + $this->prohibitedCarrier = $prohibitedCarrier; + } + + public function getProhibitedCarrier() + { + return $this->prohibitedCarrier; + } +} + +class Google_Service_QPXExpress_TaxData extends Google_Model +{ + public $id; + public $kind; + public $name; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_QPXExpress_TaxInfo extends Google_Model +{ + public $chargeType; + public $code; + public $country; + public $id; + public $kind; + public $salePrice; + + public function setChargeType($chargeType) + { + $this->chargeType = $chargeType; + } + + public function getChargeType() + { + return $this->chargeType; + } + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setCountry($country) + { + $this->country = $country; + } + + public function getCountry() + { + return $this->country; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSalePrice($salePrice) + { + $this->salePrice = $salePrice; + } + + public function getSalePrice() + { + return $this->salePrice; + } +} + +class Google_Service_QPXExpress_TimeOfDayRange extends Google_Model +{ + public $earliestTime; + public $kind; + public $latestTime; + + public function setEarliestTime($earliestTime) + { + $this->earliestTime = $earliestTime; + } + + public function getEarliestTime() + { + return $this->earliestTime; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLatestTime($latestTime) + { + $this->latestTime = $latestTime; + } + + public function getLatestTime() + { + return $this->latestTime; + } +} + +class Google_Service_QPXExpress_TripOption extends Google_Collection +{ + public $id; + public $kind; + protected $pricingType = 'Google_Service_QPXExpress_PricingInfo'; + protected $pricingDataType = 'array'; + public $saleTotal; + protected $sliceType = 'Google_Service_QPXExpress_SliceInfo'; + protected $sliceDataType = 'array'; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPricing($pricing) + { + $this->pricing = $pricing; + } + + public function getPricing() + { + return $this->pricing; + } + + public function setSaleTotal($saleTotal) + { + $this->saleTotal = $saleTotal; + } + + public function getSaleTotal() + { + return $this->saleTotal; + } + + public function setSlice($slice) + { + $this->slice = $slice; + } + + public function getSlice() + { + return $this->slice; + } +} + +class Google_Service_QPXExpress_TripOptionsRequest extends Google_Collection +{ + public $maxPrice; + protected $passengersType = 'Google_Service_QPXExpress_PassengerCounts'; + protected $passengersDataType = ''; + public $refundable; + public $saleCountry; + protected $sliceType = 'Google_Service_QPXExpress_SliceInput'; + protected $sliceDataType = 'array'; + public $solutions; + + public function setMaxPrice($maxPrice) + { + $this->maxPrice = $maxPrice; + } + + public function getMaxPrice() + { + return $this->maxPrice; + } + + public function setPassengers(Google_Service_QPXExpress_PassengerCounts $passengers) + { + $this->passengers = $passengers; + } + + public function getPassengers() + { + return $this->passengers; + } + + public function setRefundable($refundable) + { + $this->refundable = $refundable; + } + + public function getRefundable() + { + return $this->refundable; + } + + public function setSaleCountry($saleCountry) + { + $this->saleCountry = $saleCountry; + } + + public function getSaleCountry() + { + return $this->saleCountry; + } + + public function setSlice($slice) + { + $this->slice = $slice; + } + + public function getSlice() + { + return $this->slice; + } + + public function setSolutions($solutions) + { + $this->solutions = $solutions; + } + + public function getSolutions() + { + return $this->solutions; + } +} + +class Google_Service_QPXExpress_TripOptionsResponse extends Google_Collection +{ + protected $dataType = 'Google_Service_QPXExpress_Data'; + protected $dataDataType = ''; + public $kind; + public $requestId; + protected $tripOptionType = 'Google_Service_QPXExpress_TripOption'; + protected $tripOptionDataType = 'array'; + + public function setData(Google_Service_QPXExpress_Data $data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRequestId($requestId) + { + $this->requestId = $requestId; + } + + public function getRequestId() + { + return $this->requestId; + } + + public function setTripOption($tripOption) + { + $this->tripOption = $tripOption; + } + + public function getTripOption() + { + return $this->tripOption; + } +} + +class Google_Service_QPXExpress_TripsSearchRequest extends Google_Model +{ + protected $requestType = 'Google_Service_QPXExpress_TripOptionsRequest'; + protected $requestDataType = ''; + + public function setRequest(Google_Service_QPXExpress_TripOptionsRequest $request) + { + $this->request = $request; + } + + public function getRequest() + { + return $this->request; + } +} + +class Google_Service_QPXExpress_TripsSearchResponse extends Google_Model +{ + public $kind; + protected $tripsType = 'Google_Service_QPXExpress_TripOptionsResponse'; + protected $tripsDataType = ''; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setTrips(Google_Service_QPXExpress_TripOptionsResponse $trips) + { + $this->trips = $trips; + } + + public function getTrips() + { + return $this->trips; + } +} diff --git a/oauth/Google/Service/Replicapool.php b/oauth/Google/Service/Replicapool.php new file mode 100644 index 0000000..4922ffb --- /dev/null +++ b/oauth/Google/Service/Replicapool.php @@ -0,0 +1,1590 @@ + + * The Replica Pool API allows users to declaratively provision and manage groups of Google Compute Engine instances based on a common template. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Replicapool extends Google_Service +{ + /** View and manage your data across Google Cloud Platform services. */ + const CLOUD_PLATFORM = "https://www.googleapis.com/auth/cloud-platform"; + /** View and manage your Google Cloud Platform management resources and deployment status information. */ + const NDEV_CLOUDMAN = "https://www.googleapis.com/auth/ndev.cloudman"; + /** View your Google Cloud Platform management resources and deployment status information. */ + const NDEV_CLOUDMAN_READONLY = "https://www.googleapis.com/auth/ndev.cloudman.readonly"; + /** View and manage replica pools. */ + const REPLICAPOOL = "https://www.googleapis.com/auth/replicapool"; + /** View replica pools. */ + const REPLICAPOOL_READONLY = "https://www.googleapis.com/auth/replicapool.readonly"; + + public $pools; + public $replicas; + + + /** + * Constructs the internal representation of the Replicapool service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'replicapool/v1beta1/projects/'; + $this->version = 'v1beta1'; + $this->serviceName = 'replicapool'; + + $this->pools = new Google_Service_Replicapool_Pools_Resource( + $this, + $this->serviceName, + 'pools', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{projectName}/zones/{zone}/pools/{poolName}', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'poolName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{projectName}/zones/{zone}/pools/{poolName}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'poolName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{projectName}/zones/{zone}/pools', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{projectName}/zones/{zone}/pools', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'resize' => array( + 'path' => '{projectName}/zones/{zone}/pools/{poolName}/resize', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'poolName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'numReplicas' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'updatetemplate' => array( + 'path' => '{projectName}/zones/{zone}/pools/{poolName}/updateTemplate', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'poolName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->replicas = new Google_Service_Replicapool_Replicas_Resource( + $this, + $this->serviceName, + 'replicas', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{projectName}/zones/{zone}/pools/{poolName}/replicas/{replicaName}', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'poolName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'replicaName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{projectName}/zones/{zone}/pools/{poolName}/replicas/{replicaName}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'poolName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'replicaName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{projectName}/zones/{zone}/pools/{poolName}/replicas', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'poolName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'restart' => array( + 'path' => '{projectName}/zones/{zone}/pools/{poolName}/replicas/{replicaName}/restart', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'poolName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'replicaName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "pools" collection of methods. + * Typical usage is: + * + * $replicapoolService = new Google_Service_Replicapool(...); + * $pools = $replicapoolService->pools; + * + */ +class Google_Service_Replicapool_Pools_Resource extends Google_Service_Resource +{ + + /** + * Deletes a replica pool. (pools.delete) + * + * @param string $projectName + * The project ID for this replica pool. + * @param string $zone + * The zone for this replica pool. + * @param string $poolName + * The name of the replica pool for this request. + * @param Google_PoolsDeleteRequest $postBody + * @param array $optParams Optional parameters. + */ + public function delete($projectName, $zone, $poolName, Google_Service_Replicapool_PoolsDeleteRequest $postBody, $optParams = array()) + { + $params = array('projectName' => $projectName, 'zone' => $zone, 'poolName' => $poolName, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets information about a single replica pool. (pools.get) + * + * @param string $projectName + * The project ID for this replica pool. + * @param string $zone + * The zone for this replica pool. + * @param string $poolName + * The name of the replica pool for this request. + * @param array $optParams Optional parameters. + * @return Google_Service_Replicapool_Pool + */ + public function get($projectName, $zone, $poolName, $optParams = array()) + { + $params = array('projectName' => $projectName, 'zone' => $zone, 'poolName' => $poolName); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Replicapool_Pool"); + } + /** + * Inserts a new replica pool. (pools.insert) + * + * @param string $projectName + * The project ID for this replica pool. + * @param string $zone + * The zone for this replica pool. + * @param Google_Pool $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Replicapool_Pool + */ + public function insert($projectName, $zone, Google_Service_Replicapool_Pool $postBody, $optParams = array()) + { + $params = array('projectName' => $projectName, 'zone' => $zone, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Replicapool_Pool"); + } + /** + * List all replica pools. (pools.listPools) + * + * @param string $projectName + * The project ID for this request. + * @param string $zone + * The zone for this replica pool. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Set this to the nextPageToken value returned by a previous list request to obtain the next page + * of results from the previous list request. + * @opt_param int maxResults + * Maximum count of results to be returned. Acceptable values are 0 to 100, inclusive. (Default: + * 50) + * @return Google_Service_Replicapool_PoolsListResponse + */ + public function listPools($projectName, $zone, $optParams = array()) + { + $params = array('projectName' => $projectName, 'zone' => $zone); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Replicapool_PoolsListResponse"); + } + /** + * Resize a pool. This is an asynchronous operation, and multiple overlapping + * resize requests can be made. Replica Pools will use the information from the + * last resize request. (pools.resize) + * + * @param string $projectName + * The project ID for this replica pool. + * @param string $zone + * The zone for this replica pool. + * @param string $poolName + * The name of the replica pool for this request. + * @param array $optParams Optional parameters. + * + * @opt_param int numReplicas + * The desired number of replicas to resize to. If this number is larger than the existing number + * of replicas, new replicas will be added. If the number is smaller, then existing replicas will + * be deleted. + * @return Google_Service_Replicapool_Pool + */ + public function resize($projectName, $zone, $poolName, $optParams = array()) + { + $params = array('projectName' => $projectName, 'zone' => $zone, 'poolName' => $poolName); + $params = array_merge($params, $optParams); + return $this->call('resize', array($params), "Google_Service_Replicapool_Pool"); + } + /** + * Update the template used by the pool. (pools.updatetemplate) + * + * @param string $projectName + * The project ID for this replica pool. + * @param string $zone + * The zone for this replica pool. + * @param string $poolName + * The name of the replica pool for this request. + * @param Google_Template $postBody + * @param array $optParams Optional parameters. + */ + public function updatetemplate($projectName, $zone, $poolName, Google_Service_Replicapool_Template $postBody, $optParams = array()) + { + $params = array('projectName' => $projectName, 'zone' => $zone, 'poolName' => $poolName, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('updatetemplate', array($params)); + } +} + +/** + * The "replicas" collection of methods. + * Typical usage is: + * + * $replicapoolService = new Google_Service_Replicapool(...); + * $replicas = $replicapoolService->replicas; + * + */ +class Google_Service_Replicapool_Replicas_Resource extends Google_Service_Resource +{ + + /** + * Deletes a replica from the pool. (replicas.delete) + * + * @param string $projectName + * The project ID for this request. + * @param string $zone + * The zone where the replica lives. + * @param string $poolName + * The replica pool name for this request. + * @param string $replicaName + * The name of the replica for this request. + * @param Google_ReplicasDeleteRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Replicapool_Replica + */ + public function delete($projectName, $zone, $poolName, $replicaName, Google_Service_Replicapool_ReplicasDeleteRequest $postBody, $optParams = array()) + { + $params = array('projectName' => $projectName, 'zone' => $zone, 'poolName' => $poolName, 'replicaName' => $replicaName, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_Replicapool_Replica"); + } + /** + * Gets information about a specific replica. (replicas.get) + * + * @param string $projectName + * The project ID for this request. + * @param string $zone + * The zone where the replica lives. + * @param string $poolName + * The replica pool name for this request. + * @param string $replicaName + * The name of the replica for this request. + * @param array $optParams Optional parameters. + * @return Google_Service_Replicapool_Replica + */ + public function get($projectName, $zone, $poolName, $replicaName, $optParams = array()) + { + $params = array('projectName' => $projectName, 'zone' => $zone, 'poolName' => $poolName, 'replicaName' => $replicaName); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Replicapool_Replica"); + } + /** + * Lists all replicas in a pool. (replicas.listReplicas) + * + * @param string $projectName + * The project ID for this request. + * @param string $zone + * The zone where the replica pool lives. + * @param string $poolName + * The replica pool name for this request. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Set this to the nextPageToken value returned by a previous list request to obtain the next page + * of results from the previous list request. + * @opt_param int maxResults + * Maximum count of results to be returned. Acceptable values are 0 to 100, inclusive. (Default: + * 50) + * @return Google_Service_Replicapool_ReplicasListResponse + */ + public function listReplicas($projectName, $zone, $poolName, $optParams = array()) + { + $params = array('projectName' => $projectName, 'zone' => $zone, 'poolName' => $poolName); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Replicapool_ReplicasListResponse"); + } + /** + * Restarts a replica in a pool. (replicas.restart) + * + * @param string $projectName + * The project ID for this request. + * @param string $zone + * The zone where the replica lives. + * @param string $poolName + * The replica pool name for this request. + * @param string $replicaName + * The name of the replica for this request. + * @param array $optParams Optional parameters. + * @return Google_Service_Replicapool_Replica + */ + public function restart($projectName, $zone, $poolName, $replicaName, $optParams = array()) + { + $params = array('projectName' => $projectName, 'zone' => $zone, 'poolName' => $poolName, 'replicaName' => $replicaName); + $params = array_merge($params, $optParams); + return $this->call('restart', array($params), "Google_Service_Replicapool_Replica"); + } +} + + + + +class Google_Service_Replicapool_AccessConfig extends Google_Model +{ + public $name; + public $natIp; + public $type; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNatIp($natIp) + { + $this->natIp = $natIp; + } + + public function getNatIp() + { + return $this->natIp; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Replicapool_Action extends Google_Collection +{ + public $commands; + protected $envVariablesType = 'Google_Service_Replicapool_EnvVariable'; + protected $envVariablesDataType = 'array'; + public $timeoutMilliSeconds; + + public function setCommands($commands) + { + $this->commands = $commands; + } + + public function getCommands() + { + return $this->commands; + } + + public function setEnvVariables($envVariables) + { + $this->envVariables = $envVariables; + } + + public function getEnvVariables() + { + return $this->envVariables; + } + + public function setTimeoutMilliSeconds($timeoutMilliSeconds) + { + $this->timeoutMilliSeconds = $timeoutMilliSeconds; + } + + public function getTimeoutMilliSeconds() + { + return $this->timeoutMilliSeconds; + } +} + +class Google_Service_Replicapool_DiskAttachment extends Google_Model +{ + public $deviceName; + public $index; + + public function setDeviceName($deviceName) + { + $this->deviceName = $deviceName; + } + + public function getDeviceName() + { + return $this->deviceName; + } + + public function setIndex($index) + { + $this->index = $index; + } + + public function getIndex() + { + return $this->index; + } +} + +class Google_Service_Replicapool_EnvVariable extends Google_Model +{ + public $hidden; + public $name; + public $value; + + public function setHidden($hidden) + { + $this->hidden = $hidden; + } + + public function getHidden() + { + return $this->hidden; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Replicapool_ExistingDisk extends Google_Model +{ + protected $attachmentType = 'Google_Service_Replicapool_DiskAttachment'; + protected $attachmentDataType = ''; + public $source; + + public function setAttachment(Google_Service_Replicapool_DiskAttachment $attachment) + { + $this->attachment = $attachment; + } + + public function getAttachment() + { + return $this->attachment; + } + + public function setSource($source) + { + $this->source = $source; + } + + public function getSource() + { + return $this->source; + } +} + +class Google_Service_Replicapool_HealthCheck extends Google_Model +{ + public $checkIntervalSec; + public $description; + public $healthyThreshold; + public $host; + public $name; + public $path; + public $port; + public $timeoutSec; + public $unhealthyThreshold; + + public function setCheckIntervalSec($checkIntervalSec) + { + $this->checkIntervalSec = $checkIntervalSec; + } + + public function getCheckIntervalSec() + { + return $this->checkIntervalSec; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setHealthyThreshold($healthyThreshold) + { + $this->healthyThreshold = $healthyThreshold; + } + + public function getHealthyThreshold() + { + return $this->healthyThreshold; + } + + public function setHost($host) + { + $this->host = $host; + } + + public function getHost() + { + return $this->host; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPath($path) + { + $this->path = $path; + } + + public function getPath() + { + return $this->path; + } + + public function setPort($port) + { + $this->port = $port; + } + + public function getPort() + { + return $this->port; + } + + public function setTimeoutSec($timeoutSec) + { + $this->timeoutSec = $timeoutSec; + } + + public function getTimeoutSec() + { + return $this->timeoutSec; + } + + public function setUnhealthyThreshold($unhealthyThreshold) + { + $this->unhealthyThreshold = $unhealthyThreshold; + } + + public function getUnhealthyThreshold() + { + return $this->unhealthyThreshold; + } +} + +class Google_Service_Replicapool_Label extends Google_Model +{ + public $key; + public $value; + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Replicapool_Metadata extends Google_Collection +{ + public $fingerPrint; + protected $itemsType = 'Google_Service_Replicapool_MetadataItem'; + protected $itemsDataType = 'array'; + + public function setFingerPrint($fingerPrint) + { + $this->fingerPrint = $fingerPrint; + } + + public function getFingerPrint() + { + return $this->fingerPrint; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } +} + +class Google_Service_Replicapool_MetadataItem extends Google_Model +{ + public $key; + public $value; + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Replicapool_NetworkInterface extends Google_Collection +{ + protected $accessConfigsType = 'Google_Service_Replicapool_AccessConfig'; + protected $accessConfigsDataType = 'array'; + public $network; + public $networkIp; + + public function setAccessConfigs($accessConfigs) + { + $this->accessConfigs = $accessConfigs; + } + + public function getAccessConfigs() + { + return $this->accessConfigs; + } + + public function setNetwork($network) + { + $this->network = $network; + } + + public function getNetwork() + { + return $this->network; + } + + public function setNetworkIp($networkIp) + { + $this->networkIp = $networkIp; + } + + public function getNetworkIp() + { + return $this->networkIp; + } +} + +class Google_Service_Replicapool_NewDisk extends Google_Model +{ + protected $attachmentType = 'Google_Service_Replicapool_DiskAttachment'; + protected $attachmentDataType = ''; + public $autoDelete; + public $boot; + protected $initializeParamsType = 'Google_Service_Replicapool_NewDiskInitializeParams'; + protected $initializeParamsDataType = ''; + + public function setAttachment(Google_Service_Replicapool_DiskAttachment $attachment) + { + $this->attachment = $attachment; + } + + public function getAttachment() + { + return $this->attachment; + } + + public function setAutoDelete($autoDelete) + { + $this->autoDelete = $autoDelete; + } + + public function getAutoDelete() + { + return $this->autoDelete; + } + + public function setBoot($boot) + { + $this->boot = $boot; + } + + public function getBoot() + { + return $this->boot; + } + + public function setInitializeParams(Google_Service_Replicapool_NewDiskInitializeParams $initializeParams) + { + $this->initializeParams = $initializeParams; + } + + public function getInitializeParams() + { + return $this->initializeParams; + } +} + +class Google_Service_Replicapool_NewDiskInitializeParams extends Google_Model +{ + public $diskSizeGb; + public $sourceImage; + + public function setDiskSizeGb($diskSizeGb) + { + $this->diskSizeGb = $diskSizeGb; + } + + public function getDiskSizeGb() + { + return $this->diskSizeGb; + } + + public function setSourceImage($sourceImage) + { + $this->sourceImage = $sourceImage; + } + + public function getSourceImage() + { + return $this->sourceImage; + } +} + +class Google_Service_Replicapool_Pool extends Google_Collection +{ + public $autoRestart; + public $baseInstanceName; + public $currentNumReplicas; + public $description; + protected $healthChecksType = 'Google_Service_Replicapool_HealthCheck'; + protected $healthChecksDataType = 'array'; + public $initialNumReplicas; + protected $labelsType = 'Google_Service_Replicapool_Label'; + protected $labelsDataType = 'array'; + public $name; + public $numReplicas; + public $resourceViews; + public $selfLink; + public $targetPool; + public $targetPools; + protected $templateType = 'Google_Service_Replicapool_Template'; + protected $templateDataType = ''; + public $type; + + public function setAutoRestart($autoRestart) + { + $this->autoRestart = $autoRestart; + } + + public function getAutoRestart() + { + return $this->autoRestart; + } + + public function setBaseInstanceName($baseInstanceName) + { + $this->baseInstanceName = $baseInstanceName; + } + + public function getBaseInstanceName() + { + return $this->baseInstanceName; + } + + public function setCurrentNumReplicas($currentNumReplicas) + { + $this->currentNumReplicas = $currentNumReplicas; + } + + public function getCurrentNumReplicas() + { + return $this->currentNumReplicas; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setHealthChecks($healthChecks) + { + $this->healthChecks = $healthChecks; + } + + public function getHealthChecks() + { + return $this->healthChecks; + } + + public function setInitialNumReplicas($initialNumReplicas) + { + $this->initialNumReplicas = $initialNumReplicas; + } + + public function getInitialNumReplicas() + { + return $this->initialNumReplicas; + } + + public function setLabels($labels) + { + $this->labels = $labels; + } + + public function getLabels() + { + return $this->labels; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNumReplicas($numReplicas) + { + $this->numReplicas = $numReplicas; + } + + public function getNumReplicas() + { + return $this->numReplicas; + } + + public function setResourceViews($resourceViews) + { + $this->resourceViews = $resourceViews; + } + + public function getResourceViews() + { + return $this->resourceViews; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTargetPool($targetPool) + { + $this->targetPool = $targetPool; + } + + public function getTargetPool() + { + return $this->targetPool; + } + + public function setTargetPools($targetPools) + { + $this->targetPools = $targetPools; + } + + public function getTargetPools() + { + return $this->targetPools; + } + + public function setTemplate(Google_Service_Replicapool_Template $template) + { + $this->template = $template; + } + + public function getTemplate() + { + return $this->template; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Replicapool_PoolsDeleteRequest extends Google_Collection +{ + public $abandonInstances; + + public function setAbandonInstances($abandonInstances) + { + $this->abandonInstances = $abandonInstances; + } + + public function getAbandonInstances() + { + return $this->abandonInstances; + } +} + +class Google_Service_Replicapool_PoolsListResponse extends Google_Collection +{ + public $nextPageToken; + protected $resourcesType = 'Google_Service_Replicapool_Pool'; + protected $resourcesDataType = 'array'; + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setResources($resources) + { + $this->resources = $resources; + } + + public function getResources() + { + return $this->resources; + } +} + +class Google_Service_Replicapool_Replica extends Google_Model +{ + public $name; + public $selfLink; + protected $statusType = 'Google_Service_Replicapool_ReplicaStatus'; + protected $statusDataType = ''; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setStatus(Google_Service_Replicapool_ReplicaStatus $status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_Replicapool_ReplicaStatus extends Google_Model +{ + public $details; + public $state; + public $templateVersion; + public $vmLink; + public $vmStartTime; + + public function setDetails($details) + { + $this->details = $details; + } + + public function getDetails() + { + return $this->details; + } + + public function setState($state) + { + $this->state = $state; + } + + public function getState() + { + return $this->state; + } + + public function setTemplateVersion($templateVersion) + { + $this->templateVersion = $templateVersion; + } + + public function getTemplateVersion() + { + return $this->templateVersion; + } + + public function setVmLink($vmLink) + { + $this->vmLink = $vmLink; + } + + public function getVmLink() + { + return $this->vmLink; + } + + public function setVmStartTime($vmStartTime) + { + $this->vmStartTime = $vmStartTime; + } + + public function getVmStartTime() + { + return $this->vmStartTime; + } +} + +class Google_Service_Replicapool_ReplicasDeleteRequest extends Google_Model +{ + public $abandonInstance; + + public function setAbandonInstance($abandonInstance) + { + $this->abandonInstance = $abandonInstance; + } + + public function getAbandonInstance() + { + return $this->abandonInstance; + } +} + +class Google_Service_Replicapool_ReplicasListResponse extends Google_Collection +{ + public $nextPageToken; + protected $resourcesType = 'Google_Service_Replicapool_Replica'; + protected $resourcesDataType = 'array'; + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setResources($resources) + { + $this->resources = $resources; + } + + public function getResources() + { + return $this->resources; + } +} + +class Google_Service_Replicapool_ServiceAccount extends Google_Collection +{ + public $email; + public $scopes; + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setScopes($scopes) + { + $this->scopes = $scopes; + } + + public function getScopes() + { + return $this->scopes; + } +} + +class Google_Service_Replicapool_Tag extends Google_Collection +{ + public $fingerPrint; + public $items; + + public function setFingerPrint($fingerPrint) + { + $this->fingerPrint = $fingerPrint; + } + + public function getFingerPrint() + { + return $this->fingerPrint; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } +} + +class Google_Service_Replicapool_Template extends Google_Collection +{ + protected $actionType = 'Google_Service_Replicapool_Action'; + protected $actionDataType = ''; + protected $healthChecksType = 'Google_Service_Replicapool_HealthCheck'; + protected $healthChecksDataType = 'array'; + public $version; + protected $vmParamsType = 'Google_Service_Replicapool_VmParams'; + protected $vmParamsDataType = ''; + + public function setAction(Google_Service_Replicapool_Action $action) + { + $this->action = $action; + } + + public function getAction() + { + return $this->action; + } + + public function setHealthChecks($healthChecks) + { + $this->healthChecks = $healthChecks; + } + + public function getHealthChecks() + { + return $this->healthChecks; + } + + public function setVersion($version) + { + $this->version = $version; + } + + public function getVersion() + { + return $this->version; + } + + public function setVmParams(Google_Service_Replicapool_VmParams $vmParams) + { + $this->vmParams = $vmParams; + } + + public function getVmParams() + { + return $this->vmParams; + } +} + +class Google_Service_Replicapool_VmParams extends Google_Collection +{ + public $baseInstanceName; + public $canIpForward; + public $description; + protected $disksToAttachType = 'Google_Service_Replicapool_ExistingDisk'; + protected $disksToAttachDataType = 'array'; + protected $disksToCreateType = 'Google_Service_Replicapool_NewDisk'; + protected $disksToCreateDataType = 'array'; + public $machineType; + protected $metadataType = 'Google_Service_Replicapool_Metadata'; + protected $metadataDataType = ''; + protected $networkInterfacesType = 'Google_Service_Replicapool_NetworkInterface'; + protected $networkInterfacesDataType = 'array'; + public $onHostMaintenance; + protected $serviceAccountsType = 'Google_Service_Replicapool_ServiceAccount'; + protected $serviceAccountsDataType = 'array'; + protected $tagsType = 'Google_Service_Replicapool_Tag'; + protected $tagsDataType = ''; + + public function setBaseInstanceName($baseInstanceName) + { + $this->baseInstanceName = $baseInstanceName; + } + + public function getBaseInstanceName() + { + return $this->baseInstanceName; + } + + public function setCanIpForward($canIpForward) + { + $this->canIpForward = $canIpForward; + } + + public function getCanIpForward() + { + return $this->canIpForward; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDisksToAttach($disksToAttach) + { + $this->disksToAttach = $disksToAttach; + } + + public function getDisksToAttach() + { + return $this->disksToAttach; + } + + public function setDisksToCreate($disksToCreate) + { + $this->disksToCreate = $disksToCreate; + } + + public function getDisksToCreate() + { + return $this->disksToCreate; + } + + public function setMachineType($machineType) + { + $this->machineType = $machineType; + } + + public function getMachineType() + { + return $this->machineType; + } + + public function setMetadata(Google_Service_Replicapool_Metadata $metadata) + { + $this->metadata = $metadata; + } + + public function getMetadata() + { + return $this->metadata; + } + + public function setNetworkInterfaces($networkInterfaces) + { + $this->networkInterfaces = $networkInterfaces; + } + + public function getNetworkInterfaces() + { + return $this->networkInterfaces; + } + + public function setOnHostMaintenance($onHostMaintenance) + { + $this->onHostMaintenance = $onHostMaintenance; + } + + public function getOnHostMaintenance() + { + return $this->onHostMaintenance; + } + + public function setServiceAccounts($serviceAccounts) + { + $this->serviceAccounts = $serviceAccounts; + } + + public function getServiceAccounts() + { + return $this->serviceAccounts; + } + + public function setTags(Google_Service_Replicapool_Tag $tags) + { + $this->tags = $tags; + } + + public function getTags() + { + return $this->tags; + } +} diff --git a/oauth/Google/Service/Reports.php b/oauth/Google/Service/Reports.php new file mode 100644 index 0000000..bf6cdd1 --- /dev/null +++ b/oauth/Google/Service/Reports.php @@ -0,0 +1,1188 @@ + + * Allows the administrators of Google Apps customers to fetch reports about the usage, collaboration, security and risk for their users. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Reports extends Google_Service +{ + /** View audit reports of Google Apps for your domain. */ + const ADMIN_REPORTS_AUDIT_READONLY = "https://www.googleapis.com/auth/admin.reports.audit.readonly"; + /** View usage reports of Google Apps for your domain. */ + const ADMIN_REPORTS_USAGE_READONLY = "https://www.googleapis.com/auth/admin.reports.usage.readonly"; + + public $activities; + public $channels; + public $customerUsageReports; + public $userUsageReport; + + + /** + * Constructs the internal representation of the Reports service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'admin/reports/v1/'; + $this->version = 'reports_v1'; + $this->serviceName = 'admin'; + + $this->activities = new Google_Service_Reports_Activities_Resource( + $this, + $this->serviceName, + 'activities', + array( + 'methods' => array( + 'list' => array( + 'path' => 'activity/users/{userKey}/applications/{applicationName}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'applicationName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'startTime' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'actorIpAddress' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'eventName' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'filters' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'endTime' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'customerId' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'watch' => array( + 'path' => 'activity/users/{userKey}/applications/{applicationName}/watch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'applicationName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'startTime' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'actorIpAddress' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'eventName' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'filters' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'endTime' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'customerId' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->channels = new Google_Service_Reports_Channels_Resource( + $this, + $this->serviceName, + 'channels', + array( + 'methods' => array( + 'stop' => array( + 'path' => '/admin/reports_v1/channels/stop', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->customerUsageReports = new Google_Service_Reports_CustomerUsageReports_Resource( + $this, + $this->serviceName, + 'customerUsageReports', + array( + 'methods' => array( + 'get' => array( + 'path' => 'usage/dates/{date}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'date' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'customerId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'parameters' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->userUsageReport = new Google_Service_Reports_UserUsageReport_Resource( + $this, + $this->serviceName, + 'userUsageReport', + array( + 'methods' => array( + 'get' => array( + 'path' => 'usage/users/{userKey}/dates/{date}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'userKey' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'date' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'parameters' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'filters' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'customerId' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "activities" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Reports(...); + * $activities = $adminService->activities; + * + */ +class Google_Service_Reports_Activities_Resource extends Google_Service_Resource +{ + + /** + * Retrieves a list of activities for a specific customer and application. + * (activities.listActivities) + * + * @param string $userKey + * Represents the profile id or the user email for which the data should be filtered. When 'all' is + * specified as the userKey, it returns usageReports for all users. + * @param string $applicationName + * Application name for which the events are to be retrieved. + * @param array $optParams Optional parameters. + * + * @opt_param string startTime + * Return events which occured at or after this time. + * @opt_param string actorIpAddress + * IP Address of host where the event was performed. Supports both IPv4 and IPv6 addresses. + * @opt_param int maxResults + * Number of activity records to be shown in each page. + * @opt_param string eventName + * Name of the event being queried. + * @opt_param string pageToken + * Token to specify next page. + * @opt_param string filters + * Event parameters in the form [parameter1 name][operator][parameter1 value],[parameter2 + * name][operator][parameter2 value],... + * @opt_param string endTime + * Return events which occured at or before this time. + * @opt_param string customerId + * Represents the customer for which the data is to be fetched. + * @return Google_Service_Reports_Activities + */ + public function listActivities($userKey, $applicationName, $optParams = array()) + { + $params = array('userKey' => $userKey, 'applicationName' => $applicationName); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Reports_Activities"); + } + /** + * Push changes to activities (activities.watch) + * + * @param string $userKey + * Represents the profile id or the user email for which the data should be filtered. When 'all' is + * specified as the userKey, it returns usageReports for all users. + * @param string $applicationName + * Application name for which the events are to be retrieved. + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string startTime + * Return events which occured at or after this time. + * @opt_param string actorIpAddress + * IP Address of host where the event was performed. Supports both IPv4 and IPv6 addresses. + * @opt_param int maxResults + * Number of activity records to be shown in each page. + * @opt_param string eventName + * Name of the event being queried. + * @opt_param string pageToken + * Token to specify next page. + * @opt_param string filters + * Event parameters in the form [parameter1 name][operator][parameter1 value],[parameter2 + * name][operator][parameter2 value],... + * @opt_param string endTime + * Return events which occured at or before this time. + * @opt_param string customerId + * Represents the customer for which the data is to be fetched. + * @return Google_Service_Reports_Channel + */ + public function watch($userKey, $applicationName, Google_Service_Reports_Channel $postBody, $optParams = array()) + { + $params = array('userKey' => $userKey, 'applicationName' => $applicationName, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('watch', array($params), "Google_Service_Reports_Channel"); + } +} + +/** + * The "channels" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Reports(...); + * $channels = $adminService->channels; + * + */ +class Google_Service_Reports_Channels_Resource extends Google_Service_Resource +{ + + /** + * Stop watching resources through this channel (channels.stop) + * + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + */ + public function stop(Google_Service_Reports_Channel $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('stop', array($params)); + } +} + +/** + * The "customerUsageReports" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Reports(...); + * $customerUsageReports = $adminService->customerUsageReports; + * + */ +class Google_Service_Reports_CustomerUsageReports_Resource extends Google_Service_Resource +{ + + /** + * Retrieves a report which is a collection of properties / statistics for a + * specific customer. (customerUsageReports.get) + * + * @param string $date + * Represents the date in yyyy-mm-dd format for which the data is to be fetched. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Token to specify next page. + * @opt_param string customerId + * Represents the customer for which the data is to be fetched. + * @opt_param string parameters + * Represents the application name, parameter name pairs to fetch in csv as app_name1:param_name1, + * app_name2:param_name2. + * @return Google_Service_Reports_UsageReports + */ + public function get($date, $optParams = array()) + { + $params = array('date' => $date); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Reports_UsageReports"); + } +} + +/** + * The "userUsageReport" collection of methods. + * Typical usage is: + * + * $adminService = new Google_Service_Reports(...); + * $userUsageReport = $adminService->userUsageReport; + * + */ +class Google_Service_Reports_UserUsageReport_Resource extends Google_Service_Resource +{ + + /** + * Retrieves a report which is a collection of properties / statistics for a set + * of users. (userUsageReport.get) + * + * @param string $userKey + * Represents the profile id or the user email for which the data should be filtered. + * @param string $date + * Represents the date in yyyy-mm-dd format for which the data is to be fetched. + * @param array $optParams Optional parameters. + * + * @opt_param string parameters + * Represents the application name, parameter name pairs to fetch in csv as app_name1:param_name1, + * app_name2:param_name2. + * @opt_param string maxResults + * Maximum number of results to return. Maximum allowed is 1000 + * @opt_param string pageToken + * Token to specify next page. + * @opt_param string filters + * Represents the set of filters including parameter operator value. + * @opt_param string customerId + * Represents the customer for which the data is to be fetched. + * @return Google_Service_Reports_UsageReports + */ + public function get($userKey, $date, $optParams = array()) + { + $params = array('userKey' => $userKey, 'date' => $date); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Reports_UsageReports"); + } +} + + + + +class Google_Service_Reports_Activities extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Reports_Activity'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Reports_Activity extends Google_Collection +{ + protected $actorType = 'Google_Service_Reports_ActivityActor'; + protected $actorDataType = ''; + public $etag; + protected $eventsType = 'Google_Service_Reports_ActivityEvents'; + protected $eventsDataType = 'array'; + protected $idType = 'Google_Service_Reports_ActivityId'; + protected $idDataType = ''; + public $ipAddress; + public $kind; + public $ownerDomain; + + public function setActor(Google_Service_Reports_ActivityActor $actor) + { + $this->actor = $actor; + } + + public function getActor() + { + return $this->actor; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setEvents($events) + { + $this->events = $events; + } + + public function getEvents() + { + return $this->events; + } + + public function setId(Google_Service_Reports_ActivityId $id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setIpAddress($ipAddress) + { + $this->ipAddress = $ipAddress; + } + + public function getIpAddress() + { + return $this->ipAddress; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setOwnerDomain($ownerDomain) + { + $this->ownerDomain = $ownerDomain; + } + + public function getOwnerDomain() + { + return $this->ownerDomain; + } +} + +class Google_Service_Reports_ActivityActor extends Google_Model +{ + public $callerType; + public $email; + public $key; + public $profileId; + + public function setCallerType($callerType) + { + $this->callerType = $callerType; + } + + public function getCallerType() + { + return $this->callerType; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setProfileId($profileId) + { + $this->profileId = $profileId; + } + + public function getProfileId() + { + return $this->profileId; + } +} + +class Google_Service_Reports_ActivityEvents extends Google_Collection +{ + public $name; + protected $parametersType = 'Google_Service_Reports_ActivityEventsParameters'; + protected $parametersDataType = 'array'; + public $type; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setParameters($parameters) + { + $this->parameters = $parameters; + } + + public function getParameters() + { + return $this->parameters; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Reports_ActivityEventsParameters extends Google_Model +{ + public $boolValue; + public $intValue; + public $name; + public $value; + + public function setBoolValue($boolValue) + { + $this->boolValue = $boolValue; + } + + public function getBoolValue() + { + return $this->boolValue; + } + + public function setIntValue($intValue) + { + $this->intValue = $intValue; + } + + public function getIntValue() + { + return $this->intValue; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Reports_ActivityId extends Google_Model +{ + public $applicationName; + public $customerId; + public $time; + public $uniqueQualifier; + + public function setApplicationName($applicationName) + { + $this->applicationName = $applicationName; + } + + public function getApplicationName() + { + return $this->applicationName; + } + + public function setCustomerId($customerId) + { + $this->customerId = $customerId; + } + + public function getCustomerId() + { + return $this->customerId; + } + + public function setTime($time) + { + $this->time = $time; + } + + public function getTime() + { + return $this->time; + } + + public function setUniqueQualifier($uniqueQualifier) + { + $this->uniqueQualifier = $uniqueQualifier; + } + + public function getUniqueQualifier() + { + return $this->uniqueQualifier; + } +} + +class Google_Service_Reports_Channel extends Google_Model +{ + public $address; + public $expiration; + public $id; + public $kind; + public $params; + public $payload; + public $resourceId; + public $resourceUri; + public $token; + public $type; + + public function setAddress($address) + { + $this->address = $address; + } + + public function getAddress() + { + return $this->address; + } + + public function setExpiration($expiration) + { + $this->expiration = $expiration; + } + + public function getExpiration() + { + return $this->expiration; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setParams($params) + { + $this->params = $params; + } + + public function getParams() + { + return $this->params; + } + + public function setPayload($payload) + { + $this->payload = $payload; + } + + public function getPayload() + { + return $this->payload; + } + + public function setResourceId($resourceId) + { + $this->resourceId = $resourceId; + } + + public function getResourceId() + { + return $this->resourceId; + } + + public function setResourceUri($resourceUri) + { + $this->resourceUri = $resourceUri; + } + + public function getResourceUri() + { + return $this->resourceUri; + } + + public function setToken($token) + { + $this->token = $token; + } + + public function getToken() + { + return $this->token; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Reports_ChannelParams extends Google_Model +{ + +} + +class Google_Service_Reports_UsageReport extends Google_Collection +{ + public $date; + protected $entityType = 'Google_Service_Reports_UsageReportEntity'; + protected $entityDataType = ''; + public $etag; + public $kind; + protected $parametersType = 'Google_Service_Reports_UsageReportParameters'; + protected $parametersDataType = 'array'; + + public function setDate($date) + { + $this->date = $date; + } + + public function getDate() + { + return $this->date; + } + + public function setEntity(Google_Service_Reports_UsageReportEntity $entity) + { + $this->entity = $entity; + } + + public function getEntity() + { + return $this->entity; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setParameters($parameters) + { + $this->parameters = $parameters; + } + + public function getParameters() + { + return $this->parameters; + } +} + +class Google_Service_Reports_UsageReportEntity extends Google_Model +{ + public $customerId; + public $profileId; + public $type; + public $userEmail; + + public function setCustomerId($customerId) + { + $this->customerId = $customerId; + } + + public function getCustomerId() + { + return $this->customerId; + } + + public function setProfileId($profileId) + { + $this->profileId = $profileId; + } + + public function getProfileId() + { + return $this->profileId; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUserEmail($userEmail) + { + $this->userEmail = $userEmail; + } + + public function getUserEmail() + { + return $this->userEmail; + } +} + +class Google_Service_Reports_UsageReportParameters extends Google_Collection +{ + public $boolValue; + public $datetimeValue; + public $intValue; + public $msgValue; + public $name; + public $stringValue; + + public function setBoolValue($boolValue) + { + $this->boolValue = $boolValue; + } + + public function getBoolValue() + { + return $this->boolValue; + } + + public function setDatetimeValue($datetimeValue) + { + $this->datetimeValue = $datetimeValue; + } + + public function getDatetimeValue() + { + return $this->datetimeValue; + } + + public function setIntValue($intValue) + { + $this->intValue = $intValue; + } + + public function getIntValue() + { + return $this->intValue; + } + + public function setMsgValue($msgValue) + { + $this->msgValue = $msgValue; + } + + public function getMsgValue() + { + return $this->msgValue; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setStringValue($stringValue) + { + $this->stringValue = $stringValue; + } + + public function getStringValue() + { + return $this->stringValue; + } +} + +class Google_Service_Reports_UsageReportParametersMsgValue extends Google_Model +{ + +} + +class Google_Service_Reports_UsageReports extends Google_Collection +{ + public $etag; + public $kind; + public $nextPageToken; + protected $usageReportsType = 'Google_Service_Reports_UsageReport'; + protected $usageReportsDataType = 'array'; + protected $warningsType = 'Google_Service_Reports_UsageReportsWarnings'; + protected $warningsDataType = 'array'; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setUsageReports($usageReports) + { + $this->usageReports = $usageReports; + } + + public function getUsageReports() + { + return $this->usageReports; + } + + public function setWarnings($warnings) + { + $this->warnings = $warnings; + } + + public function getWarnings() + { + return $this->warnings; + } +} + +class Google_Service_Reports_UsageReportsWarnings extends Google_Collection +{ + public $code; + protected $dataType = 'Google_Service_Reports_UsageReportsWarningsData'; + protected $dataDataType = 'array'; + public $message; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setData($data) + { + $this->data = $data; + } + + public function getData() + { + return $this->data; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_Reports_UsageReportsWarningsData extends Google_Model +{ + public $key; + public $value; + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} diff --git a/oauth/Google/Service/Reseller.php b/oauth/Google/Service/Reseller.php new file mode 100644 index 0000000..8fb776b --- /dev/null +++ b/oauth/Google/Service/Reseller.php @@ -0,0 +1,1102 @@ + + * Lets you create and manage your customers and their subscriptions. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Reseller extends Google_Service +{ + /** Manage users on your domain. */ + const APPS_ORDER = "https://www.googleapis.com/auth/apps.order"; + /** Manage users on your domain. */ + const APPS_ORDER_READONLY = "https://www.googleapis.com/auth/apps.order.readonly"; + + public $customers; + public $subscriptions; + + + /** + * Constructs the internal representation of the Reseller service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'apps/reseller/v1/'; + $this->version = 'v1'; + $this->serviceName = 'reseller'; + + $this->customers = new Google_Service_Reseller_Customers_Resource( + $this, + $this->serviceName, + 'customers', + array( + 'methods' => array( + 'get' => array( + 'path' => 'customers/{customerId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'customers', + 'httpMethod' => 'POST', + 'parameters' => array( + 'customerAuthToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'customers/{customerId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'customers/{customerId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->subscriptions = new Google_Service_Reseller_Subscriptions_Resource( + $this, + $this->serviceName, + 'subscriptions', + array( + 'methods' => array( + 'changePlan' => array( + 'path' => 'customers/{customerId}/subscriptions/{subscriptionId}/changePlan', + 'httpMethod' => 'POST', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'subscriptionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'changeRenewalSettings' => array( + 'path' => 'customers/{customerId}/subscriptions/{subscriptionId}/changeRenewalSettings', + 'httpMethod' => 'POST', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'subscriptionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'changeSeats' => array( + 'path' => 'customers/{customerId}/subscriptions/{subscriptionId}/changeSeats', + 'httpMethod' => 'POST', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'subscriptionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => 'customers/{customerId}/subscriptions/{subscriptionId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'subscriptionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'deletionType' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'customers/{customerId}/subscriptions/{subscriptionId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'subscriptionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'customers/{customerId}/subscriptions', + 'httpMethod' => 'POST', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'customerAuthToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'subscriptions', + 'httpMethod' => 'GET', + 'parameters' => array( + 'customerAuthToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'customerId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'customerNamePrefix' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'startPaidService' => array( + 'path' => 'customers/{customerId}/subscriptions/{subscriptionId}/startPaidService', + 'httpMethod' => 'POST', + 'parameters' => array( + 'customerId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'subscriptionId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "customers" collection of methods. + * Typical usage is: + * + * $resellerService = new Google_Service_Reseller(...); + * $customers = $resellerService->customers; + * + */ +class Google_Service_Reseller_Customers_Resource extends Google_Service_Resource +{ + + /** + * Gets a customer resource if one exists and is owned by the reseller. + * (customers.get) + * + * @param string $customerId + * Id of the Customer + * @param array $optParams Optional parameters. + * @return Google_Service_Reseller_Customer + */ + public function get($customerId, $optParams = array()) + { + $params = array('customerId' => $customerId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Reseller_Customer"); + } + /** + * Creates a customer resource if one does not already exist. (customers.insert) + * + * @param Google_Customer $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string customerAuthToken + * An auth token needed for inserting a customer for which domain already exists. Can be generated + * at https://www.google.com/a/cpanel//TransferToken. Optional. + * @return Google_Service_Reseller_Customer + */ + public function insert(Google_Service_Reseller_Customer $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Reseller_Customer"); + } + /** + * Update a customer resource if one it exists and is owned by the reseller. + * This method supports patch semantics. (customers.patch) + * + * @param string $customerId + * Id of the Customer + * @param Google_Customer $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Reseller_Customer + */ + public function patch($customerId, Google_Service_Reseller_Customer $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Reseller_Customer"); + } + /** + * Update a customer resource if one it exists and is owned by the reseller. + * (customers.update) + * + * @param string $customerId + * Id of the Customer + * @param Google_Customer $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Reseller_Customer + */ + public function update($customerId, Google_Service_Reseller_Customer $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Reseller_Customer"); + } +} + +/** + * The "subscriptions" collection of methods. + * Typical usage is: + * + * $resellerService = new Google_Service_Reseller(...); + * $subscriptions = $resellerService->subscriptions; + * + */ +class Google_Service_Reseller_Subscriptions_Resource extends Google_Service_Resource +{ + + /** + * Changes the plan of a subscription (subscriptions.changePlan) + * + * @param string $customerId + * Id of the Customer + * @param string $subscriptionId + * Id of the subscription, which is unique for a customer + * @param Google_ChangePlanRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Reseller_Subscription + */ + public function changePlan($customerId, $subscriptionId, Google_Service_Reseller_ChangePlanRequest $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'subscriptionId' => $subscriptionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('changePlan', array($params), "Google_Service_Reseller_Subscription"); + } + /** + * Changes the renewal settings of a subscription + * (subscriptions.changeRenewalSettings) + * + * @param string $customerId + * Id of the Customer + * @param string $subscriptionId + * Id of the subscription, which is unique for a customer + * @param Google_RenewalSettings $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Reseller_Subscription + */ + public function changeRenewalSettings($customerId, $subscriptionId, Google_Service_Reseller_RenewalSettings $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'subscriptionId' => $subscriptionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('changeRenewalSettings', array($params), "Google_Service_Reseller_Subscription"); + } + /** + * Changes the seats configuration of a subscription (subscriptions.changeSeats) + * + * @param string $customerId + * Id of the Customer + * @param string $subscriptionId + * Id of the subscription, which is unique for a customer + * @param Google_Seats $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Reseller_Subscription + */ + public function changeSeats($customerId, $subscriptionId, Google_Service_Reseller_Seats $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'subscriptionId' => $subscriptionId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('changeSeats', array($params), "Google_Service_Reseller_Subscription"); + } + /** + * Cancels/Downgrades a subscription. (subscriptions.delete) + * + * @param string $customerId + * Id of the Customer + * @param string $subscriptionId + * Id of the subscription, which is unique for a customer + * @param string $deletionType + * Whether the subscription is to be fully cancelled or downgraded + * @param array $optParams Optional parameters. + */ + public function delete($customerId, $subscriptionId, $deletionType, $optParams = array()) + { + $params = array('customerId' => $customerId, 'subscriptionId' => $subscriptionId, 'deletionType' => $deletionType); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Gets a subscription of the customer. (subscriptions.get) + * + * @param string $customerId + * Id of the Customer + * @param string $subscriptionId + * Id of the subscription, which is unique for a customer + * @param array $optParams Optional parameters. + * @return Google_Service_Reseller_Subscription + */ + public function get($customerId, $subscriptionId, $optParams = array()) + { + $params = array('customerId' => $customerId, 'subscriptionId' => $subscriptionId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Reseller_Subscription"); + } + /** + * Creates/Transfers a subscription for the customer. (subscriptions.insert) + * + * @param string $customerId + * Id of the Customer + * @param Google_Subscription $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string customerAuthToken + * An auth token needed for transferring a subscription. Can be generated at + * https://www.google.com/a/cpanel/customer-domain/TransferToken. Optional. + * @return Google_Service_Reseller_Subscription + */ + public function insert($customerId, Google_Service_Reseller_Subscription $postBody, $optParams = array()) + { + $params = array('customerId' => $customerId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Reseller_Subscription"); + } + /** + * Lists subscriptions of a reseller, optionally filtered by a customer name + * prefix. (subscriptions.listSubscriptions) + * + * @param array $optParams Optional parameters. + * + * @opt_param string customerAuthToken + * An auth token needed if the customer is not a resold customer of this reseller. Can be generated + * at https://www.google.com/a/cpanel/customer-domain/TransferToken.Optional. + * @opt_param string pageToken + * Token to specify next page in the list + * @opt_param string customerId + * Id of the Customer + * @opt_param string maxResults + * Maximum number of results to return + * @opt_param string customerNamePrefix + * Prefix of the customer's domain name by which the subscriptions should be filtered. Optional + * @return Google_Service_Reseller_Subscriptions + */ + public function listSubscriptions($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Reseller_Subscriptions"); + } + /** + * Starts paid service of a trial subscription (subscriptions.startPaidService) + * + * @param string $customerId + * Id of the Customer + * @param string $subscriptionId + * Id of the subscription, which is unique for a customer + * @param array $optParams Optional parameters. + * @return Google_Service_Reseller_Subscription + */ + public function startPaidService($customerId, $subscriptionId, $optParams = array()) + { + $params = array('customerId' => $customerId, 'subscriptionId' => $subscriptionId); + $params = array_merge($params, $optParams); + return $this->call('startPaidService', array($params), "Google_Service_Reseller_Subscription"); + } +} + + + + +class Google_Service_Reseller_Address extends Google_Model +{ + public $addressLine1; + public $addressLine2; + public $addressLine3; + public $contactName; + public $countryCode; + public $kind; + public $locality; + public $organizationName; + public $postalCode; + public $region; + + public function setAddressLine1($addressLine1) + { + $this->addressLine1 = $addressLine1; + } + + public function getAddressLine1() + { + return $this->addressLine1; + } + + public function setAddressLine2($addressLine2) + { + $this->addressLine2 = $addressLine2; + } + + public function getAddressLine2() + { + return $this->addressLine2; + } + + public function setAddressLine3($addressLine3) + { + $this->addressLine3 = $addressLine3; + } + + public function getAddressLine3() + { + return $this->addressLine3; + } + + public function setContactName($contactName) + { + $this->contactName = $contactName; + } + + public function getContactName() + { + return $this->contactName; + } + + public function setCountryCode($countryCode) + { + $this->countryCode = $countryCode; + } + + public function getCountryCode() + { + return $this->countryCode; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLocality($locality) + { + $this->locality = $locality; + } + + public function getLocality() + { + return $this->locality; + } + + public function setOrganizationName($organizationName) + { + $this->organizationName = $organizationName; + } + + public function getOrganizationName() + { + return $this->organizationName; + } + + public function setPostalCode($postalCode) + { + $this->postalCode = $postalCode; + } + + public function getPostalCode() + { + return $this->postalCode; + } + + public function setRegion($region) + { + $this->region = $region; + } + + public function getRegion() + { + return $this->region; + } +} + +class Google_Service_Reseller_ChangePlanRequest extends Google_Model +{ + public $kind; + public $planName; + public $purchaseOrderId; + protected $seatsType = 'Google_Service_Reseller_Seats'; + protected $seatsDataType = ''; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPlanName($planName) + { + $this->planName = $planName; + } + + public function getPlanName() + { + return $this->planName; + } + + public function setPurchaseOrderId($purchaseOrderId) + { + $this->purchaseOrderId = $purchaseOrderId; + } + + public function getPurchaseOrderId() + { + return $this->purchaseOrderId; + } + + public function setSeats(Google_Service_Reseller_Seats $seats) + { + $this->seats = $seats; + } + + public function getSeats() + { + return $this->seats; + } +} + +class Google_Service_Reseller_Customer extends Google_Model +{ + public $alternateEmail; + public $customerDomain; + public $customerId; + public $kind; + public $phoneNumber; + protected $postalAddressType = 'Google_Service_Reseller_Address'; + protected $postalAddressDataType = ''; + public $resourceUiUrl; + + public function setAlternateEmail($alternateEmail) + { + $this->alternateEmail = $alternateEmail; + } + + public function getAlternateEmail() + { + return $this->alternateEmail; + } + + public function setCustomerDomain($customerDomain) + { + $this->customerDomain = $customerDomain; + } + + public function getCustomerDomain() + { + return $this->customerDomain; + } + + public function setCustomerId($customerId) + { + $this->customerId = $customerId; + } + + public function getCustomerId() + { + return $this->customerId; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPhoneNumber($phoneNumber) + { + $this->phoneNumber = $phoneNumber; + } + + public function getPhoneNumber() + { + return $this->phoneNumber; + } + + public function setPostalAddress(Google_Service_Reseller_Address $postalAddress) + { + $this->postalAddress = $postalAddress; + } + + public function getPostalAddress() + { + return $this->postalAddress; + } + + public function setResourceUiUrl($resourceUiUrl) + { + $this->resourceUiUrl = $resourceUiUrl; + } + + public function getResourceUiUrl() + { + return $this->resourceUiUrl; + } +} + +class Google_Service_Reseller_RenewalSettings extends Google_Model +{ + public $kind; + public $renewalType; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRenewalType($renewalType) + { + $this->renewalType = $renewalType; + } + + public function getRenewalType() + { + return $this->renewalType; + } +} + +class Google_Service_Reseller_Seats extends Google_Model +{ + public $kind; + public $maximumNumberOfSeats; + public $numberOfSeats; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMaximumNumberOfSeats($maximumNumberOfSeats) + { + $this->maximumNumberOfSeats = $maximumNumberOfSeats; + } + + public function getMaximumNumberOfSeats() + { + return $this->maximumNumberOfSeats; + } + + public function setNumberOfSeats($numberOfSeats) + { + $this->numberOfSeats = $numberOfSeats; + } + + public function getNumberOfSeats() + { + return $this->numberOfSeats; + } +} + +class Google_Service_Reseller_Subscription extends Google_Model +{ + public $creationTime; + public $customerId; + public $kind; + protected $planType = 'Google_Service_Reseller_SubscriptionPlan'; + protected $planDataType = ''; + public $purchaseOrderId; + protected $renewalSettingsType = 'Google_Service_Reseller_RenewalSettings'; + protected $renewalSettingsDataType = ''; + public $resourceUiUrl; + protected $seatsType = 'Google_Service_Reseller_Seats'; + protected $seatsDataType = ''; + public $skuId; + public $status; + public $subscriptionId; + protected $transferInfoType = 'Google_Service_Reseller_SubscriptionTransferInfo'; + protected $transferInfoDataType = ''; + protected $trialSettingsType = 'Google_Service_Reseller_SubscriptionTrialSettings'; + protected $trialSettingsDataType = ''; + + public function setCreationTime($creationTime) + { + $this->creationTime = $creationTime; + } + + public function getCreationTime() + { + return $this->creationTime; + } + + public function setCustomerId($customerId) + { + $this->customerId = $customerId; + } + + public function getCustomerId() + { + return $this->customerId; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPlan(Google_Service_Reseller_SubscriptionPlan $plan) + { + $this->plan = $plan; + } + + public function getPlan() + { + return $this->plan; + } + + public function setPurchaseOrderId($purchaseOrderId) + { + $this->purchaseOrderId = $purchaseOrderId; + } + + public function getPurchaseOrderId() + { + return $this->purchaseOrderId; + } + + public function setRenewalSettings(Google_Service_Reseller_RenewalSettings $renewalSettings) + { + $this->renewalSettings = $renewalSettings; + } + + public function getRenewalSettings() + { + return $this->renewalSettings; + } + + public function setResourceUiUrl($resourceUiUrl) + { + $this->resourceUiUrl = $resourceUiUrl; + } + + public function getResourceUiUrl() + { + return $this->resourceUiUrl; + } + + public function setSeats(Google_Service_Reseller_Seats $seats) + { + $this->seats = $seats; + } + + public function getSeats() + { + return $this->seats; + } + + public function setSkuId($skuId) + { + $this->skuId = $skuId; + } + + public function getSkuId() + { + return $this->skuId; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setSubscriptionId($subscriptionId) + { + $this->subscriptionId = $subscriptionId; + } + + public function getSubscriptionId() + { + return $this->subscriptionId; + } + + public function setTransferInfo(Google_Service_Reseller_SubscriptionTransferInfo $transferInfo) + { + $this->transferInfo = $transferInfo; + } + + public function getTransferInfo() + { + return $this->transferInfo; + } + + public function setTrialSettings(Google_Service_Reseller_SubscriptionTrialSettings $trialSettings) + { + $this->trialSettings = $trialSettings; + } + + public function getTrialSettings() + { + return $this->trialSettings; + } +} + +class Google_Service_Reseller_SubscriptionPlan extends Google_Model +{ + protected $commitmentIntervalType = 'Google_Service_Reseller_SubscriptionPlanCommitmentInterval'; + protected $commitmentIntervalDataType = ''; + public $isCommitmentPlan; + public $planName; + + public function setCommitmentInterval(Google_Service_Reseller_SubscriptionPlanCommitmentInterval $commitmentInterval) + { + $this->commitmentInterval = $commitmentInterval; + } + + public function getCommitmentInterval() + { + return $this->commitmentInterval; + } + + public function setIsCommitmentPlan($isCommitmentPlan) + { + $this->isCommitmentPlan = $isCommitmentPlan; + } + + public function getIsCommitmentPlan() + { + return $this->isCommitmentPlan; + } + + public function setPlanName($planName) + { + $this->planName = $planName; + } + + public function getPlanName() + { + return $this->planName; + } +} + +class Google_Service_Reseller_SubscriptionPlanCommitmentInterval extends Google_Model +{ + public $endTime; + public $startTime; + + public function setEndTime($endTime) + { + $this->endTime = $endTime; + } + + public function getEndTime() + { + return $this->endTime; + } + + public function setStartTime($startTime) + { + $this->startTime = $startTime; + } + + public function getStartTime() + { + return $this->startTime; + } +} + +class Google_Service_Reseller_SubscriptionTransferInfo extends Google_Model +{ + public $minimumTransferableSeats; + public $transferabilityExpirationTime; + + public function setMinimumTransferableSeats($minimumTransferableSeats) + { + $this->minimumTransferableSeats = $minimumTransferableSeats; + } + + public function getMinimumTransferableSeats() + { + return $this->minimumTransferableSeats; + } + + public function setTransferabilityExpirationTime($transferabilityExpirationTime) + { + $this->transferabilityExpirationTime = $transferabilityExpirationTime; + } + + public function getTransferabilityExpirationTime() + { + return $this->transferabilityExpirationTime; + } +} + +class Google_Service_Reseller_SubscriptionTrialSettings extends Google_Model +{ + public $isInTrial; + public $trialEndTime; + + public function setIsInTrial($isInTrial) + { + $this->isInTrial = $isInTrial; + } + + public function getIsInTrial() + { + return $this->isInTrial; + } + + public function setTrialEndTime($trialEndTime) + { + $this->trialEndTime = $trialEndTime; + } + + public function getTrialEndTime() + { + return $this->trialEndTime; + } +} + +class Google_Service_Reseller_Subscriptions extends Google_Collection +{ + public $kind; + public $nextPageToken; + protected $subscriptionsType = 'Google_Service_Reseller_Subscription'; + protected $subscriptionsDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setSubscriptions($subscriptions) + { + $this->subscriptions = $subscriptions; + } + + public function getSubscriptions() + { + return $this->subscriptions; + } +} diff --git a/oauth/Google/Service/Resource.php b/oauth/Google/Service/Resource.php new file mode 100644 index 0000000..d396907 --- /dev/null +++ b/oauth/Google/Service/Resource.php @@ -0,0 +1,210 @@ + + * @author Chirag Shah + * + */ +class Google_Service_Resource +{ + // Valid query parameters that work, but don't appear in discovery. + private $stackParameters = array( + 'alt' => array('type' => 'string', 'location' => 'query'), + 'fields' => array('type' => 'string', 'location' => 'query'), + 'trace' => array('type' => 'string', 'location' => 'query'), + 'userIp' => array('type' => 'string', 'location' => 'query'), + 'userip' => array('type' => 'string', 'location' => 'query'), + 'quotaUser' => array('type' => 'string', 'location' => 'query'), + 'data' => array('type' => 'string', 'location' => 'body'), + 'mimeType' => array('type' => 'string', 'location' => 'header'), + 'uploadType' => array('type' => 'string', 'location' => 'query'), + 'mediaUpload' => array('type' => 'complex', 'location' => 'query'), + ); + + /** @var Google_Service $service */ + private $service; + + /** @var Google_Client $client */ + private $client; + + /** @var string $serviceName */ + private $serviceName; + + /** @var string $resourceName */ + private $resourceName; + + /** @var array $methods */ + private $methods; + + public function __construct($service, $serviceName, $resourceName, $resource) + { + $this->service = $service; + $this->client = $service->getClient(); + $this->serviceName = $serviceName; + $this->resourceName = $resourceName; + $this->methods = isset($resource['methods']) ? + $resource['methods'] : + array($resourceName => $resource); + } + + /** + * TODO(ianbarber): This function needs simplifying. + * @param $name + * @param $arguments + * @param $expected_class - optional, the expected class name + * @return Google_Http_Request|expected_class + * @throws Google_Exception + */ + public function call($name, $arguments, $expected_class = null) + { + if (! isset($this->methods[$name])) { + throw new Google_Exception( + "Unknown function: " . + "{$this->serviceName}->{$this->resourceName}->{$name}()" + ); + } + $method = $this->methods[$name]; + $parameters = $arguments[0]; + + // postBody is a special case since it's not defined in the discovery + // document as parameter, but we abuse the param entry for storing it. + $postBody = null; + if (isset($parameters['postBody'])) { + if ($parameters['postBody'] instanceof Google_Model) { + // In the cases the post body is an existing object, we want + // to use the smart method to create a simple object for + // for JSONification. + $parameters['postBody'] = $parameters['postBody']->toSimpleObject(); + } else if (is_object($parameters['postBody'])) { + // If the post body is another kind of object, we will try and + // wrangle it into a sensible format. + $parameters['postBody'] = + $this->convertToArrayAndStripNulls($parameters['postBody']); + } + $postBody = json_encode($parameters['postBody']); + unset($parameters['postBody']); + } + + // TODO(ianbarber): optParams here probably should have been + // handled already - this may well be redundant code. + if (isset($parameters['optParams'])) { + $optParams = $parameters['optParams']; + unset($parameters['optParams']); + $parameters = array_merge($parameters, $optParams); + } + + if (!isset($method['parameters'])) { + $method['parameters'] = array(); + } + + $method['parameters'] = array_merge( + $method['parameters'], + $this->stackParameters + ); + foreach ($parameters as $key => $val) { + if ($key != 'postBody' && ! isset($method['parameters'][$key])) { + throw new Google_Exception("($name) unknown parameter: '$key'"); + } + } + + foreach ($method['parameters'] as $paramName => $paramSpec) { + if (isset($paramSpec['required']) && + $paramSpec['required'] && + ! isset($parameters[$paramName]) + ) { + throw new Google_Exception("($name) missing required param: '$paramName'"); + } + if (isset($parameters[$paramName])) { + $value = $parameters[$paramName]; + $parameters[$paramName] = $paramSpec; + $parameters[$paramName]['value'] = $value; + unset($parameters[$paramName]['required']); + } else { + // Ensure we don't pass nulls. + unset($parameters[$paramName]); + } + } + + $servicePath = $this->service->servicePath; + + $url = Google_Http_REST::createRequestUri( + $servicePath, + $method['path'], + $parameters + ); + $httpRequest = new Google_Http_Request( + $url, + $method['httpMethod'], + null, + $postBody + ); + $httpRequest->setBaseComponent($this->client->getBasePath()); + + if ($postBody) { + $contentTypeHeader = array(); + $contentTypeHeader['content-type'] = 'application/json; charset=UTF-8'; + $httpRequest->setRequestHeaders($contentTypeHeader); + $httpRequest->setPostBody($postBody); + } + + $httpRequest = $this->client->getAuth()->sign($httpRequest); + $httpRequest->setExpectedClass($expected_class); + + if (isset($parameters['data']) && + ($parameters['uploadType']['value'] == 'media' || $parameters['uploadType']['value'] == 'multipart')) { + // If we are doing a simple media upload, trigger that as a convenience. + $mfu = new Google_Http_MediaFileUpload( + $this->client, + $httpRequest, + isset($parameters['mimeType']) ? $parameters['mimeType']['value'] : 'application/octet-stream', + $parameters['data']['value'] + ); + } + + if ($this->client->shouldDefer()) { + // If we are in batch or upload mode, return the raw request. + return $httpRequest; + } + + return $this->client->execute($httpRequest); + } + + protected function convertToArrayAndStripNulls($o) + { + $o = (array) $o; + foreach ($o as $k => $v) { + if ($v === null) { + unset($o[$k]); + } elseif (is_object($v) || is_array($v)) { + $o[$k] = $this->convertToArrayAndStripNulls($o[$k]); + } + } + return $o; + } +} diff --git a/oauth/Google/Service/Resourceviews.php b/oauth/Google/Service/Resourceviews.php new file mode 100644 index 0000000..e3d8d1c --- /dev/null +++ b/oauth/Google/Service/Resourceviews.php @@ -0,0 +1,1015 @@ + + * The Resource View API allows users to create and manage logical sets of Google Compute Engine instances. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Resourceviews extends Google_Service +{ + /** View and manage your data across Google Cloud Platform services. */ + const CLOUD_PLATFORM = "https://www.googleapis.com/auth/cloud-platform"; + /** View and manage your Google Compute Engine resources. */ + const COMPUTE = "https://www.googleapis.com/auth/compute"; + /** View your Google Compute Engine resources. */ + const COMPUTE_READONLY = "https://www.googleapis.com/auth/compute.readonly"; + /** View and manage your Google Cloud Platform management resources and deployment status information. */ + const NDEV_CLOUDMAN = "https://www.googleapis.com/auth/ndev.cloudman"; + /** View your Google Cloud Platform management resources and deployment status information. */ + const NDEV_CLOUDMAN_READONLY = "https://www.googleapis.com/auth/ndev.cloudman.readonly"; + + public $regionViews; + public $zoneViews; + + + /** + * Constructs the internal representation of the Resourceviews service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'resourceviews/v1beta1/projects/'; + $this->version = 'v1beta1'; + $this->serviceName = 'resourceviews'; + + $this->regionViews = new Google_Service_Resourceviews_RegionViews_Resource( + $this, + $this->serviceName, + 'regionViews', + array( + 'methods' => array( + 'addresources' => array( + 'path' => '{projectName}/regions/{region}/resourceViews/{resourceViewName}/addResources', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceViewName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => '{projectName}/regions/{region}/resourceViews/{resourceViewName}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceViewName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{projectName}/regions/{region}/resourceViews/{resourceViewName}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceViewName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{projectName}/regions/{region}/resourceViews', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{projectName}/regions/{region}/resourceViews', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'listresources' => array( + 'path' => '{projectName}/regions/{region}/resourceViews/{resourceViewName}/resources', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceViewName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'removeresources' => array( + 'path' => '{projectName}/regions/{region}/resourceViews/{resourceViewName}/removeResources', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'region' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceViewName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->zoneViews = new Google_Service_Resourceviews_ZoneViews_Resource( + $this, + $this->serviceName, + 'zoneViews', + array( + 'methods' => array( + 'addresources' => array( + 'path' => '{projectName}/zones/{zone}/resourceViews/{resourceViewName}/addResources', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceViewName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => '{projectName}/zones/{zone}/resourceViews/{resourceViewName}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceViewName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{projectName}/zones/{zone}/resourceViews/{resourceViewName}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceViewName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{projectName}/zones/{zone}/resourceViews', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{projectName}/zones/{zone}/resourceViews', + 'httpMethod' => 'GET', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'listresources' => array( + 'path' => '{projectName}/zones/{zone}/resourceViews/{resourceViewName}/resources', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceViewName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'removeresources' => array( + 'path' => '{projectName}/zones/{zone}/resourceViews/{resourceViewName}/removeResources', + 'httpMethod' => 'POST', + 'parameters' => array( + 'projectName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'zone' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'resourceViewName' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "regionViews" collection of methods. + * Typical usage is: + * + * $resourceviewsService = new Google_Service_Resourceviews(...); + * $regionViews = $resourceviewsService->regionViews; + * + */ +class Google_Service_Resourceviews_RegionViews_Resource extends Google_Service_Resource +{ + + /** + * Add resources to the view. (regionViews.addresources) + * + * @param string $projectName + * The project name of the resource view. + * @param string $region + * The region name of the resource view. + * @param string $resourceViewName + * The name of the resource view. + * @param Google_RegionViewsAddResourcesRequest $postBody + * @param array $optParams Optional parameters. + */ + public function addresources($projectName, $region, $resourceViewName, Google_Service_Resourceviews_RegionViewsAddResourcesRequest $postBody, $optParams = array()) + { + $params = array('projectName' => $projectName, 'region' => $region, 'resourceViewName' => $resourceViewName, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('addresources', array($params)); + } + /** + * Delete a resource view. (regionViews.delete) + * + * @param string $projectName + * The project name of the resource view. + * @param string $region + * The region name of the resource view. + * @param string $resourceViewName + * The name of the resource view. + * @param array $optParams Optional parameters. + */ + public function delete($projectName, $region, $resourceViewName, $optParams = array()) + { + $params = array('projectName' => $projectName, 'region' => $region, 'resourceViewName' => $resourceViewName); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Get the information of a resource view. (regionViews.get) + * + * @param string $projectName + * The project name of the resource view. + * @param string $region + * The region name of the resource view. + * @param string $resourceViewName + * The name of the resource view. + * @param array $optParams Optional parameters. + * @return Google_Service_Resourceviews_ResourceView + */ + public function get($projectName, $region, $resourceViewName, $optParams = array()) + { + $params = array('projectName' => $projectName, 'region' => $region, 'resourceViewName' => $resourceViewName); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Resourceviews_ResourceView"); + } + /** + * Create a resource view. (regionViews.insert) + * + * @param string $projectName + * The project name of the resource view. + * @param string $region + * The region name of the resource view. + * @param Google_ResourceView $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Resourceviews_RegionViewsInsertResponse + */ + public function insert($projectName, $region, Google_Service_Resourceviews_ResourceView $postBody, $optParams = array()) + { + $params = array('projectName' => $projectName, 'region' => $region, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Resourceviews_RegionViewsInsertResponse"); + } + /** + * List resource views. (regionViews.listRegionViews) + * + * @param string $projectName + * The project name of the resource view. + * @param string $region + * The region name of the resource view. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Specifies a nextPageToken returned by a previous list request. This token can be used to request + * the next page of results from a previous list request. + * @opt_param int maxResults + * Maximum count of results to be returned. Acceptable values are 0 to 5000, inclusive. (Default: + * 5000) + * @return Google_Service_Resourceviews_RegionViewsListResponse + */ + public function listRegionViews($projectName, $region, $optParams = array()) + { + $params = array('projectName' => $projectName, 'region' => $region); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Resourceviews_RegionViewsListResponse"); + } + /** + * List the resources in the view. (regionViews.listresources) + * + * @param string $projectName + * The project name of the resource view. + * @param string $region + * The region name of the resource view. + * @param string $resourceViewName + * The name of the resource view. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Specifies a nextPageToken returned by a previous list request. This token can be used to request + * the next page of results from a previous list request. + * @opt_param int maxResults + * Maximum count of results to be returned. Acceptable values are 0 to 5000, inclusive. (Default: + * 5000) + * @return Google_Service_Resourceviews_RegionViewsListResourcesResponse + */ + public function listresources($projectName, $region, $resourceViewName, $optParams = array()) + { + $params = array('projectName' => $projectName, 'region' => $region, 'resourceViewName' => $resourceViewName); + $params = array_merge($params, $optParams); + return $this->call('listresources', array($params), "Google_Service_Resourceviews_RegionViewsListResourcesResponse"); + } + /** + * Remove resources from the view. (regionViews.removeresources) + * + * @param string $projectName + * The project name of the resource view. + * @param string $region + * The region name of the resource view. + * @param string $resourceViewName + * The name of the resource view. + * @param Google_RegionViewsRemoveResourcesRequest $postBody + * @param array $optParams Optional parameters. + */ + public function removeresources($projectName, $region, $resourceViewName, Google_Service_Resourceviews_RegionViewsRemoveResourcesRequest $postBody, $optParams = array()) + { + $params = array('projectName' => $projectName, 'region' => $region, 'resourceViewName' => $resourceViewName, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('removeresources', array($params)); + } +} + +/** + * The "zoneViews" collection of methods. + * Typical usage is: + * + * $resourceviewsService = new Google_Service_Resourceviews(...); + * $zoneViews = $resourceviewsService->zoneViews; + * + */ +class Google_Service_Resourceviews_ZoneViews_Resource extends Google_Service_Resource +{ + + /** + * Add resources to the view. (zoneViews.addresources) + * + * @param string $projectName + * The project name of the resource view. + * @param string $zone + * The zone name of the resource view. + * @param string $resourceViewName + * The name of the resource view. + * @param Google_ZoneViewsAddResourcesRequest $postBody + * @param array $optParams Optional parameters. + */ + public function addresources($projectName, $zone, $resourceViewName, Google_Service_Resourceviews_ZoneViewsAddResourcesRequest $postBody, $optParams = array()) + { + $params = array('projectName' => $projectName, 'zone' => $zone, 'resourceViewName' => $resourceViewName, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('addresources', array($params)); + } + /** + * Delete a resource view. (zoneViews.delete) + * + * @param string $projectName + * The project name of the resource view. + * @param string $zone + * The zone name of the resource view. + * @param string $resourceViewName + * The name of the resource view. + * @param array $optParams Optional parameters. + */ + public function delete($projectName, $zone, $resourceViewName, $optParams = array()) + { + $params = array('projectName' => $projectName, 'zone' => $zone, 'resourceViewName' => $resourceViewName); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Get the information of a zonal resource view. (zoneViews.get) + * + * @param string $projectName + * The project name of the resource view. + * @param string $zone + * The zone name of the resource view. + * @param string $resourceViewName + * The name of the resource view. + * @param array $optParams Optional parameters. + * @return Google_Service_Resourceviews_ResourceView + */ + public function get($projectName, $zone, $resourceViewName, $optParams = array()) + { + $params = array('projectName' => $projectName, 'zone' => $zone, 'resourceViewName' => $resourceViewName); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Resourceviews_ResourceView"); + } + /** + * Create a resource view. (zoneViews.insert) + * + * @param string $projectName + * The project name of the resource view. + * @param string $zone + * The zone name of the resource view. + * @param Google_ResourceView $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Resourceviews_ZoneViewsInsertResponse + */ + public function insert($projectName, $zone, Google_Service_Resourceviews_ResourceView $postBody, $optParams = array()) + { + $params = array('projectName' => $projectName, 'zone' => $zone, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Resourceviews_ZoneViewsInsertResponse"); + } + /** + * List resource views. (zoneViews.listZoneViews) + * + * @param string $projectName + * The project name of the resource view. + * @param string $zone + * The zone name of the resource view. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Specifies a nextPageToken returned by a previous list request. This token can be used to request + * the next page of results from a previous list request. + * @opt_param int maxResults + * Maximum count of results to be returned. Acceptable values are 0 to 5000, inclusive. (Default: + * 5000) + * @return Google_Service_Resourceviews_ZoneViewsListResponse + */ + public function listZoneViews($projectName, $zone, $optParams = array()) + { + $params = array('projectName' => $projectName, 'zone' => $zone); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Resourceviews_ZoneViewsListResponse"); + } + /** + * List the resources of the resource view. (zoneViews.listresources) + * + * @param string $projectName + * The project name of the resource view. + * @param string $zone + * The zone name of the resource view. + * @param string $resourceViewName + * The name of the resource view. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Specifies a nextPageToken returned by a previous list request. This token can be used to request + * the next page of results from a previous list request. + * @opt_param int maxResults + * Maximum count of results to be returned. Acceptable values are 0 to 5000, inclusive. (Default: + * 5000) + * @return Google_Service_Resourceviews_ZoneViewsListResourcesResponse + */ + public function listresources($projectName, $zone, $resourceViewName, $optParams = array()) + { + $params = array('projectName' => $projectName, 'zone' => $zone, 'resourceViewName' => $resourceViewName); + $params = array_merge($params, $optParams); + return $this->call('listresources', array($params), "Google_Service_Resourceviews_ZoneViewsListResourcesResponse"); + } + /** + * Remove resources from the view. (zoneViews.removeresources) + * + * @param string $projectName + * The project name of the resource view. + * @param string $zone + * The zone name of the resource view. + * @param string $resourceViewName + * The name of the resource view. + * @param Google_ZoneViewsRemoveResourcesRequest $postBody + * @param array $optParams Optional parameters. + */ + public function removeresources($projectName, $zone, $resourceViewName, Google_Service_Resourceviews_ZoneViewsRemoveResourcesRequest $postBody, $optParams = array()) + { + $params = array('projectName' => $projectName, 'zone' => $zone, 'resourceViewName' => $resourceViewName, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('removeresources', array($params)); + } +} + + + + +class Google_Service_Resourceviews_Label extends Google_Model +{ + public $key; + public $value; + + public function setKey($key) + { + $this->key = $key; + } + + public function getKey() + { + return $this->key; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_Resourceviews_RegionViewsAddResourcesRequest extends Google_Collection +{ + public $resources; + + public function setResources($resources) + { + $this->resources = $resources; + } + + public function getResources() + { + return $this->resources; + } +} + +class Google_Service_Resourceviews_RegionViewsInsertResponse extends Google_Model +{ + protected $resourceType = 'Google_Service_Resourceviews_ResourceView'; + protected $resourceDataType = ''; + + public function setResource(Google_Service_Resourceviews_ResourceView $resource) + { + $this->resource = $resource; + } + + public function getResource() + { + return $this->resource; + } +} + +class Google_Service_Resourceviews_RegionViewsListResourcesResponse extends Google_Collection +{ + public $members; + public $nextPageToken; + + public function setMembers($members) + { + $this->members = $members; + } + + public function getMembers() + { + return $this->members; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Resourceviews_RegionViewsListResponse extends Google_Collection +{ + public $nextPageToken; + protected $resourceViewsType = 'Google_Service_Resourceviews_ResourceView'; + protected $resourceViewsDataType = 'array'; + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setResourceViews($resourceViews) + { + $this->resourceViews = $resourceViews; + } + + public function getResourceViews() + { + return $this->resourceViews; + } +} + +class Google_Service_Resourceviews_RegionViewsRemoveResourcesRequest extends Google_Collection +{ + public $resources; + + public function setResources($resources) + { + $this->resources = $resources; + } + + public function getResources() + { + return $this->resources; + } +} + +class Google_Service_Resourceviews_ResourceView extends Google_Collection +{ + public $creationTime; + public $description; + public $id; + public $kind; + protected $labelsType = 'Google_Service_Resourceviews_Label'; + protected $labelsDataType = 'array'; + public $lastModified; + public $members; + public $name; + public $numMembers; + public $selfLink; + + public function setCreationTime($creationTime) + { + $this->creationTime = $creationTime; + } + + public function getCreationTime() + { + return $this->creationTime; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLabels($labels) + { + $this->labels = $labels; + } + + public function getLabels() + { + return $this->labels; + } + + public function setLastModified($lastModified) + { + $this->lastModified = $lastModified; + } + + public function getLastModified() + { + return $this->lastModified; + } + + public function setMembers($members) + { + $this->members = $members; + } + + public function getMembers() + { + return $this->members; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setNumMembers($numMembers) + { + $this->numMembers = $numMembers; + } + + public function getNumMembers() + { + return $this->numMembers; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Resourceviews_ZoneViewsAddResourcesRequest extends Google_Collection +{ + public $resources; + + public function setResources($resources) + { + $this->resources = $resources; + } + + public function getResources() + { + return $this->resources; + } +} + +class Google_Service_Resourceviews_ZoneViewsInsertResponse extends Google_Model +{ + protected $resourceType = 'Google_Service_Resourceviews_ResourceView'; + protected $resourceDataType = ''; + + public function setResource(Google_Service_Resourceviews_ResourceView $resource) + { + $this->resource = $resource; + } + + public function getResource() + { + return $this->resource; + } +} + +class Google_Service_Resourceviews_ZoneViewsListResourcesResponse extends Google_Collection +{ + public $members; + public $nextPageToken; + + public function setMembers($members) + { + $this->members = $members; + } + + public function getMembers() + { + return $this->members; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Resourceviews_ZoneViewsListResponse extends Google_Collection +{ + public $nextPageToken; + protected $resourceViewsType = 'Google_Service_Resourceviews_ResourceView'; + protected $resourceViewsDataType = 'array'; + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setResourceViews($resourceViews) + { + $this->resourceViews = $resourceViews; + } + + public function getResourceViews() + { + return $this->resourceViews; + } +} + +class Google_Service_Resourceviews_ZoneViewsRemoveResourcesRequest extends Google_Collection +{ + public $resources; + + public function setResources($resources) + { + $this->resources = $resources; + } + + public function getResources() + { + return $this->resources; + } +} diff --git a/oauth/Google/Service/SQLAdmin.php b/oauth/Google/Service/SQLAdmin.php new file mode 100644 index 0000000..d5417e9 --- /dev/null +++ b/oauth/Google/Service/SQLAdmin.php @@ -0,0 +1,2782 @@ + + * API for Cloud SQL database instance management. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_SQLAdmin extends Google_Service +{ + /** View and manage your data across Google Cloud Platform services. */ + const CLOUD_PLATFORM = "https://www.googleapis.com/auth/cloud-platform"; + /** Manage your Google SQL Service instances. */ + const SQLSERVICE_ADMIN = "https://www.googleapis.com/auth/sqlservice.admin"; + + public $backupRuns; + public $flags; + public $instances; + public $operations; + public $sslCerts; + public $tiers; + + + /** + * Constructs the internal representation of the SQLAdmin service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'sql/v1beta3/'; + $this->version = 'v1beta3'; + $this->serviceName = 'sqladmin'; + + $this->backupRuns = new Google_Service_SQLAdmin_BackupRuns_Resource( + $this, + $this->serviceName, + 'backupRuns', + array( + 'methods' => array( + 'get' => array( + 'path' => 'projects/{project}/instances/{instance}/backupRuns/{backupConfiguration}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'backupConfiguration' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'dueTime' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'projects/{project}/instances/{instance}/backupRuns', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'backupConfiguration' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->flags = new Google_Service_SQLAdmin_Flags_Resource( + $this, + $this->serviceName, + 'flags', + array( + 'methods' => array( + 'list' => array( + 'path' => 'flags', + 'httpMethod' => 'GET', + 'parameters' => array(), + ), + ) + ) + ); + $this->instances = new Google_Service_SQLAdmin_Instances_Resource( + $this, + $this->serviceName, + 'instances', + array( + 'methods' => array( + 'clone' => array( + 'path' => 'projects/{project}/instances/clone', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => 'projects/{project}/instances/{instance}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'export' => array( + 'path' => 'projects/{project}/instances/{instance}/export', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'projects/{project}/instances/{instance}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'import' => array( + 'path' => 'projects/{project}/instances/{instance}/import', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'projects/{project}/instances', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'projects/{project}/instances', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'projects/{project}/instances/{instance}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'resetSslConfig' => array( + 'path' => 'projects/{project}/instances/{instance}/resetSslConfig', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'restart' => array( + 'path' => 'projects/{project}/instances/{instance}/restart', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'restoreBackup' => array( + 'path' => 'projects/{project}/instances/{instance}/restoreBackup', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'backupConfiguration' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'dueTime' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ),'setRootPassword' => array( + 'path' => 'projects/{project}/instances/{instance}/setRootPassword', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'projects/{project}/instances/{instance}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->operations = new Google_Service_SQLAdmin_Operations_Resource( + $this, + $this->serviceName, + 'operations', + array( + 'methods' => array( + 'get' => array( + 'path' => 'projects/{project}/instances/{instance}/operations/{operation}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'operation' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'projects/{project}/instances/{instance}/operations', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->sslCerts = new Google_Service_SQLAdmin_SslCerts_Resource( + $this, + $this->serviceName, + 'sslCerts', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'projects/{project}/instances/{instance}/sslCerts/{sha1Fingerprint}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sha1Fingerprint' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'projects/{project}/instances/{instance}/sslCerts/{sha1Fingerprint}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sha1Fingerprint' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'projects/{project}/instances/{instance}/sslCerts', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'projects/{project}/instances/{instance}/sslCerts', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'instance' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->tiers = new Google_Service_SQLAdmin_Tiers_Resource( + $this, + $this->serviceName, + 'tiers', + array( + 'methods' => array( + 'list' => array( + 'path' => 'projects/{project}/tiers', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "backupRuns" collection of methods. + * Typical usage is: + * + * $sqladminService = new Google_Service_SQLAdmin(...); + * $backupRuns = $sqladminService->backupRuns; + * + */ +class Google_Service_SQLAdmin_BackupRuns_Resource extends Google_Service_Resource +{ + + /** + * Retrieves a resource containing information about a backup run. + * (backupRuns.get) + * + * @param string $project + * Project ID of the project that contains the instance. + * @param string $instance + * Cloud SQL instance ID. This does not include the project ID. + * @param string $backupConfiguration + * Identifier for the backup configuration. This gets generated automatically when a backup + * configuration is created. + * @param string $dueTime + * The time when this run is due to start in RFC 3339 format, for example 2012-11-15T16:19:00.094Z. + * @param array $optParams Optional parameters. + * @return Google_Service_SQLAdmin_BackupRun + */ + public function get($project, $instance, $backupConfiguration, $dueTime, $optParams = array()) + { + $params = array('project' => $project, 'instance' => $instance, 'backupConfiguration' => $backupConfiguration, 'dueTime' => $dueTime); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_SQLAdmin_BackupRun"); + } + /** + * Lists all backup runs associated with a given instance and configuration in + * the reverse chronological order of the enqueued time. + * (backupRuns.listBackupRuns) + * + * @param string $project + * Project ID of the project that contains the instance. + * @param string $instance + * Cloud SQL instance ID. This does not include the project ID. + * @param string $backupConfiguration + * Identifier for the backup configuration. This gets generated automatically when a backup + * configuration is created. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A previously-returned page token representing part of the larger set of results to view. + * @opt_param int maxResults + * Maximum number of backup runs per response. + * @return Google_Service_SQLAdmin_BackupRunsListResponse + */ + public function listBackupRuns($project, $instance, $backupConfiguration, $optParams = array()) + { + $params = array('project' => $project, 'instance' => $instance, 'backupConfiguration' => $backupConfiguration); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_SQLAdmin_BackupRunsListResponse"); + } +} + +/** + * The "flags" collection of methods. + * Typical usage is: + * + * $sqladminService = new Google_Service_SQLAdmin(...); + * $flags = $sqladminService->flags; + * + */ +class Google_Service_SQLAdmin_Flags_Resource extends Google_Service_Resource +{ + + /** + * List all available database flags for Google Cloud SQL instances. + * (flags.listFlags) + * + * @param array $optParams Optional parameters. + * @return Google_Service_SQLAdmin_FlagsListResponse + */ + public function listFlags($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_SQLAdmin_FlagsListResponse"); + } +} + +/** + * The "instances" collection of methods. + * Typical usage is: + * + * $sqladminService = new Google_Service_SQLAdmin(...); + * $instances = $sqladminService->instances; + * + */ +class Google_Service_SQLAdmin_Instances_Resource extends Google_Service_Resource +{ + + /** + * Creates a Cloud SQL instance as a clone of the source instance. + * (instances.cloneInstances) + * + * @param string $project + * Project ID of the source as well as the clone Cloud SQL instance. + * @param Google_InstancesCloneRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_SQLAdmin_InstancesCloneResponse + */ + public function cloneInstances($project, Google_Service_SQLAdmin_InstancesCloneRequest $postBody, $optParams = array()) + { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('clone', array($params), "Google_Service_SQLAdmin_InstancesCloneResponse"); + } + /** + * Deletes a Cloud SQL instance. (instances.delete) + * + * @param string $project + * Project ID of the project that contains the instance to be deleted. + * @param string $instance + * Cloud SQL instance ID. This does not include the project ID. + * @param array $optParams Optional parameters. + * @return Google_Service_SQLAdmin_InstancesDeleteResponse + */ + public function delete($project, $instance, $optParams = array()) + { + $params = array('project' => $project, 'instance' => $instance); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_SQLAdmin_InstancesDeleteResponse"); + } + /** + * Exports data from a Cloud SQL instance to a Google Cloud Storage bucket as a + * MySQL dump file. (instances.export) + * + * @param string $project + * Project ID of the project that contains the instance to be exported. + * @param string $instance + * Cloud SQL instance ID. This does not include the project ID. + * @param Google_InstancesExportRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_SQLAdmin_InstancesExportResponse + */ + public function export($project, $instance, Google_Service_SQLAdmin_InstancesExportRequest $postBody, $optParams = array()) + { + $params = array('project' => $project, 'instance' => $instance, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('export', array($params), "Google_Service_SQLAdmin_InstancesExportResponse"); + } + /** + * Retrieves a resource containing information about a Cloud SQL instance. + * (instances.get) + * + * @param string $project + * Project ID of the project that contains the instance. + * @param string $instance + * Database instance ID. This does not include the project ID. + * @param array $optParams Optional parameters. + * @return Google_Service_SQLAdmin_DatabaseInstance + */ + public function get($project, $instance, $optParams = array()) + { + $params = array('project' => $project, 'instance' => $instance); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_SQLAdmin_DatabaseInstance"); + } + /** + * Imports data into a Cloud SQL instance from a MySQL dump file in Google Cloud + * Storage. (instances.import) + * + * @param string $project + * Project ID of the project that contains the instance. + * @param string $instance + * Cloud SQL instance ID. This does not include the project ID. + * @param Google_InstancesImportRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_SQLAdmin_InstancesImportResponse + */ + public function import($project, $instance, Google_Service_SQLAdmin_InstancesImportRequest $postBody, $optParams = array()) + { + $params = array('project' => $project, 'instance' => $instance, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('import', array($params), "Google_Service_SQLAdmin_InstancesImportResponse"); + } + /** + * Creates a new Cloud SQL instance. (instances.insert) + * + * @param string $project + * Project ID of the project to which the newly created Cloud SQL instances should belong. + * @param Google_DatabaseInstance $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_SQLAdmin_InstancesInsertResponse + */ + public function insert($project, Google_Service_SQLAdmin_DatabaseInstance $postBody, $optParams = array()) + { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_SQLAdmin_InstancesInsertResponse"); + } + /** + * Lists instances under a given project in the alphabetical order of the + * instance name. (instances.listInstances) + * + * @param string $project + * Project ID of the project for which to list Cloud SQL instances. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A previously-returned page token representing part of the larger set of results to view. + * @opt_param string maxResults + * The maximum number of results to return per response. + * @return Google_Service_SQLAdmin_InstancesListResponse + */ + public function listInstances($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_SQLAdmin_InstancesListResponse"); + } + /** + * Updates settings of a Cloud SQL instance. Caution: This is not a partial + * update, so you must include values for all the settings that you want to + * retain. For partial updates, use patch.. This method supports patch + * semantics. (instances.patch) + * + * @param string $project + * Project ID of the project that contains the instance. + * @param string $instance + * Cloud SQL instance ID. This does not include the project ID. + * @param Google_DatabaseInstance $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_SQLAdmin_InstancesUpdateResponse + */ + public function patch($project, $instance, Google_Service_SQLAdmin_DatabaseInstance $postBody, $optParams = array()) + { + $params = array('project' => $project, 'instance' => $instance, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_SQLAdmin_InstancesUpdateResponse"); + } + /** + * Deletes all client certificates and generates a new server SSL certificate + * for the instance. The changes will not take effect until the instance is + * restarted. Existing instances without a server certificate will need to call + * this once to set a server certificate. (instances.resetSslConfig) + * + * @param string $project + * Project ID of the project that contains the instance. + * @param string $instance + * Cloud SQL instance ID. This does not include the project ID. + * @param array $optParams Optional parameters. + * @return Google_Service_SQLAdmin_InstancesResetSslConfigResponse + */ + public function resetSslConfig($project, $instance, $optParams = array()) + { + $params = array('project' => $project, 'instance' => $instance); + $params = array_merge($params, $optParams); + return $this->call('resetSslConfig', array($params), "Google_Service_SQLAdmin_InstancesResetSslConfigResponse"); + } + /** + * Restarts a Cloud SQL instance. (instances.restart) + * + * @param string $project + * Project ID of the project that contains the instance to be restarted. + * @param string $instance + * Cloud SQL instance ID. This does not include the project ID. + * @param array $optParams Optional parameters. + * @return Google_Service_SQLAdmin_InstancesRestartResponse + */ + public function restart($project, $instance, $optParams = array()) + { + $params = array('project' => $project, 'instance' => $instance); + $params = array_merge($params, $optParams); + return $this->call('restart', array($params), "Google_Service_SQLAdmin_InstancesRestartResponse"); + } + /** + * Restores a backup of a Cloud SQL instance. (instances.restoreBackup) + * + * @param string $project + * Project ID of the project that contains the instance. + * @param string $instance + * Cloud SQL instance ID. This does not include the project ID. + * @param string $backupConfiguration + * The identifier of the backup configuration. This gets generated automatically when a backup + * configuration is created. + * @param string $dueTime + * The time when this run is due to start in RFC 3339 format, for example 2012-11-15T16:19:00.094Z. + * @param array $optParams Optional parameters. + * @return Google_Service_SQLAdmin_InstancesRestoreBackupResponse + */ + public function restoreBackup($project, $instance, $backupConfiguration, $dueTime, $optParams = array()) + { + $params = array('project' => $project, 'instance' => $instance, 'backupConfiguration' => $backupConfiguration, 'dueTime' => $dueTime); + $params = array_merge($params, $optParams); + return $this->call('restoreBackup', array($params), "Google_Service_SQLAdmin_InstancesRestoreBackupResponse"); + } + /** + * Sets the password for the root user. (instances.setRootPassword) + * + * @param string $project + * Project ID of the project that contains the instance. + * @param string $instance + * Cloud SQL instance ID. This does not include the project ID. + * @param Google_InstanceSetRootPasswordRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_SQLAdmin_InstancesSetRootPasswordResponse + */ + public function setRootPassword($project, $instance, Google_Service_SQLAdmin_InstanceSetRootPasswordRequest $postBody, $optParams = array()) + { + $params = array('project' => $project, 'instance' => $instance, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('setRootPassword', array($params), "Google_Service_SQLAdmin_InstancesSetRootPasswordResponse"); + } + /** + * Updates settings of a Cloud SQL instance. Caution: This is not a partial + * update, so you must include values for all the settings that you want to + * retain. For partial updates, use patch. (instances.update) + * + * @param string $project + * Project ID of the project that contains the instance. + * @param string $instance + * Cloud SQL instance ID. This does not include the project ID. + * @param Google_DatabaseInstance $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_SQLAdmin_InstancesUpdateResponse + */ + public function update($project, $instance, Google_Service_SQLAdmin_DatabaseInstance $postBody, $optParams = array()) + { + $params = array('project' => $project, 'instance' => $instance, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_SQLAdmin_InstancesUpdateResponse"); + } +} + +/** + * The "operations" collection of methods. + * Typical usage is: + * + * $sqladminService = new Google_Service_SQLAdmin(...); + * $operations = $sqladminService->operations; + * + */ +class Google_Service_SQLAdmin_Operations_Resource extends Google_Service_Resource +{ + + /** + * Retrieves an instance operation that has been performed on an instance. + * (operations.get) + * + * @param string $project + * Project ID of the project that contains the instance. + * @param string $instance + * Cloud SQL instance ID. This does not include the project ID. + * @param string $operation + * Instance operation ID. + * @param array $optParams Optional parameters. + * @return Google_Service_SQLAdmin_InstanceOperation + */ + public function get($project, $instance, $operation, $optParams = array()) + { + $params = array('project' => $project, 'instance' => $instance, 'operation' => $operation); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_SQLAdmin_InstanceOperation"); + } + /** + * Lists all instance operations that have been performed on the given Cloud SQL + * instance in the reverse chronological order of the start time. + * (operations.listOperations) + * + * @param string $project + * Project ID of the project that contains the instance. + * @param string $instance + * Cloud SQL instance ID. This does not include the project ID. + * @param array $optParams Optional parameters. + * + * @opt_param string maxResults + * Maximum number of operations per response. + * @opt_param string pageToken + * A previously-returned page token representing part of the larger set of results to view. + * @return Google_Service_SQLAdmin_OperationsListResponse + */ + public function listOperations($project, $instance, $optParams = array()) + { + $params = array('project' => $project, 'instance' => $instance); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_SQLAdmin_OperationsListResponse"); + } +} + +/** + * The "sslCerts" collection of methods. + * Typical usage is: + * + * $sqladminService = new Google_Service_SQLAdmin(...); + * $sslCerts = $sqladminService->sslCerts; + * + */ +class Google_Service_SQLAdmin_SslCerts_Resource extends Google_Service_Resource +{ + + /** + * Deletes the SSL certificate. The change will not take effect until the + * instance is restarted. (sslCerts.delete) + * + * @param string $project + * Project ID of the project that contains the instance to be deleted. + * @param string $instance + * Cloud SQL instance ID. This does not include the project ID. + * @param string $sha1Fingerprint + * Sha1 FingerPrint. + * @param array $optParams Optional parameters. + * @return Google_Service_SQLAdmin_SslCertsDeleteResponse + */ + public function delete($project, $instance, $sha1Fingerprint, $optParams = array()) + { + $params = array('project' => $project, 'instance' => $instance, 'sha1Fingerprint' => $sha1Fingerprint); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params), "Google_Service_SQLAdmin_SslCertsDeleteResponse"); + } + /** + * Retrieves a particular SSL certificate. Does not include the private key + * (required for usage). The private key must be saved from the response to + * initial creation. (sslCerts.get) + * + * @param string $project + * Project ID of the project that contains the instance. + * @param string $instance + * Cloud SQL instance ID. This does not include the project ID. + * @param string $sha1Fingerprint + * Sha1 FingerPrint. + * @param array $optParams Optional parameters. + * @return Google_Service_SQLAdmin_SslCert + */ + public function get($project, $instance, $sha1Fingerprint, $optParams = array()) + { + $params = array('project' => $project, 'instance' => $instance, 'sha1Fingerprint' => $sha1Fingerprint); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_SQLAdmin_SslCert"); + } + /** + * Creates an SSL certificate and returns it along with the private key and + * server certificate authority. The new certificate will not be usable until + * the instance is restarted. (sslCerts.insert) + * + * @param string $project + * Project ID of the project to which the newly created Cloud SQL instances should belong. + * @param string $instance + * Cloud SQL instance ID. This does not include the project ID. + * @param Google_SslCertsInsertRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_SQLAdmin_SslCertsInsertResponse + */ + public function insert($project, $instance, Google_Service_SQLAdmin_SslCertsInsertRequest $postBody, $optParams = array()) + { + $params = array('project' => $project, 'instance' => $instance, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_SQLAdmin_SslCertsInsertResponse"); + } + /** + * Lists all of the current SSL certificates for the instance. + * (sslCerts.listSslCerts) + * + * @param string $project + * Project ID of the project for which to list Cloud SQL instances. + * @param string $instance + * Cloud SQL instance ID. This does not include the project ID. + * @param array $optParams Optional parameters. + * @return Google_Service_SQLAdmin_SslCertsListResponse + */ + public function listSslCerts($project, $instance, $optParams = array()) + { + $params = array('project' => $project, 'instance' => $instance); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_SQLAdmin_SslCertsListResponse"); + } +} + +/** + * The "tiers" collection of methods. + * Typical usage is: + * + * $sqladminService = new Google_Service_SQLAdmin(...); + * $tiers = $sqladminService->tiers; + * + */ +class Google_Service_SQLAdmin_Tiers_Resource extends Google_Service_Resource +{ + + /** + * Lists all available service tiers for Google Cloud SQL, for example D1, D2. + * For related information, see Pricing. (tiers.listTiers) + * + * @param string $project + * Project ID of the project for which to list tiers. + * @param array $optParams Optional parameters. + * @return Google_Service_SQLAdmin_TiersListResponse + */ + public function listTiers($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_SQLAdmin_TiersListResponse"); + } +} + + + + +class Google_Service_SQLAdmin_BackupConfiguration extends Google_Model +{ + public $binaryLogEnabled; + public $enabled; + public $id; + public $kind; + public $startTime; + + public function setBinaryLogEnabled($binaryLogEnabled) + { + $this->binaryLogEnabled = $binaryLogEnabled; + } + + public function getBinaryLogEnabled() + { + return $this->binaryLogEnabled; + } + + public function setEnabled($enabled) + { + $this->enabled = $enabled; + } + + public function getEnabled() + { + return $this->enabled; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setStartTime($startTime) + { + $this->startTime = $startTime; + } + + public function getStartTime() + { + return $this->startTime; + } +} + +class Google_Service_SQLAdmin_BackupRun extends Google_Model +{ + public $backupConfiguration; + public $dueTime; + public $endTime; + public $enqueuedTime; + protected $errorType = 'Google_Service_SQLAdmin_OperationError'; + protected $errorDataType = ''; + public $instance; + public $kind; + public $startTime; + public $status; + + public function setBackupConfiguration($backupConfiguration) + { + $this->backupConfiguration = $backupConfiguration; + } + + public function getBackupConfiguration() + { + return $this->backupConfiguration; + } + + public function setDueTime($dueTime) + { + $this->dueTime = $dueTime; + } + + public function getDueTime() + { + return $this->dueTime; + } + + public function setEndTime($endTime) + { + $this->endTime = $endTime; + } + + public function getEndTime() + { + return $this->endTime; + } + + public function setEnqueuedTime($enqueuedTime) + { + $this->enqueuedTime = $enqueuedTime; + } + + public function getEnqueuedTime() + { + return $this->enqueuedTime; + } + + public function setError(Google_Service_SQLAdmin_OperationError $error) + { + $this->error = $error; + } + + public function getError() + { + return $this->error; + } + + public function setInstance($instance) + { + $this->instance = $instance; + } + + public function getInstance() + { + return $this->instance; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setStartTime($startTime) + { + $this->startTime = $startTime; + } + + public function getStartTime() + { + return $this->startTime; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_SQLAdmin_BackupRunsListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_SQLAdmin_BackupRun'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_SQLAdmin_BinLogCoordinates extends Google_Model +{ + public $binLogFileName; + public $binLogPosition; + public $kind; + + public function setBinLogFileName($binLogFileName) + { + $this->binLogFileName = $binLogFileName; + } + + public function getBinLogFileName() + { + return $this->binLogFileName; + } + + public function setBinLogPosition($binLogPosition) + { + $this->binLogPosition = $binLogPosition; + } + + public function getBinLogPosition() + { + return $this->binLogPosition; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_SQLAdmin_CloneContext extends Google_Model +{ + protected $binLogCoordinatesType = 'Google_Service_SQLAdmin_BinLogCoordinates'; + protected $binLogCoordinatesDataType = ''; + public $destinationInstanceName; + public $kind; + public $sourceInstanceName; + + public function setBinLogCoordinates(Google_Service_SQLAdmin_BinLogCoordinates $binLogCoordinates) + { + $this->binLogCoordinates = $binLogCoordinates; + } + + public function getBinLogCoordinates() + { + return $this->binLogCoordinates; + } + + public function setDestinationInstanceName($destinationInstanceName) + { + $this->destinationInstanceName = $destinationInstanceName; + } + + public function getDestinationInstanceName() + { + return $this->destinationInstanceName; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSourceInstanceName($sourceInstanceName) + { + $this->sourceInstanceName = $sourceInstanceName; + } + + public function getSourceInstanceName() + { + return $this->sourceInstanceName; + } +} + +class Google_Service_SQLAdmin_DatabaseFlags extends Google_Model +{ + public $name; + public $value; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_SQLAdmin_DatabaseInstance extends Google_Collection +{ + public $currentDiskSize; + public $databaseVersion; + public $etag; + public $instance; + protected $ipAddressesType = 'Google_Service_SQLAdmin_IpMapping'; + protected $ipAddressesDataType = 'array'; + public $kind; + public $maxDiskSize; + public $project; + public $region; + protected $serverCaCertType = 'Google_Service_SQLAdmin_SslCert'; + protected $serverCaCertDataType = ''; + protected $settingsType = 'Google_Service_SQLAdmin_Settings'; + protected $settingsDataType = ''; + public $state; + + public function setCurrentDiskSize($currentDiskSize) + { + $this->currentDiskSize = $currentDiskSize; + } + + public function getCurrentDiskSize() + { + return $this->currentDiskSize; + } + + public function setDatabaseVersion($databaseVersion) + { + $this->databaseVersion = $databaseVersion; + } + + public function getDatabaseVersion() + { + return $this->databaseVersion; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setInstance($instance) + { + $this->instance = $instance; + } + + public function getInstance() + { + return $this->instance; + } + + public function setIpAddresses($ipAddresses) + { + $this->ipAddresses = $ipAddresses; + } + + public function getIpAddresses() + { + return $this->ipAddresses; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMaxDiskSize($maxDiskSize) + { + $this->maxDiskSize = $maxDiskSize; + } + + public function getMaxDiskSize() + { + return $this->maxDiskSize; + } + + public function setProject($project) + { + $this->project = $project; + } + + public function getProject() + { + return $this->project; + } + + public function setRegion($region) + { + $this->region = $region; + } + + public function getRegion() + { + return $this->region; + } + + public function setServerCaCert(Google_Service_SQLAdmin_SslCert $serverCaCert) + { + $this->serverCaCert = $serverCaCert; + } + + public function getServerCaCert() + { + return $this->serverCaCert; + } + + public function setSettings(Google_Service_SQLAdmin_Settings $settings) + { + $this->settings = $settings; + } + + public function getSettings() + { + return $this->settings; + } + + public function setState($state) + { + $this->state = $state; + } + + public function getState() + { + return $this->state; + } +} + +class Google_Service_SQLAdmin_ExportContext extends Google_Collection +{ + public $database; + public $kind; + public $table; + public $uri; + + public function setDatabase($database) + { + $this->database = $database; + } + + public function getDatabase() + { + return $this->database; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setTable($table) + { + $this->table = $table; + } + + public function getTable() + { + return $this->table; + } + + public function setUri($uri) + { + $this->uri = $uri; + } + + public function getUri() + { + return $this->uri; + } +} + +class Google_Service_SQLAdmin_Flag extends Google_Collection +{ + public $allowedStringValues; + public $appliesTo; + public $kind; + public $maxValue; + public $minValue; + public $name; + public $type; + + public function setAllowedStringValues($allowedStringValues) + { + $this->allowedStringValues = $allowedStringValues; + } + + public function getAllowedStringValues() + { + return $this->allowedStringValues; + } + + public function setAppliesTo($appliesTo) + { + $this->appliesTo = $appliesTo; + } + + public function getAppliesTo() + { + return $this->appliesTo; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMaxValue($maxValue) + { + $this->maxValue = $maxValue; + } + + public function getMaxValue() + { + return $this->maxValue; + } + + public function setMinValue($minValue) + { + $this->minValue = $minValue; + } + + public function getMinValue() + { + return $this->minValue; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_SQLAdmin_FlagsListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_SQLAdmin_Flag'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_SQLAdmin_ImportContext extends Google_Collection +{ + public $database; + public $kind; + public $uri; + + public function setDatabase($database) + { + $this->database = $database; + } + + public function getDatabase() + { + return $this->database; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setUri($uri) + { + $this->uri = $uri; + } + + public function getUri() + { + return $this->uri; + } +} + +class Google_Service_SQLAdmin_InstanceOperation extends Google_Collection +{ + public $endTime; + public $enqueuedTime; + protected $errorType = 'Google_Service_SQLAdmin_OperationError'; + protected $errorDataType = 'array'; + protected $exportContextType = 'Google_Service_SQLAdmin_ExportContext'; + protected $exportContextDataType = ''; + protected $importContextType = 'Google_Service_SQLAdmin_ImportContext'; + protected $importContextDataType = ''; + public $instance; + public $kind; + public $operation; + public $operationType; + public $startTime; + public $state; + public $userEmailAddress; + + public function setEndTime($endTime) + { + $this->endTime = $endTime; + } + + public function getEndTime() + { + return $this->endTime; + } + + public function setEnqueuedTime($enqueuedTime) + { + $this->enqueuedTime = $enqueuedTime; + } + + public function getEnqueuedTime() + { + return $this->enqueuedTime; + } + + public function setError($error) + { + $this->error = $error; + } + + public function getError() + { + return $this->error; + } + + public function setExportContext(Google_Service_SQLAdmin_ExportContext $exportContext) + { + $this->exportContext = $exportContext; + } + + public function getExportContext() + { + return $this->exportContext; + } + + public function setImportContext(Google_Service_SQLAdmin_ImportContext $importContext) + { + $this->importContext = $importContext; + } + + public function getImportContext() + { + return $this->importContext; + } + + public function setInstance($instance) + { + $this->instance = $instance; + } + + public function getInstance() + { + return $this->instance; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setOperation($operation) + { + $this->operation = $operation; + } + + public function getOperation() + { + return $this->operation; + } + + public function setOperationType($operationType) + { + $this->operationType = $operationType; + } + + public function getOperationType() + { + return $this->operationType; + } + + public function setStartTime($startTime) + { + $this->startTime = $startTime; + } + + public function getStartTime() + { + return $this->startTime; + } + + public function setState($state) + { + $this->state = $state; + } + + public function getState() + { + return $this->state; + } + + public function setUserEmailAddress($userEmailAddress) + { + $this->userEmailAddress = $userEmailAddress; + } + + public function getUserEmailAddress() + { + return $this->userEmailAddress; + } +} + +class Google_Service_SQLAdmin_InstanceSetRootPasswordRequest extends Google_Model +{ + protected $setRootPasswordContextType = 'Google_Service_SQLAdmin_SetRootPasswordContext'; + protected $setRootPasswordContextDataType = ''; + + public function setSetRootPasswordContext(Google_Service_SQLAdmin_SetRootPasswordContext $setRootPasswordContext) + { + $this->setRootPasswordContext = $setRootPasswordContext; + } + + public function getSetRootPasswordContext() + { + return $this->setRootPasswordContext; + } +} + +class Google_Service_SQLAdmin_InstancesCloneRequest extends Google_Model +{ + protected $cloneContextType = 'Google_Service_SQLAdmin_CloneContext'; + protected $cloneContextDataType = ''; + + public function setCloneContext(Google_Service_SQLAdmin_CloneContext $cloneContext) + { + $this->cloneContext = $cloneContext; + } + + public function getCloneContext() + { + return $this->cloneContext; + } +} + +class Google_Service_SQLAdmin_InstancesCloneResponse extends Google_Model +{ + public $kind; + public $operation; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setOperation($operation) + { + $this->operation = $operation; + } + + public function getOperation() + { + return $this->operation; + } +} + +class Google_Service_SQLAdmin_InstancesDeleteResponse extends Google_Model +{ + public $kind; + public $operation; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setOperation($operation) + { + $this->operation = $operation; + } + + public function getOperation() + { + return $this->operation; + } +} + +class Google_Service_SQLAdmin_InstancesExportRequest extends Google_Model +{ + protected $exportContextType = 'Google_Service_SQLAdmin_ExportContext'; + protected $exportContextDataType = ''; + + public function setExportContext(Google_Service_SQLAdmin_ExportContext $exportContext) + { + $this->exportContext = $exportContext; + } + + public function getExportContext() + { + return $this->exportContext; + } +} + +class Google_Service_SQLAdmin_InstancesExportResponse extends Google_Model +{ + public $kind; + public $operation; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setOperation($operation) + { + $this->operation = $operation; + } + + public function getOperation() + { + return $this->operation; + } +} + +class Google_Service_SQLAdmin_InstancesImportRequest extends Google_Model +{ + protected $importContextType = 'Google_Service_SQLAdmin_ImportContext'; + protected $importContextDataType = ''; + + public function setImportContext(Google_Service_SQLAdmin_ImportContext $importContext) + { + $this->importContext = $importContext; + } + + public function getImportContext() + { + return $this->importContext; + } +} + +class Google_Service_SQLAdmin_InstancesImportResponse extends Google_Model +{ + public $kind; + public $operation; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setOperation($operation) + { + $this->operation = $operation; + } + + public function getOperation() + { + return $this->operation; + } +} + +class Google_Service_SQLAdmin_InstancesInsertResponse extends Google_Model +{ + public $kind; + public $operation; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setOperation($operation) + { + $this->operation = $operation; + } + + public function getOperation() + { + return $this->operation; + } +} + +class Google_Service_SQLAdmin_InstancesListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_SQLAdmin_DatabaseInstance'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_SQLAdmin_InstancesResetSslConfigResponse extends Google_Model +{ + public $kind; + public $operation; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setOperation($operation) + { + $this->operation = $operation; + } + + public function getOperation() + { + return $this->operation; + } +} + +class Google_Service_SQLAdmin_InstancesRestartResponse extends Google_Model +{ + public $kind; + public $operation; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setOperation($operation) + { + $this->operation = $operation; + } + + public function getOperation() + { + return $this->operation; + } +} + +class Google_Service_SQLAdmin_InstancesRestoreBackupResponse extends Google_Model +{ + public $kind; + public $operation; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setOperation($operation) + { + $this->operation = $operation; + } + + public function getOperation() + { + return $this->operation; + } +} + +class Google_Service_SQLAdmin_InstancesSetRootPasswordResponse extends Google_Model +{ + public $kind; + public $operation; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setOperation($operation) + { + $this->operation = $operation; + } + + public function getOperation() + { + return $this->operation; + } +} + +class Google_Service_SQLAdmin_InstancesUpdateResponse extends Google_Model +{ + public $kind; + public $operation; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setOperation($operation) + { + $this->operation = $operation; + } + + public function getOperation() + { + return $this->operation; + } +} + +class Google_Service_SQLAdmin_IpConfiguration extends Google_Collection +{ + public $authorizedNetworks; + public $enabled; + public $requireSsl; + + public function setAuthorizedNetworks($authorizedNetworks) + { + $this->authorizedNetworks = $authorizedNetworks; + } + + public function getAuthorizedNetworks() + { + return $this->authorizedNetworks; + } + + public function setEnabled($enabled) + { + $this->enabled = $enabled; + } + + public function getEnabled() + { + return $this->enabled; + } + + public function setRequireSsl($requireSsl) + { + $this->requireSsl = $requireSsl; + } + + public function getRequireSsl() + { + return $this->requireSsl; + } +} + +class Google_Service_SQLAdmin_IpMapping extends Google_Model +{ + public $ipAddress; + public $timeToRetire; + + public function setIpAddress($ipAddress) + { + $this->ipAddress = $ipAddress; + } + + public function getIpAddress() + { + return $this->ipAddress; + } + + public function setTimeToRetire($timeToRetire) + { + $this->timeToRetire = $timeToRetire; + } + + public function getTimeToRetire() + { + return $this->timeToRetire; + } +} + +class Google_Service_SQLAdmin_LocationPreference extends Google_Model +{ + public $followGaeApplication; + public $kind; + public $zone; + + public function setFollowGaeApplication($followGaeApplication) + { + $this->followGaeApplication = $followGaeApplication; + } + + public function getFollowGaeApplication() + { + return $this->followGaeApplication; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setZone($zone) + { + $this->zone = $zone; + } + + public function getZone() + { + return $this->zone; + } +} + +class Google_Service_SQLAdmin_OperationError extends Google_Model +{ + public $code; + public $kind; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_SQLAdmin_OperationsListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_SQLAdmin_InstanceOperation'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_SQLAdmin_SetRootPasswordContext extends Google_Model +{ + public $kind; + public $password; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPassword($password) + { + $this->password = $password; + } + + public function getPassword() + { + return $this->password; + } +} + +class Google_Service_SQLAdmin_Settings extends Google_Collection +{ + public $activationPolicy; + public $authorizedGaeApplications; + protected $backupConfigurationType = 'Google_Service_SQLAdmin_BackupConfiguration'; + protected $backupConfigurationDataType = 'array'; + protected $databaseFlagsType = 'Google_Service_SQLAdmin_DatabaseFlags'; + protected $databaseFlagsDataType = 'array'; + protected $ipConfigurationType = 'Google_Service_SQLAdmin_IpConfiguration'; + protected $ipConfigurationDataType = ''; + public $kind; + protected $locationPreferenceType = 'Google_Service_SQLAdmin_LocationPreference'; + protected $locationPreferenceDataType = ''; + public $pricingPlan; + public $replicationType; + public $settingsVersion; + public $tier; + + public function setActivationPolicy($activationPolicy) + { + $this->activationPolicy = $activationPolicy; + } + + public function getActivationPolicy() + { + return $this->activationPolicy; + } + + public function setAuthorizedGaeApplications($authorizedGaeApplications) + { + $this->authorizedGaeApplications = $authorizedGaeApplications; + } + + public function getAuthorizedGaeApplications() + { + return $this->authorizedGaeApplications; + } + + public function setBackupConfiguration($backupConfiguration) + { + $this->backupConfiguration = $backupConfiguration; + } + + public function getBackupConfiguration() + { + return $this->backupConfiguration; + } + + public function setDatabaseFlags($databaseFlags) + { + $this->databaseFlags = $databaseFlags; + } + + public function getDatabaseFlags() + { + return $this->databaseFlags; + } + + public function setIpConfiguration(Google_Service_SQLAdmin_IpConfiguration $ipConfiguration) + { + $this->ipConfiguration = $ipConfiguration; + } + + public function getIpConfiguration() + { + return $this->ipConfiguration; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLocationPreference(Google_Service_SQLAdmin_LocationPreference $locationPreference) + { + $this->locationPreference = $locationPreference; + } + + public function getLocationPreference() + { + return $this->locationPreference; + } + + public function setPricingPlan($pricingPlan) + { + $this->pricingPlan = $pricingPlan; + } + + public function getPricingPlan() + { + return $this->pricingPlan; + } + + public function setReplicationType($replicationType) + { + $this->replicationType = $replicationType; + } + + public function getReplicationType() + { + return $this->replicationType; + } + + public function setSettingsVersion($settingsVersion) + { + $this->settingsVersion = $settingsVersion; + } + + public function getSettingsVersion() + { + return $this->settingsVersion; + } + + public function setTier($tier) + { + $this->tier = $tier; + } + + public function getTier() + { + return $this->tier; + } +} + +class Google_Service_SQLAdmin_SslCert extends Google_Model +{ + public $cert; + public $certSerialNumber; + public $commonName; + public $createTime; + public $expirationTime; + public $instance; + public $kind; + public $sha1Fingerprint; + + public function setCert($cert) + { + $this->cert = $cert; + } + + public function getCert() + { + return $this->cert; + } + + public function setCertSerialNumber($certSerialNumber) + { + $this->certSerialNumber = $certSerialNumber; + } + + public function getCertSerialNumber() + { + return $this->certSerialNumber; + } + + public function setCommonName($commonName) + { + $this->commonName = $commonName; + } + + public function getCommonName() + { + return $this->commonName; + } + + public function setCreateTime($createTime) + { + $this->createTime = $createTime; + } + + public function getCreateTime() + { + return $this->createTime; + } + + public function setExpirationTime($expirationTime) + { + $this->expirationTime = $expirationTime; + } + + public function getExpirationTime() + { + return $this->expirationTime; + } + + public function setInstance($instance) + { + $this->instance = $instance; + } + + public function getInstance() + { + return $this->instance; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSha1Fingerprint($sha1Fingerprint) + { + $this->sha1Fingerprint = $sha1Fingerprint; + } + + public function getSha1Fingerprint() + { + return $this->sha1Fingerprint; + } +} + +class Google_Service_SQLAdmin_SslCertDetail extends Google_Model +{ + protected $certInfoType = 'Google_Service_SQLAdmin_SslCert'; + protected $certInfoDataType = ''; + public $certPrivateKey; + + public function setCertInfo(Google_Service_SQLAdmin_SslCert $certInfo) + { + $this->certInfo = $certInfo; + } + + public function getCertInfo() + { + return $this->certInfo; + } + + public function setCertPrivateKey($certPrivateKey) + { + $this->certPrivateKey = $certPrivateKey; + } + + public function getCertPrivateKey() + { + return $this->certPrivateKey; + } +} + +class Google_Service_SQLAdmin_SslCertsDeleteResponse extends Google_Model +{ + public $kind; + public $operation; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setOperation($operation) + { + $this->operation = $operation; + } + + public function getOperation() + { + return $this->operation; + } +} + +class Google_Service_SQLAdmin_SslCertsInsertRequest extends Google_Model +{ + public $commonName; + + public function setCommonName($commonName) + { + $this->commonName = $commonName; + } + + public function getCommonName() + { + return $this->commonName; + } +} + +class Google_Service_SQLAdmin_SslCertsInsertResponse extends Google_Model +{ + protected $clientCertType = 'Google_Service_SQLAdmin_SslCertDetail'; + protected $clientCertDataType = ''; + public $kind; + protected $serverCaCertType = 'Google_Service_SQLAdmin_SslCert'; + protected $serverCaCertDataType = ''; + + public function setClientCert(Google_Service_SQLAdmin_SslCertDetail $clientCert) + { + $this->clientCert = $clientCert; + } + + public function getClientCert() + { + return $this->clientCert; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setServerCaCert(Google_Service_SQLAdmin_SslCert $serverCaCert) + { + $this->serverCaCert = $serverCaCert; + } + + public function getServerCaCert() + { + return $this->serverCaCert; + } +} + +class Google_Service_SQLAdmin_SslCertsListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_SQLAdmin_SslCert'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_SQLAdmin_Tier extends Google_Collection +{ + public $diskQuota; + public $rAM; + public $kind; + public $region; + public $tier; + + public function setDiskQuota($diskQuota) + { + $this->diskQuota = $diskQuota; + } + + public function getDiskQuota() + { + return $this->diskQuota; + } + + public function setRAM($rAM) + { + $this->rAM = $rAM; + } + + public function getRAM() + { + return $this->rAM; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRegion($region) + { + $this->region = $region; + } + + public function getRegion() + { + return $this->region; + } + + public function setTier($tier) + { + $this->tier = $tier; + } + + public function getTier() + { + return $this->tier; + } +} + +class Google_Service_SQLAdmin_TiersListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_SQLAdmin_Tier'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} diff --git a/oauth/Google/Service/ShoppingContent.php b/oauth/Google/Service/ShoppingContent.php new file mode 100644 index 0000000..d1c71d1 --- /dev/null +++ b/oauth/Google/Service/ShoppingContent.php @@ -0,0 +1,4442 @@ + + * Manage product items, inventory, and Merchant Center accounts for Google Shopping. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_ShoppingContent extends Google_Service +{ + /** Manage your product listings and accounts for Google Shopping. */ + const CONTENT = "https://www.googleapis.com/auth/content"; + + public $accounts; + public $accountstatuses; + public $datafeeds; + public $datafeedstatuses; + public $inventory; + public $products; + public $productstatuses; + + + /** + * Constructs the internal representation of the ShoppingContent service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'content/v2/'; + $this->version = 'v2'; + $this->serviceName = 'content'; + + $this->accounts = new Google_Service_ShoppingContent_Accounts_Resource( + $this, + $this->serviceName, + 'accounts', + array( + 'methods' => array( + 'custombatch' => array( + 'path' => 'accounts/batch', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'delete' => array( + 'path' => '{merchantId}/accounts/{accountId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{merchantId}/accounts/{accountId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{merchantId}/accounts', + 'httpMethod' => 'POST', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{merchantId}/accounts', + 'httpMethod' => 'GET', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => '{merchantId}/accounts/{accountId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => '{merchantId}/accounts/{accountId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->accountstatuses = new Google_Service_ShoppingContent_Accountstatuses_Resource( + $this, + $this->serviceName, + 'accountstatuses', + array( + 'methods' => array( + 'custombatch' => array( + 'path' => 'accountstatuses/batch', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'get' => array( + 'path' => '{merchantId}/accountstatuses/{accountId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'accountId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{merchantId}/accountstatuses', + 'httpMethod' => 'GET', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->datafeeds = new Google_Service_ShoppingContent_Datafeeds_Resource( + $this, + $this->serviceName, + 'datafeeds', + array( + 'methods' => array( + 'custombatch' => array( + 'path' => 'datafeeds/batch', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'delete' => array( + 'path' => '{merchantId}/datafeeds/{datafeedId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'datafeedId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{merchantId}/datafeeds/{datafeedId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'datafeedId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{merchantId}/datafeeds', + 'httpMethod' => 'POST', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{merchantId}/datafeeds', + 'httpMethod' => 'GET', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => '{merchantId}/datafeeds/{datafeedId}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'datafeedId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => '{merchantId}/datafeeds/{datafeedId}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'datafeedId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->datafeedstatuses = new Google_Service_ShoppingContent_Datafeedstatuses_Resource( + $this, + $this->serviceName, + 'datafeedstatuses', + array( + 'methods' => array( + 'custombatch' => array( + 'path' => 'datafeedstatuses/batch', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'get' => array( + 'path' => '{merchantId}/datafeedstatuses/{datafeedId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'datafeedId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{merchantId}/datafeedstatuses', + 'httpMethod' => 'GET', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->inventory = new Google_Service_ShoppingContent_Inventory_Resource( + $this, + $this->serviceName, + 'inventory', + array( + 'methods' => array( + 'custombatch' => array( + 'path' => 'inventory/batch', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'set' => array( + 'path' => '{merchantId}/inventory/{storeCode}/products/{productId}', + 'httpMethod' => 'POST', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'storeCode' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'productId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->products = new Google_Service_ShoppingContent_Products_Resource( + $this, + $this->serviceName, + 'products', + array( + 'methods' => array( + 'custombatch' => array( + 'path' => 'products/batch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'dryRun' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'delete' => array( + 'path' => '{merchantId}/products/{productId}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'productId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'dryRun' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'get' => array( + 'path' => '{merchantId}/products/{productId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'productId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{merchantId}/products', + 'httpMethod' => 'POST', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'dryRun' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'list' => array( + 'path' => '{merchantId}/products', + 'httpMethod' => 'GET', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + $this->productstatuses = new Google_Service_ShoppingContent_Productstatuses_Resource( + $this, + $this->serviceName, + 'productstatuses', + array( + 'methods' => array( + 'custombatch' => array( + 'path' => 'productstatuses/batch', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'get' => array( + 'path' => '{merchantId}/productstatuses/{productId}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'productId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => '{merchantId}/productstatuses', + 'httpMethod' => 'GET', + 'parameters' => array( + 'merchantId' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "accounts" collection of methods. + * Typical usage is: + * + * $contentService = new Google_Service_ShoppingContent(...); + * $accounts = $contentService->accounts; + * + */ +class Google_Service_ShoppingContent_Accounts_Resource extends Google_Service_Resource +{ + + /** + * Retrieves, inserts, updates, and deletes multiple Merchant Center + * (sub-)accounts in a single request. (accounts.custombatch) + * + * @param Google_AccountsCustomBatchRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_AccountsCustomBatchResponse + */ + public function custombatch(Google_Service_ShoppingContent_AccountsCustomBatchRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('custombatch', array($params), "Google_Service_ShoppingContent_AccountsCustomBatchResponse"); + } + /** + * Deletes a Merchant Center sub-account. (accounts.delete) + * + * @param string $merchantId + * The ID of the managing account. + * @param string $accountId + * The ID of the account. + * @param array $optParams Optional parameters. + */ + public function delete($merchantId, $accountId, $optParams = array()) + { + $params = array('merchantId' => $merchantId, 'accountId' => $accountId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves a Merchant Center account. (accounts.get) + * + * @param string $merchantId + * The ID of the managing account. + * @param string $accountId + * The ID of the account. + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_Account + */ + public function get($merchantId, $accountId, $optParams = array()) + { + $params = array('merchantId' => $merchantId, 'accountId' => $accountId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_ShoppingContent_Account"); + } + /** + * Creates a Merchant Center sub-account. (accounts.insert) + * + * @param string $merchantId + * The ID of the managing account. + * @param Google_Account $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_Account + */ + public function insert($merchantId, Google_Service_ShoppingContent_Account $postBody, $optParams = array()) + { + $params = array('merchantId' => $merchantId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_ShoppingContent_Account"); + } + /** + * Lists the sub-accounts in your Merchant Center account. + * (accounts.listAccounts) + * + * @param string $merchantId + * The ID of the managing account. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The token returned by the previous request. + * @opt_param string maxResults + * The maximum number of accounts to return in the response, used for paging. + * @return Google_Service_ShoppingContent_AccountsListResponse + */ + public function listAccounts($merchantId, $optParams = array()) + { + $params = array('merchantId' => $merchantId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_ShoppingContent_AccountsListResponse"); + } + /** + * Updates a Merchant Center account. This method supports patch semantics. + * (accounts.patch) + * + * @param string $merchantId + * The ID of the managing account. + * @param string $accountId + * The ID of the account. + * @param Google_Account $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_Account + */ + public function patch($merchantId, $accountId, Google_Service_ShoppingContent_Account $postBody, $optParams = array()) + { + $params = array('merchantId' => $merchantId, 'accountId' => $accountId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_ShoppingContent_Account"); + } + /** + * Updates a Merchant Center account. (accounts.update) + * + * @param string $merchantId + * The ID of the managing account. + * @param string $accountId + * The ID of the account. + * @param Google_Account $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_Account + */ + public function update($merchantId, $accountId, Google_Service_ShoppingContent_Account $postBody, $optParams = array()) + { + $params = array('merchantId' => $merchantId, 'accountId' => $accountId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_ShoppingContent_Account"); + } +} + +/** + * The "accountstatuses" collection of methods. + * Typical usage is: + * + * $contentService = new Google_Service_ShoppingContent(...); + * $accountstatuses = $contentService->accountstatuses; + * + */ +class Google_Service_ShoppingContent_Accountstatuses_Resource extends Google_Service_Resource +{ + + /** + * (accountstatuses.custombatch) + * + * @param Google_AccountstatusesCustomBatchRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_AccountstatusesCustomBatchResponse + */ + public function custombatch(Google_Service_ShoppingContent_AccountstatusesCustomBatchRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('custombatch', array($params), "Google_Service_ShoppingContent_AccountstatusesCustomBatchResponse"); + } + /** + * Retrieves the status of a Merchant Center account. (accountstatuses.get) + * + * @param string $merchantId + * The ID of the managing account. + * @param string $accountId + * The ID of the account. + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_AccountStatus + */ + public function get($merchantId, $accountId, $optParams = array()) + { + $params = array('merchantId' => $merchantId, 'accountId' => $accountId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_ShoppingContent_AccountStatus"); + } + /** + * Lists the statuses of the sub-accounts in your Merchant Center account. + * (accountstatuses.listAccountstatuses) + * + * @param string $merchantId + * The ID of the managing account. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The token returned by the previous request. + * @opt_param string maxResults + * The maximum number of account statuses to return in the response, used for paging. + * @return Google_Service_ShoppingContent_AccountstatusesListResponse + */ + public function listAccountstatuses($merchantId, $optParams = array()) + { + $params = array('merchantId' => $merchantId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_ShoppingContent_AccountstatusesListResponse"); + } +} + +/** + * The "datafeeds" collection of methods. + * Typical usage is: + * + * $contentService = new Google_Service_ShoppingContent(...); + * $datafeeds = $contentService->datafeeds; + * + */ +class Google_Service_ShoppingContent_Datafeeds_Resource extends Google_Service_Resource +{ + + /** + * (datafeeds.custombatch) + * + * @param Google_DatafeedsCustomBatchRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_DatafeedsCustomBatchResponse + */ + public function custombatch(Google_Service_ShoppingContent_DatafeedsCustomBatchRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('custombatch', array($params), "Google_Service_ShoppingContent_DatafeedsCustomBatchResponse"); + } + /** + * Deletes a datafeed from your Merchant Center account. (datafeeds.delete) + * + * @param string $merchantId + * + * @param string $datafeedId + * + * @param array $optParams Optional parameters. + */ + public function delete($merchantId, $datafeedId, $optParams = array()) + { + $params = array('merchantId' => $merchantId, 'datafeedId' => $datafeedId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves a datafeed from your Merchant Center account. (datafeeds.get) + * + * @param string $merchantId + * + * @param string $datafeedId + * + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_Datafeed + */ + public function get($merchantId, $datafeedId, $optParams = array()) + { + $params = array('merchantId' => $merchantId, 'datafeedId' => $datafeedId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_ShoppingContent_Datafeed"); + } + /** + * Registers a datafeed with your Merchant Center account. (datafeeds.insert) + * + * @param string $merchantId + * + * @param Google_Datafeed $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_Datafeed + */ + public function insert($merchantId, Google_Service_ShoppingContent_Datafeed $postBody, $optParams = array()) + { + $params = array('merchantId' => $merchantId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_ShoppingContent_Datafeed"); + } + /** + * Lists the datafeeds in your Merchant Center account. + * (datafeeds.listDatafeeds) + * + * @param string $merchantId + * + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_DatafeedsListResponse + */ + public function listDatafeeds($merchantId, $optParams = array()) + { + $params = array('merchantId' => $merchantId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_ShoppingContent_DatafeedsListResponse"); + } + /** + * Updates a datafeed of your Merchant Center account. This method supports + * patch semantics. (datafeeds.patch) + * + * @param string $merchantId + * + * @param string $datafeedId + * + * @param Google_Datafeed $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_Datafeed + */ + public function patch($merchantId, $datafeedId, Google_Service_ShoppingContent_Datafeed $postBody, $optParams = array()) + { + $params = array('merchantId' => $merchantId, 'datafeedId' => $datafeedId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_ShoppingContent_Datafeed"); + } + /** + * Updates a datafeed of your Merchant Center account. (datafeeds.update) + * + * @param string $merchantId + * + * @param string $datafeedId + * + * @param Google_Datafeed $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_Datafeed + */ + public function update($merchantId, $datafeedId, Google_Service_ShoppingContent_Datafeed $postBody, $optParams = array()) + { + $params = array('merchantId' => $merchantId, 'datafeedId' => $datafeedId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_ShoppingContent_Datafeed"); + } +} + +/** + * The "datafeedstatuses" collection of methods. + * Typical usage is: + * + * $contentService = new Google_Service_ShoppingContent(...); + * $datafeedstatuses = $contentService->datafeedstatuses; + * + */ +class Google_Service_ShoppingContent_Datafeedstatuses_Resource extends Google_Service_Resource +{ + + /** + * (datafeedstatuses.custombatch) + * + * @param Google_DatafeedstatusesCustomBatchRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_DatafeedstatusesCustomBatchResponse + */ + public function custombatch(Google_Service_ShoppingContent_DatafeedstatusesCustomBatchRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('custombatch', array($params), "Google_Service_ShoppingContent_DatafeedstatusesCustomBatchResponse"); + } + /** + * Retrieves the status of a datafeed from your Merchant Center account. + * (datafeedstatuses.get) + * + * @param string $merchantId + * + * @param string $datafeedId + * + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_DatafeedStatus + */ + public function get($merchantId, $datafeedId, $optParams = array()) + { + $params = array('merchantId' => $merchantId, 'datafeedId' => $datafeedId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_ShoppingContent_DatafeedStatus"); + } + /** + * Lists the statuses of the datafeeds in your Merchant Center account. + * (datafeedstatuses.listDatafeedstatuses) + * + * @param string $merchantId + * + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_DatafeedstatusesListResponse + */ + public function listDatafeedstatuses($merchantId, $optParams = array()) + { + $params = array('merchantId' => $merchantId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_ShoppingContent_DatafeedstatusesListResponse"); + } +} + +/** + * The "inventory" collection of methods. + * Typical usage is: + * + * $contentService = new Google_Service_ShoppingContent(...); + * $inventory = $contentService->inventory; + * + */ +class Google_Service_ShoppingContent_Inventory_Resource extends Google_Service_Resource +{ + + /** + * Updates price and availability for multiple products or stores in a single + * request. (inventory.custombatch) + * + * @param Google_InventoryCustomBatchRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_InventoryCustomBatchResponse + */ + public function custombatch(Google_Service_ShoppingContent_InventoryCustomBatchRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('custombatch', array($params), "Google_Service_ShoppingContent_InventoryCustomBatchResponse"); + } + /** + * Updates price and availability of a product in your Merchant Center account. + * (inventory.set) + * + * @param string $merchantId + * The ID of the managing account. + * @param string $storeCode + * The code of the store for which to update price and availability. Use online to update price and + * availability of an online product. + * @param string $productId + * The ID of the product for which to update price and availability. + * @param Google_InventorySetRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_InventorySetResponse + */ + public function set($merchantId, $storeCode, $productId, Google_Service_ShoppingContent_InventorySetRequest $postBody, $optParams = array()) + { + $params = array('merchantId' => $merchantId, 'storeCode' => $storeCode, 'productId' => $productId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('set', array($params), "Google_Service_ShoppingContent_InventorySetResponse"); + } +} + +/** + * The "products" collection of methods. + * Typical usage is: + * + * $contentService = new Google_Service_ShoppingContent(...); + * $products = $contentService->products; + * + */ +class Google_Service_ShoppingContent_Products_Resource extends Google_Service_Resource +{ + + /** + * Retrieves, inserts, and deletes multiple products in a single request. + * (products.custombatch) + * + * @param Google_ProductsCustomBatchRequest $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool dryRun + * Flag to run the request in dry-run mode. + * @return Google_Service_ShoppingContent_ProductsCustomBatchResponse + */ + public function custombatch(Google_Service_ShoppingContent_ProductsCustomBatchRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('custombatch', array($params), "Google_Service_ShoppingContent_ProductsCustomBatchResponse"); + } + /** + * Deletes a product from your Merchant Center account. (products.delete) + * + * @param string $merchantId + * The ID of the managing account. + * @param string $productId + * The ID of the product. + * @param array $optParams Optional parameters. + * + * @opt_param bool dryRun + * Flag to run the request in dry-run mode. + */ + public function delete($merchantId, $productId, $optParams = array()) + { + $params = array('merchantId' => $merchantId, 'productId' => $productId); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves a product from your Merchant Center account. (products.get) + * + * @param string $merchantId + * The ID of the managing account. + * @param string $productId + * The ID of the product. + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_Product + */ + public function get($merchantId, $productId, $optParams = array()) + { + $params = array('merchantId' => $merchantId, 'productId' => $productId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_ShoppingContent_Product"); + } + /** + * Uploads a product to your Merchant Center account. (products.insert) + * + * @param string $merchantId + * The ID of the managing account. + * @param Google_Product $postBody + * @param array $optParams Optional parameters. + * + * @opt_param bool dryRun + * Flag to run the request in dry-run mode. + * @return Google_Service_ShoppingContent_Product + */ + public function insert($merchantId, Google_Service_ShoppingContent_Product $postBody, $optParams = array()) + { + $params = array('merchantId' => $merchantId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_ShoppingContent_Product"); + } + /** + * Lists the products in your Merchant Center account. (products.listProducts) + * + * @param string $merchantId + * The ID of the managing account. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The token returned by the previous request. + * @opt_param string maxResults + * The maximum number of products to return in the response, used for paging. + * @return Google_Service_ShoppingContent_ProductsListResponse + */ + public function listProducts($merchantId, $optParams = array()) + { + $params = array('merchantId' => $merchantId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_ShoppingContent_ProductsListResponse"); + } +} + +/** + * The "productstatuses" collection of methods. + * Typical usage is: + * + * $contentService = new Google_Service_ShoppingContent(...); + * $productstatuses = $contentService->productstatuses; + * + */ +class Google_Service_ShoppingContent_Productstatuses_Resource extends Google_Service_Resource +{ + + /** + * Gets the statuses of multiple products in a single request. + * (productstatuses.custombatch) + * + * @param Google_ProductstatusesCustomBatchRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_ProductstatusesCustomBatchResponse + */ + public function custombatch(Google_Service_ShoppingContent_ProductstatusesCustomBatchRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('custombatch', array($params), "Google_Service_ShoppingContent_ProductstatusesCustomBatchResponse"); + } + /** + * Gets the status of a product from your Merchant Center account. + * (productstatuses.get) + * + * @param string $merchantId + * The ID of the managing account. + * @param string $productId + * The ID of the product. + * @param array $optParams Optional parameters. + * @return Google_Service_ShoppingContent_ProductStatus + */ + public function get($merchantId, $productId, $optParams = array()) + { + $params = array('merchantId' => $merchantId, 'productId' => $productId); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_ShoppingContent_ProductStatus"); + } + /** + * Lists the statuses of the products in your Merchant Center account. + * (productstatuses.listProductstatuses) + * + * @param string $merchantId + * The ID of the managing account. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * The token returned by the previous request. + * @opt_param string maxResults + * The maximum number of product statuses to return in the response, used for paging. + * @return Google_Service_ShoppingContent_ProductstatusesListResponse + */ + public function listProductstatuses($merchantId, $optParams = array()) + { + $params = array('merchantId' => $merchantId); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_ShoppingContent_ProductstatusesListResponse"); + } +} + + + + +class Google_Service_ShoppingContent_Account extends Google_Collection +{ + public $adultContent; + protected $adwordsLinksType = 'Google_Service_ShoppingContent_AccountAdwordsLink'; + protected $adwordsLinksDataType = 'array'; + public $id; + public $kind; + public $name; + public $reviewsUrl; + public $sellerId; + protected $usersType = 'Google_Service_ShoppingContent_AccountUser'; + protected $usersDataType = 'array'; + public $websiteUrl; + + public function setAdultContent($adultContent) + { + $this->adultContent = $adultContent; + } + + public function getAdultContent() + { + return $this->adultContent; + } + + public function setAdwordsLinks($adwordsLinks) + { + $this->adwordsLinks = $adwordsLinks; + } + + public function getAdwordsLinks() + { + return $this->adwordsLinks; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setReviewsUrl($reviewsUrl) + { + $this->reviewsUrl = $reviewsUrl; + } + + public function getReviewsUrl() + { + return $this->reviewsUrl; + } + + public function setSellerId($sellerId) + { + $this->sellerId = $sellerId; + } + + public function getSellerId() + { + return $this->sellerId; + } + + public function setUsers($users) + { + $this->users = $users; + } + + public function getUsers() + { + return $this->users; + } + + public function setWebsiteUrl($websiteUrl) + { + $this->websiteUrl = $websiteUrl; + } + + public function getWebsiteUrl() + { + return $this->websiteUrl; + } +} + +class Google_Service_ShoppingContent_AccountAdwordsLink extends Google_Model +{ + public $adwordsId; + public $status; + + public function setAdwordsId($adwordsId) + { + $this->adwordsId = $adwordsId; + } + + public function getAdwordsId() + { + return $this->adwordsId; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_ShoppingContent_AccountStatus extends Google_Collection +{ + public $accountId; + protected $dataQualityIssuesType = 'Google_Service_ShoppingContent_AccountStatusDataQualityIssue'; + protected $dataQualityIssuesDataType = 'array'; + public $kind; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setDataQualityIssues($dataQualityIssues) + { + $this->dataQualityIssues = $dataQualityIssues; + } + + public function getDataQualityIssues() + { + return $this->dataQualityIssues; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_ShoppingContent_AccountStatusDataQualityIssue extends Google_Collection +{ + public $country; + public $displayedValue; + protected $exampleItemsType = 'Google_Service_ShoppingContent_AccountStatusExampleItem'; + protected $exampleItemsDataType = 'array'; + public $id; + public $lastChecked; + public $numItems; + public $severity; + public $submittedValue; + + public function setCountry($country) + { + $this->country = $country; + } + + public function getCountry() + { + return $this->country; + } + + public function setDisplayedValue($displayedValue) + { + $this->displayedValue = $displayedValue; + } + + public function getDisplayedValue() + { + return $this->displayedValue; + } + + public function setExampleItems($exampleItems) + { + $this->exampleItems = $exampleItems; + } + + public function getExampleItems() + { + return $this->exampleItems; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setLastChecked($lastChecked) + { + $this->lastChecked = $lastChecked; + } + + public function getLastChecked() + { + return $this->lastChecked; + } + + public function setNumItems($numItems) + { + $this->numItems = $numItems; + } + + public function getNumItems() + { + return $this->numItems; + } + + public function setSeverity($severity) + { + $this->severity = $severity; + } + + public function getSeverity() + { + return $this->severity; + } + + public function setSubmittedValue($submittedValue) + { + $this->submittedValue = $submittedValue; + } + + public function getSubmittedValue() + { + return $this->submittedValue; + } +} + +class Google_Service_ShoppingContent_AccountStatusExampleItem extends Google_Model +{ + public $itemId; + public $link; + public $submittedValue; + public $title; + public $valueOnLandingPage; + + public function setItemId($itemId) + { + $this->itemId = $itemId; + } + + public function getItemId() + { + return $this->itemId; + } + + public function setLink($link) + { + $this->link = $link; + } + + public function getLink() + { + return $this->link; + } + + public function setSubmittedValue($submittedValue) + { + $this->submittedValue = $submittedValue; + } + + public function getSubmittedValue() + { + return $this->submittedValue; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setValueOnLandingPage($valueOnLandingPage) + { + $this->valueOnLandingPage = $valueOnLandingPage; + } + + public function getValueOnLandingPage() + { + return $this->valueOnLandingPage; + } +} + +class Google_Service_ShoppingContent_AccountUser extends Google_Model +{ + public $admin; + public $emailAddress; + + public function setAdmin($admin) + { + $this->admin = $admin; + } + + public function getAdmin() + { + return $this->admin; + } + + public function setEmailAddress($emailAddress) + { + $this->emailAddress = $emailAddress; + } + + public function getEmailAddress() + { + return $this->emailAddress; + } +} + +class Google_Service_ShoppingContent_AccountsCustomBatchRequest extends Google_Collection +{ + protected $entriesType = 'Google_Service_ShoppingContent_AccountsCustomBatchRequestEntry'; + protected $entriesDataType = 'array'; + + public function setEntries($entries) + { + $this->entries = $entries; + } + + public function getEntries() + { + return $this->entries; + } +} + +class Google_Service_ShoppingContent_AccountsCustomBatchRequestEntry extends Google_Model +{ + protected $accountType = 'Google_Service_ShoppingContent_Account'; + protected $accountDataType = ''; + public $accountId; + public $batchId; + public $merchantId; + public $method; + + public function setAccount(Google_Service_ShoppingContent_Account $account) + { + $this->account = $account; + } + + public function getAccount() + { + return $this->account; + } + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setBatchId($batchId) + { + $this->batchId = $batchId; + } + + public function getBatchId() + { + return $this->batchId; + } + + public function setMerchantId($merchantId) + { + $this->merchantId = $merchantId; + } + + public function getMerchantId() + { + return $this->merchantId; + } + + public function setMethod($method) + { + $this->method = $method; + } + + public function getMethod() + { + return $this->method; + } +} + +class Google_Service_ShoppingContent_AccountsCustomBatchResponse extends Google_Collection +{ + protected $entriesType = 'Google_Service_ShoppingContent_AccountsCustomBatchResponseEntry'; + protected $entriesDataType = 'array'; + public $kind; + + public function setEntries($entries) + { + $this->entries = $entries; + } + + public function getEntries() + { + return $this->entries; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_ShoppingContent_AccountsCustomBatchResponseEntry extends Google_Model +{ + protected $accountType = 'Google_Service_ShoppingContent_Account'; + protected $accountDataType = ''; + public $batchId; + protected $errorsType = 'Google_Service_ShoppingContent_Errors'; + protected $errorsDataType = ''; + public $kind; + + public function setAccount(Google_Service_ShoppingContent_Account $account) + { + $this->account = $account; + } + + public function getAccount() + { + return $this->account; + } + + public function setBatchId($batchId) + { + $this->batchId = $batchId; + } + + public function getBatchId() + { + return $this->batchId; + } + + public function setErrors(Google_Service_ShoppingContent_Errors $errors) + { + $this->errors = $errors; + } + + public function getErrors() + { + return $this->errors; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_ShoppingContent_AccountsListResponse extends Google_Collection +{ + public $kind; + public $nextPageToken; + protected $resourcesType = 'Google_Service_ShoppingContent_Account'; + protected $resourcesDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setResources($resources) + { + $this->resources = $resources; + } + + public function getResources() + { + return $this->resources; + } +} + +class Google_Service_ShoppingContent_AccountstatusesCustomBatchRequest extends Google_Collection +{ + protected $entriesType = 'Google_Service_ShoppingContent_AccountstatusesCustomBatchRequestEntry'; + protected $entriesDataType = 'array'; + + public function setEntries($entries) + { + $this->entries = $entries; + } + + public function getEntries() + { + return $this->entries; + } +} + +class Google_Service_ShoppingContent_AccountstatusesCustomBatchRequestEntry extends Google_Model +{ + public $accountId; + public $batchId; + public $merchantId; + public $method; + + public function setAccountId($accountId) + { + $this->accountId = $accountId; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function setBatchId($batchId) + { + $this->batchId = $batchId; + } + + public function getBatchId() + { + return $this->batchId; + } + + public function setMerchantId($merchantId) + { + $this->merchantId = $merchantId; + } + + public function getMerchantId() + { + return $this->merchantId; + } + + public function setMethod($method) + { + $this->method = $method; + } + + public function getMethod() + { + return $this->method; + } +} + +class Google_Service_ShoppingContent_AccountstatusesCustomBatchResponse extends Google_Collection +{ + protected $entriesType = 'Google_Service_ShoppingContent_AccountstatusesCustomBatchResponseEntry'; + protected $entriesDataType = 'array'; + public $kind; + + public function setEntries($entries) + { + $this->entries = $entries; + } + + public function getEntries() + { + return $this->entries; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_ShoppingContent_AccountstatusesCustomBatchResponseEntry extends Google_Model +{ + protected $accountStatusType = 'Google_Service_ShoppingContent_AccountStatus'; + protected $accountStatusDataType = ''; + public $batchId; + protected $errorsType = 'Google_Service_ShoppingContent_Errors'; + protected $errorsDataType = ''; + + public function setAccountStatus(Google_Service_ShoppingContent_AccountStatus $accountStatus) + { + $this->accountStatus = $accountStatus; + } + + public function getAccountStatus() + { + return $this->accountStatus; + } + + public function setBatchId($batchId) + { + $this->batchId = $batchId; + } + + public function getBatchId() + { + return $this->batchId; + } + + public function setErrors(Google_Service_ShoppingContent_Errors $errors) + { + $this->errors = $errors; + } + + public function getErrors() + { + return $this->errors; + } +} + +class Google_Service_ShoppingContent_AccountstatusesListResponse extends Google_Collection +{ + public $kind; + public $nextPageToken; + protected $resourcesType = 'Google_Service_ShoppingContent_AccountStatus'; + protected $resourcesDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setResources($resources) + { + $this->resources = $resources; + } + + public function getResources() + { + return $this->resources; + } +} + +class Google_Service_ShoppingContent_Datafeed extends Google_Collection +{ + public $attributeLanguage; + public $contentLanguage; + public $contentType; + protected $fetchScheduleType = 'Google_Service_ShoppingContent_DatafeedFetchSchedule'; + protected $fetchScheduleDataType = ''; + public $fileName; + protected $formatType = 'Google_Service_ShoppingContent_DatafeedFormat'; + protected $formatDataType = ''; + public $id; + public $intendedDestinations; + public $kind; + public $name; + public $targetCountry; + + public function setAttributeLanguage($attributeLanguage) + { + $this->attributeLanguage = $attributeLanguage; + } + + public function getAttributeLanguage() + { + return $this->attributeLanguage; + } + + public function setContentLanguage($contentLanguage) + { + $this->contentLanguage = $contentLanguage; + } + + public function getContentLanguage() + { + return $this->contentLanguage; + } + + public function setContentType($contentType) + { + $this->contentType = $contentType; + } + + public function getContentType() + { + return $this->contentType; + } + + public function setFetchSchedule(Google_Service_ShoppingContent_DatafeedFetchSchedule $fetchSchedule) + { + $this->fetchSchedule = $fetchSchedule; + } + + public function getFetchSchedule() + { + return $this->fetchSchedule; + } + + public function setFileName($fileName) + { + $this->fileName = $fileName; + } + + public function getFileName() + { + return $this->fileName; + } + + public function setFormat(Google_Service_ShoppingContent_DatafeedFormat $format) + { + $this->format = $format; + } + + public function getFormat() + { + return $this->format; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setIntendedDestinations($intendedDestinations) + { + $this->intendedDestinations = $intendedDestinations; + } + + public function getIntendedDestinations() + { + return $this->intendedDestinations; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setTargetCountry($targetCountry) + { + $this->targetCountry = $targetCountry; + } + + public function getTargetCountry() + { + return $this->targetCountry; + } +} + +class Google_Service_ShoppingContent_DatafeedFetchSchedule extends Google_Model +{ + public $dayOfMonth; + public $fetchUrl; + public $hour; + public $password; + public $timeZone; + public $username; + public $weekday; + + public function setDayOfMonth($dayOfMonth) + { + $this->dayOfMonth = $dayOfMonth; + } + + public function getDayOfMonth() + { + return $this->dayOfMonth; + } + + public function setFetchUrl($fetchUrl) + { + $this->fetchUrl = $fetchUrl; + } + + public function getFetchUrl() + { + return $this->fetchUrl; + } + + public function setHour($hour) + { + $this->hour = $hour; + } + + public function getHour() + { + return $this->hour; + } + + public function setPassword($password) + { + $this->password = $password; + } + + public function getPassword() + { + return $this->password; + } + + public function setTimeZone($timeZone) + { + $this->timeZone = $timeZone; + } + + public function getTimeZone() + { + return $this->timeZone; + } + + public function setUsername($username) + { + $this->username = $username; + } + + public function getUsername() + { + return $this->username; + } + + public function setWeekday($weekday) + { + $this->weekday = $weekday; + } + + public function getWeekday() + { + return $this->weekday; + } +} + +class Google_Service_ShoppingContent_DatafeedFormat extends Google_Model +{ + public $columnDelimiter; + public $fileEncoding; + public $quotingMode; + + public function setColumnDelimiter($columnDelimiter) + { + $this->columnDelimiter = $columnDelimiter; + } + + public function getColumnDelimiter() + { + return $this->columnDelimiter; + } + + public function setFileEncoding($fileEncoding) + { + $this->fileEncoding = $fileEncoding; + } + + public function getFileEncoding() + { + return $this->fileEncoding; + } + + public function setQuotingMode($quotingMode) + { + $this->quotingMode = $quotingMode; + } + + public function getQuotingMode() + { + return $this->quotingMode; + } +} + +class Google_Service_ShoppingContent_DatafeedStatus extends Google_Collection +{ + public $datafeedId; + protected $errorsType = 'Google_Service_ShoppingContent_DatafeedStatusError'; + protected $errorsDataType = 'array'; + public $itemsTotal; + public $itemsValid; + public $kind; + public $processingStatus; + protected $warningsType = 'Google_Service_ShoppingContent_DatafeedStatusError'; + protected $warningsDataType = 'array'; + + public function setDatafeedId($datafeedId) + { + $this->datafeedId = $datafeedId; + } + + public function getDatafeedId() + { + return $this->datafeedId; + } + + public function setErrors($errors) + { + $this->errors = $errors; + } + + public function getErrors() + { + return $this->errors; + } + + public function setItemsTotal($itemsTotal) + { + $this->itemsTotal = $itemsTotal; + } + + public function getItemsTotal() + { + return $this->itemsTotal; + } + + public function setItemsValid($itemsValid) + { + $this->itemsValid = $itemsValid; + } + + public function getItemsValid() + { + return $this->itemsValid; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setProcessingStatus($processingStatus) + { + $this->processingStatus = $processingStatus; + } + + public function getProcessingStatus() + { + return $this->processingStatus; + } + + public function setWarnings($warnings) + { + $this->warnings = $warnings; + } + + public function getWarnings() + { + return $this->warnings; + } +} + +class Google_Service_ShoppingContent_DatafeedStatusError extends Google_Collection +{ + public $code; + public $count; + protected $examplesType = 'Google_Service_ShoppingContent_DatafeedStatusExample'; + protected $examplesDataType = 'array'; + public $message; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setCount($count) + { + $this->count = $count; + } + + public function getCount() + { + return $this->count; + } + + public function setExamples($examples) + { + $this->examples = $examples; + } + + public function getExamples() + { + return $this->examples; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_ShoppingContent_DatafeedStatusExample extends Google_Model +{ + public $itemId; + public $lineNumber; + public $value; + + public function setItemId($itemId) + { + $this->itemId = $itemId; + } + + public function getItemId() + { + return $this->itemId; + } + + public function setLineNumber($lineNumber) + { + $this->lineNumber = $lineNumber; + } + + public function getLineNumber() + { + return $this->lineNumber; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_ShoppingContent_DatafeedsCustomBatchRequest extends Google_Collection +{ + protected $entriesType = 'Google_Service_ShoppingContent_DatafeedsCustomBatchRequestEntry'; + protected $entriesDataType = 'array'; + + public function setEntries($entries) + { + $this->entries = $entries; + } + + public function getEntries() + { + return $this->entries; + } +} + +class Google_Service_ShoppingContent_DatafeedsCustomBatchRequestEntry extends Google_Model +{ + public $batchId; + protected $datafeedType = 'Google_Service_ShoppingContent_Datafeed'; + protected $datafeedDataType = ''; + public $datafeedId; + public $merchantId; + public $method; + + public function setBatchId($batchId) + { + $this->batchId = $batchId; + } + + public function getBatchId() + { + return $this->batchId; + } + + public function setDatafeed(Google_Service_ShoppingContent_Datafeed $datafeed) + { + $this->datafeed = $datafeed; + } + + public function getDatafeed() + { + return $this->datafeed; + } + + public function setDatafeedId($datafeedId) + { + $this->datafeedId = $datafeedId; + } + + public function getDatafeedId() + { + return $this->datafeedId; + } + + public function setMerchantId($merchantId) + { + $this->merchantId = $merchantId; + } + + public function getMerchantId() + { + return $this->merchantId; + } + + public function setMethod($method) + { + $this->method = $method; + } + + public function getMethod() + { + return $this->method; + } +} + +class Google_Service_ShoppingContent_DatafeedsCustomBatchResponse extends Google_Collection +{ + protected $entriesType = 'Google_Service_ShoppingContent_DatafeedsCustomBatchResponseEntry'; + protected $entriesDataType = 'array'; + public $kind; + + public function setEntries($entries) + { + $this->entries = $entries; + } + + public function getEntries() + { + return $this->entries; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_ShoppingContent_DatafeedsCustomBatchResponseEntry extends Google_Model +{ + public $batchId; + protected $datafeedType = 'Google_Service_ShoppingContent_Datafeed'; + protected $datafeedDataType = ''; + protected $errorsType = 'Google_Service_ShoppingContent_Errors'; + protected $errorsDataType = ''; + + public function setBatchId($batchId) + { + $this->batchId = $batchId; + } + + public function getBatchId() + { + return $this->batchId; + } + + public function setDatafeed(Google_Service_ShoppingContent_Datafeed $datafeed) + { + $this->datafeed = $datafeed; + } + + public function getDatafeed() + { + return $this->datafeed; + } + + public function setErrors(Google_Service_ShoppingContent_Errors $errors) + { + $this->errors = $errors; + } + + public function getErrors() + { + return $this->errors; + } +} + +class Google_Service_ShoppingContent_DatafeedsListResponse extends Google_Collection +{ + public $kind; + protected $resourcesType = 'Google_Service_ShoppingContent_Datafeed'; + protected $resourcesDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setResources($resources) + { + $this->resources = $resources; + } + + public function getResources() + { + return $this->resources; + } +} + +class Google_Service_ShoppingContent_DatafeedstatusesCustomBatchRequest extends Google_Collection +{ + protected $entriesType = 'Google_Service_ShoppingContent_DatafeedstatusesCustomBatchRequestEntry'; + protected $entriesDataType = 'array'; + + public function setEntries($entries) + { + $this->entries = $entries; + } + + public function getEntries() + { + return $this->entries; + } +} + +class Google_Service_ShoppingContent_DatafeedstatusesCustomBatchRequestEntry extends Google_Model +{ + public $batchId; + public $datafeedId; + public $merchantId; + public $method; + + public function setBatchId($batchId) + { + $this->batchId = $batchId; + } + + public function getBatchId() + { + return $this->batchId; + } + + public function setDatafeedId($datafeedId) + { + $this->datafeedId = $datafeedId; + } + + public function getDatafeedId() + { + return $this->datafeedId; + } + + public function setMerchantId($merchantId) + { + $this->merchantId = $merchantId; + } + + public function getMerchantId() + { + return $this->merchantId; + } + + public function setMethod($method) + { + $this->method = $method; + } + + public function getMethod() + { + return $this->method; + } +} + +class Google_Service_ShoppingContent_DatafeedstatusesCustomBatchResponse extends Google_Collection +{ + protected $entriesType = 'Google_Service_ShoppingContent_DatafeedstatusesCustomBatchResponseEntry'; + protected $entriesDataType = 'array'; + public $kind; + + public function setEntries($entries) + { + $this->entries = $entries; + } + + public function getEntries() + { + return $this->entries; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_ShoppingContent_DatafeedstatusesCustomBatchResponseEntry extends Google_Model +{ + public $batchId; + protected $datafeedStatusType = 'Google_Service_ShoppingContent_DatafeedStatus'; + protected $datafeedStatusDataType = ''; + protected $errorsType = 'Google_Service_ShoppingContent_Errors'; + protected $errorsDataType = ''; + + public function setBatchId($batchId) + { + $this->batchId = $batchId; + } + + public function getBatchId() + { + return $this->batchId; + } + + public function setDatafeedStatus(Google_Service_ShoppingContent_DatafeedStatus $datafeedStatus) + { + $this->datafeedStatus = $datafeedStatus; + } + + public function getDatafeedStatus() + { + return $this->datafeedStatus; + } + + public function setErrors(Google_Service_ShoppingContent_Errors $errors) + { + $this->errors = $errors; + } + + public function getErrors() + { + return $this->errors; + } +} + +class Google_Service_ShoppingContent_DatafeedstatusesListResponse extends Google_Collection +{ + public $kind; + protected $resourcesType = 'Google_Service_ShoppingContent_DatafeedStatus'; + protected $resourcesDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setResources($resources) + { + $this->resources = $resources; + } + + public function getResources() + { + return $this->resources; + } +} + +class Google_Service_ShoppingContent_Error extends Google_Model +{ + public $domain; + public $message; + public $reason; + + public function setDomain($domain) + { + $this->domain = $domain; + } + + public function getDomain() + { + return $this->domain; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } + + public function setReason($reason) + { + $this->reason = $reason; + } + + public function getReason() + { + return $this->reason; + } +} + +class Google_Service_ShoppingContent_Errors extends Google_Collection +{ + public $code; + protected $errorsType = 'Google_Service_ShoppingContent_Error'; + protected $errorsDataType = 'array'; + public $message; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setErrors($errors) + { + $this->errors = $errors; + } + + public function getErrors() + { + return $this->errors; + } + + public function setMessage($message) + { + $this->message = $message; + } + + public function getMessage() + { + return $this->message; + } +} + +class Google_Service_ShoppingContent_Inventory extends Google_Model +{ + public $availability; + public $kind; + protected $priceType = 'Google_Service_ShoppingContent_Price'; + protected $priceDataType = ''; + public $quantity; + protected $salePriceType = 'Google_Service_ShoppingContent_Price'; + protected $salePriceDataType = ''; + public $salePriceEffectiveDate; + + public function setAvailability($availability) + { + $this->availability = $availability; + } + + public function getAvailability() + { + return $this->availability; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPrice(Google_Service_ShoppingContent_Price $price) + { + $this->price = $price; + } + + public function getPrice() + { + return $this->price; + } + + public function setQuantity($quantity) + { + $this->quantity = $quantity; + } + + public function getQuantity() + { + return $this->quantity; + } + + public function setSalePrice(Google_Service_ShoppingContent_Price $salePrice) + { + $this->salePrice = $salePrice; + } + + public function getSalePrice() + { + return $this->salePrice; + } + + public function setSalePriceEffectiveDate($salePriceEffectiveDate) + { + $this->salePriceEffectiveDate = $salePriceEffectiveDate; + } + + public function getSalePriceEffectiveDate() + { + return $this->salePriceEffectiveDate; + } +} + +class Google_Service_ShoppingContent_InventoryCustomBatchRequest extends Google_Collection +{ + protected $entriesType = 'Google_Service_ShoppingContent_InventoryCustomBatchRequestEntry'; + protected $entriesDataType = 'array'; + + public function setEntries($entries) + { + $this->entries = $entries; + } + + public function getEntries() + { + return $this->entries; + } +} + +class Google_Service_ShoppingContent_InventoryCustomBatchRequestEntry extends Google_Model +{ + public $batchId; + protected $inventoryType = 'Google_Service_ShoppingContent_Inventory'; + protected $inventoryDataType = ''; + public $merchantId; + public $productId; + public $storeCode; + + public function setBatchId($batchId) + { + $this->batchId = $batchId; + } + + public function getBatchId() + { + return $this->batchId; + } + + public function setInventory(Google_Service_ShoppingContent_Inventory $inventory) + { + $this->inventory = $inventory; + } + + public function getInventory() + { + return $this->inventory; + } + + public function setMerchantId($merchantId) + { + $this->merchantId = $merchantId; + } + + public function getMerchantId() + { + return $this->merchantId; + } + + public function setProductId($productId) + { + $this->productId = $productId; + } + + public function getProductId() + { + return $this->productId; + } + + public function setStoreCode($storeCode) + { + $this->storeCode = $storeCode; + } + + public function getStoreCode() + { + return $this->storeCode; + } +} + +class Google_Service_ShoppingContent_InventoryCustomBatchResponse extends Google_Collection +{ + protected $entriesType = 'Google_Service_ShoppingContent_InventoryCustomBatchResponseEntry'; + protected $entriesDataType = 'array'; + public $kind; + + public function setEntries($entries) + { + $this->entries = $entries; + } + + public function getEntries() + { + return $this->entries; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_ShoppingContent_InventoryCustomBatchResponseEntry extends Google_Model +{ + public $batchId; + protected $errorsType = 'Google_Service_ShoppingContent_Errors'; + protected $errorsDataType = ''; + public $kind; + + public function setBatchId($batchId) + { + $this->batchId = $batchId; + } + + public function getBatchId() + { + return $this->batchId; + } + + public function setErrors(Google_Service_ShoppingContent_Errors $errors) + { + $this->errors = $errors; + } + + public function getErrors() + { + return $this->errors; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_ShoppingContent_InventorySetRequest extends Google_Model +{ + public $availability; + protected $priceType = 'Google_Service_ShoppingContent_Price'; + protected $priceDataType = ''; + public $quantity; + protected $salePriceType = 'Google_Service_ShoppingContent_Price'; + protected $salePriceDataType = ''; + public $salePriceEffectiveDate; + + public function setAvailability($availability) + { + $this->availability = $availability; + } + + public function getAvailability() + { + return $this->availability; + } + + public function setPrice(Google_Service_ShoppingContent_Price $price) + { + $this->price = $price; + } + + public function getPrice() + { + return $this->price; + } + + public function setQuantity($quantity) + { + $this->quantity = $quantity; + } + + public function getQuantity() + { + return $this->quantity; + } + + public function setSalePrice(Google_Service_ShoppingContent_Price $salePrice) + { + $this->salePrice = $salePrice; + } + + public function getSalePrice() + { + return $this->salePrice; + } + + public function setSalePriceEffectiveDate($salePriceEffectiveDate) + { + $this->salePriceEffectiveDate = $salePriceEffectiveDate; + } + + public function getSalePriceEffectiveDate() + { + return $this->salePriceEffectiveDate; + } +} + +class Google_Service_ShoppingContent_InventorySetResponse extends Google_Model +{ + public $kind; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_ShoppingContent_LoyaltyPoints extends Google_Model +{ + public $name; + public $pointsValue; + public $ratio; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setPointsValue($pointsValue) + { + $this->pointsValue = $pointsValue; + } + + public function getPointsValue() + { + return $this->pointsValue; + } + + public function setRatio($ratio) + { + $this->ratio = $ratio; + } + + public function getRatio() + { + return $this->ratio; + } +} + +class Google_Service_ShoppingContent_Price extends Google_Model +{ + public $currency; + public $value; + + public function setCurrency($currency) + { + $this->currency = $currency; + } + + public function getCurrency() + { + return $this->currency; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_ShoppingContent_Product extends Google_Collection +{ + public $additionalImageLinks; + public $adult; + public $adwordsGrouping; + public $adwordsLabels; + public $adwordsRedirect; + public $ageGroup; + public $availability; + public $availabilityDate; + public $brand; + public $channel; + public $color; + public $condition; + public $contentLanguage; + protected $customAttributesType = 'Google_Service_ShoppingContent_ProductCustomAttribute'; + protected $customAttributesDataType = 'array'; + protected $customGroupsType = 'Google_Service_ShoppingContent_ProductCustomGroup'; + protected $customGroupsDataType = 'array'; + public $customLabel0; + public $customLabel1; + public $customLabel2; + public $customLabel3; + public $customLabel4; + public $description; + protected $destinationsType = 'Google_Service_ShoppingContent_ProductDestination'; + protected $destinationsDataType = 'array'; + public $energyEfficiencyClass; + public $expirationDate; + public $gender; + public $googleProductCategory; + public $gtin; + public $id; + public $identifierExists; + public $imageLink; + protected $installmentType = 'Google_Service_ShoppingContent_ProductInstallment'; + protected $installmentDataType = ''; + public $isBundle; + public $itemGroupId; + public $kind; + public $link; + protected $loyaltyPointsType = 'Google_Service_ShoppingContent_LoyaltyPoints'; + protected $loyaltyPointsDataType = ''; + public $material; + public $merchantMultipackQuantity; + public $mobileLink; + public $mpn; + public $offerId; + public $onlineOnly; + public $pattern; + protected $priceType = 'Google_Service_ShoppingContent_Price'; + protected $priceDataType = ''; + public $productType; + protected $salePriceType = 'Google_Service_ShoppingContent_Price'; + protected $salePriceDataType = ''; + public $salePriceEffectiveDate; + protected $shippingType = 'Google_Service_ShoppingContent_ProductShipping'; + protected $shippingDataType = 'array'; + protected $shippingWeightType = 'Google_Service_ShoppingContent_ProductShippingWeight'; + protected $shippingWeightDataType = ''; + public $sizeSystem; + public $sizeType; + public $sizes; + public $targetCountry; + protected $taxesType = 'Google_Service_ShoppingContent_ProductTax'; + protected $taxesDataType = 'array'; + public $title; + public $unitPricingBaseMeasure; + public $unitPricingMeasure; + public $validatedDestinations; + protected $warningsType = 'Google_Service_ShoppingContent_Error'; + protected $warningsDataType = 'array'; + + public function setAdditionalImageLinks($additionalImageLinks) + { + $this->additionalImageLinks = $additionalImageLinks; + } + + public function getAdditionalImageLinks() + { + return $this->additionalImageLinks; + } + + public function setAdult($adult) + { + $this->adult = $adult; + } + + public function getAdult() + { + return $this->adult; + } + + public function setAdwordsGrouping($adwordsGrouping) + { + $this->adwordsGrouping = $adwordsGrouping; + } + + public function getAdwordsGrouping() + { + return $this->adwordsGrouping; + } + + public function setAdwordsLabels($adwordsLabels) + { + $this->adwordsLabels = $adwordsLabels; + } + + public function getAdwordsLabels() + { + return $this->adwordsLabels; + } + + public function setAdwordsRedirect($adwordsRedirect) + { + $this->adwordsRedirect = $adwordsRedirect; + } + + public function getAdwordsRedirect() + { + return $this->adwordsRedirect; + } + + public function setAgeGroup($ageGroup) + { + $this->ageGroup = $ageGroup; + } + + public function getAgeGroup() + { + return $this->ageGroup; + } + + public function setAvailability($availability) + { + $this->availability = $availability; + } + + public function getAvailability() + { + return $this->availability; + } + + public function setAvailabilityDate($availabilityDate) + { + $this->availabilityDate = $availabilityDate; + } + + public function getAvailabilityDate() + { + return $this->availabilityDate; + } + + public function setBrand($brand) + { + $this->brand = $brand; + } + + public function getBrand() + { + return $this->brand; + } + + public function setChannel($channel) + { + $this->channel = $channel; + } + + public function getChannel() + { + return $this->channel; + } + + public function setColor($color) + { + $this->color = $color; + } + + public function getColor() + { + return $this->color; + } + + public function setCondition($condition) + { + $this->condition = $condition; + } + + public function getCondition() + { + return $this->condition; + } + + public function setContentLanguage($contentLanguage) + { + $this->contentLanguage = $contentLanguage; + } + + public function getContentLanguage() + { + return $this->contentLanguage; + } + + public function setCustomAttributes($customAttributes) + { + $this->customAttributes = $customAttributes; + } + + public function getCustomAttributes() + { + return $this->customAttributes; + } + + public function setCustomGroups($customGroups) + { + $this->customGroups = $customGroups; + } + + public function getCustomGroups() + { + return $this->customGroups; + } + + public function setCustomLabel0($customLabel0) + { + $this->customLabel0 = $customLabel0; + } + + public function getCustomLabel0() + { + return $this->customLabel0; + } + + public function setCustomLabel1($customLabel1) + { + $this->customLabel1 = $customLabel1; + } + + public function getCustomLabel1() + { + return $this->customLabel1; + } + + public function setCustomLabel2($customLabel2) + { + $this->customLabel2 = $customLabel2; + } + + public function getCustomLabel2() + { + return $this->customLabel2; + } + + public function setCustomLabel3($customLabel3) + { + $this->customLabel3 = $customLabel3; + } + + public function getCustomLabel3() + { + return $this->customLabel3; + } + + public function setCustomLabel4($customLabel4) + { + $this->customLabel4 = $customLabel4; + } + + public function getCustomLabel4() + { + return $this->customLabel4; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setDestinations($destinations) + { + $this->destinations = $destinations; + } + + public function getDestinations() + { + return $this->destinations; + } + + public function setEnergyEfficiencyClass($energyEfficiencyClass) + { + $this->energyEfficiencyClass = $energyEfficiencyClass; + } + + public function getEnergyEfficiencyClass() + { + return $this->energyEfficiencyClass; + } + + public function setExpirationDate($expirationDate) + { + $this->expirationDate = $expirationDate; + } + + public function getExpirationDate() + { + return $this->expirationDate; + } + + public function setGender($gender) + { + $this->gender = $gender; + } + + public function getGender() + { + return $this->gender; + } + + public function setGoogleProductCategory($googleProductCategory) + { + $this->googleProductCategory = $googleProductCategory; + } + + public function getGoogleProductCategory() + { + return $this->googleProductCategory; + } + + public function setGtin($gtin) + { + $this->gtin = $gtin; + } + + public function getGtin() + { + return $this->gtin; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setIdentifierExists($identifierExists) + { + $this->identifierExists = $identifierExists; + } + + public function getIdentifierExists() + { + return $this->identifierExists; + } + + public function setImageLink($imageLink) + { + $this->imageLink = $imageLink; + } + + public function getImageLink() + { + return $this->imageLink; + } + + public function setInstallment(Google_Service_ShoppingContent_ProductInstallment $installment) + { + $this->installment = $installment; + } + + public function getInstallment() + { + return $this->installment; + } + + public function setIsBundle($isBundle) + { + $this->isBundle = $isBundle; + } + + public function getIsBundle() + { + return $this->isBundle; + } + + public function setItemGroupId($itemGroupId) + { + $this->itemGroupId = $itemGroupId; + } + + public function getItemGroupId() + { + return $this->itemGroupId; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLink($link) + { + $this->link = $link; + } + + public function getLink() + { + return $this->link; + } + + public function setLoyaltyPoints(Google_Service_ShoppingContent_LoyaltyPoints $loyaltyPoints) + { + $this->loyaltyPoints = $loyaltyPoints; + } + + public function getLoyaltyPoints() + { + return $this->loyaltyPoints; + } + + public function setMaterial($material) + { + $this->material = $material; + } + + public function getMaterial() + { + return $this->material; + } + + public function setMerchantMultipackQuantity($merchantMultipackQuantity) + { + $this->merchantMultipackQuantity = $merchantMultipackQuantity; + } + + public function getMerchantMultipackQuantity() + { + return $this->merchantMultipackQuantity; + } + + public function setMobileLink($mobileLink) + { + $this->mobileLink = $mobileLink; + } + + public function getMobileLink() + { + return $this->mobileLink; + } + + public function setMpn($mpn) + { + $this->mpn = $mpn; + } + + public function getMpn() + { + return $this->mpn; + } + + public function setOfferId($offerId) + { + $this->offerId = $offerId; + } + + public function getOfferId() + { + return $this->offerId; + } + + public function setOnlineOnly($onlineOnly) + { + $this->onlineOnly = $onlineOnly; + } + + public function getOnlineOnly() + { + return $this->onlineOnly; + } + + public function setPattern($pattern) + { + $this->pattern = $pattern; + } + + public function getPattern() + { + return $this->pattern; + } + + public function setPrice(Google_Service_ShoppingContent_Price $price) + { + $this->price = $price; + } + + public function getPrice() + { + return $this->price; + } + + public function setProductType($productType) + { + $this->productType = $productType; + } + + public function getProductType() + { + return $this->productType; + } + + public function setSalePrice(Google_Service_ShoppingContent_Price $salePrice) + { + $this->salePrice = $salePrice; + } + + public function getSalePrice() + { + return $this->salePrice; + } + + public function setSalePriceEffectiveDate($salePriceEffectiveDate) + { + $this->salePriceEffectiveDate = $salePriceEffectiveDate; + } + + public function getSalePriceEffectiveDate() + { + return $this->salePriceEffectiveDate; + } + + public function setShipping($shipping) + { + $this->shipping = $shipping; + } + + public function getShipping() + { + return $this->shipping; + } + + public function setShippingWeight(Google_Service_ShoppingContent_ProductShippingWeight $shippingWeight) + { + $this->shippingWeight = $shippingWeight; + } + + public function getShippingWeight() + { + return $this->shippingWeight; + } + + public function setSizeSystem($sizeSystem) + { + $this->sizeSystem = $sizeSystem; + } + + public function getSizeSystem() + { + return $this->sizeSystem; + } + + public function setSizeType($sizeType) + { + $this->sizeType = $sizeType; + } + + public function getSizeType() + { + return $this->sizeType; + } + + public function setSizes($sizes) + { + $this->sizes = $sizes; + } + + public function getSizes() + { + return $this->sizes; + } + + public function setTargetCountry($targetCountry) + { + $this->targetCountry = $targetCountry; + } + + public function getTargetCountry() + { + return $this->targetCountry; + } + + public function setTaxes($taxes) + { + $this->taxes = $taxes; + } + + public function getTaxes() + { + return $this->taxes; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setUnitPricingBaseMeasure($unitPricingBaseMeasure) + { + $this->unitPricingBaseMeasure = $unitPricingBaseMeasure; + } + + public function getUnitPricingBaseMeasure() + { + return $this->unitPricingBaseMeasure; + } + + public function setUnitPricingMeasure($unitPricingMeasure) + { + $this->unitPricingMeasure = $unitPricingMeasure; + } + + public function getUnitPricingMeasure() + { + return $this->unitPricingMeasure; + } + + public function setValidatedDestinations($validatedDestinations) + { + $this->validatedDestinations = $validatedDestinations; + } + + public function getValidatedDestinations() + { + return $this->validatedDestinations; + } + + public function setWarnings($warnings) + { + $this->warnings = $warnings; + } + + public function getWarnings() + { + return $this->warnings; + } +} + +class Google_Service_ShoppingContent_ProductCustomAttribute extends Google_Model +{ + public $name; + public $type; + public $unit; + public $value; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setUnit($unit) + { + $this->unit = $unit; + } + + public function getUnit() + { + return $this->unit; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_ShoppingContent_ProductCustomGroup extends Google_Collection +{ + protected $attributesType = 'Google_Service_ShoppingContent_ProductCustomAttribute'; + protected $attributesDataType = 'array'; + public $name; + + public function setAttributes($attributes) + { + $this->attributes = $attributes; + } + + public function getAttributes() + { + return $this->attributes; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_ShoppingContent_ProductDestination extends Google_Model +{ + public $destinationName; + public $intention; + + public function setDestinationName($destinationName) + { + $this->destinationName = $destinationName; + } + + public function getDestinationName() + { + return $this->destinationName; + } + + public function setIntention($intention) + { + $this->intention = $intention; + } + + public function getIntention() + { + return $this->intention; + } +} + +class Google_Service_ShoppingContent_ProductInstallment extends Google_Model +{ + protected $amountType = 'Google_Service_ShoppingContent_Price'; + protected $amountDataType = ''; + public $months; + + public function setAmount(Google_Service_ShoppingContent_Price $amount) + { + $this->amount = $amount; + } + + public function getAmount() + { + return $this->amount; + } + + public function setMonths($months) + { + $this->months = $months; + } + + public function getMonths() + { + return $this->months; + } +} + +class Google_Service_ShoppingContent_ProductShipping extends Google_Model +{ + public $country; + protected $priceType = 'Google_Service_ShoppingContent_Price'; + protected $priceDataType = ''; + public $region; + public $service; + + public function setCountry($country) + { + $this->country = $country; + } + + public function getCountry() + { + return $this->country; + } + + public function setPrice(Google_Service_ShoppingContent_Price $price) + { + $this->price = $price; + } + + public function getPrice() + { + return $this->price; + } + + public function setRegion($region) + { + $this->region = $region; + } + + public function getRegion() + { + return $this->region; + } + + public function setService($service) + { + $this->service = $service; + } + + public function getService() + { + return $this->service; + } +} + +class Google_Service_ShoppingContent_ProductShippingWeight extends Google_Model +{ + public $unit; + public $value; + + public function setUnit($unit) + { + $this->unit = $unit; + } + + public function getUnit() + { + return $this->unit; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_ShoppingContent_ProductStatus extends Google_Collection +{ + protected $dataQualityIssuesType = 'Google_Service_ShoppingContent_ProductStatusDataQualityIssue'; + protected $dataQualityIssuesDataType = 'array'; + protected $destinationStatusesType = 'Google_Service_ShoppingContent_ProductStatusDestinationStatus'; + protected $destinationStatusesDataType = 'array'; + public $kind; + public $link; + public $productId; + public $title; + + public function setDataQualityIssues($dataQualityIssues) + { + $this->dataQualityIssues = $dataQualityIssues; + } + + public function getDataQualityIssues() + { + return $this->dataQualityIssues; + } + + public function setDestinationStatuses($destinationStatuses) + { + $this->destinationStatuses = $destinationStatuses; + } + + public function getDestinationStatuses() + { + return $this->destinationStatuses; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLink($link) + { + $this->link = $link; + } + + public function getLink() + { + return $this->link; + } + + public function setProductId($productId) + { + $this->productId = $productId; + } + + public function getProductId() + { + return $this->productId; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_ShoppingContent_ProductStatusDataQualityIssue extends Google_Model +{ + public $detail; + public $fetchStatus; + public $id; + public $location; + public $timestamp; + public $valueOnLandingPage; + public $valueProvided; + + public function setDetail($detail) + { + $this->detail = $detail; + } + + public function getDetail() + { + return $this->detail; + } + + public function setFetchStatus($fetchStatus) + { + $this->fetchStatus = $fetchStatus; + } + + public function getFetchStatus() + { + return $this->fetchStatus; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setLocation($location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setTimestamp($timestamp) + { + $this->timestamp = $timestamp; + } + + public function getTimestamp() + { + return $this->timestamp; + } + + public function setValueOnLandingPage($valueOnLandingPage) + { + $this->valueOnLandingPage = $valueOnLandingPage; + } + + public function getValueOnLandingPage() + { + return $this->valueOnLandingPage; + } + + public function setValueProvided($valueProvided) + { + $this->valueProvided = $valueProvided; + } + + public function getValueProvided() + { + return $this->valueProvided; + } +} + +class Google_Service_ShoppingContent_ProductStatusDestinationStatus extends Google_Model +{ + public $approvalStatus; + public $destination; + public $intention; + + public function setApprovalStatus($approvalStatus) + { + $this->approvalStatus = $approvalStatus; + } + + public function getApprovalStatus() + { + return $this->approvalStatus; + } + + public function setDestination($destination) + { + $this->destination = $destination; + } + + public function getDestination() + { + return $this->destination; + } + + public function setIntention($intention) + { + $this->intention = $intention; + } + + public function getIntention() + { + return $this->intention; + } +} + +class Google_Service_ShoppingContent_ProductTax extends Google_Model +{ + public $country; + public $rate; + public $region; + public $taxShip; + + public function setCountry($country) + { + $this->country = $country; + } + + public function getCountry() + { + return $this->country; + } + + public function setRate($rate) + { + $this->rate = $rate; + } + + public function getRate() + { + return $this->rate; + } + + public function setRegion($region) + { + $this->region = $region; + } + + public function getRegion() + { + return $this->region; + } + + public function setTaxShip($taxShip) + { + $this->taxShip = $taxShip; + } + + public function getTaxShip() + { + return $this->taxShip; + } +} + +class Google_Service_ShoppingContent_ProductsCustomBatchRequest extends Google_Collection +{ + protected $entriesType = 'Google_Service_ShoppingContent_ProductsCustomBatchRequestEntry'; + protected $entriesDataType = 'array'; + + public function setEntries($entries) + { + $this->entries = $entries; + } + + public function getEntries() + { + return $this->entries; + } +} + +class Google_Service_ShoppingContent_ProductsCustomBatchRequestEntry extends Google_Model +{ + public $batchId; + public $merchantId; + public $method; + protected $productType = 'Google_Service_ShoppingContent_Product'; + protected $productDataType = ''; + public $productId; + + public function setBatchId($batchId) + { + $this->batchId = $batchId; + } + + public function getBatchId() + { + return $this->batchId; + } + + public function setMerchantId($merchantId) + { + $this->merchantId = $merchantId; + } + + public function getMerchantId() + { + return $this->merchantId; + } + + public function setMethod($method) + { + $this->method = $method; + } + + public function getMethod() + { + return $this->method; + } + + public function setProduct(Google_Service_ShoppingContent_Product $product) + { + $this->product = $product; + } + + public function getProduct() + { + return $this->product; + } + + public function setProductId($productId) + { + $this->productId = $productId; + } + + public function getProductId() + { + return $this->productId; + } +} + +class Google_Service_ShoppingContent_ProductsCustomBatchResponse extends Google_Collection +{ + protected $entriesType = 'Google_Service_ShoppingContent_ProductsCustomBatchResponseEntry'; + protected $entriesDataType = 'array'; + public $kind; + + public function setEntries($entries) + { + $this->entries = $entries; + } + + public function getEntries() + { + return $this->entries; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_ShoppingContent_ProductsCustomBatchResponseEntry extends Google_Model +{ + public $batchId; + protected $errorsType = 'Google_Service_ShoppingContent_Errors'; + protected $errorsDataType = ''; + public $kind; + protected $productType = 'Google_Service_ShoppingContent_Product'; + protected $productDataType = ''; + + public function setBatchId($batchId) + { + $this->batchId = $batchId; + } + + public function getBatchId() + { + return $this->batchId; + } + + public function setErrors(Google_Service_ShoppingContent_Errors $errors) + { + $this->errors = $errors; + } + + public function getErrors() + { + return $this->errors; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setProduct(Google_Service_ShoppingContent_Product $product) + { + $this->product = $product; + } + + public function getProduct() + { + return $this->product; + } +} + +class Google_Service_ShoppingContent_ProductsListResponse extends Google_Collection +{ + public $kind; + public $nextPageToken; + protected $resourcesType = 'Google_Service_ShoppingContent_Product'; + protected $resourcesDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setResources($resources) + { + $this->resources = $resources; + } + + public function getResources() + { + return $this->resources; + } +} + +class Google_Service_ShoppingContent_ProductstatusesCustomBatchRequest extends Google_Collection +{ + protected $entriesType = 'Google_Service_ShoppingContent_ProductstatusesCustomBatchRequestEntry'; + protected $entriesDataType = 'array'; + + public function setEntries($entries) + { + $this->entries = $entries; + } + + public function getEntries() + { + return $this->entries; + } +} + +class Google_Service_ShoppingContent_ProductstatusesCustomBatchRequestEntry extends Google_Model +{ + public $batchId; + public $merchantId; + public $method; + public $productId; + + public function setBatchId($batchId) + { + $this->batchId = $batchId; + } + + public function getBatchId() + { + return $this->batchId; + } + + public function setMerchantId($merchantId) + { + $this->merchantId = $merchantId; + } + + public function getMerchantId() + { + return $this->merchantId; + } + + public function setMethod($method) + { + $this->method = $method; + } + + public function getMethod() + { + return $this->method; + } + + public function setProductId($productId) + { + $this->productId = $productId; + } + + public function getProductId() + { + return $this->productId; + } +} + +class Google_Service_ShoppingContent_ProductstatusesCustomBatchResponse extends Google_Collection +{ + protected $entriesType = 'Google_Service_ShoppingContent_ProductstatusesCustomBatchResponseEntry'; + protected $entriesDataType = 'array'; + public $kind; + + public function setEntries($entries) + { + $this->entries = $entries; + } + + public function getEntries() + { + return $this->entries; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_ShoppingContent_ProductstatusesCustomBatchResponseEntry extends Google_Model +{ + public $batchId; + protected $errorsType = 'Google_Service_ShoppingContent_Errors'; + protected $errorsDataType = ''; + public $kind; + protected $productStatusType = 'Google_Service_ShoppingContent_ProductStatus'; + protected $productStatusDataType = ''; + + public function setBatchId($batchId) + { + $this->batchId = $batchId; + } + + public function getBatchId() + { + return $this->batchId; + } + + public function setErrors(Google_Service_ShoppingContent_Errors $errors) + { + $this->errors = $errors; + } + + public function getErrors() + { + return $this->errors; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setProductStatus(Google_Service_ShoppingContent_ProductStatus $productStatus) + { + $this->productStatus = $productStatus; + } + + public function getProductStatus() + { + return $this->productStatus; + } +} + +class Google_Service_ShoppingContent_ProductstatusesListResponse extends Google_Collection +{ + public $kind; + public $nextPageToken; + protected $resourcesType = 'Google_Service_ShoppingContent_ProductStatus'; + protected $resourcesDataType = 'array'; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setResources($resources) + { + $this->resources = $resources; + } + + public function getResources() + { + return $this->resources; + } +} diff --git a/oauth/Google/Service/SiteVerification.php b/oauth/Google/Service/SiteVerification.php new file mode 100644 index 0000000..59beccb --- /dev/null +++ b/oauth/Google/Service/SiteVerification.php @@ -0,0 +1,399 @@ + + * Lets you programatically verify ownership of websites or domains with Google. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_SiteVerification extends Google_Service +{ + /** Manage the list of sites and domains you control. */ + const SITEVERIFICATION = "https://www.googleapis.com/auth/siteverification"; + /** Manage your new site verifications with Google. */ + const SITEVERIFICATION_VERIFY_ONLY = "https://www.googleapis.com/auth/siteverification.verify_only"; + + public $webResource; + + + /** + * Constructs the internal representation of the SiteVerification service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'siteVerification/v1/'; + $this->version = 'v1'; + $this->serviceName = 'siteVerification'; + + $this->webResource = new Google_Service_SiteVerification_WebResource_Resource( + $this, + $this->serviceName, + 'webResource', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'webResource/{id}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'webResource/{id}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'getToken' => array( + 'path' => 'token', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'insert' => array( + 'path' => 'webResource', + 'httpMethod' => 'POST', + 'parameters' => array( + 'verificationMethod' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'webResource', + 'httpMethod' => 'GET', + 'parameters' => array(), + ),'patch' => array( + 'path' => 'webResource/{id}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'webResource/{id}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'id' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "webResource" collection of methods. + * Typical usage is: + * + * $siteVerificationService = new Google_Service_SiteVerification(...); + * $webResource = $siteVerificationService->webResource; + * + */ +class Google_Service_SiteVerification_WebResource_Resource extends Google_Service_Resource +{ + + /** + * Relinquish ownership of a website or domain. (webResource.delete) + * + * @param string $id + * The id of a verified site or domain. + * @param array $optParams Optional parameters. + */ + public function delete($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Get the most current data for a website or domain. (webResource.get) + * + * @param string $id + * The id of a verified site or domain. + * @param array $optParams Optional parameters. + * @return Google_Service_SiteVerification_SiteVerificationWebResourceResource + */ + public function get($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_SiteVerification_SiteVerificationWebResourceResource"); + } + /** + * Get a verification token for placing on a website or domain. + * (webResource.getToken) + * + * @param Google_SiteVerificationWebResourceGettokenRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_SiteVerification_SiteVerificationWebResourceGettokenResponse + */ + public function getToken(Google_Service_SiteVerification_SiteVerificationWebResourceGettokenRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('getToken', array($params), "Google_Service_SiteVerification_SiteVerificationWebResourceGettokenResponse"); + } + /** + * Attempt verification of a website or domain. (webResource.insert) + * + * @param string $verificationMethod + * The method to use for verifying a site or domain. + * @param Google_SiteVerificationWebResourceResource $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_SiteVerification_SiteVerificationWebResourceResource + */ + public function insert($verificationMethod, Google_Service_SiteVerification_SiteVerificationWebResourceResource $postBody, $optParams = array()) + { + $params = array('verificationMethod' => $verificationMethod, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_SiteVerification_SiteVerificationWebResourceResource"); + } + /** + * Get the list of your verified websites and domains. + * (webResource.listWebResource) + * + * @param array $optParams Optional parameters. + * @return Google_Service_SiteVerification_SiteVerificationWebResourceListResponse + */ + public function listWebResource($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_SiteVerification_SiteVerificationWebResourceListResponse"); + } + /** + * Modify the list of owners for your website or domain. This method supports + * patch semantics. (webResource.patch) + * + * @param string $id + * The id of a verified site or domain. + * @param Google_SiteVerificationWebResourceResource $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_SiteVerification_SiteVerificationWebResourceResource + */ + public function patch($id, Google_Service_SiteVerification_SiteVerificationWebResourceResource $postBody, $optParams = array()) + { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_SiteVerification_SiteVerificationWebResourceResource"); + } + /** + * Modify the list of owners for your website or domain. (webResource.update) + * + * @param string $id + * The id of a verified site or domain. + * @param Google_SiteVerificationWebResourceResource $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_SiteVerification_SiteVerificationWebResourceResource + */ + public function update($id, Google_Service_SiteVerification_SiteVerificationWebResourceResource $postBody, $optParams = array()) + { + $params = array('id' => $id, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_SiteVerification_SiteVerificationWebResourceResource"); + } +} + + + + +class Google_Service_SiteVerification_SiteVerificationWebResourceGettokenRequest extends Google_Model +{ + protected $siteType = 'Google_Service_SiteVerification_SiteVerificationWebResourceGettokenRequestSite'; + protected $siteDataType = ''; + public $verificationMethod; + + public function setSite(Google_Service_SiteVerification_SiteVerificationWebResourceGettokenRequestSite $site) + { + $this->site = $site; + } + + public function getSite() + { + return $this->site; + } + + public function setVerificationMethod($verificationMethod) + { + $this->verificationMethod = $verificationMethod; + } + + public function getVerificationMethod() + { + return $this->verificationMethod; + } +} + +class Google_Service_SiteVerification_SiteVerificationWebResourceGettokenRequestSite extends Google_Model +{ + public $identifier; + public $type; + + public function setIdentifier($identifier) + { + $this->identifier = $identifier; + } + + public function getIdentifier() + { + return $this->identifier; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_SiteVerification_SiteVerificationWebResourceGettokenResponse extends Google_Model +{ + public $method; + public $token; + + public function setMethod($method) + { + $this->method = $method; + } + + public function getMethod() + { + return $this->method; + } + + public function setToken($token) + { + $this->token = $token; + } + + public function getToken() + { + return $this->token; + } +} + +class Google_Service_SiteVerification_SiteVerificationWebResourceListResponse extends Google_Collection +{ + protected $itemsType = 'Google_Service_SiteVerification_SiteVerificationWebResourceResource'; + protected $itemsDataType = 'array'; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } +} + +class Google_Service_SiteVerification_SiteVerificationWebResourceResource extends Google_Collection +{ + public $id; + public $owners; + protected $siteType = 'Google_Service_SiteVerification_SiteVerificationWebResourceResourceSite'; + protected $siteDataType = ''; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setOwners($owners) + { + $this->owners = $owners; + } + + public function getOwners() + { + return $this->owners; + } + + public function setSite(Google_Service_SiteVerification_SiteVerificationWebResourceResourceSite $site) + { + $this->site = $site; + } + + public function getSite() + { + return $this->site; + } +} + +class Google_Service_SiteVerification_SiteVerificationWebResourceResourceSite extends Google_Model +{ + public $identifier; + public $type; + + public function setIdentifier($identifier) + { + $this->identifier = $identifier; + } + + public function getIdentifier() + { + return $this->identifier; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} diff --git a/oauth/Google/Service/Spectrum.php b/oauth/Google/Service/Spectrum.php new file mode 100644 index 0000000..21e1005 --- /dev/null +++ b/oauth/Google/Service/Spectrum.php @@ -0,0 +1,1873 @@ + + * API for spectrum-management functions. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Spectrum extends Google_Service +{ + + + public $paws; + + + /** + * Constructs the internal representation of the Spectrum service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'spectrum/v1explorer/paws/'; + $this->version = 'v1explorer'; + $this->serviceName = 'spectrum'; + + $this->paws = new Google_Service_Spectrum_Paws_Resource( + $this, + $this->serviceName, + 'paws', + array( + 'methods' => array( + 'getSpectrum' => array( + 'path' => 'getSpectrum', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'getSpectrumBatch' => array( + 'path' => 'getSpectrumBatch', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'init' => array( + 'path' => 'init', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'notifySpectrumUse' => array( + 'path' => 'notifySpectrumUse', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'register' => array( + 'path' => 'register', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'verifyDevice' => array( + 'path' => 'verifyDevice', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + } +} + + +/** + * The "paws" collection of methods. + * Typical usage is: + * + * $spectrumService = new Google_Service_Spectrum(...); + * $paws = $spectrumService->paws; + * + */ +class Google_Service_Spectrum_Paws_Resource extends Google_Service_Resource +{ + + /** + * Requests information about the available spectrum for a device at a location. + * Requests from a fixed-mode device must include owner information so the + * device can be registered with the database. (paws.getSpectrum) + * + * @param Google_PawsGetSpectrumRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Spectrum_PawsGetSpectrumResponse + */ + public function getSpectrum(Google_Service_Spectrum_PawsGetSpectrumRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('getSpectrum', array($params), "Google_Service_Spectrum_PawsGetSpectrumResponse"); + } + /** + * The Google Spectrum Database does not support batch requests, so this method + * always yields an UNIMPLEMENTED error. (paws.getSpectrumBatch) + * + * @param Google_PawsGetSpectrumBatchRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Spectrum_PawsGetSpectrumBatchResponse + */ + public function getSpectrumBatch(Google_Service_Spectrum_PawsGetSpectrumBatchRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('getSpectrumBatch', array($params), "Google_Service_Spectrum_PawsGetSpectrumBatchResponse"); + } + /** + * Initializes the connection between a white space device and the database. + * (paws.init) + * + * @param Google_PawsInitRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Spectrum_PawsInitResponse + */ + public function init(Google_Service_Spectrum_PawsInitRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('init', array($params), "Google_Service_Spectrum_PawsInitResponse"); + } + /** + * Notifies the database that the device has selected certain frequency ranges + * for transmission. Only to be invoked when required by the regulator. The + * Google Spectrum Database does not operate in domains that require + * notification, so this always yields an UNIMPLEMENTED error. + * (paws.notifySpectrumUse) + * + * @param Google_PawsNotifySpectrumUseRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Spectrum_PawsNotifySpectrumUseResponse + */ + public function notifySpectrumUse(Google_Service_Spectrum_PawsNotifySpectrumUseRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('notifySpectrumUse', array($params), "Google_Service_Spectrum_PawsNotifySpectrumUseResponse"); + } + /** + * The Google Spectrum Database implements registration in the getSpectrum + * method. As such this always returns an UNIMPLEMENTED error. (paws.register) + * + * @param Google_PawsRegisterRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Spectrum_PawsRegisterResponse + */ + public function register(Google_Service_Spectrum_PawsRegisterRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('register', array($params), "Google_Service_Spectrum_PawsRegisterResponse"); + } + /** + * Validates a device for white space use in accordance with regulatory rules. + * The Google Spectrum Database does not support master/slave configurations, so + * this always yields an UNIMPLEMENTED error. (paws.verifyDevice) + * + * @param Google_PawsVerifyDeviceRequest $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Spectrum_PawsVerifyDeviceResponse + */ + public function verifyDevice(Google_Service_Spectrum_PawsVerifyDeviceRequest $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('verifyDevice', array($params), "Google_Service_Spectrum_PawsVerifyDeviceResponse"); + } +} + + + + +class Google_Service_Spectrum_AntennaCharacteristics extends Google_Model +{ + public $height; + public $heightType; + public $heightUncertainty; + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setHeightType($heightType) + { + $this->heightType = $heightType; + } + + public function getHeightType() + { + return $this->heightType; + } + + public function setHeightUncertainty($heightUncertainty) + { + $this->heightUncertainty = $heightUncertainty; + } + + public function getHeightUncertainty() + { + return $this->heightUncertainty; + } +} + +class Google_Service_Spectrum_DatabaseSpec extends Google_Model +{ + public $name; + public $uri; + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setUri($uri) + { + $this->uri = $uri; + } + + public function getUri() + { + return $this->uri; + } +} + +class Google_Service_Spectrum_DbUpdateSpec extends Google_Collection +{ + protected $databasesType = 'Google_Service_Spectrum_DatabaseSpec'; + protected $databasesDataType = 'array'; + + public function setDatabases($databases) + { + $this->databases = $databases; + } + + public function getDatabases() + { + return $this->databases; + } +} + +class Google_Service_Spectrum_DeviceCapabilities extends Google_Collection +{ + protected $frequencyRangesType = 'Google_Service_Spectrum_FrequencyRange'; + protected $frequencyRangesDataType = 'array'; + + public function setFrequencyRanges($frequencyRanges) + { + $this->frequencyRanges = $frequencyRanges; + } + + public function getFrequencyRanges() + { + return $this->frequencyRanges; + } +} + +class Google_Service_Spectrum_DeviceDescriptor extends Google_Collection +{ + public $etsiEnDeviceCategory; + public $etsiEnDeviceEmissionsClass; + public $etsiEnDeviceType; + public $etsiEnTechnologyId; + public $fccId; + public $fccTvbdDeviceType; + public $manufacturerId; + public $modelId; + public $rulesetIds; + public $serialNumber; + + public function setEtsiEnDeviceCategory($etsiEnDeviceCategory) + { + $this->etsiEnDeviceCategory = $etsiEnDeviceCategory; + } + + public function getEtsiEnDeviceCategory() + { + return $this->etsiEnDeviceCategory; + } + + public function setEtsiEnDeviceEmissionsClass($etsiEnDeviceEmissionsClass) + { + $this->etsiEnDeviceEmissionsClass = $etsiEnDeviceEmissionsClass; + } + + public function getEtsiEnDeviceEmissionsClass() + { + return $this->etsiEnDeviceEmissionsClass; + } + + public function setEtsiEnDeviceType($etsiEnDeviceType) + { + $this->etsiEnDeviceType = $etsiEnDeviceType; + } + + public function getEtsiEnDeviceType() + { + return $this->etsiEnDeviceType; + } + + public function setEtsiEnTechnologyId($etsiEnTechnologyId) + { + $this->etsiEnTechnologyId = $etsiEnTechnologyId; + } + + public function getEtsiEnTechnologyId() + { + return $this->etsiEnTechnologyId; + } + + public function setFccId($fccId) + { + $this->fccId = $fccId; + } + + public function getFccId() + { + return $this->fccId; + } + + public function setFccTvbdDeviceType($fccTvbdDeviceType) + { + $this->fccTvbdDeviceType = $fccTvbdDeviceType; + } + + public function getFccTvbdDeviceType() + { + return $this->fccTvbdDeviceType; + } + + public function setManufacturerId($manufacturerId) + { + $this->manufacturerId = $manufacturerId; + } + + public function getManufacturerId() + { + return $this->manufacturerId; + } + + public function setModelId($modelId) + { + $this->modelId = $modelId; + } + + public function getModelId() + { + return $this->modelId; + } + + public function setRulesetIds($rulesetIds) + { + $this->rulesetIds = $rulesetIds; + } + + public function getRulesetIds() + { + return $this->rulesetIds; + } + + public function setSerialNumber($serialNumber) + { + $this->serialNumber = $serialNumber; + } + + public function getSerialNumber() + { + return $this->serialNumber; + } +} + +class Google_Service_Spectrum_DeviceOwner extends Google_Model +{ + protected $operatorType = 'Google_Service_Spectrum_Vcard'; + protected $operatorDataType = ''; + protected $ownerType = 'Google_Service_Spectrum_Vcard'; + protected $ownerDataType = ''; + + public function setOperator(Google_Service_Spectrum_Vcard $operator) + { + $this->operator = $operator; + } + + public function getOperator() + { + return $this->operator; + } + + public function setOwner(Google_Service_Spectrum_Vcard $owner) + { + $this->owner = $owner; + } + + public function getOwner() + { + return $this->owner; + } +} + +class Google_Service_Spectrum_DeviceValidity extends Google_Model +{ + protected $deviceDescType = 'Google_Service_Spectrum_DeviceDescriptor'; + protected $deviceDescDataType = ''; + public $isValid; + public $reason; + + public function setDeviceDesc(Google_Service_Spectrum_DeviceDescriptor $deviceDesc) + { + $this->deviceDesc = $deviceDesc; + } + + public function getDeviceDesc() + { + return $this->deviceDesc; + } + + public function setIsValid($isValid) + { + $this->isValid = $isValid; + } + + public function getIsValid() + { + return $this->isValid; + } + + public function setReason($reason) + { + $this->reason = $reason; + } + + public function getReason() + { + return $this->reason; + } +} + +class Google_Service_Spectrum_EventTime extends Google_Model +{ + public $startTime; + public $stopTime; + + public function setStartTime($startTime) + { + $this->startTime = $startTime; + } + + public function getStartTime() + { + return $this->startTime; + } + + public function setStopTime($stopTime) + { + $this->stopTime = $stopTime; + } + + public function getStopTime() + { + return $this->stopTime; + } +} + +class Google_Service_Spectrum_FrequencyRange extends Google_Model +{ + public $channelId; + public $maxPowerDBm; + public $startHz; + public $stopHz; + + public function setChannelId($channelId) + { + $this->channelId = $channelId; + } + + public function getChannelId() + { + return $this->channelId; + } + + public function setMaxPowerDBm($maxPowerDBm) + { + $this->maxPowerDBm = $maxPowerDBm; + } + + public function getMaxPowerDBm() + { + return $this->maxPowerDBm; + } + + public function setStartHz($startHz) + { + $this->startHz = $startHz; + } + + public function getStartHz() + { + return $this->startHz; + } + + public function setStopHz($stopHz) + { + $this->stopHz = $stopHz; + } + + public function getStopHz() + { + return $this->stopHz; + } +} + +class Google_Service_Spectrum_GeoLocation extends Google_Model +{ + public $confidence; + protected $pointType = 'Google_Service_Spectrum_GeoLocationEllipse'; + protected $pointDataType = ''; + protected $regionType = 'Google_Service_Spectrum_GeoLocationPolygon'; + protected $regionDataType = ''; + + public function setConfidence($confidence) + { + $this->confidence = $confidence; + } + + public function getConfidence() + { + return $this->confidence; + } + + public function setPoint(Google_Service_Spectrum_GeoLocationEllipse $point) + { + $this->point = $point; + } + + public function getPoint() + { + return $this->point; + } + + public function setRegion(Google_Service_Spectrum_GeoLocationPolygon $region) + { + $this->region = $region; + } + + public function getRegion() + { + return $this->region; + } +} + +class Google_Service_Spectrum_GeoLocationEllipse extends Google_Model +{ + protected $centerType = 'Google_Service_Spectrum_GeoLocationPoint'; + protected $centerDataType = ''; + public $orientation; + public $semiMajorAxis; + public $semiMinorAxis; + + public function setCenter(Google_Service_Spectrum_GeoLocationPoint $center) + { + $this->center = $center; + } + + public function getCenter() + { + return $this->center; + } + + public function setOrientation($orientation) + { + $this->orientation = $orientation; + } + + public function getOrientation() + { + return $this->orientation; + } + + public function setSemiMajorAxis($semiMajorAxis) + { + $this->semiMajorAxis = $semiMajorAxis; + } + + public function getSemiMajorAxis() + { + return $this->semiMajorAxis; + } + + public function setSemiMinorAxis($semiMinorAxis) + { + $this->semiMinorAxis = $semiMinorAxis; + } + + public function getSemiMinorAxis() + { + return $this->semiMinorAxis; + } +} + +class Google_Service_Spectrum_GeoLocationPoint extends Google_Model +{ + public $latitude; + public $longitude; + + public function setLatitude($latitude) + { + $this->latitude = $latitude; + } + + public function getLatitude() + { + return $this->latitude; + } + + public function setLongitude($longitude) + { + $this->longitude = $longitude; + } + + public function getLongitude() + { + return $this->longitude; + } +} + +class Google_Service_Spectrum_GeoLocationPolygon extends Google_Collection +{ + protected $exteriorType = 'Google_Service_Spectrum_GeoLocationPoint'; + protected $exteriorDataType = 'array'; + + public function setExterior($exterior) + { + $this->exterior = $exterior; + } + + public function getExterior() + { + return $this->exterior; + } +} + +class Google_Service_Spectrum_GeoSpectrumSchedule extends Google_Collection +{ + protected $locationType = 'Google_Service_Spectrum_GeoLocation'; + protected $locationDataType = ''; + protected $spectrumSchedulesType = 'Google_Service_Spectrum_SpectrumSchedule'; + protected $spectrumSchedulesDataType = 'array'; + + public function setLocation(Google_Service_Spectrum_GeoLocation $location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setSpectrumSchedules($spectrumSchedules) + { + $this->spectrumSchedules = $spectrumSchedules; + } + + public function getSpectrumSchedules() + { + return $this->spectrumSchedules; + } +} + +class Google_Service_Spectrum_PawsGetSpectrumBatchRequest extends Google_Collection +{ + protected $antennaType = 'Google_Service_Spectrum_AntennaCharacteristics'; + protected $antennaDataType = ''; + protected $capabilitiesType = 'Google_Service_Spectrum_DeviceCapabilities'; + protected $capabilitiesDataType = ''; + protected $deviceDescType = 'Google_Service_Spectrum_DeviceDescriptor'; + protected $deviceDescDataType = ''; + protected $locationsType = 'Google_Service_Spectrum_GeoLocation'; + protected $locationsDataType = 'array'; + protected $masterDeviceDescType = 'Google_Service_Spectrum_DeviceDescriptor'; + protected $masterDeviceDescDataType = ''; + protected $ownerType = 'Google_Service_Spectrum_DeviceOwner'; + protected $ownerDataType = ''; + public $requestType; + public $type; + public $version; + + public function setAntenna(Google_Service_Spectrum_AntennaCharacteristics $antenna) + { + $this->antenna = $antenna; + } + + public function getAntenna() + { + return $this->antenna; + } + + public function setCapabilities(Google_Service_Spectrum_DeviceCapabilities $capabilities) + { + $this->capabilities = $capabilities; + } + + public function getCapabilities() + { + return $this->capabilities; + } + + public function setDeviceDesc(Google_Service_Spectrum_DeviceDescriptor $deviceDesc) + { + $this->deviceDesc = $deviceDesc; + } + + public function getDeviceDesc() + { + return $this->deviceDesc; + } + + public function setLocations($locations) + { + $this->locations = $locations; + } + + public function getLocations() + { + return $this->locations; + } + + public function setMasterDeviceDesc(Google_Service_Spectrum_DeviceDescriptor $masterDeviceDesc) + { + $this->masterDeviceDesc = $masterDeviceDesc; + } + + public function getMasterDeviceDesc() + { + return $this->masterDeviceDesc; + } + + public function setOwner(Google_Service_Spectrum_DeviceOwner $owner) + { + $this->owner = $owner; + } + + public function getOwner() + { + return $this->owner; + } + + public function setRequestType($requestType) + { + $this->requestType = $requestType; + } + + public function getRequestType() + { + return $this->requestType; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setVersion($version) + { + $this->version = $version; + } + + public function getVersion() + { + return $this->version; + } +} + +class Google_Service_Spectrum_PawsGetSpectrumBatchResponse extends Google_Collection +{ + protected $databaseChangeType = 'Google_Service_Spectrum_DbUpdateSpec'; + protected $databaseChangeDataType = ''; + protected $deviceDescType = 'Google_Service_Spectrum_DeviceDescriptor'; + protected $deviceDescDataType = ''; + protected $geoSpectrumSchedulesType = 'Google_Service_Spectrum_GeoSpectrumSchedule'; + protected $geoSpectrumSchedulesDataType = 'array'; + public $kind; + public $maxContiguousBwHz; + public $maxTotalBwHz; + public $needsSpectrumReport; + protected $rulesetInfoType = 'Google_Service_Spectrum_RulesetInfo'; + protected $rulesetInfoDataType = ''; + public $timestamp; + public $type; + public $version; + + public function setDatabaseChange(Google_Service_Spectrum_DbUpdateSpec $databaseChange) + { + $this->databaseChange = $databaseChange; + } + + public function getDatabaseChange() + { + return $this->databaseChange; + } + + public function setDeviceDesc(Google_Service_Spectrum_DeviceDescriptor $deviceDesc) + { + $this->deviceDesc = $deviceDesc; + } + + public function getDeviceDesc() + { + return $this->deviceDesc; + } + + public function setGeoSpectrumSchedules($geoSpectrumSchedules) + { + $this->geoSpectrumSchedules = $geoSpectrumSchedules; + } + + public function getGeoSpectrumSchedules() + { + return $this->geoSpectrumSchedules; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMaxContiguousBwHz($maxContiguousBwHz) + { + $this->maxContiguousBwHz = $maxContiguousBwHz; + } + + public function getMaxContiguousBwHz() + { + return $this->maxContiguousBwHz; + } + + public function setMaxTotalBwHz($maxTotalBwHz) + { + $this->maxTotalBwHz = $maxTotalBwHz; + } + + public function getMaxTotalBwHz() + { + return $this->maxTotalBwHz; + } + + public function setNeedsSpectrumReport($needsSpectrumReport) + { + $this->needsSpectrumReport = $needsSpectrumReport; + } + + public function getNeedsSpectrumReport() + { + return $this->needsSpectrumReport; + } + + public function setRulesetInfo(Google_Service_Spectrum_RulesetInfo $rulesetInfo) + { + $this->rulesetInfo = $rulesetInfo; + } + + public function getRulesetInfo() + { + return $this->rulesetInfo; + } + + public function setTimestamp($timestamp) + { + $this->timestamp = $timestamp; + } + + public function getTimestamp() + { + return $this->timestamp; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setVersion($version) + { + $this->version = $version; + } + + public function getVersion() + { + return $this->version; + } +} + +class Google_Service_Spectrum_PawsGetSpectrumRequest extends Google_Model +{ + protected $antennaType = 'Google_Service_Spectrum_AntennaCharacteristics'; + protected $antennaDataType = ''; + protected $capabilitiesType = 'Google_Service_Spectrum_DeviceCapabilities'; + protected $capabilitiesDataType = ''; + protected $deviceDescType = 'Google_Service_Spectrum_DeviceDescriptor'; + protected $deviceDescDataType = ''; + protected $locationType = 'Google_Service_Spectrum_GeoLocation'; + protected $locationDataType = ''; + protected $masterDeviceDescType = 'Google_Service_Spectrum_DeviceDescriptor'; + protected $masterDeviceDescDataType = ''; + protected $ownerType = 'Google_Service_Spectrum_DeviceOwner'; + protected $ownerDataType = ''; + public $requestType; + public $type; + public $version; + + public function setAntenna(Google_Service_Spectrum_AntennaCharacteristics $antenna) + { + $this->antenna = $antenna; + } + + public function getAntenna() + { + return $this->antenna; + } + + public function setCapabilities(Google_Service_Spectrum_DeviceCapabilities $capabilities) + { + $this->capabilities = $capabilities; + } + + public function getCapabilities() + { + return $this->capabilities; + } + + public function setDeviceDesc(Google_Service_Spectrum_DeviceDescriptor $deviceDesc) + { + $this->deviceDesc = $deviceDesc; + } + + public function getDeviceDesc() + { + return $this->deviceDesc; + } + + public function setLocation(Google_Service_Spectrum_GeoLocation $location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setMasterDeviceDesc(Google_Service_Spectrum_DeviceDescriptor $masterDeviceDesc) + { + $this->masterDeviceDesc = $masterDeviceDesc; + } + + public function getMasterDeviceDesc() + { + return $this->masterDeviceDesc; + } + + public function setOwner(Google_Service_Spectrum_DeviceOwner $owner) + { + $this->owner = $owner; + } + + public function getOwner() + { + return $this->owner; + } + + public function setRequestType($requestType) + { + $this->requestType = $requestType; + } + + public function getRequestType() + { + return $this->requestType; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setVersion($version) + { + $this->version = $version; + } + + public function getVersion() + { + return $this->version; + } +} + +class Google_Service_Spectrum_PawsGetSpectrumResponse extends Google_Collection +{ + protected $databaseChangeType = 'Google_Service_Spectrum_DbUpdateSpec'; + protected $databaseChangeDataType = ''; + protected $deviceDescType = 'Google_Service_Spectrum_DeviceDescriptor'; + protected $deviceDescDataType = ''; + public $kind; + public $maxContiguousBwHz; + public $maxTotalBwHz; + public $needsSpectrumReport; + protected $rulesetInfoType = 'Google_Service_Spectrum_RulesetInfo'; + protected $rulesetInfoDataType = ''; + protected $spectrumSchedulesType = 'Google_Service_Spectrum_SpectrumSchedule'; + protected $spectrumSchedulesDataType = 'array'; + public $timestamp; + public $type; + public $version; + + public function setDatabaseChange(Google_Service_Spectrum_DbUpdateSpec $databaseChange) + { + $this->databaseChange = $databaseChange; + } + + public function getDatabaseChange() + { + return $this->databaseChange; + } + + public function setDeviceDesc(Google_Service_Spectrum_DeviceDescriptor $deviceDesc) + { + $this->deviceDesc = $deviceDesc; + } + + public function getDeviceDesc() + { + return $this->deviceDesc; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMaxContiguousBwHz($maxContiguousBwHz) + { + $this->maxContiguousBwHz = $maxContiguousBwHz; + } + + public function getMaxContiguousBwHz() + { + return $this->maxContiguousBwHz; + } + + public function setMaxTotalBwHz($maxTotalBwHz) + { + $this->maxTotalBwHz = $maxTotalBwHz; + } + + public function getMaxTotalBwHz() + { + return $this->maxTotalBwHz; + } + + public function setNeedsSpectrumReport($needsSpectrumReport) + { + $this->needsSpectrumReport = $needsSpectrumReport; + } + + public function getNeedsSpectrumReport() + { + return $this->needsSpectrumReport; + } + + public function setRulesetInfo(Google_Service_Spectrum_RulesetInfo $rulesetInfo) + { + $this->rulesetInfo = $rulesetInfo; + } + + public function getRulesetInfo() + { + return $this->rulesetInfo; + } + + public function setSpectrumSchedules($spectrumSchedules) + { + $this->spectrumSchedules = $spectrumSchedules; + } + + public function getSpectrumSchedules() + { + return $this->spectrumSchedules; + } + + public function setTimestamp($timestamp) + { + $this->timestamp = $timestamp; + } + + public function getTimestamp() + { + return $this->timestamp; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setVersion($version) + { + $this->version = $version; + } + + public function getVersion() + { + return $this->version; + } +} + +class Google_Service_Spectrum_PawsInitRequest extends Google_Model +{ + protected $deviceDescType = 'Google_Service_Spectrum_DeviceDescriptor'; + protected $deviceDescDataType = ''; + protected $locationType = 'Google_Service_Spectrum_GeoLocation'; + protected $locationDataType = ''; + public $type; + public $version; + + public function setDeviceDesc(Google_Service_Spectrum_DeviceDescriptor $deviceDesc) + { + $this->deviceDesc = $deviceDesc; + } + + public function getDeviceDesc() + { + return $this->deviceDesc; + } + + public function setLocation(Google_Service_Spectrum_GeoLocation $location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setVersion($version) + { + $this->version = $version; + } + + public function getVersion() + { + return $this->version; + } +} + +class Google_Service_Spectrum_PawsInitResponse extends Google_Model +{ + protected $databaseChangeType = 'Google_Service_Spectrum_DbUpdateSpec'; + protected $databaseChangeDataType = ''; + public $kind; + protected $rulesetInfoType = 'Google_Service_Spectrum_RulesetInfo'; + protected $rulesetInfoDataType = ''; + public $type; + public $version; + + public function setDatabaseChange(Google_Service_Spectrum_DbUpdateSpec $databaseChange) + { + $this->databaseChange = $databaseChange; + } + + public function getDatabaseChange() + { + return $this->databaseChange; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRulesetInfo(Google_Service_Spectrum_RulesetInfo $rulesetInfo) + { + $this->rulesetInfo = $rulesetInfo; + } + + public function getRulesetInfo() + { + return $this->rulesetInfo; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setVersion($version) + { + $this->version = $version; + } + + public function getVersion() + { + return $this->version; + } +} + +class Google_Service_Spectrum_PawsNotifySpectrumUseRequest extends Google_Collection +{ + protected $deviceDescType = 'Google_Service_Spectrum_DeviceDescriptor'; + protected $deviceDescDataType = ''; + protected $locationType = 'Google_Service_Spectrum_GeoLocation'; + protected $locationDataType = ''; + protected $spectraType = 'Google_Service_Spectrum_SpectrumMessage'; + protected $spectraDataType = 'array'; + public $type; + public $version; + + public function setDeviceDesc(Google_Service_Spectrum_DeviceDescriptor $deviceDesc) + { + $this->deviceDesc = $deviceDesc; + } + + public function getDeviceDesc() + { + return $this->deviceDesc; + } + + public function setLocation(Google_Service_Spectrum_GeoLocation $location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setSpectra($spectra) + { + $this->spectra = $spectra; + } + + public function getSpectra() + { + return $this->spectra; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setVersion($version) + { + $this->version = $version; + } + + public function getVersion() + { + return $this->version; + } +} + +class Google_Service_Spectrum_PawsNotifySpectrumUseResponse extends Google_Model +{ + public $kind; + public $type; + public $version; + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setVersion($version) + { + $this->version = $version; + } + + public function getVersion() + { + return $this->version; + } +} + +class Google_Service_Spectrum_PawsRegisterRequest extends Google_Model +{ + protected $antennaType = 'Google_Service_Spectrum_AntennaCharacteristics'; + protected $antennaDataType = ''; + protected $deviceDescType = 'Google_Service_Spectrum_DeviceDescriptor'; + protected $deviceDescDataType = ''; + protected $deviceOwnerType = 'Google_Service_Spectrum_DeviceOwner'; + protected $deviceOwnerDataType = ''; + protected $locationType = 'Google_Service_Spectrum_GeoLocation'; + protected $locationDataType = ''; + public $type; + public $version; + + public function setAntenna(Google_Service_Spectrum_AntennaCharacteristics $antenna) + { + $this->antenna = $antenna; + } + + public function getAntenna() + { + return $this->antenna; + } + + public function setDeviceDesc(Google_Service_Spectrum_DeviceDescriptor $deviceDesc) + { + $this->deviceDesc = $deviceDesc; + } + + public function getDeviceDesc() + { + return $this->deviceDesc; + } + + public function setDeviceOwner(Google_Service_Spectrum_DeviceOwner $deviceOwner) + { + $this->deviceOwner = $deviceOwner; + } + + public function getDeviceOwner() + { + return $this->deviceOwner; + } + + public function setLocation(Google_Service_Spectrum_GeoLocation $location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setVersion($version) + { + $this->version = $version; + } + + public function getVersion() + { + return $this->version; + } +} + +class Google_Service_Spectrum_PawsRegisterResponse extends Google_Model +{ + protected $databaseChangeType = 'Google_Service_Spectrum_DbUpdateSpec'; + protected $databaseChangeDataType = ''; + public $kind; + public $type; + public $version; + + public function setDatabaseChange(Google_Service_Spectrum_DbUpdateSpec $databaseChange) + { + $this->databaseChange = $databaseChange; + } + + public function getDatabaseChange() + { + return $this->databaseChange; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setVersion($version) + { + $this->version = $version; + } + + public function getVersion() + { + return $this->version; + } +} + +class Google_Service_Spectrum_PawsVerifyDeviceRequest extends Google_Collection +{ + protected $deviceDescsType = 'Google_Service_Spectrum_DeviceDescriptor'; + protected $deviceDescsDataType = 'array'; + public $type; + public $version; + + public function setDeviceDescs($deviceDescs) + { + $this->deviceDescs = $deviceDescs; + } + + public function getDeviceDescs() + { + return $this->deviceDescs; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setVersion($version) + { + $this->version = $version; + } + + public function getVersion() + { + return $this->version; + } +} + +class Google_Service_Spectrum_PawsVerifyDeviceResponse extends Google_Collection +{ + protected $databaseChangeType = 'Google_Service_Spectrum_DbUpdateSpec'; + protected $databaseChangeDataType = ''; + protected $deviceValiditiesType = 'Google_Service_Spectrum_DeviceValidity'; + protected $deviceValiditiesDataType = 'array'; + public $kind; + public $type; + public $version; + + public function setDatabaseChange(Google_Service_Spectrum_DbUpdateSpec $databaseChange) + { + $this->databaseChange = $databaseChange; + } + + public function getDatabaseChange() + { + return $this->databaseChange; + } + + public function setDeviceValidities($deviceValidities) + { + $this->deviceValidities = $deviceValidities; + } + + public function getDeviceValidities() + { + return $this->deviceValidities; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setVersion($version) + { + $this->version = $version; + } + + public function getVersion() + { + return $this->version; + } +} + +class Google_Service_Spectrum_RulesetInfo extends Google_Collection +{ + public $authority; + public $maxLocationChange; + public $maxPollingSecs; + public $rulesetIds; + + public function setAuthority($authority) + { + $this->authority = $authority; + } + + public function getAuthority() + { + return $this->authority; + } + + public function setMaxLocationChange($maxLocationChange) + { + $this->maxLocationChange = $maxLocationChange; + } + + public function getMaxLocationChange() + { + return $this->maxLocationChange; + } + + public function setMaxPollingSecs($maxPollingSecs) + { + $this->maxPollingSecs = $maxPollingSecs; + } + + public function getMaxPollingSecs() + { + return $this->maxPollingSecs; + } + + public function setRulesetIds($rulesetIds) + { + $this->rulesetIds = $rulesetIds; + } + + public function getRulesetIds() + { + return $this->rulesetIds; + } +} + +class Google_Service_Spectrum_SpectrumMessage extends Google_Collection +{ + public $bandwidth; + protected $frequencyRangesType = 'Google_Service_Spectrum_FrequencyRange'; + protected $frequencyRangesDataType = 'array'; + + public function setBandwidth($bandwidth) + { + $this->bandwidth = $bandwidth; + } + + public function getBandwidth() + { + return $this->bandwidth; + } + + public function setFrequencyRanges($frequencyRanges) + { + $this->frequencyRanges = $frequencyRanges; + } + + public function getFrequencyRanges() + { + return $this->frequencyRanges; + } +} + +class Google_Service_Spectrum_SpectrumSchedule extends Google_Collection +{ + protected $eventTimeType = 'Google_Service_Spectrum_EventTime'; + protected $eventTimeDataType = ''; + protected $spectraType = 'Google_Service_Spectrum_SpectrumMessage'; + protected $spectraDataType = 'array'; + + public function setEventTime(Google_Service_Spectrum_EventTime $eventTime) + { + $this->eventTime = $eventTime; + } + + public function getEventTime() + { + return $this->eventTime; + } + + public function setSpectra($spectra) + { + $this->spectra = $spectra; + } + + public function getSpectra() + { + return $this->spectra; + } +} + +class Google_Service_Spectrum_Vcard extends Google_Model +{ + protected $adrType = 'Google_Service_Spectrum_VcardAddress'; + protected $adrDataType = ''; + protected $emailType = 'Google_Service_Spectrum_VcardTypedText'; + protected $emailDataType = ''; + public $fn; + protected $orgType = 'Google_Service_Spectrum_VcardTypedText'; + protected $orgDataType = ''; + protected $telType = 'Google_Service_Spectrum_VcardTelephone'; + protected $telDataType = ''; + + public function setAdr(Google_Service_Spectrum_VcardAddress $adr) + { + $this->adr = $adr; + } + + public function getAdr() + { + return $this->adr; + } + + public function setEmail(Google_Service_Spectrum_VcardTypedText $email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setFn($fn) + { + $this->fn = $fn; + } + + public function getFn() + { + return $this->fn; + } + + public function setOrg(Google_Service_Spectrum_VcardTypedText $org) + { + $this->org = $org; + } + + public function getOrg() + { + return $this->org; + } + + public function setTel(Google_Service_Spectrum_VcardTelephone $tel) + { + $this->tel = $tel; + } + + public function getTel() + { + return $this->tel; + } +} + +class Google_Service_Spectrum_VcardAddress extends Google_Model +{ + public $code; + public $country; + public $locality; + public $pobox; + public $region; + public $street; + + public function setCode($code) + { + $this->code = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setCountry($country) + { + $this->country = $country; + } + + public function getCountry() + { + return $this->country; + } + + public function setLocality($locality) + { + $this->locality = $locality; + } + + public function getLocality() + { + return $this->locality; + } + + public function setPobox($pobox) + { + $this->pobox = $pobox; + } + + public function getPobox() + { + return $this->pobox; + } + + public function setRegion($region) + { + $this->region = $region; + } + + public function getRegion() + { + return $this->region; + } + + public function setStreet($street) + { + $this->street = $street; + } + + public function getStreet() + { + return $this->street; + } +} + +class Google_Service_Spectrum_VcardTelephone extends Google_Model +{ + public $uri; + + public function setUri($uri) + { + $this->uri = $uri; + } + + public function getUri() + { + return $this->uri; + } +} + +class Google_Service_Spectrum_VcardTypedText extends Google_Model +{ + public $text; + + public function setText($text) + { + $this->text = $text; + } + + public function getText() + { + return $this->text; + } +} diff --git a/oauth/Google/Service/Storage.php b/oauth/Google/Service/Storage.php new file mode 100644 index 0000000..ff432b4 --- /dev/null +++ b/oauth/Google/Service/Storage.php @@ -0,0 +1,3274 @@ + + * Lets you store and retrieve potentially-large, immutable data objects. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Storage extends Google_Service +{ + /** Manage your data and permissions in Google Cloud Storage. */ + const DEVSTORAGE_FULL_CONTROL = "https://www.googleapis.com/auth/devstorage.full_control"; + /** View your data in Google Cloud Storage. */ + const DEVSTORAGE_READ_ONLY = "https://www.googleapis.com/auth/devstorage.read_only"; + /** Manage your data in Google Cloud Storage. */ + const DEVSTORAGE_READ_WRITE = "https://www.googleapis.com/auth/devstorage.read_write"; + + public $bucketAccessControls; + public $buckets; + public $channels; + public $defaultObjectAccessControls; + public $objectAccessControls; + public $objects; + + + /** + * Constructs the internal representation of the Storage service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'storage/v1/'; + $this->version = 'v1'; + $this->serviceName = 'storage'; + + $this->bucketAccessControls = new Google_Service_Storage_BucketAccessControls_Resource( + $this, + $this->serviceName, + 'bucketAccessControls', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'b/{bucket}/acl/{entity}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'b/{bucket}/acl/{entity}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'b/{bucket}/acl', + 'httpMethod' => 'POST', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'b/{bucket}/acl', + 'httpMethod' => 'GET', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => 'b/{bucket}/acl/{entity}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'b/{bucket}/acl/{entity}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->buckets = new Google_Service_Storage_Buckets_Resource( + $this, + $this->serviceName, + 'buckets', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'b/{bucket}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'get' => array( + 'path' => 'b/{bucket}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'b', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'predefinedAcl' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'b', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + ), + ),'patch' => array( + 'path' => 'b/{bucket}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'predefinedAcl' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'update' => array( + 'path' => 'b/{bucket}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'predefinedAcl' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->channels = new Google_Service_Storage_Channels_Resource( + $this, + $this->serviceName, + 'channels', + array( + 'methods' => array( + 'stop' => array( + 'path' => 'channels/stop', + 'httpMethod' => 'POST', + 'parameters' => array(), + ), + ) + ) + ); + $this->defaultObjectAccessControls = new Google_Service_Storage_DefaultObjectAccessControls_Resource( + $this, + $this->serviceName, + 'defaultObjectAccessControls', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'b/{bucket}/defaultObjectAcl/{entity}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'b/{bucket}/defaultObjectAcl/{entity}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'b/{bucket}/defaultObjectAcl', + 'httpMethod' => 'POST', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'b/{bucket}/defaultObjectAcl', + 'httpMethod' => 'GET', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'b/{bucket}/defaultObjectAcl/{entity}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'b/{bucket}/defaultObjectAcl/{entity}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->objectAccessControls = new Google_Service_Storage_ObjectAccessControls_Resource( + $this, + $this->serviceName, + 'objectAccessControls', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'b/{bucket}/o/{object}/acl/{entity}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'object' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'generation' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'get' => array( + 'path' => 'b/{bucket}/o/{object}/acl/{entity}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'object' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'generation' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'b/{bucket}/o/{object}/acl', + 'httpMethod' => 'POST', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'object' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'generation' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'b/{bucket}/o/{object}/acl', + 'httpMethod' => 'GET', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'object' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'generation' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'b/{bucket}/o/{object}/acl/{entity}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'object' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'generation' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'update' => array( + 'path' => 'b/{bucket}/o/{object}/acl/{entity}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'object' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'entity' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'generation' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->objects = new Google_Service_Storage_Objects_Resource( + $this, + $this->serviceName, + 'objects', + array( + 'methods' => array( + 'compose' => array( + 'path' => 'b/{destinationBucket}/o/{destinationObject}/compose', + 'httpMethod' => 'POST', + 'parameters' => array( + 'destinationBucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'destinationObject' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ifGenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'destinationPredefinedAcl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'copy' => array( + 'path' => 'b/{sourceBucket}/o/{sourceObject}/copyTo/b/{destinationBucket}/o/{destinationObject}', + 'httpMethod' => 'POST', + 'parameters' => array( + 'sourceBucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'sourceObject' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'destinationBucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'destinationObject' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ifSourceGenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifSourceMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'sourceGeneration' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'destinationPredefinedAcl' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifSourceGenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifSourceMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'delete' => array( + 'path' => 'b/{bucket}/o/{object}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'object' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ifGenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'generation' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'get' => array( + 'path' => 'b/{bucket}/o/{object}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'object' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'ifGenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'generation' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'b/{bucket}/o', + 'httpMethod' => 'POST', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'predefinedAcl' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'contentEncoding' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'name' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'b/{bucket}/o', + 'httpMethod' => 'GET', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'versions' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'prefix' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'delimiter' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'b/{bucket}/o/{object}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'object' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'predefinedAcl' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'generation' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'update' => array( + 'path' => 'b/{bucket}/o/{object}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'object' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'predefinedAcl' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'generation' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifGenerationMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'ifMetagenerationNotMatch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'watchAll' => array( + 'path' => 'b/{bucket}/o/watch', + 'httpMethod' => 'POST', + 'parameters' => array( + 'bucket' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'versions' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'prefix' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'delimiter' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "bucketAccessControls" collection of methods. + * Typical usage is: + * + * $storageService = new Google_Service_Storage(...); + * $bucketAccessControls = $storageService->bucketAccessControls; + * + */ +class Google_Service_Storage_BucketAccessControls_Resource extends Google_Service_Resource +{ + + /** + * Permanently deletes the ACL entry for the specified entity on the specified + * bucket. (bucketAccessControls.delete) + * + * @param string $bucket + * Name of a bucket. + * @param string $entity + * The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group- + * emailAddress, allUsers, or allAuthenticatedUsers. + * @param array $optParams Optional parameters. + */ + public function delete($bucket, $entity, $optParams = array()) + { + $params = array('bucket' => $bucket, 'entity' => $entity); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Returns the ACL entry for the specified entity on the specified bucket. + * (bucketAccessControls.get) + * + * @param string $bucket + * Name of a bucket. + * @param string $entity + * The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group- + * emailAddress, allUsers, or allAuthenticatedUsers. + * @param array $optParams Optional parameters. + * @return Google_Service_Storage_BucketAccessControl + */ + public function get($bucket, $entity, $optParams = array()) + { + $params = array('bucket' => $bucket, 'entity' => $entity); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Storage_BucketAccessControl"); + } + /** + * Creates a new ACL entry on the specified bucket. + * (bucketAccessControls.insert) + * + * @param string $bucket + * Name of a bucket. + * @param Google_BucketAccessControl $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Storage_BucketAccessControl + */ + public function insert($bucket, Google_Service_Storage_BucketAccessControl $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Storage_BucketAccessControl"); + } + /** + * Retrieves ACL entries on the specified bucket. + * (bucketAccessControls.listBucketAccessControls) + * + * @param string $bucket + * Name of a bucket. + * @param array $optParams Optional parameters. + * @return Google_Service_Storage_BucketAccessControls + */ + public function listBucketAccessControls($bucket, $optParams = array()) + { + $params = array('bucket' => $bucket); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Storage_BucketAccessControls"); + } + /** + * Updates an ACL entry on the specified bucket. This method supports patch + * semantics. (bucketAccessControls.patch) + * + * @param string $bucket + * Name of a bucket. + * @param string $entity + * The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group- + * emailAddress, allUsers, or allAuthenticatedUsers. + * @param Google_BucketAccessControl $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Storage_BucketAccessControl + */ + public function patch($bucket, $entity, Google_Service_Storage_BucketAccessControl $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'entity' => $entity, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Storage_BucketAccessControl"); + } + /** + * Updates an ACL entry on the specified bucket. (bucketAccessControls.update) + * + * @param string $bucket + * Name of a bucket. + * @param string $entity + * The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group- + * emailAddress, allUsers, or allAuthenticatedUsers. + * @param Google_BucketAccessControl $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Storage_BucketAccessControl + */ + public function update($bucket, $entity, Google_Service_Storage_BucketAccessControl $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'entity' => $entity, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Storage_BucketAccessControl"); + } +} + +/** + * The "buckets" collection of methods. + * Typical usage is: + * + * $storageService = new Google_Service_Storage(...); + * $buckets = $storageService->buckets; + * + */ +class Google_Service_Storage_Buckets_Resource extends Google_Service_Resource +{ + + /** + * Permanently deletes an empty bucket. (buckets.delete) + * + * @param string $bucket + * Name of a bucket. + * @param array $optParams Optional parameters. + * + * @opt_param string ifMetagenerationMatch + * If set, only deletes the bucket if its metageneration matches this value. + * @opt_param string ifMetagenerationNotMatch + * If set, only deletes the bucket if its metageneration does not match this value. + */ + public function delete($bucket, $optParams = array()) + { + $params = array('bucket' => $bucket); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Returns metadata for the specified bucket. (buckets.get) + * + * @param string $bucket + * Name of a bucket. + * @param array $optParams Optional parameters. + * + * @opt_param string ifMetagenerationMatch + * Makes the return of the bucket metadata conditional on whether the bucket's current + * metageneration matches the given value. + * @opt_param string ifMetagenerationNotMatch + * Makes the return of the bucket metadata conditional on whether the bucket's current + * metageneration does not match the given value. + * @opt_param string projection + * Set of properties to return. Defaults to noAcl. + * @return Google_Service_Storage_Bucket + */ + public function get($bucket, $optParams = array()) + { + $params = array('bucket' => $bucket); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Storage_Bucket"); + } + /** + * Creates a new bucket. (buckets.insert) + * + * @param string $project + * A valid API project identifier. + * @param Google_Bucket $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string predefinedAcl + * Apply a predefined set of access controls to this bucket. + * @opt_param string projection + * Set of properties to return. Defaults to noAcl, unless the bucket resource specifies acl or + * defaultObjectAcl properties, when it defaults to full. + * @return Google_Service_Storage_Bucket + */ + public function insert($project, Google_Service_Storage_Bucket $postBody, $optParams = array()) + { + $params = array('project' => $project, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Storage_Bucket"); + } + /** + * Retrieves a list of buckets for a given project. (buckets.listBuckets) + * + * @param string $project + * A valid API project identifier. + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * A previously-returned page token representing part of the larger set of results to view. + * @opt_param string projection + * Set of properties to return. Defaults to noAcl. + * @opt_param string maxResults + * Maximum number of buckets to return. + * @return Google_Service_Storage_Buckets + */ + public function listBuckets($project, $optParams = array()) + { + $params = array('project' => $project); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Storage_Buckets"); + } + /** + * Updates a bucket. This method supports patch semantics. (buckets.patch) + * + * @param string $bucket + * Name of a bucket. + * @param Google_Bucket $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string ifMetagenerationMatch + * Makes the return of the bucket metadata conditional on whether the bucket's current + * metageneration matches the given value. + * @opt_param string predefinedAcl + * Apply a predefined set of access controls to this bucket. + * @opt_param string ifMetagenerationNotMatch + * Makes the return of the bucket metadata conditional on whether the bucket's current + * metageneration does not match the given value. + * @opt_param string projection + * Set of properties to return. Defaults to full. + * @return Google_Service_Storage_Bucket + */ + public function patch($bucket, Google_Service_Storage_Bucket $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Storage_Bucket"); + } + /** + * Updates a bucket. (buckets.update) + * + * @param string $bucket + * Name of a bucket. + * @param Google_Bucket $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string ifMetagenerationMatch + * Makes the return of the bucket metadata conditional on whether the bucket's current + * metageneration matches the given value. + * @opt_param string predefinedAcl + * Apply a predefined set of access controls to this bucket. + * @opt_param string ifMetagenerationNotMatch + * Makes the return of the bucket metadata conditional on whether the bucket's current + * metageneration does not match the given value. + * @opt_param string projection + * Set of properties to return. Defaults to full. + * @return Google_Service_Storage_Bucket + */ + public function update($bucket, Google_Service_Storage_Bucket $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Storage_Bucket"); + } +} + +/** + * The "channels" collection of methods. + * Typical usage is: + * + * $storageService = new Google_Service_Storage(...); + * $channels = $storageService->channels; + * + */ +class Google_Service_Storage_Channels_Resource extends Google_Service_Resource +{ + + /** + * Stop watching resources through this channel (channels.stop) + * + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + */ + public function stop(Google_Service_Storage_Channel $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('stop', array($params)); + } +} + +/** + * The "defaultObjectAccessControls" collection of methods. + * Typical usage is: + * + * $storageService = new Google_Service_Storage(...); + * $defaultObjectAccessControls = $storageService->defaultObjectAccessControls; + * + */ +class Google_Service_Storage_DefaultObjectAccessControls_Resource extends Google_Service_Resource +{ + + /** + * Permanently deletes the default object ACL entry for the specified entity on + * the specified bucket. (defaultObjectAccessControls.delete) + * + * @param string $bucket + * Name of a bucket. + * @param string $entity + * The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group- + * emailAddress, allUsers, or allAuthenticatedUsers. + * @param array $optParams Optional parameters. + */ + public function delete($bucket, $entity, $optParams = array()) + { + $params = array('bucket' => $bucket, 'entity' => $entity); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Returns the default object ACL entry for the specified entity on the + * specified bucket. (defaultObjectAccessControls.get) + * + * @param string $bucket + * Name of a bucket. + * @param string $entity + * The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group- + * emailAddress, allUsers, or allAuthenticatedUsers. + * @param array $optParams Optional parameters. + * @return Google_Service_Storage_ObjectAccessControl + */ + public function get($bucket, $entity, $optParams = array()) + { + $params = array('bucket' => $bucket, 'entity' => $entity); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Storage_ObjectAccessControl"); + } + /** + * Creates a new default object ACL entry on the specified bucket. + * (defaultObjectAccessControls.insert) + * + * @param string $bucket + * Name of a bucket. + * @param Google_ObjectAccessControl $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Storage_ObjectAccessControl + */ + public function insert($bucket, Google_Service_Storage_ObjectAccessControl $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Storage_ObjectAccessControl"); + } + /** + * Retrieves default object ACL entries on the specified bucket. + * (defaultObjectAccessControls.listDefaultObjectAccessControls) + * + * @param string $bucket + * Name of a bucket. + * @param array $optParams Optional parameters. + * + * @opt_param string ifMetagenerationMatch + * If present, only return default ACL listing if the bucket's current metageneration matches this + * value. + * @opt_param string ifMetagenerationNotMatch + * If present, only return default ACL listing if the bucket's current metageneration does not + * match the given value. + * @return Google_Service_Storage_ObjectAccessControls + */ + public function listDefaultObjectAccessControls($bucket, $optParams = array()) + { + $params = array('bucket' => $bucket); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Storage_ObjectAccessControls"); + } + /** + * Updates a default object ACL entry on the specified bucket. This method + * supports patch semantics. (defaultObjectAccessControls.patch) + * + * @param string $bucket + * Name of a bucket. + * @param string $entity + * The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group- + * emailAddress, allUsers, or allAuthenticatedUsers. + * @param Google_ObjectAccessControl $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Storage_ObjectAccessControl + */ + public function patch($bucket, $entity, Google_Service_Storage_ObjectAccessControl $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'entity' => $entity, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Storage_ObjectAccessControl"); + } + /** + * Updates a default object ACL entry on the specified bucket. + * (defaultObjectAccessControls.update) + * + * @param string $bucket + * Name of a bucket. + * @param string $entity + * The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group- + * emailAddress, allUsers, or allAuthenticatedUsers. + * @param Google_ObjectAccessControl $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Storage_ObjectAccessControl + */ + public function update($bucket, $entity, Google_Service_Storage_ObjectAccessControl $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'entity' => $entity, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Storage_ObjectAccessControl"); + } +} + +/** + * The "objectAccessControls" collection of methods. + * Typical usage is: + * + * $storageService = new Google_Service_Storage(...); + * $objectAccessControls = $storageService->objectAccessControls; + * + */ +class Google_Service_Storage_ObjectAccessControls_Resource extends Google_Service_Resource +{ + + /** + * Permanently deletes the ACL entry for the specified entity on the specified + * object. (objectAccessControls.delete) + * + * @param string $bucket + * Name of a bucket. + * @param string $object + * Name of the object. + * @param string $entity + * The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group- + * emailAddress, allUsers, or allAuthenticatedUsers. + * @param array $optParams Optional parameters. + * + * @opt_param string generation + * If present, selects a specific revision of this object (as opposed to the latest version, the + * default). + */ + public function delete($bucket, $object, $entity, $optParams = array()) + { + $params = array('bucket' => $bucket, 'object' => $object, 'entity' => $entity); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Returns the ACL entry for the specified entity on the specified object. + * (objectAccessControls.get) + * + * @param string $bucket + * Name of a bucket. + * @param string $object + * Name of the object. + * @param string $entity + * The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group- + * emailAddress, allUsers, or allAuthenticatedUsers. + * @param array $optParams Optional parameters. + * + * @opt_param string generation + * If present, selects a specific revision of this object (as opposed to the latest version, the + * default). + * @return Google_Service_Storage_ObjectAccessControl + */ + public function get($bucket, $object, $entity, $optParams = array()) + { + $params = array('bucket' => $bucket, 'object' => $object, 'entity' => $entity); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Storage_ObjectAccessControl"); + } + /** + * Creates a new ACL entry on the specified object. + * (objectAccessControls.insert) + * + * @param string $bucket + * Name of a bucket. + * @param string $object + * Name of the object. + * @param Google_ObjectAccessControl $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string generation + * If present, selects a specific revision of this object (as opposed to the latest version, the + * default). + * @return Google_Service_Storage_ObjectAccessControl + */ + public function insert($bucket, $object, Google_Service_Storage_ObjectAccessControl $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'object' => $object, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Storage_ObjectAccessControl"); + } + /** + * Retrieves ACL entries on the specified object. + * (objectAccessControls.listObjectAccessControls) + * + * @param string $bucket + * Name of a bucket. + * @param string $object + * Name of the object. + * @param array $optParams Optional parameters. + * + * @opt_param string generation + * If present, selects a specific revision of this object (as opposed to the latest version, the + * default). + * @return Google_Service_Storage_ObjectAccessControls + */ + public function listObjectAccessControls($bucket, $object, $optParams = array()) + { + $params = array('bucket' => $bucket, 'object' => $object); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Storage_ObjectAccessControls"); + } + /** + * Updates an ACL entry on the specified object. This method supports patch + * semantics. (objectAccessControls.patch) + * + * @param string $bucket + * Name of a bucket. + * @param string $object + * Name of the object. + * @param string $entity + * The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group- + * emailAddress, allUsers, or allAuthenticatedUsers. + * @param Google_ObjectAccessControl $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string generation + * If present, selects a specific revision of this object (as opposed to the latest version, the + * default). + * @return Google_Service_Storage_ObjectAccessControl + */ + public function patch($bucket, $object, $entity, Google_Service_Storage_ObjectAccessControl $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'object' => $object, 'entity' => $entity, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Storage_ObjectAccessControl"); + } + /** + * Updates an ACL entry on the specified object. (objectAccessControls.update) + * + * @param string $bucket + * Name of a bucket. + * @param string $object + * Name of the object. + * @param string $entity + * The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group- + * emailAddress, allUsers, or allAuthenticatedUsers. + * @param Google_ObjectAccessControl $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string generation + * If present, selects a specific revision of this object (as opposed to the latest version, the + * default). + * @return Google_Service_Storage_ObjectAccessControl + */ + public function update($bucket, $object, $entity, Google_Service_Storage_ObjectAccessControl $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'object' => $object, 'entity' => $entity, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Storage_ObjectAccessControl"); + } +} + +/** + * The "objects" collection of methods. + * Typical usage is: + * + * $storageService = new Google_Service_Storage(...); + * $objects = $storageService->objects; + * + */ +class Google_Service_Storage_Objects_Resource extends Google_Service_Resource +{ + + /** + * Concatenates a list of existing objects into a new object in the same bucket. + * (objects.compose) + * + * @param string $destinationBucket + * Name of the bucket in which to store the new object. + * @param string $destinationObject + * Name of the new object. + * @param Google_ComposeRequest $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string ifGenerationMatch + * Makes the operation conditional on whether the object's current generation matches the given + * value. + * @opt_param string ifMetagenerationMatch + * Makes the operation conditional on whether the object's current metageneration matches the given + * value. + * @opt_param string destinationPredefinedAcl + * Apply a predefined set of access controls to the destination object. + * @return Google_Service_Storage_StorageObject + */ + public function compose($destinationBucket, $destinationObject, Google_Service_Storage_ComposeRequest $postBody, $optParams = array()) + { + $params = array('destinationBucket' => $destinationBucket, 'destinationObject' => $destinationObject, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('compose', array($params), "Google_Service_Storage_StorageObject"); + } + /** + * Copies an object to a specified location. Optionally overrides metadata. + * (objects.copy) + * + * @param string $sourceBucket + * Name of the bucket in which to find the source object. + * @param string $sourceObject + * Name of the source object. + * @param string $destinationBucket + * Name of the bucket in which to store the new object. Overrides the provided object metadata's + * bucket value, if any. + * @param string $destinationObject + * Name of the new object. Required when the object metadata is not otherwise provided. Overrides + * the object metadata's name value, if any. + * @param Google_StorageObject $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string ifSourceGenerationNotMatch + * Makes the operation conditional on whether the source object's generation does not match the + * given value. + * @opt_param string ifGenerationNotMatch + * Makes the operation conditional on whether the destination object's current generation does not + * match the given value. + * @opt_param string ifSourceMetagenerationNotMatch + * Makes the operation conditional on whether the source object's current metageneration does not + * match the given value. + * @opt_param string ifMetagenerationMatch + * Makes the operation conditional on whether the destination object's current metageneration + * matches the given value. + * @opt_param string sourceGeneration + * If present, selects a specific revision of the source object (as opposed to the latest version, + * the default). + * @opt_param string destinationPredefinedAcl + * Apply a predefined set of access controls to the destination object. + * @opt_param string ifSourceGenerationMatch + * Makes the operation conditional on whether the source object's generation matches the given + * value. + * @opt_param string ifSourceMetagenerationMatch + * Makes the operation conditional on whether the source object's current metageneration matches + * the given value. + * @opt_param string ifGenerationMatch + * Makes the operation conditional on whether the destination object's current generation matches + * the given value. + * @opt_param string ifMetagenerationNotMatch + * Makes the operation conditional on whether the destination object's current metageneration does + * not match the given value. + * @opt_param string projection + * Set of properties to return. Defaults to noAcl, unless the object resource specifies the acl + * property, when it defaults to full. + * @return Google_Service_Storage_StorageObject + */ + public function copy($sourceBucket, $sourceObject, $destinationBucket, $destinationObject, Google_Service_Storage_StorageObject $postBody, $optParams = array()) + { + $params = array('sourceBucket' => $sourceBucket, 'sourceObject' => $sourceObject, 'destinationBucket' => $destinationBucket, 'destinationObject' => $destinationObject, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('copy', array($params), "Google_Service_Storage_StorageObject"); + } + /** + * Deletes an object and its metadata. Deletions are permanent if versioning is + * not enabled for the bucket, or if the generation parameter is used. + * (objects.delete) + * + * @param string $bucket + * Name of the bucket in which the object resides. + * @param string $object + * Name of the object. + * @param array $optParams Optional parameters. + * + * @opt_param string ifGenerationNotMatch + * Makes the operation conditional on whether the object's current generation does not match the + * given value. + * @opt_param string generation + * If present, permanently deletes a specific revision of this object (as opposed to the latest + * version, the default). + * @opt_param string ifMetagenerationMatch + * Makes the operation conditional on whether the object's current metageneration matches the given + * value. + * @opt_param string ifGenerationMatch + * Makes the operation conditional on whether the object's current generation matches the given + * value. + * @opt_param string ifMetagenerationNotMatch + * Makes the operation conditional on whether the object's current metageneration does not match + * the given value. + */ + public function delete($bucket, $object, $optParams = array()) + { + $params = array('bucket' => $bucket, 'object' => $object); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves objects or their metadata. (objects.get) + * + * @param string $bucket + * Name of the bucket in which the object resides. + * @param string $object + * Name of the object. + * @param array $optParams Optional parameters. + * + * @opt_param string ifGenerationNotMatch + * Makes the operation conditional on whether the object's generation does not match the given + * value. + * @opt_param string generation + * If present, selects a specific revision of this object (as opposed to the latest version, the + * default). + * @opt_param string ifMetagenerationMatch + * Makes the operation conditional on whether the object's current metageneration matches the given + * value. + * @opt_param string ifGenerationMatch + * Makes the operation conditional on whether the object's generation matches the given value. + * @opt_param string ifMetagenerationNotMatch + * Makes the operation conditional on whether the object's current metageneration does not match + * the given value. + * @opt_param string projection + * Set of properties to return. Defaults to noAcl. + * @return Google_Service_Storage_StorageObject + */ + public function get($bucket, $object, $optParams = array()) + { + $params = array('bucket' => $bucket, 'object' => $object); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Storage_StorageObject"); + } + /** + * Stores a new object and metadata. (objects.insert) + * + * @param string $bucket + * Name of the bucket in which to store the new object. Overrides the provided object metadata's + * bucket value, if any. + * @param Google_StorageObject $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string predefinedAcl + * Apply a predefined set of access controls to this object. + * @opt_param string projection + * Set of properties to return. Defaults to noAcl, unless the object resource specifies the acl + * property, when it defaults to full. + * @opt_param string ifGenerationNotMatch + * Makes the operation conditional on whether the object's current generation does not match the + * given value. + * @opt_param string ifMetagenerationMatch + * Makes the operation conditional on whether the object's current metageneration matches the given + * value. + * @opt_param string contentEncoding + * If set, sets the contentEncoding property of the final object to this value. Setting this + * parameter is equivalent to setting the contentEncoding metadata property. This can be useful + * when uploading an object with uploadType=media to indicate the encoding of the content being + * uploaded. + * @opt_param string ifGenerationMatch + * Makes the operation conditional on whether the object's current generation matches the given + * value. + * @opt_param string ifMetagenerationNotMatch + * Makes the operation conditional on whether the object's current metageneration does not match + * the given value. + * @opt_param string name + * Name of the object. Required when the object metadata is not otherwise provided. Overrides the + * object metadata's name value, if any. + * @return Google_Service_Storage_StorageObject + */ + public function insert($bucket, Google_Service_Storage_StorageObject $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Storage_StorageObject"); + } + /** + * Retrieves a list of objects matching the criteria. (objects.listObjects) + * + * @param string $bucket + * Name of the bucket in which to look for objects. + * @param array $optParams Optional parameters. + * + * @opt_param string projection + * Set of properties to return. Defaults to noAcl. + * @opt_param bool versions + * If true, lists all versions of a file as distinct results. + * @opt_param string prefix + * Filter results to objects whose names begin with this prefix. + * @opt_param string maxResults + * Maximum number of items plus prefixes to return. As duplicate prefixes are omitted, fewer total + * results may be returned than requested. + * @opt_param string pageToken + * A previously-returned page token representing part of the larger set of results to view. + * @opt_param string delimiter + * Returns results in a directory-like mode. items will contain only objects whose names, aside + * from the prefix, do not contain delimiter. Objects whose names, aside from the prefix, contain + * delimiter will have their name, truncated after the delimiter, returned in prefixes. Duplicate + * prefixes are omitted. + * @return Google_Service_Storage_Objects + */ + public function listObjects($bucket, $optParams = array()) + { + $params = array('bucket' => $bucket); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Storage_Objects"); + } + /** + * Updates an object's metadata. This method supports patch semantics. + * (objects.patch) + * + * @param string $bucket + * Name of the bucket in which the object resides. + * @param string $object + * Name of the object. + * @param Google_StorageObject $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string predefinedAcl + * Apply a predefined set of access controls to this object. + * @opt_param string ifGenerationNotMatch + * Makes the operation conditional on whether the object's current generation does not match the + * given value. + * @opt_param string generation + * If present, selects a specific revision of this object (as opposed to the latest version, the + * default). + * @opt_param string ifMetagenerationMatch + * Makes the operation conditional on whether the object's current metageneration matches the given + * value. + * @opt_param string ifGenerationMatch + * Makes the operation conditional on whether the object's current generation matches the given + * value. + * @opt_param string ifMetagenerationNotMatch + * Makes the operation conditional on whether the object's current metageneration does not match + * the given value. + * @opt_param string projection + * Set of properties to return. Defaults to full. + * @return Google_Service_Storage_StorageObject + */ + public function patch($bucket, $object, Google_Service_Storage_StorageObject $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'object' => $object, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Storage_StorageObject"); + } + /** + * Updates an object's metadata. (objects.update) + * + * @param string $bucket + * Name of the bucket in which the object resides. + * @param string $object + * Name of the object. + * @param Google_StorageObject $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string predefinedAcl + * Apply a predefined set of access controls to this object. + * @opt_param string ifGenerationNotMatch + * Makes the operation conditional on whether the object's current generation does not match the + * given value. + * @opt_param string generation + * If present, selects a specific revision of this object (as opposed to the latest version, the + * default). + * @opt_param string ifMetagenerationMatch + * Makes the operation conditional on whether the object's current metageneration matches the given + * value. + * @opt_param string ifGenerationMatch + * Makes the operation conditional on whether the object's current generation matches the given + * value. + * @opt_param string ifMetagenerationNotMatch + * Makes the operation conditional on whether the object's current metageneration does not match + * the given value. + * @opt_param string projection + * Set of properties to return. Defaults to full. + * @return Google_Service_Storage_StorageObject + */ + public function update($bucket, $object, Google_Service_Storage_StorageObject $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'object' => $object, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Storage_StorageObject"); + } + /** + * Watch for changes on all objects in a bucket. (objects.watchAll) + * + * @param string $bucket + * Name of the bucket in which to look for objects. + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string projection + * Set of properties to return. Defaults to noAcl. + * @opt_param bool versions + * If true, lists all versions of a file as distinct results. + * @opt_param string prefix + * Filter results to objects whose names begin with this prefix. + * @opt_param string maxResults + * Maximum number of items plus prefixes to return. As duplicate prefixes are omitted, fewer total + * results may be returned than requested. + * @opt_param string pageToken + * A previously-returned page token representing part of the larger set of results to view. + * @opt_param string delimiter + * Returns results in a directory-like mode. items will contain only objects whose names, aside + * from the prefix, do not contain delimiter. Objects whose names, aside from the prefix, contain + * delimiter will have their name, truncated after the delimiter, returned in prefixes. Duplicate + * prefixes are omitted. + * @return Google_Service_Storage_Channel + */ + public function watchAll($bucket, Google_Service_Storage_Channel $postBody, $optParams = array()) + { + $params = array('bucket' => $bucket, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('watchAll', array($params), "Google_Service_Storage_Channel"); + } +} + + + + +class Google_Service_Storage_Bucket extends Google_Collection +{ + protected $aclType = 'Google_Service_Storage_BucketAccessControl'; + protected $aclDataType = 'array'; + protected $corsType = 'Google_Service_Storage_BucketCors'; + protected $corsDataType = 'array'; + protected $defaultObjectAclType = 'Google_Service_Storage_ObjectAccessControl'; + protected $defaultObjectAclDataType = 'array'; + public $etag; + public $id; + public $kind; + protected $lifecycleType = 'Google_Service_Storage_BucketLifecycle'; + protected $lifecycleDataType = ''; + public $location; + protected $loggingType = 'Google_Service_Storage_BucketLogging'; + protected $loggingDataType = ''; + public $metageneration; + public $name; + protected $ownerType = 'Google_Service_Storage_BucketOwner'; + protected $ownerDataType = ''; + public $projectNumber; + public $selfLink; + public $storageClass; + public $timeCreated; + protected $versioningType = 'Google_Service_Storage_BucketVersioning'; + protected $versioningDataType = ''; + protected $websiteType = 'Google_Service_Storage_BucketWebsite'; + protected $websiteDataType = ''; + + public function setAcl($acl) + { + $this->acl = $acl; + } + + public function getAcl() + { + return $this->acl; + } + + public function setCors($cors) + { + $this->cors = $cors; + } + + public function getCors() + { + return $this->cors; + } + + public function setDefaultObjectAcl($defaultObjectAcl) + { + $this->defaultObjectAcl = $defaultObjectAcl; + } + + public function getDefaultObjectAcl() + { + return $this->defaultObjectAcl; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLifecycle(Google_Service_Storage_BucketLifecycle $lifecycle) + { + $this->lifecycle = $lifecycle; + } + + public function getLifecycle() + { + return $this->lifecycle; + } + + public function setLocation($location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setLogging(Google_Service_Storage_BucketLogging $logging) + { + $this->logging = $logging; + } + + public function getLogging() + { + return $this->logging; + } + + public function setMetageneration($metageneration) + { + $this->metageneration = $metageneration; + } + + public function getMetageneration() + { + return $this->metageneration; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setOwner(Google_Service_Storage_BucketOwner $owner) + { + $this->owner = $owner; + } + + public function getOwner() + { + return $this->owner; + } + + public function setProjectNumber($projectNumber) + { + $this->projectNumber = $projectNumber; + } + + public function getProjectNumber() + { + return $this->projectNumber; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setStorageClass($storageClass) + { + $this->storageClass = $storageClass; + } + + public function getStorageClass() + { + return $this->storageClass; + } + + public function setTimeCreated($timeCreated) + { + $this->timeCreated = $timeCreated; + } + + public function getTimeCreated() + { + return $this->timeCreated; + } + + public function setVersioning(Google_Service_Storage_BucketVersioning $versioning) + { + $this->versioning = $versioning; + } + + public function getVersioning() + { + return $this->versioning; + } + + public function setWebsite(Google_Service_Storage_BucketWebsite $website) + { + $this->website = $website; + } + + public function getWebsite() + { + return $this->website; + } +} + +class Google_Service_Storage_BucketAccessControl extends Google_Model +{ + public $bucket; + public $domain; + public $email; + public $entity; + public $entityId; + public $etag; + public $id; + public $kind; + protected $projectTeamType = 'Google_Service_Storage_BucketAccessControlProjectTeam'; + protected $projectTeamDataType = ''; + public $role; + public $selfLink; + + public function setBucket($bucket) + { + $this->bucket = $bucket; + } + + public function getBucket() + { + return $this->bucket; + } + + public function setDomain($domain) + { + $this->domain = $domain; + } + + public function getDomain() + { + return $this->domain; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setEntity($entity) + { + $this->entity = $entity; + } + + public function getEntity() + { + return $this->entity; + } + + public function setEntityId($entityId) + { + $this->entityId = $entityId; + } + + public function getEntityId() + { + return $this->entityId; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setProjectTeam(Google_Service_Storage_BucketAccessControlProjectTeam $projectTeam) + { + $this->projectTeam = $projectTeam; + } + + public function getProjectTeam() + { + return $this->projectTeam; + } + + public function setRole($role) + { + $this->role = $role; + } + + public function getRole() + { + return $this->role; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Storage_BucketAccessControlProjectTeam extends Google_Model +{ + public $projectNumber; + public $team; + + public function setProjectNumber($projectNumber) + { + $this->projectNumber = $projectNumber; + } + + public function getProjectNumber() + { + return $this->projectNumber; + } + + public function setTeam($team) + { + $this->team = $team; + } + + public function getTeam() + { + return $this->team; + } +} + +class Google_Service_Storage_BucketAccessControls extends Google_Collection +{ + protected $itemsType = 'Google_Service_Storage_BucketAccessControl'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Storage_BucketCors extends Google_Collection +{ + public $maxAgeSeconds; + public $method; + public $origin; + public $responseHeader; + + public function setMaxAgeSeconds($maxAgeSeconds) + { + $this->maxAgeSeconds = $maxAgeSeconds; + } + + public function getMaxAgeSeconds() + { + return $this->maxAgeSeconds; + } + + public function setMethod($method) + { + $this->method = $method; + } + + public function getMethod() + { + return $this->method; + } + + public function setOrigin($origin) + { + $this->origin = $origin; + } + + public function getOrigin() + { + return $this->origin; + } + + public function setResponseHeader($responseHeader) + { + $this->responseHeader = $responseHeader; + } + + public function getResponseHeader() + { + return $this->responseHeader; + } +} + +class Google_Service_Storage_BucketLifecycle extends Google_Collection +{ + protected $ruleType = 'Google_Service_Storage_BucketLifecycleRule'; + protected $ruleDataType = 'array'; + + public function setRule($rule) + { + $this->rule = $rule; + } + + public function getRule() + { + return $this->rule; + } +} + +class Google_Service_Storage_BucketLifecycleRule extends Google_Model +{ + protected $actionType = 'Google_Service_Storage_BucketLifecycleRuleAction'; + protected $actionDataType = ''; + protected $conditionType = 'Google_Service_Storage_BucketLifecycleRuleCondition'; + protected $conditionDataType = ''; + + public function setAction(Google_Service_Storage_BucketLifecycleRuleAction $action) + { + $this->action = $action; + } + + public function getAction() + { + return $this->action; + } + + public function setCondition(Google_Service_Storage_BucketLifecycleRuleCondition $condition) + { + $this->condition = $condition; + } + + public function getCondition() + { + return $this->condition; + } +} + +class Google_Service_Storage_BucketLifecycleRuleAction extends Google_Model +{ + public $type; + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Storage_BucketLifecycleRuleCondition extends Google_Model +{ + public $age; + public $createdBefore; + public $isLive; + public $numNewerVersions; + + public function setAge($age) + { + $this->age = $age; + } + + public function getAge() + { + return $this->age; + } + + public function setCreatedBefore($createdBefore) + { + $this->createdBefore = $createdBefore; + } + + public function getCreatedBefore() + { + return $this->createdBefore; + } + + public function setIsLive($isLive) + { + $this->isLive = $isLive; + } + + public function getIsLive() + { + return $this->isLive; + } + + public function setNumNewerVersions($numNewerVersions) + { + $this->numNewerVersions = $numNewerVersions; + } + + public function getNumNewerVersions() + { + return $this->numNewerVersions; + } +} + +class Google_Service_Storage_BucketLogging extends Google_Model +{ + public $logBucket; + public $logObjectPrefix; + + public function setLogBucket($logBucket) + { + $this->logBucket = $logBucket; + } + + public function getLogBucket() + { + return $this->logBucket; + } + + public function setLogObjectPrefix($logObjectPrefix) + { + $this->logObjectPrefix = $logObjectPrefix; + } + + public function getLogObjectPrefix() + { + return $this->logObjectPrefix; + } +} + +class Google_Service_Storage_BucketOwner extends Google_Model +{ + public $entity; + public $entityId; + + public function setEntity($entity) + { + $this->entity = $entity; + } + + public function getEntity() + { + return $this->entity; + } + + public function setEntityId($entityId) + { + $this->entityId = $entityId; + } + + public function getEntityId() + { + return $this->entityId; + } +} + +class Google_Service_Storage_BucketVersioning extends Google_Model +{ + public $enabled; + + public function setEnabled($enabled) + { + $this->enabled = $enabled; + } + + public function getEnabled() + { + return $this->enabled; + } +} + +class Google_Service_Storage_BucketWebsite extends Google_Model +{ + public $mainPageSuffix; + public $notFoundPage; + + public function setMainPageSuffix($mainPageSuffix) + { + $this->mainPageSuffix = $mainPageSuffix; + } + + public function getMainPageSuffix() + { + return $this->mainPageSuffix; + } + + public function setNotFoundPage($notFoundPage) + { + $this->notFoundPage = $notFoundPage; + } + + public function getNotFoundPage() + { + return $this->notFoundPage; + } +} + +class Google_Service_Storage_Buckets extends Google_Collection +{ + protected $itemsType = 'Google_Service_Storage_Bucket'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Storage_Channel extends Google_Model +{ + public $address; + public $expiration; + public $id; + public $kind; + public $params; + public $payload; + public $resourceId; + public $resourceUri; + public $token; + public $type; + + public function setAddress($address) + { + $this->address = $address; + } + + public function getAddress() + { + return $this->address; + } + + public function setExpiration($expiration) + { + $this->expiration = $expiration; + } + + public function getExpiration() + { + return $this->expiration; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setParams($params) + { + $this->params = $params; + } + + public function getParams() + { + return $this->params; + } + + public function setPayload($payload) + { + $this->payload = $payload; + } + + public function getPayload() + { + return $this->payload; + } + + public function setResourceId($resourceId) + { + $this->resourceId = $resourceId; + } + + public function getResourceId() + { + return $this->resourceId; + } + + public function setResourceUri($resourceUri) + { + $this->resourceUri = $resourceUri; + } + + public function getResourceUri() + { + return $this->resourceUri; + } + + public function setToken($token) + { + $this->token = $token; + } + + public function getToken() + { + return $this->token; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Storage_ChannelParams extends Google_Model +{ + +} + +class Google_Service_Storage_ComposeRequest extends Google_Collection +{ + protected $destinationType = 'Google_Service_Storage_StorageObject'; + protected $destinationDataType = ''; + public $kind; + protected $sourceObjectsType = 'Google_Service_Storage_ComposeRequestSourceObjects'; + protected $sourceObjectsDataType = 'array'; + + public function setDestination(Google_Service_Storage_StorageObject $destination) + { + $this->destination = $destination; + } + + public function getDestination() + { + return $this->destination; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSourceObjects($sourceObjects) + { + $this->sourceObjects = $sourceObjects; + } + + public function getSourceObjects() + { + return $this->sourceObjects; + } +} + +class Google_Service_Storage_ComposeRequestSourceObjects extends Google_Model +{ + public $generation; + public $name; + protected $objectPreconditionsType = 'Google_Service_Storage_ComposeRequestSourceObjectsObjectPreconditions'; + protected $objectPreconditionsDataType = ''; + + public function setGeneration($generation) + { + $this->generation = $generation; + } + + public function getGeneration() + { + return $this->generation; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setObjectPreconditions(Google_Service_Storage_ComposeRequestSourceObjectsObjectPreconditions $objectPreconditions) + { + $this->objectPreconditions = $objectPreconditions; + } + + public function getObjectPreconditions() + { + return $this->objectPreconditions; + } +} + +class Google_Service_Storage_ComposeRequestSourceObjectsObjectPreconditions extends Google_Model +{ + public $ifGenerationMatch; + + public function setIfGenerationMatch($ifGenerationMatch) + { + $this->ifGenerationMatch = $ifGenerationMatch; + } + + public function getIfGenerationMatch() + { + return $this->ifGenerationMatch; + } +} + +class Google_Service_Storage_ObjectAccessControl extends Google_Model +{ + public $bucket; + public $domain; + public $email; + public $entity; + public $entityId; + public $etag; + public $generation; + public $id; + public $kind; + public $object; + protected $projectTeamType = 'Google_Service_Storage_ObjectAccessControlProjectTeam'; + protected $projectTeamDataType = ''; + public $role; + public $selfLink; + + public function setBucket($bucket) + { + $this->bucket = $bucket; + } + + public function getBucket() + { + return $this->bucket; + } + + public function setDomain($domain) + { + $this->domain = $domain; + } + + public function getDomain() + { + return $this->domain; + } + + public function setEmail($email) + { + $this->email = $email; + } + + public function getEmail() + { + return $this->email; + } + + public function setEntity($entity) + { + $this->entity = $entity; + } + + public function getEntity() + { + return $this->entity; + } + + public function setEntityId($entityId) + { + $this->entityId = $entityId; + } + + public function getEntityId() + { + return $this->entityId; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setGeneration($generation) + { + $this->generation = $generation; + } + + public function getGeneration() + { + return $this->generation; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setObject($object) + { + $this->object = $object; + } + + public function getObject() + { + return $this->object; + } + + public function setProjectTeam(Google_Service_Storage_ObjectAccessControlProjectTeam $projectTeam) + { + $this->projectTeam = $projectTeam; + } + + public function getProjectTeam() + { + return $this->projectTeam; + } + + public function setRole($role) + { + $this->role = $role; + } + + public function getRole() + { + return $this->role; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } +} + +class Google_Service_Storage_ObjectAccessControlProjectTeam extends Google_Model +{ + public $projectNumber; + public $team; + + public function setProjectNumber($projectNumber) + { + $this->projectNumber = $projectNumber; + } + + public function getProjectNumber() + { + return $this->projectNumber; + } + + public function setTeam($team) + { + $this->team = $team; + } + + public function getTeam() + { + return $this->team; + } +} + +class Google_Service_Storage_ObjectAccessControls extends Google_Collection +{ + public $items; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Storage_Objects extends Google_Collection +{ + protected $itemsType = 'Google_Service_Storage_StorageObject'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + public $prefixes; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPrefixes($prefixes) + { + $this->prefixes = $prefixes; + } + + public function getPrefixes() + { + return $this->prefixes; + } +} + +class Google_Service_Storage_StorageObject extends Google_Collection +{ + protected $aclType = 'Google_Service_Storage_ObjectAccessControl'; + protected $aclDataType = 'array'; + public $bucket; + public $cacheControl; + public $componentCount; + public $contentDisposition; + public $contentEncoding; + public $contentLanguage; + public $contentType; + public $crc32c; + public $etag; + public $generation; + public $id; + public $kind; + public $md5Hash; + public $mediaLink; + public $metadata; + public $metageneration; + public $name; + protected $ownerType = 'Google_Service_Storage_StorageObjectOwner'; + protected $ownerDataType = ''; + public $selfLink; + public $size; + public $storageClass; + public $timeDeleted; + public $updated; + + public function setAcl($acl) + { + $this->acl = $acl; + } + + public function getAcl() + { + return $this->acl; + } + + public function setBucket($bucket) + { + $this->bucket = $bucket; + } + + public function getBucket() + { + return $this->bucket; + } + + public function setCacheControl($cacheControl) + { + $this->cacheControl = $cacheControl; + } + + public function getCacheControl() + { + return $this->cacheControl; + } + + public function setComponentCount($componentCount) + { + $this->componentCount = $componentCount; + } + + public function getComponentCount() + { + return $this->componentCount; + } + + public function setContentDisposition($contentDisposition) + { + $this->contentDisposition = $contentDisposition; + } + + public function getContentDisposition() + { + return $this->contentDisposition; + } + + public function setContentEncoding($contentEncoding) + { + $this->contentEncoding = $contentEncoding; + } + + public function getContentEncoding() + { + return $this->contentEncoding; + } + + public function setContentLanguage($contentLanguage) + { + $this->contentLanguage = $contentLanguage; + } + + public function getContentLanguage() + { + return $this->contentLanguage; + } + + public function setContentType($contentType) + { + $this->contentType = $contentType; + } + + public function getContentType() + { + return $this->contentType; + } + + public function setCrc32c($crc32c) + { + $this->crc32c = $crc32c; + } + + public function getCrc32c() + { + return $this->crc32c; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setGeneration($generation) + { + $this->generation = $generation; + } + + public function getGeneration() + { + return $this->generation; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMd5Hash($md5Hash) + { + $this->md5Hash = $md5Hash; + } + + public function getMd5Hash() + { + return $this->md5Hash; + } + + public function setMediaLink($mediaLink) + { + $this->mediaLink = $mediaLink; + } + + public function getMediaLink() + { + return $this->mediaLink; + } + + public function setMetadata($metadata) + { + $this->metadata = $metadata; + } + + public function getMetadata() + { + return $this->metadata; + } + + public function setMetageneration($metageneration) + { + $this->metageneration = $metageneration; + } + + public function getMetageneration() + { + return $this->metageneration; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setOwner(Google_Service_Storage_StorageObjectOwner $owner) + { + $this->owner = $owner; + } + + public function getOwner() + { + return $this->owner; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setSize($size) + { + $this->size = $size; + } + + public function getSize() + { + return $this->size; + } + + public function setStorageClass($storageClass) + { + $this->storageClass = $storageClass; + } + + public function getStorageClass() + { + return $this->storageClass; + } + + public function setTimeDeleted($timeDeleted) + { + $this->timeDeleted = $timeDeleted; + } + + public function getTimeDeleted() + { + return $this->timeDeleted; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } +} + +class Google_Service_Storage_StorageObjectMetadata extends Google_Model +{ + +} + +class Google_Service_Storage_StorageObjectOwner extends Google_Model +{ + public $entity; + public $entityId; + + public function setEntity($entity) + { + $this->entity = $entity; + } + + public function getEntity() + { + return $this->entity; + } + + public function setEntityId($entityId) + { + $this->entityId = $entityId; + } + + public function getEntityId() + { + return $this->entityId; + } +} diff --git a/oauth/Google/Service/Taskqueue.php b/oauth/Google/Service/Taskqueue.php new file mode 100644 index 0000000..2255fc6 --- /dev/null +++ b/oauth/Google/Service/Taskqueue.php @@ -0,0 +1,727 @@ + + * Lets you access a Google App Engine Pull Task Queue over REST. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Taskqueue extends Google_Service +{ + /** Manage your Tasks and Taskqueues. */ + const TASKQUEUE = "https://www.googleapis.com/auth/taskqueue"; + /** Consume Tasks from your Taskqueues. */ + const TASKQUEUE_CONSUMER = "https://www.googleapis.com/auth/taskqueue.consumer"; + + public $taskqueues; + public $tasks; + + + /** + * Constructs the internal representation of the Taskqueue service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'taskqueue/v1beta2/projects/'; + $this->version = 'v1beta2'; + $this->serviceName = 'taskqueue'; + + $this->taskqueues = new Google_Service_Taskqueue_Taskqueues_Resource( + $this, + $this->serviceName, + 'taskqueues', + array( + 'methods' => array( + 'get' => array( + 'path' => '{project}/taskqueues/{taskqueue}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'taskqueue' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'getStats' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ), + ) + ) + ); + $this->tasks = new Google_Service_Taskqueue_Tasks_Resource( + $this, + $this->serviceName, + 'tasks', + array( + 'methods' => array( + 'delete' => array( + 'path' => '{project}/taskqueues/{taskqueue}/tasks/{task}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'taskqueue' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'task' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => '{project}/taskqueues/{taskqueue}/tasks/{task}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'taskqueue' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'task' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => '{project}/taskqueues/{taskqueue}/tasks', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'taskqueue' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'lease' => array( + 'path' => '{project}/taskqueues/{taskqueue}/tasks/lease', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'taskqueue' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'numTasks' => array( + 'location' => 'query', + 'type' => 'integer', + 'required' => true, + ), + 'leaseSecs' => array( + 'location' => 'query', + 'type' => 'integer', + 'required' => true, + ), + 'groupByTag' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'tag' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => '{project}/taskqueues/{taskqueue}/tasks', + 'httpMethod' => 'GET', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'taskqueue' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'patch' => array( + 'path' => '{project}/taskqueues/{taskqueue}/tasks/{task}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'taskqueue' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'task' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'newLeaseSeconds' => array( + 'location' => 'query', + 'type' => 'integer', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => '{project}/taskqueues/{taskqueue}/tasks/{task}', + 'httpMethod' => 'POST', + 'parameters' => array( + 'project' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'taskqueue' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'task' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'newLeaseSeconds' => array( + 'location' => 'query', + 'type' => 'integer', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "taskqueues" collection of methods. + * Typical usage is: + * + * $taskqueueService = new Google_Service_Taskqueue(...); + * $taskqueues = $taskqueueService->taskqueues; + * + */ +class Google_Service_Taskqueue_Taskqueues_Resource extends Google_Service_Resource +{ + + /** + * Get detailed information about a TaskQueue. (taskqueues.get) + * + * @param string $project + * The project under which the queue lies. + * @param string $taskqueue + * The id of the taskqueue to get the properties of. + * @param array $optParams Optional parameters. + * + * @opt_param bool getStats + * Whether to get stats. Optional. + * @return Google_Service_Taskqueue_TaskQueue + */ + public function get($project, $taskqueue, $optParams = array()) + { + $params = array('project' => $project, 'taskqueue' => $taskqueue); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Taskqueue_TaskQueue"); + } +} + +/** + * The "tasks" collection of methods. + * Typical usage is: + * + * $taskqueueService = new Google_Service_Taskqueue(...); + * $tasks = $taskqueueService->tasks; + * + */ +class Google_Service_Taskqueue_Tasks_Resource extends Google_Service_Resource +{ + + /** + * Delete a task from a TaskQueue. (tasks.delete) + * + * @param string $project + * The project under which the queue lies. + * @param string $taskqueue + * The taskqueue to delete a task from. + * @param string $task + * The id of the task to delete. + * @param array $optParams Optional parameters. + */ + public function delete($project, $taskqueue, $task, $optParams = array()) + { + $params = array('project' => $project, 'taskqueue' => $taskqueue, 'task' => $task); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Get a particular task from a TaskQueue. (tasks.get) + * + * @param string $project + * The project under which the queue lies. + * @param string $taskqueue + * The taskqueue in which the task belongs. + * @param string $task + * The task to get properties of. + * @param array $optParams Optional parameters. + * @return Google_Service_Taskqueue_Task + */ + public function get($project, $taskqueue, $task, $optParams = array()) + { + $params = array('project' => $project, 'taskqueue' => $taskqueue, 'task' => $task); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Taskqueue_Task"); + } + /** + * Insert a new task in a TaskQueue (tasks.insert) + * + * @param string $project + * The project under which the queue lies + * @param string $taskqueue + * The taskqueue to insert the task into + * @param Google_Task $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Taskqueue_Task + */ + public function insert($project, $taskqueue, Google_Service_Taskqueue_Task $postBody, $optParams = array()) + { + $params = array('project' => $project, 'taskqueue' => $taskqueue, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Taskqueue_Task"); + } + /** + * Lease 1 or more tasks from a TaskQueue. (tasks.lease) + * + * @param string $project + * The project under which the queue lies. + * @param string $taskqueue + * The taskqueue to lease a task from. + * @param int $numTasks + * The number of tasks to lease. + * @param int $leaseSecs + * The lease in seconds. + * @param array $optParams Optional parameters. + * + * @opt_param bool groupByTag + * When true, all returned tasks will have the same tag + * @opt_param string tag + * The tag allowed for tasks in the response. Must only be specified if group_by_tag is true. If + * group_by_tag is true and tag is not specified the tag will be that of the oldest task by eta, + * i.e. the first available tag + * @return Google_Service_Taskqueue_Tasks + */ + public function lease($project, $taskqueue, $numTasks, $leaseSecs, $optParams = array()) + { + $params = array('project' => $project, 'taskqueue' => $taskqueue, 'numTasks' => $numTasks, 'leaseSecs' => $leaseSecs); + $params = array_merge($params, $optParams); + return $this->call('lease', array($params), "Google_Service_Taskqueue_Tasks"); + } + /** + * List Tasks in a TaskQueue (tasks.listTasks) + * + * @param string $project + * The project under which the queue lies. + * @param string $taskqueue + * The id of the taskqueue to list tasks from. + * @param array $optParams Optional parameters. + * @return Google_Service_Taskqueue_Tasks2 + */ + public function listTasks($project, $taskqueue, $optParams = array()) + { + $params = array('project' => $project, 'taskqueue' => $taskqueue); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Taskqueue_Tasks2"); + } + /** + * Update tasks that are leased out of a TaskQueue. This method supports patch + * semantics. (tasks.patch) + * + * @param string $project + * The project under which the queue lies. + * @param string $taskqueue + * + * @param string $task + * + * @param int $newLeaseSeconds + * The new lease in seconds. + * @param Google_Task $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Taskqueue_Task + */ + public function patch($project, $taskqueue, $task, $newLeaseSeconds, Google_Service_Taskqueue_Task $postBody, $optParams = array()) + { + $params = array('project' => $project, 'taskqueue' => $taskqueue, 'task' => $task, 'newLeaseSeconds' => $newLeaseSeconds, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Taskqueue_Task"); + } + /** + * Update tasks that are leased out of a TaskQueue. (tasks.update) + * + * @param string $project + * The project under which the queue lies. + * @param string $taskqueue + * + * @param string $task + * + * @param int $newLeaseSeconds + * The new lease in seconds. + * @param Google_Task $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Taskqueue_Task + */ + public function update($project, $taskqueue, $task, $newLeaseSeconds, Google_Service_Taskqueue_Task $postBody, $optParams = array()) + { + $params = array('project' => $project, 'taskqueue' => $taskqueue, 'task' => $task, 'newLeaseSeconds' => $newLeaseSeconds, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Taskqueue_Task"); + } +} + + + + +class Google_Service_Taskqueue_Task extends Google_Model +{ + public $enqueueTimestamp; + public $id; + public $kind; + public $leaseTimestamp; + public $payloadBase64; + public $queueName; + public $retryCount; + public $tag; + + public function setEnqueueTimestamp($enqueueTimestamp) + { + $this->enqueueTimestamp = $enqueueTimestamp; + } + + public function getEnqueueTimestamp() + { + return $this->enqueueTimestamp; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLeaseTimestamp($leaseTimestamp) + { + $this->leaseTimestamp = $leaseTimestamp; + } + + public function getLeaseTimestamp() + { + return $this->leaseTimestamp; + } + + public function setPayloadBase64($payloadBase64) + { + $this->payloadBase64 = $payloadBase64; + } + + public function getPayloadBase64() + { + return $this->payloadBase64; + } + + public function setQueueName($queueName) + { + $this->queueName = $queueName; + } + + public function getQueueName() + { + return $this->queueName; + } + + public function setRetryCount($retryCount) + { + $this->retryCount = $retryCount; + } + + public function getRetryCount() + { + return $this->retryCount; + } + + public function setTag($tag) + { + $this->tag = $tag; + } + + public function getTag() + { + return $this->tag; + } +} + +class Google_Service_Taskqueue_TaskQueue extends Google_Model +{ + protected $aclType = 'Google_Service_Taskqueue_TaskQueueAcl'; + protected $aclDataType = ''; + public $id; + public $kind; + public $maxLeases; + protected $statsType = 'Google_Service_Taskqueue_TaskQueueStats'; + protected $statsDataType = ''; + + public function setAcl(Google_Service_Taskqueue_TaskQueueAcl $acl) + { + $this->acl = $acl; + } + + public function getAcl() + { + return $this->acl; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setMaxLeases($maxLeases) + { + $this->maxLeases = $maxLeases; + } + + public function getMaxLeases() + { + return $this->maxLeases; + } + + public function setStats(Google_Service_Taskqueue_TaskQueueStats $stats) + { + $this->stats = $stats; + } + + public function getStats() + { + return $this->stats; + } +} + +class Google_Service_Taskqueue_TaskQueueAcl extends Google_Collection +{ + public $adminEmails; + public $consumerEmails; + public $producerEmails; + + public function setAdminEmails($adminEmails) + { + $this->adminEmails = $adminEmails; + } + + public function getAdminEmails() + { + return $this->adminEmails; + } + + public function setConsumerEmails($consumerEmails) + { + $this->consumerEmails = $consumerEmails; + } + + public function getConsumerEmails() + { + return $this->consumerEmails; + } + + public function setProducerEmails($producerEmails) + { + $this->producerEmails = $producerEmails; + } + + public function getProducerEmails() + { + return $this->producerEmails; + } +} + +class Google_Service_Taskqueue_TaskQueueStats extends Google_Model +{ + public $leasedLastHour; + public $leasedLastMinute; + public $oldestTask; + public $totalTasks; + + public function setLeasedLastHour($leasedLastHour) + { + $this->leasedLastHour = $leasedLastHour; + } + + public function getLeasedLastHour() + { + return $this->leasedLastHour; + } + + public function setLeasedLastMinute($leasedLastMinute) + { + $this->leasedLastMinute = $leasedLastMinute; + } + + public function getLeasedLastMinute() + { + return $this->leasedLastMinute; + } + + public function setOldestTask($oldestTask) + { + $this->oldestTask = $oldestTask; + } + + public function getOldestTask() + { + return $this->oldestTask; + } + + public function setTotalTasks($totalTasks) + { + $this->totalTasks = $totalTasks; + } + + public function getTotalTasks() + { + return $this->totalTasks; + } +} + +class Google_Service_Taskqueue_Tasks extends Google_Collection +{ + protected $itemsType = 'Google_Service_Taskqueue_Task'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_Taskqueue_Tasks2 extends Google_Collection +{ + protected $itemsType = 'Google_Service_Taskqueue_Task'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} diff --git a/oauth/Google/Service/Tasks.php b/oauth/Google/Service/Tasks.php new file mode 100644 index 0000000..ea9d66d --- /dev/null +++ b/oauth/Google/Service/Tasks.php @@ -0,0 +1,958 @@ + + * Lets you manage your tasks and task lists. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Tasks extends Google_Service +{ + /** Manage your tasks. */ + const TASKS = "https://www.googleapis.com/auth/tasks"; + /** View your tasks. */ + const TASKS_READONLY = "https://www.googleapis.com/auth/tasks.readonly"; + + public $tasklists; + public $tasks; + + + /** + * Constructs the internal representation of the Tasks service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'tasks/v1/'; + $this->version = 'v1'; + $this->serviceName = 'tasks'; + + $this->tasklists = new Google_Service_Tasks_Tasklists_Resource( + $this, + $this->serviceName, + 'tasklists', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'users/@me/lists/{tasklist}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'users/@me/lists/{tasklist}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'users/@me/lists', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'list' => array( + 'path' => 'users/@me/lists', + 'httpMethod' => 'GET', + 'parameters' => array( + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'users/@me/lists/{tasklist}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'users/@me/lists/{tasklist}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->tasks = new Google_Service_Tasks_Tasks_Resource( + $this, + $this->serviceName, + 'tasks', + array( + 'methods' => array( + 'clear' => array( + 'path' => 'lists/{tasklist}/clear', + 'httpMethod' => 'POST', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'delete' => array( + 'path' => 'lists/{tasklist}/tasks/{task}', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'task' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'get' => array( + 'path' => 'lists/{tasklist}/tasks/{task}', + 'httpMethod' => 'GET', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'task' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'lists/{tasklist}/tasks', + 'httpMethod' => 'POST', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'parent' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'previous' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'lists/{tasklist}/tasks', + 'httpMethod' => 'GET', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'dueMax' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showDeleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'updatedMin' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'completedMin' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showCompleted' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'completedMax' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'showHidden' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'dueMin' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'move' => array( + 'path' => 'lists/{tasklist}/tasks/{task}/move', + 'httpMethod' => 'POST', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'task' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'parent' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'previous' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'patch' => array( + 'path' => 'lists/{tasklist}/tasks/{task}', + 'httpMethod' => 'PATCH', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'task' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ),'update' => array( + 'path' => 'lists/{tasklist}/tasks/{task}', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'tasklist' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + 'task' => array( + 'location' => 'path', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "tasklists" collection of methods. + * Typical usage is: + * + * $tasksService = new Google_Service_Tasks(...); + * $tasklists = $tasksService->tasklists; + * + */ +class Google_Service_Tasks_Tasklists_Resource extends Google_Service_Resource +{ + + /** + * Deletes the authenticated user's specified task list. (tasklists.delete) + * + * @param string $tasklist + * Task list identifier. + * @param array $optParams Optional parameters. + */ + public function delete($tasklist, $optParams = array()) + { + $params = array('tasklist' => $tasklist); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Returns the authenticated user's specified task list. (tasklists.get) + * + * @param string $tasklist + * Task list identifier. + * @param array $optParams Optional parameters. + * @return Google_Service_Tasks_TaskList + */ + public function get($tasklist, $optParams = array()) + { + $params = array('tasklist' => $tasklist); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Tasks_TaskList"); + } + /** + * Creates a new task list and adds it to the authenticated user's task lists. + * (tasklists.insert) + * + * @param Google_TaskList $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Tasks_TaskList + */ + public function insert(Google_Service_Tasks_TaskList $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Tasks_TaskList"); + } + /** + * Returns all the authenticated user's task lists. (tasklists.listTasklists) + * + * @param array $optParams Optional parameters. + * + * @opt_param string pageToken + * Token specifying the result page to return. Optional. + * @opt_param string maxResults + * Maximum number of task lists returned on one page. Optional. The default is 100. + * @return Google_Service_Tasks_TaskLists + */ + public function listTasklists($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Tasks_TaskLists"); + } + /** + * Updates the authenticated user's specified task list. This method supports + * patch semantics. (tasklists.patch) + * + * @param string $tasklist + * Task list identifier. + * @param Google_TaskList $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Tasks_TaskList + */ + public function patch($tasklist, Google_Service_Tasks_TaskList $postBody, $optParams = array()) + { + $params = array('tasklist' => $tasklist, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Tasks_TaskList"); + } + /** + * Updates the authenticated user's specified task list. (tasklists.update) + * + * @param string $tasklist + * Task list identifier. + * @param Google_TaskList $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Tasks_TaskList + */ + public function update($tasklist, Google_Service_Tasks_TaskList $postBody, $optParams = array()) + { + $params = array('tasklist' => $tasklist, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Tasks_TaskList"); + } +} + +/** + * The "tasks" collection of methods. + * Typical usage is: + * + * $tasksService = new Google_Service_Tasks(...); + * $tasks = $tasksService->tasks; + * + */ +class Google_Service_Tasks_Tasks_Resource extends Google_Service_Resource +{ + + /** + * Clears all completed tasks from the specified task list. The affected tasks + * will be marked as 'hidden' and no longer be returned by default when + * retrieving all tasks for a task list. (tasks.clear) + * + * @param string $tasklist + * Task list identifier. + * @param array $optParams Optional parameters. + */ + public function clear($tasklist, $optParams = array()) + { + $params = array('tasklist' => $tasklist); + $params = array_merge($params, $optParams); + return $this->call('clear', array($params)); + } + /** + * Deletes the specified task from the task list. (tasks.delete) + * + * @param string $tasklist + * Task list identifier. + * @param string $task + * Task identifier. + * @param array $optParams Optional parameters. + */ + public function delete($tasklist, $task, $optParams = array()) + { + $params = array('tasklist' => $tasklist, 'task' => $task); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Returns the specified task. (tasks.get) + * + * @param string $tasklist + * Task list identifier. + * @param string $task + * Task identifier. + * @param array $optParams Optional parameters. + * @return Google_Service_Tasks_Task + */ + public function get($tasklist, $task, $optParams = array()) + { + $params = array('tasklist' => $tasklist, 'task' => $task); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Tasks_Task"); + } + /** + * Creates a new task on the specified task list. (tasks.insert) + * + * @param string $tasklist + * Task list identifier. + * @param Google_Task $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string parent + * Parent task identifier. If the task is created at the top level, this parameter is omitted. + * Optional. + * @opt_param string previous + * Previous sibling task identifier. If the task is created at the first position among its + * siblings, this parameter is omitted. Optional. + * @return Google_Service_Tasks_Task + */ + public function insert($tasklist, Google_Service_Tasks_Task $postBody, $optParams = array()) + { + $params = array('tasklist' => $tasklist, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Tasks_Task"); + } + /** + * Returns all tasks in the specified task list. (tasks.listTasks) + * + * @param string $tasklist + * Task list identifier. + * @param array $optParams Optional parameters. + * + * @opt_param string dueMax + * Upper bound for a task's due date (as a RFC 3339 timestamp) to filter by. Optional. The default + * is not to filter by due date. + * @opt_param bool showDeleted + * Flag indicating whether deleted tasks are returned in the result. Optional. The default is + * False. + * @opt_param string updatedMin + * Lower bound for a task's last modification time (as a RFC 3339 timestamp) to filter by. + * Optional. The default is not to filter by last modification time. + * @opt_param string completedMin + * Lower bound for a task's completion date (as a RFC 3339 timestamp) to filter by. Optional. The + * default is not to filter by completion date. + * @opt_param string maxResults + * Maximum number of task lists returned on one page. Optional. The default is 100. + * @opt_param bool showCompleted + * Flag indicating whether completed tasks are returned in the result. Optional. The default is + * True. + * @opt_param string pageToken + * Token specifying the result page to return. Optional. + * @opt_param string completedMax + * Upper bound for a task's completion date (as a RFC 3339 timestamp) to filter by. Optional. The + * default is not to filter by completion date. + * @opt_param bool showHidden + * Flag indicating whether hidden tasks are returned in the result. Optional. The default is False. + * @opt_param string dueMin + * Lower bound for a task's due date (as a RFC 3339 timestamp) to filter by. Optional. The default + * is not to filter by due date. + * @return Google_Service_Tasks_Tasks + */ + public function listTasks($tasklist, $optParams = array()) + { + $params = array('tasklist' => $tasklist); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Tasks_Tasks"); + } + /** + * Moves the specified task to another position in the task list. This can + * include putting it as a child task under a new parent and/or move it to a + * different position among its sibling tasks. (tasks.move) + * + * @param string $tasklist + * Task list identifier. + * @param string $task + * Task identifier. + * @param array $optParams Optional parameters. + * + * @opt_param string parent + * New parent task identifier. If the task is moved to the top level, this parameter is omitted. + * Optional. + * @opt_param string previous + * New previous sibling task identifier. If the task is moved to the first position among its + * siblings, this parameter is omitted. Optional. + * @return Google_Service_Tasks_Task + */ + public function move($tasklist, $task, $optParams = array()) + { + $params = array('tasklist' => $tasklist, 'task' => $task); + $params = array_merge($params, $optParams); + return $this->call('move', array($params), "Google_Service_Tasks_Task"); + } + /** + * Updates the specified task. This method supports patch semantics. + * (tasks.patch) + * + * @param string $tasklist + * Task list identifier. + * @param string $task + * Task identifier. + * @param Google_Task $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Tasks_Task + */ + public function patch($tasklist, $task, Google_Service_Tasks_Task $postBody, $optParams = array()) + { + $params = array('tasklist' => $tasklist, 'task' => $task, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('patch', array($params), "Google_Service_Tasks_Task"); + } + /** + * Updates the specified task. (tasks.update) + * + * @param string $tasklist + * Task list identifier. + * @param string $task + * Task identifier. + * @param Google_Task $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Tasks_Task + */ + public function update($tasklist, $task, Google_Service_Tasks_Task $postBody, $optParams = array()) + { + $params = array('tasklist' => $tasklist, 'task' => $task, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_Tasks_Task"); + } +} + + + + +class Google_Service_Tasks_Task extends Google_Collection +{ + public $completed; + public $deleted; + public $due; + public $etag; + public $hidden; + public $id; + public $kind; + protected $linksType = 'Google_Service_Tasks_TaskLinks'; + protected $linksDataType = 'array'; + public $notes; + public $parent; + public $position; + public $selfLink; + public $status; + public $title; + public $updated; + + public function setCompleted($completed) + { + $this->completed = $completed; + } + + public function getCompleted() + { + return $this->completed; + } + + public function setDeleted($deleted) + { + $this->deleted = $deleted; + } + + public function getDeleted() + { + return $this->deleted; + } + + public function setDue($due) + { + $this->due = $due; + } + + public function getDue() + { + return $this->due; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setHidden($hidden) + { + $this->hidden = $hidden; + } + + public function getHidden() + { + return $this->hidden; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLinks($links) + { + $this->links = $links; + } + + public function getLinks() + { + return $this->links; + } + + public function setNotes($notes) + { + $this->notes = $notes; + } + + public function getNotes() + { + return $this->notes; + } + + public function setParent($parent) + { + $this->parent = $parent; + } + + public function getParent() + { + return $this->parent; + } + + public function setPosition($position) + { + $this->position = $position; + } + + public function getPosition() + { + return $this->position; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } +} + +class Google_Service_Tasks_TaskLinks extends Google_Model +{ + public $description; + public $link; + public $type; + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setLink($link) + { + $this->link = $link; + } + + public function getLink() + { + return $this->link; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_Tasks_TaskList extends Google_Model +{ + public $etag; + public $id; + public $kind; + public $selfLink; + public $title; + public $updated; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSelfLink($selfLink) + { + $this->selfLink = $selfLink; + } + + public function getSelfLink() + { + return $this->selfLink; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setUpdated($updated) + { + $this->updated = $updated; + } + + public function getUpdated() + { + return $this->updated; + } +} + +class Google_Service_Tasks_TaskLists extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Tasks_TaskList'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} + +class Google_Service_Tasks_Tasks extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_Tasks_Task'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } +} diff --git a/oauth/Google/Service/Translate.php b/oauth/Google/Service/Translate.php new file mode 100644 index 0000000..a1c0556 --- /dev/null +++ b/oauth/Google/Service/Translate.php @@ -0,0 +1,367 @@ + + * Lets you translate text from one language to another + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Translate extends Google_Service +{ + + + public $detections; + public $languages; + public $translations; + + + /** + * Constructs the internal representation of the Translate service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'language/translate/'; + $this->version = 'v2'; + $this->serviceName = 'translate'; + + $this->detections = new Google_Service_Translate_Detections_Resource( + $this, + $this->serviceName, + 'detections', + array( + 'methods' => array( + 'list' => array( + 'path' => 'v2/detect', + 'httpMethod' => 'GET', + 'parameters' => array( + 'q' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->languages = new Google_Service_Translate_Languages_Resource( + $this, + $this->serviceName, + 'languages', + array( + 'methods' => array( + 'list' => array( + 'path' => 'v2/languages', + 'httpMethod' => 'GET', + 'parameters' => array( + 'target' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->translations = new Google_Service_Translate_Translations_Resource( + $this, + $this->serviceName, + 'translations', + array( + 'methods' => array( + 'list' => array( + 'path' => 'v2', + 'httpMethod' => 'GET', + 'parameters' => array( + 'q' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + 'required' => true, + ), + 'target' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'source' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'format' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'cid' => array( + 'location' => 'query', + 'type' => 'string', + 'repeated' => true, + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "detections" collection of methods. + * Typical usage is: + * + * $translateService = new Google_Service_Translate(...); + * $detections = $translateService->detections; + * + */ +class Google_Service_Translate_Detections_Resource extends Google_Service_Resource +{ + + /** + * Detect the language of text. (detections.listDetections) + * + * @param string $q + * The text to detect + * @param array $optParams Optional parameters. + * @return Google_Service_Translate_DetectionsListResponse + */ + public function listDetections($q, $optParams = array()) + { + $params = array('q' => $q); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Translate_DetectionsListResponse"); + } +} + +/** + * The "languages" collection of methods. + * Typical usage is: + * + * $translateService = new Google_Service_Translate(...); + * $languages = $translateService->languages; + * + */ +class Google_Service_Translate_Languages_Resource extends Google_Service_Resource +{ + + /** + * List the source/target languages supported by the API + * (languages.listLanguages) + * + * @param array $optParams Optional parameters. + * + * @opt_param string target + * the language and collation in which the localized results should be returned + * @return Google_Service_Translate_LanguagesListResponse + */ + public function listLanguages($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Translate_LanguagesListResponse"); + } +} + +/** + * The "translations" collection of methods. + * Typical usage is: + * + * $translateService = new Google_Service_Translate(...); + * $translations = $translateService->translations; + * + */ +class Google_Service_Translate_Translations_Resource extends Google_Service_Resource +{ + + /** + * Returns text translations from one language to another. + * (translations.listTranslations) + * + * @param string $q + * The text to translate + * @param string $target + * The target language into which the text should be translated + * @param array $optParams Optional parameters. + * + * @opt_param string source + * The source language of the text + * @opt_param string format + * The format of the text + * @opt_param string cid + * The customization id for translate + * @return Google_Service_Translate_TranslationsListResponse + */ + public function listTranslations($q, $target, $optParams = array()) + { + $params = array('q' => $q, 'target' => $target); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Translate_TranslationsListResponse"); + } +} + + + + +class Google_Service_Translate_DetectionsListResponse extends Google_Collection +{ + protected $detectionsType = 'Google_Service_Translate_DetectionsResourceItems'; + protected $detectionsDataType = 'array'; + + public function setDetections($detections) + { + $this->detections = $detections; + } + + public function getDetections() + { + return $this->detections; + } +} + +class Google_Service_Translate_DetectionsResourceItems extends Google_Model +{ + public $confidence; + public $isReliable; + public $language; + + public function setConfidence($confidence) + { + $this->confidence = $confidence; + } + + public function getConfidence() + { + return $this->confidence; + } + + public function setIsReliable($isReliable) + { + $this->isReliable = $isReliable; + } + + public function getIsReliable() + { + return $this->isReliable; + } + + public function setLanguage($language) + { + $this->language = $language; + } + + public function getLanguage() + { + return $this->language; + } +} + +class Google_Service_Translate_LanguagesListResponse extends Google_Collection +{ + protected $languagesType = 'Google_Service_Translate_LanguagesResource'; + protected $languagesDataType = 'array'; + + public function setLanguages($languages) + { + $this->languages = $languages; + } + + public function getLanguages() + { + return $this->languages; + } +} + +class Google_Service_Translate_LanguagesResource extends Google_Model +{ + public $language; + public $name; + + public function setLanguage($language) + { + $this->language = $language; + } + + public function getLanguage() + { + return $this->language; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_Translate_TranslationsListResponse extends Google_Collection +{ + protected $translationsType = 'Google_Service_Translate_TranslationsResource'; + protected $translationsDataType = 'array'; + + public function setTranslations($translations) + { + $this->translations = $translations; + } + + public function getTranslations() + { + return $this->translations; + } +} + +class Google_Service_Translate_TranslationsResource extends Google_Model +{ + public $detectedSourceLanguage; + public $translatedText; + + public function setDetectedSourceLanguage($detectedSourceLanguage) + { + $this->detectedSourceLanguage = $detectedSourceLanguage; + } + + public function getDetectedSourceLanguage() + { + return $this->detectedSourceLanguage; + } + + public function setTranslatedText($translatedText) + { + $this->translatedText = $translatedText; + } + + public function getTranslatedText() + { + return $this->translatedText; + } +} diff --git a/oauth/Google/Service/Urlshortener.php b/oauth/Google/Service/Urlshortener.php new file mode 100644 index 0000000..37f6c42 --- /dev/null +++ b/oauth/Google/Service/Urlshortener.php @@ -0,0 +1,453 @@ + + * Lets you create, inspect, and manage goo.gl short URLs + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Urlshortener extends Google_Service +{ + /** Manage your goo.gl short URLs. */ + const URLSHORTENER = "https://www.googleapis.com/auth/urlshortener"; + + public $url; + + + /** + * Constructs the internal representation of the Urlshortener service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'urlshortener/v1/'; + $this->version = 'v1'; + $this->serviceName = 'urlshortener'; + + $this->url = new Google_Service_Urlshortener_Url_Resource( + $this, + $this->serviceName, + 'url', + array( + 'methods' => array( + 'get' => array( + 'path' => 'url', + 'httpMethod' => 'GET', + 'parameters' => array( + 'shortUrl' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'url', + 'httpMethod' => 'POST', + 'parameters' => array(), + ),'list' => array( + 'path' => 'url/history', + 'httpMethod' => 'GET', + 'parameters' => array( + 'start-token' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'projection' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "url" collection of methods. + * Typical usage is: + * + * $urlshortenerService = new Google_Service_Urlshortener(...); + * $url = $urlshortenerService->url; + * + */ +class Google_Service_Urlshortener_Url_Resource extends Google_Service_Resource +{ + + /** + * Expands a short URL or gets creation time and analytics. (url.get) + * + * @param string $shortUrl + * The short URL, including the protocol. + * @param array $optParams Optional parameters. + * + * @opt_param string projection + * Additional information to return. + * @return Google_Service_Urlshortener_Url + */ + public function get($shortUrl, $optParams = array()) + { + $params = array('shortUrl' => $shortUrl); + $params = array_merge($params, $optParams); + return $this->call('get', array($params), "Google_Service_Urlshortener_Url"); + } + /** + * Creates a new short URL. (url.insert) + * + * @param Google_Url $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_Urlshortener_Url + */ + public function insert(Google_Service_Urlshortener_Url $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_Urlshortener_Url"); + } + /** + * Retrieves a list of URLs shortened by a user. (url.listUrl) + * + * @param array $optParams Optional parameters. + * + * @opt_param string start-token + * Token for requesting successive pages of results. + * @opt_param string projection + * Additional information to return. + * @return Google_Service_Urlshortener_UrlHistory + */ + public function listUrl($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Urlshortener_UrlHistory"); + } +} + + + + +class Google_Service_Urlshortener_AnalyticsSnapshot extends Google_Collection +{ + protected $browsersType = 'Google_Service_Urlshortener_StringCount'; + protected $browsersDataType = 'array'; + protected $countriesType = 'Google_Service_Urlshortener_StringCount'; + protected $countriesDataType = 'array'; + public $longUrlClicks; + protected $platformsType = 'Google_Service_Urlshortener_StringCount'; + protected $platformsDataType = 'array'; + protected $referrersType = 'Google_Service_Urlshortener_StringCount'; + protected $referrersDataType = 'array'; + public $shortUrlClicks; + + public function setBrowsers($browsers) + { + $this->browsers = $browsers; + } + + public function getBrowsers() + { + return $this->browsers; + } + + public function setCountries($countries) + { + $this->countries = $countries; + } + + public function getCountries() + { + return $this->countries; + } + + public function setLongUrlClicks($longUrlClicks) + { + $this->longUrlClicks = $longUrlClicks; + } + + public function getLongUrlClicks() + { + return $this->longUrlClicks; + } + + public function setPlatforms($platforms) + { + $this->platforms = $platforms; + } + + public function getPlatforms() + { + return $this->platforms; + } + + public function setReferrers($referrers) + { + $this->referrers = $referrers; + } + + public function getReferrers() + { + return $this->referrers; + } + + public function setShortUrlClicks($shortUrlClicks) + { + $this->shortUrlClicks = $shortUrlClicks; + } + + public function getShortUrlClicks() + { + return $this->shortUrlClicks; + } +} + +class Google_Service_Urlshortener_AnalyticsSummary extends Google_Model +{ + protected $allTimeType = 'Google_Service_Urlshortener_AnalyticsSnapshot'; + protected $allTimeDataType = ''; + protected $dayType = 'Google_Service_Urlshortener_AnalyticsSnapshot'; + protected $dayDataType = ''; + protected $monthType = 'Google_Service_Urlshortener_AnalyticsSnapshot'; + protected $monthDataType = ''; + protected $twoHoursType = 'Google_Service_Urlshortener_AnalyticsSnapshot'; + protected $twoHoursDataType = ''; + protected $weekType = 'Google_Service_Urlshortener_AnalyticsSnapshot'; + protected $weekDataType = ''; + + public function setAllTime(Google_Service_Urlshortener_AnalyticsSnapshot $allTime) + { + $this->allTime = $allTime; + } + + public function getAllTime() + { + return $this->allTime; + } + + public function setDay(Google_Service_Urlshortener_AnalyticsSnapshot $day) + { + $this->day = $day; + } + + public function getDay() + { + return $this->day; + } + + public function setMonth(Google_Service_Urlshortener_AnalyticsSnapshot $month) + { + $this->month = $month; + } + + public function getMonth() + { + return $this->month; + } + + public function setTwoHours(Google_Service_Urlshortener_AnalyticsSnapshot $twoHours) + { + $this->twoHours = $twoHours; + } + + public function getTwoHours() + { + return $this->twoHours; + } + + public function setWeek(Google_Service_Urlshortener_AnalyticsSnapshot $week) + { + $this->week = $week; + } + + public function getWeek() + { + return $this->week; + } +} + +class Google_Service_Urlshortener_StringCount extends Google_Model +{ + public $count; + public $id; + + public function setCount($count) + { + $this->count = $count; + } + + public function getCount() + { + return $this->count; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } +} + +class Google_Service_Urlshortener_Url extends Google_Model +{ + protected $analyticsType = 'Google_Service_Urlshortener_AnalyticsSummary'; + protected $analyticsDataType = ''; + public $created; + public $id; + public $kind; + public $longUrl; + public $status; + + public function setAnalytics(Google_Service_Urlshortener_AnalyticsSummary $analytics) + { + $this->analytics = $analytics; + } + + public function getAnalytics() + { + return $this->analytics; + } + + public function setCreated($created) + { + $this->created = $created; + } + + public function getCreated() + { + return $this->created; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLongUrl($longUrl) + { + $this->longUrl = $longUrl; + } + + public function getLongUrl() + { + return $this->longUrl; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_Urlshortener_UrlHistory extends Google_Collection +{ + protected $itemsType = 'Google_Service_Urlshortener_Url'; + protected $itemsDataType = 'array'; + public $itemsPerPage; + public $kind; + public $nextPageToken; + public $totalItems; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setItemsPerPage($itemsPerPage) + { + $this->itemsPerPage = $itemsPerPage; + } + + public function getItemsPerPage() + { + return $this->itemsPerPage; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setTotalItems($totalItems) + { + $this->totalItems = $totalItems; + } + + public function getTotalItems() + { + return $this->totalItems; + } +} diff --git a/oauth/Google/Service/Webfonts.php b/oauth/Google/Service/Webfonts.php new file mode 100644 index 0000000..3083266 --- /dev/null +++ b/oauth/Google/Service/Webfonts.php @@ -0,0 +1,228 @@ + + * The Google Fonts Developer API. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_Webfonts extends Google_Service +{ + + + public $webfonts; + + + /** + * Constructs the internal representation of the Webfonts service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'webfonts/v1/'; + $this->version = 'v1'; + $this->serviceName = 'webfonts'; + + $this->webfonts = new Google_Service_Webfonts_Webfonts_Resource( + $this, + $this->serviceName, + 'webfonts', + array( + 'methods' => array( + 'list' => array( + 'path' => 'webfonts', + 'httpMethod' => 'GET', + 'parameters' => array( + 'sort' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "webfonts" collection of methods. + * Typical usage is: + * + * $webfontsService = new Google_Service_Webfonts(...); + * $webfonts = $webfontsService->webfonts; + * + */ +class Google_Service_Webfonts_Webfonts_Resource extends Google_Service_Resource +{ + + /** + * Retrieves the list of fonts currently served by the Google Fonts Developer + * API (webfonts.listWebfonts) + * + * @param array $optParams Optional parameters. + * + * @opt_param string sort + * Enables sorting of the list + * @return Google_Service_Webfonts_WebfontList + */ + public function listWebfonts($optParams = array()) + { + $params = array(); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_Webfonts_WebfontList"); + } +} + + + + +class Google_Service_Webfonts_Webfont extends Google_Collection +{ + public $category; + public $family; + public $files; + public $kind; + public $lastModified; + public $subsets; + public $variants; + public $version; + + public function setCategory($category) + { + $this->category = $category; + } + + public function getCategory() + { + return $this->category; + } + + public function setFamily($family) + { + $this->family = $family; + } + + public function getFamily() + { + return $this->family; + } + + public function setFiles($files) + { + $this->files = $files; + } + + public function getFiles() + { + return $this->files; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLastModified($lastModified) + { + $this->lastModified = $lastModified; + } + + public function getLastModified() + { + return $this->lastModified; + } + + public function setSubsets($subsets) + { + $this->subsets = $subsets; + } + + public function getSubsets() + { + return $this->subsets; + } + + public function setVariants($variants) + { + $this->variants = $variants; + } + + public function getVariants() + { + return $this->variants; + } + + public function setVersion($version) + { + $this->version = $version; + } + + public function getVersion() + { + return $this->version; + } +} + +class Google_Service_Webfonts_WebfontFiles extends Google_Model +{ + +} + +class Google_Service_Webfonts_WebfontList extends Google_Collection +{ + protected $itemsType = 'Google_Service_Webfonts_Webfont'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} diff --git a/oauth/Google/Service/YouTube.php b/oauth/Google/Service/YouTube.php new file mode 100644 index 0000000..ea24855 --- /dev/null +++ b/oauth/Google/Service/YouTube.php @@ -0,0 +1,10947 @@ + + * Programmatic access to YouTube features. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_YouTube extends Google_Service +{ + /** Manage your YouTube account. */ + const YOUTUBE = "https://www.googleapis.com/auth/youtube"; + /** View your YouTube account. */ + const YOUTUBE_READONLY = "https://www.googleapis.com/auth/youtube.readonly"; + /** Manage your YouTube videos. */ + const YOUTUBE_UPLOAD = "https://www.googleapis.com/auth/youtube.upload"; + /** View and manage your assets and associated content on YouTube. */ + const YOUTUBEPARTNER = "https://www.googleapis.com/auth/youtubepartner"; + /** View private information of your YouTube channel relevant during the audit process with a YouTube partner. */ + const YOUTUBEPARTNER_CHANNEL_AUDIT = "https://www.googleapis.com/auth/youtubepartner-channel-audit"; + + public $activities; + public $channelBanners; + public $channelSections; + public $channels; + public $guideCategories; + public $i18nLanguages; + public $i18nRegions; + public $liveBroadcasts; + public $liveStreams; + public $playlistItems; + public $playlists; + public $search; + public $subscriptions; + public $thumbnails; + public $videoCategories; + public $videos; + public $watermarks; + + + /** + * Constructs the internal representation of the YouTube service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'youtube/v3/'; + $this->version = 'v3'; + $this->serviceName = 'youtube'; + + $this->activities = new Google_Service_YouTube_Activities_Resource( + $this, + $this->serviceName, + 'activities', + array( + 'methods' => array( + 'insert' => array( + 'path' => 'activities', + 'httpMethod' => 'POST', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'activities', + 'httpMethod' => 'GET', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'regionCode' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'publishedBefore' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'channelId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'mine' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'home' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'publishedAfter' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->channelBanners = new Google_Service_YouTube_ChannelBanners_Resource( + $this, + $this->serviceName, + 'channelBanners', + array( + 'methods' => array( + 'insert' => array( + 'path' => 'channelBanners/insert', + 'httpMethod' => 'POST', + 'parameters' => array( + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->channelSections = new Google_Service_YouTube_ChannelSections_Resource( + $this, + $this->serviceName, + 'channelSections', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'channelSections', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'id' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'channelSections', + 'httpMethod' => 'POST', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwnerChannel' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'channelSections', + 'httpMethod' => 'GET', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'channelId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'id' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'mine' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'update' => array( + 'path' => 'channelSections', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->channels = new Google_Service_YouTube_Channels_Resource( + $this, + $this->serviceName, + 'channels', + array( + 'methods' => array( + 'list' => array( + 'path' => 'channels', + 'httpMethod' => 'GET', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'managedByMe' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'forUsername' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'mine' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'id' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'mySubscribers' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'categoryId' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'update' => array( + 'path' => 'channels', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->guideCategories = new Google_Service_YouTube_GuideCategories_Resource( + $this, + $this->serviceName, + 'guideCategories', + array( + 'methods' => array( + 'list' => array( + 'path' => 'guideCategories', + 'httpMethod' => 'GET', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'regionCode' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'id' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'hl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->i18nLanguages = new Google_Service_YouTube_I18nLanguages_Resource( + $this, + $this->serviceName, + 'i18nLanguages', + array( + 'methods' => array( + 'list' => array( + 'path' => 'i18nLanguages', + 'httpMethod' => 'GET', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'hl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->i18nRegions = new Google_Service_YouTube_I18nRegions_Resource( + $this, + $this->serviceName, + 'i18nRegions', + array( + 'methods' => array( + 'list' => array( + 'path' => 'i18nRegions', + 'httpMethod' => 'GET', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'hl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->liveBroadcasts = new Google_Service_YouTube_LiveBroadcasts_Resource( + $this, + $this->serviceName, + 'liveBroadcasts', + array( + 'methods' => array( + 'bind' => array( + 'path' => 'liveBroadcasts/bind', + 'httpMethod' => 'POST', + 'parameters' => array( + 'id' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwnerChannel' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'streamId' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'control' => array( + 'path' => 'liveBroadcasts/control', + 'httpMethod' => 'POST', + 'parameters' => array( + 'id' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'displaySlate' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'onBehalfOfContentOwnerChannel' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'offsetTimeMs' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'walltime' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'delete' => array( + 'path' => 'liveBroadcasts', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'id' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwnerChannel' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'liveBroadcasts', + 'httpMethod' => 'POST', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwnerChannel' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'liveBroadcasts', + 'httpMethod' => 'GET', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'broadcastStatus' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'onBehalfOfContentOwnerChannel' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'mine' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'id' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'transition' => array( + 'path' => 'liveBroadcasts/transition', + 'httpMethod' => 'POST', + 'parameters' => array( + 'broadcastStatus' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'id' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwnerChannel' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'update' => array( + 'path' => 'liveBroadcasts', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwnerChannel' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->liveStreams = new Google_Service_YouTube_LiveStreams_Resource( + $this, + $this->serviceName, + 'liveStreams', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'liveStreams', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'id' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwnerChannel' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'liveStreams', + 'httpMethod' => 'POST', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwnerChannel' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'liveStreams', + 'httpMethod' => 'GET', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'onBehalfOfContentOwnerChannel' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'mine' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'id' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'update' => array( + 'path' => 'liveStreams', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwnerChannel' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->playlistItems = new Google_Service_YouTube_PlaylistItems_Resource( + $this, + $this->serviceName, + 'playlistItems', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'playlistItems', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'id' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'playlistItems', + 'httpMethod' => 'POST', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'playlistItems', + 'httpMethod' => 'GET', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'playlistId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'videoId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'id' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'update' => array( + 'path' => 'playlistItems', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->playlists = new Google_Service_YouTube_Playlists_Resource( + $this, + $this->serviceName, + 'playlists', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'playlists', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'id' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'playlists', + 'httpMethod' => 'POST', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwnerChannel' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'list' => array( + 'path' => 'playlists', + 'httpMethod' => 'GET', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'onBehalfOfContentOwnerChannel' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'channelId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'mine' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'id' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'update' => array( + 'path' => 'playlists', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->search = new Google_Service_YouTube_Search_Resource( + $this, + $this->serviceName, + 'search', + array( + 'methods' => array( + 'list' => array( + 'path' => 'search', + 'httpMethod' => 'GET', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'eventType' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'channelId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'videoSyndicated' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'channelType' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'videoCaption' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'publishedAfter' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'forContentOwner' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'regionCode' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'location' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'locationRadius' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'videoType' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'type' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'topicId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'publishedBefore' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'videoDimension' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'videoLicense' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'relatedToVideoId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'videoDefinition' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'videoDuration' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'forMine' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'q' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'safeSearch' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'videoEmbeddable' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'videoCategoryId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'order' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->subscriptions = new Google_Service_YouTube_Subscriptions_Resource( + $this, + $this->serviceName, + 'subscriptions', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'subscriptions', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'id' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ),'insert' => array( + 'path' => 'subscriptions', + 'httpMethod' => 'POST', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ),'list' => array( + 'path' => 'subscriptions', + 'httpMethod' => 'GET', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'onBehalfOfContentOwnerChannel' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'channelId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'mine' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'forChannelId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'mySubscribers' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'order' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'id' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->thumbnails = new Google_Service_YouTube_Thumbnails_Resource( + $this, + $this->serviceName, + 'thumbnails', + array( + 'methods' => array( + 'set' => array( + 'path' => 'thumbnails/set', + 'httpMethod' => 'POST', + 'parameters' => array( + 'videoId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->videoCategories = new Google_Service_YouTube_VideoCategories_Resource( + $this, + $this->serviceName, + 'videoCategories', + array( + 'methods' => array( + 'list' => array( + 'path' => 'videoCategories', + 'httpMethod' => 'GET', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'regionCode' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'id' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'hl' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->videos = new Google_Service_YouTube_Videos_Resource( + $this, + $this->serviceName, + 'videos', + array( + 'methods' => array( + 'delete' => array( + 'path' => 'videos', + 'httpMethod' => 'DELETE', + 'parameters' => array( + 'id' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'getRating' => array( + 'path' => 'videos/getRating', + 'httpMethod' => 'GET', + 'parameters' => array( + 'id' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'insert' => array( + 'path' => 'videos', + 'httpMethod' => 'POST', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'stabilize' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'onBehalfOfContentOwnerChannel' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'notifySubscribers' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + 'autoLevels' => array( + 'location' => 'query', + 'type' => 'boolean', + ), + ), + ),'list' => array( + 'path' => 'videos', + 'httpMethod' => 'GET', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'regionCode' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'locale' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'videoCategoryId' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'chart' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'maxResults' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'pageToken' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'myRating' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'id' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'rate' => array( + 'path' => 'videos/rate', + 'httpMethod' => 'POST', + 'parameters' => array( + 'id' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'rating' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'update' => array( + 'path' => 'videos', + 'httpMethod' => 'PUT', + 'parameters' => array( + 'part' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + $this->watermarks = new Google_Service_YouTube_Watermarks_Resource( + $this, + $this->serviceName, + 'watermarks', + array( + 'methods' => array( + 'set' => array( + 'path' => 'watermarks/set', + 'httpMethod' => 'POST', + 'parameters' => array( + 'channelId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ),'unset' => array( + 'path' => 'watermarks/unset', + 'httpMethod' => 'POST', + 'parameters' => array( + 'channelId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "activities" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_Service_YouTube(...); + * $activities = $youtubeService->activities; + * + */ +class Google_Service_YouTube_Activities_Resource extends Google_Service_Resource +{ + + /** + * Posts a bulletin for a specific channel. (The user submitting the request + * must be authorized to act on the channel's behalf.) + * + * Note: Even though an activity resource can contain information about actions + * like a user rating a video or marking a video as a favorite, you need to use + * other API methods to generate those activity resources. For example, you + * would use the API's videos.rate() method to rate a video and the + * playlistItems.insert() method to mark a video as a favorite. + * (activities.insert) + * + * @param string $part + * The part parameter serves two purposes in this operation. It identifies the properties that the + * write operation will set as well as the properties that the API response will include. + The part + * names that you can include in the parameter value are snippet and contentDetails. + * @param Google_Activity $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_YouTube_Activity + */ + public function insert($part, Google_Service_YouTube_Activity $postBody, $optParams = array()) + { + $params = array('part' => $part, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_YouTube_Activity"); + } + /** + * Returns a list of channel activity events that match the request criteria. + * For example, you can retrieve events associated with a particular channel, + * events associated with the user's subscriptions and Google+ friends, or the + * YouTube home page feed, which is customized for each user. + * (activities.listActivities) + * + * @param string $part + * The part parameter specifies a comma-separated list of one or more activity resource properties + * that the API response will include. The part names that you can include in the parameter value + * are id, snippet, and contentDetails. + If the parameter identifies a property that contains child + * properties, the child properties will be included in the response. For example, in a activity + * resource, the snippet property contains other properties that identify the type of activity, a + * display title for the activity, and so forth. If you set part=snippet, the API response will + * also contain all of those nested properties. + * @param array $optParams Optional parameters. + * + * @opt_param string regionCode + * The regionCode parameter instructs the API to return results for the specified country. The + * parameter value is an ISO 3166-1 alpha-2 country code. YouTube uses this value when the + * authorized user's previous activity on YouTube does not provide enough information to generate + * the activity feed. + * @opt_param string publishedBefore + * The publishedBefore parameter specifies the date and time before which an activity must have + * occurred for that activity to be included in the API response. If the parameter value specifies + * a day, but not a time, then any activities that occurred that day will be excluded from the + * result set. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format. + * @opt_param string channelId + * The channelId parameter specifies a unique YouTube channel ID. The API will then return a list + * of that channel's activities. + * @opt_param bool mine + * Set this parameter's value to true to retrieve a feed of the authenticated user's activities. + * @opt_param string maxResults + * The maxResults parameter specifies the maximum number of items that should be returned in the + * result set. + * @opt_param string pageToken + * The pageToken parameter identifies a specific page in the result set that should be returned. In + * an API response, the nextPageToken and prevPageToken properties identify other pages that could + * be retrieved. + * @opt_param bool home + * Set this parameter's value to true to retrieve the activity feed that displays on the YouTube + * home page for the currently authenticated user. + * @opt_param string publishedAfter + * The publishedAfter parameter specifies the earliest date and time that an activity could have + * occurred for that activity to be included in the API response. If the parameter value specifies + * a day, but not a time, then any activities that occurred that day will be included in the result + * set. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format. + * @return Google_Service_YouTube_ActivityListResponse + */ + public function listActivities($part, $optParams = array()) + { + $params = array('part' => $part); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_YouTube_ActivityListResponse"); + } +} + +/** + * The "channelBanners" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_Service_YouTube(...); + * $channelBanners = $youtubeService->channelBanners; + * + */ +class Google_Service_YouTube_ChannelBanners_Resource extends Google_Service_Resource +{ + + /** + * Uploads a channel banner image to YouTube. This method represents the first + * two steps in a three-step process to update the banner image for a channel: + * + * - Call the channelBanners.insert method to upload the binary image data to + * YouTube. The image must have a 16:9 aspect ratio and be at least 2120x1192 + * pixels. - Extract the url property's value from the response that the API + * returns for step 1. - Call the channels.update method to update the channel's + * branding settings. Set the brandingSettings.image.bannerExternalUrl + * property's value to the URL obtained in step 2. (channelBanners.insert) + * + * @param Google_ChannelBannerResource $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @return Google_Service_YouTube_ChannelBannerResource + */ + public function insert(Google_Service_YouTube_ChannelBannerResource $postBody, $optParams = array()) + { + $params = array('postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_YouTube_ChannelBannerResource"); + } +} + +/** + * The "channelSections" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_Service_YouTube(...); + * $channelSections = $youtubeService->channelSections; + * + */ +class Google_Service_YouTube_ChannelSections_Resource extends Google_Service_Resource +{ + + /** + * Deletes a channelSection. (channelSections.delete) + * + * @param string $id + * The id parameter specifies the YouTube channelSection ID for the resource that is being deleted. + * In a channelSection resource, the id property specifies the YouTube channelSection ID. + * @param array $optParams Optional parameters. + */ + public function delete($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Adds a channelSection for the authenticated user's channel. + * (channelSections.insert) + * + * @param string $part + * The part parameter serves two purposes in this operation. It identifies the properties that the + * write operation will set as well as the properties that the API response will include. + The part + * names that you can include in the parameter value are snippet and contentDetails. + * @param Google_ChannelSection $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwnerChannel + * This parameter can only be used in a properly authorized request. Note: This parameter is + * intended exclusively for YouTube content partners. + The onBehalfOfContentOwnerChannel parameter + * specifies the YouTube channel ID of the channel to which a video is being added. This parameter + * is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it + * can only be used in conjunction with that parameter. In addition, the request must be authorized + * using a CMS account that is linked to the content owner that the onBehalfOfContentOwner + * parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value + * specifies must be linked to the content owner that the onBehalfOfContentOwner parameter + * specifies. + This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and perform actions on + * behalf of the channel specified in the parameter value, without having to provide authentication + * credentials for each separate channel. + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @return Google_Service_YouTube_ChannelSection + */ + public function insert($part, Google_Service_YouTube_ChannelSection $postBody, $optParams = array()) + { + $params = array('part' => $part, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_YouTube_ChannelSection"); + } + /** + * Returns channelSection resources that match the API request criteria. + * (channelSections.listChannelSections) + * + * @param string $part + * The part parameter specifies a comma-separated list of one or more channelSection resource + * properties that the API response will include. The part names that you can include in the + * parameter value are id, snippet, and contentDetails. + If the parameter identifies a property + * that contains child properties, the child properties will be included in the response. For + * example, in a channelSection resource, the snippet property contains other properties, such as a + * display title for the channelSection. If you set part=snippet, the API response will also + * contain all of those nested properties. + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @opt_param string channelId + * The channelId parameter specifies a YouTube channel ID. The API will only return that channel's + * channelSections. + * @opt_param string id + * The id parameter specifies a comma-separated list of the YouTube channelSection ID(s) for the + * resource(s) that are being retrieved. In a channelSection resource, the id property specifies + * the YouTube channelSection ID. + * @opt_param bool mine + * Set this parameter's value to true to retrieve a feed of the authenticated user's + * channelSections. + * @return Google_Service_YouTube_ChannelSectionListResponse + */ + public function listChannelSections($part, $optParams = array()) + { + $params = array('part' => $part); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_YouTube_ChannelSectionListResponse"); + } + /** + * Update a channelSection. (channelSections.update) + * + * @param string $part + * The part parameter serves two purposes in this operation. It identifies the properties that the + * write operation will set as well as the properties that the API response will include. + The part + * names that you can include in the parameter value are snippet and contentDetails. + * @param Google_ChannelSection $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_YouTube_ChannelSection + */ + public function update($part, Google_Service_YouTube_ChannelSection $postBody, $optParams = array()) + { + $params = array('part' => $part, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_YouTube_ChannelSection"); + } +} + +/** + * The "channels" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_Service_YouTube(...); + * $channels = $youtubeService->channels; + * + */ +class Google_Service_YouTube_Channels_Resource extends Google_Service_Resource +{ + + /** + * Returns a collection of zero or more channel resources that match the request + * criteria. (channels.listChannels) + * + * @param string $part + * The part parameter specifies a comma-separated list of one or more channel resource properties + * that the API response will include. The part names that you can include in the parameter value + * are id, snippet, contentDetails, statistics, topicDetails, and invideoPromotion. + If the + * parameter identifies a property that contains child properties, the child properties will be + * included in the response. For example, in a channel resource, the contentDetails property + * contains other properties, such as the uploads properties. As such, if you set + * part=contentDetails, the API response will also contain all of those nested properties. + * @param array $optParams Optional parameters. + * + * @opt_param bool managedByMe + * Set this parameter's value to true to instruct the API to only return channels managed by the + * content owner that the onBehalfOfContentOwner parameter specifies. The user must be + * authenticated as a CMS account linked to the specified content owner and onBehalfOfContentOwner + * must be provided. + * @opt_param string onBehalfOfContentOwner + * The onBehalfOfContentOwner parameter indicates that the authenticated user is acting on behalf + * of the content owner specified in the parameter value. This parameter is intended for YouTube + * content partners that own and manage many different YouTube channels. It allows content owners + * to authenticate once and get access to all their video and channel data, without having to + * provide authentication credentials for each individual channel. The actual CMS account that the + * user authenticates with needs to be linked to the specified YouTube content owner. + * @opt_param string forUsername + * The forUsername parameter specifies a YouTube username, thereby requesting the channel + * associated with that username. + * @opt_param bool mine + * Set this parameter's value to true to instruct the API to only return channels owned by the + * authenticated user. + * @opt_param string maxResults + * The maxResults parameter specifies the maximum number of items that should be returned in the + * result set. + * @opt_param string id + * The id parameter specifies a comma-separated list of the YouTube channel ID(s) for the + * resource(s) that are being retrieved. In a channel resource, the id property specifies the + * channel's YouTube channel ID. + * @opt_param string pageToken + * The pageToken parameter identifies a specific page in the result set that should be returned. In + * an API response, the nextPageToken and prevPageToken properties identify other pages that could + * be retrieved. + * @opt_param bool mySubscribers + * Set this parameter's value to true to retrieve a list of channels that subscribed to the + * authenticated user's channel. + * @opt_param string categoryId + * The categoryId parameter specifies a YouTube guide category, thereby requesting YouTube channels + * associated with that category. + * @return Google_Service_YouTube_ChannelListResponse + */ + public function listChannels($part, $optParams = array()) + { + $params = array('part' => $part); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_YouTube_ChannelListResponse"); + } + /** + * Updates a channel's metadata. (channels.update) + * + * @param string $part + * The part parameter serves two purposes in this operation. It identifies the properties that the + * write operation will set as well as the properties that the API response will include. + The part + * names that you can include in the parameter value are id and invideoPromotion. + Note that this + * method will override the existing values for all of the mutable properties that are contained in + * any parts that the parameter value specifies. + * @param Google_Channel $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwner + * The onBehalfOfContentOwner parameter indicates that the authenticated user is acting on behalf + * of the content owner specified in the parameter value. This parameter is intended for YouTube + * content partners that own and manage many different YouTube channels. It allows content owners + * to authenticate once and get access to all their video and channel data, without having to + * provide authentication credentials for each individual channel. The actual CMS account that the + * user authenticates with needs to be linked to the specified YouTube content owner. + * @return Google_Service_YouTube_Channel + */ + public function update($part, Google_Service_YouTube_Channel $postBody, $optParams = array()) + { + $params = array('part' => $part, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_YouTube_Channel"); + } +} + +/** + * The "guideCategories" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_Service_YouTube(...); + * $guideCategories = $youtubeService->guideCategories; + * + */ +class Google_Service_YouTube_GuideCategories_Resource extends Google_Service_Resource +{ + + /** + * Returns a list of categories that can be associated with YouTube channels. + * (guideCategories.listGuideCategories) + * + * @param string $part + * The part parameter specifies a comma-separated list of one or more guideCategory resource + * properties that the API response will include. The part names that you can include in the + * parameter value are id and snippet. + If the parameter identifies a property that contains child + * properties, the child properties will be included in the response. For example, in a + * guideCategory resource, the snippet property contains other properties, such as the category's + * title. If you set part=snippet, the API response will also contain all of those nested + * properties. + * @param array $optParams Optional parameters. + * + * @opt_param string regionCode + * The regionCode parameter instructs the API to return the list of guide categories available in + * the specified country. The parameter value is an ISO 3166-1 alpha-2 country code. + * @opt_param string id + * The id parameter specifies a comma-separated list of the YouTube channel category ID(s) for the + * resource(s) that are being retrieved. In a guideCategory resource, the id property specifies the + * YouTube channel category ID. + * @opt_param string hl + * The hl parameter specifies the language that will be used for text values in the API response. + * @return Google_Service_YouTube_GuideCategoryListResponse + */ + public function listGuideCategories($part, $optParams = array()) + { + $params = array('part' => $part); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_YouTube_GuideCategoryListResponse"); + } +} + +/** + * The "i18nLanguages" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_Service_YouTube(...); + * $i18nLanguages = $youtubeService->i18nLanguages; + * + */ +class Google_Service_YouTube_I18nLanguages_Resource extends Google_Service_Resource +{ + + /** + * Returns a list of supported languages. (i18nLanguages.listI18nLanguages) + * + * @param string $part + * The part parameter specifies a comma-separated list of one or more i18nLanguage resource + * properties that the API response will include. The part names that you can include in the + * parameter value are id and snippet. + * @param array $optParams Optional parameters. + * + * @opt_param string hl + * The hl parameter specifies the language that should be used for text values in the API response. + * @return Google_Service_YouTube_I18nLanguageListResponse + */ + public function listI18nLanguages($part, $optParams = array()) + { + $params = array('part' => $part); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_YouTube_I18nLanguageListResponse"); + } +} + +/** + * The "i18nRegions" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_Service_YouTube(...); + * $i18nRegions = $youtubeService->i18nRegions; + * + */ +class Google_Service_YouTube_I18nRegions_Resource extends Google_Service_Resource +{ + + /** + * Returns a list of supported regions. (i18nRegions.listI18nRegions) + * + * @param string $part + * The part parameter specifies a comma-separated list of one or more i18nRegion resource + * properties that the API response will include. The part names that you can include in the + * parameter value are id and snippet. + * @param array $optParams Optional parameters. + * + * @opt_param string hl + * The hl parameter specifies the language that should be used for text values in the API response. + * @return Google_Service_YouTube_I18nRegionListResponse + */ + public function listI18nRegions($part, $optParams = array()) + { + $params = array('part' => $part); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_YouTube_I18nRegionListResponse"); + } +} + +/** + * The "liveBroadcasts" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_Service_YouTube(...); + * $liveBroadcasts = $youtubeService->liveBroadcasts; + * + */ +class Google_Service_YouTube_LiveBroadcasts_Resource extends Google_Service_Resource +{ + + /** + * Binds a YouTube broadcast to a stream or removes an existing binding between + * a broadcast and a stream. A broadcast can only be bound to one video stream. + * (liveBroadcasts.bind) + * + * @param string $id + * The id parameter specifies the unique ID of the broadcast that is being bound to a video stream. + * @param string $part + * The part parameter specifies a comma-separated list of one or more liveBroadcast resource + * properties that the API response will include. The part names that you can include in the + * parameter value are id, snippet, contentDetails, and status. + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwnerChannel + * This parameter can only be used in a properly authorized request. Note: This parameter is + * intended exclusively for YouTube content partners. + The onBehalfOfContentOwnerChannel parameter + * specifies the YouTube channel ID of the channel to which a video is being added. This parameter + * is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it + * can only be used in conjunction with that parameter. In addition, the request must be authorized + * using a CMS account that is linked to the content owner that the onBehalfOfContentOwner + * parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value + * specifies must be linked to the content owner that the onBehalfOfContentOwner parameter + * specifies. + This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and perform actions on + * behalf of the channel specified in the parameter value, without having to provide authentication + * credentials for each separate channel. + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @opt_param string streamId + * The streamId parameter specifies the unique ID of the video stream that is being bound to a + * broadcast. If this parameter is omitted, the API will remove any existing binding between the + * broadcast and a video stream. + * @return Google_Service_YouTube_LiveBroadcast + */ + public function bind($id, $part, $optParams = array()) + { + $params = array('id' => $id, 'part' => $part); + $params = array_merge($params, $optParams); + return $this->call('bind', array($params), "Google_Service_YouTube_LiveBroadcast"); + } + /** + * Controls the settings for a slate that can be displayed in the broadcast + * stream. (liveBroadcasts.control) + * + * @param string $id + * The id parameter specifies the YouTube live broadcast ID that uniquely identifies the broadcast + * in which the slate is being updated. + * @param string $part + * The part parameter specifies a comma-separated list of one or more liveBroadcast resource + * properties that the API response will include. The part names that you can include in the + * parameter value are id, snippet, contentDetails, and status. + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @opt_param bool displaySlate + * The displaySlate parameter specifies whether the slate is being enabled or disabled. + * @opt_param string onBehalfOfContentOwnerChannel + * This parameter can only be used in a properly authorized request. Note: This parameter is + * intended exclusively for YouTube content partners. + The onBehalfOfContentOwnerChannel parameter + * specifies the YouTube channel ID of the channel to which a video is being added. This parameter + * is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it + * can only be used in conjunction with that parameter. In addition, the request must be authorized + * using a CMS account that is linked to the content owner that the onBehalfOfContentOwner + * parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value + * specifies must be linked to the content owner that the onBehalfOfContentOwner parameter + * specifies. + This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and perform actions on + * behalf of the channel specified in the parameter value, without having to provide authentication + * credentials for each separate channel. + * @opt_param string offsetTimeMs + * The offsetTimeMs parameter specifies a positive time offset when the specified slate change will + * occur. The value is measured in milliseconds from the beginning of the broadcast's monitor + * stream, which is the time that the testing phase for the broadcast began. Even though it is + * specified in milliseconds, the value is actually an approximation, and YouTube completes the + * requested action as closely as possible to that time. + If you do not specify a value for this + * parameter, then YouTube performs the action as soon as possible. See the Getting started guide + * for more details. + Important: You should only specify a value for this parameter if your + * broadcast stream is delayed. + * @opt_param string walltime + * The walltime parameter specifies the wall clock time at which the specified slate change will + * occur. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format. + * @return Google_Service_YouTube_LiveBroadcast + */ + public function control($id, $part, $optParams = array()) + { + $params = array('id' => $id, 'part' => $part); + $params = array_merge($params, $optParams); + return $this->call('control', array($params), "Google_Service_YouTube_LiveBroadcast"); + } + /** + * Deletes a broadcast. (liveBroadcasts.delete) + * + * @param string $id + * The id parameter specifies the YouTube live broadcast ID for the resource that is being deleted. + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwnerChannel + * This parameter can only be used in a properly authorized request. Note: This parameter is + * intended exclusively for YouTube content partners. + The onBehalfOfContentOwnerChannel parameter + * specifies the YouTube channel ID of the channel to which a video is being added. This parameter + * is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it + * can only be used in conjunction with that parameter. In addition, the request must be authorized + * using a CMS account that is linked to the content owner that the onBehalfOfContentOwner + * parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value + * specifies must be linked to the content owner that the onBehalfOfContentOwner parameter + * specifies. + This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and perform actions on + * behalf of the channel specified in the parameter value, without having to provide authentication + * credentials for each separate channel. + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + */ + public function delete($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Creates a broadcast. (liveBroadcasts.insert) + * + * @param string $part + * The part parameter serves two purposes in this operation. It identifies the properties that the + * write operation will set as well as the properties that the API response will include. + The part + * properties that you can include in the parameter value are id, snippet, contentDetails, and + * status. + * @param Google_LiveBroadcast $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwnerChannel + * This parameter can only be used in a properly authorized request. Note: This parameter is + * intended exclusively for YouTube content partners. + The onBehalfOfContentOwnerChannel parameter + * specifies the YouTube channel ID of the channel to which a video is being added. This parameter + * is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it + * can only be used in conjunction with that parameter. In addition, the request must be authorized + * using a CMS account that is linked to the content owner that the onBehalfOfContentOwner + * parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value + * specifies must be linked to the content owner that the onBehalfOfContentOwner parameter + * specifies. + This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and perform actions on + * behalf of the channel specified in the parameter value, without having to provide authentication + * credentials for each separate channel. + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @return Google_Service_YouTube_LiveBroadcast + */ + public function insert($part, Google_Service_YouTube_LiveBroadcast $postBody, $optParams = array()) + { + $params = array('part' => $part, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_YouTube_LiveBroadcast"); + } + /** + * Returns a list of YouTube broadcasts that match the API request parameters. + * (liveBroadcasts.listLiveBroadcasts) + * + * @param string $part + * The part parameter specifies a comma-separated list of one or more liveBroadcast resource + * properties that the API response will include. The part names that you can include in the + * parameter value are id, snippet, contentDetails, and status. + * @param array $optParams Optional parameters. + * + * @opt_param string broadcastStatus + * The broadcastStatus parameter filters the API response to only include broadcasts with the + * specified status. + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @opt_param string onBehalfOfContentOwnerChannel + * This parameter can only be used in a properly authorized request. Note: This parameter is + * intended exclusively for YouTube content partners. + The onBehalfOfContentOwnerChannel parameter + * specifies the YouTube channel ID of the channel to which a video is being added. This parameter + * is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it + * can only be used in conjunction with that parameter. In addition, the request must be authorized + * using a CMS account that is linked to the content owner that the onBehalfOfContentOwner + * parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value + * specifies must be linked to the content owner that the onBehalfOfContentOwner parameter + * specifies. + This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and perform actions on + * behalf of the channel specified in the parameter value, without having to provide authentication + * credentials for each separate channel. + * @opt_param bool mine + * The mine parameter can be used to instruct the API to only return broadcasts owned by the + * authenticated user. Set the parameter value to true to only retrieve your own broadcasts. + * @opt_param string maxResults + * The maxResults parameter specifies the maximum number of items that should be returned in the + * result set. + * @opt_param string pageToken + * The pageToken parameter identifies a specific page in the result set that should be returned. In + * an API response, the nextPageToken and prevPageToken properties identify other pages that could + * be retrieved. + * @opt_param string id + * The id parameter specifies a comma-separated list of YouTube broadcast IDs that identify the + * broadcasts being retrieved. In a liveBroadcast resource, the id property specifies the + * broadcast's ID. + * @return Google_Service_YouTube_LiveBroadcastListResponse + */ + public function listLiveBroadcasts($part, $optParams = array()) + { + $params = array('part' => $part); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_YouTube_LiveBroadcastListResponse"); + } + /** + * Changes the status of a YouTube live broadcast and initiates any processes + * associated with the new status. For example, when you transition a + * broadcast's status to testing, YouTube starts to transmit video to that + * broadcast's monitor stream. Before calling this method, you should confirm + * that the value of the status.streamStatus property for the stream bound to + * your broadcast is active. (liveBroadcasts.transition) + * + * @param string $broadcastStatus + * The broadcastStatus parameter identifies the state to which the broadcast is changing. Note that + * to transition a broadcast to either the testing or live state, the status.streamStatus must be + * active for the stream that the broadcast is bound to. + * @param string $id + * The id parameter specifies the unique ID of the broadcast that is transitioning to another + * status. + * @param string $part + * The part parameter specifies a comma-separated list of one or more liveBroadcast resource + * properties that the API response will include. The part names that you can include in the + * parameter value are id, snippet, contentDetails, and status. + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwnerChannel + * This parameter can only be used in a properly authorized request. Note: This parameter is + * intended exclusively for YouTube content partners. + The onBehalfOfContentOwnerChannel parameter + * specifies the YouTube channel ID of the channel to which a video is being added. This parameter + * is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it + * can only be used in conjunction with that parameter. In addition, the request must be authorized + * using a CMS account that is linked to the content owner that the onBehalfOfContentOwner + * parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value + * specifies must be linked to the content owner that the onBehalfOfContentOwner parameter + * specifies. + This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and perform actions on + * behalf of the channel specified in the parameter value, without having to provide authentication + * credentials for each separate channel. + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @return Google_Service_YouTube_LiveBroadcast + */ + public function transition($broadcastStatus, $id, $part, $optParams = array()) + { + $params = array('broadcastStatus' => $broadcastStatus, 'id' => $id, 'part' => $part); + $params = array_merge($params, $optParams); + return $this->call('transition', array($params), "Google_Service_YouTube_LiveBroadcast"); + } + /** + * Updates a broadcast. For example, you could modify the broadcast settings + * defined in the liveBroadcast resource's contentDetails object. + * (liveBroadcasts.update) + * + * @param string $part + * The part parameter serves two purposes in this operation. It identifies the properties that the + * write operation will set as well as the properties that the API response will include. + The part + * properties that you can include in the parameter value are id, snippet, contentDetails, and + * status. + Note that this method will override the existing values for all of the mutable + * properties that are contained in any parts that the parameter value specifies. For example, a + * broadcast's privacy status is defined in the status part. As such, if your request is updating a + * private or unlisted broadcast, and the request's part parameter value includes the status part, + * the broadcast's privacy setting will be updated to whatever value the request body specifies. If + * the request body does not specify a value, the existing privacy setting will be removed and the + * broadcast will revert to the default privacy setting. + * @param Google_LiveBroadcast $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwnerChannel + * This parameter can only be used in a properly authorized request. Note: This parameter is + * intended exclusively for YouTube content partners. + The onBehalfOfContentOwnerChannel parameter + * specifies the YouTube channel ID of the channel to which a video is being added. This parameter + * is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it + * can only be used in conjunction with that parameter. In addition, the request must be authorized + * using a CMS account that is linked to the content owner that the onBehalfOfContentOwner + * parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value + * specifies must be linked to the content owner that the onBehalfOfContentOwner parameter + * specifies. + This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and perform actions on + * behalf of the channel specified in the parameter value, without having to provide authentication + * credentials for each separate channel. + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @return Google_Service_YouTube_LiveBroadcast + */ + public function update($part, Google_Service_YouTube_LiveBroadcast $postBody, $optParams = array()) + { + $params = array('part' => $part, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_YouTube_LiveBroadcast"); + } +} + +/** + * The "liveStreams" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_Service_YouTube(...); + * $liveStreams = $youtubeService->liveStreams; + * + */ +class Google_Service_YouTube_LiveStreams_Resource extends Google_Service_Resource +{ + + /** + * Deletes a video stream. (liveStreams.delete) + * + * @param string $id + * The id parameter specifies the YouTube live stream ID for the resource that is being deleted. + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwnerChannel + * This parameter can only be used in a properly authorized request. Note: This parameter is + * intended exclusively for YouTube content partners. + The onBehalfOfContentOwnerChannel parameter + * specifies the YouTube channel ID of the channel to which a video is being added. This parameter + * is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it + * can only be used in conjunction with that parameter. In addition, the request must be authorized + * using a CMS account that is linked to the content owner that the onBehalfOfContentOwner + * parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value + * specifies must be linked to the content owner that the onBehalfOfContentOwner parameter + * specifies. + This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and perform actions on + * behalf of the channel specified in the parameter value, without having to provide authentication + * credentials for each separate channel. + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + */ + public function delete($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Creates a video stream. The stream enables you to send your video to YouTube, + * which can then broadcast the video to your audience. (liveStreams.insert) + * + * @param string $part + * The part parameter serves two purposes in this operation. It identifies the properties that the + * write operation will set as well as the properties that the API response will include. + The part + * properties that you can include in the parameter value are id, snippet, cdn, and status. + * @param Google_LiveStream $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwnerChannel + * This parameter can only be used in a properly authorized request. Note: This parameter is + * intended exclusively for YouTube content partners. + The onBehalfOfContentOwnerChannel parameter + * specifies the YouTube channel ID of the channel to which a video is being added. This parameter + * is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it + * can only be used in conjunction with that parameter. In addition, the request must be authorized + * using a CMS account that is linked to the content owner that the onBehalfOfContentOwner + * parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value + * specifies must be linked to the content owner that the onBehalfOfContentOwner parameter + * specifies. + This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and perform actions on + * behalf of the channel specified in the parameter value, without having to provide authentication + * credentials for each separate channel. + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @return Google_Service_YouTube_LiveStream + */ + public function insert($part, Google_Service_YouTube_LiveStream $postBody, $optParams = array()) + { + $params = array('part' => $part, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_YouTube_LiveStream"); + } + /** + * Returns a list of video streams that match the API request parameters. + * (liveStreams.listLiveStreams) + * + * @param string $part + * The part parameter specifies a comma-separated list of one or more liveStream resource + * properties that the API response will include. The part names that you can include in the + * parameter value are id, snippet, cdn, and status. + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @opt_param string onBehalfOfContentOwnerChannel + * This parameter can only be used in a properly authorized request. Note: This parameter is + * intended exclusively for YouTube content partners. + The onBehalfOfContentOwnerChannel parameter + * specifies the YouTube channel ID of the channel to which a video is being added. This parameter + * is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it + * can only be used in conjunction with that parameter. In addition, the request must be authorized + * using a CMS account that is linked to the content owner that the onBehalfOfContentOwner + * parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value + * specifies must be linked to the content owner that the onBehalfOfContentOwner parameter + * specifies. + This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and perform actions on + * behalf of the channel specified in the parameter value, without having to provide authentication + * credentials for each separate channel. + * @opt_param bool mine + * The mine parameter can be used to instruct the API to only return streams owned by the + * authenticated user. Set the parameter value to true to only retrieve your own streams. + * @opt_param string maxResults + * The maxResults parameter specifies the maximum number of items that should be returned in the + * result set. Acceptable values are 0 to 50, inclusive. The default value is 5. + * @opt_param string pageToken + * The pageToken parameter identifies a specific page in the result set that should be returned. In + * an API response, the nextPageToken and prevPageToken properties identify other pages that could + * be retrieved. + * @opt_param string id + * The id parameter specifies a comma-separated list of YouTube stream IDs that identify the + * streams being retrieved. In a liveStream resource, the id property specifies the stream's ID. + * @return Google_Service_YouTube_LiveStreamListResponse + */ + public function listLiveStreams($part, $optParams = array()) + { + $params = array('part' => $part); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_YouTube_LiveStreamListResponse"); + } + /** + * Updates a video stream. If the properties that you want to change cannot be + * updated, then you need to create a new stream with the proper settings. + * (liveStreams.update) + * + * @param string $part + * The part parameter serves two purposes in this operation. It identifies the properties that the + * write operation will set as well as the properties that the API response will include. + The part + * properties that you can include in the parameter value are id, snippet, cdn, and status. + Note + * that this method will override the existing values for all of the mutable properties that are + * contained in any parts that the parameter value specifies. If the request body does not specify + * a value for a mutable property, the existing value for that property will be removed. + * @param Google_LiveStream $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwnerChannel + * This parameter can only be used in a properly authorized request. Note: This parameter is + * intended exclusively for YouTube content partners. + The onBehalfOfContentOwnerChannel parameter + * specifies the YouTube channel ID of the channel to which a video is being added. This parameter + * is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it + * can only be used in conjunction with that parameter. In addition, the request must be authorized + * using a CMS account that is linked to the content owner that the onBehalfOfContentOwner + * parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value + * specifies must be linked to the content owner that the onBehalfOfContentOwner parameter + * specifies. + This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and perform actions on + * behalf of the channel specified in the parameter value, without having to provide authentication + * credentials for each separate channel. + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @return Google_Service_YouTube_LiveStream + */ + public function update($part, Google_Service_YouTube_LiveStream $postBody, $optParams = array()) + { + $params = array('part' => $part, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_YouTube_LiveStream"); + } +} + +/** + * The "playlistItems" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_Service_YouTube(...); + * $playlistItems = $youtubeService->playlistItems; + * + */ +class Google_Service_YouTube_PlaylistItems_Resource extends Google_Service_Resource +{ + + /** + * Deletes a playlist item. (playlistItems.delete) + * + * @param string $id + * The id parameter specifies the YouTube playlist item ID for the playlist item that is being + * deleted. In a playlistItem resource, the id property specifies the playlist item's ID. + * @param array $optParams Optional parameters. + */ + public function delete($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Adds a resource to a playlist. (playlistItems.insert) + * + * @param string $part + * The part parameter serves two purposes in this operation. It identifies the properties that the + * write operation will set as well as the properties that the API response will include. + The part + * names that you can include in the parameter value are snippet, contentDetails, and status. + * @param Google_PlaylistItem $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @return Google_Service_YouTube_PlaylistItem + */ + public function insert($part, Google_Service_YouTube_PlaylistItem $postBody, $optParams = array()) + { + $params = array('part' => $part, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_YouTube_PlaylistItem"); + } + /** + * Returns a collection of playlist items that match the API request parameters. + * You can retrieve all of the playlist items in a specified playlist or + * retrieve one or more playlist items by their unique IDs. + * (playlistItems.listPlaylistItems) + * + * @param string $part + * The part parameter specifies a comma-separated list of one or more playlistItem resource + * properties that the API response will include. The part names that you can include in the + * parameter value are id, snippet, contentDetails, and status. + If the parameter identifies a + * property that contains child properties, the child properties will be included in the response. + * For example, in a playlistItem resource, the snippet property contains numerous fields, + * including the title, description, position, and resourceId properties. As such, if you set + * part=snippet, the API response will contain all of those properties. + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @opt_param string playlistId + * The playlistId parameter specifies the unique ID of the playlist for which you want to retrieve + * playlist items. Note that even though this is an optional parameter, every request to retrieve + * playlist items must specify a value for either the id parameter or the playlistId parameter. + * @opt_param string videoId + * The videoId parameter specifies that the request should return only the playlist items that + * contain the specified video. + * @opt_param string maxResults + * The maxResults parameter specifies the maximum number of items that should be returned in the + * result set. + * @opt_param string pageToken + * The pageToken parameter identifies a specific page in the result set that should be returned. In + * an API response, the nextPageToken and prevPageToken properties identify other pages that could + * be retrieved. + * @opt_param string id + * The id parameter specifies a comma-separated list of one or more unique playlist item IDs. + * @return Google_Service_YouTube_PlaylistItemListResponse + */ + public function listPlaylistItems($part, $optParams = array()) + { + $params = array('part' => $part); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_YouTube_PlaylistItemListResponse"); + } + /** + * Modifies a playlist item. For example, you could update the item's position + * in the playlist. (playlistItems.update) + * + * @param string $part + * The part parameter serves two purposes in this operation. It identifies the properties that the + * write operation will set as well as the properties that the API response will include. + The part + * names that you can include in the parameter value are snippet, contentDetails, and status. + Note + * that this method will override the existing values for all of the mutable properties that are + * contained in any parts that the parameter value specifies. For example, a playlist item can + * specify a start time and end time, which identify the times portion of the video that should + * play when users watch the video in the playlist. If your request is updating a playlist item + * that sets these values, and the request's part parameter value includes the contentDetails part, + * the playlist item's start and end times will be updated to whatever value the request body + * specifies. If the request body does not specify values, the existing start and end times will be + * removed and replaced with the default settings. + * @param Google_PlaylistItem $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_YouTube_PlaylistItem + */ + public function update($part, Google_Service_YouTube_PlaylistItem $postBody, $optParams = array()) + { + $params = array('part' => $part, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_YouTube_PlaylistItem"); + } +} + +/** + * The "playlists" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_Service_YouTube(...); + * $playlists = $youtubeService->playlists; + * + */ +class Google_Service_YouTube_Playlists_Resource extends Google_Service_Resource +{ + + /** + * Deletes a playlist. (playlists.delete) + * + * @param string $id + * The id parameter specifies the YouTube playlist ID for the playlist that is being deleted. In a + * playlist resource, the id property specifies the playlist's ID. + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + */ + public function delete($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Creates a playlist. (playlists.insert) + * + * @param string $part + * The part parameter serves two purposes in this operation. It identifies the properties that the + * write operation will set as well as the properties that the API response will include. + The part + * names that you can include in the parameter value are snippet and status. + * @param Google_Playlist $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwnerChannel + * This parameter can only be used in a properly authorized request. Note: This parameter is + * intended exclusively for YouTube content partners. + The onBehalfOfContentOwnerChannel parameter + * specifies the YouTube channel ID of the channel to which a video is being added. This parameter + * is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it + * can only be used in conjunction with that parameter. In addition, the request must be authorized + * using a CMS account that is linked to the content owner that the onBehalfOfContentOwner + * parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value + * specifies must be linked to the content owner that the onBehalfOfContentOwner parameter + * specifies. + This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and perform actions on + * behalf of the channel specified in the parameter value, without having to provide authentication + * credentials for each separate channel. + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @return Google_Service_YouTube_Playlist + */ + public function insert($part, Google_Service_YouTube_Playlist $postBody, $optParams = array()) + { + $params = array('part' => $part, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_YouTube_Playlist"); + } + /** + * Returns a collection of playlists that match the API request parameters. For + * example, you can retrieve all playlists that the authenticated user owns, or + * you can retrieve one or more playlists by their unique IDs. + * (playlists.listPlaylists) + * + * @param string $part + * The part parameter specifies a comma-separated list of one or more playlist resource properties + * that the API response will include. The part names that you can include in the parameter value + * are id, snippet, status, and contentDetails. + If the parameter identifies a property that + * contains child properties, the child properties will be included in the response. For example, + * in a playlist resource, the snippet property contains properties like author, title, + * description, tags, and timeCreated. As such, if you set part=snippet, the API response will + * contain all of those properties. + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @opt_param string onBehalfOfContentOwnerChannel + * This parameter can only be used in a properly authorized request. Note: This parameter is + * intended exclusively for YouTube content partners. + The onBehalfOfContentOwnerChannel parameter + * specifies the YouTube channel ID of the channel to which a video is being added. This parameter + * is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it + * can only be used in conjunction with that parameter. In addition, the request must be authorized + * using a CMS account that is linked to the content owner that the onBehalfOfContentOwner + * parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value + * specifies must be linked to the content owner that the onBehalfOfContentOwner parameter + * specifies. + This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and perform actions on + * behalf of the channel specified in the parameter value, without having to provide authentication + * credentials for each separate channel. + * @opt_param string channelId + * This value indicates that the API should only return the specified channel's playlists. + * @opt_param bool mine + * Set this parameter's value to true to instruct the API to only return playlists owned by the + * authenticated user. + * @opt_param string maxResults + * The maxResults parameter specifies the maximum number of items that should be returned in the + * result set. + * @opt_param string pageToken + * The pageToken parameter identifies a specific page in the result set that should be returned. In + * an API response, the nextPageToken and prevPageToken properties identify other pages that could + * be retrieved. + * @opt_param string id + * The id parameter specifies a comma-separated list of the YouTube playlist ID(s) for the + * resource(s) that are being retrieved. In a playlist resource, the id property specifies the + * playlist's YouTube playlist ID. + * @return Google_Service_YouTube_PlaylistListResponse + */ + public function listPlaylists($part, $optParams = array()) + { + $params = array('part' => $part); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_YouTube_PlaylistListResponse"); + } + /** + * Modifies a playlist. For example, you could change a playlist's title, + * description, or privacy status. (playlists.update) + * + * @param string $part + * The part parameter serves two purposes in this operation. It identifies the properties that the + * write operation will set as well as the properties that the API response will include. + The part + * names that you can include in the parameter value are snippet and status. + Note that this method + * will override the existing values for all of the mutable properties that are contained in any + * parts that the parameter value specifies. For example, a playlist's privacy setting is contained + * in the status part. As such, if your request is updating a private playlist, and the request's + * part parameter value includes the status part, the playlist's privacy setting will be updated to + * whatever value the request body specifies. If the request body does not specify a value, the + * existing privacy setting will be removed and the playlist will revert to the default privacy + * setting. + * @param Google_Playlist $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @return Google_Service_YouTube_Playlist + */ + public function update($part, Google_Service_YouTube_Playlist $postBody, $optParams = array()) + { + $params = array('part' => $part, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_YouTube_Playlist"); + } +} + +/** + * The "search" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_Service_YouTube(...); + * $search = $youtubeService->search; + * + */ +class Google_Service_YouTube_Search_Resource extends Google_Service_Resource +{ + + /** + * Returns a collection of search results that match the query parameters + * specified in the API request. By default, a search result set identifies + * matching video, channel, and playlist resources, but you can also configure + * queries to only retrieve a specific type of resource. (search.listSearch) + * + * @param string $part + * The part parameter specifies a comma-separated list of one or more search resource properties + * that the API response will include. The part names that you can include in the parameter value + * are id and snippet. + If the parameter identifies a property that contains child properties, the + * child properties will be included in the response. For example, in a search result, the snippet + * property contains other properties that identify the result's title, description, and so forth. + * If you set part=snippet, the API response will also contain all of those nested properties. + * @param array $optParams Optional parameters. + * + * @opt_param string eventType + * The eventType parameter restricts a search to broadcast events. + * @opt_param string channelId + * The channelId parameter indicates that the API response should only contain resources created by + * the channel + * @opt_param string videoSyndicated + * The videoSyndicated parameter lets you to restrict a search to only videos that can be played + * outside youtube.com. + * @opt_param string channelType + * The channelType parameter lets you restrict a search to a particular type of channel. + * @opt_param string videoCaption + * The videoCaption parameter indicates whether the API should filter video search results based on + * whether they have captions. + * @opt_param string publishedAfter + * The publishedAfter parameter indicates that the API response should only contain resources + * created after the specified time. The value is an RFC 3339 formatted date-time value + * (1970-01-01T00:00:00Z). + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @opt_param string pageToken + * The pageToken parameter identifies a specific page in the result set that should be returned. In + * an API response, the nextPageToken and prevPageToken properties identify other pages that could + * be retrieved. + * @opt_param bool forContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The forContentOwner + * parameter restricts the search to only retrieve resources owned by the content owner specified + * by the onBehalfOfContentOwner parameter. The user must be authenticated using a CMS account + * linked to the specified content owner and onBehalfOfContentOwner must be provided. + * @opt_param string regionCode + * The regionCode parameter instructs the API to return search results for the specified country. + * The parameter value is an ISO 3166-1 alpha-2 country code. + * @opt_param string location + * The location parameter restricts a search to videos that have a geographical location specified + * in their metadata. The value is a string that specifies geographic latitude/longitude + * coordinates e.g. (37.42307,-122.08427) + * @opt_param string locationRadius + * The locationRadius, in conjunction with the location parameter, defines a geographic area. If + * the geographic coordinates associated with a video fall within that area, then the video may be + * included in search results. This parameter value must be a floating point number followed by a + * measurement unit. Valid measurement units are m, km, ft, and mi. For example, valid parameter + * values include 1500m, 5km, 10000ft, and 0.75mi. The API does not support locationRadius + * parameter values larger than 1000 kilometers. + * @opt_param string videoType + * The videoType parameter lets you restrict a search to a particular type of videos. + * @opt_param string type + * The type parameter restricts a search query to only retrieve a particular type of resource. The + * value is a comma-separated list of resource types. + * @opt_param string topicId + * The topicId parameter indicates that the API response should only contain resources associated + * with the specified topic. The value identifies a Freebase topic ID. + * @opt_param string publishedBefore + * The publishedBefore parameter indicates that the API response should only contain resources + * created before the specified time. The value is an RFC 3339 formatted date-time value + * (1970-01-01T00:00:00Z). + * @opt_param string videoDimension + * The videoDimension parameter lets you restrict a search to only retrieve 2D or 3D videos. + * @opt_param string videoLicense + * The videoLicense parameter filters search results to only include videos with a particular + * license. YouTube lets video uploaders choose to attach either the Creative Commons license or + * the standard YouTube license to each of their videos. + * @opt_param string maxResults + * The maxResults parameter specifies the maximum number of items that should be returned in the + * result set. + * @opt_param string relatedToVideoId + * The relatedToVideoId parameter retrieves a list of videos that are related to the video that the + * parameter value identifies. The parameter value must be set to a YouTube video ID and, if you + * are using this parameter, the type parameter must be set to video. + * @opt_param string videoDefinition + * The videoDefinition parameter lets you restrict a search to only include either high definition + * (HD) or standard definition (SD) videos. HD videos are available for playback in at least 720p, + * though higher resolutions, like 1080p, might also be available. + * @opt_param string videoDuration + * The videoDuration parameter filters video search results based on their duration. + * @opt_param bool forMine + * The forMine parameter restricts the search to only retrieve videos owned by the authenticated + * user. If you set this parameter to true, then the type parameter's value must also be set to + * video. + * @opt_param string q + * The q parameter specifies the query term to search for. + * @opt_param string safeSearch + * The safeSearch parameter indicates whether the search results should include restricted content + * as well as standard content. + * @opt_param string videoEmbeddable + * The videoEmbeddable parameter lets you to restrict a search to only videos that can be embedded + * into a webpage. + * @opt_param string videoCategoryId + * The videoCategoryId parameter filters video search results based on their category. + * @opt_param string order + * The order parameter specifies the method that will be used to order resources in the API + * response. + * @return Google_Service_YouTube_SearchListResponse + */ + public function listSearch($part, $optParams = array()) + { + $params = array('part' => $part); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_YouTube_SearchListResponse"); + } +} + +/** + * The "subscriptions" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_Service_YouTube(...); + * $subscriptions = $youtubeService->subscriptions; + * + */ +class Google_Service_YouTube_Subscriptions_Resource extends Google_Service_Resource +{ + + /** + * Deletes a subscription. (subscriptions.delete) + * + * @param string $id + * The id parameter specifies the YouTube subscription ID for the resource that is being deleted. + * In a subscription resource, the id property specifies the YouTube subscription ID. + * @param array $optParams Optional parameters. + */ + public function delete($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Adds a subscription for the authenticated user's channel. + * (subscriptions.insert) + * + * @param string $part + * The part parameter serves two purposes in this operation. It identifies the properties that the + * write operation will set as well as the properties that the API response will include. + The part + * names that you can include in the parameter value are snippet and contentDetails. + * @param Google_Subscription $postBody + * @param array $optParams Optional parameters. + * @return Google_Service_YouTube_Subscription + */ + public function insert($part, Google_Service_YouTube_Subscription $postBody, $optParams = array()) + { + $params = array('part' => $part, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_YouTube_Subscription"); + } + /** + * Returns subscription resources that match the API request criteria. + * (subscriptions.listSubscriptions) + * + * @param string $part + * The part parameter specifies a comma-separated list of one or more subscription resource + * properties that the API response will include. The part names that you can include in the + * parameter value are id, snippet, and contentDetails. + If the parameter identifies a property + * that contains child properties, the child properties will be included in the response. For + * example, in a subscription resource, the snippet property contains other properties, such as a + * display title for the subscription. If you set part=snippet, the API response will also contain + * all of those nested properties. + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @opt_param string onBehalfOfContentOwnerChannel + * This parameter can only be used in a properly authorized request. Note: This parameter is + * intended exclusively for YouTube content partners. + The onBehalfOfContentOwnerChannel parameter + * specifies the YouTube channel ID of the channel to which a video is being added. This parameter + * is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it + * can only be used in conjunction with that parameter. In addition, the request must be authorized + * using a CMS account that is linked to the content owner that the onBehalfOfContentOwner + * parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value + * specifies must be linked to the content owner that the onBehalfOfContentOwner parameter + * specifies. + This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and perform actions on + * behalf of the channel specified in the parameter value, without having to provide authentication + * credentials for each separate channel. + * @opt_param string channelId + * The channelId parameter specifies a YouTube channel ID. The API will only return that channel's + * subscriptions. + * @opt_param bool mine + * Set this parameter's value to true to retrieve a feed of the authenticated user's subscriptions. + * @opt_param string maxResults + * The maxResults parameter specifies the maximum number of items that should be returned in the + * result set. + * @opt_param string forChannelId + * The forChannelId parameter specifies a comma-separated list of channel IDs. The API response + * will then only contain subscriptions matching those channels. + * @opt_param string pageToken + * The pageToken parameter identifies a specific page in the result set that should be returned. In + * an API response, the nextPageToken and prevPageToken properties identify other pages that could + * be retrieved. + * @opt_param bool mySubscribers + * Set this parameter's value to true to retrieve a feed of the subscribers of the authenticated + * user. + * @opt_param string order + * The order parameter specifies the method that will be used to sort resources in the API + * response. + * @opt_param string id + * The id parameter specifies a comma-separated list of the YouTube subscription ID(s) for the + * resource(s) that are being retrieved. In a subscription resource, the id property specifies the + * YouTube subscription ID. + * @return Google_Service_YouTube_SubscriptionListResponse + */ + public function listSubscriptions($part, $optParams = array()) + { + $params = array('part' => $part); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_YouTube_SubscriptionListResponse"); + } +} + +/** + * The "thumbnails" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_Service_YouTube(...); + * $thumbnails = $youtubeService->thumbnails; + * + */ +class Google_Service_YouTube_Thumbnails_Resource extends Google_Service_Resource +{ + + /** + * Uploads a custom video thumbnail to YouTube and sets it for a video. + * (thumbnails.set) + * + * @param string $videoId + * The videoId parameter specifies a YouTube video ID for which the custom video thumbnail is being + * provided. + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwner + * The onBehalfOfContentOwner parameter indicates that the authenticated user is acting on behalf + * of the content owner specified in the parameter value. This parameter is intended for YouTube + * content partners that own and manage many different YouTube channels. It allows content owners + * to authenticate once and get access to all their video and channel data, without having to + * provide authentication credentials for each individual channel. The actual CMS account that the + * user authenticates with needs to be linked to the specified YouTube content owner. + * @return Google_Service_YouTube_ThumbnailSetResponse + */ + public function set($videoId, $optParams = array()) + { + $params = array('videoId' => $videoId); + $params = array_merge($params, $optParams); + return $this->call('set', array($params), "Google_Service_YouTube_ThumbnailSetResponse"); + } +} + +/** + * The "videoCategories" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_Service_YouTube(...); + * $videoCategories = $youtubeService->videoCategories; + * + */ +class Google_Service_YouTube_VideoCategories_Resource extends Google_Service_Resource +{ + + /** + * Returns a list of categories that can be associated with YouTube videos. + * (videoCategories.listVideoCategories) + * + * @param string $part + * The part parameter specifies the videoCategory resource parts that the API response will + * include. Supported values are id and snippet. + * @param array $optParams Optional parameters. + * + * @opt_param string regionCode + * The regionCode parameter instructs the API to return the list of video categories available in + * the specified country. The parameter value is an ISO 3166-1 alpha-2 country code. + * @opt_param string id + * The id parameter specifies a comma-separated list of video category IDs for the resources that + * you are retrieving. + * @opt_param string hl + * The hl parameter specifies the language that should be used for text values in the API response. + * @return Google_Service_YouTube_VideoCategoryListResponse + */ + public function listVideoCategories($part, $optParams = array()) + { + $params = array('part' => $part); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_YouTube_VideoCategoryListResponse"); + } +} + +/** + * The "videos" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_Service_YouTube(...); + * $videos = $youtubeService->videos; + * + */ +class Google_Service_YouTube_Videos_Resource extends Google_Service_Resource +{ + + /** + * Deletes a YouTube video. (videos.delete) + * + * @param string $id + * The id parameter specifies the YouTube video ID for the resource that is being deleted. In a + * video resource, the id property specifies the video's ID. + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The actual CMS account that the user authenticates with must be linked to + * the specified YouTube content owner. + */ + public function delete($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('delete', array($params)); + } + /** + * Retrieves the ratings that the authorized user gave to a list of specified + * videos. (videos.getRating) + * + * @param string $id + * The id parameter specifies a comma-separated list of the YouTube video ID(s) for the resource(s) + * for which you are retrieving rating data. In a video resource, the id property specifies the + * video's ID. + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @return Google_Service_YouTube_VideoGetRatingResponse + */ + public function getRating($id, $optParams = array()) + { + $params = array('id' => $id); + $params = array_merge($params, $optParams); + return $this->call('getRating', array($params), "Google_Service_YouTube_VideoGetRatingResponse"); + } + /** + * Uploads a video to YouTube and optionally sets the video's metadata. + * (videos.insert) + * + * @param string $part + * The part parameter serves two purposes in this operation. It identifies the properties that the + * write operation will set as well as the properties that the API response will include. + The part + * names that you can include in the parameter value are snippet, contentDetails, fileDetails, + * liveStreamingDetails, player, processingDetails, recordingDetails, statistics, status, + * suggestions, and topicDetails. However, not all of those parts contain properties that can be + * set when setting or updating a video's metadata. For example, the statistics object encapsulates + * statistics that YouTube calculates for a video and does not contain values that you can set or + * modify. If the parameter value specifies a part that does not contain mutable values, that part + * will still be included in the API response. + * @param Google_Video $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @opt_param bool stabilize + * The stabilize parameter indicates whether YouTube should adjust the video to remove shaky camera + * motions. + * @opt_param string onBehalfOfContentOwnerChannel + * This parameter can only be used in a properly authorized request. Note: This parameter is + * intended exclusively for YouTube content partners. + The onBehalfOfContentOwnerChannel parameter + * specifies the YouTube channel ID of the channel to which a video is being added. This parameter + * is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it + * can only be used in conjunction with that parameter. In addition, the request must be authorized + * using a CMS account that is linked to the content owner that the onBehalfOfContentOwner + * parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value + * specifies must be linked to the content owner that the onBehalfOfContentOwner parameter + * specifies. + This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and perform actions on + * behalf of the channel specified in the parameter value, without having to provide authentication + * credentials for each separate channel. + * @opt_param bool notifySubscribers + * The notifySubscribers parameter indicates whether YouTube should send notification to + * subscribers about the inserted video. + * @opt_param bool autoLevels + * The autoLevels parameter indicates whether YouTube should automatically enhance the video's + * lighting and color. + * @return Google_Service_YouTube_Video + */ + public function insert($part, Google_Service_YouTube_Video $postBody, $optParams = array()) + { + $params = array('part' => $part, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('insert', array($params), "Google_Service_YouTube_Video"); + } + /** + * Returns a list of videos that match the API request parameters. + * (videos.listVideos) + * + * @param string $part + * The part parameter specifies a comma-separated list of one or more video resource properties + * that the API response will include. The part names that you can include in the parameter value + * are id, snippet, contentDetails, fileDetails, liveStreamingDetails, player, processingDetails, + * recordingDetails, statistics, status, suggestions, and topicDetails. + If the parameter + * identifies a property that contains child properties, the child properties will be included in + * the response. For example, in a video resource, the snippet property contains the channelId, + * title, description, tags, and categoryId properties. As such, if you set part=snippet, the API + * response will contain all of those properties. + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + * @opt_param string regionCode + * The regionCode parameter instructs the API to select a video chart available in the specified + * region. This parameter can only be used in conjunction with the chart parameter. The parameter + * value is an ISO 3166-1 alpha-2 country code. + * @opt_param string locale + * DEPRECATED + * @opt_param string videoCategoryId + * The videoCategoryId parameter identifies the video category for which the chart should be + * retrieved. This parameter can only be used in conjunction with the chart parameter. By default, + * charts are not restricted to a particular category. + * @opt_param string chart + * The chart parameter identifies the chart that you want to retrieve. + * @opt_param string maxResults + * The maxResults parameter specifies the maximum number of items that should be returned in the + * result set. + Note: This parameter is supported for use in conjunction with the myRating + * parameter, but it is not supported for use in conjunction with the id parameter. + * @opt_param string pageToken + * The pageToken parameter identifies a specific page in the result set that should be returned. In + * an API response, the nextPageToken and prevPageToken properties identify other pages that could + * be retrieved. + Note: This parameter is supported for use in conjunction with the myRating + * parameter, but it is not supported for use in conjunction with the id parameter. + * @opt_param string myRating + * Set this parameter's value to like or dislike to instruct the API to only return videos liked or + * disliked by the authenticated user. + * @opt_param string id + * The id parameter specifies a comma-separated list of the YouTube video ID(s) for the resource(s) + * that are being retrieved. In a video resource, the id property specifies the video's ID. + * @return Google_Service_YouTube_VideoListResponse + */ + public function listVideos($part, $optParams = array()) + { + $params = array('part' => $part); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_YouTube_VideoListResponse"); + } + /** + * Add a like or dislike rating to a video or remove a rating from a video. + * (videos.rate) + * + * @param string $id + * The id parameter specifies the YouTube video ID of the video that is being rated or having its + * rating removed. + * @param string $rating + * Specifies the rating to record. + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The CMS account that the user authenticates with must be linked to the + * specified YouTube content owner. + */ + public function rate($id, $rating, $optParams = array()) + { + $params = array('id' => $id, 'rating' => $rating); + $params = array_merge($params, $optParams); + return $this->call('rate', array($params)); + } + /** + * Updates a video's metadata. (videos.update) + * + * @param string $part + * The part parameter serves two purposes in this operation. It identifies the properties that the + * write operation will set as well as the properties that the API response will include. + The part + * names that you can include in the parameter value are snippet, contentDetails, fileDetails, + * liveStreamingDetails, player, processingDetails, recordingDetails, statistics, status, + * suggestions, and topicDetails. + Note that this method will override the existing values for all + * of the mutable properties that are contained in any parts that the parameter value specifies. + * For example, a video's privacy setting is contained in the status part. As such, if your request + * is updating a private video, and the request's part parameter value includes the status part, + * the video's privacy setting will be updated to whatever value the request body specifies. If the + * request body does not specify a value, the existing privacy setting will be removed and the + * video will revert to the default privacy setting. + In addition, not all of those parts contain + * properties that can be set when setting or updating a video's metadata. For example, the + * statistics object encapsulates statistics that YouTube calculates for a video and does not + * contain values that you can set or modify. If the parameter value specifies a part that does not + * contain mutable values, that part will still be included in the API response. + * @param Google_Video $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwner + * Note: This parameter is intended exclusively for YouTube content partners. + The + * onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify + * a YouTube CMS user who is acting on behalf of the content owner specified in the parameter + * value. This parameter is intended for YouTube content partners that own and manage many + * different YouTube channels. It allows content owners to authenticate once and get access to all + * their video and channel data, without having to provide authentication credentials for each + * individual channel. The actual CMS account that the user authenticates with must be linked to + * the specified YouTube content owner. + * @return Google_Service_YouTube_Video + */ + public function update($part, Google_Service_YouTube_Video $postBody, $optParams = array()) + { + $params = array('part' => $part, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('update', array($params), "Google_Service_YouTube_Video"); + } +} + +/** + * The "watermarks" collection of methods. + * Typical usage is: + * + * $youtubeService = new Google_Service_YouTube(...); + * $watermarks = $youtubeService->watermarks; + * + */ +class Google_Service_YouTube_Watermarks_Resource extends Google_Service_Resource +{ + + /** + * Uploads a watermark image to YouTube and sets it for a channel. + * (watermarks.set) + * + * @param string $channelId + * The channelId parameter specifies a YouTube channel ID for which the watermark is being + * provided. + * @param Google_InvideoBranding $postBody + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwner + * The onBehalfOfContentOwner parameter indicates that the authenticated user is acting on behalf + * of the content owner specified in the parameter value. This parameter is intended for YouTube + * content partners that own and manage many different YouTube channels. It allows content owners + * to authenticate once and get access to all their video and channel data, without having to + * provide authentication credentials for each individual channel. The actual CMS account that the + * user authenticates with needs to be linked to the specified YouTube content owner. + */ + public function set($channelId, Google_Service_YouTube_InvideoBranding $postBody, $optParams = array()) + { + $params = array('channelId' => $channelId, 'postBody' => $postBody); + $params = array_merge($params, $optParams); + return $this->call('set', array($params)); + } + /** + * Deletes a watermark. (watermarks.unsetWatermarks) + * + * @param string $channelId + * The channelId parameter specifies a YouTube channel ID for which the watermark is being unset. + * @param array $optParams Optional parameters. + * + * @opt_param string onBehalfOfContentOwner + * The onBehalfOfContentOwner parameter indicates that the authenticated user is acting on behalf + * of the content owner specified in the parameter value. This parameter is intended for YouTube + * content partners that own and manage many different YouTube channels. It allows content owners + * to authenticate once and get access to all their video and channel data, without having to + * provide authentication credentials for each individual channel. The actual CMS account that the + * user authenticates with needs to be linked to the specified YouTube content owner. + */ + public function unsetWatermarks($channelId, $optParams = array()) + { + $params = array('channelId' => $channelId); + $params = array_merge($params, $optParams); + return $this->call('unset', array($params)); + } +} + + + + +class Google_Service_YouTube_AccessPolicy extends Google_Collection +{ + public $allowed; + public $exception; + + public function setAllowed($allowed) + { + $this->allowed = $allowed; + } + + public function getAllowed() + { + return $this->allowed; + } + + public function setException($exception) + { + $this->exception = $exception; + } + + public function getException() + { + return $this->exception; + } +} + +class Google_Service_YouTube_Activity extends Google_Model +{ + protected $contentDetailsType = 'Google_Service_YouTube_ActivityContentDetails'; + protected $contentDetailsDataType = ''; + public $etag; + public $id; + public $kind; + protected $snippetType = 'Google_Service_YouTube_ActivitySnippet'; + protected $snippetDataType = ''; + + public function setContentDetails(Google_Service_YouTube_ActivityContentDetails $contentDetails) + { + $this->contentDetails = $contentDetails; + } + + public function getContentDetails() + { + return $this->contentDetails; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSnippet(Google_Service_YouTube_ActivitySnippet $snippet) + { + $this->snippet = $snippet; + } + + public function getSnippet() + { + return $this->snippet; + } +} + +class Google_Service_YouTube_ActivityContentDetails extends Google_Model +{ + protected $bulletinType = 'Google_Service_YouTube_ActivityContentDetailsBulletin'; + protected $bulletinDataType = ''; + protected $channelItemType = 'Google_Service_YouTube_ActivityContentDetailsChannelItem'; + protected $channelItemDataType = ''; + protected $commentType = 'Google_Service_YouTube_ActivityContentDetailsComment'; + protected $commentDataType = ''; + protected $favoriteType = 'Google_Service_YouTube_ActivityContentDetailsFavorite'; + protected $favoriteDataType = ''; + protected $likeType = 'Google_Service_YouTube_ActivityContentDetailsLike'; + protected $likeDataType = ''; + protected $playlistItemType = 'Google_Service_YouTube_ActivityContentDetailsPlaylistItem'; + protected $playlistItemDataType = ''; + protected $promotedItemType = 'Google_Service_YouTube_ActivityContentDetailsPromotedItem'; + protected $promotedItemDataType = ''; + protected $recommendationType = 'Google_Service_YouTube_ActivityContentDetailsRecommendation'; + protected $recommendationDataType = ''; + protected $socialType = 'Google_Service_YouTube_ActivityContentDetailsSocial'; + protected $socialDataType = ''; + protected $subscriptionType = 'Google_Service_YouTube_ActivityContentDetailsSubscription'; + protected $subscriptionDataType = ''; + protected $uploadType = 'Google_Service_YouTube_ActivityContentDetailsUpload'; + protected $uploadDataType = ''; + + public function setBulletin(Google_Service_YouTube_ActivityContentDetailsBulletin $bulletin) + { + $this->bulletin = $bulletin; + } + + public function getBulletin() + { + return $this->bulletin; + } + + public function setChannelItem(Google_Service_YouTube_ActivityContentDetailsChannelItem $channelItem) + { + $this->channelItem = $channelItem; + } + + public function getChannelItem() + { + return $this->channelItem; + } + + public function setComment(Google_Service_YouTube_ActivityContentDetailsComment $comment) + { + $this->comment = $comment; + } + + public function getComment() + { + return $this->comment; + } + + public function setFavorite(Google_Service_YouTube_ActivityContentDetailsFavorite $favorite) + { + $this->favorite = $favorite; + } + + public function getFavorite() + { + return $this->favorite; + } + + public function setLike(Google_Service_YouTube_ActivityContentDetailsLike $like) + { + $this->like = $like; + } + + public function getLike() + { + return $this->like; + } + + public function setPlaylistItem(Google_Service_YouTube_ActivityContentDetailsPlaylistItem $playlistItem) + { + $this->playlistItem = $playlistItem; + } + + public function getPlaylistItem() + { + return $this->playlistItem; + } + + public function setPromotedItem(Google_Service_YouTube_ActivityContentDetailsPromotedItem $promotedItem) + { + $this->promotedItem = $promotedItem; + } + + public function getPromotedItem() + { + return $this->promotedItem; + } + + public function setRecommendation(Google_Service_YouTube_ActivityContentDetailsRecommendation $recommendation) + { + $this->recommendation = $recommendation; + } + + public function getRecommendation() + { + return $this->recommendation; + } + + public function setSocial(Google_Service_YouTube_ActivityContentDetailsSocial $social) + { + $this->social = $social; + } + + public function getSocial() + { + return $this->social; + } + + public function setSubscription(Google_Service_YouTube_ActivityContentDetailsSubscription $subscription) + { + $this->subscription = $subscription; + } + + public function getSubscription() + { + return $this->subscription; + } + + public function setUpload(Google_Service_YouTube_ActivityContentDetailsUpload $upload) + { + $this->upload = $upload; + } + + public function getUpload() + { + return $this->upload; + } +} + +class Google_Service_YouTube_ActivityContentDetailsBulletin extends Google_Model +{ + protected $resourceIdType = 'Google_Service_YouTube_ResourceId'; + protected $resourceIdDataType = ''; + + public function setResourceId(Google_Service_YouTube_ResourceId $resourceId) + { + $this->resourceId = $resourceId; + } + + public function getResourceId() + { + return $this->resourceId; + } +} + +class Google_Service_YouTube_ActivityContentDetailsChannelItem extends Google_Model +{ + protected $resourceIdType = 'Google_Service_YouTube_ResourceId'; + protected $resourceIdDataType = ''; + + public function setResourceId(Google_Service_YouTube_ResourceId $resourceId) + { + $this->resourceId = $resourceId; + } + + public function getResourceId() + { + return $this->resourceId; + } +} + +class Google_Service_YouTube_ActivityContentDetailsComment extends Google_Model +{ + protected $resourceIdType = 'Google_Service_YouTube_ResourceId'; + protected $resourceIdDataType = ''; + + public function setResourceId(Google_Service_YouTube_ResourceId $resourceId) + { + $this->resourceId = $resourceId; + } + + public function getResourceId() + { + return $this->resourceId; + } +} + +class Google_Service_YouTube_ActivityContentDetailsFavorite extends Google_Model +{ + protected $resourceIdType = 'Google_Service_YouTube_ResourceId'; + protected $resourceIdDataType = ''; + + public function setResourceId(Google_Service_YouTube_ResourceId $resourceId) + { + $this->resourceId = $resourceId; + } + + public function getResourceId() + { + return $this->resourceId; + } +} + +class Google_Service_YouTube_ActivityContentDetailsLike extends Google_Model +{ + protected $resourceIdType = 'Google_Service_YouTube_ResourceId'; + protected $resourceIdDataType = ''; + + public function setResourceId(Google_Service_YouTube_ResourceId $resourceId) + { + $this->resourceId = $resourceId; + } + + public function getResourceId() + { + return $this->resourceId; + } +} + +class Google_Service_YouTube_ActivityContentDetailsPlaylistItem extends Google_Model +{ + public $playlistId; + public $playlistItemId; + protected $resourceIdType = 'Google_Service_YouTube_ResourceId'; + protected $resourceIdDataType = ''; + + public function setPlaylistId($playlistId) + { + $this->playlistId = $playlistId; + } + + public function getPlaylistId() + { + return $this->playlistId; + } + + public function setPlaylistItemId($playlistItemId) + { + $this->playlistItemId = $playlistItemId; + } + + public function getPlaylistItemId() + { + return $this->playlistItemId; + } + + public function setResourceId(Google_Service_YouTube_ResourceId $resourceId) + { + $this->resourceId = $resourceId; + } + + public function getResourceId() + { + return $this->resourceId; + } +} + +class Google_Service_YouTube_ActivityContentDetailsPromotedItem extends Google_Collection +{ + public $adTag; + public $clickTrackingUrl; + public $creativeViewUrl; + public $ctaType; + public $customCtaButtonText; + public $descriptionText; + public $destinationUrl; + public $forecastingUrl; + public $impressionUrl; + public $videoId; + + public function setAdTag($adTag) + { + $this->adTag = $adTag; + } + + public function getAdTag() + { + return $this->adTag; + } + + public function setClickTrackingUrl($clickTrackingUrl) + { + $this->clickTrackingUrl = $clickTrackingUrl; + } + + public function getClickTrackingUrl() + { + return $this->clickTrackingUrl; + } + + public function setCreativeViewUrl($creativeViewUrl) + { + $this->creativeViewUrl = $creativeViewUrl; + } + + public function getCreativeViewUrl() + { + return $this->creativeViewUrl; + } + + public function setCtaType($ctaType) + { + $this->ctaType = $ctaType; + } + + public function getCtaType() + { + return $this->ctaType; + } + + public function setCustomCtaButtonText($customCtaButtonText) + { + $this->customCtaButtonText = $customCtaButtonText; + } + + public function getCustomCtaButtonText() + { + return $this->customCtaButtonText; + } + + public function setDescriptionText($descriptionText) + { + $this->descriptionText = $descriptionText; + } + + public function getDescriptionText() + { + return $this->descriptionText; + } + + public function setDestinationUrl($destinationUrl) + { + $this->destinationUrl = $destinationUrl; + } + + public function getDestinationUrl() + { + return $this->destinationUrl; + } + + public function setForecastingUrl($forecastingUrl) + { + $this->forecastingUrl = $forecastingUrl; + } + + public function getForecastingUrl() + { + return $this->forecastingUrl; + } + + public function setImpressionUrl($impressionUrl) + { + $this->impressionUrl = $impressionUrl; + } + + public function getImpressionUrl() + { + return $this->impressionUrl; + } + + public function setVideoId($videoId) + { + $this->videoId = $videoId; + } + + public function getVideoId() + { + return $this->videoId; + } +} + +class Google_Service_YouTube_ActivityContentDetailsRecommendation extends Google_Model +{ + public $reason; + protected $resourceIdType = 'Google_Service_YouTube_ResourceId'; + protected $resourceIdDataType = ''; + protected $seedResourceIdType = 'Google_Service_YouTube_ResourceId'; + protected $seedResourceIdDataType = ''; + + public function setReason($reason) + { + $this->reason = $reason; + } + + public function getReason() + { + return $this->reason; + } + + public function setResourceId(Google_Service_YouTube_ResourceId $resourceId) + { + $this->resourceId = $resourceId; + } + + public function getResourceId() + { + return $this->resourceId; + } + + public function setSeedResourceId(Google_Service_YouTube_ResourceId $seedResourceId) + { + $this->seedResourceId = $seedResourceId; + } + + public function getSeedResourceId() + { + return $this->seedResourceId; + } +} + +class Google_Service_YouTube_ActivityContentDetailsSocial extends Google_Model +{ + public $author; + public $imageUrl; + public $referenceUrl; + protected $resourceIdType = 'Google_Service_YouTube_ResourceId'; + protected $resourceIdDataType = ''; + public $type; + + public function setAuthor($author) + { + $this->author = $author; + } + + public function getAuthor() + { + return $this->author; + } + + public function setImageUrl($imageUrl) + { + $this->imageUrl = $imageUrl; + } + + public function getImageUrl() + { + return $this->imageUrl; + } + + public function setReferenceUrl($referenceUrl) + { + $this->referenceUrl = $referenceUrl; + } + + public function getReferenceUrl() + { + return $this->referenceUrl; + } + + public function setResourceId(Google_Service_YouTube_ResourceId $resourceId) + { + $this->resourceId = $resourceId; + } + + public function getResourceId() + { + return $this->resourceId; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_YouTube_ActivityContentDetailsSubscription extends Google_Model +{ + protected $resourceIdType = 'Google_Service_YouTube_ResourceId'; + protected $resourceIdDataType = ''; + + public function setResourceId(Google_Service_YouTube_ResourceId $resourceId) + { + $this->resourceId = $resourceId; + } + + public function getResourceId() + { + return $this->resourceId; + } +} + +class Google_Service_YouTube_ActivityContentDetailsUpload extends Google_Model +{ + public $videoId; + + public function setVideoId($videoId) + { + $this->videoId = $videoId; + } + + public function getVideoId() + { + return $this->videoId; + } +} + +class Google_Service_YouTube_ActivityListResponse extends Google_Collection +{ + public $etag; + public $eventId; + protected $itemsType = 'Google_Service_YouTube_Activity'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + protected $pageInfoType = 'Google_Service_YouTube_PageInfo'; + protected $pageInfoDataType = ''; + public $prevPageToken; + protected $tokenPaginationType = 'Google_Service_YouTube_TokenPagination'; + protected $tokenPaginationDataType = ''; + public $visitorId; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setEventId($eventId) + { + $this->eventId = $eventId; + } + + public function getEventId() + { + return $this->eventId; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPageInfo(Google_Service_YouTube_PageInfo $pageInfo) + { + $this->pageInfo = $pageInfo; + } + + public function getPageInfo() + { + return $this->pageInfo; + } + + public function setPrevPageToken($prevPageToken) + { + $this->prevPageToken = $prevPageToken; + } + + public function getPrevPageToken() + { + return $this->prevPageToken; + } + + public function setTokenPagination(Google_Service_YouTube_TokenPagination $tokenPagination) + { + $this->tokenPagination = $tokenPagination; + } + + public function getTokenPagination() + { + return $this->tokenPagination; + } + + public function setVisitorId($visitorId) + { + $this->visitorId = $visitorId; + } + + public function getVisitorId() + { + return $this->visitorId; + } +} + +class Google_Service_YouTube_ActivitySnippet extends Google_Model +{ + public $channelId; + public $channelTitle; + public $description; + public $groupId; + public $publishedAt; + protected $thumbnailsType = 'Google_Service_YouTube_ThumbnailDetails'; + protected $thumbnailsDataType = ''; + public $title; + public $type; + + public function setChannelId($channelId) + { + $this->channelId = $channelId; + } + + public function getChannelId() + { + return $this->channelId; + } + + public function setChannelTitle($channelTitle) + { + $this->channelTitle = $channelTitle; + } + + public function getChannelTitle() + { + return $this->channelTitle; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setGroupId($groupId) + { + $this->groupId = $groupId; + } + + public function getGroupId() + { + return $this->groupId; + } + + public function setPublishedAt($publishedAt) + { + $this->publishedAt = $publishedAt; + } + + public function getPublishedAt() + { + return $this->publishedAt; + } + + public function setThumbnails(Google_Service_YouTube_ThumbnailDetails $thumbnails) + { + $this->thumbnails = $thumbnails; + } + + public function getThumbnails() + { + return $this->thumbnails; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_YouTube_CdnSettings extends Google_Model +{ + public $format; + protected $ingestionInfoType = 'Google_Service_YouTube_IngestionInfo'; + protected $ingestionInfoDataType = ''; + public $ingestionType; + + public function setFormat($format) + { + $this->format = $format; + } + + public function getFormat() + { + return $this->format; + } + + public function setIngestionInfo(Google_Service_YouTube_IngestionInfo $ingestionInfo) + { + $this->ingestionInfo = $ingestionInfo; + } + + public function getIngestionInfo() + { + return $this->ingestionInfo; + } + + public function setIngestionType($ingestionType) + { + $this->ingestionType = $ingestionType; + } + + public function getIngestionType() + { + return $this->ingestionType; + } +} + +class Google_Service_YouTube_Channel extends Google_Model +{ + protected $auditDetailsType = 'Google_Service_YouTube_ChannelAuditDetails'; + protected $auditDetailsDataType = ''; + protected $brandingSettingsType = 'Google_Service_YouTube_ChannelBrandingSettings'; + protected $brandingSettingsDataType = ''; + protected $contentDetailsType = 'Google_Service_YouTube_ChannelContentDetails'; + protected $contentDetailsDataType = ''; + protected $contentOwnerDetailsType = 'Google_Service_YouTube_ChannelContentOwnerDetails'; + protected $contentOwnerDetailsDataType = ''; + protected $conversionPingsType = 'Google_Service_YouTube_ChannelConversionPings'; + protected $conversionPingsDataType = ''; + public $etag; + public $id; + protected $invideoPromotionType = 'Google_Service_YouTube_InvideoPromotion'; + protected $invideoPromotionDataType = ''; + public $kind; + protected $snippetType = 'Google_Service_YouTube_ChannelSnippet'; + protected $snippetDataType = ''; + protected $statisticsType = 'Google_Service_YouTube_ChannelStatistics'; + protected $statisticsDataType = ''; + protected $statusType = 'Google_Service_YouTube_ChannelStatus'; + protected $statusDataType = ''; + protected $topicDetailsType = 'Google_Service_YouTube_ChannelTopicDetails'; + protected $topicDetailsDataType = ''; + + public function setAuditDetails(Google_Service_YouTube_ChannelAuditDetails $auditDetails) + { + $this->auditDetails = $auditDetails; + } + + public function getAuditDetails() + { + return $this->auditDetails; + } + + public function setBrandingSettings(Google_Service_YouTube_ChannelBrandingSettings $brandingSettings) + { + $this->brandingSettings = $brandingSettings; + } + + public function getBrandingSettings() + { + return $this->brandingSettings; + } + + public function setContentDetails(Google_Service_YouTube_ChannelContentDetails $contentDetails) + { + $this->contentDetails = $contentDetails; + } + + public function getContentDetails() + { + return $this->contentDetails; + } + + public function setContentOwnerDetails(Google_Service_YouTube_ChannelContentOwnerDetails $contentOwnerDetails) + { + $this->contentOwnerDetails = $contentOwnerDetails; + } + + public function getContentOwnerDetails() + { + return $this->contentOwnerDetails; + } + + public function setConversionPings(Google_Service_YouTube_ChannelConversionPings $conversionPings) + { + $this->conversionPings = $conversionPings; + } + + public function getConversionPings() + { + return $this->conversionPings; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setInvideoPromotion(Google_Service_YouTube_InvideoPromotion $invideoPromotion) + { + $this->invideoPromotion = $invideoPromotion; + } + + public function getInvideoPromotion() + { + return $this->invideoPromotion; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSnippet(Google_Service_YouTube_ChannelSnippet $snippet) + { + $this->snippet = $snippet; + } + + public function getSnippet() + { + return $this->snippet; + } + + public function setStatistics(Google_Service_YouTube_ChannelStatistics $statistics) + { + $this->statistics = $statistics; + } + + public function getStatistics() + { + return $this->statistics; + } + + public function setStatus(Google_Service_YouTube_ChannelStatus $status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setTopicDetails(Google_Service_YouTube_ChannelTopicDetails $topicDetails) + { + $this->topicDetails = $topicDetails; + } + + public function getTopicDetails() + { + return $this->topicDetails; + } +} + +class Google_Service_YouTube_ChannelAuditDetails extends Google_Model +{ + public $communityGuidelinesGoodStanding; + public $contentIdClaimsGoodStanding; + public $copyrightStrikesGoodStanding; + public $overallGoodStanding; + + public function setCommunityGuidelinesGoodStanding($communityGuidelinesGoodStanding) + { + $this->communityGuidelinesGoodStanding = $communityGuidelinesGoodStanding; + } + + public function getCommunityGuidelinesGoodStanding() + { + return $this->communityGuidelinesGoodStanding; + } + + public function setContentIdClaimsGoodStanding($contentIdClaimsGoodStanding) + { + $this->contentIdClaimsGoodStanding = $contentIdClaimsGoodStanding; + } + + public function getContentIdClaimsGoodStanding() + { + return $this->contentIdClaimsGoodStanding; + } + + public function setCopyrightStrikesGoodStanding($copyrightStrikesGoodStanding) + { + $this->copyrightStrikesGoodStanding = $copyrightStrikesGoodStanding; + } + + public function getCopyrightStrikesGoodStanding() + { + return $this->copyrightStrikesGoodStanding; + } + + public function setOverallGoodStanding($overallGoodStanding) + { + $this->overallGoodStanding = $overallGoodStanding; + } + + public function getOverallGoodStanding() + { + return $this->overallGoodStanding; + } +} + +class Google_Service_YouTube_ChannelBannerResource extends Google_Model +{ + public $etag; + public $kind; + public $url; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } +} + +class Google_Service_YouTube_ChannelBrandingSettings extends Google_Collection +{ + protected $channelType = 'Google_Service_YouTube_ChannelSettings'; + protected $channelDataType = ''; + protected $hintsType = 'Google_Service_YouTube_PropertyValue'; + protected $hintsDataType = 'array'; + protected $imageType = 'Google_Service_YouTube_ImageSettings'; + protected $imageDataType = ''; + protected $watchType = 'Google_Service_YouTube_WatchSettings'; + protected $watchDataType = ''; + + public function setChannel(Google_Service_YouTube_ChannelSettings $channel) + { + $this->channel = $channel; + } + + public function getChannel() + { + return $this->channel; + } + + public function setHints($hints) + { + $this->hints = $hints; + } + + public function getHints() + { + return $this->hints; + } + + public function setImage(Google_Service_YouTube_ImageSettings $image) + { + $this->image = $image; + } + + public function getImage() + { + return $this->image; + } + + public function setWatch(Google_Service_YouTube_WatchSettings $watch) + { + $this->watch = $watch; + } + + public function getWatch() + { + return $this->watch; + } +} + +class Google_Service_YouTube_ChannelContentDetails extends Google_Model +{ + public $googlePlusUserId; + protected $relatedPlaylistsType = 'Google_Service_YouTube_ChannelContentDetailsRelatedPlaylists'; + protected $relatedPlaylistsDataType = ''; + + public function setGooglePlusUserId($googlePlusUserId) + { + $this->googlePlusUserId = $googlePlusUserId; + } + + public function getGooglePlusUserId() + { + return $this->googlePlusUserId; + } + + public function setRelatedPlaylists(Google_Service_YouTube_ChannelContentDetailsRelatedPlaylists $relatedPlaylists) + { + $this->relatedPlaylists = $relatedPlaylists; + } + + public function getRelatedPlaylists() + { + return $this->relatedPlaylists; + } +} + +class Google_Service_YouTube_ChannelContentDetailsRelatedPlaylists extends Google_Model +{ + public $favorites; + public $likes; + public $uploads; + public $watchHistory; + public $watchLater; + + public function setFavorites($favorites) + { + $this->favorites = $favorites; + } + + public function getFavorites() + { + return $this->favorites; + } + + public function setLikes($likes) + { + $this->likes = $likes; + } + + public function getLikes() + { + return $this->likes; + } + + public function setUploads($uploads) + { + $this->uploads = $uploads; + } + + public function getUploads() + { + return $this->uploads; + } + + public function setWatchHistory($watchHistory) + { + $this->watchHistory = $watchHistory; + } + + public function getWatchHistory() + { + return $this->watchHistory; + } + + public function setWatchLater($watchLater) + { + $this->watchLater = $watchLater; + } + + public function getWatchLater() + { + return $this->watchLater; + } +} + +class Google_Service_YouTube_ChannelContentOwnerDetails extends Google_Model +{ + public $contentOwner; + public $timeLinked; + + public function setContentOwner($contentOwner) + { + $this->contentOwner = $contentOwner; + } + + public function getContentOwner() + { + return $this->contentOwner; + } + + public function setTimeLinked($timeLinked) + { + $this->timeLinked = $timeLinked; + } + + public function getTimeLinked() + { + return $this->timeLinked; + } +} + +class Google_Service_YouTube_ChannelConversionPing extends Google_Model +{ + public $context; + public $conversionUrl; + + public function setContext($context) + { + $this->context = $context; + } + + public function getContext() + { + return $this->context; + } + + public function setConversionUrl($conversionUrl) + { + $this->conversionUrl = $conversionUrl; + } + + public function getConversionUrl() + { + return $this->conversionUrl; + } +} + +class Google_Service_YouTube_ChannelConversionPings extends Google_Collection +{ + protected $pingsType = 'Google_Service_YouTube_ChannelConversionPing'; + protected $pingsDataType = 'array'; + + public function setPings($pings) + { + $this->pings = $pings; + } + + public function getPings() + { + return $this->pings; + } +} + +class Google_Service_YouTube_ChannelListResponse extends Google_Collection +{ + public $etag; + public $eventId; + protected $itemsType = 'Google_Service_YouTube_Channel'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + protected $pageInfoType = 'Google_Service_YouTube_PageInfo'; + protected $pageInfoDataType = ''; + public $prevPageToken; + protected $tokenPaginationType = 'Google_Service_YouTube_TokenPagination'; + protected $tokenPaginationDataType = ''; + public $visitorId; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setEventId($eventId) + { + $this->eventId = $eventId; + } + + public function getEventId() + { + return $this->eventId; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPageInfo(Google_Service_YouTube_PageInfo $pageInfo) + { + $this->pageInfo = $pageInfo; + } + + public function getPageInfo() + { + return $this->pageInfo; + } + + public function setPrevPageToken($prevPageToken) + { + $this->prevPageToken = $prevPageToken; + } + + public function getPrevPageToken() + { + return $this->prevPageToken; + } + + public function setTokenPagination(Google_Service_YouTube_TokenPagination $tokenPagination) + { + $this->tokenPagination = $tokenPagination; + } + + public function getTokenPagination() + { + return $this->tokenPagination; + } + + public function setVisitorId($visitorId) + { + $this->visitorId = $visitorId; + } + + public function getVisitorId() + { + return $this->visitorId; + } +} + +class Google_Service_YouTube_ChannelSection extends Google_Model +{ + protected $contentDetailsType = 'Google_Service_YouTube_ChannelSectionContentDetails'; + protected $contentDetailsDataType = ''; + public $etag; + public $id; + public $kind; + protected $snippetType = 'Google_Service_YouTube_ChannelSectionSnippet'; + protected $snippetDataType = ''; + + public function setContentDetails(Google_Service_YouTube_ChannelSectionContentDetails $contentDetails) + { + $this->contentDetails = $contentDetails; + } + + public function getContentDetails() + { + return $this->contentDetails; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSnippet(Google_Service_YouTube_ChannelSectionSnippet $snippet) + { + $this->snippet = $snippet; + } + + public function getSnippet() + { + return $this->snippet; + } +} + +class Google_Service_YouTube_ChannelSectionContentDetails extends Google_Collection +{ + public $channels; + public $playlists; + + public function setChannels($channels) + { + $this->channels = $channels; + } + + public function getChannels() + { + return $this->channels; + } + + public function setPlaylists($playlists) + { + $this->playlists = $playlists; + } + + public function getPlaylists() + { + return $this->playlists; + } +} + +class Google_Service_YouTube_ChannelSectionListResponse extends Google_Collection +{ + public $etag; + public $eventId; + protected $itemsType = 'Google_Service_YouTube_ChannelSection'; + protected $itemsDataType = 'array'; + public $kind; + public $visitorId; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setEventId($eventId) + { + $this->eventId = $eventId; + } + + public function getEventId() + { + return $this->eventId; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setVisitorId($visitorId) + { + $this->visitorId = $visitorId; + } + + public function getVisitorId() + { + return $this->visitorId; + } +} + +class Google_Service_YouTube_ChannelSectionSnippet extends Google_Model +{ + public $channelId; + public $position; + public $style; + public $title; + public $type; + + public function setChannelId($channelId) + { + $this->channelId = $channelId; + } + + public function getChannelId() + { + return $this->channelId; + } + + public function setPosition($position) + { + $this->position = $position; + } + + public function getPosition() + { + return $this->position; + } + + public function setStyle($style) + { + $this->style = $style; + } + + public function getStyle() + { + return $this->style; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_YouTube_ChannelSettings extends Google_Collection +{ + public $defaultTab; + public $description; + public $featuredChannelsTitle; + public $featuredChannelsUrls; + public $keywords; + public $moderateComments; + public $profileColor; + public $showBrowseView; + public $showRelatedChannels; + public $title; + public $trackingAnalyticsAccountId; + public $unsubscribedTrailer; + + public function setDefaultTab($defaultTab) + { + $this->defaultTab = $defaultTab; + } + + public function getDefaultTab() + { + return $this->defaultTab; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setFeaturedChannelsTitle($featuredChannelsTitle) + { + $this->featuredChannelsTitle = $featuredChannelsTitle; + } + + public function getFeaturedChannelsTitle() + { + return $this->featuredChannelsTitle; + } + + public function setFeaturedChannelsUrls($featuredChannelsUrls) + { + $this->featuredChannelsUrls = $featuredChannelsUrls; + } + + public function getFeaturedChannelsUrls() + { + return $this->featuredChannelsUrls; + } + + public function setKeywords($keywords) + { + $this->keywords = $keywords; + } + + public function getKeywords() + { + return $this->keywords; + } + + public function setModerateComments($moderateComments) + { + $this->moderateComments = $moderateComments; + } + + public function getModerateComments() + { + return $this->moderateComments; + } + + public function setProfileColor($profileColor) + { + $this->profileColor = $profileColor; + } + + public function getProfileColor() + { + return $this->profileColor; + } + + public function setShowBrowseView($showBrowseView) + { + $this->showBrowseView = $showBrowseView; + } + + public function getShowBrowseView() + { + return $this->showBrowseView; + } + + public function setShowRelatedChannels($showRelatedChannels) + { + $this->showRelatedChannels = $showRelatedChannels; + } + + public function getShowRelatedChannels() + { + return $this->showRelatedChannels; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } + + public function setTrackingAnalyticsAccountId($trackingAnalyticsAccountId) + { + $this->trackingAnalyticsAccountId = $trackingAnalyticsAccountId; + } + + public function getTrackingAnalyticsAccountId() + { + return $this->trackingAnalyticsAccountId; + } + + public function setUnsubscribedTrailer($unsubscribedTrailer) + { + $this->unsubscribedTrailer = $unsubscribedTrailer; + } + + public function getUnsubscribedTrailer() + { + return $this->unsubscribedTrailer; + } +} + +class Google_Service_YouTube_ChannelSnippet extends Google_Model +{ + public $description; + public $publishedAt; + protected $thumbnailsType = 'Google_Service_YouTube_ThumbnailDetails'; + protected $thumbnailsDataType = ''; + public $title; + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setPublishedAt($publishedAt) + { + $this->publishedAt = $publishedAt; + } + + public function getPublishedAt() + { + return $this->publishedAt; + } + + public function setThumbnails(Google_Service_YouTube_ThumbnailDetails $thumbnails) + { + $this->thumbnails = $thumbnails; + } + + public function getThumbnails() + { + return $this->thumbnails; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_YouTube_ChannelStatistics extends Google_Model +{ + public $commentCount; + public $hiddenSubscriberCount; + public $subscriberCount; + public $videoCount; + public $viewCount; + + public function setCommentCount($commentCount) + { + $this->commentCount = $commentCount; + } + + public function getCommentCount() + { + return $this->commentCount; + } + + public function setHiddenSubscriberCount($hiddenSubscriberCount) + { + $this->hiddenSubscriberCount = $hiddenSubscriberCount; + } + + public function getHiddenSubscriberCount() + { + return $this->hiddenSubscriberCount; + } + + public function setSubscriberCount($subscriberCount) + { + $this->subscriberCount = $subscriberCount; + } + + public function getSubscriberCount() + { + return $this->subscriberCount; + } + + public function setVideoCount($videoCount) + { + $this->videoCount = $videoCount; + } + + public function getVideoCount() + { + return $this->videoCount; + } + + public function setViewCount($viewCount) + { + $this->viewCount = $viewCount; + } + + public function getViewCount() + { + return $this->viewCount; + } +} + +class Google_Service_YouTube_ChannelStatus extends Google_Model +{ + public $isLinked; + public $privacyStatus; + + public function setIsLinked($isLinked) + { + $this->isLinked = $isLinked; + } + + public function getIsLinked() + { + return $this->isLinked; + } + + public function setPrivacyStatus($privacyStatus) + { + $this->privacyStatus = $privacyStatus; + } + + public function getPrivacyStatus() + { + return $this->privacyStatus; + } +} + +class Google_Service_YouTube_ChannelTopicDetails extends Google_Collection +{ + public $topicIds; + + public function setTopicIds($topicIds) + { + $this->topicIds = $topicIds; + } + + public function getTopicIds() + { + return $this->topicIds; + } +} + +class Google_Service_YouTube_ContentRating extends Google_Model +{ + public $acbRating; + public $agcomRating; + public $anatelRating; + public $bbfcRating; + public $bfvcRating; + public $bmukkRating; + public $catvRating; + public $catvfrRating; + public $cbfcRating; + public $cccRating; + public $cceRating; + public $chfilmRating; + public $chvrsRating; + public $cicfRating; + public $cnaRating; + public $csaRating; + public $cscfRating; + public $czfilmRating; + public $djctqRating; + public $eefilmRating; + public $egfilmRating; + public $eirinRating; + public $fcbmRating; + public $fcoRating; + public $fmocRating; + public $fpbRating; + public $fskRating; + public $grfilmRating; + public $icaaRating; + public $ifcoRating; + public $ilfilmRating; + public $incaaRating; + public $kfcbRating; + public $kijkwijzerRating; + public $kmrbRating; + public $lsfRating; + public $mccaaRating; + public $mccypRating; + public $mdaRating; + public $medietilsynetRating; + public $mekuRating; + public $mibacRating; + public $mocRating; + public $moctwRating; + public $mpaaRating; + public $mtrcbRating; + public $nbcRating; + public $nbcplRating; + public $nfrcRating; + public $nfvcbRating; + public $nkclvRating; + public $oflcRating; + public $pefilmRating; + public $rcnofRating; + public $resorteviolenciaRating; + public $rtcRating; + public $rteRating; + public $russiaRating; + public $skfilmRating; + public $smaisRating; + public $smsaRating; + public $tvpgRating; + public $ytRating; + + public function setAcbRating($acbRating) + { + $this->acbRating = $acbRating; + } + + public function getAcbRating() + { + return $this->acbRating; + } + + public function setAgcomRating($agcomRating) + { + $this->agcomRating = $agcomRating; + } + + public function getAgcomRating() + { + return $this->agcomRating; + } + + public function setAnatelRating($anatelRating) + { + $this->anatelRating = $anatelRating; + } + + public function getAnatelRating() + { + return $this->anatelRating; + } + + public function setBbfcRating($bbfcRating) + { + $this->bbfcRating = $bbfcRating; + } + + public function getBbfcRating() + { + return $this->bbfcRating; + } + + public function setBfvcRating($bfvcRating) + { + $this->bfvcRating = $bfvcRating; + } + + public function getBfvcRating() + { + return $this->bfvcRating; + } + + public function setBmukkRating($bmukkRating) + { + $this->bmukkRating = $bmukkRating; + } + + public function getBmukkRating() + { + return $this->bmukkRating; + } + + public function setCatvRating($catvRating) + { + $this->catvRating = $catvRating; + } + + public function getCatvRating() + { + return $this->catvRating; + } + + public function setCatvfrRating($catvfrRating) + { + $this->catvfrRating = $catvfrRating; + } + + public function getCatvfrRating() + { + return $this->catvfrRating; + } + + public function setCbfcRating($cbfcRating) + { + $this->cbfcRating = $cbfcRating; + } + + public function getCbfcRating() + { + return $this->cbfcRating; + } + + public function setCccRating($cccRating) + { + $this->cccRating = $cccRating; + } + + public function getCccRating() + { + return $this->cccRating; + } + + public function setCceRating($cceRating) + { + $this->cceRating = $cceRating; + } + + public function getCceRating() + { + return $this->cceRating; + } + + public function setChfilmRating($chfilmRating) + { + $this->chfilmRating = $chfilmRating; + } + + public function getChfilmRating() + { + return $this->chfilmRating; + } + + public function setChvrsRating($chvrsRating) + { + $this->chvrsRating = $chvrsRating; + } + + public function getChvrsRating() + { + return $this->chvrsRating; + } + + public function setCicfRating($cicfRating) + { + $this->cicfRating = $cicfRating; + } + + public function getCicfRating() + { + return $this->cicfRating; + } + + public function setCnaRating($cnaRating) + { + $this->cnaRating = $cnaRating; + } + + public function getCnaRating() + { + return $this->cnaRating; + } + + public function setCsaRating($csaRating) + { + $this->csaRating = $csaRating; + } + + public function getCsaRating() + { + return $this->csaRating; + } + + public function setCscfRating($cscfRating) + { + $this->cscfRating = $cscfRating; + } + + public function getCscfRating() + { + return $this->cscfRating; + } + + public function setCzfilmRating($czfilmRating) + { + $this->czfilmRating = $czfilmRating; + } + + public function getCzfilmRating() + { + return $this->czfilmRating; + } + + public function setDjctqRating($djctqRating) + { + $this->djctqRating = $djctqRating; + } + + public function getDjctqRating() + { + return $this->djctqRating; + } + + public function setEefilmRating($eefilmRating) + { + $this->eefilmRating = $eefilmRating; + } + + public function getEefilmRating() + { + return $this->eefilmRating; + } + + public function setEgfilmRating($egfilmRating) + { + $this->egfilmRating = $egfilmRating; + } + + public function getEgfilmRating() + { + return $this->egfilmRating; + } + + public function setEirinRating($eirinRating) + { + $this->eirinRating = $eirinRating; + } + + public function getEirinRating() + { + return $this->eirinRating; + } + + public function setFcbmRating($fcbmRating) + { + $this->fcbmRating = $fcbmRating; + } + + public function getFcbmRating() + { + return $this->fcbmRating; + } + + public function setFcoRating($fcoRating) + { + $this->fcoRating = $fcoRating; + } + + public function getFcoRating() + { + return $this->fcoRating; + } + + public function setFmocRating($fmocRating) + { + $this->fmocRating = $fmocRating; + } + + public function getFmocRating() + { + return $this->fmocRating; + } + + public function setFpbRating($fpbRating) + { + $this->fpbRating = $fpbRating; + } + + public function getFpbRating() + { + return $this->fpbRating; + } + + public function setFskRating($fskRating) + { + $this->fskRating = $fskRating; + } + + public function getFskRating() + { + return $this->fskRating; + } + + public function setGrfilmRating($grfilmRating) + { + $this->grfilmRating = $grfilmRating; + } + + public function getGrfilmRating() + { + return $this->grfilmRating; + } + + public function setIcaaRating($icaaRating) + { + $this->icaaRating = $icaaRating; + } + + public function getIcaaRating() + { + return $this->icaaRating; + } + + public function setIfcoRating($ifcoRating) + { + $this->ifcoRating = $ifcoRating; + } + + public function getIfcoRating() + { + return $this->ifcoRating; + } + + public function setIlfilmRating($ilfilmRating) + { + $this->ilfilmRating = $ilfilmRating; + } + + public function getIlfilmRating() + { + return $this->ilfilmRating; + } + + public function setIncaaRating($incaaRating) + { + $this->incaaRating = $incaaRating; + } + + public function getIncaaRating() + { + return $this->incaaRating; + } + + public function setKfcbRating($kfcbRating) + { + $this->kfcbRating = $kfcbRating; + } + + public function getKfcbRating() + { + return $this->kfcbRating; + } + + public function setKijkwijzerRating($kijkwijzerRating) + { + $this->kijkwijzerRating = $kijkwijzerRating; + } + + public function getKijkwijzerRating() + { + return $this->kijkwijzerRating; + } + + public function setKmrbRating($kmrbRating) + { + $this->kmrbRating = $kmrbRating; + } + + public function getKmrbRating() + { + return $this->kmrbRating; + } + + public function setLsfRating($lsfRating) + { + $this->lsfRating = $lsfRating; + } + + public function getLsfRating() + { + return $this->lsfRating; + } + + public function setMccaaRating($mccaaRating) + { + $this->mccaaRating = $mccaaRating; + } + + public function getMccaaRating() + { + return $this->mccaaRating; + } + + public function setMccypRating($mccypRating) + { + $this->mccypRating = $mccypRating; + } + + public function getMccypRating() + { + return $this->mccypRating; + } + + public function setMdaRating($mdaRating) + { + $this->mdaRating = $mdaRating; + } + + public function getMdaRating() + { + return $this->mdaRating; + } + + public function setMedietilsynetRating($medietilsynetRating) + { + $this->medietilsynetRating = $medietilsynetRating; + } + + public function getMedietilsynetRating() + { + return $this->medietilsynetRating; + } + + public function setMekuRating($mekuRating) + { + $this->mekuRating = $mekuRating; + } + + public function getMekuRating() + { + return $this->mekuRating; + } + + public function setMibacRating($mibacRating) + { + $this->mibacRating = $mibacRating; + } + + public function getMibacRating() + { + return $this->mibacRating; + } + + public function setMocRating($mocRating) + { + $this->mocRating = $mocRating; + } + + public function getMocRating() + { + return $this->mocRating; + } + + public function setMoctwRating($moctwRating) + { + $this->moctwRating = $moctwRating; + } + + public function getMoctwRating() + { + return $this->moctwRating; + } + + public function setMpaaRating($mpaaRating) + { + $this->mpaaRating = $mpaaRating; + } + + public function getMpaaRating() + { + return $this->mpaaRating; + } + + public function setMtrcbRating($mtrcbRating) + { + $this->mtrcbRating = $mtrcbRating; + } + + public function getMtrcbRating() + { + return $this->mtrcbRating; + } + + public function setNbcRating($nbcRating) + { + $this->nbcRating = $nbcRating; + } + + public function getNbcRating() + { + return $this->nbcRating; + } + + public function setNbcplRating($nbcplRating) + { + $this->nbcplRating = $nbcplRating; + } + + public function getNbcplRating() + { + return $this->nbcplRating; + } + + public function setNfrcRating($nfrcRating) + { + $this->nfrcRating = $nfrcRating; + } + + public function getNfrcRating() + { + return $this->nfrcRating; + } + + public function setNfvcbRating($nfvcbRating) + { + $this->nfvcbRating = $nfvcbRating; + } + + public function getNfvcbRating() + { + return $this->nfvcbRating; + } + + public function setNkclvRating($nkclvRating) + { + $this->nkclvRating = $nkclvRating; + } + + public function getNkclvRating() + { + return $this->nkclvRating; + } + + public function setOflcRating($oflcRating) + { + $this->oflcRating = $oflcRating; + } + + public function getOflcRating() + { + return $this->oflcRating; + } + + public function setPefilmRating($pefilmRating) + { + $this->pefilmRating = $pefilmRating; + } + + public function getPefilmRating() + { + return $this->pefilmRating; + } + + public function setRcnofRating($rcnofRating) + { + $this->rcnofRating = $rcnofRating; + } + + public function getRcnofRating() + { + return $this->rcnofRating; + } + + public function setResorteviolenciaRating($resorteviolenciaRating) + { + $this->resorteviolenciaRating = $resorteviolenciaRating; + } + + public function getResorteviolenciaRating() + { + return $this->resorteviolenciaRating; + } + + public function setRtcRating($rtcRating) + { + $this->rtcRating = $rtcRating; + } + + public function getRtcRating() + { + return $this->rtcRating; + } + + public function setRteRating($rteRating) + { + $this->rteRating = $rteRating; + } + + public function getRteRating() + { + return $this->rteRating; + } + + public function setRussiaRating($russiaRating) + { + $this->russiaRating = $russiaRating; + } + + public function getRussiaRating() + { + return $this->russiaRating; + } + + public function setSkfilmRating($skfilmRating) + { + $this->skfilmRating = $skfilmRating; + } + + public function getSkfilmRating() + { + return $this->skfilmRating; + } + + public function setSmaisRating($smaisRating) + { + $this->smaisRating = $smaisRating; + } + + public function getSmaisRating() + { + return $this->smaisRating; + } + + public function setSmsaRating($smsaRating) + { + $this->smsaRating = $smsaRating; + } + + public function getSmsaRating() + { + return $this->smsaRating; + } + + public function setTvpgRating($tvpgRating) + { + $this->tvpgRating = $tvpgRating; + } + + public function getTvpgRating() + { + return $this->tvpgRating; + } + + public function setYtRating($ytRating) + { + $this->ytRating = $ytRating; + } + + public function getYtRating() + { + return $this->ytRating; + } +} + +class Google_Service_YouTube_GeoPoint extends Google_Model +{ + public $altitude; + public $latitude; + public $longitude; + + public function setAltitude($altitude) + { + $this->altitude = $altitude; + } + + public function getAltitude() + { + return $this->altitude; + } + + public function setLatitude($latitude) + { + $this->latitude = $latitude; + } + + public function getLatitude() + { + return $this->latitude; + } + + public function setLongitude($longitude) + { + $this->longitude = $longitude; + } + + public function getLongitude() + { + return $this->longitude; + } +} + +class Google_Service_YouTube_GuideCategory extends Google_Model +{ + public $etag; + public $id; + public $kind; + protected $snippetType = 'Google_Service_YouTube_GuideCategorySnippet'; + protected $snippetDataType = ''; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSnippet(Google_Service_YouTube_GuideCategorySnippet $snippet) + { + $this->snippet = $snippet; + } + + public function getSnippet() + { + return $this->snippet; + } +} + +class Google_Service_YouTube_GuideCategoryListResponse extends Google_Collection +{ + public $etag; + public $eventId; + protected $itemsType = 'Google_Service_YouTube_GuideCategory'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + protected $pageInfoType = 'Google_Service_YouTube_PageInfo'; + protected $pageInfoDataType = ''; + public $prevPageToken; + protected $tokenPaginationType = 'Google_Service_YouTube_TokenPagination'; + protected $tokenPaginationDataType = ''; + public $visitorId; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setEventId($eventId) + { + $this->eventId = $eventId; + } + + public function getEventId() + { + return $this->eventId; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPageInfo(Google_Service_YouTube_PageInfo $pageInfo) + { + $this->pageInfo = $pageInfo; + } + + public function getPageInfo() + { + return $this->pageInfo; + } + + public function setPrevPageToken($prevPageToken) + { + $this->prevPageToken = $prevPageToken; + } + + public function getPrevPageToken() + { + return $this->prevPageToken; + } + + public function setTokenPagination(Google_Service_YouTube_TokenPagination $tokenPagination) + { + $this->tokenPagination = $tokenPagination; + } + + public function getTokenPagination() + { + return $this->tokenPagination; + } + + public function setVisitorId($visitorId) + { + $this->visitorId = $visitorId; + } + + public function getVisitorId() + { + return $this->visitorId; + } +} + +class Google_Service_YouTube_GuideCategorySnippet extends Google_Model +{ + public $channelId; + public $title; + + public function setChannelId($channelId) + { + $this->channelId = $channelId; + } + + public function getChannelId() + { + return $this->channelId; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_YouTube_I18nLanguage extends Google_Model +{ + public $etag; + public $id; + public $kind; + protected $snippetType = 'Google_Service_YouTube_I18nLanguageSnippet'; + protected $snippetDataType = ''; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSnippet(Google_Service_YouTube_I18nLanguageSnippet $snippet) + { + $this->snippet = $snippet; + } + + public function getSnippet() + { + return $this->snippet; + } +} + +class Google_Service_YouTube_I18nLanguageListResponse extends Google_Collection +{ + public $etag; + public $eventId; + protected $itemsType = 'Google_Service_YouTube_I18nLanguage'; + protected $itemsDataType = 'array'; + public $kind; + public $visitorId; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setEventId($eventId) + { + $this->eventId = $eventId; + } + + public function getEventId() + { + return $this->eventId; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setVisitorId($visitorId) + { + $this->visitorId = $visitorId; + } + + public function getVisitorId() + { + return $this->visitorId; + } +} + +class Google_Service_YouTube_I18nLanguageSnippet extends Google_Model +{ + public $hl; + public $name; + + public function setHl($hl) + { + $this->hl = $hl; + } + + public function getHl() + { + return $this->hl; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_YouTube_I18nRegion extends Google_Model +{ + public $etag; + public $id; + public $kind; + protected $snippetType = 'Google_Service_YouTube_I18nRegionSnippet'; + protected $snippetDataType = ''; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSnippet(Google_Service_YouTube_I18nRegionSnippet $snippet) + { + $this->snippet = $snippet; + } + + public function getSnippet() + { + return $this->snippet; + } +} + +class Google_Service_YouTube_I18nRegionListResponse extends Google_Collection +{ + public $etag; + public $eventId; + protected $itemsType = 'Google_Service_YouTube_I18nRegion'; + protected $itemsDataType = 'array'; + public $kind; + public $visitorId; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setEventId($eventId) + { + $this->eventId = $eventId; + } + + public function getEventId() + { + return $this->eventId; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setVisitorId($visitorId) + { + $this->visitorId = $visitorId; + } + + public function getVisitorId() + { + return $this->visitorId; + } +} + +class Google_Service_YouTube_I18nRegionSnippet extends Google_Model +{ + public $gl; + public $name; + + public function setGl($gl) + { + $this->gl = $gl; + } + + public function getGl() + { + return $this->gl; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Google_Service_YouTube_ImageSettings extends Google_Model +{ + protected $backgroundImageUrlType = 'Google_Service_YouTube_LocalizedProperty'; + protected $backgroundImageUrlDataType = ''; + public $bannerExternalUrl; + public $bannerImageUrl; + public $bannerMobileExtraHdImageUrl; + public $bannerMobileHdImageUrl; + public $bannerMobileImageUrl; + public $bannerMobileLowImageUrl; + public $bannerMobileMediumHdImageUrl; + public $bannerTabletExtraHdImageUrl; + public $bannerTabletHdImageUrl; + public $bannerTabletImageUrl; + public $bannerTabletLowImageUrl; + public $bannerTvHighImageUrl; + public $bannerTvImageUrl; + public $bannerTvLowImageUrl; + public $bannerTvMediumImageUrl; + protected $largeBrandedBannerImageImapScriptType = 'Google_Service_YouTube_LocalizedProperty'; + protected $largeBrandedBannerImageImapScriptDataType = ''; + protected $largeBrandedBannerImageUrlType = 'Google_Service_YouTube_LocalizedProperty'; + protected $largeBrandedBannerImageUrlDataType = ''; + protected $smallBrandedBannerImageImapScriptType = 'Google_Service_YouTube_LocalizedProperty'; + protected $smallBrandedBannerImageImapScriptDataType = ''; + protected $smallBrandedBannerImageUrlType = 'Google_Service_YouTube_LocalizedProperty'; + protected $smallBrandedBannerImageUrlDataType = ''; + public $trackingImageUrl; + public $watchIconImageUrl; + + public function setBackgroundImageUrl(Google_Service_YouTube_LocalizedProperty $backgroundImageUrl) + { + $this->backgroundImageUrl = $backgroundImageUrl; + } + + public function getBackgroundImageUrl() + { + return $this->backgroundImageUrl; + } + + public function setBannerExternalUrl($bannerExternalUrl) + { + $this->bannerExternalUrl = $bannerExternalUrl; + } + + public function getBannerExternalUrl() + { + return $this->bannerExternalUrl; + } + + public function setBannerImageUrl($bannerImageUrl) + { + $this->bannerImageUrl = $bannerImageUrl; + } + + public function getBannerImageUrl() + { + return $this->bannerImageUrl; + } + + public function setBannerMobileExtraHdImageUrl($bannerMobileExtraHdImageUrl) + { + $this->bannerMobileExtraHdImageUrl = $bannerMobileExtraHdImageUrl; + } + + public function getBannerMobileExtraHdImageUrl() + { + return $this->bannerMobileExtraHdImageUrl; + } + + public function setBannerMobileHdImageUrl($bannerMobileHdImageUrl) + { + $this->bannerMobileHdImageUrl = $bannerMobileHdImageUrl; + } + + public function getBannerMobileHdImageUrl() + { + return $this->bannerMobileHdImageUrl; + } + + public function setBannerMobileImageUrl($bannerMobileImageUrl) + { + $this->bannerMobileImageUrl = $bannerMobileImageUrl; + } + + public function getBannerMobileImageUrl() + { + return $this->bannerMobileImageUrl; + } + + public function setBannerMobileLowImageUrl($bannerMobileLowImageUrl) + { + $this->bannerMobileLowImageUrl = $bannerMobileLowImageUrl; + } + + public function getBannerMobileLowImageUrl() + { + return $this->bannerMobileLowImageUrl; + } + + public function setBannerMobileMediumHdImageUrl($bannerMobileMediumHdImageUrl) + { + $this->bannerMobileMediumHdImageUrl = $bannerMobileMediumHdImageUrl; + } + + public function getBannerMobileMediumHdImageUrl() + { + return $this->bannerMobileMediumHdImageUrl; + } + + public function setBannerTabletExtraHdImageUrl($bannerTabletExtraHdImageUrl) + { + $this->bannerTabletExtraHdImageUrl = $bannerTabletExtraHdImageUrl; + } + + public function getBannerTabletExtraHdImageUrl() + { + return $this->bannerTabletExtraHdImageUrl; + } + + public function setBannerTabletHdImageUrl($bannerTabletHdImageUrl) + { + $this->bannerTabletHdImageUrl = $bannerTabletHdImageUrl; + } + + public function getBannerTabletHdImageUrl() + { + return $this->bannerTabletHdImageUrl; + } + + public function setBannerTabletImageUrl($bannerTabletImageUrl) + { + $this->bannerTabletImageUrl = $bannerTabletImageUrl; + } + + public function getBannerTabletImageUrl() + { + return $this->bannerTabletImageUrl; + } + + public function setBannerTabletLowImageUrl($bannerTabletLowImageUrl) + { + $this->bannerTabletLowImageUrl = $bannerTabletLowImageUrl; + } + + public function getBannerTabletLowImageUrl() + { + return $this->bannerTabletLowImageUrl; + } + + public function setBannerTvHighImageUrl($bannerTvHighImageUrl) + { + $this->bannerTvHighImageUrl = $bannerTvHighImageUrl; + } + + public function getBannerTvHighImageUrl() + { + return $this->bannerTvHighImageUrl; + } + + public function setBannerTvImageUrl($bannerTvImageUrl) + { + $this->bannerTvImageUrl = $bannerTvImageUrl; + } + + public function getBannerTvImageUrl() + { + return $this->bannerTvImageUrl; + } + + public function setBannerTvLowImageUrl($bannerTvLowImageUrl) + { + $this->bannerTvLowImageUrl = $bannerTvLowImageUrl; + } + + public function getBannerTvLowImageUrl() + { + return $this->bannerTvLowImageUrl; + } + + public function setBannerTvMediumImageUrl($bannerTvMediumImageUrl) + { + $this->bannerTvMediumImageUrl = $bannerTvMediumImageUrl; + } + + public function getBannerTvMediumImageUrl() + { + return $this->bannerTvMediumImageUrl; + } + + public function setLargeBrandedBannerImageImapScript(Google_Service_YouTube_LocalizedProperty $largeBrandedBannerImageImapScript) + { + $this->largeBrandedBannerImageImapScript = $largeBrandedBannerImageImapScript; + } + + public function getLargeBrandedBannerImageImapScript() + { + return $this->largeBrandedBannerImageImapScript; + } + + public function setLargeBrandedBannerImageUrl(Google_Service_YouTube_LocalizedProperty $largeBrandedBannerImageUrl) + { + $this->largeBrandedBannerImageUrl = $largeBrandedBannerImageUrl; + } + + public function getLargeBrandedBannerImageUrl() + { + return $this->largeBrandedBannerImageUrl; + } + + public function setSmallBrandedBannerImageImapScript(Google_Service_YouTube_LocalizedProperty $smallBrandedBannerImageImapScript) + { + $this->smallBrandedBannerImageImapScript = $smallBrandedBannerImageImapScript; + } + + public function getSmallBrandedBannerImageImapScript() + { + return $this->smallBrandedBannerImageImapScript; + } + + public function setSmallBrandedBannerImageUrl(Google_Service_YouTube_LocalizedProperty $smallBrandedBannerImageUrl) + { + $this->smallBrandedBannerImageUrl = $smallBrandedBannerImageUrl; + } + + public function getSmallBrandedBannerImageUrl() + { + return $this->smallBrandedBannerImageUrl; + } + + public function setTrackingImageUrl($trackingImageUrl) + { + $this->trackingImageUrl = $trackingImageUrl; + } + + public function getTrackingImageUrl() + { + return $this->trackingImageUrl; + } + + public function setWatchIconImageUrl($watchIconImageUrl) + { + $this->watchIconImageUrl = $watchIconImageUrl; + } + + public function getWatchIconImageUrl() + { + return $this->watchIconImageUrl; + } +} + +class Google_Service_YouTube_IngestionInfo extends Google_Model +{ + public $backupIngestionAddress; + public $ingestionAddress; + public $streamName; + + public function setBackupIngestionAddress($backupIngestionAddress) + { + $this->backupIngestionAddress = $backupIngestionAddress; + } + + public function getBackupIngestionAddress() + { + return $this->backupIngestionAddress; + } + + public function setIngestionAddress($ingestionAddress) + { + $this->ingestionAddress = $ingestionAddress; + } + + public function getIngestionAddress() + { + return $this->ingestionAddress; + } + + public function setStreamName($streamName) + { + $this->streamName = $streamName; + } + + public function getStreamName() + { + return $this->streamName; + } +} + +class Google_Service_YouTube_InvideoBranding extends Google_Model +{ + public $imageBytes; + public $imageUrl; + protected $positionType = 'Google_Service_YouTube_InvideoPosition'; + protected $positionDataType = ''; + public $targetChannelId; + protected $timingType = 'Google_Service_YouTube_InvideoTiming'; + protected $timingDataType = ''; + + public function setImageBytes($imageBytes) + { + $this->imageBytes = $imageBytes; + } + + public function getImageBytes() + { + return $this->imageBytes; + } + + public function setImageUrl($imageUrl) + { + $this->imageUrl = $imageUrl; + } + + public function getImageUrl() + { + return $this->imageUrl; + } + + public function setPosition(Google_Service_YouTube_InvideoPosition $position) + { + $this->position = $position; + } + + public function getPosition() + { + return $this->position; + } + + public function setTargetChannelId($targetChannelId) + { + $this->targetChannelId = $targetChannelId; + } + + public function getTargetChannelId() + { + return $this->targetChannelId; + } + + public function setTiming(Google_Service_YouTube_InvideoTiming $timing) + { + $this->timing = $timing; + } + + public function getTiming() + { + return $this->timing; + } +} + +class Google_Service_YouTube_InvideoPosition extends Google_Model +{ + public $cornerPosition; + public $type; + + public function setCornerPosition($cornerPosition) + { + $this->cornerPosition = $cornerPosition; + } + + public function getCornerPosition() + { + return $this->cornerPosition; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_YouTube_InvideoPromotion extends Google_Collection +{ + protected $defaultTimingType = 'Google_Service_YouTube_InvideoTiming'; + protected $defaultTimingDataType = ''; + protected $itemsType = 'Google_Service_YouTube_PromotedItem'; + protected $itemsDataType = 'array'; + protected $positionType = 'Google_Service_YouTube_InvideoPosition'; + protected $positionDataType = ''; + + public function setDefaultTiming(Google_Service_YouTube_InvideoTiming $defaultTiming) + { + $this->defaultTiming = $defaultTiming; + } + + public function getDefaultTiming() + { + return $this->defaultTiming; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setPosition(Google_Service_YouTube_InvideoPosition $position) + { + $this->position = $position; + } + + public function getPosition() + { + return $this->position; + } +} + +class Google_Service_YouTube_InvideoTiming extends Google_Model +{ + public $durationMs; + public $offsetMs; + public $type; + + public function setDurationMs($durationMs) + { + $this->durationMs = $durationMs; + } + + public function getDurationMs() + { + return $this->durationMs; + } + + public function setOffsetMs($offsetMs) + { + $this->offsetMs = $offsetMs; + } + + public function getOffsetMs() + { + return $this->offsetMs; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_YouTube_LiveBroadcast extends Google_Model +{ + protected $contentDetailsType = 'Google_Service_YouTube_LiveBroadcastContentDetails'; + protected $contentDetailsDataType = ''; + public $etag; + public $id; + public $kind; + protected $snippetType = 'Google_Service_YouTube_LiveBroadcastSnippet'; + protected $snippetDataType = ''; + protected $statusType = 'Google_Service_YouTube_LiveBroadcastStatus'; + protected $statusDataType = ''; + + public function setContentDetails(Google_Service_YouTube_LiveBroadcastContentDetails $contentDetails) + { + $this->contentDetails = $contentDetails; + } + + public function getContentDetails() + { + return $this->contentDetails; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSnippet(Google_Service_YouTube_LiveBroadcastSnippet $snippet) + { + $this->snippet = $snippet; + } + + public function getSnippet() + { + return $this->snippet; + } + + public function setStatus(Google_Service_YouTube_LiveBroadcastStatus $status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_YouTube_LiveBroadcastContentDetails extends Google_Model +{ + public $boundStreamId; + public $enableClosedCaptions; + public $enableContentEncryption; + public $enableDvr; + public $enableEmbed; + protected $monitorStreamType = 'Google_Service_YouTube_MonitorStreamInfo'; + protected $monitorStreamDataType = ''; + public $recordFromStart; + public $startWithSlate; + + public function setBoundStreamId($boundStreamId) + { + $this->boundStreamId = $boundStreamId; + } + + public function getBoundStreamId() + { + return $this->boundStreamId; + } + + public function setEnableClosedCaptions($enableClosedCaptions) + { + $this->enableClosedCaptions = $enableClosedCaptions; + } + + public function getEnableClosedCaptions() + { + return $this->enableClosedCaptions; + } + + public function setEnableContentEncryption($enableContentEncryption) + { + $this->enableContentEncryption = $enableContentEncryption; + } + + public function getEnableContentEncryption() + { + return $this->enableContentEncryption; + } + + public function setEnableDvr($enableDvr) + { + $this->enableDvr = $enableDvr; + } + + public function getEnableDvr() + { + return $this->enableDvr; + } + + public function setEnableEmbed($enableEmbed) + { + $this->enableEmbed = $enableEmbed; + } + + public function getEnableEmbed() + { + return $this->enableEmbed; + } + + public function setMonitorStream(Google_Service_YouTube_MonitorStreamInfo $monitorStream) + { + $this->monitorStream = $monitorStream; + } + + public function getMonitorStream() + { + return $this->monitorStream; + } + + public function setRecordFromStart($recordFromStart) + { + $this->recordFromStart = $recordFromStart; + } + + public function getRecordFromStart() + { + return $this->recordFromStart; + } + + public function setStartWithSlate($startWithSlate) + { + $this->startWithSlate = $startWithSlate; + } + + public function getStartWithSlate() + { + return $this->startWithSlate; + } +} + +class Google_Service_YouTube_LiveBroadcastListResponse extends Google_Collection +{ + public $etag; + public $eventId; + protected $itemsType = 'Google_Service_YouTube_LiveBroadcast'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + protected $pageInfoType = 'Google_Service_YouTube_PageInfo'; + protected $pageInfoDataType = ''; + public $prevPageToken; + protected $tokenPaginationType = 'Google_Service_YouTube_TokenPagination'; + protected $tokenPaginationDataType = ''; + public $visitorId; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setEventId($eventId) + { + $this->eventId = $eventId; + } + + public function getEventId() + { + return $this->eventId; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPageInfo(Google_Service_YouTube_PageInfo $pageInfo) + { + $this->pageInfo = $pageInfo; + } + + public function getPageInfo() + { + return $this->pageInfo; + } + + public function setPrevPageToken($prevPageToken) + { + $this->prevPageToken = $prevPageToken; + } + + public function getPrevPageToken() + { + return $this->prevPageToken; + } + + public function setTokenPagination(Google_Service_YouTube_TokenPagination $tokenPagination) + { + $this->tokenPagination = $tokenPagination; + } + + public function getTokenPagination() + { + return $this->tokenPagination; + } + + public function setVisitorId($visitorId) + { + $this->visitorId = $visitorId; + } + + public function getVisitorId() + { + return $this->visitorId; + } +} + +class Google_Service_YouTube_LiveBroadcastSnippet extends Google_Model +{ + public $actualEndTime; + public $actualStartTime; + public $channelId; + public $description; + public $publishedAt; + public $scheduledEndTime; + public $scheduledStartTime; + protected $thumbnailsType = 'Google_Service_YouTube_ThumbnailDetails'; + protected $thumbnailsDataType = ''; + public $title; + + public function setActualEndTime($actualEndTime) + { + $this->actualEndTime = $actualEndTime; + } + + public function getActualEndTime() + { + return $this->actualEndTime; + } + + public function setActualStartTime($actualStartTime) + { + $this->actualStartTime = $actualStartTime; + } + + public function getActualStartTime() + { + return $this->actualStartTime; + } + + public function setChannelId($channelId) + { + $this->channelId = $channelId; + } + + public function getChannelId() + { + return $this->channelId; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setPublishedAt($publishedAt) + { + $this->publishedAt = $publishedAt; + } + + public function getPublishedAt() + { + return $this->publishedAt; + } + + public function setScheduledEndTime($scheduledEndTime) + { + $this->scheduledEndTime = $scheduledEndTime; + } + + public function getScheduledEndTime() + { + return $this->scheduledEndTime; + } + + public function setScheduledStartTime($scheduledStartTime) + { + $this->scheduledStartTime = $scheduledStartTime; + } + + public function getScheduledStartTime() + { + return $this->scheduledStartTime; + } + + public function setThumbnails(Google_Service_YouTube_ThumbnailDetails $thumbnails) + { + $this->thumbnails = $thumbnails; + } + + public function getThumbnails() + { + return $this->thumbnails; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_YouTube_LiveBroadcastStatus extends Google_Model +{ + public $lifeCycleStatus; + public $liveBroadcastPriority; + public $privacyStatus; + public $recordingStatus; + + public function setLifeCycleStatus($lifeCycleStatus) + { + $this->lifeCycleStatus = $lifeCycleStatus; + } + + public function getLifeCycleStatus() + { + return $this->lifeCycleStatus; + } + + public function setLiveBroadcastPriority($liveBroadcastPriority) + { + $this->liveBroadcastPriority = $liveBroadcastPriority; + } + + public function getLiveBroadcastPriority() + { + return $this->liveBroadcastPriority; + } + + public function setPrivacyStatus($privacyStatus) + { + $this->privacyStatus = $privacyStatus; + } + + public function getPrivacyStatus() + { + return $this->privacyStatus; + } + + public function setRecordingStatus($recordingStatus) + { + $this->recordingStatus = $recordingStatus; + } + + public function getRecordingStatus() + { + return $this->recordingStatus; + } +} + +class Google_Service_YouTube_LiveStream extends Google_Model +{ + protected $cdnType = 'Google_Service_YouTube_CdnSettings'; + protected $cdnDataType = ''; + protected $contentDetailsType = 'Google_Service_YouTube_LiveStreamContentDetails'; + protected $contentDetailsDataType = ''; + public $etag; + public $id; + public $kind; + protected $snippetType = 'Google_Service_YouTube_LiveStreamSnippet'; + protected $snippetDataType = ''; + protected $statusType = 'Google_Service_YouTube_LiveStreamStatus'; + protected $statusDataType = ''; + + public function setCdn(Google_Service_YouTube_CdnSettings $cdn) + { + $this->cdn = $cdn; + } + + public function getCdn() + { + return $this->cdn; + } + + public function setContentDetails(Google_Service_YouTube_LiveStreamContentDetails $contentDetails) + { + $this->contentDetails = $contentDetails; + } + + public function getContentDetails() + { + return $this->contentDetails; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSnippet(Google_Service_YouTube_LiveStreamSnippet $snippet) + { + $this->snippet = $snippet; + } + + public function getSnippet() + { + return $this->snippet; + } + + public function setStatus(Google_Service_YouTube_LiveStreamStatus $status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_YouTube_LiveStreamContentDetails extends Google_Model +{ + public $closedCaptionsIngestionUrl; + + public function setClosedCaptionsIngestionUrl($closedCaptionsIngestionUrl) + { + $this->closedCaptionsIngestionUrl = $closedCaptionsIngestionUrl; + } + + public function getClosedCaptionsIngestionUrl() + { + return $this->closedCaptionsIngestionUrl; + } +} + +class Google_Service_YouTube_LiveStreamListResponse extends Google_Collection +{ + public $etag; + public $eventId; + protected $itemsType = 'Google_Service_YouTube_LiveStream'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + protected $pageInfoType = 'Google_Service_YouTube_PageInfo'; + protected $pageInfoDataType = ''; + public $prevPageToken; + protected $tokenPaginationType = 'Google_Service_YouTube_TokenPagination'; + protected $tokenPaginationDataType = ''; + public $visitorId; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setEventId($eventId) + { + $this->eventId = $eventId; + } + + public function getEventId() + { + return $this->eventId; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPageInfo(Google_Service_YouTube_PageInfo $pageInfo) + { + $this->pageInfo = $pageInfo; + } + + public function getPageInfo() + { + return $this->pageInfo; + } + + public function setPrevPageToken($prevPageToken) + { + $this->prevPageToken = $prevPageToken; + } + + public function getPrevPageToken() + { + return $this->prevPageToken; + } + + public function setTokenPagination(Google_Service_YouTube_TokenPagination $tokenPagination) + { + $this->tokenPagination = $tokenPagination; + } + + public function getTokenPagination() + { + return $this->tokenPagination; + } + + public function setVisitorId($visitorId) + { + $this->visitorId = $visitorId; + } + + public function getVisitorId() + { + return $this->visitorId; + } +} + +class Google_Service_YouTube_LiveStreamSnippet extends Google_Model +{ + public $channelId; + public $description; + public $publishedAt; + public $title; + + public function setChannelId($channelId) + { + $this->channelId = $channelId; + } + + public function getChannelId() + { + return $this->channelId; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setPublishedAt($publishedAt) + { + $this->publishedAt = $publishedAt; + } + + public function getPublishedAt() + { + return $this->publishedAt; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_YouTube_LiveStreamStatus extends Google_Model +{ + public $streamStatus; + + public function setStreamStatus($streamStatus) + { + $this->streamStatus = $streamStatus; + } + + public function getStreamStatus() + { + return $this->streamStatus; + } +} + +class Google_Service_YouTube_LocalizedProperty extends Google_Collection +{ + public $default; + protected $localizedType = 'Google_Service_YouTube_LocalizedString'; + protected $localizedDataType = 'array'; + + public function setDefault($default) + { + $this->default = $default; + } + + public function getDefault() + { + return $this->default; + } + + public function setLocalized($localized) + { + $this->localized = $localized; + } + + public function getLocalized() + { + return $this->localized; + } +} + +class Google_Service_YouTube_LocalizedString extends Google_Model +{ + public $language; + public $value; + + public function setLanguage($language) + { + $this->language = $language; + } + + public function getLanguage() + { + return $this->language; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_YouTube_MonitorStreamInfo extends Google_Model +{ + public $broadcastStreamDelayMs; + public $embedHtml; + public $enableMonitorStream; + + public function setBroadcastStreamDelayMs($broadcastStreamDelayMs) + { + $this->broadcastStreamDelayMs = $broadcastStreamDelayMs; + } + + public function getBroadcastStreamDelayMs() + { + return $this->broadcastStreamDelayMs; + } + + public function setEmbedHtml($embedHtml) + { + $this->embedHtml = $embedHtml; + } + + public function getEmbedHtml() + { + return $this->embedHtml; + } + + public function setEnableMonitorStream($enableMonitorStream) + { + $this->enableMonitorStream = $enableMonitorStream; + } + + public function getEnableMonitorStream() + { + return $this->enableMonitorStream; + } +} + +class Google_Service_YouTube_PageInfo extends Google_Model +{ + public $resultsPerPage; + public $totalResults; + + public function setResultsPerPage($resultsPerPage) + { + $this->resultsPerPage = $resultsPerPage; + } + + public function getResultsPerPage() + { + return $this->resultsPerPage; + } + + public function setTotalResults($totalResults) + { + $this->totalResults = $totalResults; + } + + public function getTotalResults() + { + return $this->totalResults; + } +} + +class Google_Service_YouTube_Playlist extends Google_Model +{ + protected $contentDetailsType = 'Google_Service_YouTube_PlaylistContentDetails'; + protected $contentDetailsDataType = ''; + public $etag; + public $id; + public $kind; + protected $playerType = 'Google_Service_YouTube_PlaylistPlayer'; + protected $playerDataType = ''; + protected $snippetType = 'Google_Service_YouTube_PlaylistSnippet'; + protected $snippetDataType = ''; + protected $statusType = 'Google_Service_YouTube_PlaylistStatus'; + protected $statusDataType = ''; + + public function setContentDetails(Google_Service_YouTube_PlaylistContentDetails $contentDetails) + { + $this->contentDetails = $contentDetails; + } + + public function getContentDetails() + { + return $this->contentDetails; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPlayer(Google_Service_YouTube_PlaylistPlayer $player) + { + $this->player = $player; + } + + public function getPlayer() + { + return $this->player; + } + + public function setSnippet(Google_Service_YouTube_PlaylistSnippet $snippet) + { + $this->snippet = $snippet; + } + + public function getSnippet() + { + return $this->snippet; + } + + public function setStatus(Google_Service_YouTube_PlaylistStatus $status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_YouTube_PlaylistContentDetails extends Google_Model +{ + public $itemCount; + + public function setItemCount($itemCount) + { + $this->itemCount = $itemCount; + } + + public function getItemCount() + { + return $this->itemCount; + } +} + +class Google_Service_YouTube_PlaylistItem extends Google_Model +{ + protected $contentDetailsType = 'Google_Service_YouTube_PlaylistItemContentDetails'; + protected $contentDetailsDataType = ''; + public $etag; + public $id; + public $kind; + protected $snippetType = 'Google_Service_YouTube_PlaylistItemSnippet'; + protected $snippetDataType = ''; + protected $statusType = 'Google_Service_YouTube_PlaylistItemStatus'; + protected $statusDataType = ''; + + public function setContentDetails(Google_Service_YouTube_PlaylistItemContentDetails $contentDetails) + { + $this->contentDetails = $contentDetails; + } + + public function getContentDetails() + { + return $this->contentDetails; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSnippet(Google_Service_YouTube_PlaylistItemSnippet $snippet) + { + $this->snippet = $snippet; + } + + public function getSnippet() + { + return $this->snippet; + } + + public function setStatus(Google_Service_YouTube_PlaylistItemStatus $status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } +} + +class Google_Service_YouTube_PlaylistItemContentDetails extends Google_Model +{ + public $endAt; + public $note; + public $startAt; + public $videoId; + + public function setEndAt($endAt) + { + $this->endAt = $endAt; + } + + public function getEndAt() + { + return $this->endAt; + } + + public function setNote($note) + { + $this->note = $note; + } + + public function getNote() + { + return $this->note; + } + + public function setStartAt($startAt) + { + $this->startAt = $startAt; + } + + public function getStartAt() + { + return $this->startAt; + } + + public function setVideoId($videoId) + { + $this->videoId = $videoId; + } + + public function getVideoId() + { + return $this->videoId; + } +} + +class Google_Service_YouTube_PlaylistItemListResponse extends Google_Collection +{ + public $etag; + public $eventId; + protected $itemsType = 'Google_Service_YouTube_PlaylistItem'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + protected $pageInfoType = 'Google_Service_YouTube_PageInfo'; + protected $pageInfoDataType = ''; + public $prevPageToken; + protected $tokenPaginationType = 'Google_Service_YouTube_TokenPagination'; + protected $tokenPaginationDataType = ''; + public $visitorId; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setEventId($eventId) + { + $this->eventId = $eventId; + } + + public function getEventId() + { + return $this->eventId; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPageInfo(Google_Service_YouTube_PageInfo $pageInfo) + { + $this->pageInfo = $pageInfo; + } + + public function getPageInfo() + { + return $this->pageInfo; + } + + public function setPrevPageToken($prevPageToken) + { + $this->prevPageToken = $prevPageToken; + } + + public function getPrevPageToken() + { + return $this->prevPageToken; + } + + public function setTokenPagination(Google_Service_YouTube_TokenPagination $tokenPagination) + { + $this->tokenPagination = $tokenPagination; + } + + public function getTokenPagination() + { + return $this->tokenPagination; + } + + public function setVisitorId($visitorId) + { + $this->visitorId = $visitorId; + } + + public function getVisitorId() + { + return $this->visitorId; + } +} + +class Google_Service_YouTube_PlaylistItemSnippet extends Google_Model +{ + public $channelId; + public $channelTitle; + public $description; + public $playlistId; + public $position; + public $publishedAt; + protected $resourceIdType = 'Google_Service_YouTube_ResourceId'; + protected $resourceIdDataType = ''; + protected $thumbnailsType = 'Google_Service_YouTube_ThumbnailDetails'; + protected $thumbnailsDataType = ''; + public $title; + + public function setChannelId($channelId) + { + $this->channelId = $channelId; + } + + public function getChannelId() + { + return $this->channelId; + } + + public function setChannelTitle($channelTitle) + { + $this->channelTitle = $channelTitle; + } + + public function getChannelTitle() + { + return $this->channelTitle; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setPlaylistId($playlistId) + { + $this->playlistId = $playlistId; + } + + public function getPlaylistId() + { + return $this->playlistId; + } + + public function setPosition($position) + { + $this->position = $position; + } + + public function getPosition() + { + return $this->position; + } + + public function setPublishedAt($publishedAt) + { + $this->publishedAt = $publishedAt; + } + + public function getPublishedAt() + { + return $this->publishedAt; + } + + public function setResourceId(Google_Service_YouTube_ResourceId $resourceId) + { + $this->resourceId = $resourceId; + } + + public function getResourceId() + { + return $this->resourceId; + } + + public function setThumbnails(Google_Service_YouTube_ThumbnailDetails $thumbnails) + { + $this->thumbnails = $thumbnails; + } + + public function getThumbnails() + { + return $this->thumbnails; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_YouTube_PlaylistItemStatus extends Google_Model +{ + public $privacyStatus; + + public function setPrivacyStatus($privacyStatus) + { + $this->privacyStatus = $privacyStatus; + } + + public function getPrivacyStatus() + { + return $this->privacyStatus; + } +} + +class Google_Service_YouTube_PlaylistListResponse extends Google_Collection +{ + public $etag; + public $eventId; + protected $itemsType = 'Google_Service_YouTube_Playlist'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + protected $pageInfoType = 'Google_Service_YouTube_PageInfo'; + protected $pageInfoDataType = ''; + public $prevPageToken; + protected $tokenPaginationType = 'Google_Service_YouTube_TokenPagination'; + protected $tokenPaginationDataType = ''; + public $visitorId; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setEventId($eventId) + { + $this->eventId = $eventId; + } + + public function getEventId() + { + return $this->eventId; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPageInfo(Google_Service_YouTube_PageInfo $pageInfo) + { + $this->pageInfo = $pageInfo; + } + + public function getPageInfo() + { + return $this->pageInfo; + } + + public function setPrevPageToken($prevPageToken) + { + $this->prevPageToken = $prevPageToken; + } + + public function getPrevPageToken() + { + return $this->prevPageToken; + } + + public function setTokenPagination(Google_Service_YouTube_TokenPagination $tokenPagination) + { + $this->tokenPagination = $tokenPagination; + } + + public function getTokenPagination() + { + return $this->tokenPagination; + } + + public function setVisitorId($visitorId) + { + $this->visitorId = $visitorId; + } + + public function getVisitorId() + { + return $this->visitorId; + } +} + +class Google_Service_YouTube_PlaylistPlayer extends Google_Model +{ + public $embedHtml; + + public function setEmbedHtml($embedHtml) + { + $this->embedHtml = $embedHtml; + } + + public function getEmbedHtml() + { + return $this->embedHtml; + } +} + +class Google_Service_YouTube_PlaylistSnippet extends Google_Collection +{ + public $channelId; + public $channelTitle; + public $description; + public $publishedAt; + public $tags; + protected $thumbnailsType = 'Google_Service_YouTube_ThumbnailDetails'; + protected $thumbnailsDataType = ''; + public $title; + + public function setChannelId($channelId) + { + $this->channelId = $channelId; + } + + public function getChannelId() + { + return $this->channelId; + } + + public function setChannelTitle($channelTitle) + { + $this->channelTitle = $channelTitle; + } + + public function getChannelTitle() + { + return $this->channelTitle; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setPublishedAt($publishedAt) + { + $this->publishedAt = $publishedAt; + } + + public function getPublishedAt() + { + return $this->publishedAt; + } + + public function setTags($tags) + { + $this->tags = $tags; + } + + public function getTags() + { + return $this->tags; + } + + public function setThumbnails(Google_Service_YouTube_ThumbnailDetails $thumbnails) + { + $this->thumbnails = $thumbnails; + } + + public function getThumbnails() + { + return $this->thumbnails; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_YouTube_PlaylistStatus extends Google_Model +{ + public $privacyStatus; + + public function setPrivacyStatus($privacyStatus) + { + $this->privacyStatus = $privacyStatus; + } + + public function getPrivacyStatus() + { + return $this->privacyStatus; + } +} + +class Google_Service_YouTube_PromotedItem extends Google_Model +{ + public $customMessage; + protected $idType = 'Google_Service_YouTube_PromotedItemId'; + protected $idDataType = ''; + public $promotedByContentOwner; + protected $timingType = 'Google_Service_YouTube_InvideoTiming'; + protected $timingDataType = ''; + + public function setCustomMessage($customMessage) + { + $this->customMessage = $customMessage; + } + + public function getCustomMessage() + { + return $this->customMessage; + } + + public function setId(Google_Service_YouTube_PromotedItemId $id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setPromotedByContentOwner($promotedByContentOwner) + { + $this->promotedByContentOwner = $promotedByContentOwner; + } + + public function getPromotedByContentOwner() + { + return $this->promotedByContentOwner; + } + + public function setTiming(Google_Service_YouTube_InvideoTiming $timing) + { + $this->timing = $timing; + } + + public function getTiming() + { + return $this->timing; + } +} + +class Google_Service_YouTube_PromotedItemId extends Google_Model +{ + public $recentlyUploadedBy; + public $type; + public $videoId; + public $websiteUrl; + + public function setRecentlyUploadedBy($recentlyUploadedBy) + { + $this->recentlyUploadedBy = $recentlyUploadedBy; + } + + public function getRecentlyUploadedBy() + { + return $this->recentlyUploadedBy; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } + + public function setVideoId($videoId) + { + $this->videoId = $videoId; + } + + public function getVideoId() + { + return $this->videoId; + } + + public function setWebsiteUrl($websiteUrl) + { + $this->websiteUrl = $websiteUrl; + } + + public function getWebsiteUrl() + { + return $this->websiteUrl; + } +} + +class Google_Service_YouTube_PropertyValue extends Google_Model +{ + public $property; + public $value; + + public function setProperty($property) + { + $this->property = $property; + } + + public function getProperty() + { + return $this->property; + } + + public function setValue($value) + { + $this->value = $value; + } + + public function getValue() + { + return $this->value; + } +} + +class Google_Service_YouTube_ResourceId extends Google_Model +{ + public $channelId; + public $kind; + public $playlistId; + public $videoId; + + public function setChannelId($channelId) + { + $this->channelId = $channelId; + } + + public function getChannelId() + { + return $this->channelId; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setPlaylistId($playlistId) + { + $this->playlistId = $playlistId; + } + + public function getPlaylistId() + { + return $this->playlistId; + } + + public function setVideoId($videoId) + { + $this->videoId = $videoId; + } + + public function getVideoId() + { + return $this->videoId; + } +} + +class Google_Service_YouTube_SearchListResponse extends Google_Collection +{ + public $etag; + public $eventId; + protected $itemsType = 'Google_Service_YouTube_SearchResult'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + protected $pageInfoType = 'Google_Service_YouTube_PageInfo'; + protected $pageInfoDataType = ''; + public $prevPageToken; + protected $tokenPaginationType = 'Google_Service_YouTube_TokenPagination'; + protected $tokenPaginationDataType = ''; + public $visitorId; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setEventId($eventId) + { + $this->eventId = $eventId; + } + + public function getEventId() + { + return $this->eventId; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPageInfo(Google_Service_YouTube_PageInfo $pageInfo) + { + $this->pageInfo = $pageInfo; + } + + public function getPageInfo() + { + return $this->pageInfo; + } + + public function setPrevPageToken($prevPageToken) + { + $this->prevPageToken = $prevPageToken; + } + + public function getPrevPageToken() + { + return $this->prevPageToken; + } + + public function setTokenPagination(Google_Service_YouTube_TokenPagination $tokenPagination) + { + $this->tokenPagination = $tokenPagination; + } + + public function getTokenPagination() + { + return $this->tokenPagination; + } + + public function setVisitorId($visitorId) + { + $this->visitorId = $visitorId; + } + + public function getVisitorId() + { + return $this->visitorId; + } +} + +class Google_Service_YouTube_SearchResult extends Google_Model +{ + public $etag; + protected $idType = 'Google_Service_YouTube_ResourceId'; + protected $idDataType = ''; + public $kind; + protected $snippetType = 'Google_Service_YouTube_SearchResultSnippet'; + protected $snippetDataType = ''; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId(Google_Service_YouTube_ResourceId $id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSnippet(Google_Service_YouTube_SearchResultSnippet $snippet) + { + $this->snippet = $snippet; + } + + public function getSnippet() + { + return $this->snippet; + } +} + +class Google_Service_YouTube_SearchResultSnippet extends Google_Model +{ + public $channelId; + public $channelTitle; + public $description; + public $liveBroadcastContent; + public $publishedAt; + protected $thumbnailsType = 'Google_Service_YouTube_ThumbnailDetails'; + protected $thumbnailsDataType = ''; + public $title; + + public function setChannelId($channelId) + { + $this->channelId = $channelId; + } + + public function getChannelId() + { + return $this->channelId; + } + + public function setChannelTitle($channelTitle) + { + $this->channelTitle = $channelTitle; + } + + public function getChannelTitle() + { + return $this->channelTitle; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setLiveBroadcastContent($liveBroadcastContent) + { + $this->liveBroadcastContent = $liveBroadcastContent; + } + + public function getLiveBroadcastContent() + { + return $this->liveBroadcastContent; + } + + public function setPublishedAt($publishedAt) + { + $this->publishedAt = $publishedAt; + } + + public function getPublishedAt() + { + return $this->publishedAt; + } + + public function setThumbnails(Google_Service_YouTube_ThumbnailDetails $thumbnails) + { + $this->thumbnails = $thumbnails; + } + + public function getThumbnails() + { + return $this->thumbnails; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_YouTube_Subscription extends Google_Model +{ + protected $contentDetailsType = 'Google_Service_YouTube_SubscriptionContentDetails'; + protected $contentDetailsDataType = ''; + public $etag; + public $id; + public $kind; + protected $snippetType = 'Google_Service_YouTube_SubscriptionSnippet'; + protected $snippetDataType = ''; + protected $subscriberSnippetType = 'Google_Service_YouTube_SubscriptionSubscriberSnippet'; + protected $subscriberSnippetDataType = ''; + + public function setContentDetails(Google_Service_YouTube_SubscriptionContentDetails $contentDetails) + { + $this->contentDetails = $contentDetails; + } + + public function getContentDetails() + { + return $this->contentDetails; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSnippet(Google_Service_YouTube_SubscriptionSnippet $snippet) + { + $this->snippet = $snippet; + } + + public function getSnippet() + { + return $this->snippet; + } + + public function setSubscriberSnippet(Google_Service_YouTube_SubscriptionSubscriberSnippet $subscriberSnippet) + { + $this->subscriberSnippet = $subscriberSnippet; + } + + public function getSubscriberSnippet() + { + return $this->subscriberSnippet; + } +} + +class Google_Service_YouTube_SubscriptionContentDetails extends Google_Model +{ + public $activityType; + public $newItemCount; + public $totalItemCount; + + public function setActivityType($activityType) + { + $this->activityType = $activityType; + } + + public function getActivityType() + { + return $this->activityType; + } + + public function setNewItemCount($newItemCount) + { + $this->newItemCount = $newItemCount; + } + + public function getNewItemCount() + { + return $this->newItemCount; + } + + public function setTotalItemCount($totalItemCount) + { + $this->totalItemCount = $totalItemCount; + } + + public function getTotalItemCount() + { + return $this->totalItemCount; + } +} + +class Google_Service_YouTube_SubscriptionListResponse extends Google_Collection +{ + public $etag; + public $eventId; + protected $itemsType = 'Google_Service_YouTube_Subscription'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + protected $pageInfoType = 'Google_Service_YouTube_PageInfo'; + protected $pageInfoDataType = ''; + public $prevPageToken; + protected $tokenPaginationType = 'Google_Service_YouTube_TokenPagination'; + protected $tokenPaginationDataType = ''; + public $visitorId; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setEventId($eventId) + { + $this->eventId = $eventId; + } + + public function getEventId() + { + return $this->eventId; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPageInfo(Google_Service_YouTube_PageInfo $pageInfo) + { + $this->pageInfo = $pageInfo; + } + + public function getPageInfo() + { + return $this->pageInfo; + } + + public function setPrevPageToken($prevPageToken) + { + $this->prevPageToken = $prevPageToken; + } + + public function getPrevPageToken() + { + return $this->prevPageToken; + } + + public function setTokenPagination(Google_Service_YouTube_TokenPagination $tokenPagination) + { + $this->tokenPagination = $tokenPagination; + } + + public function getTokenPagination() + { + return $this->tokenPagination; + } + + public function setVisitorId($visitorId) + { + $this->visitorId = $visitorId; + } + + public function getVisitorId() + { + return $this->visitorId; + } +} + +class Google_Service_YouTube_SubscriptionSnippet extends Google_Model +{ + public $channelId; + public $channelTitle; + public $description; + public $publishedAt; + protected $resourceIdType = 'Google_Service_YouTube_ResourceId'; + protected $resourceIdDataType = ''; + protected $thumbnailsType = 'Google_Service_YouTube_ThumbnailDetails'; + protected $thumbnailsDataType = ''; + public $title; + + public function setChannelId($channelId) + { + $this->channelId = $channelId; + } + + public function getChannelId() + { + return $this->channelId; + } + + public function setChannelTitle($channelTitle) + { + $this->channelTitle = $channelTitle; + } + + public function getChannelTitle() + { + return $this->channelTitle; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setPublishedAt($publishedAt) + { + $this->publishedAt = $publishedAt; + } + + public function getPublishedAt() + { + return $this->publishedAt; + } + + public function setResourceId(Google_Service_YouTube_ResourceId $resourceId) + { + $this->resourceId = $resourceId; + } + + public function getResourceId() + { + return $this->resourceId; + } + + public function setThumbnails(Google_Service_YouTube_ThumbnailDetails $thumbnails) + { + $this->thumbnails = $thumbnails; + } + + public function getThumbnails() + { + return $this->thumbnails; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_YouTube_SubscriptionSubscriberSnippet extends Google_Model +{ + public $channelId; + public $description; + protected $thumbnailsType = 'Google_Service_YouTube_ThumbnailDetails'; + protected $thumbnailsDataType = ''; + public $title; + + public function setChannelId($channelId) + { + $this->channelId = $channelId; + } + + public function getChannelId() + { + return $this->channelId; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setThumbnails(Google_Service_YouTube_ThumbnailDetails $thumbnails) + { + $this->thumbnails = $thumbnails; + } + + public function getThumbnails() + { + return $this->thumbnails; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_YouTube_Thumbnail extends Google_Model +{ + public $height; + public $url; + public $width; + + public function setHeight($height) + { + $this->height = $height; + } + + public function getHeight() + { + return $this->height; + } + + public function setUrl($url) + { + $this->url = $url; + } + + public function getUrl() + { + return $this->url; + } + + public function setWidth($width) + { + $this->width = $width; + } + + public function getWidth() + { + return $this->width; + } +} + +class Google_Service_YouTube_ThumbnailDetails extends Google_Model +{ + protected $defaultType = 'Google_Service_YouTube_Thumbnail'; + protected $defaultDataType = ''; + protected $highType = 'Google_Service_YouTube_Thumbnail'; + protected $highDataType = ''; + protected $maxresType = 'Google_Service_YouTube_Thumbnail'; + protected $maxresDataType = ''; + protected $mediumType = 'Google_Service_YouTube_Thumbnail'; + protected $mediumDataType = ''; + protected $standardType = 'Google_Service_YouTube_Thumbnail'; + protected $standardDataType = ''; + + public function setDefault(Google_Service_YouTube_Thumbnail $default) + { + $this->default = $default; + } + + public function getDefault() + { + return $this->default; + } + + public function setHigh(Google_Service_YouTube_Thumbnail $high) + { + $this->high = $high; + } + + public function getHigh() + { + return $this->high; + } + + public function setMaxres(Google_Service_YouTube_Thumbnail $maxres) + { + $this->maxres = $maxres; + } + + public function getMaxres() + { + return $this->maxres; + } + + public function setMedium(Google_Service_YouTube_Thumbnail $medium) + { + $this->medium = $medium; + } + + public function getMedium() + { + return $this->medium; + } + + public function setStandard(Google_Service_YouTube_Thumbnail $standard) + { + $this->standard = $standard; + } + + public function getStandard() + { + return $this->standard; + } +} + +class Google_Service_YouTube_ThumbnailSetResponse extends Google_Collection +{ + public $etag; + public $eventId; + protected $itemsType = 'Google_Service_YouTube_ThumbnailDetails'; + protected $itemsDataType = 'array'; + public $kind; + public $visitorId; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setEventId($eventId) + { + $this->eventId = $eventId; + } + + public function getEventId() + { + return $this->eventId; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setVisitorId($visitorId) + { + $this->visitorId = $visitorId; + } + + public function getVisitorId() + { + return $this->visitorId; + } +} + +class Google_Service_YouTube_TokenPagination extends Google_Model +{ + +} + +class Google_Service_YouTube_Video extends Google_Model +{ + protected $ageGatingType = 'Google_Service_YouTube_VideoAgeGating'; + protected $ageGatingDataType = ''; + protected $contentDetailsType = 'Google_Service_YouTube_VideoContentDetails'; + protected $contentDetailsDataType = ''; + protected $conversionPingsType = 'Google_Service_YouTube_VideoConversionPings'; + protected $conversionPingsDataType = ''; + public $etag; + protected $fileDetailsType = 'Google_Service_YouTube_VideoFileDetails'; + protected $fileDetailsDataType = ''; + public $id; + public $kind; + protected $liveStreamingDetailsType = 'Google_Service_YouTube_VideoLiveStreamingDetails'; + protected $liveStreamingDetailsDataType = ''; + protected $monetizationDetailsType = 'Google_Service_YouTube_VideoMonetizationDetails'; + protected $monetizationDetailsDataType = ''; + protected $playerType = 'Google_Service_YouTube_VideoPlayer'; + protected $playerDataType = ''; + protected $processingDetailsType = 'Google_Service_YouTube_VideoProcessingDetails'; + protected $processingDetailsDataType = ''; + protected $projectDetailsType = 'Google_Service_YouTube_VideoProjectDetails'; + protected $projectDetailsDataType = ''; + protected $recordingDetailsType = 'Google_Service_YouTube_VideoRecordingDetails'; + protected $recordingDetailsDataType = ''; + protected $snippetType = 'Google_Service_YouTube_VideoSnippet'; + protected $snippetDataType = ''; + protected $statisticsType = 'Google_Service_YouTube_VideoStatistics'; + protected $statisticsDataType = ''; + protected $statusType = 'Google_Service_YouTube_VideoStatus'; + protected $statusDataType = ''; + protected $suggestionsType = 'Google_Service_YouTube_VideoSuggestions'; + protected $suggestionsDataType = ''; + protected $topicDetailsType = 'Google_Service_YouTube_VideoTopicDetails'; + protected $topicDetailsDataType = ''; + + public function setAgeGating(Google_Service_YouTube_VideoAgeGating $ageGating) + { + $this->ageGating = $ageGating; + } + + public function getAgeGating() + { + return $this->ageGating; + } + + public function setContentDetails(Google_Service_YouTube_VideoContentDetails $contentDetails) + { + $this->contentDetails = $contentDetails; + } + + public function getContentDetails() + { + return $this->contentDetails; + } + + public function setConversionPings(Google_Service_YouTube_VideoConversionPings $conversionPings) + { + $this->conversionPings = $conversionPings; + } + + public function getConversionPings() + { + return $this->conversionPings; + } + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setFileDetails(Google_Service_YouTube_VideoFileDetails $fileDetails) + { + $this->fileDetails = $fileDetails; + } + + public function getFileDetails() + { + return $this->fileDetails; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setLiveStreamingDetails(Google_Service_YouTube_VideoLiveStreamingDetails $liveStreamingDetails) + { + $this->liveStreamingDetails = $liveStreamingDetails; + } + + public function getLiveStreamingDetails() + { + return $this->liveStreamingDetails; + } + + public function setMonetizationDetails(Google_Service_YouTube_VideoMonetizationDetails $monetizationDetails) + { + $this->monetizationDetails = $monetizationDetails; + } + + public function getMonetizationDetails() + { + return $this->monetizationDetails; + } + + public function setPlayer(Google_Service_YouTube_VideoPlayer $player) + { + $this->player = $player; + } + + public function getPlayer() + { + return $this->player; + } + + public function setProcessingDetails(Google_Service_YouTube_VideoProcessingDetails $processingDetails) + { + $this->processingDetails = $processingDetails; + } + + public function getProcessingDetails() + { + return $this->processingDetails; + } + + public function setProjectDetails(Google_Service_YouTube_VideoProjectDetails $projectDetails) + { + $this->projectDetails = $projectDetails; + } + + public function getProjectDetails() + { + return $this->projectDetails; + } + + public function setRecordingDetails(Google_Service_YouTube_VideoRecordingDetails $recordingDetails) + { + $this->recordingDetails = $recordingDetails; + } + + public function getRecordingDetails() + { + return $this->recordingDetails; + } + + public function setSnippet(Google_Service_YouTube_VideoSnippet $snippet) + { + $this->snippet = $snippet; + } + + public function getSnippet() + { + return $this->snippet; + } + + public function setStatistics(Google_Service_YouTube_VideoStatistics $statistics) + { + $this->statistics = $statistics; + } + + public function getStatistics() + { + return $this->statistics; + } + + public function setStatus(Google_Service_YouTube_VideoStatus $status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setSuggestions(Google_Service_YouTube_VideoSuggestions $suggestions) + { + $this->suggestions = $suggestions; + } + + public function getSuggestions() + { + return $this->suggestions; + } + + public function setTopicDetails(Google_Service_YouTube_VideoTopicDetails $topicDetails) + { + $this->topicDetails = $topicDetails; + } + + public function getTopicDetails() + { + return $this->topicDetails; + } +} + +class Google_Service_YouTube_VideoAgeGating extends Google_Model +{ + public $alcoholContent; + public $restricted; + public $videoGameRating; + + public function setAlcoholContent($alcoholContent) + { + $this->alcoholContent = $alcoholContent; + } + + public function getAlcoholContent() + { + return $this->alcoholContent; + } + + public function setRestricted($restricted) + { + $this->restricted = $restricted; + } + + public function getRestricted() + { + return $this->restricted; + } + + public function setVideoGameRating($videoGameRating) + { + $this->videoGameRating = $videoGameRating; + } + + public function getVideoGameRating() + { + return $this->videoGameRating; + } +} + +class Google_Service_YouTube_VideoCategory extends Google_Model +{ + public $etag; + public $id; + public $kind; + protected $snippetType = 'Google_Service_YouTube_VideoCategorySnippet'; + protected $snippetDataType = ''; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setSnippet(Google_Service_YouTube_VideoCategorySnippet $snippet) + { + $this->snippet = $snippet; + } + + public function getSnippet() + { + return $this->snippet; + } +} + +class Google_Service_YouTube_VideoCategoryListResponse extends Google_Collection +{ + public $etag; + public $eventId; + protected $itemsType = 'Google_Service_YouTube_VideoCategory'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + protected $pageInfoType = 'Google_Service_YouTube_PageInfo'; + protected $pageInfoDataType = ''; + public $prevPageToken; + protected $tokenPaginationType = 'Google_Service_YouTube_TokenPagination'; + protected $tokenPaginationDataType = ''; + public $visitorId; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setEventId($eventId) + { + $this->eventId = $eventId; + } + + public function getEventId() + { + return $this->eventId; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPageInfo(Google_Service_YouTube_PageInfo $pageInfo) + { + $this->pageInfo = $pageInfo; + } + + public function getPageInfo() + { + return $this->pageInfo; + } + + public function setPrevPageToken($prevPageToken) + { + $this->prevPageToken = $prevPageToken; + } + + public function getPrevPageToken() + { + return $this->prevPageToken; + } + + public function setTokenPagination(Google_Service_YouTube_TokenPagination $tokenPagination) + { + $this->tokenPagination = $tokenPagination; + } + + public function getTokenPagination() + { + return $this->tokenPagination; + } + + public function setVisitorId($visitorId) + { + $this->visitorId = $visitorId; + } + + public function getVisitorId() + { + return $this->visitorId; + } +} + +class Google_Service_YouTube_VideoCategorySnippet extends Google_Model +{ + public $assignable; + public $channelId; + public $title; + + public function setAssignable($assignable) + { + $this->assignable = $assignable; + } + + public function getAssignable() + { + return $this->assignable; + } + + public function setChannelId($channelId) + { + $this->channelId = $channelId; + } + + public function getChannelId() + { + return $this->channelId; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_YouTube_VideoContentDetails extends Google_Model +{ + public $caption; + protected $contentRatingType = 'Google_Service_YouTube_ContentRating'; + protected $contentRatingDataType = ''; + protected $countryRestrictionType = 'Google_Service_YouTube_AccessPolicy'; + protected $countryRestrictionDataType = ''; + public $definition; + public $dimension; + public $duration; + public $licensedContent; + protected $regionRestrictionType = 'Google_Service_YouTube_VideoContentDetailsRegionRestriction'; + protected $regionRestrictionDataType = ''; + + public function setCaption($caption) + { + $this->caption = $caption; + } + + public function getCaption() + { + return $this->caption; + } + + public function setContentRating(Google_Service_YouTube_ContentRating $contentRating) + { + $this->contentRating = $contentRating; + } + + public function getContentRating() + { + return $this->contentRating; + } + + public function setCountryRestriction(Google_Service_YouTube_AccessPolicy $countryRestriction) + { + $this->countryRestriction = $countryRestriction; + } + + public function getCountryRestriction() + { + return $this->countryRestriction; + } + + public function setDefinition($definition) + { + $this->definition = $definition; + } + + public function getDefinition() + { + return $this->definition; + } + + public function setDimension($dimension) + { + $this->dimension = $dimension; + } + + public function getDimension() + { + return $this->dimension; + } + + public function setDuration($duration) + { + $this->duration = $duration; + } + + public function getDuration() + { + return $this->duration; + } + + public function setLicensedContent($licensedContent) + { + $this->licensedContent = $licensedContent; + } + + public function getLicensedContent() + { + return $this->licensedContent; + } + + public function setRegionRestriction(Google_Service_YouTube_VideoContentDetailsRegionRestriction $regionRestriction) + { + $this->regionRestriction = $regionRestriction; + } + + public function getRegionRestriction() + { + return $this->regionRestriction; + } +} + +class Google_Service_YouTube_VideoContentDetailsRegionRestriction extends Google_Collection +{ + public $allowed; + public $blocked; + + public function setAllowed($allowed) + { + $this->allowed = $allowed; + } + + public function getAllowed() + { + return $this->allowed; + } + + public function setBlocked($blocked) + { + $this->blocked = $blocked; + } + + public function getBlocked() + { + return $this->blocked; + } +} + +class Google_Service_YouTube_VideoConversionPing extends Google_Model +{ + public $context; + public $conversionUrl; + + public function setContext($context) + { + $this->context = $context; + } + + public function getContext() + { + return $this->context; + } + + public function setConversionUrl($conversionUrl) + { + $this->conversionUrl = $conversionUrl; + } + + public function getConversionUrl() + { + return $this->conversionUrl; + } +} + +class Google_Service_YouTube_VideoConversionPings extends Google_Collection +{ + protected $pingsType = 'Google_Service_YouTube_VideoConversionPing'; + protected $pingsDataType = 'array'; + + public function setPings($pings) + { + $this->pings = $pings; + } + + public function getPings() + { + return $this->pings; + } +} + +class Google_Service_YouTube_VideoFileDetails extends Google_Collection +{ + protected $audioStreamsType = 'Google_Service_YouTube_VideoFileDetailsAudioStream'; + protected $audioStreamsDataType = 'array'; + public $bitrateBps; + public $container; + public $creationTime; + public $durationMs; + public $fileName; + public $fileSize; + public $fileType; + protected $recordingLocationType = 'Google_Service_YouTube_GeoPoint'; + protected $recordingLocationDataType = ''; + protected $videoStreamsType = 'Google_Service_YouTube_VideoFileDetailsVideoStream'; + protected $videoStreamsDataType = 'array'; + + public function setAudioStreams($audioStreams) + { + $this->audioStreams = $audioStreams; + } + + public function getAudioStreams() + { + return $this->audioStreams; + } + + public function setBitrateBps($bitrateBps) + { + $this->bitrateBps = $bitrateBps; + } + + public function getBitrateBps() + { + return $this->bitrateBps; + } + + public function setContainer($container) + { + $this->container = $container; + } + + public function getContainer() + { + return $this->container; + } + + public function setCreationTime($creationTime) + { + $this->creationTime = $creationTime; + } + + public function getCreationTime() + { + return $this->creationTime; + } + + public function setDurationMs($durationMs) + { + $this->durationMs = $durationMs; + } + + public function getDurationMs() + { + return $this->durationMs; + } + + public function setFileName($fileName) + { + $this->fileName = $fileName; + } + + public function getFileName() + { + return $this->fileName; + } + + public function setFileSize($fileSize) + { + $this->fileSize = $fileSize; + } + + public function getFileSize() + { + return $this->fileSize; + } + + public function setFileType($fileType) + { + $this->fileType = $fileType; + } + + public function getFileType() + { + return $this->fileType; + } + + public function setRecordingLocation(Google_Service_YouTube_GeoPoint $recordingLocation) + { + $this->recordingLocation = $recordingLocation; + } + + public function getRecordingLocation() + { + return $this->recordingLocation; + } + + public function setVideoStreams($videoStreams) + { + $this->videoStreams = $videoStreams; + } + + public function getVideoStreams() + { + return $this->videoStreams; + } +} + +class Google_Service_YouTube_VideoFileDetailsAudioStream extends Google_Model +{ + public $bitrateBps; + public $channelCount; + public $codec; + public $vendor; + + public function setBitrateBps($bitrateBps) + { + $this->bitrateBps = $bitrateBps; + } + + public function getBitrateBps() + { + return $this->bitrateBps; + } + + public function setChannelCount($channelCount) + { + $this->channelCount = $channelCount; + } + + public function getChannelCount() + { + return $this->channelCount; + } + + public function setCodec($codec) + { + $this->codec = $codec; + } + + public function getCodec() + { + return $this->codec; + } + + public function setVendor($vendor) + { + $this->vendor = $vendor; + } + + public function getVendor() + { + return $this->vendor; + } +} + +class Google_Service_YouTube_VideoFileDetailsVideoStream extends Google_Model +{ + public $aspectRatio; + public $bitrateBps; + public $codec; + public $frameRateFps; + public $heightPixels; + public $rotation; + public $vendor; + public $widthPixels; + + public function setAspectRatio($aspectRatio) + { + $this->aspectRatio = $aspectRatio; + } + + public function getAspectRatio() + { + return $this->aspectRatio; + } + + public function setBitrateBps($bitrateBps) + { + $this->bitrateBps = $bitrateBps; + } + + public function getBitrateBps() + { + return $this->bitrateBps; + } + + public function setCodec($codec) + { + $this->codec = $codec; + } + + public function getCodec() + { + return $this->codec; + } + + public function setFrameRateFps($frameRateFps) + { + $this->frameRateFps = $frameRateFps; + } + + public function getFrameRateFps() + { + return $this->frameRateFps; + } + + public function setHeightPixels($heightPixels) + { + $this->heightPixels = $heightPixels; + } + + public function getHeightPixels() + { + return $this->heightPixels; + } + + public function setRotation($rotation) + { + $this->rotation = $rotation; + } + + public function getRotation() + { + return $this->rotation; + } + + public function setVendor($vendor) + { + $this->vendor = $vendor; + } + + public function getVendor() + { + return $this->vendor; + } + + public function setWidthPixels($widthPixels) + { + $this->widthPixels = $widthPixels; + } + + public function getWidthPixels() + { + return $this->widthPixels; + } +} + +class Google_Service_YouTube_VideoGetRatingResponse extends Google_Collection +{ + public $etag; + protected $itemsType = 'Google_Service_YouTube_VideoRating'; + protected $itemsDataType = 'array'; + public $kind; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_YouTube_VideoListResponse extends Google_Collection +{ + public $etag; + public $eventId; + protected $itemsType = 'Google_Service_YouTube_Video'; + protected $itemsDataType = 'array'; + public $kind; + public $nextPageToken; + protected $pageInfoType = 'Google_Service_YouTube_PageInfo'; + protected $pageInfoDataType = ''; + public $prevPageToken; + protected $tokenPaginationType = 'Google_Service_YouTube_TokenPagination'; + protected $tokenPaginationDataType = ''; + public $visitorId; + + public function setEtag($etag) + { + $this->etag = $etag; + } + + public function getEtag() + { + return $this->etag; + } + + public function setEventId($eventId) + { + $this->eventId = $eventId; + } + + public function getEventId() + { + return $this->eventId; + } + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setNextPageToken($nextPageToken) + { + $this->nextPageToken = $nextPageToken; + } + + public function getNextPageToken() + { + return $this->nextPageToken; + } + + public function setPageInfo(Google_Service_YouTube_PageInfo $pageInfo) + { + $this->pageInfo = $pageInfo; + } + + public function getPageInfo() + { + return $this->pageInfo; + } + + public function setPrevPageToken($prevPageToken) + { + $this->prevPageToken = $prevPageToken; + } + + public function getPrevPageToken() + { + return $this->prevPageToken; + } + + public function setTokenPagination(Google_Service_YouTube_TokenPagination $tokenPagination) + { + $this->tokenPagination = $tokenPagination; + } + + public function getTokenPagination() + { + return $this->tokenPagination; + } + + public function setVisitorId($visitorId) + { + $this->visitorId = $visitorId; + } + + public function getVisitorId() + { + return $this->visitorId; + } +} + +class Google_Service_YouTube_VideoLiveStreamingDetails extends Google_Model +{ + public $actualEndTime; + public $actualStartTime; + public $concurrentViewers; + public $scheduledEndTime; + public $scheduledStartTime; + + public function setActualEndTime($actualEndTime) + { + $this->actualEndTime = $actualEndTime; + } + + public function getActualEndTime() + { + return $this->actualEndTime; + } + + public function setActualStartTime($actualStartTime) + { + $this->actualStartTime = $actualStartTime; + } + + public function getActualStartTime() + { + return $this->actualStartTime; + } + + public function setConcurrentViewers($concurrentViewers) + { + $this->concurrentViewers = $concurrentViewers; + } + + public function getConcurrentViewers() + { + return $this->concurrentViewers; + } + + public function setScheduledEndTime($scheduledEndTime) + { + $this->scheduledEndTime = $scheduledEndTime; + } + + public function getScheduledEndTime() + { + return $this->scheduledEndTime; + } + + public function setScheduledStartTime($scheduledStartTime) + { + $this->scheduledStartTime = $scheduledStartTime; + } + + public function getScheduledStartTime() + { + return $this->scheduledStartTime; + } +} + +class Google_Service_YouTube_VideoMonetizationDetails extends Google_Model +{ + protected $accessType = 'Google_Service_YouTube_AccessPolicy'; + protected $accessDataType = ''; + + public function setAccess(Google_Service_YouTube_AccessPolicy $access) + { + $this->access = $access; + } + + public function getAccess() + { + return $this->access; + } +} + +class Google_Service_YouTube_VideoPlayer extends Google_Model +{ + public $embedHtml; + + public function setEmbedHtml($embedHtml) + { + $this->embedHtml = $embedHtml; + } + + public function getEmbedHtml() + { + return $this->embedHtml; + } +} + +class Google_Service_YouTube_VideoProcessingDetails extends Google_Model +{ + public $editorSuggestionsAvailability; + public $fileDetailsAvailability; + public $processingFailureReason; + public $processingIssuesAvailability; + protected $processingProgressType = 'Google_Service_YouTube_VideoProcessingDetailsProcessingProgress'; + protected $processingProgressDataType = ''; + public $processingStatus; + public $tagSuggestionsAvailability; + public $thumbnailsAvailability; + + public function setEditorSuggestionsAvailability($editorSuggestionsAvailability) + { + $this->editorSuggestionsAvailability = $editorSuggestionsAvailability; + } + + public function getEditorSuggestionsAvailability() + { + return $this->editorSuggestionsAvailability; + } + + public function setFileDetailsAvailability($fileDetailsAvailability) + { + $this->fileDetailsAvailability = $fileDetailsAvailability; + } + + public function getFileDetailsAvailability() + { + return $this->fileDetailsAvailability; + } + + public function setProcessingFailureReason($processingFailureReason) + { + $this->processingFailureReason = $processingFailureReason; + } + + public function getProcessingFailureReason() + { + return $this->processingFailureReason; + } + + public function setProcessingIssuesAvailability($processingIssuesAvailability) + { + $this->processingIssuesAvailability = $processingIssuesAvailability; + } + + public function getProcessingIssuesAvailability() + { + return $this->processingIssuesAvailability; + } + + public function setProcessingProgress(Google_Service_YouTube_VideoProcessingDetailsProcessingProgress $processingProgress) + { + $this->processingProgress = $processingProgress; + } + + public function getProcessingProgress() + { + return $this->processingProgress; + } + + public function setProcessingStatus($processingStatus) + { + $this->processingStatus = $processingStatus; + } + + public function getProcessingStatus() + { + return $this->processingStatus; + } + + public function setTagSuggestionsAvailability($tagSuggestionsAvailability) + { + $this->tagSuggestionsAvailability = $tagSuggestionsAvailability; + } + + public function getTagSuggestionsAvailability() + { + return $this->tagSuggestionsAvailability; + } + + public function setThumbnailsAvailability($thumbnailsAvailability) + { + $this->thumbnailsAvailability = $thumbnailsAvailability; + } + + public function getThumbnailsAvailability() + { + return $this->thumbnailsAvailability; + } +} + +class Google_Service_YouTube_VideoProcessingDetailsProcessingProgress extends Google_Model +{ + public $partsProcessed; + public $partsTotal; + public $timeLeftMs; + + public function setPartsProcessed($partsProcessed) + { + $this->partsProcessed = $partsProcessed; + } + + public function getPartsProcessed() + { + return $this->partsProcessed; + } + + public function setPartsTotal($partsTotal) + { + $this->partsTotal = $partsTotal; + } + + public function getPartsTotal() + { + return $this->partsTotal; + } + + public function setTimeLeftMs($timeLeftMs) + { + $this->timeLeftMs = $timeLeftMs; + } + + public function getTimeLeftMs() + { + return $this->timeLeftMs; + } +} + +class Google_Service_YouTube_VideoProjectDetails extends Google_Collection +{ + public $tags; + + public function setTags($tags) + { + $this->tags = $tags; + } + + public function getTags() + { + return $this->tags; + } +} + +class Google_Service_YouTube_VideoRating extends Google_Model +{ + public $rating; + public $videoId; + + public function setRating($rating) + { + $this->rating = $rating; + } + + public function getRating() + { + return $this->rating; + } + + public function setVideoId($videoId) + { + $this->videoId = $videoId; + } + + public function getVideoId() + { + return $this->videoId; + } +} + +class Google_Service_YouTube_VideoRecordingDetails extends Google_Model +{ + protected $locationType = 'Google_Service_YouTube_GeoPoint'; + protected $locationDataType = ''; + public $locationDescription; + public $recordingDate; + + public function setLocation(Google_Service_YouTube_GeoPoint $location) + { + $this->location = $location; + } + + public function getLocation() + { + return $this->location; + } + + public function setLocationDescription($locationDescription) + { + $this->locationDescription = $locationDescription; + } + + public function getLocationDescription() + { + return $this->locationDescription; + } + + public function setRecordingDate($recordingDate) + { + $this->recordingDate = $recordingDate; + } + + public function getRecordingDate() + { + return $this->recordingDate; + } +} + +class Google_Service_YouTube_VideoSnippet extends Google_Collection +{ + public $categoryId; + public $channelId; + public $channelTitle; + public $description; + public $liveBroadcastContent; + public $publishedAt; + public $tags; + protected $thumbnailsType = 'Google_Service_YouTube_ThumbnailDetails'; + protected $thumbnailsDataType = ''; + public $title; + + public function setCategoryId($categoryId) + { + $this->categoryId = $categoryId; + } + + public function getCategoryId() + { + return $this->categoryId; + } + + public function setChannelId($channelId) + { + $this->channelId = $channelId; + } + + public function getChannelId() + { + return $this->channelId; + } + + public function setChannelTitle($channelTitle) + { + $this->channelTitle = $channelTitle; + } + + public function getChannelTitle() + { + return $this->channelTitle; + } + + public function setDescription($description) + { + $this->description = $description; + } + + public function getDescription() + { + return $this->description; + } + + public function setLiveBroadcastContent($liveBroadcastContent) + { + $this->liveBroadcastContent = $liveBroadcastContent; + } + + public function getLiveBroadcastContent() + { + return $this->liveBroadcastContent; + } + + public function setPublishedAt($publishedAt) + { + $this->publishedAt = $publishedAt; + } + + public function getPublishedAt() + { + return $this->publishedAt; + } + + public function setTags($tags) + { + $this->tags = $tags; + } + + public function getTags() + { + return $this->tags; + } + + public function setThumbnails(Google_Service_YouTube_ThumbnailDetails $thumbnails) + { + $this->thumbnails = $thumbnails; + } + + public function getThumbnails() + { + return $this->thumbnails; + } + + public function setTitle($title) + { + $this->title = $title; + } + + public function getTitle() + { + return $this->title; + } +} + +class Google_Service_YouTube_VideoStatistics extends Google_Model +{ + public $commentCount; + public $dislikeCount; + public $favoriteCount; + public $likeCount; + public $viewCount; + + public function setCommentCount($commentCount) + { + $this->commentCount = $commentCount; + } + + public function getCommentCount() + { + return $this->commentCount; + } + + public function setDislikeCount($dislikeCount) + { + $this->dislikeCount = $dislikeCount; + } + + public function getDislikeCount() + { + return $this->dislikeCount; + } + + public function setFavoriteCount($favoriteCount) + { + $this->favoriteCount = $favoriteCount; + } + + public function getFavoriteCount() + { + return $this->favoriteCount; + } + + public function setLikeCount($likeCount) + { + $this->likeCount = $likeCount; + } + + public function getLikeCount() + { + return $this->likeCount; + } + + public function setViewCount($viewCount) + { + $this->viewCount = $viewCount; + } + + public function getViewCount() + { + return $this->viewCount; + } +} + +class Google_Service_YouTube_VideoStatus extends Google_Model +{ + public $embeddable; + public $failureReason; + public $license; + public $privacyStatus; + public $publicStatsViewable; + public $publishAt; + public $rejectionReason; + public $uploadStatus; + + public function setEmbeddable($embeddable) + { + $this->embeddable = $embeddable; + } + + public function getEmbeddable() + { + return $this->embeddable; + } + + public function setFailureReason($failureReason) + { + $this->failureReason = $failureReason; + } + + public function getFailureReason() + { + return $this->failureReason; + } + + public function setLicense($license) + { + $this->license = $license; + } + + public function getLicense() + { + return $this->license; + } + + public function setPrivacyStatus($privacyStatus) + { + $this->privacyStatus = $privacyStatus; + } + + public function getPrivacyStatus() + { + return $this->privacyStatus; + } + + public function setPublicStatsViewable($publicStatsViewable) + { + $this->publicStatsViewable = $publicStatsViewable; + } + + public function getPublicStatsViewable() + { + return $this->publicStatsViewable; + } + + public function setPublishAt($publishAt) + { + $this->publishAt = $publishAt; + } + + public function getPublishAt() + { + return $this->publishAt; + } + + public function setRejectionReason($rejectionReason) + { + $this->rejectionReason = $rejectionReason; + } + + public function getRejectionReason() + { + return $this->rejectionReason; + } + + public function setUploadStatus($uploadStatus) + { + $this->uploadStatus = $uploadStatus; + } + + public function getUploadStatus() + { + return $this->uploadStatus; + } +} + +class Google_Service_YouTube_VideoSuggestions extends Google_Collection +{ + public $editorSuggestions; + public $processingErrors; + public $processingHints; + public $processingWarnings; + protected $tagSuggestionsType = 'Google_Service_YouTube_VideoSuggestionsTagSuggestion'; + protected $tagSuggestionsDataType = 'array'; + + public function setEditorSuggestions($editorSuggestions) + { + $this->editorSuggestions = $editorSuggestions; + } + + public function getEditorSuggestions() + { + return $this->editorSuggestions; + } + + public function setProcessingErrors($processingErrors) + { + $this->processingErrors = $processingErrors; + } + + public function getProcessingErrors() + { + return $this->processingErrors; + } + + public function setProcessingHints($processingHints) + { + $this->processingHints = $processingHints; + } + + public function getProcessingHints() + { + return $this->processingHints; + } + + public function setProcessingWarnings($processingWarnings) + { + $this->processingWarnings = $processingWarnings; + } + + public function getProcessingWarnings() + { + return $this->processingWarnings; + } + + public function setTagSuggestions($tagSuggestions) + { + $this->tagSuggestions = $tagSuggestions; + } + + public function getTagSuggestions() + { + return $this->tagSuggestions; + } +} + +class Google_Service_YouTube_VideoSuggestionsTagSuggestion extends Google_Collection +{ + public $categoryRestricts; + public $tag; + + public function setCategoryRestricts($categoryRestricts) + { + $this->categoryRestricts = $categoryRestricts; + } + + public function getCategoryRestricts() + { + return $this->categoryRestricts; + } + + public function setTag($tag) + { + $this->tag = $tag; + } + + public function getTag() + { + return $this->tag; + } +} + +class Google_Service_YouTube_VideoTopicDetails extends Google_Collection +{ + public $relevantTopicIds; + public $topicIds; + + public function setRelevantTopicIds($relevantTopicIds) + { + $this->relevantTopicIds = $relevantTopicIds; + } + + public function getRelevantTopicIds() + { + return $this->relevantTopicIds; + } + + public function setTopicIds($topicIds) + { + $this->topicIds = $topicIds; + } + + public function getTopicIds() + { + return $this->topicIds; + } +} + +class Google_Service_YouTube_WatchSettings extends Google_Model +{ + public $backgroundColor; + public $featuredPlaylistId; + public $textColor; + + public function setBackgroundColor($backgroundColor) + { + $this->backgroundColor = $backgroundColor; + } + + public function getBackgroundColor() + { + return $this->backgroundColor; + } + + public function setFeaturedPlaylistId($featuredPlaylistId) + { + $this->featuredPlaylistId = $featuredPlaylistId; + } + + public function getFeaturedPlaylistId() + { + return $this->featuredPlaylistId; + } + + public function setTextColor($textColor) + { + $this->textColor = $textColor; + } + + public function getTextColor() + { + return $this->textColor; + } +} diff --git a/oauth/Google/Service/YouTubeAnalytics.php b/oauth/Google/Service/YouTubeAnalytics.php new file mode 100644 index 0000000..8c4fd73 --- /dev/null +++ b/oauth/Google/Service/YouTubeAnalytics.php @@ -0,0 +1,623 @@ + + * Retrieve your YouTube Analytics reports. + *

        + * + *

        + * For more information about this service, see the API + * Documentation + *

        + * + * @author Google, Inc. + */ +class Google_Service_YouTubeAnalytics extends Google_Service +{ + /** View YouTube Analytics monetary reports for your YouTube content. */ + const YT_ANALYTICS_MONETARY_READONLY = "https://www.googleapis.com/auth/yt-analytics-monetary.readonly"; + /** View YouTube Analytics reports for your YouTube content. */ + const YT_ANALYTICS_READONLY = "https://www.googleapis.com/auth/yt-analytics.readonly"; + + public $batchReportDefinitions; + public $batchReports; + public $reports; + + + /** + * Constructs the internal representation of the YouTubeAnalytics service. + * + * @param Google_Client $client + */ + public function __construct(Google_Client $client) + { + parent::__construct($client); + $this->servicePath = 'youtube/analytics/v1/'; + $this->version = 'v1'; + $this->serviceName = 'youtubeAnalytics'; + + $this->batchReportDefinitions = new Google_Service_YouTubeAnalytics_BatchReportDefinitions_Resource( + $this, + $this->serviceName, + 'batchReportDefinitions', + array( + 'methods' => array( + 'list' => array( + 'path' => 'batchReportDefinitions', + 'httpMethod' => 'GET', + 'parameters' => array( + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->batchReports = new Google_Service_YouTubeAnalytics_BatchReports_Resource( + $this, + $this->serviceName, + 'batchReports', + array( + 'methods' => array( + 'list' => array( + 'path' => 'batchReports', + 'httpMethod' => 'GET', + 'parameters' => array( + 'batchReportDefinitionId' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'onBehalfOfContentOwner' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + ), + ), + ) + ) + ); + $this->reports = new Google_Service_YouTubeAnalytics_Reports_Resource( + $this, + $this->serviceName, + 'reports', + array( + 'methods' => array( + 'query' => array( + 'path' => 'reports', + 'httpMethod' => 'GET', + 'parameters' => array( + 'ids' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'start-date' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'end-date' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'metrics' => array( + 'location' => 'query', + 'type' => 'string', + 'required' => true, + ), + 'max-results' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'sort' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'dimensions' => array( + 'location' => 'query', + 'type' => 'string', + ), + 'start-index' => array( + 'location' => 'query', + 'type' => 'integer', + ), + 'filters' => array( + 'location' => 'query', + 'type' => 'string', + ), + ), + ), + ) + ) + ); + } +} + + +/** + * The "batchReportDefinitions" collection of methods. + * Typical usage is: + * + * $youtubeAnalyticsService = new Google_Service_YouTubeAnalytics(...); + * $batchReportDefinitions = $youtubeAnalyticsService->batchReportDefinitions; + * + */ +class Google_Service_YouTubeAnalytics_BatchReportDefinitions_Resource extends Google_Service_Resource +{ + + /** + * Retrieves a list of available batch report definitions. + * (batchReportDefinitions.listBatchReportDefinitions) + * + * @param string $onBehalfOfContentOwner + * The onBehalfOfContentOwner parameter identifies the content owner that the user is acting on + * behalf of. + * @param array $optParams Optional parameters. + * @return Google_Service_YouTubeAnalytics_BatchReportDefinitionList + */ + public function listBatchReportDefinitions($onBehalfOfContentOwner, $optParams = array()) + { + $params = array('onBehalfOfContentOwner' => $onBehalfOfContentOwner); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_YouTubeAnalytics_BatchReportDefinitionList"); + } +} + +/** + * The "batchReports" collection of methods. + * Typical usage is: + * + * $youtubeAnalyticsService = new Google_Service_YouTubeAnalytics(...); + * $batchReports = $youtubeAnalyticsService->batchReports; + * + */ +class Google_Service_YouTubeAnalytics_BatchReports_Resource extends Google_Service_Resource +{ + + /** + * Retrieves a list of processed batch reports. (batchReports.listBatchReports) + * + * @param string $batchReportDefinitionId + * The batchReportDefinitionId parameter specifies the ID of the batch reportort definition for + * which you are retrieving reports. + * @param string $onBehalfOfContentOwner + * The onBehalfOfContentOwner parameter identifies the content owner that the user is acting on + * behalf of. + * @param array $optParams Optional parameters. + * @return Google_Service_YouTubeAnalytics_BatchReportList + */ + public function listBatchReports($batchReportDefinitionId, $onBehalfOfContentOwner, $optParams = array()) + { + $params = array('batchReportDefinitionId' => $batchReportDefinitionId, 'onBehalfOfContentOwner' => $onBehalfOfContentOwner); + $params = array_merge($params, $optParams); + return $this->call('list', array($params), "Google_Service_YouTubeAnalytics_BatchReportList"); + } +} + +/** + * The "reports" collection of methods. + * Typical usage is: + * + * $youtubeAnalyticsService = new Google_Service_YouTubeAnalytics(...); + * $reports = $youtubeAnalyticsService->reports; + * + */ +class Google_Service_YouTubeAnalytics_Reports_Resource extends Google_Service_Resource +{ + + /** + * Retrieve your YouTube Analytics reports. (reports.query) + * + * @param string $ids + * Identifies the YouTube channel or content owner for which you are retrieving YouTube Analytics + * data. + - To request data for a YouTube user, set the ids parameter value to channel==CHANNEL_ID, + * where CHANNEL_ID specifies the unique YouTube channel ID. + - To request data for a YouTube CMS + * content owner, set the ids parameter value to contentOwner==OWNER_NAME, where OWNER_NAME is the + * CMS name of the content owner. + * @param string $startDate + * The start date for fetching YouTube Analytics data. The value should be in YYYY-MM-DD format. + * @param string $endDate + * The end date for fetching YouTube Analytics data. The value should be in YYYY-MM-DD format. + * @param string $metrics + * A comma-separated list of YouTube Analytics metrics, such as views or likes,dislikes. See the + * Available Reports document for a list of the reports that you can retrieve and the metrics + * available in each report, and see the Metrics document for definitions of those metrics. + * @param array $optParams Optional parameters. + * + * @opt_param int max-results + * The maximum number of rows to include in the response. + * @opt_param string sort + * A comma-separated list of dimensions or metrics that determine the sort order for YouTube + * Analytics data. By default the sort order is ascending. The '-' prefix causes descending sort + * order. + * @opt_param string dimensions + * A comma-separated list of YouTube Analytics dimensions, such as views or ageGroup,gender. See + * the Available Reports document for a list of the reports that you can retrieve and the + * dimensions used for those reports. Also see the Dimensions document for definitions of those + * dimensions. + * @opt_param int start-index + * An index of the first entity to retrieve. Use this parameter as a pagination mechanism along + * with the max-results parameter (one-based, inclusive). + * @opt_param string filters + * A list of filters that should be applied when retrieving YouTube Analytics data. The Available + * Reports document identifies the dimensions that can be used to filter each report, and the + * Dimensions document defines those dimensions. If a request uses multiple filters, join them + * together with a semicolon (;), and the returned result table will satisfy both filters. For + * example, a filters parameter value of video==dMH0bHeiRNg;country==IT restricts the result set to + * include data for the given video in Italy. + * @return Google_Service_YouTubeAnalytics_ResultTable + */ + public function query($ids, $startDate, $endDate, $metrics, $optParams = array()) + { + $params = array('ids' => $ids, 'start-date' => $startDate, 'end-date' => $endDate, 'metrics' => $metrics); + $params = array_merge($params, $optParams); + return $this->call('query', array($params), "Google_Service_YouTubeAnalytics_ResultTable"); + } +} + + + + +class Google_Service_YouTubeAnalytics_BatchReportDefinitionList extends Google_Collection +{ + protected $itemsType = 'Google_Service_YouTubeAnalytics_BatchReportDefinitionTemplate'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_YouTubeAnalytics_BatchReportDefinitionTemplate extends Google_Collection +{ + protected $defaultOutputType = 'Google_Service_YouTubeAnalytics_BatchReportDefinitionTemplateDefaultOutput'; + protected $defaultOutputDataType = 'array'; + public $id; + public $name; + public $status; + public $type; + + public function setDefaultOutput($defaultOutput) + { + $this->defaultOutput = $defaultOutput; + } + + public function getDefaultOutput() + { + return $this->defaultOutput; + } + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function setStatus($status) + { + $this->status = $status; + } + + public function getStatus() + { + return $this->status; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_YouTubeAnalytics_BatchReportDefinitionTemplateDefaultOutput extends Google_Model +{ + public $format; + public $type; + + public function setFormat($format) + { + $this->format = $format; + } + + public function getFormat() + { + return $this->format; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_YouTubeAnalytics_BatchReportList extends Google_Collection +{ + protected $itemsType = 'Google_Service_YouTubeAnalytics_BatchReportTemplate'; + protected $itemsDataType = 'array'; + public $kind; + + public function setItems($items) + { + $this->items = $items; + } + + public function getItems() + { + return $this->items; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } +} + +class Google_Service_YouTubeAnalytics_BatchReportTemplate extends Google_Collection +{ + public $id; + protected $outputsType = 'Google_Service_YouTubeAnalytics_BatchReportTemplateOutputs'; + protected $outputsDataType = 'array'; + public $reportId; + protected $timeSpanType = 'Google_Service_YouTubeAnalytics_BatchReportTemplateTimeSpan'; + protected $timeSpanDataType = ''; + public $timeUpdated; + + public function setId($id) + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + public function setOutputs($outputs) + { + $this->outputs = $outputs; + } + + public function getOutputs() + { + return $this->outputs; + } + + public function setReportId($reportId) + { + $this->reportId = $reportId; + } + + public function getReportId() + { + return $this->reportId; + } + + public function setTimeSpan(Google_Service_YouTubeAnalytics_BatchReportTemplateTimeSpan $timeSpan) + { + $this->timeSpan = $timeSpan; + } + + public function getTimeSpan() + { + return $this->timeSpan; + } + + public function setTimeUpdated($timeUpdated) + { + $this->timeUpdated = $timeUpdated; + } + + public function getTimeUpdated() + { + return $this->timeUpdated; + } +} + +class Google_Service_YouTubeAnalytics_BatchReportTemplateOutputs extends Google_Model +{ + public $downloadUrl; + public $format; + public $type; + + public function setDownloadUrl($downloadUrl) + { + $this->downloadUrl = $downloadUrl; + } + + public function getDownloadUrl() + { + return $this->downloadUrl; + } + + public function setFormat($format) + { + $this->format = $format; + } + + public function getFormat() + { + return $this->format; + } + + public function setType($type) + { + $this->type = $type; + } + + public function getType() + { + return $this->type; + } +} + +class Google_Service_YouTubeAnalytics_BatchReportTemplateTimeSpan extends Google_Model +{ + public $endTime; + public $startTime; + + public function setEndTime($endTime) + { + $this->endTime = $endTime; + } + + public function getEndTime() + { + return $this->endTime; + } + + public function setStartTime($startTime) + { + $this->startTime = $startTime; + } + + public function getStartTime() + { + return $this->startTime; + } +} + +class Google_Service_YouTubeAnalytics_ResultTable extends Google_Collection +{ + protected $columnHeadersType = 'Google_Service_YouTubeAnalytics_ResultTableColumnHeaders'; + protected $columnHeadersDataType = 'array'; + public $kind; + public $rows; + + public function setColumnHeaders($columnHeaders) + { + $this->columnHeaders = $columnHeaders; + } + + public function getColumnHeaders() + { + return $this->columnHeaders; + } + + public function setKind($kind) + { + $this->kind = $kind; + } + + public function getKind() + { + return $this->kind; + } + + public function setRows($rows) + { + $this->rows = $rows; + } + + public function getRows() + { + return $this->rows; + } +} + +class Google_Service_YouTubeAnalytics_ResultTableColumnHeaders extends Google_Model +{ + public $columnType; + public $dataType; + public $name; + + public function setColumnType($columnType) + { + $this->columnType = $columnType; + } + + public function getColumnType() + { + return $this->columnType; + } + + public function setDataType($dataType) + { + $this->dataType = $dataType; + } + + public function getDataType() + { + return $this->dataType; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} diff --git a/oauth/Google/Signer/Abstract.php b/oauth/Google/Signer/Abstract.php new file mode 100644 index 0000000..2501809 --- /dev/null +++ b/oauth/Google/Signer/Abstract.php @@ -0,0 +1,29 @@ + + */ +abstract class Google_Signer_Abstract +{ + /** + * Signs data, returns the signature as binary data. + */ + abstract public function sign($data); +} diff --git a/oauth/Google/Signer/P12.php b/oauth/Google/Signer/P12.php new file mode 100644 index 0000000..7cc6098 --- /dev/null +++ b/oauth/Google/Signer/P12.php @@ -0,0 +1,91 @@ + + */ +class Google_Signer_P12 extends Google_Signer_Abstract +{ + // OpenSSL private key resource + private $privateKey; + + // Creates a new signer from a .p12 file. + public function __construct($p12, $password) + { + if (!function_exists('openssl_x509_read')) { + throw new Google_Exception( + 'The Google PHP API library needs the openssl PHP extension' + ); + } + + // If the private key is provided directly, then this isn't in the p12 + // format. Different versions of openssl support different p12 formats + // and the key from google wasn't being accepted by the version available + // at the time. + if (!$password && strpos($p12, "-----BEGIN RSA PRIVATE KEY-----") !== false) { + $this->privateKey = openssl_pkey_get_private($p12); + } else { + // This throws on error + $certs = array(); + if (!openssl_pkcs12_read($p12, $certs, $password)) { + throw new Google_Auth_Exception( + "Unable to parse the p12 file. " . + "Is this a .p12 file? Is the password correct? OpenSSL error: " . + openssl_error_string() + ); + } + // TODO(beaton): is this part of the contract for the openssl_pkcs12_read + // method? What happens if there are multiple private keys? Do we care? + if (!array_key_exists("pkey", $certs) || !$certs["pkey"]) { + throw new Google_Auth_Exception("No private key found in p12 file."); + } + $this->privateKey = openssl_pkey_get_private($certs['pkey']); + } + + if (!$this->privateKey) { + throw new Google_Auth_Exception("Unable to load private key"); + } + } + + public function __destruct() + { + if ($this->privateKey) { + openssl_pkey_free($this->privateKey); + } + } + + public function sign($data) + { + if (version_compare(PHP_VERSION, '5.3.0') < 0) { + throw new Google_Auth_Exception( + "PHP 5.3.0 or higher is required to use service accounts." + ); + } + $hash = defined("OPENSSL_ALGO_SHA256") ? OPENSSL_ALGO_SHA256 : "sha256"; + if (!openssl_sign($data, $signature, $this->privateKey, $hash)) { + throw new Google_Auth_Exception("Unable to sign data"); + } + return $signature; + } +} diff --git a/oauth/Google/Utils.php b/oauth/Google/Utils.php new file mode 100644 index 0000000..f5ef32c --- /dev/null +++ b/oauth/Google/Utils.php @@ -0,0 +1,135 @@ + + */ +class Google_Utils +{ + public static function urlSafeB64Encode($data) + { + $b64 = base64_encode($data); + $b64 = str_replace( + array('+', '/', '\r', '\n', '='), + array('-', '_'), + $b64 + ); + return $b64; + } + + public static function urlSafeB64Decode($b64) + { + $b64 = str_replace( + array('-', '_'), + array('+', '/'), + $b64 + ); + return base64_decode($b64); + } + + /** + * Misc function used to count the number of bytes in a post body, in the + * world of multi-byte chars and the unpredictability of + * strlen/mb_strlen/sizeof, this is the only way to do that in a sane + * manner at the moment. + * + * This algorithm was originally developed for the + * Solar Framework by Paul M. Jones + * + * @link http://solarphp.com/ + * @link http://svn.solarphp.com/core/trunk/Solar/Json.php + * @link http://framework.zend.com/svn/framework/standard/trunk/library/Zend/Json/Decoder.php + * @param string $str + * @return int The number of bytes in a string. + */ + public static function getStrLen($str) + { + $strlenVar = strlen($str); + $d = $ret = 0; + for ($count = 0; $count < $strlenVar; ++ $count) { + $ordinalValue = ord($str{$ret}); + switch (true) { + case (($ordinalValue >= 0x20) && ($ordinalValue <= 0x7F)): + // characters U-00000000 - U-0000007F (same as ASCII) + $ret ++; + break; + case (($ordinalValue & 0xE0) == 0xC0): + // characters U-00000080 - U-000007FF, mask 110XXXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $ret += 2; + break; + case (($ordinalValue & 0xF0) == 0xE0): + // characters U-00000800 - U-0000FFFF, mask 1110XXXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $ret += 3; + break; + case (($ordinalValue & 0xF8) == 0xF0): + // characters U-00010000 - U-001FFFFF, mask 11110XXX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $ret += 4; + break; + case (($ordinalValue & 0xFC) == 0xF8): + // characters U-00200000 - U-03FFFFFF, mask 111110XX + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $ret += 5; + break; + case (($ordinalValue & 0xFE) == 0xFC): + // characters U-04000000 - U-7FFFFFFF, mask 1111110X + // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 + $ret += 6; + break; + default: + $ret ++; + } + } + return $ret; + } + + /** + * Normalize all keys in an array to lower-case. + * @param array $arr + * @return array Normalized array. + */ + public static function normalize($arr) + { + if (!is_array($arr)) { + return array(); + } + + $normalized = array(); + foreach ($arr as $key => $val) { + $normalized[strtolower($key)] = $val; + } + return $normalized; + } + + /** + * Convert a string to camelCase + * @param string $value + * @return string + */ + public static function camelCase($value) + { + $value = ucwords(str_replace(array('-', '_'), ' ', $value)); + $value = str_replace(' ', '', $value); + $value[0] = strtolower($value[0]); + return $value; + } +} diff --git a/oauth/Google/Utils/URITemplate.php b/oauth/Google/Utils/URITemplate.php new file mode 100644 index 0000000..f5ee38b --- /dev/null +++ b/oauth/Google/Utils/URITemplate.php @@ -0,0 +1,333 @@ + "reserved", + "/" => "segments", + "." => "dotprefix", + "#" => "fragment", + ";" => "semicolon", + "?" => "form", + "&" => "continuation" + ); + + /** + * @var reserved array + * These are the characters which should not be URL encoded in reserved + * strings. + */ + private $reserved = array( + "=", ",", "!", "@", "|", ":", "/", "?", "#", + "[", "]",'$', "&", "'", "(", ")", "*", "+", ";" + ); + private $reservedEncoded = array( + "%3D", "%2C", "%21", "%40", "%7C", "%3A", "%2F", "%3F", + "%23", "%5B", "%5D", "%24", "%26", "%27", "%28", "%29", + "%2A", "%2B", "%3B" + ); + + public function parse($string, array $parameters) + { + return $this->resolveNextSection($string, $parameters); + } + + /** + * This function finds the first matching {...} block and + * executes the replacement. It then calls itself to find + * subsequent blocks, if any. + */ + private function resolveNextSection($string, $parameters) + { + $start = strpos($string, "{"); + if ($start === false) { + return $string; + } + $end = strpos($string, "}"); + if ($end === false) { + return $string; + } + $string = $this->replace($string, $start, $end, $parameters); + return $this->resolveNextSection($string, $parameters); + } + + private function replace($string, $start, $end, $parameters) + { + // We know a data block will have {} round it, so we can strip that. + $data = substr($string, $start + 1, $end - $start - 1); + + // If the first character is one of the reserved operators, it effects + // the processing of the stream. + if (isset($this->operators[$data[0]])) { + $op = $this->operators[$data[0]]; + $data = substr($data, 1); + $prefix = ""; + $prefix_on_missing = false; + + switch ($op) { + case "reserved": + // Reserved means certain characters should not be URL encoded + $data = $this->replaceVars($data, $parameters, ",", null, true); + break; + case "fragment": + // Comma separated with fragment prefix. Bare values only. + $prefix = "#"; + $prefix_on_missing = true; + $data = $this->replaceVars($data, $parameters, ",", null, true); + break; + case "segments": + // Slash separated data. Bare values only. + $prefix = "/"; + $data =$this->replaceVars($data, $parameters, "/"); + break; + case "dotprefix": + // Dot separated data. Bare values only. + $prefix = "."; + $prefix_on_missing = true; + $data = $this->replaceVars($data, $parameters, "."); + break; + case "semicolon": + // Semicolon prefixed and separated. Uses the key name + $prefix = ";"; + $data = $this->replaceVars($data, $parameters, ";", "=", false, true, false); + break; + case "form": + // Standard URL format. Uses the key name + $prefix = "?"; + $data = $this->replaceVars($data, $parameters, "&", "="); + break; + case "continuation": + // Standard URL, but with leading ampersand. Uses key name. + $prefix = "&"; + $data = $this->replaceVars($data, $parameters, "&", "="); + break; + } + + // Add the initial prefix character if data is valid. + if ($data || ($data !== false && $prefix_on_missing)) { + $data = $prefix . $data; + } + + } else { + // If no operator we replace with the defaults. + $data = $this->replaceVars($data, $parameters); + } + // This is chops out the {...} and replaces with the new section. + return substr($string, 0, $start) . $data . substr($string, $end + 1); + } + + private function replaceVars( + $section, + $parameters, + $sep = ",", + $combine = null, + $reserved = false, + $tag_empty = false, + $combine_on_empty = true + ) { + if (strpos($section, ",") === false) { + // If we only have a single value, we can immediately process. + return $this->combine( + $section, + $parameters, + $sep, + $combine, + $reserved, + $tag_empty, + $combine_on_empty + ); + } else { + // If we have multiple values, we need to split and loop over them. + // Each is treated individually, then glued together with the + // separator character. + $vars = explode(",", $section); + return $this->combineList( + $vars, + $sep, + $parameters, + $combine, + $reserved, + false, // Never emit empty strings in multi-param replacements + $combine_on_empty + ); + } + } + + public function combine( + $key, + $parameters, + $sep, + $combine, + $reserved, + $tag_empty, + $combine_on_empty + ) { + $length = false; + $explode = false; + $skip_final_combine = false; + $value = false; + + // Check for length restriction. + if (strpos($key, ":") !== false) { + list($key, $length) = explode(":", $key); + } + + // Check for explode parameter. + if ($key[strlen($key) - 1] == "*") { + $explode = true; + $key = substr($key, 0, -1); + $skip_final_combine = true; + } + + // Define the list separator. + $list_sep = $explode ? $sep : ","; + + if (isset($parameters[$key])) { + $data_type = $this->getDataType($parameters[$key]); + switch($data_type) { + case self::TYPE_SCALAR: + $value = $this->getValue($parameters[$key], $length); + break; + case self::TYPE_LIST: + $values = array(); + foreach ($parameters[$key] as $pkey => $pvalue) { + $pvalue = $this->getValue($pvalue, $length); + if ($combine && $explode) { + $values[$pkey] = $key . $combine . $pvalue; + } else { + $values[$pkey] = $pvalue; + } + } + $value = implode($list_sep, $values); + if ($value == '') { + return ''; + } + break; + case self::TYPE_MAP: + $values = array(); + foreach ($parameters[$key] as $pkey => $pvalue) { + $pvalue = $this->getValue($pvalue, $length); + if ($explode) { + $pkey = $this->getValue($pkey, $length); + $values[] = $pkey . "=" . $pvalue; // Explode triggers = combine. + } else { + $values[] = $pkey; + $values[] = $pvalue; + } + } + $value = implode($list_sep, $values); + if ($value == '') { + return false; + } + break; + } + } else if ($tag_empty) { + // If we are just indicating empty values with their key name, return that. + return $key; + } else { + // Otherwise we can skip this variable due to not being defined. + return false; + } + + if ($reserved) { + $value = str_replace($this->reservedEncoded, $this->reserved, $value); + } + + // If we do not need to include the key name, we just return the raw + // value. + if (!$combine || $skip_final_combine) { + return $value; + } + + // Else we combine the key name: foo=bar, if value is not the empty string. + return $key . ($value != '' || $combine_on_empty ? $combine . $value : ''); + } + + /** + * Return the type of a passed in value + */ + private function getDataType($data) + { + if (is_array($data)) { + reset($data); + if (key($data) !== 0) { + return self::TYPE_MAP; + } + return self::TYPE_LIST; + } + return self::TYPE_SCALAR; + } + + /** + * Utility function that merges multiple combine calls + * for multi-key templates. + */ + private function combineList( + $vars, + $sep, + $parameters, + $combine, + $reserved, + $tag_empty, + $combine_on_empty + ) { + $ret = array(); + foreach ($vars as $var) { + $response = $this->combine( + $var, + $parameters, + $sep, + $combine, + $reserved, + $tag_empty, + $combine_on_empty + ); + if ($response === false) { + continue; + } + $ret[] = $response; + } + return implode($sep, $ret); + } + + /** + * Utility function to encode and trim values + */ + private function getValue($value, $length) + { + if ($length) { + $value = substr($value, 0, $length); + } + $value = rawurlencode($value); + return $value; + } +} diff --git a/oauth/Google/Verifier/Abstract.php b/oauth/Google/Verifier/Abstract.php new file mode 100644 index 0000000..e6c9eeb --- /dev/null +++ b/oauth/Google/Verifier/Abstract.php @@ -0,0 +1,30 @@ + + */ +abstract class Google_Verifier_Abstract +{ + /** + * Checks a signature, returns true if the signature is correct, + * false otherwise. + */ + abstract public function verify($data, $signature); +} diff --git a/oauth/Google/Verifier/Pem.php b/oauth/Google/Verifier/Pem.php new file mode 100644 index 0000000..f281575 --- /dev/null +++ b/oauth/Google/Verifier/Pem.php @@ -0,0 +1,74 @@ + + */ +class Google_Verifier_Pem extends Google_Verifier_Abstract +{ + private $publicKey; + + /** + * Constructs a verifier from the supplied PEM-encoded certificate. + * + * $pem: a PEM encoded certificate (not a file). + * @param $pem + * @throws Google_Auth_Exception + * @throws Google_Exception + */ + public function __construct($pem) + { + if (!function_exists('openssl_x509_read')) { + throw new Google_Exception('Google API PHP client needs the openssl PHP extension'); + } + $this->publicKey = openssl_x509_read($pem); + if (!$this->publicKey) { + throw new Google_Auth_Exception("Unable to parse PEM: $pem"); + } + } + + public function __destruct() + { + if ($this->publicKey) { + openssl_x509_free($this->publicKey); + } + } + + /** + * Verifies the signature on data. + * + * Returns true if the signature is valid, false otherwise. + * @param $data + * @param $signature + * @throws Google_Auth_Exception + * @return bool + */ + public function verify($data, $signature) + { + $hash = defined("OPENSSL_ALGO_SHA256") ? OPENSSL_ALGO_SHA256 : "sha256"; + $status = openssl_verify($data, $signature, $this->publicKey, $hash); + if ($status === -1) { + throw new Google_Auth_Exception('Signature verification error: ' . openssl_error_string()); + } + return $status === 1; + } +} diff --git a/oauth/facebook.php b/oauth/facebook.php new file mode 100644 index 0000000..ffe54e4 --- /dev/null +++ b/oauth/facebook.php @@ -0,0 +1,117 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ +session_start(); + +require_once('facebook/facebook.php'); +require_once('../config.php'); + +// Current Date & User IP +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; + +// Database Connection +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); +if (mysqli_connect_errno()) { + die("Unable connect to database"); +} + +$facebook = new Facebook(array( + 'appId' => FB_APP_ID, + 'secret' => FB_APP_SECRET +)); + +$user = $facebook->getUser(); + +if ($user) { + try { + // Proceed knowing you have a logged in user who's authenticated. + $user_profile = $facebook->api('/me'); + } + catch (FacebookApiException $e) { + + $user = null; + } + + if (!empty($user_profile)) { + # User info ok? Let's print it (Here we will be adding the login and registering routines) + + $client_name = $user_profile['name']; + $client_id = $user_profile['id']; + $client_email = $user_profile['email']; + $client_pic = $user_profile['picture']; + $client_plat = 'Facebook'; + + + if (!empty($user_profile)) { + $query = mysqli_query($con, "SELECT * FROM users WHERE oauth_uid='$client_id'"); + if (mysqli_num_rows($query) > 0) { + $query = "SELECT * FROM users WHERE oauth_uid='$client_id'"; + $result = mysqli_query($con, $query); + while ($row = mysqli_fetch_array($result)) { + $user_username = $row['username']; + $db_verified = $row['verified']; + } + if ($db_verified == "2") { + die("Your account has been banned."); + } else { + + $_SESSION['username'] = $user_username; + $_SESSION['token'] = Md5($db_id . $username); + $_SESSION['oauth_uid'] = $client_id; + $_SESSION['pic'] = $client_pic; + + $old_user = 1; + header("Location: ."); + exit(); + } + } else { + $new_user = 1; + #user not present. + $query = "SELECT @last_id := MAX(id) FROM users"; + $result = mysqli_query($con, $query); + while ($row = mysqli_fetch_array($result)) { + $last_id = $row['@last_id := MAX(id)']; + } + if ($last_id == "" || $last_id == null) { + $username = "User1"; + } else { + $last_id = $last_id + 1; + $username = "User$last_id"; + } + $_SESSION['username'] = $username; + $_SESSION['oauth_uid'] = $client_id; + $_SESSION['token'] = Md5($db_id . $username); + $query = "INSERT INTO users (oauth_uid,username,email_id,full_name,platform,password,verified,picture,date,ip) VALUES ('$client_id','$username','$client_email','$client_name','$client_plat','$password','1','$client_pic','$date','$ip')"; + mysqli_query($con, $query); + header("Location: oauth.php?new_user"); + exit(); + } + + } + } else { + # For testing purposes, if there was an error, let's kill the script + die("There was an error."); + } +} else { + if (isset($_GET['login'])) { + # There's no active session, let's generate one + $login_url = $facebook->getLoginUrl(array( + 'scope' => 'email' + )); + header("Location: " . $login_url); + exit(); + } +} +?> diff --git a/oauth/facebook/base_facebook.php b/oauth/facebook/base_facebook.php new file mode 100644 index 0000000..b837fa7 --- /dev/null +++ b/oauth/facebook/base_facebook.php @@ -0,0 +1,1124 @@ + + */ +class FacebookApiException extends Exception +{ + /** + * The result from the API server that represents the exception information. + */ + protected $result; + + /** + * Make a new API Exception with the given result. + * + * @param array $result The result from the API server + */ + public function __construct($result) { + $this->result = $result; + + $code = isset($result['error_code']) ? $result['error_code'] : 0; + + if (isset($result['error_description'])) { + // OAuth 2.0 Draft 10 style + $msg = $result['error_description']; + } else if (isset($result['error']) && is_array($result['error'])) { + // OAuth 2.0 Draft 00 style + $msg = $result['error']['message']; + } else if (isset($result['error_msg'])) { + // Rest server style + $msg = $result['error_msg']; + } else { + $msg = 'Unknown Error. Check getResult()'; + } + + parent::__construct($msg, $code); + } + + /** + * Return the associated result object returned by the API server. + * + * @return array The result from the API server + */ + public function getResult() { + return $this->result; + } + + /** + * Returns the associated type for the error. This will default to + * 'Exception' when a type is not available. + * + * @return string + */ + public function getType() { + if (isset($this->result['error'])) { + $error = $this->result['error']; + if (is_string($error)) { + // OAuth 2.0 Draft 10 style + return $error; + } else if (is_array($error)) { + // OAuth 2.0 Draft 00 style + if (isset($error['type'])) { + return $error['type']; + } + } + } + + return 'Exception'; + } + + /** + * To make debugging easier. + * + * @return string The string representation of the error + */ + public function __toString() { + $str = $this->getType() . ': '; + if ($this->code != 0) { + $str .= $this->code . ': '; + } + return $str . $this->message; + } +} + +/** + * Provides access to the Facebook Platform. This class provides + * a majority of the functionality needed, but the class is abstract + * because it is designed to be sub-classed. The subclass must + * implement the three abstract methods listed at the bottom of + * the file. + * + * @author Naitik Shah + */ +abstract class BaseFacebook +{ + /** + * Version. + */ + const VERSION = '3.1.1'; + + /** + * Default options for curl. + */ + public static $CURL_OPTS = array( + CURLOPT_CONNECTTIMEOUT => 10, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_TIMEOUT => 60, + CURLOPT_USERAGENT => 'facebook-php-3.1', + ); + + /** + * List of query parameters that get automatically dropped when rebuilding + * the current URL. + */ + protected static $DROP_QUERY_PARAMS = array( + 'code', + 'state', + 'signed_request', + ); + + /** + * Maps aliases to Facebook domains. + */ + public static $DOMAIN_MAP = array( + 'api' => 'https://api.facebook.com/', + 'api_video' => 'https://api-video.facebook.com/', + 'api_read' => 'https://api-read.facebook.com/', + 'graph' => 'https://graph.facebook.com/', + 'www' => 'https://www.facebook.com/', + ); + + /** + * The Application ID. + * + * @var string + */ + protected $appId; + + /** + * The Application API Secret. + * + * @var string + */ + protected $apiSecret; + + /** + * The ID of the Facebook user, or 0 if the user is logged out. + * + * @var integer + */ + protected $user; + + /** + * The data from the signed_request token. + */ + protected $signedRequest; + + /** + * A CSRF state variable to assist in the defense against CSRF attacks. + */ + protected $state; + + /** + * The OAuth access token received in exchange for a valid authorization + * code. null means the access token has yet to be determined. + * + * @var string + */ + protected $accessToken = null; + + /** + * Indicates if the CURL based @ syntax for file uploads is enabled. + * + * @var boolean + */ + protected $fileUploadSupport = false; + + /** + * Initialize a Facebook Application. + * + * The configuration: + * - appId: the application ID + * - secret: the application secret + * - fileUpload: (optional) boolean indicating if file uploads are enabled + * + * @param array $config The application configuration + */ + public function __construct($config) { + $this->setAppId($config['appId']); + $this->setApiSecret($config['secret']); + if (isset($config['fileUpload'])) { + $this->setFileUploadSupport($config['fileUpload']); + } + + $state = $this->getPersistentData('state'); + if (!empty($state)) { + $this->state = $this->getPersistentData('state'); + } + } + + /** + * Set the Application ID. + * + * @param string $appId The Application ID + * @return BaseFacebook + */ + public function setAppId($appId) { + $this->appId = $appId; + return $this; + } + + /** + * Get the Application ID. + * + * @return string the Application ID + */ + public function getAppId() { + return $this->appId; + } + + /** + * Set the API Secret. + * + * @param string $apiSecret The API Secret + * @return BaseFacebook + */ + public function setApiSecret($apiSecret) { + $this->apiSecret = $apiSecret; + return $this; + } + + /** + * Get the API Secret. + * + * @return string the API Secret + */ + public function getApiSecret() { + return $this->apiSecret; + } + + /** + * Set the file upload support status. + * + * @param boolean $fileUploadSupport The file upload support status. + * @return BaseFacebook + */ + public function setFileUploadSupport($fileUploadSupport) { + $this->fileUploadSupport = $fileUploadSupport; + return $this; + } + + /** + * Get the file upload support status. + * + * @return boolean true if and only if the server supports file upload. + */ + public function useFileUploadSupport() { + return $this->fileUploadSupport; + } + + /** + * Sets the access token for api calls. Use this if you get + * your access token by other means and just want the SDK + * to use it. + * + * @param string $access_token an access token. + * @return BaseFacebook + */ + public function setAccessToken($access_token) { + $this->accessToken = $access_token; + return $this; + } + + /** + * Determines the access token that should be used for API calls. + * The first time this is called, $this->accessToken is set equal + * to either a valid user access token, or it's set to the application + * access token if a valid user access token wasn't available. Subsequent + * calls return whatever the first call returned. + * + * @return string The access token + */ + public function getAccessToken() { + if ($this->accessToken !== null) { + // we've done this already and cached it. Just return. + return $this->accessToken; + } + + // first establish access token to be the application + // access token, in case we navigate to the /oauth/access_token + // endpoint, where SOME access token is required. + $this->setAccessToken($this->getApplicationAccessToken()); + if ($user_access_token = $this->getUserAccessToken()) { + $this->setAccessToken($user_access_token); + } + + return $this->accessToken; + } + + /** + * Determines and returns the user access token, first using + * the signed request if present, and then falling back on + * the authorization code if present. The intent is to + * return a valid user access token, or false if one is determined + * to not be available. + * + * @return string A valid user access token, or false if one + * could not be determined. + */ + protected function getUserAccessToken() { + // first, consider a signed request if it's supplied. + // if there is a signed request, then it alone determines + // the access token. + $signed_request = $this->getSignedRequest(); + if ($signed_request) { + // apps.facebook.com hands the access_token in the signed_request + if (array_key_exists('oauth_token', $signed_request)) { + $access_token = $signed_request['oauth_token']; + $this->setPersistentData('access_token', $access_token); + return $access_token; + } + + // the JS SDK puts a code in with the redirect_uri of '' + if (array_key_exists('code', $signed_request)) { + $code = $signed_request['code']; + $access_token = $this->getAccessTokenFromCode($code, ''); + if ($access_token) { + $this->setPersistentData('code', $code); + $this->setPersistentData('access_token', $access_token); + return $access_token; + } + } + + // signed request states there's no access token, so anything + // stored should be cleared. + $this->clearAllPersistentData(); + return false; // respect the signed request's data, even + // if there's an authorization code or something else + } + + $code = $this->getCode(); + if ($code && $code != $this->getPersistentData('code')) { + $access_token = $this->getAccessTokenFromCode($code); + if ($access_token) { + $this->setPersistentData('code', $code); + $this->setPersistentData('access_token', $access_token); + return $access_token; + } + + // code was bogus, so everything based on it should be invalidated. + $this->clearAllPersistentData(); + return false; + } + + // as a fallback, just return whatever is in the persistent + // store, knowing nothing explicit (signed request, authorization + // code, etc.) was present to shadow it (or we saw a code in $_REQUEST, + // but it's the same as what's in the persistent store) + return $this->getPersistentData('access_token'); + } + + /** + * Retrieve the signed request, either from a request parameter or, + * if not present, from a cookie. + * + * @return string the signed request, if available, or null otherwise. + */ + public function getSignedRequest() { + if (!$this->signedRequest) { + if (isset($_REQUEST['signed_request'])) { + $this->signedRequest = $this->parseSignedRequest( + $_REQUEST['signed_request']); + } else if (isset($_COOKIE[$this->getSignedRequestCookieName()])) { + $this->signedRequest = $this->parseSignedRequest( + $_COOKIE[$this->getSignedRequestCookieName()]); + } + } + return $this->signedRequest; + } + + /** + * Get the UID of the connected user, or 0 + * if the Facebook user is not connected. + * + * @return string the UID if available. + */ + public function getUser() { + if ($this->user !== null) { + // we've already determined this and cached the value. + return $this->user; + } + + return $this->user = $this->getUserFromAvailableData(); + } + + /** + * Determines the connected user by first examining any signed + * requests, then considering an authorization code, and then + * falling back to any persistent store storing the user. + * + * @return integer The id of the connected Facebook user, + * or 0 if no such user exists. + */ + protected function getUserFromAvailableData() { + // if a signed request is supplied, then it solely determines + // who the user is. + $signed_request = $this->getSignedRequest(); + if ($signed_request) { + if (array_key_exists('user_id', $signed_request)) { + $user = $signed_request['user_id']; + $this->setPersistentData('user_id', $signed_request['user_id']); + return $user; + } + + // if the signed request didn't present a user id, then invalidate + // all entries in any persistent store. + $this->clearAllPersistentData(); + return 0; + } + + $user = $this->getPersistentData('user_id', $default = 0); + $persisted_access_token = $this->getPersistentData('access_token'); + + // use access_token to fetch user id if we have a user access_token, or if + // the cached access token has changed. + $access_token = $this->getAccessToken(); + if ($access_token && + $access_token != $this->getApplicationAccessToken() && + !($user && $persisted_access_token == $access_token)) { + $user = $this->getUserFromAccessToken(); + if ($user) { + $this->setPersistentData('user_id', $user); + } else { + $this->clearAllPersistentData(); + } + } + + return $user; + } + + /** + * Get a Login URL for use with redirects. By default, full page redirect is + * assumed. If you are using the generated URL with a window.open() call in + * JavaScript, you can pass in display=popup as part of the $params. + * + * The parameters: + * - redirect_uri: the url to go to after a successful login + * - scope: comma separated list of requested extended perms + * + * @param array $params Provide custom parameters + * @return string The URL for the login flow + */ + public function getLoginUrl($params=array()) { + $this->establishCSRFTokenState(); + $currentUrl = $this->getCurrentUrl(); + + // if 'scope' is passed as an array, convert to comma separated list + $scopeParams = isset($params['scope']) ? $params['scope'] : null; + if ($scopeParams && is_array($scopeParams)) { + $params['scope'] = implode(',', $scopeParams); + } + + return $this->getUrl( + 'www', + 'dialog/oauth', + array_merge(array( + 'client_id' => $this->getAppId(), + 'redirect_uri' => $currentUrl, // possibly overwritten + 'state' => $this->state), + $params)); + } + + /** + * Get a Logout URL suitable for use with redirects. + * + * The parameters: + * - next: the url to go to after a successful logout + * + * @param array $params Provide custom parameters + * @return string The URL for the logout flow + */ + public function getLogoutUrl($params=array()) { + return $this->getUrl( + 'www', + 'logout.php', + array_merge(array( + 'next' => $this->getCurrentUrl(), + 'access_token' => $this->getAccessToken(), + ), $params) + ); + } + + /** + * Get a login status URL to fetch the status from Facebook. + * + * The parameters: + * - ok_session: the URL to go to if a session is found + * - no_session: the URL to go to if the user is not connected + * - no_user: the URL to go to if the user is not signed into facebook + * + * @param array $params Provide custom parameters + * @return string The URL for the logout flow + */ + public function getLoginStatusUrl($params=array()) { + return $this->getUrl( + 'www', + 'extern/login_status.php', + array_merge(array( + 'api_key' => $this->getAppId(), + 'no_session' => $this->getCurrentUrl(), + 'no_user' => $this->getCurrentUrl(), + 'ok_session' => $this->getCurrentUrl(), + 'session_version' => 3, + ), $params) + ); + } + + /** + * Make an API call. + * + * @return mixed The decoded response + */ + public function api(/* polymorphic */) { + $args = func_get_args(); + if (is_array($args[0])) { + return $this->_restserver($args[0]); + } else { + return call_user_func_array(array($this, '_graph'), $args); + } + } + + /** + * Constructs and returns the name of the cookie that + * potentially houses the signed request for the app user. + * The cookie is not set by the BaseFacebook class, but + * it may be set by the JavaScript SDK. + * + * @return string the name of the cookie that would house + * the signed request value. + */ + protected function getSignedRequestCookieName() { + return 'fbsr_'.$this->getAppId(); + } + + /** + * Get the authorization code from the query parameters, if it exists, + * and otherwise return false to signal no authorization code was + * discoverable. + * + * @return mixed The authorization code, or false if the authorization + * code could not be determined. + */ + protected function getCode() { + if (isset($_REQUEST['code'])) { + if ($this->state !== null && + isset($_REQUEST['state']) && + $this->state === $_REQUEST['state']) { + + // CSRF state has done its job, so clear it + $this->state = null; + $this->clearPersistentData('state'); + return $_REQUEST['code']; + } else { + self::errorLog('CSRF state token does not match one provided.'); + return false; + } + } + + return false; + } + + + + /** + * Retrieves the UID with the understanding that + * $this->accessToken has already been set and is + * seemingly legitimate. It relies on Facebook's Graph API + * to retrieve user information and then extract + * the user ID. + * + * @return integer Returns the UID of the Facebook user, or 0 + * if the Facebook user could not be determined. + */ + protected function getUserFromAccessToken() { + try { + $user_info = $this->api('/me'); + return $user_info['id']; + } catch (FacebookApiException $e) { + return 0; + } + } + + /** + * Returns the access token that should be used for logged out + * users when no authorization code is available. + * + * @return string The application access token, useful for gathering + * public information about users and applications. + */ + protected function getApplicationAccessToken() { + return $this->appId.'|'.$this->apiSecret; + } + + /** + * Lays down a CSRF state token for this process. + * + * @return void + */ + protected function establishCSRFTokenState() { + if ($this->state === null) { + $this->state = md5(uniqid(mt_rand(), true)); + $this->setPersistentData('state', $this->state); + } + } + + /** + * Retrieves an access token for the given authorization code + * (previously generated from www.facebook.com on behalf of + * a specific user). The authorization code is sent to graph.facebook.com + * and a legitimate access token is generated provided the access token + * and the user for which it was generated all match, and the user is + * either logged in to Facebook or has granted an offline access permission. + * + * @param string $code An authorization code. + * @return mixed An access token exchanged for the authorization code, or + * false if an access token could not be generated. + */ + protected function getAccessTokenFromCode($code, $redirect_uri = null) { + if (empty($code)) { + return false; + } + + if ($redirect_uri === null) { + $redirect_uri = $this->getCurrentUrl(); + } + + try { + // need to circumvent json_decode by calling _oauthRequest + // directly, since response isn't JSON format. + $access_token_response = + $this->_oauthRequest( + $this->getUrl('graph', '/oauth/access_token'), + $params = array('client_id' => $this->getAppId(), + 'client_secret' => $this->getApiSecret(), + 'redirect_uri' => $redirect_uri, + 'code' => $code)); + } catch (FacebookApiException $e) { + // most likely that user very recently revoked authorization. + // In any event, we don't have an access token, so say so. + return false; + } + + if (empty($access_token_response)) { + return false; + } + + $response_params = array(); + parse_str($access_token_response, $response_params); + if (!isset($response_params['access_token'])) { + return false; + } + + return $response_params['access_token']; + } + + /** + * Invoke the old restserver.php endpoint. + * + * @param array $params Method call object + * + * @return mixed The decoded response object + * @throws FacebookApiException + */ + protected function _restserver($params) { + // generic application level parameters + $params['api_key'] = $this->getAppId(); + $params['format'] = 'json-strings'; + + $result = json_decode($this->_oauthRequest( + $this->getApiUrl($params['method']), + $params + ), true); + + // results are returned, errors are thrown + if (is_array($result) && isset($result['error_code'])) { + throw new FacebookApiException($result); + } + + return $result; + } + + /** + * Invoke the Graph API. + * + * @param string $path The path (required) + * @param string $method The http method (default 'GET') + * @param array $params The query/post data + * + * @return mixed The decoded response object + * @throws FacebookApiException + */ + protected function _graph($path, $method = 'GET', $params = array()) { + if (is_array($method) && empty($params)) { + $params = $method; + $method = 'GET'; + } + $params['method'] = $method; // method override as we always do a POST + + $result = json_decode($this->_oauthRequest( + $this->getUrl('graph', $path), + $params + ), true); + + // results are returned, errors are thrown + if (is_array($result) && isset($result['error'])) { + $this->throwAPIException($result); + } + + return $result; + } + + /** + * Make a OAuth Request. + * + * @param string $url The path (required) + * @param array $params The query/post data + * + * @return string The decoded response object + * @throws FacebookApiException + */ + protected function _oauthRequest($url, $params) { + if (!isset($params['access_token'])) { + $params['access_token'] = $this->getAccessToken(); + } + + // json_encode all params values that are not strings + foreach ($params as $key => $value) { + if (!is_string($value)) { + $params[$key] = json_encode($value); + } + } + + return $this->makeRequest($url, $params); + } + + /** + * Makes an HTTP request. This method can be overridden by subclasses if + * developers want to do fancier things or use something other than curl to + * make the request. + * + * @param string $url The URL to make the request to + * @param array $params The parameters to use for the POST body + * @param CurlHandler $ch Initialized curl handle + * + * @return string The response text + */ + protected function makeRequest($url, $params, $ch=null) { + if (!$ch) { + $ch = curl_init(); + } + + $opts = self::$CURL_OPTS; + $opts[CURLOPT_SSL_VERIFYPEER] = false; + if ($this->useFileUploadSupport()) { + $opts[CURLOPT_POSTFIELDS] = $params; + } else { + $opts[CURLOPT_POSTFIELDS] = http_build_query($params, null, '&'); + } + $opts[CURLOPT_URL] = $url; + + // disable the 'Expect: 100-continue' behaviour. This causes CURL to wait + // for 2 seconds if the server does not support this header. + if (isset($opts[CURLOPT_HTTPHEADER])) { + $existing_headers = $opts[CURLOPT_HTTPHEADER]; + $existing_headers[] = 'Expect:'; + $opts[CURLOPT_HTTPHEADER] = $existing_headers; + } else { + $opts[CURLOPT_HTTPHEADER] = array('Expect:'); + } + + curl_setopt_array($ch, $opts); + $result = curl_exec($ch); + + if (curl_errno($ch) == 60) { // CURLE_SSL_CACERT + self::errorLog('Invalid or no certificate authority found, '. + 'using bundled information'); + curl_setopt($ch, CURLOPT_CAINFO, + dirname(__FILE__) . '/fb_ca_chain_bundle.crt'); + $result = curl_exec($ch); + } + + if ($result === false) { + $e = new FacebookApiException(array( + 'error_code' => curl_errno($ch), + 'error' => array( + 'message' => curl_error($ch), + 'type' => 'CurlException', + ), + )); + curl_close($ch); + throw $e; + } + curl_close($ch); + return $result; + } + + /** + * Parses a signed_request and validates the signature. + * + * @param string $signed_request A signed token + * @return array The payload inside it or null if the sig is wrong + */ + protected function parseSignedRequest($signed_request) { + list($encoded_sig, $payload) = explode('.', $signed_request, 2); + + // decode the data + $sig = self::base64UrlDecode($encoded_sig); + $data = json_decode(self::base64UrlDecode($payload), true); + + if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') { + self::errorLog('Unknown algorithm. Expected HMAC-SHA256'); + return null; + } + + // check sig + $expected_sig = hash_hmac('sha256', $payload, + $this->getApiSecret(), $raw = true); + if ($sig !== $expected_sig) { + self::errorLog('Bad Signed JSON signature!'); + return null; + } + + return $data; + } + + /** + * Build the URL for api given parameters. + * + * @param $method String the method name. + * @return string The URL for the given parameters + */ + protected function getApiUrl($method) { + static $READ_ONLY_CALLS = + array('admin.getallocation' => 1, + 'admin.getappproperties' => 1, + 'admin.getbannedusers' => 1, + 'admin.getlivestreamvialink' => 1, + 'admin.getmetrics' => 1, + 'admin.getrestrictioninfo' => 1, + 'application.getpublicinfo' => 1, + 'auth.getapppublickey' => 1, + 'auth.getsession' => 1, + 'auth.getsignedpublicsessiondata' => 1, + 'comments.get' => 1, + 'connect.getunconnectedfriendscount' => 1, + 'dashboard.getactivity' => 1, + 'dashboard.getcount' => 1, + 'dashboard.getglobalnews' => 1, + 'dashboard.getnews' => 1, + 'dashboard.multigetcount' => 1, + 'dashboard.multigetnews' => 1, + 'data.getcookies' => 1, + 'events.get' => 1, + 'events.getmembers' => 1, + 'fbml.getcustomtags' => 1, + 'feed.getappfriendstories' => 1, + 'feed.getregisteredtemplatebundlebyid' => 1, + 'feed.getregisteredtemplatebundles' => 1, + 'fql.multiquery' => 1, + 'fql.query' => 1, + 'friends.arefriends' => 1, + 'friends.get' => 1, + 'friends.getappusers' => 1, + 'friends.getlists' => 1, + 'friends.getmutualfriends' => 1, + 'gifts.get' => 1, + 'groups.get' => 1, + 'groups.getmembers' => 1, + 'intl.gettranslations' => 1, + 'links.get' => 1, + 'notes.get' => 1, + 'notifications.get' => 1, + 'pages.getinfo' => 1, + 'pages.isadmin' => 1, + 'pages.isappadded' => 1, + 'pages.isfan' => 1, + 'permissions.checkavailableapiaccess' => 1, + 'permissions.checkgrantedapiaccess' => 1, + 'photos.get' => 1, + 'photos.getalbums' => 1, + 'photos.gettags' => 1, + 'profile.getinfo' => 1, + 'profile.getinfooptions' => 1, + 'stream.get' => 1, + 'stream.getcomments' => 1, + 'stream.getfilters' => 1, + 'users.getinfo' => 1, + 'users.getloggedinuser' => 1, + 'users.getstandardinfo' => 1, + 'users.hasapppermission' => 1, + 'users.isappuser' => 1, + 'users.isverified' => 1, + 'video.getuploadlimits' => 1); + $name = 'api'; + if (isset($READ_ONLY_CALLS[strtolower($method)])) { + $name = 'api_read'; + } else if (strtolower($method) == 'video.upload') { + $name = 'api_video'; + } + return self::getUrl($name, 'restserver.php'); + } + + /** + * Build the URL for given domain alias, path and parameters. + * + * @param $name string The name of the domain + * @param $path string Optional path (without a leading slash) + * @param $params array Optional query parameters + * + * @return string The URL for the given parameters + */ + protected function getUrl($name, $path='', $params=array()) { + $url = self::$DOMAIN_MAP[$name]; + if ($path) { + if ($path[0] === '/') { + $path = substr($path, 1); + } + $url .= $path; + } + if ($params) { + $url .= '?' . http_build_query($params, null, '&'); + } + + return $url; + } + + /** + * Returns the Current URL, stripping it of known FB parameters that should + * not persist. + * + * @return string The current URL + */ + protected function getCurrentUrl() { + $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' + ? 'https://' + : 'http://'; + $currentUrl = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; + $parts = parse_url($currentUrl); + + $query = ''; + if (!empty($parts['query'])) { + // drop known fb params + $params = explode('&', $parts['query']); + $retained_params = array(); + foreach ($params as $param) { + if ($this->shouldRetainParam($param)) { + $retained_params[] = $param; + } + } + + if (!empty($retained_params)) { + $query = '?'.implode($retained_params, '&'); + } + } + + // use port if non default + $port = + isset($parts['port']) && + (($protocol === 'http://' && $parts['port'] !== 80) || + ($protocol === 'https://' && $parts['port'] !== 443)) + ? ':' . $parts['port'] : ''; + + // rebuild + return $protocol . $parts['host'] . $port . $parts['path'] . $query; + } + + /** + * Returns true if and only if the key or key/value pair should + * be retained as part of the query string. This amounts to + * a brute-force search of the very small list of Facebook-specific + * params that should be stripped out. + * + * @param string $param A key or key/value pair within a URL's query (e.g. + * 'foo=a', 'foo=', or 'foo'. + * + * @return boolean + */ + protected function shouldRetainParam($param) { + foreach (self::$DROP_QUERY_PARAMS as $drop_query_param) { + if (strpos($param, $drop_query_param.'=') === 0) { + return false; + } + } + + return true; + } + + /** + * Analyzes the supplied result to see if it was thrown + * because the access token is no longer valid. If that is + * the case, then the persistent store is cleared. + * + * @param $result array A record storing the error message returned + * by a failed API call. + */ + protected function throwAPIException($result) { + $e = new FacebookApiException($result); + switch ($e->getType()) { + // OAuth 2.0 Draft 00 style + case 'OAuthException': + // OAuth 2.0 Draft 10 style + case 'invalid_token': + $message = $e->getMessage(); + if ((strpos($message, 'Error validating access token') !== false) || + (strpos($message, 'Invalid OAuth access token') !== false)) { + $this->setAccessToken(null); + $this->user = 0; + $this->clearAllPersistentData(); + } + } + + throw $e; + } + + + /** + * Prints to the error log if you aren't in command line mode. + * + * @param string $msg Log message + */ + protected static function errorLog($msg) { + // disable error log if we are running in a CLI environment + // @codeCoverageIgnoreStart + if (php_sapi_name() != 'cli') { + error_log($msg); + } + // uncomment this if you want to see the errors on the page + // print 'error_log: '.$msg."\n"; + // @codeCoverageIgnoreEnd + } + + /** + * Base64 encoding that doesn't need to be urlencode()ed. + * Exactly the same as base64_encode except it uses + * - instead of + + * _ instead of / + * + * @param string $input base64UrlEncoded string + * @return string + */ + protected static function base64UrlDecode($input) { + return base64_decode(strtr($input, '-_', '+/')); + } + + /** + * Each of the following four methods should be overridden in + * a concrete subclass, as they are in the provided Facebook class. + * The Facebook class uses PHP sessions to provide a primitive + * persistent store, but another subclass--one that you implement-- + * might use a database, memcache, or an in-memory cache. + * + * @see Facebook + */ + + /** + * Stores the given ($key, $value) pair, so that future calls to + * getPersistentData($key) return $value. This call may be in another request. + * + * @param string $key + * @param array $value + * + * @return void + */ + abstract protected function setPersistentData($key, $value); + + /** + * Get the data for $key, persisted by BaseFacebook::setPersistentData() + * + * @param string $key The key of the data to retrieve + * @param boolean $default The default value to return if $key is not found + * + * @return mixed + */ + abstract protected function getPersistentData($key, $default = false); + + /** + * Clear the data with $key from the persistent storage + * + * @param string $key + * @return void + */ + abstract protected function clearPersistentData($key); + + /** + * Clear all data from the persistent storage + * + * @return void + */ + abstract protected function clearAllPersistentData(); +} diff --git a/oauth/facebook/facebook.php b/oauth/facebook/facebook.php new file mode 100644 index 0000000..91cea21 --- /dev/null +++ b/oauth/facebook/facebook.php @@ -0,0 +1,95 @@ +constructSessionVariableName($key); + $_SESSION[$session_var_name] = $value; + error_log($_SESSION[$session_var_name]); + } + + protected function getPersistentData($key, $default = false) { + if (!in_array($key, self::$kSupportedKeys)) { + self::errorLog('Unsupported key passed to getPersistentData.'); + return $default; + } + + $session_var_name = $this->constructSessionVariableName($key); + return isset($_SESSION[$session_var_name]) ? + $_SESSION[$session_var_name] : $default; + error_log($_SESSION[$session_var_name]); + } + + protected function clearPersistentData($key) { + if (!in_array($key, self::$kSupportedKeys)) { + self::errorLog('Unsupported key passed to clearPersistentData.'); + return; + } + + $session_var_name = $this->constructSessionVariableName($key); + unset($_SESSION[$session_var_name]); + } + + protected function clearAllPersistentData() { + foreach (self::$kSupportedKeys as $key) { + $this->clearPersistentData($key); + } + } + + protected function constructSessionVariableName($key) { + return implode('_', array('fb', + $this->getAppId(), + $key)); + } +} diff --git a/oauth/google.php b/oauth/google.php new file mode 100644 index 0000000..34ab509 --- /dev/null +++ b/oauth/google.php @@ -0,0 +1,133 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. +*/ +session_start(); + +error_reporting(1); + +// required functions +require_once ('../config.php'); +require_once ('../includes/functions.php'); +require_once 'Google/Client.php'; + +// Current Date & User IP +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; + + +// Database Connection +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); +if (mysqli_connect_errno()) +{ + die("Unable connect to database"); +} + +$client = new Google_Client(); +$client->setScopes(array( + "https://www.googleapis.com/auth/userinfo.profile", + "https://www.googleapis.com/auth/userinfo.email" +)); + + +if (isset($_GET['code'])) { + $client->authenticate($_GET['code']); + $_SESSION['access_token'] = $client->getAccessToken(); + $redirect = 'http://' . $_SERVER['HTTP_HOST']; + header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL)); +} + +if (isset($_SESSION['access_token']) && $_SESSION['access_token']) { + $client->setAccessToken($_SESSION['access_token']); + $access_token = json_decode($_SESSION['access_token'], 1); + $access_token = $access_token['access_token']; + $resp = file_get_contents('https://www.googleapis.com/oauth2/v1/userinfo?access_token='.$access_token); + $user = json_decode($resp, 1); + $client_email = filter_var($user['email'], FILTER_SANITIZE_EMAIL); + $client_name = filter_var($user['name'], FILTER_SANITIZE_STRING); + $client_id = filter_var($user['id']); + $client_plat = "Google"; + $client_pic = $user['picture']; + $content = $user; + $token = $client->getAccessToken(); +} else { + $authUrl = $client->createAuthUrl(); +} +if ($client->getAccessToken() && isset($_GET['url'])) { + + $_SESSION['access_token'] = $client->getAccessToken(); +} + +if (isset($client_email)) +{ +$query = mysqli_query($con,"SELECT * FROM users WHERE oauth_uid='$client_id'"); +if(mysqli_num_rows($query) > 0){ +$query = "SELECT * FROM users WHERE oauth_uid='$client_id'"; + $result = mysqli_query($con,$query); + while($row = mysqli_fetch_array($result)) { + $user_username = $row['username']; + $db_verified = $row['verified']; + } + if ($db_verified == "2") + { + die("Your account has been suspended."); + } + else + { + $_SESSION['username'] = $user_username; + $_SESSION['token'] = $token; + $_SESSION['oauth_uid'] = $client_id; + $_SESSION['pic'] = $client_pic; + + $old_user =1; + header("Location: ../"); + exit(); + } + +} else { + $new_user= 1; + #user not present. + $query = "SELECT @last_id := MAX(id) FROM users"; + $result = mysqli_query($con,$query); + while($row = mysqli_fetch_array($result)) { + $last_id = $row['@last_id := MAX(id)']; + } + if ($last_id== "" || $last_id==null) + { + $username = "User1"; + } + else + { + $last_id = $last_id+1; + $username = "User$last_id"; + } + $_SESSION['username'] = $username; + $_SESSION['token'] = $token; + $_SESSION['oauth_uid'] = $client_id; + $_SESSION['pic'] = $client_pic; + $query = "INSERT INTO users (oauth_uid,username,email_id,full_name,platform,password,verified,picture,date,ip) VALUES ('$client_id','$username','$client_email','$client_name','$client_plat','$password','1','$client_pic','$date','$ip')"; + mysqli_query($con,$query); + header("Location: ../oauth.php?new_user"); + exit(); +} + +} +else +{ +if(isset($_GET['login'])) +{ +header("Location: $authUrl"); +exit(); +} +} +?> \ No newline at end of file diff --git a/oauth/index.php b/oauth/index.php new file mode 100644 index 0000000..e69de29 diff --git a/pages.php b/pages.php new file mode 100644 index 0000000..0880639 --- /dev/null +++ b/pages.php @@ -0,0 +1,158 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ +session_start(); + +require_once('config.php'); +require_once('includes/functions.php'); + +// UTF-8 +header('Content-Type: text/html; charset=utf-8'); + +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; +$data_ip = file_get_contents('tmp/temp.tdata'); +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); + +if (mysqli_connect_errno()) { + die("Unable to connect to database"); +} +$query = "SELECT * FROM site_info"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $title = Trim($row['title']); + $des = Trim($row['des']); + $baseurl = Trim($row['baseurl']); + $keyword = Trim($row['keyword']); + $site_name = Trim($row['site_name']); + $email = Trim($row['email']); + $twit = Trim($row['twit']); + $face = Trim($row['face']); + $gplus = Trim($row['gplus']); + $ga = Trim($row['ga']); + $additional_scripts = Trim($row['additional_scripts']); +} + +// Set theme and language +$query = "SELECT * FROM interface"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $default_lang = Trim($row['lang']); + $default_theme = Trim($row['theme']); +} + +require_once("langs/$default_lang"); + +// Check if IP is banned +if ( is_banned($con, $ip) ) die($lang['banned']); // "You have been banned from ".$site_name; + +// Logout +if (isset($_GET['logout'])) { + header('Location: ' . $_SERVER['HTTP_REFERER']); + unset($_SESSION['token']); + unset($_SESSION['oauth_uid']); + unset($_SESSION['username']); + session_destroy(); +} + +// Page views +$query = "SELECT @last_id := MAX(id) FROM page_view"; + +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_id = $row['@last_id := MAX(id)']; +} + +$query = "SELECT * FROM page_view WHERE id=" . Trim($last_id); +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_date = $row['date']; +} + +if ($last_date == $date) { + if (str_contains($data_ip, $ip)) { + $query = "SELECT * FROM page_view WHERE id=" . Trim($last_id); + $result = mysqli_query($con, $query); + + while ($row = mysqli_fetch_array($result)) { + $last_tpage = Trim($row['tpage']); + } + $last_tpage = $last_tpage + 1; + + // IP already exists, update page views + $query = "UPDATE page_view SET tpage=$last_tpage WHERE id=" . Trim($last_id); + mysqli_query($con, $query); + } else { + $query = "SELECT * FROM page_view WHERE id=" . Trim($last_id); + $result = mysqli_query($con, $query); + + while ($row = mysqli_fetch_array($result)) { + $last_tpage = Trim($row['tpage']); + $last_tvisit = Trim($row['tvisit']); + } + $last_tpage = $last_tpage + 1; + $last_tvisit = $last_tvisit + 1; + + // Update both tpage and tvisit. + $query = "UPDATE page_view SET tpage=$last_tpage,tvisit=$last_tvisit WHERE id=" . Trim($last_id); + mysqli_query($con, $query); + file_put_contents('tmp/temp.tdata', $data_ip . "\r\n" . $ip); + } +} else { + // Delete the file and clear data_ip + unlink("tmp/temp.tdata"); + $data_ip = ""; + + // New date is created! + $query = "INSERT INTO page_view (date,tpage,tvisit) VALUES ('$date','1','1')"; + mysqli_query($con, $query); + + // Update IP + file_put_contents('tmp/temp.tdata', $data_ip . "\r\n" . $ip); + +} + +$query = "SELECT * FROM ads WHERE id='1'"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $text_ads = Trim($row['text_ads']); + $ads_1 = Trim($row['ads_1']); + $ads_2 = Trim($row['ads_2']); + +} +if (isset($_GET{'page'})) { + $page_name = trim($_GET['page']); + $sql = "SELECT * FROM pages where page_name='$page_name'"; + $result = mysqli_query($con, $sql); + + // Loop through each record + while ($row = mysqli_fetch_array($result)) { + // Populate and display results data in each row + $page_title = $row['page_title']; + $page_content = $row['page_content']; + $last_date = $row['last_date']; + $stats = "OK"; + $p_title = $page_title; + } +} +// Theme +require_once('theme/' . $default_theme . '/header.php'); +require_once('theme/' . $default_theme . '/pages.php'); +require_once('theme/' . $default_theme . '/footer.php'); +?> \ No newline at end of file diff --git a/paste.php b/paste.php new file mode 100644 index 0000000..0c045e4 --- /dev/null +++ b/paste.php @@ -0,0 +1,407 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ + +// PHP <5.5 compatibility +require_once('includes/password.php'); + +session_start(); + +// UTF-8 +header('Content-Type: text/html; charset=utf-8'); + +// Required functions +require_once('config.php'); +require_once('includes/geshi.php'); +require_once('includes/functions.php'); + +// Path of GeSHi object +$path = 'includes/geshi/'; + +// Path of Parsedown object +$parsedown_path = 'includes/Parsedown/Parsedown.php'; + +// GET Paste ID +if (isset($_GET['id'])) { + $paste_id = Trim(htmlspecialchars($_GET['id'])); +} elseif (isset($_POST['id'])) { + $paste_id = Trim(htmlspecialchars($_POST['id'])); +} + +// Database Connection +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); +if (mysqli_connect_errno()) { + die("Unable to connect to database"); +} + +// Get site info +$query = "SELECT * FROM site_info"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $title = Trim($row['title']); + $des = Trim($row['des']); + $baseurl = Trim($row['baseurl']); + $keyword = Trim($row['keyword']); + $site_name = Trim($row['site_name']); + $email = Trim($row['email']); + $twit = Trim($row['twit']); + $face = Trim($row['face']); + $gplus = Trim($row['gplus']); + $ga = Trim($row['ga']); + $additional_scripts = Trim($row['additional_scripts']); +} + +// Set theme and language +$query = "SELECT * FROM interface"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $default_lang = Trim($row['lang']); + $default_theme = Trim($row['theme']); +} +require_once("langs/$default_lang"); + +// Check if IP is banned +if ( is_banned($con, $ip) ) die($lang['banned']); // "You have been banned from ".$site_name; + +// Site permissions +$query = "SELECT * FROM site_permissions where id='1'"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $disableguest = Trim($row['disableguest']); + $siteprivate = Trim($row['siteprivate']); +} + +if ($_SERVER['REQUEST_METHOD'] == 'POST') { +} else { + if ($siteprivate =="on") { + $privatesite = "on"; + } +} + +// Current date & user IP +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; +$data_ip = file_get_contents('tmp/temp.tdata'); + +// Ads +$query = "SELECT * FROM ads WHERE id='1'"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $text_ads = Trim($row['text_ads']); + $ads_1 = Trim($row['ads_1']); + $ads_2 = Trim($row['ads_2']); +} + +// Logout +if (isset($_GET['logout'])) { + header('Location: ' . $_SERVER['HTTP_REFERER']); + unset($_SESSION['token']); + unset($_SESSION['oauth_uid']); + unset($_SESSION['username']); + session_destroy(); +} + +// Escape from quotes +if (get_magic_quotes_gpc()) { + function callback_stripslashes(&$val, $name) + { + if (get_magic_quotes_gpc()) + $val = stripslashes($val); + } + if (count($_GET)) + array_walk($_GET, 'callback_stripslashes'); + if (count($_POST)) + array_walk($_POST, 'callback_stripslashes'); + if (count($_COOKIE)) + array_walk($_COOKIE, 'callback_stripslashes'); +} + +// Page views +$query = "SELECT @last_id := MAX(id) FROM page_view"; + +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_id = $row['@last_id := MAX(id)']; +} + +$query = "SELECT * FROM page_view WHERE id=" . Trim($last_id); +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_date = $row['date']; +} + +if ($last_date == $date) { + if (str_contains($data_ip, $ip)) { + $query = "SELECT * FROM page_view WHERE id=" . Trim($last_id); + $result = mysqli_query($con, $query); + + while ($row = mysqli_fetch_array($result)) { + $last_tpage = Trim($row['tpage']); + } + $last_tpage = $last_tpage + 1; + + // IP exists, so update page views + $query = "UPDATE page_view SET tpage=$last_tpage WHERE id=" . Trim($last_id); + mysqli_query($con, $query); + } else { + $query = "SELECT * FROM page_view WHERE id=" . Trim($last_id); + $result = mysqli_query($con, $query); + + while ($row = mysqli_fetch_array($result)) { + $last_tpage = Trim($row['tpage']); + $last_tvisit = Trim($row['tvisit']); + } + $last_tpage = $last_tpage + 1; + $last_tvisit = $last_tvisit + 1; + + // Update both tpage and tvisit. + $query = "UPDATE page_view SET tpage=$last_tpage,tvisit=$last_tvisit WHERE id=" . Trim($last_id); + mysqli_query($con, $query); + file_put_contents('tmp/temp.tdata', $data_ip . "\r\n" . $ip); + } +} else { + // Delete the file and clear data_ip + unlink("tmp/temp.tdata"); + $data_ip = ""; + + // New date is created + $query = "INSERT INTO page_view (date,tpage,tvisit) VALUES ('$date','1','1')"; + mysqli_query($con, $query); + + // Update the IP + file_put_contents('tmp/temp.tdata', $data_ip . "\r\n" . $ip); + +} + +$query = "SELECT * FROM pastes WHERE id='$paste_id'"; +$result = mysqli_query($con, $query); +if (mysqli_num_rows($result) > 0) { + $query = "SELECT * FROM pastes WHERE id='$paste_id'"; + $result = mysqli_query($con, $query); + while ($row = mysqli_fetch_array($result)) { + $p_title = $row['title']; + $p_content = $row['content']; + $p_visible = $row['visible']; + $p_code = $row['code']; + $p_expiry = Trim($row['expiry']); + $p_password = $row['password']; + $p_member = $row['member']; + $p_date = $row['date']; + $p_encrypt = $row['encrypt']; + $p_views = $row['views']; + } + + $p_private_error = '0'; + if ($p_visible == "2") { + if (isset($_SESSION['username'])) { + if ($p_member == Trim($_SESSION['username'])) { + } else { + $notfound = $lang['privatepaste']; //" This is a private paste."; + $p_private_error = '1'; + goto Not_Valid_Paste; + } + } else { + $notfound = $lang['privatepaste']; //" This is a private paste. If you created this paste, please login to view it."; + $p_private_error = '1'; + goto Not_Valid_Paste; + } + } + if ($p_expiry == "NULL" || $p_expiry == "SELF") { + } else { + $input_time = $p_expiry; + $current_time = mktime(date("H"), date("i"), date("s"), date("n"), date("j"), date("Y")); + if ($input_time < $current_time) { + $notfound = $lang['expired']; + $p_private_error = 1; + goto Not_Valid_Paste; + } + } + if ($p_encrypt == "" || $p_encrypt == null || $p_encrypt == '0') { + } else { + $p_content = decrypt($p_content); + } + $op_content = Trim(htmlspecialchars_decode($p_content)); + + // Download the paste + if (isset($_GET['download'])) { + if ($p_password == "NONE") { + doDownload($paste_id, $p_title, $op_content, $p_code); + exit(); + } else { + if (isset($_GET['password'])) { + if (password_verify($_GET['password'],$p_password)) { + doDownload($paste_id, $p_title, $op_content, $p_code); + exit(); + } else { + $error = $lang['wrongpassword']; // 'Wrong password'; + } + } else { + $error = $lang['pwdprotected']; // 'Password protected paste'; + } + } + } + + // Raw view + if (isset($_GET['raw'])) { + if ($p_password == "NONE") { + rawView($paste_id, $p_title, $op_content, $p_code); + exit(); + } else { + if (isset($_GET['password'])) { + if (password_verify($_GET['password'],$p_password)) { + rawView($paste_id, $p_title, $op_content, $p_code); + exit(); + } else { + $error = $lang['wrongpassword']; // 'Wrong password'; + } + } else { + $error = $lang['pwdprotected']; // 'Password protected paste'; + } + } + } + + // Preprocess + $highlight = array(); + $prefix_size = strlen('!highlight!'); + if ($prefix_size) { + $lines = explode("\n", $p_content); + $p_content = ""; + foreach ($lines as $idx => $line) { + if (substr($line, 0, $prefix_size) == '!highlight!') { + $highlight[] = $idx + 1; + $line = substr($line, $prefix_size); + } + $p_content .= $line . "\n"; + } + $p_content = rtrim($p_content); + } + + // Apply syntax highlight + $p_content = htmlspecialchars_decode($p_content); + if ( $p_code == "markdown" ) { + include( $parsedown_path ); + $Parsedown = new Parsedown(); + $p_content = $Parsedown->text( $p_content ); + } else { + $geshi = new GeSHi($p_content, $p_code, $path); + $geshi->enable_classes(); + $geshi->set_header_type(GESHI_HEADER_DIV); + $geshi->set_line_style('color: #aaaaaa; width:auto;'); + $geshi->set_code_style('color: #757584;'); + if (count($highlight)) { + $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS); + $geshi->highlight_lines_extra($highlight); + $geshi->set_highlight_lines_extra_style('color:#399bff;background:rgba(38,92,255,0.14);'); + } else { + $geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 2); + } + $p_content = $geshi->parse_code(); + $style = $geshi->get_stylesheet(); + $ges_style = ''; + } + + // Embed view after GeSHI is applied so that $p_code is syntax highlighted as it should be. + if (isset($_GET['embed'])) { + if ( $p_password == "NONE" ) { + embedView( $paste_id, $p_title, $p_content, $p_code, $title, $baseurl, $ges_style, $lang ); + exit(); + } else { + if ( isset( $_GET['password'] ) ) { + if ( password_verify( $_GET['password'], $p_password ) ) { + embedView( $paste_id, $p_title, $p_content, $p_code, $title, $p_baseurl, $ges_style, $lang ); + exit(); + } else { + $error = $lang['wrongpassword']; // 'Wrong password'; + } + } else { + $error = $lang['pwdprotected']; // 'Password protected paste'; + } + } + } +} else { + header("HTTP/1.1 404 Not Found"); + $notfound = $lang['notfound']; // "Not found"; +} + +require_once('theme/' . $default_theme . '/header.php'); +if ($p_password == "NONE") { + + // No password & diplay the paste + + // Set download URL + if ($mod_rewrite == '1') { + $p_download = "download/$paste_id"; + } else { + $p_download = "paste.php?download&id=$paste_id"; + } + + // Set raw URL + if ($mod_rewrite == '1') { + $p_raw = "raw/$paste_id"; + } else { + $p_raw = "paste.php?raw&id=$paste_id"; + } + + // Set embed URL + if ( $mod_rewrite == '1' ) { + $p_embed = "embed/$paste_id"; + } else { + $p_embed = "paste.php?embed&id=$paste_id"; + } + + // Theme + require_once('theme/' . $default_theme . '/view.php'); + updateMyView($con, $paste_id); + if ($p_expiry == "SELF") { + deleteMyPaste($con, $paste_id); + } +} else { + $p_download = "paste.php?download&id=$paste_id&password=" . password_hash(isset($_POST['mypass']), PASSWORD_DEFAULT); + $p_raw = "paste.php?raw&id=$paste_id&password=" . password_hash(isset($_POST['mypass']), PASSWORD_DEFAULT); + // Check password + if (isset($_POST['mypass'])) { + if (password_verify($_POST['mypass'], $p_password)) { + // Theme + require_once('theme/' . $default_theme . '/view.php'); + updateMyView($con, $paste_id); + if ($p_expiry == "SELF") { + deleteMyPaste($con, $paste_id); + } + } else { + $error = $lang['wrongpwd']; //"Password is wrong"; + require_once('theme/' . $default_theme . '/errors.php'); + } + } else { + // Display errors + require_once('theme/' . $default_theme . '/errors.php'); + } +} + +Not_Valid_Paste: +// Private paste not valid +if ($p_private_error == '1') { + // Display errors + require_once('theme/' . $default_theme . '/header.php'); + require_once('theme/' . $default_theme . '/errors.php'); +} + +// Footer +require_once('theme/' . $default_theme . '/footer.php'); +?> diff --git a/profile.php b/profile.php new file mode 100644 index 0000000..663db09 --- /dev/null +++ b/profile.php @@ -0,0 +1,213 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ + +// PHP <5.5 compatibility +require_once('includes/password.php'); + +session_start(); + +require_once('config.php'); +require_once('includes/functions.php'); + +// UTF-8 +header('Content-Type: text/html; charset=utf-8'); + +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; +$data_ip = file_get_contents('tmp/temp.tdata'); +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); + +if (mysqli_connect_errno()) { + die("Unable to connect to database"); +} +$query = "SELECT * FROM site_info"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $title = Trim($row['title']); + $des = Trim($row['des']); + $baseurl = Trim($row['baseurl']); + $keyword = Trim($row['keyword']); + $site_name = Trim($row['site_name']); + $email = Trim($row['email']); + $twit = Trim($row['twit']); + $face = Trim($row['face']); + $gplus = Trim($row['gplus']); + $ga = Trim($row['ga']); + $additional_scripts = Trim($row['additional_scripts']); +} + +// Set theme and language +$query = "SELECT * FROM interface"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $default_lang = Trim($row['lang']); + $default_theme = Trim($row['theme']); +} +require_once("langs/$default_lang"); + +$p_title = $lang['myprofile']; //"My Profile"; + +// Check if IP is banned +if ( is_banned($con, $ip) ) die($lang['banned']); // "You have been banned from ".$site_name; + +// Site permissions +$query = "SELECT * FROM site_permissions where id='1'"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $siteprivate = Trim($row['siteprivate']); +} + +if ($_SERVER['REQUEST_METHOD'] == 'POST') { +} else { + if ($siteprivate =="on") { + $privatesite = "on"; + } +} + +// Check if already logged in +if (isset($_SESSION['token'])) { +} else { + header("Location: ./login.php"); +} + +// Logout +if (isset($_GET['logout'])) { + header('Location: ' . $_SERVER['HTTP_REFERER']); + unset($_SESSION['token']); + unset($_SESSION['oauth_uid']); + unset($_SESSION['username']); + session_destroy(); +} + + +$user_username = htmlentities(Trim($_SESSION['username'])); +$query = "SELECT * FROM users WHERE username='$user_username'"; +$result = mysqli_query($con, $query); +while ($row = mysqli_fetch_array($result)) { + $user_oauth_uid = $row['oauth_uid']; + $user_id = $row['id']; + $user_email_id = $row['email_id']; + $user_full_name = $row['full_name']; + $user_platform = Trim($row['platform']); + $user_verified = $row['verified']; + $user_date = $row['date']; + $user_ip = $row['ip']; + $user_password = $row['password']; +} +if ($user_oauth_uid == '0') { + $user_oauth_uid = "None"; +} + +if ($_SERVER['REQUEST_METHOD'] == 'POST') { + if (isset($_POST['cpassword'])) { + $user_new_full = Trim(htmlspecialchars($_POST['full'])); + $user_old_pass = $_POST['old_password']; + $user_new_cpass = password_hash($_POST['password'], PASSWORD_DEFAULT); + if (password_verify($user_old_pass, $user_password)) { + $query = "UPDATE users SET full_name='$user_new_full', password='$user_new_cpass' WHERE username='$user_username'"; + $result = mysqli_query($con, $query); + if (mysqli_errno($con)) { + $success = $lang['profileerror']; //" Unable to update the profile information "; + } else { + $success = $lang['profileupdated']; //" Your profile information is updated "; + } + } else { + $error = $lang['oldpasswrong']; // " Your old password is wrong."; + } + + } else { + $error = $lang['error']; //"Something went wrong."; + } + + +} + +// Page views +$query = "SELECT @last_id := MAX(id) FROM page_view"; + +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_id = $row['@last_id := MAX(id)']; +} + +$query = "SELECT * FROM page_view WHERE id=" . Trim($last_id); +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_date = $row['date']; +} + +if ($last_date == $date) { + if (str_contains($data_ip, $ip)) { + $query = "SELECT * FROM page_view WHERE id=" . Trim($last_id); + $result = mysqli_query($con, $query); + + while ($row = mysqli_fetch_array($result)) { + $last_tpage = Trim($row['tpage']); + } + $last_tpage = $last_tpage + 1; + + // IP already exists, update page views. + $query = "UPDATE page_view SET tpage=$last_tpage WHERE id=" . Trim($last_id); + mysqli_query($con, $query); + } else { + $query = "SELECT * FROM page_view WHERE id=" . Trim($last_id); + $result = mysqli_query($con, $query); + + while ($row = mysqli_fetch_array($result)) { + $last_tpage = Trim($row['tpage']); + $last_tvisit = Trim($row['tvisit']); + } + $last_tpage = $last_tpage + 1; + $last_tvisit = $last_tvisit + 1; + + // Update both tpage and tvisit. + $query = "UPDATE page_view SET tpage=$last_tpage,tvisit=$last_tvisit WHERE id=" . Trim($last_id); + mysqli_query($con, $query); + file_put_contents('tmp/temp.tdata', $data_ip . "\r\n" . $ip); + } +} else { + // Delete the file and clear data_ip + unlink("tmp/temp.tdata"); + $data_ip = ""; + + // New date is created + $query = "INSERT INTO page_view (date,tpage,tvisit) VALUES ('$date','1','1')"; + mysqli_query($con, $query); + + // Update the IP + file_put_contents('tmp/temp.tdata', $data_ip . "\r\n" . $ip); + +} +$total_pastes = getTotalPastes($con, $user_username); + +$query = "SELECT * FROM ads WHERE id='1'"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $text_ads = Trim($row['text_ads']); + $ads_1 = Trim($row['ads_1']); + $ads_2 = Trim($row['ads_2']); + +} +// Theme +require_once('theme/' . $default_theme . '/header.php'); +require_once('theme/' . $default_theme . '/profile.php'); +require_once('theme/' . $default_theme . '/footer.php'); +?> \ No newline at end of file diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..55e0c43 --- /dev/null +++ b/robots.txt @@ -0,0 +1,8 @@ +User-agent: * +Disallow: /admin/ +Disallow: /includes/ +Disallow: /theme/ +Disallow: /langs/ +Disallow: /tmp/ +Disallow: /oauth/ +Disallow: /mail/ \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..52c9d04 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,49 @@ + + https://pastebin.echosystem.fr//18 + 0.9 + daily + 2017-06-17 + + + https://pastebin.echosystem.fr//20 + 0.9 + daily + 2017-06-17 + + + https://pastebin.echosystem.fr//20 + 0.9 + daily + 2017-06-17 + + + https://pastebin.echosystem.fr//20 + 0.9 + daily + 2017-06-17 + + + https://pastebin.echosystem.fr//20 + 0.9 + daily + 2017-06-17 + + + https://pastebin.echosystem.fr//20 + 0.9 + daily + 2017-06-17 + + + https://pastebin.echosystem.fr//20 + 0.9 + daily + 2017-06-17 + + + https://pastebin.echosystem.fr//20 + 0.9 + daily + 2017-06-17 + + \ No newline at end of file diff --git a/theme/blue/archive.php b/theme/blue/archive.php new file mode 100644 index 0000000..03df9e9 --- /dev/null +++ b/theme/blue/archive.php @@ -0,0 +1,98 @@ + - Default theme + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ +?> + +
        + +
        + +
        + + +
        +
        +
        + +

        +
        +
        +
        + + + +
        +
        +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + '; + } else { + echo ' + + + '; + } + + } + ?> + +
        ' . ucfirst($title) . '' . $p_time . '' . strtoupper($p_code) . '
        ' . ucfirst($title) . '' . $p_time . '' . strtoupper($p_code) . '
        +
        +
        +
        + + \ No newline at end of file diff --git a/theme/blue/css/bootstrap.css b/theme/blue/css/bootstrap.css new file mode 100644 index 0000000..e1f1d25 --- /dev/null +++ b/theme/blue/css/bootstrap.css @@ -0,0 +1,6565 @@ +/*! + * Bootstrap v3.3.2 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ +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: bold; +} +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 #c0c0c0; +} +legend { + padding: 0; + border: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +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 { + *, + *:before, + *:after { + color: #000 !important; + text-shadow: none !important; + background: transparent !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^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + select { + background: #fff !important; + } + .navbar { + display: none; + } + .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 th, + .table-bordered td { + 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: normal; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\2a"; +} +.glyphicon-plus:before { + content: "\2b"; +} +.glyphicon-euro:before, +.glyphicon-eur: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-yen:before { + content: "\00a5"; +} +.glyphicon-ruble: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; +} +*:before, +*:after { + -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; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #337ab7; + text-decoration: none; +} +a:hover, +a:focus { + color: #23527c; + text-decoration: underline; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + 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; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #777; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 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:hover { + color: #286090; +} +.text-success { + color: #3c763d; +} +a.text-success:hover { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #337ab7; +} +a.bg-primary:hover { + background-color: #286090; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + 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; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +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[title], +abbr[data-original-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 p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777; +} +blockquote footer:before, +blockquote small: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 footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +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: bold; + -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-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: 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-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: 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-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: 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-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: 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 > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 22px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-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 > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + 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 > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + 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: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; +} +input[type="file"] { + display: block; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -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[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eee; + opacity: 1; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"], + input[type="time"], + input[type="datetime-local"], + input[type="month"] { + line-height: 34px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm, + .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"] { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg, + .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"] { + line-height: 46px; + } +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 4px \9; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + 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; +} +textarea.input-sm, +select[multiple].input-sm { + height: auto; +} +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.form-group-sm .form-control { + height: 30px; + line-height: 30px; +} +textarea.form-group-sm .form-control, +select[multiple].form-group-sm .form-control { + height: auto; +} +.form-group-sm .form-control-static { + height: 30px; + padding: 5px 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; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.form-group-lg .form-control { + height: 46px; + line-height: 46px; +} +textarea.form-group-lg .form-control, +select[multiple].form-group-lg .form-control { + height: auto; +} +.form-group-lg .form-control-static { + height: 46px; + padding: 10px 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; +} +.input-lg + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.input-sm + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-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 .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-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 .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-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 .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + 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: 14.333333px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + } +} +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + 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:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + 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 { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; +} +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; +} +.btn-default:hover, +.btn-default:focus, +.btn-default.focus, +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #fff; + border-color: #ccc; +} +.btn-default .badge { + color: #fff; + background-color: #333; +} +.btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary.focus, +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary .badge { + color: #337ab7; + background-color: #fff; +} +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:hover, +.btn-success:focus, +.btn-success.focus, +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #fff; +} +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:hover, +.btn-info:focus, +.btn-info.focus, +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning.focus, +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger.focus, +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} +.btn-link { + font-weight: normal; + 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:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #23527c; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #777; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; + visibility: hidden; +} +.collapse.in { + display: block; + visibility: visible; +} +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 solid; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + 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: normal; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + 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 solid; +} +.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 > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-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-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-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="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + 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-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; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-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:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-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:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + margin-left: -1px; +} +.nav { + 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:hover, +.nav > li > a:focus { + text-decoration: none; +} +.nav > li.disabled > a { + color: #777; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + 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:hover, +.nav-tabs > li.active > a:focus { + 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:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #fff; + background-color: #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:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.tab-content > .tab-pane { + display: none; + visibility: hidden; +} +.tab-content > .active { + display: block; + visibility: visible; +} +.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; + visibility: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} +.navbar-brand:hover, +.navbar-brand:focus { + 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 > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} +.navbar-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 .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + 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:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777; +} +.navbar-default .navbar-nav > li > a { + color: #777; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #ddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #ddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + 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:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #777; +} +.navbar-default .navbar-link:hover { + color: #333; +} +.navbar-default .btn-link { + color: #777; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #333; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #9d9d9d; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + 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:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + 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:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #9d9d9d; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.navbar-inverse .btn-link { + color: #9d9d9d; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #fff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + 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:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + color: #23527c; + background-color: #eee; + border-color: #ddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + 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; +} +.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; +} +.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:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777; + cursor: not-allowed; + background-color: #fff; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + 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]:hover, +.label-default[href]:focus { + background-color: #5e5e5e; +} +.label-primary { + background-color: #337ab7; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #286090; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #777; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.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: 30px 15px; + 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 { + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding: 48px 0; + } + .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 > img, +.thumbnail a > img { + margin-right: auto; + margin-left: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + 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: bold; +} +.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-striped .progress-bar, +.progress-bar-striped { + 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.active .progress-bar, +.progress-bar.active { + -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-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + 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 { + color: #555; +} +a.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +a.list-group-item:focus { + color: #555; + text-decoration: none; + background-color: #f5f5f5; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + color: #777; + cursor: not-allowed; + background-color: #eee; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #c7ddef; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +a.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +a.list-group-item-success.active:hover, +a.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +a.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +a.list-group-item-info.active:hover, +a.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +a.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +a.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-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 > a, +.panel-title > small, +.panel-title > .small, +.panel-title > small > a, +.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-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-right: 15px; + padding-left: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead: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-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + 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 > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + 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 iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} +.embed-responsive.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive.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: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; +} +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; +} +.modal-open { + overflow: hidden; +} +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + 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: absolute; + top: 0; + right: 0; + left: 0; + background-color: #000; +} +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; +} +.modal-header { + min-height: 16.42857143px; + 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-weight: normal; + line-height: 1.4; + visibility: visible; + filter: alpha(opacity=0); + opacity: 0; +} +.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; + text-decoration: none; + background-color: #000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-left .tooltip-arrow { + 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-weight: normal; + line-height: 1.42857143; + text-align: left; + 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); +} +.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 > img, +.carousel-inner > .item > a > 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: 1000; + perspective: 1000; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + left: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + left: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + 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); + 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:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: 0; + opacity: .9; +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + 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-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -15px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -15px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-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; + visibility: hidden !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (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; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.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; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.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; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.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; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.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.css.map */ diff --git a/theme/blue/css/bootstrap.min.css b/theme/blue/css/bootstrap.min.css new file mode 100644 index 0000000..7876874 --- /dev/null +++ b/theme/blue/css/bootstrap.min.css @@ -0,0 +1,5 @@ +/*! + * Bootstrap v3.3.2 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */hr,img{border:0}body,figure{margin:0}.btn-group>.btn-group,.btn-toolbar .btn-group,.btn-toolbar .input-group,.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,.dropdown-menu{float:left}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}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}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{color:#000;background:#ff0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre,textarea{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}.glyphicon,address{font-style:normal}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[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-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}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{blockquote,img,pre,tr{page-break-inside:avoid}*,: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}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.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}}.dropdown-menu,.modal-content{-webkit-background-clip:padding-box}.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.dropdown-toggle.btn-danger,.open>.dropdown-toggle.btn-default,.open>.dropdown-toggle.btn-info,.open>.dropdown-toggle.btn-primary,.open>.dropdown-toggle.btn-warning{background-image:none}.img-thumbnail,body{background-color:#fff}@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-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-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-yen:before{content:"\00a5"}.glyphicon-ruble: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"}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333}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:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.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;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-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}.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}dt,kbd kbd,label{font-weight:700}address,blockquote .small,blockquote footer,blockquote small,dd,dt,pre{line-height:1.42857143}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.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:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}dl,ol,ul{margin-top:0}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}address,dl{margin-bottom:20px}ol,ul{margin-bottom:10px}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}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}.container{width:750px}}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 .small,blockquote footer,blockquote small{display:block;font-size:80%;color:#777}legend,pre{display:block;color:#333}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}code,kbd{padding:2px 4px;font-size:90%}caption,th{text-align:left}.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'}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{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%;-webkit-box-shadow:none;box-shadow:none}pre{padding:9.5px;margin:0 0 10px;font-size:13px;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.container,.container-fluid{margin-right:auto;margin-left:auto}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0}.container,.container-fluid{padding-right:15px;padding-left:15px}.pre-scrollable{overflow-y:scroll}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.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-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}}caption{padding-top:8px;padding-bottom:8px;color:#777}.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:22px;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,.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,.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 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-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,legend{padding:0;border:0}fieldset{min-width:0;margin:0}legend{width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}.form-control,output{font-size:14px;line-height:1.42857143;color:#555;display:block}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:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px}.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;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-group-sm .form-control,.input-sm{font-size:12px;border-radius:3px;padding:5px 10px}.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}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.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}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=time],input[type=datetime-local],input[type=month]{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{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}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,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}.form-control-static{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;line-height:1.5}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;line-height:1.5}.form-group-lg .form-control,.input-lg{border-radius:6px;padding:10px 16px;font-size:18px}select.form-group-sm .form-control{height:30px;line-height:30px}select[multiple].form-group-sm .form-control,textarea.form-group-sm .form-control{height:auto}.form-group-sm .form-control-static{height:30px;padding:5px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;line-height:1.3333333}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;line-height:1.3333333}select.form-group-lg .form-control{height:46px;line-height:46px}select[multiple].form-group-lg .form-control,textarea.form-group-lg .form-control{height:auto}.form-group-lg .form-control-static{height:46px;padding:10px 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}.collapsing,.dropdown,.dropup{position:relative}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.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-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.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-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.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-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-control-static,.form-inline .form-group{display:inline-block}.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.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 .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 .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.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}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px}.form-horizontal .form-group-sm .control-label{padding-top:6px}}.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;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{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{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.active,.btn-default.focus,.btn-default:active,.btn-default:focus,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,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.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,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.active,.btn-success.focus,.btn-success:active,.btn-success:focus,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,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.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,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.active,.btn-warning.focus,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,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.active,.btn-danger.focus,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,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;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{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 solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;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-right,.dropdown-menu.pull-right{right:0;left:auto}.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.42857143;white-space:nowrap}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{clear:both;font-weight:400;color:#333}.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;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{right:auto;left:0}.dropdown-header{font-size:12px;color:#777}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.nav-justified>.dropdown .dropdown-menu,.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.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,.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.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 .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{margin-left:5px}.btn .caret,.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: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-lg .caret{border-width:5px 5px 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}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group,.input-group-btn>.btn+.btn{margin-left:-1px}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;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-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}.nav>li,.nav>li>a{display:block;position:relative}.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:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none}.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;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{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0;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-justified>li,.nav-stacked>li{float:none}.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+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li>a{margin-bottom:5px;text-align:center}.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-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.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;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.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}.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{border-radius:4px}.navbar-header{float:left}.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;visibility: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}}.embed-responsive,.modal,.modal-open,.progress{overflow:hidden}@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}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.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;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@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-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}.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;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}.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}}.progress-bar-striped,.progress-striped .progress-bar,.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)}@media (min-width:768px){.navbar-toggle{display:none}.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;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.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 .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}.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}}.breadcrumb>li,.pagination{display:inline-block}.btn .badge,.btn .label{top:-1px;position:relative}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}.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-radius:4px 4px 0 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}.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-nav>li>a,.navbar-default .navbar-text{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-nav>li>a,.navbar-inverse .navbar-text{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+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{padding-left:0;margin:20px 0;border-radius:4px}.pager li,.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}.badge,.label{font-weight:700;line-height:1;white-space:nowrap;vertical-align:baseline;text-align:center}.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{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:2;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}.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}.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>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}a.badge:focus,a.badge:hover,a.label:focus,a.label:hover{color:#fff;cursor:pointer;text-decoration:none}.label{display:inline;padding:.2em .6em .3em;font-size:75%;color:#fff;border-radius:.25em}.label:empty{display:none}.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;color:#fff;background-color:#777;border-radius:10px}.badge:empty{display:none}.media-object,.thumbnail{display:block}.btn-xs .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.jumbotron,.jumbotron .h1,.jumbotron h1{color:inherit}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;background-color:#eee}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.alert,.thumbnail{margin-bottom:20px}.alert .alert-link,.close{font-weight:700}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{padding:4px;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;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.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;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: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: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-striped .progress-bar-info,.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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{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: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-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{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}.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{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.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{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.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{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.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{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.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{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.close{line-height:1}.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-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.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-title{margin-top:0;font-size:16px}.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 .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.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-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>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,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom: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}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width: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-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,.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-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,.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-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+.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}.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.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.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;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.popover,.tooltip{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400}.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{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;-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;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:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;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}}.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.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;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px}.tooltip.top-right .tooltip-arrow{left:5px}.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,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{border-width:0 5px 5px;border-bottom-color:#000;top:0}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px}.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-size:14px;line-height:1.42857143;text-align:left;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)}.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}.carousel,.carousel-inner{position:relative}.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.left>.arrow:after,.popover.right>.arrow:after{bottom:-10px;content:" "}.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{left:1px;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;border-right-width:0;border-left-color:#fff}.carousel-inner{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}@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:1000;perspective:1000}.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);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}.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;margin-top:-10px;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-hide{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:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.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,.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,.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}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;background-color:transparent;border:0}.hidden{visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.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}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.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}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!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}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}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}.hidden-print{display:none!important}} \ No newline at end of file diff --git a/theme/blue/css/index.php b/theme/blue/css/index.php new file mode 100644 index 0000000..e69de29 diff --git a/theme/blue/css/paste.css b/theme/blue/css/paste.css new file mode 100644 index 0000000..5940f42 --- /dev/null +++ b/theme/blue/css/paste.css @@ -0,0 +1,24 @@ +/* Fonts */ + /* Open Sans */ + @import url(//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,600,700,800,300); + +/* Bootstrap Main CSS File (unedited) */ +@import url('bootstrap.min.css'); + +/* Theme Style */ +@import url('style.min.css'); + +/* Responsive Style */ +@import url('responsive.css'); + +/* Font Awesome */ +@import url('plugins/font-awesome.min.css'); + +/* Data Tables */ +@import url('plugins/datatables.min.css'); + +/* Bootstrap Checkbox */ +@import url('plugins/bootstrap-checkbox.min.css'); + +/* Bootstrap Select */ +@import url('plugins/bootstrap-select.min.css'); diff --git a/theme/blue/css/plugins/bootstrap-checkbox.css b/theme/blue/css/plugins/bootstrap-checkbox.css new file mode 100644 index 0000000..37fc028 --- /dev/null +++ b/theme/blue/css/plugins/bootstrap-checkbox.css @@ -0,0 +1,112 @@ +.checkbox { + padding-left: 20px; } + .checkbox label { + display: inline-block; + position: relative; + padding-left: 5px; } + .checkbox label::before { + content: ""; + display: inline-block; + position: absolute; + width: 18px; + height: 18px; + left: 0; + margin-left: -20px; + margin-right: 20px; + border: 1px solid #CCCCCC; + border-radius: 3px; + background-color: #fff; + -webkit-transition: border 0.15s ease-in-out, color 0.15s ease-in-out; + -o-transition: border 0.15s ease-in-out, color 0.15s ease-in-out; + transition: border 0.15s ease-in-out, color 0.15s ease-in-out; } + .checkbox label::after { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + left: 0; + top: 0; + margin-left: -20px; + padding-left: 3px; + padding-top: 2px; + font-size: 12px; + color: #555555; } + .checkbox input[type="checkbox"] { + opacity: 0; } + .checkbox input[type="checkbox"]:focus + label::before { + outline: thin dotted; + outline: 0px auto -webkit-focus-ring-color; + outline-offset: -2px;} + .checkbox input[type="checkbox"]:checked + label::after { + font-family: 'FontAwesome'; + line-height: 15px; + content: "\f00c";} + .checkbox input[type="checkbox"]:disabled + label { + opacity: 0.65; } + .checkbox input[type="checkbox"]:disabled + label::before { + background-color: #eeeeee; + cursor: not-allowed; } + .checkbox.checkbox-circle label::before { + border-radius: 50%; } + .checkbox.checkbox-inline { + margin-top: 0; } + + +.radio { + padding-left: 20px; } + .radio label { + display: inline-block; + position: relative; + padding-left: 5px; } + .radio label::before { + content: ""; + display: inline-block; + position: absolute; + width: 18px; + height: 18px; + left: 0; + margin-left: -20px; + border: 3px solid #cccccc; + border-radius: 50%; + background-color: #fff; + -webkit-transition: border 0.15s ease-in-out; + -o-transition: border 0.15s ease-in-out; + transition: border 0.15s ease-in-out; } + .radio label::after { + display: inline-block; + position: absolute; + content: " "; + width: 8px; + height: 8px; + left: 5px; + top: 5px; + margin-left: -20px; + border-radius: 50%; + background-color: #555555; + -webkit-transform: scale(0, 0); + -ms-transform: scale(0, 0); + -o-transform: scale(0, 0); + transform: scale(0, 0); + -webkit-transition: -webkit-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); + -moz-transition: -moz-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); + -o-transition: -o-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); + transition: transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); } + .radio input[type="radio"] { + opacity: 0; } + .radio input[type="radio"]:focus + label::before { + outline: thin dotted; + outline: 0px auto -webkit-focus-ring-color; + outline-offset: -2px; } + .radio input[type="radio"]:checked + label::after { + -webkit-transform: scale(1, 1); + -ms-transform: scale(1, 1); + -o-transform: scale(1, 1); + transform: scale(1, 1); + transition: all 0.4s ease; } + .radio input[type="radio"]:disabled + label { + opacity: 0.65; } + .radio input[type="radio"]:disabled + label::before { + cursor: not-allowed; } + .radio.radio-inline { + margin-top: 0; } + diff --git a/theme/blue/css/plugins/bootstrap-checkbox.min.css b/theme/blue/css/plugins/bootstrap-checkbox.min.css new file mode 100644 index 0000000..0df48a0 --- /dev/null +++ b/theme/blue/css/plugins/bootstrap-checkbox.min.css @@ -0,0 +1 @@ +.checkbox.checkbox-inline,.radio.radio-inline{margin-top:0}.checkbox{padding-left:20px}.checkbox label{display:inline-block;position:relative;padding-left:5px}.checkbox label::after,.checkbox label::before{position:absolute;margin-left:-20px;display:inline-block;left:0}.checkbox label::before{content:"";width:18px;height:18px;margin-right:20px;border:1px solid #CCC;border-radius:3px;background-color:#fff;-webkit-transition:border .15s ease-in-out,color .15s ease-in-out;-o-transition:border .15s ease-in-out,color .15s ease-in-out;transition:border .15s ease-in-out,color .15s ease-in-out}.checkbox label::after{width:16px;height:16px;top:0;padding-left:3px;padding-top:2px;font-size:12px;color:#555}.checkbox input[type=checkbox]{opacity:0}.checkbox input[type=checkbox]:focus+label::before{outline:dotted thin;outline:-webkit-focus-ring-color auto 0;outline-offset:-2px}.checkbox input[type=checkbox]:checked+label::after{font-family:FontAwesome;line-height:15px;content:"\f00c"}.checkbox input[type=checkbox]:disabled+label{opacity:.65}.checkbox input[type=checkbox]:disabled+label::before{background-color:#eee;cursor:not-allowed}.checkbox.checkbox-circle label::before{border-radius:50%}.radio{padding-left:20px}.radio label{display:inline-block;position:relative;padding-left:5px}.radio label::after,.radio label::before{display:inline-block;position:absolute;margin-left:-20px}.radio label::before{content:"";width:18px;height:18px;left:0;border:3px solid #ccc;border-radius:50%;background-color:#fff;-webkit-transition:border .15s ease-in-out;-o-transition:border .15s ease-in-out;transition:border .15s ease-in-out}.radio label::after{content:" ";width:8px;height:8px;left:5px;top:5px;border-radius:50%;background-color:#555;-webkit-transform:scale(0,0);-ms-transform:scale(0,0);-o-transform:scale(0,0);transform:scale(0,0);-webkit-transition:-webkit-transform .1s cubic-bezier(.8,-.33,.2,1.33);-moz-transition:-moz-transform .1s cubic-bezier(.8,-.33,.2,1.33);-o-transition:-o-transform .1s cubic-bezier(.8,-.33,.2,1.33);transition:transform .1s cubic-bezier(.8,-.33,.2,1.33)}.radio input[type=radio]{opacity:0}.radio input[type=radio]:focus+label::before{outline:dotted thin;outline:-webkit-focus-ring-color auto 0;outline-offset:-2px}.radio input[type=radio]:checked+label::after{-webkit-transform:scale(1,1);-ms-transform:scale(1,1);-o-transform:scale(1,1);transform:scale(1,1);transition:all .4s ease}.radio input[type=radio]:disabled+label{opacity:.65}.radio input[type=radio]:disabled+label::before{cursor:not-allowed} \ No newline at end of file diff --git a/theme/blue/css/plugins/bootstrap-select.css b/theme/blue/css/plugins/bootstrap-select.css new file mode 100644 index 0000000..7f66967 --- /dev/null +++ b/theme/blue/css/plugins/bootstrap-select.css @@ -0,0 +1,264 @@ +/*! + * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) + * + * Copyright 2013-2014 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ + + +.bootstrap-select { + /*width: 220px\9; IE8 and below*/ + width: 220px \0; + /*IE9 and below*/ +} +.bootstrap-select > .btn { + width: 100%; + padding-right: 25px; +} +.error .bootstrap-select .btn { + border: 1px solid #b94a48; +} +.control-group.error .bootstrap-select .dropdown-toggle { + border-color: #b94a48; +} +.bootstrap-select.fit-width { + width: auto !important; +} +.bootstrap-select:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn) { + width: 220px; +} +.bootstrap-select .btn:focus { + outline: thin dotted #333333 !important; + outline: 0px auto -webkit-focus-ring-color !important; + outline-offset: 0px; +} +.bootstrap-select.form-control { + margin-bottom: 0; + padding: 0; + border: none; +} +.bootstrap-select.form-control:not([class*="col-"]) { + width: 100%; +} +.bootstrap-select.btn-group:not(.input-group-btn), +.bootstrap-select.btn-group[class*="col-"] { + float: none; + display: inline-block; + margin-left: 0; +} +.bootstrap-select.btn-group.dropdown-menu-right, +.bootstrap-select.btn-group[class*="col-"].dropdown-menu-right, +.row-fluid .bootstrap-select.btn-group[class*="col-"].dropdown-menu-right { + float: right; +} +.form-search .bootstrap-select.btn-group, +.form-inline .bootstrap-select.btn-group, +.form-horizontal .bootstrap-select.btn-group, +.form-group .bootstrap-select.btn-group { + margin-bottom: 0; +} +.form-group-lg .bootstrap-select.btn-group.form-control, +.form-group-sm .bootstrap-select.btn-group.form-control { + padding: 0; +} +.form-inline .bootstrap-select.btn-group .form-control { + width: 100%; +} +.input-append .bootstrap-select.btn-group { + margin-left: -1px; +} +.input-prepend .bootstrap-select.btn-group { + margin-right: -1px; +} +.bootstrap-select.btn-group > .disabled { + cursor: not-allowed; +} +.bootstrap-select.btn-group > .disabled:focus { + outline: none !important; +} +.bootstrap-select.btn-group .btn .filter-option { + display: inline-block; + overflow: hidden; + width: 100%; + text-align: left; +} +.bootstrap-select.btn-group .btn .caret { + position: absolute; + top: 50%; + right: 12px; + margin-top: -2px; + vertical-align: middle; +} +.bootstrap-select.btn-group[class*="col-"] .btn { + width: 100%; +} + +.bootstrap-select .dropdown-menu small{ + color: inherit; +} +.bootstrap-select.btn-group .dropdown-menu { + min-width: 100%; + z-index: 1035; + box-shadow: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.bootstrap-select.btn-group .dropdown-menu.inner { + position: static; + border: 0; + padding: 0; + margin: 0; + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; +} +.bootstrap-select.btn-group .dropdown-menu li { + position: relative; +} +.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:hover small, +.bootstrap-select.btn-group .dropdown-menu li:not(.disabled) a:focus small, +.bootstrap-select.btn-group .dropdown-menu li.active:not(.disabled) a small { +} +.bootstrap-select.btn-group .dropdown-menu li.disabled a { + cursor: not-allowed; +} +.bootstrap-select.btn-group .dropdown-menu li a { + cursor: pointer; +} +.bootstrap-select.btn-group .dropdown-menu li a.opt { + position: relative; + padding-left: 2.25em; +} +.bootstrap-select.btn-group .dropdown-menu li a span.check-mark { + display: none; +} +.bootstrap-select.btn-group .dropdown-menu li a span.text { + display: inline-block; +} +.bootstrap-select.btn-group .dropdown-menu li small { + padding-left: 0.5em; +} +.bootstrap-select.btn-group .dropdown-menu .notify { + position: absolute; + bottom: 5px; + width: 96%; + margin: 0 2%; + min-height: 26px; + padding: 3px 5px; + background: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + pointer-events: none; + opacity: 0.9; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.bootstrap-select.btn-group .no-results { + padding: 3px; + background: #f5f5f5; + margin: 0 5px; +} +.bootstrap-select.btn-group.fit-width .btn .filter-option { + position: static; +} +.bootstrap-select.btn-group.fit-width .btn .caret { + position: static; + top: auto; + margin-top: -1px; +} +.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark { + position: absolute; + display: inline-block; + right: 15px; + margin-top: 5px; +} +.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text { + margin-right: 34px; +} +.bootstrap-select.show-menu-arrow.open > .btn { + z-index: 1035 + 1; +} +.bootstrap-select.show-menu-arrow .dropdown-toggle:before { + content: ''; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom-width: 7px; + border-bottom-style: solid; + border-bottom-color: #cccccc; + border-bottom-color: rgba(204, 204, 204, 0.2); + position: absolute; + bottom: -4px; + left: 9px; + display: none; +} +.bootstrap-select.show-menu-arrow .dropdown-toggle:after { + content: ''; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid white; + position: absolute; + bottom: -4px; + left: 10px; + display: none; +} +.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before { + bottom: auto; + top: -3px; + border-bottom: 0; + border-top-width: 7px; + border-top-style: solid; + border-top-color: #cccccc; + border-top-color: rgba(204, 204, 204, 0.2); +} +.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after { + bottom: auto; + top: -3px; + border-top: 6px solid white; + border-bottom: 0; +} +.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before { + right: 12px; + left: auto; +} +.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after { + right: 13px; + left: auto; +} +.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:before, +.bootstrap-select.show-menu-arrow.open > .dropdown-toggle:after { + display: block; +} +.bs-searchbox, +.bs-actionsbox { + padding: 4px 8px; +} +.bs-actionsbox { + float: left; + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.bs-actionsbox .btn-group button { + width: 50%; +} +.bs-searchbox + .bs-actionsbox { + padding: 0 8px 4px; +} +.bs-searchbox input.form-control { + margin-bottom: 0; + width: 100%; +} +.mobile-device { + position: absolute; + top: 0; + left: 0; + display: block !important; + width: 100%; + height: 100% !important; + opacity: 0; +} +/*# sourceMappingURL=bootstrap-select.css.map */ \ No newline at end of file diff --git a/theme/blue/css/plugins/bootstrap-select.min.css b/theme/blue/css/plugins/bootstrap-select.min.css new file mode 100644 index 0000000..bdb9f9e --- /dev/null +++ b/theme/blue/css/plugins/bootstrap-select.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) + * + * Copyright 2013-2014 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */.bootstrap-select.btn-group .dropdown-menu li.disabled a,.bootstrap-select.btn-group>.disabled{cursor:not-allowed}.bootstrap-select{width:220px\9}.bootstrap-select>.btn{width:100%;padding-right:25px}.error .bootstrap-select .btn{border:1px solid #b94a48}.control-group.error .bootstrap-select .dropdown-toggle{border-color:#b94a48}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select.btn-group[class*=col-] .btn,.bootstrap-select.form-control:not([class*=col-]),.form-inline .bootstrap-select.btn-group .form-control{width:100%}.bootstrap-select .btn:focus{outline:#333 dotted thin!important;outline:-webkit-focus-ring-color auto 0!important;outline-offset:0}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none}.bootstrap-select.btn-group:not(.input-group-btn),.bootstrap-select.btn-group[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.btn-group.dropdown-menu-right,.bootstrap-select.btn-group[class*=col-].dropdown-menu-right,.row-fluid .bootstrap-select.btn-group[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select.btn-group,.form-horizontal .bootstrap-select.btn-group,.form-inline .bootstrap-select.btn-group,.form-search .bootstrap-select.btn-group{margin-bottom:0}.form-group-lg .bootstrap-select.btn-group.form-control,.form-group-sm .bootstrap-select.btn-group.form-control{padding:0}.input-append .bootstrap-select.btn-group{margin-left:-1px}.input-prepend .bootstrap-select.btn-group{margin-right:-1px}.bootstrap-select.btn-group>.disabled:focus{outline:0!important}.bootstrap-select.btn-group .btn .filter-option{display:inline-block;overflow:hidden;width:100%;text-align:left}.bootstrap-select.btn-group .btn .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select .dropdown-menu small{color:inherit}.bootstrap-select.btn-group .dropdown-menu{min-width:100%;z-index:1035;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .dropdown-menu.inner{position:static;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select.btn-group .dropdown-menu li{position:relative}.bootstrap-select.btn-group .dropdown-menu li a{cursor:pointer}.bootstrap-select.btn-group .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select.btn-group .dropdown-menu li a span.check-mark{display:none}.bootstrap-select.btn-group .dropdown-menu li a span.text{display:inline-block}.bootstrap-select.btn-group .dropdown-menu li small{padding-left:.5em}.bootstrap-select.btn-group .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select.btn-group .no-results{padding:3px;background:#f5f5f5;margin:0 5px}.bootstrap-select.btn-group.fit-width .btn .filter-option{position:static}.bootstrap-select.btn-group.fit-width .btn .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.btn-group.show-tick .dropdown-menu li.selected a span.check-mark{position:absolute;display:inline-block;right:15px;margin-top:5px}.bootstrap-select.btn-group.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select.show-menu-arrow.open>.btn{z-index:1035 + 1}.bootstrap-select.show-menu-arrow .dropdown-toggle:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom-width:7px;border-bottom-style:solid;border-bottom-color:#ccc;border-bottom-color:rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:before{bottom:auto;top:-3px;border-bottom:0;border-top-width:7px;border-top-style:solid;border-top-color:#ccc;border-top-color:rgba(204,204,204,.2)}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle:after{bottom:auto;top:-3px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle:before{display:block}.bs-actionsbox,.bs-searchbox{padding:4px 8px}.bs-actionsbox{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group button{width:50%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox input.form-control{margin-bottom:0;width:100%}.mobile-device{position:absolute;top:0;left:0;display:block!important;width:100%;height:100%!important;opacity:0} \ No newline at end of file diff --git a/theme/blue/css/plugins/datatables.css b/theme/blue/css/plugins/datatables.css new file mode 100644 index 0000000..cafce66 --- /dev/null +++ b/theme/blue/css/plugins/datatables.css @@ -0,0 +1,466 @@ +/* + * Table styles + */ +table.dataTable { + width: 100%; + margin: 0 auto; + clear: both; + border-collapse: separate; + border-spacing: 0; + /* + * Header and footer styles + */ + /* + * Body styles + */ +} +table.dataTable thead th, +table.dataTable tfoot th { + font-weight: bold; + text-transform: uppercase; + font-size: 12px; +} +table.dataTable thead th, +table.dataTable thead td { + padding: 16px 18px; + border-bottom: 1px solid #ccc; +} +table.dataTable thead th:active, +table.dataTable thead td:active { + outline: none; +} +table.dataTable tfoot th, +table.dataTable tfoot td { + padding: 16px 18px 20px 18px; + border-top: 1px solid #ccc; +} +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting { + cursor: pointer; + *cursor: hand; +} +table.dataTable thead .sorting { + background: url("../../../img/datatables/sort_both.png") no-repeat center right; +} +table.dataTable thead .sorting_asc { + background: url("../../../img/datatables/sort_asc.png") no-repeat center right; +} +table.dataTable thead .sorting_desc { + background: url("../../../img/datatables/sort_desc.png") no-repeat center right; +} +table.dataTable thead .sorting_asc_disabled { + background: url("../../../img/datatables/sort_asc_disabled.png") no-repeat center right; +} +table.dataTable thead .sorting_desc_disabled { + background: url("../../../img/datatables/sort_desc_disabled.png") no-repeat center right; +} +table.dataTable tbody tr { + background-color: white; +} +table.dataTable tbody tr.selected { + background-color: #b0bed9; +} +table.dataTable tbody th, +table.dataTable tbody td { + padding: 14px 10px; +} +table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td { + border-top: 1px solid #dddddd; +} +table.dataTable.row-border tbody tr:first-child th, +table.dataTable.row-border tbody tr:first-child td, table.dataTable.display tbody tr:first-child th, +table.dataTable.display tbody tr:first-child td { + border-top: none; +} +table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td { + border-top: 1px solid #dddddd; + border-right: 1px solid #dddddd; +} +table.dataTable.cell-border tbody tr th:first-child, +table.dataTable.cell-border tbody tr td:first-child { + border-left: 1px solid #dddddd; +} +table.dataTable.cell-border tbody tr:first-child th, +table.dataTable.cell-border tbody tr:first-child td { + border-top: none; +} +table.dataTable.stripe tbody tr.odd, table.dataTable.display tbody tr.odd { + background-color: #f9f9f9; +} +table.dataTable.stripe tbody tr.odd.selected, table.dataTable.display tbody tr.odd.selected { + background-color: #abb9d3; +} +table.dataTable.hover tbody tr:hover, +table.dataTable.hover tbody tr.odd:hover, +table.dataTable.hover tbody tr.even:hover, table.dataTable.display tbody tr:hover, +table.dataTable.display tbody tr.odd:hover, +table.dataTable.display tbody tr.even:hover { + background-color: whitesmoke; +} +table.dataTable.hover tbody tr:hover.selected, +table.dataTable.hover tbody tr.odd:hover.selected, +table.dataTable.hover tbody tr.even:hover.selected, table.dataTable.display tbody tr:hover.selected, +table.dataTable.display tbody tr.odd:hover.selected, +table.dataTable.display tbody tr.even:hover.selected { + background-color: #a9b7d1; +} +table.dataTable.order-column tbody tr > .sorting_1, +table.dataTable.order-column tbody tr > .sorting_2, +table.dataTable.order-column tbody tr > .sorting_3, table.dataTable.display tbody tr > .sorting_1, +table.dataTable.display tbody tr > .sorting_2, +table.dataTable.display tbody tr > .sorting_3 { + background-color: #f9f9f9; +} +table.dataTable.order-column tbody tr.selected > .sorting_1, +table.dataTable.order-column tbody tr.selected > .sorting_2, +table.dataTable.order-column tbody tr.selected > .sorting_3, table.dataTable.display tbody tr.selected > .sorting_1, +table.dataTable.display tbody tr.selected > .sorting_2, +table.dataTable.display tbody tr.selected > .sorting_3 { + background-color: #acbad4; +} +table.dataTable.display tbody tr.odd > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd > .sorting_1 { + background-color: #f1f1f1; +} +table.dataTable.display tbody tr.odd > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd > .sorting_2 { + background-color: #f3f3f3; +} +table.dataTable.display tbody tr.odd > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd > .sorting_3 { + background-color: whitesmoke; +} +table.dataTable.display tbody tr.odd.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_1 { + background-color: #a6b3cd; +} +table.dataTable.display tbody tr.odd.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_2 { + background-color: #a7b5ce; +} +table.dataTable.display tbody tr.odd.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.odd.selected > .sorting_3 { + background-color: #a9b6d0; +} +table.dataTable.display tbody tr.even > .sorting_1, table.dataTable.order-column.stripe tbody tr.even > .sorting_1 { + background-color: #f9f9f9; +} +table.dataTable.display tbody tr.even > .sorting_2, table.dataTable.order-column.stripe tbody tr.even > .sorting_2 { + background-color: #fbfbfb; +} +table.dataTable.display tbody tr.even > .sorting_3, table.dataTable.order-column.stripe tbody tr.even > .sorting_3 { + background-color: #fdfdfd; +} +table.dataTable.display tbody tr.even.selected > .sorting_1, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_1 { + background-color: #acbad4; +} +table.dataTable.display tbody tr.even.selected > .sorting_2, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_2 { + background-color: #adbbd6; +} +table.dataTable.display tbody tr.even.selected > .sorting_3, table.dataTable.order-column.stripe tbody tr.even.selected > .sorting_3 { + background-color: #afbdd8; +} +table.dataTable.display tbody tr:hover > .sorting_1, +table.dataTable.display tbody tr.odd:hover > .sorting_1, +table.dataTable.display tbody tr.even:hover > .sorting_1, table.dataTable.order-column.hover tbody tr:hover > .sorting_1, +table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_1, +table.dataTable.order-column.hover tbody tr.even:hover > .sorting_1 { + background-color: #eaeaea; +} +table.dataTable.display tbody tr:hover > .sorting_2, +table.dataTable.display tbody tr.odd:hover > .sorting_2, +table.dataTable.display tbody tr.even:hover > .sorting_2, table.dataTable.order-column.hover tbody tr:hover > .sorting_2, +table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_2, +table.dataTable.order-column.hover tbody tr.even:hover > .sorting_2 { + background-color: #ebebeb; +} +table.dataTable.display tbody tr:hover > .sorting_3, +table.dataTable.display tbody tr.odd:hover > .sorting_3, +table.dataTable.display tbody tr.even:hover > .sorting_3, table.dataTable.order-column.hover tbody tr:hover > .sorting_3, +table.dataTable.order-column.hover tbody tr.odd:hover > .sorting_3, +table.dataTable.order-column.hover tbody tr.even:hover > .sorting_3 { + background-color: #eeeeee; +} +table.dataTable.display tbody tr:hover.selected > .sorting_1, +table.dataTable.display tbody tr.odd:hover.selected > .sorting_1, +table.dataTable.display tbody tr.even:hover.selected > .sorting_1, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_1, +table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_1, +table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_1 { + background-color: #a1aec7; +} +table.dataTable.display tbody tr:hover.selected > .sorting_2, +table.dataTable.display tbody tr.odd:hover.selected > .sorting_2, +table.dataTable.display tbody tr.even:hover.selected > .sorting_2, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_2, +table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_2, +table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_2 { + background-color: #a2afc8; +} +table.dataTable.display tbody tr:hover.selected > .sorting_3, +table.dataTable.display tbody tr.odd:hover.selected > .sorting_3, +table.dataTable.display tbody tr.even:hover.selected > .sorting_3, table.dataTable.order-column.hover tbody tr:hover.selected > .sorting_3, +table.dataTable.order-column.hover tbody tr.odd:hover.selected > .sorting_3, +table.dataTable.order-column.hover tbody tr.even:hover.selected > .sorting_3 { + background-color: #a4b2cb; +} +table.dataTable.no-footer { + border-bottom: 1px solid #111111; +} +table.dataTable.nowrap th, table.dataTable.nowrap td { + white-space: nowrap; +} +table.dataTable.compact thead th, +table.dataTable.compact thead td { + padding: 5px 9px; +} +table.dataTable.compact tfoot th, +table.dataTable.compact tfoot td { + padding: 5px 9px 3px 9px; +} +table.dataTable.compact tbody th, +table.dataTable.compact tbody td { + padding: 4px 5px; +} +table.dataTable th.dt-left, +table.dataTable td.dt-left { + text-align: left; +} +table.dataTable th.dt-center, +table.dataTable td.dt-center, +table.dataTable td.dataTables_empty { + text-align: center; +} +table.dataTable th.dt-right, +table.dataTable td.dt-right { + text-align: right; +} +table.dataTable th.dt-justify, +table.dataTable td.dt-justify { + text-align: justify; +} +table.dataTable th.dt-nowrap, +table.dataTable td.dt-nowrap { + white-space: nowrap; +} +table.dataTable thead th.dt-head-left, +table.dataTable thead td.dt-head-left, +table.dataTable tfoot th.dt-head-left, +table.dataTable tfoot td.dt-head-left { + text-align: left; +} +table.dataTable thead th.dt-head-center, +table.dataTable thead td.dt-head-center, +table.dataTable tfoot th.dt-head-center, +table.dataTable tfoot td.dt-head-center { + text-align: center; +} +table.dataTable thead th.dt-head-right, +table.dataTable thead td.dt-head-right, +table.dataTable tfoot th.dt-head-right, +table.dataTable tfoot td.dt-head-right { + text-align: right; +} +table.dataTable thead th.dt-head-justify, +table.dataTable thead td.dt-head-justify, +table.dataTable tfoot th.dt-head-justify, +table.dataTable tfoot td.dt-head-justify { + text-align: justify; +} +table.dataTable thead th.dt-head-nowrap, +table.dataTable thead td.dt-head-nowrap, +table.dataTable tfoot th.dt-head-nowrap, +table.dataTable tfoot td.dt-head-nowrap { + white-space: nowrap; +} +table.dataTable tbody th.dt-body-left, +table.dataTable tbody td.dt-body-left { + text-align: left; +} +table.dataTable tbody th.dt-body-center, +table.dataTable tbody td.dt-body-center { + text-align: center; +} +table.dataTable tbody th.dt-body-right, +table.dataTable tbody td.dt-body-right { + text-align: right; +} +table.dataTable tbody th.dt-body-justify, +table.dataTable tbody td.dt-body-justify { + text-align: justify; +} +table.dataTable tbody th.dt-body-nowrap, +table.dataTable tbody td.dt-body-nowrap { + white-space: nowrap; +} + +table.dataTable, +table.dataTable th, +table.dataTable td { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +/* + * Control feature layout + */ +.dataTables_wrapper { + position: relative; + clear: both; + *zoom: 1; + zoom: 1; +} +.dataTables_wrapper .dataTables_length { + float: left; +} +.dataTables_wrapper .dataTables_filter { + float: right; + text-align: right; +} +.dataTables_wrapper .dataTables_filter input { + margin-left: 0.5em; + height: 34px; + border-radius: 3px; + padding-left: 10px; + font-size: 14px; + font-family:arial,sans-serif; + font-weight: normal; + background: #fff; + border:1px solid #BDC4C9; + box-shadow: inset 0px 1px 0px #F1F0F1; +} +.dataTables_wrapper .dataTables_info { + clear: both; + float: left; + padding-top: 0.755em; +} +.dataTables_wrapper .dataTables_paginate { + float: right; + text-align: right; + padding-top: 0.25em; +} +.dataTables_wrapper .dataTables_paginate .paginate_button { + box-sizing: border-box; + display: inline-block; + min-width: 1.5em; + padding: 0.2em 1em; + margin-left: 2px; + text-align: center; + text-decoration: none !important; + cursor: pointer; + *cursor: hand; + color: #333333 !important; + border: 1px solid transparent; + border-radius: 4px; + background: #f2f2f2; +} +.dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { + color: #444; + background-color: #ddd; + + /* W3C */ +} +.dataTables_wrapper .dataTables_paginate .paginate_button.disabled, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover, .dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active { + cursor: default; + color: #666; + background: transparent; + border: none; + box-shadow: none; + border-radius: 3px; +} +.dataTables_wrapper .dataTables_paginate .paginate_button:hover { + background-color: #eee; + color: #333; +} +.dataTables_wrapper .dataTables_paginate .paginate_button:active { + outline: none; +} +.dataTables_wrapper .dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 100%; + height: 40px; + margin-left: -50%; + margin-top: -25px; + padding-top: 20px; + text-align: center; + font-size: 1.2em; + background-color: white; + background: -webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0))); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + /* IE10+ */ + background: -o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + /* Opera 11.10+ */ + background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%); + /* W3C */ +} +.dataTables_wrapper .dataTables_length, +.dataTables_wrapper .dataTables_filter, +.dataTables_wrapper .dataTables_info, +.dataTables_wrapper .dataTables_processing, +.dataTables_wrapper .dataTables_paginate { + color: #333333; + font-family: inherit; + font-weight: 400; +} +.dataTables_wrapper .dataTables_scroll { + clear: both; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody { + *margin-top: -1px; + -webkit-overflow-scrolling: touch; +} +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th > div.dataTables_sizing, +.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td > div.dataTables_sizing { + height: 0; + overflow: hidden; + margin: 0 !important; + padding: 0 !important; +} +.dataTables_wrapper.no-footer .dataTables_scrollBody { + border-bottom: 1px solid #ccc; +} +.dataTables_wrapper.no-footer div.dataTables_scrollHead table, +.dataTables_wrapper.no-footer div.dataTables_scrollBody table { + border-bottom: none; +} +.dataTables_wrapper:after { + visibility: hidden; + display: block; + content: ""; + clear: both; + height: 0; +} + +@media screen and (max-width: 767px) { + .dataTables_wrapper .dataTables_info, + .dataTables_wrapper .dataTables_paginate { + float: none; + text-align: center; + } + .dataTables_wrapper .dataTables_paginate { + margin-top: 0.5em; + } +} +@media screen and (max-width: 640px) { + .dataTables_wrapper .dataTables_length, + .dataTables_wrapper .dataTables_filter { + float: none; + text-align: center; + } + .dataTables_wrapper .dataTables_filter { + margin-top: 0.5em; + } +} + + +.dataTables_wrapper .dataTables_length, +.dataTables_wrapper .dataTables_filter { + color: #777; +} + + +tr.group, +tr.group:hover { + background-color: #e1e1e1 !important; +} diff --git a/theme/blue/css/plugins/datatables.min.css b/theme/blue/css/plugins/datatables.min.css new file mode 100644 index 0000000..d40d031 --- /dev/null +++ b/theme/blue/css/plugins/datatables.min.css @@ -0,0 +1 @@ +table.dataTable tbody td.dt-body-nowrap,table.dataTable tbody th.dt-body-nowrap,table.dataTable td.dt-nowrap,table.dataTable tfoot td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable th.dt-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable thead th.dt-head-nowrap,table.dataTable.nowrap td,table.dataTable.nowrap th{white-space:nowrap}.dataTables_wrapper .dataTables_paginate .paginate_button:active,table.dataTable thead td:active,table.dataTable thead th:active{outline:0}table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable tfoot th,table.dataTable thead th{font-weight:700;text-transform:uppercase;font-size:12px}table.dataTable thead td,table.dataTable thead th{padding:16px 18px;border-bottom:1px solid #ccc}table.dataTable tfoot td,table.dataTable tfoot th{padding:16px 18px 20px;border-top:1px solid #ccc}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{cursor:pointer}table.dataTable thead .sorting{background:url(../../../img/datatables/sort_both.png) center right no-repeat}table.dataTable thead .sorting_asc{background:url(../../../img/datatables/sort_asc.png) center right no-repeat}table.dataTable thead .sorting_desc{background:url(../../../img/datatables/sort_desc.png) center right no-repeat}table.dataTable thead .sorting_asc_disabled{background:url(../../../img/datatables/sort_asc_disabled.png) center right no-repeat}table.dataTable thead .sorting_desc_disabled{background:url(../../../img/datatables/sort_desc_disabled.png) center right no-repeat}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody td,table.dataTable tbody th{padding:14px 10px}table.dataTable.display tbody td,table.dataTable.display tbody th,table.dataTable.row-border tbody td,table.dataTable.row-border tbody th{border-top:1px solid #ddd}table.dataTable.display tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody td,table.dataTable.cell-border tbody th{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr td:first-child,table.dataTable.cell-border tbody tr th:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child td,table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.display tbody tr.odd,table.dataTable.stripe tbody tr.odd{background-color:#f9f9f9}table.dataTable.display tbody tr.odd.selected,table.dataTable.stripe tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.display tbody tr.even:hover,table.dataTable.display tbody tr.odd:hover,table.dataTable.display tbody tr:hover,table.dataTable.hover tbody tr.even:hover,table.dataTable.hover tbody tr.odd:hover,table.dataTable.hover tbody tr:hover{background-color:#f5f5f5}table.dataTable.display tbody tr.even:hover.selected,table.dataTable.display tbody tr.odd:hover.selected,table.dataTable.display tbody tr:hover.selected,table.dataTable.hover tbody tr.even:hover.selected,table.dataTable.hover tbody tr.odd:hover.selected,table.dataTable.hover tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3,table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3,table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr.even:hover>.sorting_1,table.dataTable.display tbody tr.odd:hover>.sorting_1,table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1,table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr.even:hover>.sorting_2,table.dataTable.display tbody tr.odd:hover>.sorting_2,table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2,table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.display tbody tr.even:hover>.sorting_3,table.dataTable.display tbody tr.odd:hover>.sorting_3,table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3,table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.display tbody tr.even:hover.selected>.sorting_1,table.dataTable.display tbody tr.odd:hover.selected>.sorting_1,table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.display tbody tr.even:hover.selected>.sorting_2,table.dataTable.display tbody tr.odd:hover.selected>.sorting_2,table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.display tbody tr.even:hover.selected>.sorting_3,table.dataTable.display tbody tr.odd:hover.selected>.sorting_3,table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.compact thead td,table.dataTable.compact thead th{padding:5px 9px}table.dataTable.compact tfoot td,table.dataTable.compact tfoot th{padding:5px 9px 3px}table.dataTable.compact tbody td,table.dataTable.compact tbody th{padding:4px 5px}table.dataTable td.dt-left,table.dataTable th.dt-left{text-align:left}table.dataTable td.dataTables_empty,table.dataTable td.dt-center,table.dataTable th.dt-center{text-align:center}table.dataTable td.dt-right,table.dataTable th.dt-right{text-align:right}table.dataTable td.dt-justify,table.dataTable th.dt-justify{text-align:justify}table.dataTable tfoot td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable thead th.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable thead th.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable thead th.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable tbody td.dt-body-left,table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center,table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right,table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify,table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable,table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em;height:34px;border-radius:3px;padding-left:10px;font-size:14px;font-family:arial,sans-serif;font-weight:400;background:#fff;border:1px solid #BDC4C9;box-shadow:inset 0 1px 0 #F1F0F1}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.2em 1em;margin-left:2px;text-align:center;text-decoration:none!important;cursor:pointer;color:#333!important;border:1px solid transparent;border-radius:4px;background:#f2f2f2}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#444;background-color:#ddd}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{cursor:default;color:#666;background:0 0;border:none;box-shadow:none;border-radius:3px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{background-color:#eee;color:#333}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_paginate,.dataTables_wrapper .dataTables_processing{color:#333;font-family:inherit;font-weight:400}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th>div.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #ccc}.dataTables_wrapper.no-footer div.dataTables_scrollBody table,.dataTables_wrapper.no-footer div.dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width:767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:.5em}}@media screen and (max-width:640px){.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_length{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:.5em}}.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_length{color:#777}tr.group,tr.group:hover{background-color:#e1e1e1!important} \ No newline at end of file diff --git a/theme/blue/css/plugins/font-awesome.min.css b/theme/blue/css/plugins/font-awesome.min.css new file mode 100644 index 0000000..640a2fd --- /dev/null +++ b/theme/blue/css/plugins/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('fonts/fontawesome-webfont.eot?v=4.6.3');src:url('fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'),url('fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'),url('fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'),url('fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'),url('fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.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} diff --git a/theme/blue/css/plugins/fonts/FontAwesome.otf b/theme/blue/css/plugins/fonts/FontAwesome.otf new file mode 100644 index 0000000000000000000000000000000000000000..d4de13e832d567ff29c5b4e9561b8c370348cc9c GIT binary patch literal 124988 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ÐT?>-5aYhU|+1c>&YMpPK5x#-mbV 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'NS^o{z1ZKlHsAybrl=JE7AP369ntV%vB zEi(fm!=g{8NmLbAS6W|murNN}LRi&xxgDs@zBGi1(M#zXCC}RO%K1FKJ}+Ng`Z1Xj zzLz5o-@`Tk33-pKR1}nFgY#-ne05|w2XzHodXG5LH=3nO5+ac&+n0nexe3wwXidnt z_0d6mOhSBglse>BI;9Ai@r!4G5NH5~M4u|WTy{FzsUf~l7{uMh{(Hgv^qQ_nO;1lv z*BEdAizUo=*O0S3NKN`|B)vX;%#k%S(Hj_ytdp5QAx#ICcpzOlQz7;+u48K|D{BDn z1B)J=<`WR$;}cL>b3UNWfqg=8}T(hny6j8{Nj+%E{dst=9U zXTjV-tbXd**&xhe??iU&zRvCNcMRPYtEgO`yLOG5O7yKuX)r!hkSpO2(8pAOErL#+ ziVZ%_WwjI@D?g&BSiL-VxrUxY;Uwt2d~}-je=(S+J%1f(aUCwpZlI2qaY{ORsIk_ly zy811(S34DKuiV8Eu8xfO*XLwFN?4Rne8j4cC~Grxt-|rxdABPFy-9%fZ-i~%r{wKD z1@eYRs++hdaV+8_pU}^!6Q}waeTPrb@;TxILq?pBHOEIB98QnmiT(XU7&$LjSLv!#syUt6&et3Nwf5IXw&&@ntWgT`^fl{|xHig@ zTkdPOWRAvRd)0m~Ue)n=9U1vT|4^a&*?HWs`5y-;!mDEU?p6PCtMNf4cfRQOvFbC5 zLmP^guTUeQYce}h`NmeJx;aey1|m=63Gg&zJVc&`YNclJROfn9i@bNUe+w4umO-H& ziJX6IrlYHmZ;tmMzmGvN)qD4^gS~xYeKk8Xo2z4akE}r@C&&S9Mowmq;W+IVcSXIg zws;R$Q5s&Q$;#5DXYwhBlMnx&-o6B^sVn{aCLs&=gd~u}k%XJXy=vXH9hb3a)lRE* zVW^{Z1CdQxBt#Ju2nd3rtU(q*5V0;*Y{hCfJJe~XGo{;9+G?kJr?sux20HczFY5ny zF1gm}*O}-4e9!lM#>3g(^PYXV=e*0)mbN`F)E|SQ_4D67hgF$ZeY0@L3-|6>{u6|s!it^3$a#~52#xFUqM46b=9e!hTVUIf=icdFmvkt}ny|{b&OVl3 zz3+a@w!-YfY}?AgV~07`q`A`yQwuejMR_@ymWTLRsm~SIHZ*6=`t!*%_0L+Hn|Bp8 z+cS90v-G?Gg1>g&)Wj2eSyS`w=Ch}BPFp*+bscN6KUc}mI{db!F|RhW%$8b_R*|+> zV4fZCUGXnXVO?Qe{ipn@%qy1m#}6jj;*&SVTl3weW!vp#o#n50T3#;t!1ban9C}p1@ph&B6WeMccTLe(WwGiDxC^1^-bK6D8UhdU41KvPazd$t3xQ> zlBg-kNSq2D(1#$JaxX~tKq>7O=JxFo8tp=Mq+ml((axPk(7(ECm!&1?@@PJ{R8t0K zudQG3PeG_VFW;8`f_;C{evhXCi_o=!RdqWWva2+^i;MRZStr&A2?vDVZWIy|=B^ML zhHFZeI|n7$_;^0#atG)HBcPxx^<_RS|HW@#<7LkrK698K^VTz;J@aWJKkMMx)-%T- z9{DT}(Gb43dAqFSwU@elH9Y65?Rx1o+|i8!kt;u6J4AIOWYw^=rL9m?0J^@}>tOQ6UZoAM&_E^+A8L zLkR5(Q(7*_N-l&cy%!Yx5OZ;Y_WezQgmy>W2!i)_zcP_19Tvl169hC>r@ zx(l)N)=>Q>T3kbqu=S2n9l8MB77%{fXSj7*SmgUyDQtm$&YNk<+QiEEcuRaiLQbMB zcIcdif+ABR{87!nSOt3j(y#aeALM=L2J#tw=gs_(2@u2(_MFZ6d*x5D7lsKc%dM81 z)6}_XS+1?=n%Mn;a2RVTAb3CTs?ZV<0E_4?{glSXAwrfJ&vDv?nO`aIa_Hxl>~9_ zfOEOMZ(;8U^ZYdr&zraA&Cb`)zWL5OXCGc*>kSkxLlN9!!9ILEpm*=9x4fOuJ})z? zxH!|6w{m6v3UIA2y~u}t*>bh@6Z;46e&2E3YBZo})<6yCBf?@k8mI$Yrpe}SviP9c zZ`clQjBkyzrf<&8+-6Vbhb(~hHu+UeMP+qWwWTp;|F&|Qr~2fHS_^c@6_?sh#xHGN zW{q6xS_^eU8Jl-+wqk{wbr1G!r9EMFPIBs+9eFu<1^L^uvNLnGXxg@=G{jkjt#kSY z2(y=$EofS4e`W*$|lP0lP!_0mu-}7 zmAPfrvN~C#?5fNwyACBox8*9iNggU6As;V~kS~`<$>Zc1@~v{Wyii^xuaP&(TjVF? z?FyA*pn_8jQjAsHriY~?Himw#kDy{`g z44578P{8tlRRQY)QUcNgwg%(}>$VCsEN~T(iCgz zG*4)bYffqYrs>jL(tI4K3JeMy9{51uoWS{k8G)sN)qyVtz8v^k;2VJ#S%%fHI@ZYk zhUM5{>}Ylo8wn{3(QF#K8Ap^-wvs)_KFL1Eo@ZZU-()Y~!scW4M`9ww$#^o8EFeos z6p1Ap$tIFZ3dk-}Mm(gQyi2ZVS*=m)&<@v*(N54ls9ma!);hHr+G6br^_eE?8&LIdsExV|9~s({&H%mg?5)QgqvOb-I(fS9Sl;eWtsn z>(=$^ZtInLtv*Em8~tGYJ^J72BlPk5B)wZ-s&CdG(jV8K*1xEKMgKSbTl!D+JqD$L zH5d&84TB8B4WkW{4bu$|80HurHmoot8*&X5h8DvSL%ZPx!(R+<87>$u8oo931S^6~ z!NY>@3!WYv9y~YrvEWs~vB8^yvx5tQcLkRR*9SKT9|}Ged@A_);Fp8{8vJH(SMbH) zkAlAp{x+Y{-U?tPpodVaTqK+K?wgo(y>= zF`w9nLRI%GQb8V5y{SE=Yun{F06pUSYGznbmbz!EcM zfVkyR-||4Nx_KLJ^apGM8F%OV|Cz($b*`R@SdS7VFG33uPWxBD0tSNhKSSA-3Wum> zD54o)19$oW0iHgUWwa_YJ3G@ppD$)R)l(rfRON%7E$}=p12q}Wlml>nYxb!uL_Lfp z<2V}`!P!X{7!IRSAfm5Xh*am~QUy6Xa!YeOd0=$u8u%?s1=B<4@&)K7CBR8|up;2& zX_AeohNEI&ycbpV@Kn({RQB*IxyHJ>Mlu8FRS&Qvk`=nfaD3NHmP}-mIg*f)l0fcd z?Iav|tEO|r%*V5M%*ErW&@qq2n`GbVzp^EKItO`D5~rh|I+fDL|u9syIBIE z|3&%RE!)fTp$ULchCae`?C5@Ruvgw=39alm>~W5Ca(!`qar^+zC;s|4r~>d5Rar%m z9_P*#umpOZBS)bP(SCzDlEFbT6e-~N1`G!A>$SIQ7)P)~Oj0OjUr~r}N61Sp zg1Q1?9>=1wZJjEz^h{I-?TkotMkG3;BkIgj8$mNXz}+wnNQ4};C!l!#M%QX61X!ec zA#c||9s(sBv~}@#Ih=d5Q<1@_5<7 z!%u>zNFr(z5~!jUK7llBtIr}UxDsM6WBZ9z8FUCJIkB4#A{}SWbPy1TL3Axq&ErTi zn)0{s2K<&Kb=i#s-=HSq#$fp)Ro?eHr{2I3^-935Wl5OQOPWY%WY@swL1);ETM`^&ofSPkp%LPv&l}>0PaS zY1yduIo7_(pKyJX)pOcMy|mocyXIz;($&Jt*cM2j%JsSVa26vdJJU8FvlhHloijNy zft|#WNe@2AH*k|4yzr&Hw~GqBBIfZNakj>kIGx1Wmsrx5*q3M_?c50zZ;&X&3=={y zVMc)Ei1?`58N6JX@Qg_9yX61YlQCF7+*857buT7f(yf$|Bc%7J+d^c!3IbWPF4!SnVJXIEg>$LMP zgWGnhU6@Iw#$CnTdNo@K3VV1FES!H#c-cxG0(HCbsu13);kR&9(r9*RPC4{KHm<|> zWSkIb>B|7ux(kn9!M60uO*I)doLQ&jxOZjj%?|x^^xo{|UA22d!_#vkAy%{g*3Wt4+(vI86>>wSi)>04joOY|jJ z$bcPK1@D&3%qQdh5&}02HXStYVc_1w&Zoqsv(U8{9{kcqgjGTbq3b0vf65L>;0WlM zn^{Z+bqP!G9%LtffA!VB6Tf;!GIz<6xtPg&(PKVvrU*I0G5lcnO^#YqS{`MOsECT4 z`rx>T;nAUoo@+h7|J^6944ixp#C+FAVBH#N;g5lzCC4|}cEi-?F_TBdwnr7z_p;>r z=bv9E)9~aRFb#QoKuAkvyMZ?W0^D!~`Z~8kjmO;iQ>oIvHa?603X5Gr3a>z+_1K;; z=Dn!?46XyiG`D77L4%b}84tN$2Xt1pcbd8_@3;6vC>paS$r8~OW^SLfQuL%{s*D_HpOnQ0=n1#tqmD|VqKU!Aol zb9a`_>uvN}LEYroRK^dspV+P319jsbOG9zP&V9DuwN0pa;FM<5do>?jv=Gcz55J#P z5YXe82z@puRHNlH==qwON+=U0RL2Qjv8EwU-(YC(8ptm~s;PL{-|ht30Ld-98 z&jhSTr3Gb$6@|SZ^c>jgZ1S{ONCV%9snf-GQC&84egW1a8FGTdc0{0O!G#gPYe7TM z=Nb4h>!TJWY4|h78D!|FA*qi+FMH0hX*>H8N=@(t+W!zLK8WIx)Bns# z%%jlilOW&;8-Q7u+KZ=P72X~m{dmgXUahUIsxAjS;Lmgyo5>gHDf4Sp5Mo zH~C}`1FPzj;p(7CSp9%ahmOWq-~%jHCa1F`rqxNnNgEDPWG0;Nc+(=Br8u95KoY(;qV91(Q1O%Xy0UY8}T!V_Op0O;{$zj8mA3@ zBF7h#!b)f=A`J!ma%+gmvuIT(JmIYfbU9~C~Ix%W;LWzt|VM#n|CUjv6Cl#D71P$cz z{RTW(kKtCL7M#p+e30>Gcv!$;anN}91sop%WPF!`@Kd?3#}i69j+1O*aX~0uFUvVH zn(8&cIi#e$wUyM?mNezmqDoJ)B&%|3O|E!S!v5re`GGTiwuL1}_E)uM90ezA?ZEn{ z+dXHjxM3NJ8>BhdFg|)5ZKkvEx)*u*hacHKoCa1UL5DAs2o`TLIG?KCz(^D+lToU@ z7>OX}sv(}rN)HhdaIC~KjbAuFfQ42nayVP*dafh)FO)BI^v5SU?UiK}rDc0GWFCvp z3o=pNlv$Iu(LyKn(x@{XPt+W0YP9_m^I;CBo5p>IfwGXrrkqooQIeB`WxON?XRR`5 z>B2c7Tt(DRP)+q-s;PdXoovb6ky`BvO|Nd*ddNzsmTCS?4oax)MEw#=#2*U<}L&?Q45jhZN1TIxVFM83n413Cx16!J@U+E1Np?(DQs zYMeR*(_`G-KP)2ZG?rABRP3s>Pw^G=xA~uxwY9YkjTYUKcjlzH3f&k`N7Z?aEjx}_ z-+lER(gli@2@^mDG<){b0{QBzr+Lz4Bb8NEo(fMWsMnuR{*Mx=%IZe>Fw z`B`JF(&NE<>?*#%LO>=|LUvXbR~A+l)E3m|*MZb_%Ru1>p#sPwsQ~gw2plJLJkR6p z@9^At-ho$**#!G3N?AcA*%Ea^Q+{hJ*7>#!kJCw8SwP%3IlHBAJ=4 zB=H5*rWAkJ9t98SR5jLNs&%M{$9B53eBs(1n&=&?ic2h{oGzsm9Ht9wG-j%5u(a-_HlG+tCo0QJXV`TUOV3f1@!1?^!M z<|L6_ypg52@fs9;hpFT;Y)y1?LPx}MB&(3>oG0pbEJZj2fL=o#hlOC!=Token_YN7 zCX}_xMs8qbC0kfEp(iHtul}~f4mI~7LAB-a>Xaf|CfQyH%0&AckPp0fcXbt^98q#C zIaL*VEA4w5JdHICn)hEOptw3vZ~Z`3Rk3~hE;}g!r_qEWmelO4Zm8O?Y1+d>P7Tg- zuObT)_oy%+Twty1lPhY|?BrgKe;(_L3A+Il7g~vRnQKdOqCH{lAJ>e;fjsIKxT(H? z%K96R;tG~09PSJ1co~PgB2w1?%>!ymNnT;A01AAy;gC;Hc?7IRIAEFuy-x{Qp=8vI z53gcRC4C|X0LE^w%RGw?Tb#0R0W}1_x#T4O5r?CX-s^?HLBw_T&nYYqVS*bw5=K`4 zdd{zB#kNdyZFS|@^U}*x_h%9u(0l0$6M;ft#G1&YNkx;an}zv%z~?~t$vE0fCTe7g z&oFdfGgT6Z0R)WL6`=8g(2W6^2quzWP>?TXhb-}t*XvQym6yi_gBkbrMA)s$%`d@6 z^!$tvf-~bW%CARk_YPewaKdQ3)u0l%JE7aIo!n@WLDlFKO^}+T^lo<>CkoNxX!4U+lW>nYy1=ch|mtk zA=&NM*w1yDNC zmP%$K<6w^B@#i%27v|!i!Gmpsqr5t=%{$Y((7W0j=S}pccyqj^-u>P-?8+dZ>;VfX6plv`!q9Tg1nJo1Y?8Lz=R$Q$lm?2Yoqd)Iq6dfnb~Z?pF)Z-@6C?`K|b zH`8tCb|BA@-Q&B%yBBvyb#Lr;cb9iJcR$tL(fv;MXWiZ&rpM4Ts3*KClQ7qgBDK^fd-8MW7H5}P#EL}=oQr8)?e5E zOaG(3N8hdY>VMFEr2k%jO@CE?MgN`tTm3is%lfbNU+Mp;|5E>j{&W3jc+B`%|B?P5 z`VaM&^cVFX=-=1BM^205YU6+DxMlw(?*BGQ#b`0o2}7UtFui0uN51iJ#~S^N>x@F2 zhD_(88PEa=b&-z`9&-Ekt=oYz6@^qFMgKqe`sY?4Z8OCGa(>856mDjttOIavX0y^w zRR%I^DE417G~OS+icUPFk^G{Y`b8MncgG=3Cc;x_m}r>(bQA}LN0>##N5kFBLsg zFXb(zf&I8>+;^27ZnR%Gg@H=KJ7uDN(IB4MQeFzl51WPsz`hd?x4*2SP0J)2=1%y% zbZkj5v_GV_67xbiFjjB--Tko^HnA@AEh*4)6hD{(gM^ za6Pr9av_}+ew4)@20IXj;-X`K8o8SZhoO1g38Ue6@btUy@#7c66@V4v{k8;8@k(tW z)dz6lQWz}<4Hx5(uZRRYD8S7;N)5_32Ih`m$^&tLEIDxmgX(y51WSlCnLeZ9;3)d8U^y|$3^Ym-bv?X z>?pGxd58w#cG0+jo0|SStYRJf=>Z##aN>^>VWfEEH;0BJJJC>B7_pudpC3*orA1lp zrEXd_sa}8|MZ?5=+>Aqwb&lc?;oKsuSxSG$MmTi`z@~Xcel#}2%0zb|5`gyT(tjbdZ~<3 zdGAgq;r*p8l}jpzl&|`kpUaH6a4CP}7c1g;wm&~9{oOXj1^)oR1;GxxJ5F-bGQ&O0 z4=dJ>#`(h|q;mS<=Sp>f-$BD9zrW5yC3wlEW7Ut_fv^q0dk>AH;WT}}yT6Wb_m6is zGlJri=J?(DPxIir(p@VgbvU|FW$9dH+nk{K%7=MPui6|QDl zWPkF9YnXxZXums9NkuvFpapOHFaj%7{%*O^%(nXkp}nS+l1tikvrh+2TbJkxOHp z>4~W+j>%*18#_tFu{bFV4fZO46Mz4!a zj&^QvM7vzh#I>75kd#zcVoYp0vUj>1{``L~Z-UFUaoV_XG<|e`*~TWO{%YVj5begM zq{oh99%NFPjZ7v!OcR-SCV_D=4(Mo)W;Qdia6JT93bPLJ4t%tZXC^TBF=OGL#U$b9 zxGPn<=!<32kv>cP*mP)l4*kXZ?=17NciKB!g*I3>Zi4!Se(dX9pID2vTs0GG(u^3BC{5C`WZ_KQc+(Fpws=Ak)L)tuv6blL#|-$d|NaLw CDx5C> literal 0 HcmV?d00001 diff --git a/theme/blue/css/plugins/fonts/fontawesome-webfont.eot b/theme/blue/css/plugins/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..c7b00d2ba8896fd29de846b19f89fcf0d56ad152 GIT binary patch literal 76518 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%0DyT{kunD z@IxRd5dG8cB%ivC{el@oX`~o+@gFaWStNM?ePP2;oQjxznuvt`fZ6Byzy1|qLyFz*dy29Gc>q2odt5J?m?L$TUX zDkVVyveNVoHTCp_0uu7oG8q0}SJS!|KT7esIRQPOB*tZqA>e#2Olw(hWqzND zAXED_xybmfrMW%CElQ8kQ5(saRqfyvW-qx`ty{aoUQTWf+PbI%R%KJpGJnZF20A8~ z*Fl;CsazvfsiZS;rUcHJ8uXu*?K=Box7X_C!fEEB2eGY8?D@Sx&H+iZpNEi`DOnA+ z!veHDyn89URFg6B+HWcRzy@O?NI1bdDr?wP2Z}&yU&|IF8EhA}qDQP9V@eCu=E3tk zMiC6E{BZ2-^M~3=_Y^Y4HLa36K~dajGNYDV!C)LM!nS_!+N-IG4`8FBBNC; zM!5T2FkyzpVCvONQkQ~_PM`$dUGs?-HT<%`5c)D7TpflP;xDCc4ab_^Mjn$ z?eT@RRaFivum$;@PFLsT$`}bwbB?e(g`!-yCsNXJEm%|UQ}h?PNv(-wD7g~QRwxO=Q{ zGUpj;eo~UqztIxFE0y9kDlzvI%V&6d!@kLJ+rkC9NA^&sT(sazwPlNWc1ndsVI>`t0uaDG^XK8q^@Z?AdE95Ap8 zK)H;*e66kf!!#c}lIpYjxfQrHcRC|4t+V^G9))cZ@kyp=me_<{_SQi_kjqMFpa6)j z5Td355BKY-ORhPWNI3r47Mgh$4Nl-$%5uRcs3|LPnHIwxRwmXt$ zP76lxKtOmhOU2)YB6Qu?88A#&MiBIAb}1Ou9l-=g6^;EOR^=o+QkiZ+iYC}4QB5OG zpPOfat}EF=W&?Bx3<)&9%EovMk4lCY zGV(4VKuHOpxnf-tG^`QkR@ueqBYxFt)|9+TjFu59h!#n$gpkSjlUPKRzKbPzsZQ zgH|g;h5-L-6Hhn(5XLi&32W%1i9J8LRLo%fCQqG$9@?@Dqvd^RaF2*rc{;=hTnIQf zADj!J2vp3hJv_Vx&B{`CNDx58PJtiMS`O)v;XA7sISZ=Npjy>=%}iJ@+ddQmZNu@0 zGWMhsB-~UEHQ&@-s@ARMOwpFER4Gptin;JeSi{IFSW@vUGd0+IK>bidCpPQwXTg3$BV`D~&`h6#;iu*SA6 zEKlPXR9B#OQz_}8b^lta@csQ24beamVrS>yzpU;(9E_W=Ik8;f~ANfy3Cb6Q+mQ30kCbSGbMGR5Qk!Ph-V>a_VQC^ z@LYqSHf^s^D5n!hXw1Je=0dc#bW@mI)?r|M<*v(I4$4xv?ZF0OL)xzJx8Ny1=6MGX zq#cjc*Rlih<_{zR%44+*+@GtQbcUwa6q-ZH`9`A@VxN6T$x1R!vzmk})+LS-y)lpn z5&@Nw(;$<1E)19v*0jGq2HZr<3i!0w`BTt!n~8s3{l`krCF?Mw3H-41~skM zp%}cIL6C^ZU;2VtQKFDV6BMK=X)tZoG1t|mdi(+RWeh7LaQ?rbxWAd1{rQ7Bj<s2kFTWoOqt#X>rw+HHl`m%`v&Cf zhqiZ;^W~)v4@rrbQ&<7w>^;|tRuW`@DpH{`!wG>S^T&~}9)=}bus_e-H2?#w2rN2B zfy3{C-0Wns;iu!}8!EVs=D^9E?W#dB2@Hw;l_v4u=-Sy5D+mSCg6%~*CMC6TyfJue=I|NzQI|VY_+=61Q z@UjAsPZi=&e#vmLm#uNkR{u-D=^+|aU=x)PfrBE$XB={*4SIYNS0^S3Oun;dB{*iQ z#0COAiP~!1jz>3$>LgzwEbT5lDMzYYc5QuiNx}B-qx6Erf$!@9< z$yTJ2B;A+JyW?<&QAuT8K)wP69RJ)xu%CBsgX5UTRjI7*Ypkl6_wz)1X&a6*Q(=)4 zr$E6`s%`Dbmo0~{SW-JJ%Iy%wu@MtQS8-IRvN>6bJca37bWf~`RO6Pthn!zK2KQ{R=+5|aZ zV3uxy%=Y-hu?u?_V|Z^Ai=*Bk?t%2!%p0QAc46-CDAZ$W*NQ zGjtKFeC-AQ*L3QyB)ts~%wZnI?{Cf^>hdv06iFNH5e^{=1hbNg?L!!q+_`b_e<2j^ zet^5P2QSX-GH5qU_~>I2QMPw2Y>g&J?jTrHVlbgLR)V1fslBUXMelpB^0Q}n zs7SkO%di`ts6il36`mn@6^8&28(&=XP-BW%ICU(reX0VgxxSxi9Hf9Ax_=>P27|*% zz(yPS<|?c_1EgXAvn9l$`C>jWBMxeg9UCG4g+Q=m+msb$&H<{5sGUg$L2aFgAnIJI zJz0kJu~QN@i*dW0?n45!BQWwifozOmg+zh@K0(b_#lBs%M8l}AtxMM^LGIGPvw{g@F21=$X3On4M zoSaa6JTjbhd3+rp2j=Fk$}QT$jzD--8$rkfYfWQwX6-A zQr87-##=eC)gluVaCzOkP2Xp^nh1yi#*?9xxQcRI?+;8YzTJk2MQ`zYCNfxIp=Pfn z)-BLTmhXO)$^Bxi)JB2nPHL1S5c0emi{Sn8eKvQI z0A2Q|iug{>1#IZb`8-wZ2bpuck92|jNi7SYzbpsbp(Tg}^~`en=fkd%5D@B3)eh&J z_$71}%rgl|7v2w|K^A}rch~ALV;Sh=FIgAFS=6uI zft4%}P&z2MqkmLlX$Uo%k7Bbos6h}h8d>-qm@uxkPqMMKK`o$bu)Hz!8LUIMb#*HG zS3{6`j~)w2#p2-V0Qy_b6^In-bndCa*ENSg%SF`V81VZzmjvZkEls9sW3U?_an`LJ z8O+osy|{9$m+YosffHoSm3TPRn6tY8q$>_fU^Jl7ED-nGAaX@QC#lFJ=8H@OVoU@m zC@h*X@yr=$98^3}mH^^IV=NcBqrGsbMTh(pdMay1{!Xwpfz_Y#4o)qC!ZV4T93)Tz z3c{&Bcz>bq>p3-0TDd)#Hd|JcH4p<(?f7#Z4FD)4S}GwATxBU&ued?*zm>{3naP2e z;c_#vRXTl%5<|$*eBOwRa!RPn)?R3aVo{L)hd)GRa9j+LfVgp>#}Q#grK7*jyAuNt z4{Q=O3`>P6vUOE!9SW3sPVf*a&}V?m?LzSdb1gm-coW2Ni}7FmTe^Ff^?@6E-a z@-6(Kbcs_hi7o*8EUBJeof?4}3(!7+KB~}x1z<>JY{?&JMzYw?u%1`FWO=+4wXpH~ zEFERds3%z%)+d=mz99LiQGfviKyN_|pCMQzexoDp`jPv}Q~G-_Os@NkZL)|Rg^_$y z7*XITYy1Zo6c=_NLNTn!!m~^-bG&!c@MTbHbMQ2YHCT~^vtvddDUrb3#xldK$e2XH z8gegt1>IVZpc*>LutJc4B2dU=KAL$Jmmvv--sl`_7^wkai%G|wbKg4JU-)RQ%!7k3 z{DnN`I=^qLoXKlA&u@<1hlEE2)!y3Ohv**vVbN)Tb7|Heu(Q_+F-}kD z{y3*-HJe*bIW(q)5=aAbhVLH=)sY1#6Wj)uH_CZLJlV7apM=~6-o1 zJ+93sq=29)s`pI{VUT>|{OB%fdi%^rjV#`i?G&s!^_*1bl+Wupg&A`#oo&T#WsoA|084|9)=9$fksz;?GjZdFQ%|$2Z>-zGMNX2A znGZt2l09}bdKou$8t@V@K{<2rri)l5t_(B=p~T_}%Fx7=)TYt!2oZumTfTXfhq|F|76iFSsOLA7c%}k>C#pT_-KH3h z`#ET&H&;ah3%1vc2?9^NCF9U>Q>VgZ{12}pG2`;)D}w+PCOnk{6s*AFuKS}Kk{)q$ zZF7h>NNNgT!4yUVAfb#Lwf7w#Ik)XXC)_3|3dXaj^7UvM zBwy$-?jd7`{BMDLJyKgSI2Fz~`gP&R?v|{H?N6nNi<}q~HHP26tzc(_)KvuxYfl-r z)YD;JTZ2aExw~ktuV6{*IiPtk%4UxW9&u~3;*vgjaUA?ENN6<0BV-ym)-^P13-~O%m>Lw!xbAEUU6bYqXHK=>lRRo1de`;RqsY$JUH4Nb&F`)h^D*3{sv9uaeEgif1t^@om@;a&BcB8JfdER0F6@nXmaoJ7pYd zpwP%&8+pw>Mz)~;p6Uh+iTPHN7zUm8kFZwmw=01ZDTW~QA861hHc~hvCD9xN0bU`l_8{aEv_~)@gR!@hU7-YhPG(g389Awe1`o9qVV@I0 z-XeabL6Gn09qT02ZuU$~PNjn4gCU1cd_D|Bub{xYXz;D*&`&%Z9oqMMpt)X@HclNd z?qj|#l9H}OYo{ibBh8~uJ!A!qrC%4g;E9K$`gqo4*X$85#W&pgXKe7&gh;En=j6A* z@tycbJ}6slkO5*!gvshnRQ=;H&6Ox$wi{%Z13A{jKr-md3!=mhLsk=?a-@uH7M<@U zM(NPJ1Mqt3e{$IF(>d^7J>aA`=3<#$AQ~iKMrM^{fMr1El$?no-VCCfTI_mvOdQ#z zj6NtSpZ%Apb)6l@AZo5C@DF2(%NVBf7sj`r3z0VIjA1mxP0C~Ab5!nF*=1@cjAEjw zUMoYbNBhFq=xQ$RLRxXsWwuZpfppsNhuXViX=7SPrVjwOvqS0n{SpBB1e%5!1!?a$ zCqJ7*4~vMMym8}{kQjZL4B>2*1Muw<;WA}p^}58nF&-d4uM{XRQ4A3em{f}l)bg)7 zC7Z|tu?-B89Y0xOv)Dd#@K^f@ob**-ETu2S<5aUmqKR-M^oF38mAH!Z zU=t3!69uJ(l=-v4;}`574129ybuNwJ5QR z3FhJq01*^&uIpE{oM>D4-;1=bJSJ@fh>5U8I^A^~B*Vr_eK{o^s??_o6S!DBu=QNGd;#J^Ftn4rQY0<(Qxc(E;MWaRBXsXm(s(RnQJbTY z9TGr=z?w|}U`$-3M=Xf|{<`>;IM%NdkYFZbU&x z!9ZpzRbZ1y(i$^6u!<35>KLU!WK*-M)`J2^WvEmB(QH8wkA|#WZvQimOu~!_P-_Td zdZvSNDAjOFz)oG1Bz?#7R`NeoKF8W4W^rJwa|2aHqg%#T*pmOI&;khGVqo=ahj^q@JJa0<<8x^}}`T9o`?D zOr%g)ZrTXqIXP~wpvo2(B7zr0CAgHBc#V4Y{5+0n?z1FYfKiAd@8Md5cw6*UG2;VhLza0Xek?e{}C{2_JoOy z4ljYy?jKm5=s5x?jE$2e(w(#gw^NWD7&6vsRtx>`8vz6Y7rY0|%DS1o;THTO&7gwB zBBvx_236z-Y8VBWvY+n-fN>}U|A3#5i|bNSDh{G31gZ_v_F@ANXf<$|vXDSl9fFUU zW&?yh)Ept>a^J8TPV^{Af3I%%8r$`-#=NcMO4m6A8t%Nc0Uz?L zjC`Pm8?cR7jB+H7lJP6R850Zc>;*WD#PHyQHf2PqheXT0H(%_52yW~NNEZLTb=?O88ge_p%V!rB2u-b| zXJNx+LwqZjT$W@G-e)7DCt48`p;w3fpslZ|cLbX*3 z#jpG|#|`EDs&QWoVo;6xO`ln!Eb;)Eu^ufSZ6nLur6f=ueb;@hin8)(!CLPmwY^QP za+9x?Vr!M^_MLP%xL6YS?y*T0Q+5+F{)O2#}DDAf{~{w2jD-2xcCC(nKe)#Zb@(89V@D6=5P?Ys^0wU|`@Z6r1Q9 z96uvQlD%I!kT2`Lg!m0KRos{`Q0xE|fF^J3)DiRd_=hAAOwneADXjwSHfB;fksIIF@8YN(Zq4QL@bkZtQHm zp)C7YIFTOd3ku@`XLzH)zvG5;ujM{t6p2LSU~dpg3E9Fc{2Uv$#sbTG35iKTEQz_? zQ$&h0DV;5MmH08q@5SS>?C4{f3GyH$g4&7s=W045rrnbbf~qOiY&(@jDexe&Iy)mX z#SI(`E}sp~aqdv-*~1y@KXcbNIu6IpBg0?=?kKA{+XOI)%#M;2Z{mV^V%@BMWwP&E z@iWEC57DVRO)LrE0j0VnB$fc{yIpwJ>Ooh$=9OmyUAPAcF%Ufnyk{YpIJVBv1Y@BZ?DT zbFQ%Gx@yLS76X6=%RaneMz2IQ8V=Uiy>d42`=1SJvm+qp(ppoYLkp(L*K!98&H|(% zmliwyj8#7!i3+>v{zQSYAgzo4s2d<2*%18=Pbe^P4A&J^Rm7cB+ z+RPPc1Ga(yzPLrD4VTyECL*%UyzPe#O@N9LxvAPL4FX0A;pIt$#&azo0*O` zGc10|6zA$F0@MVwR0Gcq2MgGSLO?N%3yeLib02_zbskkr{X(aq)b#L}7wU&%U(MZ5 zF%DGOK~~k{o_YbmaBwRlu@e>z7ZoqsQ;pG)p4q@Z2zle3LCCx$p~HYGvs`|ST)?55 z;4e{!+Rt?M7)LQd2^JG?XSGqus(GFXP3S}1}8Ppf(;l8e7da@`U+>Yb3PJ;07?&x z)5{WF#=-FgQ5MJyqeW<)0g8;3*{ziI=}Fs+d^RANJiWlD%6}=qvF!L z9yNJ-t(35D#hq`Li4EKZ1zTCsqT1Yav@kPcvWms)UDj9=47x+~zA>?%t%U{sci#&8c>>b8C$S^HR#+?)9m+>Cri7=D*5uHl~~x;{0$C0TRSa=I|919_oi%R zjgM474vHcf{8lhZg)ub0gCC0kV%27co%C6tQvRsGFraD%W-XK}oVMDx6wNsfiq>gh zycG⋙XjcpMsTB<}!+~Xj9@I4si`Mf(~BgjqzaT6lI_+$E%T$QOUromM;gNW}?5k z^Qg2pRvrK!5~H09&w3&xi==ccDbs5<|MmKVClW;m@q4alkl3{nXp$fDJ`*A*e2^$+&R97WmDxMgGHPH6*d;JV3=A8_qjL-<3>U-~w+NP$GF}NE@&owc+eths zl_fU1u&E271H)ql!PocY!OQa_?YLE&)G=HRKwBc@CrIkGYPEW*l6^oDQxcQFgXp!;CU^&YN?DQtz#+sEv>C&fcS^cfSCa?cn30Qj=E3n- z2>~0GgSd)!wqB{t`E&VVXASrsW9AT(N+H!g57R`7&qkbNE}%AGg{3FVWdb9grR;U2 z6jNbvLE9}1-|3{WSCO3fi87nPi}C4l^+SgmlP1h=3gS(LWNkHxmYPhC#}O!gcyQ&Q z>vUEraxB64UPmB&EAMsii=p)9eq76=s=#juGfp5@*R!QZN1TkvR%y)@Zp1 zFD@A&7dEWb7M5A)CIq3rlg+nZFvOoixX`p&sB$JY(pfpuPU5j5(J~{%8lxtmqpi`L zlTaawVRoDsCvnU0-tsLrng7UE?2UA40CDDX!-JO>TxCBvBTE5tgu_gh1(d*ISm03k zwuzMxpAy~vEWySL1VzusdUVfSNf=XLjcQ9T5Q$R`)+59`7&N1Qq)}(gm6(J^peaR> zns0&P>~B%rIenl8Tt=F`{R#e97r@X)Tp)kckJWFbc;LY_;78B+Ch#rKD8g6lVkgtE zZ3xAv`Jdux`lo3KA5GcS&-*_B>=Yg)0E6^+31q!=wHXi|E}NE>M24L7S@wsofCphG zr?7+!cYwV;L9`u=W)4e+%!jTtRAk=aaTmZZPAAEe>OW-hL7^!xeMH@RoI&j8&4 zt(%0g!d#8Cn1j3NtvWSOS;TnBg_ znQp@-H+N##fXrrFC(pKa-Ud4p3Xrp5_vW?LKqUHQWX+V@&>kRW$$_H8~8}KKwFlk+cRs zfqz!a$UFpAV9DhPunM-{0Kz4JdK};8EIbS0bfr*a4nqp85D(dE=<5U&j3=O914}b- zoa0?TebDCRO#B5R>Z8h1dEKab8@NUFk4(PON5M5O3bicm?HgoDal@h145Lr}x3G_n z+xrlA2RGy$x&E>vM>Nd|%Spd*^;G_Es<7<0^AD$&TZk!=+#ImC8cbY}+nu4H8?|y= zD{G8kbFw%ai@8UO^0rIAYtCX;l> znnid?IB+@<)fYl;j?Hu66tG{3hlALiVJ370c-}TV^j6_)R8-0Tk1z{#=>V%q7g`9I z539w&=&KRaY$~E&huX`tt~MLCrs*Qle8xlhPtL3MyST_wt*eOyww!#MQQ&0#*|!g_ zUV&dt%Tv4d;g*OvAyY5}OI;I73sU+jxo^HagFY@u7%B`|UMN)RU8S0ny3QOze#a7tJw;nPII zLv)PfQYcJmNOyPOp(SubPM07R^R?AL*jAd5ms=`OnxB zqvn;4v>y%?P6Jyy+@RD)Q;{4e4ThJ*lr$0tfXGrro&kDmJQ?s|wI)Ql5&ZG)TVD$t z4=Cklei8%Vu^`gZ<37lc%L<@$6B~d>)UjIwQWQN)4VbelGj|~!Efsm({J2i1M73;G0 zS6qxC3>+N0v>_Qe45Bj6hq2jfF58kOR#(+lK_=v~U`iR$1r)&WvTO8P7A;??w@-*^ z($3aMU3N*Dd+Sc=RxHE|z&sdhV1>@sn8bPG0twdxtME2Oexx0AaCQ`9(oNwgvXe^z z9SF>FM5VHTk>!Dep(%epu{;UjD_%#q_6LM`0pnH-aNw`d>j1rf z&rD@^gri5rTKyF6z;zu(ollRE_B^A`>vJJJff@48Nb7bcO*!z8#@!ZmJ~~HO;)EZR z<(8C(ADfLEOV_-@P)^f|yI3)dOJs<})LZg@Tz0ZRM=W6wD2grZ(at%6!CQ+SaHSRa z>B05l;pP7&a-V#j9Mr&d8Z!i0h6gG$BP1SfvszZfX~55{2#MAfWX~u~O1CN^P54xV z&!6Z743m@$+2P%%%KsV7$kv;U*#OhRuR@R-3D=ez31Am@+h%h;i)js z49XSnbFIh_dBVU7S$)k-WfR}4rkJyp%X20{E9IIdyacBwKpZXyPb05|(_;r8vO@_b z?Ol2Z8?38fh{zCxpgI-8A|{;O{vDt$CBRu6!9AO{gujd$*^z(=dd0aM^1-Q$FoiLr z&Jj!b?1BSuaPU@V5X);*orRV*&WZpgHvB8=6=I$R0kla~*kgbS#~!Q>t1jbBsLmRu z@b{!}wIdHQpaIh%pn00=yrVM%-M1g;yOkeA9~e`G|0n_gWAE3PEX&eV{&INgL#aOf z>2=VPs=-gfGBD0KkkE-`jTEQXSA9w_yliWT$Fg;pk#;8J777VT*aKf`t`LV?pV}3U z@?q6+=uL5_GBz|W;%TtaQ$QENONE{u%-UXq-oL-o>=&n?hI8DE(uYO1&Qxv%~kU3+KCCP|z_k&7%%8 zQvuXAjMuFl!#CrV-9)=0rcb%_Ya#LNA;b|T&Jkv)l!|~>rqCwJngoz~E&(4T1Y6A? z0;@94QAps3<4J4v*v_^6E6M5Vr+NdVy)Of^}<){Misx*P-&=nzETu#gZ zRg%pm2j?i}UB%Cxz=76enl51HdBbJV5_WX7bx9Q{lTh2 zk)r{6L7z%oRQnp#24s4Pb@!sR7iw!=s$waM23=m4Lt#0Dr{u+Nvim~Y%P4W zHnQFu@^Jr?^U)6iuJBFlk9$VY)A`TZ&3Sui;9xvx$;$>y@F%MY=06KzhqryVGZAmx@SV#{}1F1i& zK?$sJ!+$;sM}n(JYz9NaY07LcIp!sj1nFdes8AQ!_?~?V(+ljIXym2v(w{Q5eSeo9 zdvCd+Q$ms+{7urVEY|C>Wh63m#1Z{IvLvz=D2d#Y+<95&IVAg(6WhL(5v;@{A1)z_ zS)Ow(k_m5gNSx+eNs#%)STuDaazE+^sfNg2?coUz9YjRvODvO8kcgVf;24c?ksYic zTiEkNl^@oapHYftC9AmM&C1#zDVo3`7LPd@59lG`c>~!jc^VSpDAmj&^aH$?hTSRm zwXsv^R#n8Zl$w^rb0co> zWUw;B(TM+PaRwg>SpbFw{OkSF_<-pH1^_wEBGe-n9?yGB?_r6&0yy!H=?~1q!>EGB z-aSOvvekfQ4S)GXq?IAbUd+i46+UOZj^T#IDt2-LjbLHVAZ{;bG$SJmLOVhOMVUXi zf!4w|I;j%0fyJNW7ASmhe@&x~i>w%VvARUFCsEK2Z5t#;7@|+#8vY9CA^yrMI8#kH z(?#ioug~g-DrN(~(5=W|nHi}vEoGm_Vd^I5wx~WKe=0?zOov*Qr$BMw&rPs)OPgTi zZdYxL(JcNJm6s~cAZ;dUeXt2Z0^&C+xD1|wwVnyGPz>wbP@Div7eWA6@Nu|!Tm1E4 zXv;7VX~=x$n(-rR=ls9sgwLCZxNK*fkUZr?UR4>@^kfF?gslsJN)|1loxIbSG+4Mp*C$mYth>TvH;3ZZ0#%q$<2O!0Ljbq1Fk3bNGO)!n6YRe zOH5TuXniQV59Bxp^Tg5um;{Gunor{cA!67P0-1|JLCC<$h?tE5qZ_L_m~B%6{}WA@ zL}yi+y%tOtM~4=&FpiQXuL;z22N}^y8r3+W$yaE+VkC~lYIGX{)8AlwPeaYT^ek-H zJZ2_u)>{F;l?Y<~ce2efjNTgk=4E~p>e)iHN+R-cBGq)O@fI1fX`M*4!-=zMA(!M7qCs$C*vH5NP=sj~$u z{UDA}zzP*Gh0FlQVcsPGg8Uj2wE!9BMig*4zc?&6SY4^zn21^Rj1l6zp87*ac5Q&0 zSChB|>%W~ttcVjQGADJ%5}FNt7%vwLoL0b=<}6B#Rm%h)%HN$iht5e1F4U9a*LvF` z3~(8ORA1mpPFW-p-hoYFmZN5=ay$izn><)C=x4=g3-1NQn&pzcgTDLmS6cm|864C2 zX$@lI-}{ zz#Jqd$Ms3(;!FczP=+nC-tgo8_i^)#NEP_X$e?QB&)9v1X_oJ(0_D66f^RTXqYs3p ziOE=Z=WA7sl!4Y#Mb}vawI9=p{_7D^K&q7vI1ujNV%rnwN;?(V=!8E1S|iPDw-7{0 zP?Fw=WJ{}hVT=LrK~c!`kT5;lxrB3+q<2(5pRSl&@Lm%LW0)NR$X8PKM|qv4xtJY`5Nd0Mnx4dhzx=#O3}#m9#0hG(7kZ0C$o<* zRlc?q$4T?^>whL|Hz+HOf#*jP@->8k{tnVScsrX=5VQubAlqo+8ep2HH9cA&yP%@3 zSE(q|<|pFnc(QRJF4NyTno(W?cX0C_s)(Fhf}Rt}2UDCR^w6Ns8hlL(s-@DjsLr5a z6@bN(BRR>VEhDCQQ_Pj9t=XYnSh-JZHZGFN2`K`1hS+?S9airR=eKgf@E!Xw8G{$e zk~^8L>zFYZyoxI0qX{i*=Gb8t>l`qkD$xFT=)hsE8x?k(F}5KPBcluL-9&!{fw2st zwGYyYcinq+J0lNy7=;}+F#NT!c_Db(C9Oo59Dxo=RgBe3g&a*mao|ZcL^CF5lo01s z5^#FqF(?HFWp#`xJqhczP^lVw8TY9M2zT&&ia!~zQOT^omAbsxqt;w88q1NOgzWa9 zxaNq78#=+jG$3FOtVk#;ZbTb{S})e7rW8SrHBE|a0gdq{&0so=Fc(qfhJGWEOYjWg zLrg~vS}pMJmH;8g_~f$vRy~vBdlPY7j{B#R*FlrhNk%H%j6?Q~BMUC!ONa1; zv+yzYD|%87m2%X$dsW=JyVM_*;3yHYlKRaSjE@=l`&EBuw^GhvvAX5|fqx{{P;*s! zqnb)HP*v1fk>zxww1_rPZaqb%QsWXCdAre|Lr*7Z3r=xF&oFTFV1=_ zP{=!R$AH32RKGjQt_t2|tm-CR9u_N9R`5-I_vcQNNQODri8-mOOWV{!nQIEHN=c}` zNvNKyC-oGVoQ1NI2emB1Ab>Nzwa^vnZV3&6AyrP~@FSkZ7Zvx9Z>W<6XtDK&)tcz-E7 zFWT!Z7$H|c1b9p>yk4X6L$T1UL*b8oP=0Oy2JGXV#yLGfB>iQVlGoq}&;=02`+zIF z9i_iOU0v5I@n|VC`VHh^^Ms8d0!Ay->IvVWeBs?yHE+_5SIXSUWWj5`q5DweLx4IZ z*Wd}VH#Q}l$FjL^0J=DqboWqChQr|xA3m3mW)uejGBy;brz1G=;3OK817SD-J-IR#_1WnFWWJBW6wwR@iLc7j$@JkeZ)YcTAHg_ut1x6HsX7 z@9Y*=!j0_FJ&BtLn%>Mcjt<5T8A!a3+F&r@bm9UrW+4o51rA_sUdjp#1C*+6$q-BN zz>Kcsi7Mwk6aYoM6lfU%1Q(@+oz}NaHgRL=j=396UCOZAbGUUX^GMKy06*fA8jYe$ zWHsrssWD!c>RFacvBriV%|RpTpwW6C3e>aMF^RyRo>PjHK&;kp~?hx6?fGU8kS4Fo1+s+Am4R4PakzYo0CL&l3AAj^I`m5Quf{ukC)2i!qZ_il!HO2nuJiJ z+Oq)B)E*i|qRgI0Ol(YqQb3B7SkMWJ`eG}MuaH9->aLEsNh<%t4FRg!0^2oqr*WgB z$BjeO5SV?Dv!?Hm3OTm64LgK#(&x)GaCks-XKEkt0|%aV0ED#cArQP0FvNr9q*T54xT{fn?GaoUE}RMpKk9{D zaq@*PELdG~>T&Xy-5T2HxbA|f+!~ADHc09(RF+{w2X@n`-!gs`^LzevCpBZo3JH!D zq-AiZQX&rymDozbI0S3bSp!#|c7Lg>DQzii*m|@l0p2ckORF-DkH%8GsdgkZb?w3# zcUn=zz-QX^!i2(>HTX(Wr2;THX8(|Seemq1)d)42JcH(Oxn~HEaV&&$b$8Zh)OVkX zce1XQyzS%FUxbu7P>oy$UvT!xK{Q}J zdlWdw0gIfm9DhnCMnm~Nq{0^DQ3#BEJ$!@d&s>s+5qUrh6t0cm2$ErP41%fz`2yiT zqjEk70W9PNV~!m_Hl3ut36QP~kU-)JT(44mCj-s?($$QOjmN{-ksf9q@j9b&#mRbU z1iC3Jb+}ET(>W;sRe9qHV#)dUV?PKLja>*d!z7K|o#95`*?h@7olBbHHjO3?`Am;n{y=i2 zv^f#-AF_<$;vf+KBE)Y=RxAH%$MY$J2zoBEnRFQXm+JDB)~fi#{TLW>|;_0>&8J+JTtet|VP#@Q&f zGS5zrsbK)3Gf36J&wa0DLgd`4V80B(1<_d?*h=sGW18Ec@n2@c(y#&wv!0@|2?T-&H)F@ANc!@a`WgN# zT_FI8;ZjooDk55`I>jf94^Y691yO{-K;us4q2XaUDhSq+aqIZz0LA z5lsy8j@SK$J_XOCbR@PO6j+I5II;Vd5{uY)NE|UM)yCW^X0cQ7s&AI_uT!iKw$c2S_o%JYM4-?smyGSb$e5a$r&WZ|WTwAQ7 zK4h-VJ#85rnp9cAP|EEn!X`=+hk1%h#YvEs<0mchQa#(&)y=mI9iz!WXGFgr%ED$d zc(giqqi>I!CkVj512ZaNdEaik2zvsy9+|{?mdPg=*y6UO1YYSc~~ zMHE<8Y&Iwnv4{VmC;_SLND3mly1;8nrg7*XgA6b)c}0)>+EqM=aXk+7wde9E;7`=3 zIDaP?NFu0GdiW_;;-|<5j)&8j5~wY4lr!i{4%vB{yI;}09R0L!s?brBsiD0FD`n~7}mELwwUD45V* zR=)*{(`tHnQi^hAa_tBmUc-j~i%<~!dH@Vh1~-Wf9RL+@ENL7Cw1}knAjYB)qsc@^ zoId#x$Z0MY?T&zf>RHRkq)O}(g!mw^?LSWmfnJ=7BeK0#6sAR?TK(g~rQxCS9b2c+ z(u`DMm%|Jc+j0?HhkwP`lf;fzVmbp*V_^x8g}{Lm5!^gTPAA_8pRcRcFEQmKhiqMu zJ*H3|4FHh^i^4ui!eow|FT-#zivV~ef%)kKsg8F3g(~@^3ppNbS`f`dGoCCV8%TsZ zXS-R9MZzx;TJWeRx!MN0h+o3Y{~d^31x1*mxw|@#AP+C~{nM7!~}V9~;j5D8(*2B!*870GjPz~Qeo%~UoVAVYp^k{@5c{1^$jdl`Sqm$$lG zR&OgRwyiq+Ne8f)QkSV_$lDF&8qqucW%h22qN4?Mdi|o z@dM3$frMNnEsv$)!s7@#4ce*~fi4enOOT>!6`Q&n`JGE1!22XXHL{+{uo)o>Ok|S{qsM>s*vTp{F!<#!hhY|#cq>4zAbc*vF@G$g?R^g5aEzm~~ zq>F!f0|jIl9%P(IZKr;GqlcKc9efpPt0O24%QFE07)I4muy1d769b229$*;3S*F~f zsa#59HFw6z?+HzvY3Dcq1|>TG$%u&W2q|vS7?Je>Pt0HNW7P72g`A)r{@BA#mfICo zVcU?3g$Iu2;M^^+SmPEpu+{>${}DsO%xEdYy z0`)iJSbshpFm(!BY_pR+Yy3ig9m7RE!=w5Yo^cj%?~o z8~PX6f|&U%584rT-33s=p=1FilPqY1{4st|=Rf%DwF{57i5hwc{pmqq!-B%$U9yv# zeSWmH*rm4Om9-^v`QZo){Ab01U`Ti@@pC1)Cm)$gX|y6XC5Z*#BztUjlemznJa)WY zfOMF5jQbsvMGf2GU6#%_a5M!EvXc@*6H_5fk8MtKIE@CTRD^_@(ibcTw$B=Z=_&4i znP7RmbvD92Y4a$$!V!ng@xl%Hnd(Ne_VX|hM<9F$Azh+Xea=e~QrWe#ejb@b%ocr4 z#EVTx7>JoYN$!0}rSjH@wkbr=U|q0Sz-5NMVMDL#QA+W9+!O)@wpwDkDf@e#yAr-i zl9lUP6mU8V=BVV$ZG62#&` zR|=qK_~HKQ6fb6?mKh=X(@G{@S&fv2Xq!?&v8=Rug$ZQtY1v+6t^H#Qmf6XHA$A;KPK87$whl$RDD5);QkByhlrQ?k8x(MAL- zgO(IUMsZ<8(EO3sN#GnlJMG3#Tj+?9hqoZ*8_J@Ps8>jF zTPtr23neK;xz{3msSjd^XS6OnXg#}I>SeFkDx}GzQ;V>rFyL1$%800!qH*AB&4>>t z+Gx}}GH^FAYJBVCp18Nfg~p9x{4w2D#wFWndmU5s~4khVw&`q` z8BJ>xX|G$wf`m*noq95?H*1AV%*A>@#D@ZE%+-+Sks?f444yMtAPs7b@mbJ*KaDXU z*xyYN`~#sg_otG5Sl<>U^TP1cHY*b2Gic`aI1r=m2VgF+s)UGWStj!pKpl?}Cg5m< z9niH%(1;@zYQZQlqbSSxjU3nj{tPzUeC6SS4xR+LNIUR4CoR|4d0zzwWbA>b*X#yJ zGegyw9NpRcCH8SfN8N>Q5f%>~?236Z)5D5=qniP$iP@oF4D2-z8ht}c zD-C^_AH@nX0OtZ#(`$ew=h2n3I!VQXGR`*al~=iK)l_Hshsx*9b+HgMS?AznM2{y? z%T$w=5a%Ht?h|lD`>}Cwnrz)L=_YzkTYM3pw(J4yS}Mr+1f;Bbe*5}YPqp6;R0dN0 zG`@{Llp?`+X{l#lH7J8MLXuVc!GRxukzCNrA%s9q|LK*543VO0)}sE1R^VYgq>;9` zHQWe*SYbK003suvL0-{Kw}=zp(&wS%LWAfvXkb{v5Gs-JpSrgK(xpp0N@G2cm`f51 zP24k&xFKBS*$W&N6%LqZbbxe@;RC1Fj4}ZU$zdFG6af{;8M+Wdx#CDawoK^-P^L!q zDUAD!=YHU+)^DzC)6CYZz%CpvHw{F9O%cX1W$c&5K{MkJ1;1pwC4NhXi>1Ks3+^^6 z;%u|@H8H`(kO=yh&zlw{U8y5OZk#Al3L?R6xJ)4qpkj}Jy+K5pTqNi9-?mb`3`HTl zSNR9D9|On$3kV*{aj5KRJOh;=;VIpDiHTwa4lOj-*)d>duKkU+T3Z^Thjg;2nkExk zoe}iCjJq<;et-#gSQ|>g3u=|{`W|%b20%3^DCrj!jHCepWom&}r()g%QZLpF&1rit zddP-ph zg&JxxNgFUR`3-af-5G(@W?p-gJ-L}8kP2EvP+b>bF-D}r%Iw_&xbgh=&B7TNsw z?q3GmRSY`0ef*?^5=G zsI=^mGU~6JgSlm?XsM-c%SE`dzEhBZ<`}Xm?c_cVXPJH%a!XG}5%!ayEy!~|CzLS? zc9Kz6pU~uu4NXwiO32T~!r%}2hg;SJfF6DDG|qIa&rcKe@aiCaFAi4O!kd ze_%-m4HLz8;zQ@kkJ}Wt*?fH2cE>EB*uy<5z;{V(`D1etY>eWuXkoEz!EOmbb-}n% zwGct+!A$!%!z*!arwm0q@UgfzwN1!jyZ5K#^t!6uHj2KE>=?aaS8G7ar(^ zS8ZU^oMg{#TCaL46OQaFnK}SAHtPS=W3RS&ZWZjZMQG~}K$fn2-LTXb-GR8qrE!x+ zugIkh#rbF?^GkwQT~3Y4T?W+mL!*inJw}GMs+VaU#37L zY2IT84ec#2F93@W4ZXJ)8N!TrvDWbuW4)hK`ueMi;1r-aBiXgAG3lld7a<@Dh0Id& zHes%%rp42Z!n$ZuAln)8hj`IYJw>xrOQ77#TPtO0vToGQxIP6oVQ3Q6#J}#NK`Rg~ z^|j$Djl&cX`kC9kY2d$~^2?}}+y_6(Em{L%0`E9o5N=dwg1&am^sKsskr=%QptUm` zE{UO}vj+n3j9f#70z;D7(wEJH97H!cfD9lF2cWC^9Q|X}co3Z5VC-AQ#Pa#HnRS(i zOJu103w%?J6ZohFfGyx^!wgYtxO}Drz^p~){>$A>sT%I{ad4evd$ z(^O@x!fD5WJy}IgP#zj^$6yHpr&#eqDTed>U^GsPJ8(=aB3O64bx39tV^#YK=Jtbe zMw4bXBbvaR(2sQ}zc(p$HS~m!d!*UyN2L4dtpWM*l~&0o*sv@Ax^P9T-VCoER6Jw4 zGzAgE-P=^oqmV^DZU!l>$O_e9k5B)i5Z@w2(%$K(UbtQT5GW6sN3vNh?9cnam6jL* z^pT)@K@^`&zPlfbCVCGBpt_I174gRma0je2B=j5NiyTYVWHfVGFkXNF1_jJBlDP?h zuhcEQ4bWw7zK#U|gWN9IxA0B(e3%e!lPtUn1OfHYcp*A1iP|GEo3whOB3*}#EP(oL zuUFA^FG|5EJCVi|mhRX4LOlWhL|<`o zuHN=@g0KZqw<8}LvMiHI5$3kt$`L0gBQw{|0rN+u_uuX)2PYn(CJef-zMl7wEC>Bn z$-?!)SzQd54-Y&84lsnK&`E)gv=U>93_s9Q?O<;3MA-PAc=Rz96Ghd>_^&+i%)%v* z$DTei4Lp04EGpXg=`%J!Tvwj~b3{(q%98y3>2mmf#SnF5T4g9d29E zS}G&VpJI&i?O0(=H8l!qDw?4}Rwx|BPG@XYScbQaG%;FoszO}K^J1$x#1m;c8!puT zZ1YCmqb8-7D)v~IXn>AFhyVrh=mCj}+6;Z$fV^V(&})soB7F=S!5Lu2Hoc>mL+hGe zP>KnRvaX9N-(onWC+_tDbD(BMB0`*c#1jY(ugus9bkU8dE=v#SOfSH#m6z#APDl3&k8}PvLdsL&CUCd8hwR!wxVOvj+fGj7;k= z98+)Dqy&&iv+yOd;WhwgH$Guva|gYHjHb;>8ydK%B^JSOhAImdXWaY1)AZ)S@fc$=sa>lZq>{YD+7} z;|h6SKG*Ap2f7pDR%ah-b7A8WTc~J=fxkq=lJWpmNRun!5=m&`6S~8k1S|G7%o+|M zwg<6NFv;jd%wcK>o? z2j}5YafuH_tF8lGBp^;O{~*RNa6>_;&^iIUqBr+JD@81s$G=oP4_H|8K2F-^fr1k% zoc!&6xVgZPNxB*EC~n3L0DVa?_n)0-G>xGm*#;RmFD{R{1HzjmfID`IpyHCr_Dw`I zSLr}fc1M;Hp3@GKfvve{tC=d)Q~}i@IFS$PQ|PI^UUG0-zo^z~$Wz;3Y++{e=t-#` zY_wHOD5wc7-qC@YW1+h_Rh5+q{@s+^Xd^=!DAC94`<2+S$nVAO>iouJ`cx<=26AYv zkT&sygn3EQe?!kf=0z>kdsK;&zJ!K;dWu^tbEAj{{7@yT05p30Cf0v^7h?W1mb0_j zF~{`iln3L}x@@WWW0NI^&_ez}m;v7ov8D8x9C*GEDF?o-{PaShpDPy@|ETddFH{LM zvjKD%{)89wfbax1EV7@ZpDqkv2HAsU`SK9Zw@k9+JOvaoa0!=ZFrY;*x^|RPaAZFr z{Tfh==5lmv+%fMu}x+p9WIg=M4eB=Rw+N}Xb#ujecQ{pHXg!QoM8D^gYoE0`z0ka|i z-_w-c5%QHJ?g5MQj5B8NzgeS{5NDhN)i_#&!GuReF&0_>G$TL~5J00m3z{^TMoRe% zJbZxBP#GHn6lX2Py35Eh5k*+&m3NlwNcADrc*KebiuutFg_B}wS+c^Y*(C6oKebOSau^u4Bf5sO&<{Pvz)%i> zBwOo@X)@$z5hQ6Y!M7Mb6}b75NnL(WFV;hrvcgD!Xi0Ub8S9NDYAkZNK{N<=G$N@@ zw_ON*vVBBU4t}-8g7t|-kTMK4xqKpdn~reICdGn9vteL2&WZ8I{i^}BNW6CdJ{DJk z&Asy-eLh(QzjS<2?Hk~vNQ2~nhi2kU?d0f&V(Fy{XlOA3G7ScH@CjWPMjO1~z)p`t zHs;Jb))g3Z(4PE5&RC8+l_>!Oqz|m)g{xj=H5Z&Lv^F50&iTk9OG~ZR*PkeSXj6;8 z4LwCHEXXzpC^=sl;EKz^fbpB@Rxq9s85qJTb*FiblP_@4a4F3-h7WY@(3iR5+kjAIeM2D>739S$7sjkIi9M4V>ZVjNRF*3Rq+G zAHqM#QPnZTdiLOaz%C-r3t4P*?VRsEW^fPIM81&TY@Mo%Nh{dj>hMH4I6 zG&gFpBEKQS8Oa5gxUaizFqO89N=6>@=^4W}fK5G#1}&|Q zaIP+n84u3N%mF);wyN1o2tA40wnIyHcF@nQ z@4&-WGW=%ervm7f8m6B~bs3DCs4et_PC!Wghfu{f*-MP(-Gw*$B#FNlKqH?p8y+5- zox;*_K--T&HAGH8rw`Q6>+29(pBNXn2VeVfi;?z)9pc&`6P+a{BVQRF4S?bP3S!$~ zmc^YYVG+fYGHkDT6N9XRZwba02H`g;Wv@hA16vCQ<}B|N3aqQL&6`VtAE3b1I>MBV zAPNvEA+=x_pGGZ%uxG7}B;A+#0-l`FAp$QLo@79Gi}*(VQ4H@4W(hoj28I=428M+2 zbV_H>O`KJ|dP+&Y!d67<;Y)I{mOH3eI8gX!L4KwCgW&lm7|d<_7R2vEqC&vkHZ^`II!}hIJp&0Q7?mb%zR2r zYv^fdx>VY)N6TlI$u5;N^D7gEBwur4k=+7`HcA?PDVh>o?ajt;{!&@uhY0GBL0OnI zxS{v!{NZrGpPDtrLZKQ`OYATMJD$;&vxCXlLin*PDRh|O+IV&`uGh!RZzM7ZRhWO3 zo(~{mT{A0k`wRc0-?yBlb>p5B0nFK(`GQG7&U-PNSa#;zaqlD+!Vk*0`UJDu=aVwh z!pwMZCA1yypaSX<97cG2oKV7ok(p~@skadz_C`n0B18-GerV%W;Ne}16SpDya#sK8 zhL?vTH*+*&UyY?0lFqk^aRkRcM2XfP1bG0uaUv<{Si8)$6H-(>5_sZz5|BcK%w-@Y z{JOLD+IFFEA{T_1?3CO|6*n>e!h&6|8$o$zx`WN1|M;clj* zs|8@7heRW}?vf;?Ng6^Va~ivr;b5V4mgAf|7d58tV%5ja!?F?a{EL(}tG$TQTTxJw zB1k|S!;l^xyf#%No50!f(g5%iuaG;NMBxa6q9CYG&&yUWxFvH+XR|z6ONxe(SKNpb zkp`EIBh&CBeT<)HF2Y!p>}!ck^8v92ddwXF@O0oJm}5aZ3nPfaCOG-=ohoo(at>a! zZs~n2Ik8&o#pCu68!Gvj*FNh#=IqA|IbvADisw4NS8Sjmb>5Sz@QH>6liPb@T?^+p+^&lRViZ;3u@95HTiC zO9rZ*VvU6a{I)$*sRYI+Ku3_Kk`xCxsTE6!NSKwnyB3{Z?HfG;U7#WZXE8D@SLZyX zrGt{d={_Zu{&HxpO@myO6~p9Gf+yeT64+$HpV}xZ4M>pjN@emk5y%h8(2$21)Iz|b zc^dSjkPi|OJ^+9-t=Ph3UAW(Tx+CJ;XwYJJ2!EJ@FRSQNsv&xmQ&YHxOlB3=W$AK%QUAxe%m1Oo}XOm!TeZjC3@O(=3=>!9ESxNawdpg5eA7y8||anN!Ii_*YK+liSFfd-Zb z;b_|!`YzJNE})>@Ixw#i z9|P0DuL8W{zOCaGFZQ5CuXeL}|7}~ptcP{`9Kp4)U5w91MM`vvUSxuZo zPKu0D>d{^l1xE3q!7096J+4WY8>uOwlR)!f2idum+LgitK=ESd?D0^f{Q22*ZN?I^ zk26vdF{#ZQl0KIx0e1+53BrVxZ5Ed}Wa{9&^hxEXFFL>oc9MCpM*+t+4B&gNEjO$l z*g&w|U*VVQ0wVg94_eihN|neeT+B-+?C-reS99l+k`a!{`vJUfc6mz_m5({xzc9I; zEb*XcaKh#n=5_JKyovVR^&wI#?G}b$<8f;G&pqH97V(_?c<9ZLSl}@>k57=n6r!{l zM8h{j_ejA|q=s=n{r=?Z`-HR1yN#1yBlc`uhBaiV{Z)4y%^@cFyraNoU>i9Sn#zb=GZ~;RPsS9L1!I0D zNf3!eTwWAHa!@-!_`@`Bz`u;`KO|T|w4n&$a+?C+X1!S(yK2P<5F@3H&kGGFv3aVN?NuM9hL6 zRXYl?q&8$S>F5-Q(jxf-NSyLwCt8QrVth>3`G8m$oh@={XJRO6_0m9ZtJJ)nvhZOczWp z!V?7S>pRp4CF`t^{K%@2n|R6)q5MbI%ihgbQm&10GNp*yYe_40_b67^vuAc@!*l5#%os{*10y)bcK zr2vJ-|HS*QOo~CbcCsi!Q7}P*JY)NMUgb<$7q=qDJ>f8l*iPKc@j?VqwpPl<$fWEL zqU@&ST4;>jrkD@gst9<&I4LdIn(%Gd=m!Q`6*K@l<}}&$^i)ON1%=saTZGTmu4(Z;9bIG&Lvxok1vuo0Y#)#-Sk0a%4Kb_hE5zTgn08op-VIX7P$DKP^O}Aj zB63T|hTLbq!R`y&G7+K5Z~Vmmn`KAK8dJa}R1+iD2*=DpY)M7PqY6V=nXDl+@CG~# z@0fZ*v(+dSB|}+M5XyV;mQT*d-8sUy=+l#I><3k{U<7lig(xy%T}8TYbps&BpfUO? z?f{?oO0|MC)e(6>3=1(qqv@p^&P5khW2;e^#$~KmI)g#T4ir)5^smMZhbi>$L^Ac|$_=3U^}0 zN@WJDXvi8T4Swtni^6^VU`PivOJh-}^h8+F$C{FRojqu;5&M98_D^ayMO=dh3fpMl z!Vsh`7tChJAVJV7^oY-gp&w_-k`S3+3Gp(a)87|F09II0Gid6D!ifPirgF5MZ=xC^ zUDcpN-I@wJzz6(Upr$)t)nRmw3aF41aVrY?AZ*fthYS@=P{xZkN-8!*<;DiZP6A3` zXmEBKcvk*?((WG z344d5sA^miUIQPmIC_-PGI^Z>Mp{rhysZ6Jj%4-vrYu;l|3B`{Ab^&X4x^x{T#Ve} z2Ir^7b6pyHRk+oOh=qc-=&-$SEBc05^TmOp;Fmvw5IZ5$xZsi+xZ$kfkuT93k-Pvuf#tG*+F^$^rGo$*Q5HABvpn6k^ucxq=bjhs-PILHuw=NBAGkJZa|3K zaGrov45Z>C5ul5md{ii;QSfL`m52m&aZvw2h=em+5t5{V6f%*Gg$`*OCI@_*31#u> z3JZKBR=FZgSz0lg5wNTQWG2AJZUy^@CK(6t3(L3DLX#Ji!IKFyF3Cz}6MVVpGcwJQ%hFiAYm0 zUx8l!{<0+n3w%2Q@<&aCRnUbZi(q*KK|St5A3F+Q6J1b_AC@W%!W>yh#jM}bWS&MX ze@zw?Qg(27u`rq3+v360SyN?L0BF>B=^bSO+2Mj`3p%BZsag|&M7c}~Yf)GRc@hCD z9(5fDx8(qyBPvqcMHLaQi5!3y4MKINJEd$17?LCRswuWPq z|7~sPdgWe@GF(r1*q<7CrJA~S^PCDx8~0(kLk18P4T?^{UKJV?K6HY01PK@@4TSV5 zYxEXO53*u8K7qqCxk-AR!aY4IWAlLY0y)G?VC_kOqfltlgP|l7m_Q?(69bgVhyjP) z``WGQR-V~AaHn$XjK;ZJ0T}l842u;#;9SABQS4$nj0;#(V*2ihCto@@X1MC|^{c3) zQV1_VRo!r_yYg2~J-?>XB*0$PeDvhf~Ok$U_X~fFbM^S z)FD&i(^9`FB836g95a1oIXHS(f0xRRK zAba8su3CmhM8Ff89V&|RZGDywf-D<+k>hPn83Lqx+Ad)Wu_!)>?eKAKvJB}4laB$A z>deSF_i59&?MB6#ie(P7;!fmMj&tY$&|%?7c(lqAk_wchdG9TkSw zM;4OpC(=~bg87(dTA=ikF$Ouno`qR}1gIT!*#iBEjZnBrhfnh%PYksmc?V7&T)Iwh zy8dSl(}|$+XbF_(!4KMHE%Iu7VVx5)p%EMEEP&jw2L_Y)k$Qc6N*A6t_wF~oW5Nm< zt3t`5;>p##e|p%x`v+I46xd44N^*(f#CjgO9M9>^mHg!!WEYwM6&^M(G-X{23NL$K-v*MLZ*A8=%$z8}M~YO2WjjL}rR!Wg z+DFt%kuJMZ*qeXRg7IgpFA8bp%Pnes^(0ZPo;>D;;H*%JuMww(aNEGKe_fPR=Tiz} zVLj_6(zgeVVVu7BT7>lw=D<|~e@vZCb1*p;Myz%?71QlET zE?Srx8Ux7LRk@~J?9S%0WwssU1HHKu>3p&AF}0)aMI)=UwL`GOlxjK>8Q6=JxdJiI zwzAzj0cA79t?gY#5-b@DP7rpqOv%j{kZBAy_>*qQW2rkegJUNK|X8B|+^2Nwcbvo&f zX0*uWcwr_%uIakr?Sv^$T9|y(1NrwY4qgHg88#OOotTZ4Z)p0!W85x-Y z{c-|;{$NA9H5~Nsx+<=Y``nMDJdX>+LZz5&rbn+8O4u7A@erZuE!9Y;HeSPFjaQA`10N${KB9&Z#Nc2eXFi}V`k~Gm>YSdMDdFN z#CCL?0s-_SGwXxJHyX#i5FG(iI<%U_F(&R>jiS^<=r7No4o zgr8Vi;$rd3Et+KK;G8Nnf{FNSkvH{h>Ok-rDjI=}M%Ex?HuLC0j zizrq)cBRr<<3cfi3zY3%uH%W>cG)Ms&MXCjSJ)8= zM4OxT?(8@nOyIAr;x(50!-~%;G4Un>oatJiip3*^-9_CU=x*F{ZW~6F4p0_Sgs8!j zBFuecVQEOAJVgtK2(Yj6f%m6M@|A~zL^xI)NvzQKy2pHP+e&8f`PD{u7yd& zj6B1#eH8O9=t!Qex77v(I2isuL}Vw(Yt zN25@L#WaYogEDKY7zvI-QW!SPXiA}|N>lKZgnI?1S~TG%gEcAyaG0DhQ;BEOfO`7+ zii-dJHk<|unqnOucu%`JIkJm6ea%+GnR29dWQ2gFq@PP_AXit9750&?^2BAU*}y+r75g&s@_EteQcF#YO? zI`c41MP&x)07EFzyJA9NXi>l(&{B$ik@oYGRG-2WpFmq>wHRhLfyWACLLVBS+VcGr z-Yd&OZLS8W$vuVIp8`9{t)f7|CCLsD2a<*%h#P>Dj{G=2v10^o+|go=j1?lUa&^jy z2WavT-c^6lT~p0H33!*_jtqF;rY|b@z>6p!{FoIEi4ZXD;6iVpMzHDBl&*s^Kmem~gCUxAFJTpFw0U#tGR8lgG2heZ_6XQhB3*Zs*p*zI6BJ;HpvqF_}HEQSRL z)sJsNYXoQeBqAB_pmPwY2v5wH)06%yb{|IrZ`)fUBp9%a<3 zQE?pN|G%+S{a|utDq(xLDv(}NES*-u?yH|mL2yiZ@Eue0>zQQ`g`3+o6H*_3LSTja z$VvS3QU5GrVnlX>;xc8#4ui|al!Dcjz(J8NI$x1#c3|JcD9xaP&viT=z?3LP7IL3c zi^c!A4AnSNw@qy88^;h~(hh7w5XqYMr^4oyM=V5L#|+vO-2$LkcbDms!}AJKcj&;o z3eVxDh;vOZ$oh+APuvDez!L$41kBxu%+#Zc5Zk=N2Hr0ic`Xs-2xqYh=nRz*V&FhE z0MRE%nO8LPWF_1H=lbHT2FVXUm~>5v)@&>+>sOjG5XFSbl|nT1@fp`rq?3@?^IjBo zkufr*sEhxNY$WEJ3F~E2^RyeJ&(epG0TIk#oU}t)qYpG-VTv@s;~+MImza&lgJUMW zI&3HBil!pgQ|!Jg4b`UUOIr$A>HsbC8QviOBrl0&rIP_!Q^y{Zlmc5(JvP4R8hwIf!rhE-zdg|yvt3ZR}7D2kE*}gxA}kZ8cYi8qgFQNQB~9 zAFFwhZii`ngT=B2R8)m7?H>Ce(+(m8!PaiEFeQ~y-W}n13M9SJI(gXZQVwwM(FU-U z0q#+?1&#-2)NQfzQ@uHan{{nDE1n1)dxL9O`MHQ};n$4Agl7q_SBNld@iwPo?%?NG6NX-Ll%{BzS_wFwnyghuiDqj%jHOOFRP?6prFB7kb!$Ut1_p@jS zd_C_l|HE_A?owD04%ik{#Gm|-l{O^UA&ayfI#42299wWP$~zOA)$IwbwB4PIW~sJX z7xF!}lLKU?x5147^fx!&xON_iDTXs2?f@=ht`i0rh7FQ-PbBg2bh%@2v7{GNfI*Dd zfi(g*1PI(sJLw==($xgcu*DDhu`|LbLF!2_7YkOIzGb`j0R~d zX~?yxp}dhWv)<9LDQ%EBz;N*-pq2W~+8YYh@^RhxOff)>RtNvMV{BAXmIXOaLcIdf zdWhySXjehMP3TlmE6l#nS*88IFy+4fI~?eo>do-*!_io@4{=B%M|X}-@DcCblv@a% zOGOux;6kxjHNMy+{c{Z)Rtg-8(e2c2t-8#(TF=;Exx6u3%l#%)xLZGHBZ0)bQ&( z$Tr@|p)tjjh2NEU`I@dJL+kkrVIbb}%%MQF8bPZf%?Jop?`xBq@_<`|3-yJbSq?nC z(uFjpc(Bt&Wg1CeM5tTUi+5Nu+8}^d#wA}f$nGFc=G+8tw32t_$zxrCy& z+&9XKcVNX5KebgMNgJoTWhi~zSzorG?_noHY!_`-_ia=wRQO7@xi%6jhpwC;Jkj4N zV66nJy};@7U6Dz4hnPTA!y%YgU{R?OIJyJ1X0T{PZ}3*_5I>$L)DnJU(3q%#jt5*5 zEEstN$d(PhdlM`fDNY0&g4+zAU&!B{mBsECDvMRR$oIM{g5=(!=m^VbKY+C&$-UgV zWSU^*$c_UIH2u&n8=|UM0ZpA}Bn~Z;hF#Hl9@KUCxx5=n)w<|Mn@Tn&Ykk4}K#Q4_ z^-fZ+r-@gJec_G)UJV57H-|e(4wY%2&M#Lw7uXvlh-PHb3y4T5SwyO^_FA8)oD7s7 zA0MebVRopa*dSn25)(wg&!oyxGp?9W`|TT0WkkWY$aD#}d)q#p7c> zeoDH(r;xRvlRY?4&_p(th)0(#U4o|Fda6gWWy@;yQRBa@z_d7qIA`vJH}wi4+9b=p z{`qZq{VeNb2RwUwb|^?UbH_Wv{LY}99hX7CA5e5Tsk-@mI5rRhQ0(Ln zoR-v6E}^)Wy2;|_Ild&|&A71!09RMd#25!Oa?M)uv~1S*2eFJ5Z7NP$!-Z|BZ$0;{ zs|P{mEtwacUpVL)OxfY_mn*;(sS6JNt{mssJY5V8CL&F>h^U5=>ryBTpRCc6sERU$ zvI?dJ%rQqx%cLCNq8>&EwW800KnM($faW9Yit3S~7Fa|H7Cny(5z0dHcuKW3 z51FVwhg?cRuzXY2+)?jU2~b5FR})F(ZK4Il4%l#C>v^$Zr;&L;n^54 zdNy+rLN`z>8Y=%zd4b3RRG3AvYm<5wfuK~K8kMqh-hdu_tdXQ3>fV4CL@F4 zQ9myxfs=FJ$LLx2tQZZ50&rKc=Md0fGl}aF;Z^F?%Wg1$!GdCW86^QlWsPcKjTK|S zNK1JkWEq4xLlxS%8Bao*r2NvLunr{BpqTM+Jr33dW6SF}Lzp0Cn;9)_n$4RMg*D|+ zoT3~}E*;mm!kPzXT(W-sdda1=W>7K&2>9nHRCSfGzV82Ww=xLHX)m|!^hE=sG=B3v zzl?&1S|r^n_g(IG*nxehYoEcVS|U-@;*X-XKp+W&*U}dV#f#QIBJ}e2TOg+R?iMX+ z7z82q_8SYkco9tlGZM`q0~RU1ojs<6`dp*=(Omd~TOAEjS8vC_4q~;vskmoxbN_uz zcLOihA_NXn>0&7gX#u2izG<-22SO-FOE{vJ-86<#qq1R4VkSIT_!m!>v$zMv#tz*j)&x({ZA(9v#WA! z=)R}DEpigrke+8R2e}iuL;|)hCIfO$Q@zSGU*Xc6H?Pe}+2#gUHyWh!0fN)YBVCyr z?Ku`c`lBKaP9>?0j_}s{TzSy}t|RgqXWp!82~(4~ajz_~&wE@-OcY%YWrnwT}m_)~!H+N~5n1!)wpLp$INqbM;k$3}}h56xIS z&ul2ElLh3fRyl&o!B1C1jxoCY^kxHyp}^>>rAm5CwYUea+vzu`55~{;gF1Tnv=+D>bupg zC$Vi15sIM_K*c9aRhi-G;+O^Cjpvco1`Mi4N&cy>0A8vGMbODu<9o;o5)720L1@jv zqz@4s zu1{jY8=gW?>$KF+wS1e{ICi^^F)Hq3Gx$WoGFnhRkAU-i!52y# z9eR&nbwswURWRUozX*03i&_B&=7H>{BTW|q75HNOr^T`baH+zJYV%^VOU3WlIl^Bw zNQ(IcA{NJ)y-TieZk2`Z#V)Q~Q8~Q7|Ru!}Q{-*Ty8Ey_at*sMdy)r`; zwvl|Ppc2B^Q5h-+zqLA!-p|+I#ZH5O`lDn7> z*C0$2OUT!;#MXAXuMWk&bb1ud~GW|O= zJuQMGOCI1UrK?KdJ2#&t>w^Oj7;_ zn37f)sK9Y~5^vHkkR`Qqt{IzF1Ee6sA*LP)6gi02G1OygBr9rVbWb8Rx#Rb&p% z0^vcOYaEq19^VhNM7Y5g8uPO#-U+PK8#^F*AW{e(qQ`LKOOvKI1VqB@=&qOCkfpV} z2AK8}EbRKi>0i(g-g0&dN(FAiJsK+k7=)1i`w{UAo)GeR1{hPX=0A)&`m|swq*ek# zUOwvLygDz+wi@Of5clii{BoJORwA{gi&WbDT{7;?a0j;0@0)5@2}XjgMidAiwj-+j zvI^NJcsZ-^CKBefS4Tt}(ETDE`{r%dFB68?Km*-E^Im4!pcZvxyg1q~9&*#IphP1n zq0muFNzD@sq{-h8mhYM_Tu$u+QtZVeHdIs~u0Luy4c?cu;^0V@WOR>P)=44r8$g>N>zB zJ-eadTgu%#FmO+@=Jv@fibqB8s_2`+L5QwA7)O#ttD}>Si}$o@;;V4QA|by(Nz?5T zk;6;^OkdZpBo;nkkcj#aXjTEeDMHrFnifcfmg(CW1OtWvFr`iJ_$GI|C_m$}jX49` zp#--KT!SoU<#UKR=md=5q~V;;lna-9Np(lMJTL->vsNO(jcqVxTRbJTtv}X^ivMMR zgqGnuV~_D|+l7PIY0)o;7~hL4C|AQE(QoLfA^Vw2N{lJOP7bgx8biGY54KGGZs;DQ znMFc|7{g#bZLZW_G#Le>Vmc&C$PprNEm1PDi8M?#O#}3}68cj_Nr}g&l7!KvB{D##~$7dU=jV zWP{M~>Q3)59xdzNSWdIN_M2h#D8YOhTx36$oiN?IA70+>0ciqt6s z0!lzOl>p_kf~9CeMzs&YL9ny+$vlkf@B)}u?n3XBa{5-o4vvftqo74)%%JZI2tB;g zJK6w#B}`4K0qgjQgF~$!^B*IE=RswqbY@@tlt3U2c0Z5C&cEd7VqL>Alx82hN;TDN zR1HY11`^^*_mLSNl6X@$$D)@5*y>3suH>yal~QZy4kb+r!A*Bs(1|)iOK$lTqkkYj z%~mW$Pti(68i$}lk&fSqjY0O`ZL%OS(%4D13GF-c{Wnfi67PwGte}BtWxfc|&dKgp ztFqYu)#_H#WnG+b%9}EK+@=sH_{W&toCq*z5xSB)wz$6y5o5kRy% z3F0S>i=mUqo-iL1&HWHn?4m%X*SMt1Z2*f#lPUY)Ts&PDq82INisCUK27Xo$;Q(mL zlofXto}ZEzlg-o%ZdW5c(HzlHsPkF`>n@SbIOK&%64+sZl@jBl4$1d*A}pX1Z82$u zqVzBZhr;9oWjiZkRT`!yb9bv&-p2ig zbhMo_9|xFr3<&&>`L5O^TPL9CPZ5mv%h*bkhBK-T}>r%v2As|G+Egn6F+P$MmV zN)Se9E>!Cm{~dhGWbqmJQ7HBnE(D2w&Y7!nqCPWQvCvr&vOCUiziknqj;vjp%nO9; z#818cp!SQu<@~#l&Oe+dPk|#z?pBU;R>l?c@TjxsC7gPmt zR*j1|fQgjuOb)SCXvI!R`CjT}5(ZZayOU}|1g0Y9M&`$WFXvnY-SBr~%MLG&md($1QueMht(wnEx^tqU9!9a$@1QF@l+02&`;&{xyaF)IN zmBHl&xgEuXzyXz|#~v1nswlpu3Iwb}0~~_#|89zlIB(Pg!ll;ePt-xnfr#WV0e*e` zk6v++;{hS8rd6g~3dtuNNCb(xr%%8#PwcV7I2av(qX5JjB2cNNZW!l?1R7I+9}8pw zmL0Ua1Ld>Wj%%P}JcHW$EU$TTy%AVbsW&0ix_x@82WCl2e}xjXu%e3>!%0?pRE1Ds zr7W7uAsv*&0KEDAn8au?GGOf7;}T5^Ykyt}BS}7W_C?eEYV|jr`)3T6X@w-YT=JR% z{XkqbDhvi5;EWYL2!#Auj3mtLHxsT>iFILsKM6`P4W)Hhtk=42R*TvYx(W$jcwEa3 zxCmmk<`;=&L3(2J%!5}7Gz_()w;6K|Fxtt2u%wLTz$j;)NOKL&Fnlg1iT8ZHxj%7C9l)b>XvqN#83306QiJ|DfZ?e%9wIbW!=jW|{fFVWN$f2?1lG?E}bFP5^#aOOKO$7+a0>;o^Z z{`8Nrl`#$8Vpxn~@h(^*SdZ69JWsJ|N%%hcuu6R3{TJM*3D+5C>lb#N*-&ChI${-) zTC_p!bdxX(MPyKyfh414L8usjz=43x;z!HiiYBka$;Za@3@Q=v68I>D+u|6w2W&X~ zf#-+f2_iWO4uJGwcylxoY06Iv+jzJ}68Q$b+tCmEi$6w+bW1YU)l z3II{dz}MgJK-0w6VlrmX1;W139bSTw`+Rgk>sn4z6ik?R3f|H-Kg4v;wiUGy7Vu4DR5@MxB5TTK=aTB}Fg z6hq0gK>`9nvWQz9GfxOB5pn9YF)vQ2=4zM$^bZ&XmNJac$;zjau~jw|D|HveR8j$M z)E%_;SjVJI=Np}6r1O)Powu-i5eHJTI5FIuwYGf0s2h4bP^=CR0urtY@`IFUW9azf z2H3)yD<}l03qV~HDhkN>Mv0k--(o@K#p)zQhAx@kj>h}!8VG(z_CVjC((%6zW~6sw zK_DCg0W7BGzi0*^@|RAhESKwumg~`CKw07`oIRPSNs0P=!xC>Z1{D`SUnk{;7|3@W z-)B3NY6YBqqv7nXq?3QV`=3z|16IxE>B+*j0=#>H4EebPTqP<-@gZScLoEl96|2>R z;bC)YZ9^OnxJb-{>Hw00UH#uQL$4kYDt;M7Iez~?dt;1Q~ii*Y+y zIQr7u=}};-rp^^W(1Mrt#-_ZO6~nn}*bsD;Q{f;hnBFX?)@Xc!D!uE*r`o+3lsFx- zb(Rolm*3uho7|2EFT-nJHW>-eIR{J|gj&HuC^r(^6ESHJ)_18OqH=P2PwPnVMT*IG z`!fe*W%a6bd;#iXp-1(QRwYO;;V}sIRs@i=@d7eZdc4^jUC`1KYo7BN{5NNzhJQ_N zzig5OTj+Fh=`VXg;L>LhBwcede~utonJw|SQ|^b~OePfH#Dkg_@^KbM!TIS~4me}B z_BFYj`zBzo?VJx~a^>B#%)kp|g?NlW)j)Rzx{5{ouC#RAZkKjcTy~)5BFT z6*N%-hM0h-%SM9j1yE^5f@Gq6q0$ETZV}kEgCi`iP!DRl{SLM44S&KMpjNm}z`%eu zutAMaIYnTE4FJjHf|3_}-J^J`!Xa-0L$E58OhBP}!G2GW#07+a9flhL{b_&{JpzGaC9ic`8B<;M?Wc`I_AbfSsp^RfPn?!3g zhJ5?qQ$lXX(UL6GF$0+JfAb9o1I6Eu62cbaW`(Zc+TbK0QqUEpHfxxvA2;sAjxY!` zfJ?Qz*)`v%{A`XoqZ^4@fQ(f{V73chf`Y8G;}dY7c2Mrdv@>tn7R?{G+8Ba@3Kwvl z#ZifJ^SbA*aTT&^$lst!E|FKp%|YeIf5UI+=FhJ3H6Bn5=EJwN)QW}2a+~CuDVe&_p-`jiM5j7G8bAKq9Jn|p-v|2r_hWxHpj5#0+t}et(B2Lt-O@|u_TwTTcj6f>G%a&Zk9uvK6yrBw!aDVi$u?g!t+|kjG9(PUfbvq zN_pTGfe`5oGqkfg6Neg^syIQC`+Hhgr$k%pz>4ot9!+5-$%J zkh>mM==3gXj8xIL0xm3@Jz<5oEfRep78#Tvq&rOOhY;Mnz&nv9mj)K47VZ6D&su12 zbLOH2nUqwPL7(#5b(+SK^2a~~lMSmx=}u&3HMgqAtMxsf75CZe?$LHSRyPtqY%ii% z?n^CPi*#q2^ZE-(3K^)MP`ULRlOk`}xspP`|Bmj2hDS)p*z6v`0Zn0>_rhpfze`Fe z8kmd~XO0PA(8=<%I=U$o5l|H%B+d|RqL@&`pxQQ2;VM^P(4LGDOCRxFji0Om=v8d! z%4>o7C{kfUxR#i1J9v23&tC#Vcg7_tKr{QRxQDN3=KdYV$+|D~lMZ#;!RlCbP+sg$ zY?vO&VoNCP;)-Ys*Iwbk1?)&B&uJ4+hE)Gg2uP|FlvP}TL>fiLjJRT~cVA;{1zo`O z5DS$H~#^P94YZu$=8$Ksmucr>u;%@2qt$5Jm46sKq!_D2-Q=K-X9~| zm(u~L18Bq;!@^iwBDHG8c2+p;2fIyp!m%E3z_qO$h=g`nO#xnp5JPsoi*l0UP#DCp(Maz@;b+Ik-U&pVLn*@)=VnLaAK)`q*;p|V83WG#t=%|*wwAm=EQgj@hmbwzVXLOhl? zwV}h4$~7+U!4SnEgVPCz*uZxEYR@OO0;uUphCc^05zd_c7VI-3;TVjewHKbZso;8cuJC5C&1O_^>V}(3kC4esa#bw_>VKtnBC;Vh-T?Wq5;^l~QuZiP4vmjB%ZivKrYymn_nUHM(Vjj-CF@D&|*U&2cez?T_(OaekXE}YU`?%+=s?}BZ|Q&w6^V#(iIL{i(tlxJOXelXY+GF3k+6e zkiQ$Y%2BWc=J9)XprH{7VcZ!D3c?T|R8(9y!NTFJJ+|1Tm1xM3Sb7v=X_%1;bidCxivs~!WE|o1!w0#C*pQq5G1cjb z7>9oC>`9;y_OiMnaS-|@Xv|C)DaJ_MXY<9XMU_>m@ZY?|qLxMlt`hQ7hFQ^EvaYtR z7zNc{`5h&8RRz(ff-4=~7OLTI6L#RZ33Tq`-AQu$l$tX+6=q1Ii8zR&%NTYr)2ecE zw(dkMO!kpz!H^<}e+75$m~muO%42d~@7*yql~!L5#aOh8O*a@krd#affsAPCq9PG&AOWHJfS(@F4<1zC32<;6Na3`8kezkhIE-BJ7S zI_%=#5o~-I{{$!pv@~jjdzU%Bx$GU)i+vp53@_W>KDa>L*C! zJA?>`hE&+XoGLj`r2TNOGPDx~3y)$aEm3}O5MW=1*B-i21!n&pe*@ro$WRB{=mGI3 zksS~#`SA9E$f;>Jap#4rFHr78_P6YV7 z8fF%#R4Iq}5210H*8{T2SQu9ay*lGHJa|}@N^!sapP*PQX4-`k5?thT4I3!ij_(Z^ zxpFQ6B3{Wu8+4XO893O;7UUcki9G6)Cv?!t;)~(kf>=%uo5}C%j-_O z1cvvCb@B_yk&r88rkBq(Iu5Ogi^vxXMT2l2mUe;*!BlQiMB&Go9ssavD4-I*6b=a$3^1F;Qh+7+1slm@ zp;@D9H}yp2FMnPhnpKIiF=*ml=t)3w{0NUwB`%>&5e%3e4XEi>gG0Q@W?Xv!Z?Oh1 ztCpZlP8t9ay<6Fc_C}J`{HR9K3~H_f3cQr13b#WyAPzVZOk~1#Uf|61L zNZBNre~s@#NdP>OA>E&+i^+NGL*1GAz&Hw0kqv#dw5Nblq5Z$!GL*9ZsaCcu37gOe zRM?&BHqJ-VEn@CaEQL1GbhtIe0EdNoSU_VP#0TS=VFxf^Fqq>C7(vRnYLIhGbDDGi z;=p;a9DmKb8>^Xx44tAjq9@NUn{t3+G$G70GI2cO5CMBDBPT5?(Qy-i#A7=xPu_#s zuHYG`n04O4tX%8VA+O6tfZc?+$R!AS-)D$n(PtQj5)1<~nnOQ^=fi9J3dQvKwgLxl z-|tEgE!f9>`&_Nd-7Fgaw=IMxk~*H*p!SxQ&3CZRZBVN&NQI~s#Oy%zNMQ?|fHCZA zO~en3C_ky{8AQRbNGQt|me9Fb_d7xRJGEpuDg4gRzc801pxsjFw}2AuWw1SWXd_WV z40J}s!`;QnK{G;*RU0WOd8k|gcJe;W3V#JcpZ3GD@_%Wmgtt?&;Mx^3;sn*)fM`rD zmx`8yUAGuVkw&l~`pLQLVWkG&>z8f-;CI`A`~d87hpht&`)Sv}J;pvy8qLOau(57u z!Ys%%2^P=r>Ci9C0Ks)~BPKZude)b#>M|)^`Iw)_@E)Qe zcGsQou*qPC-_HX4C{)F272hD?J`HT_X?)u(3NT~+JAGdT>#dJ;S6)&3St0+qZK z?1Q|W5qXsr%%rQStxYtfF(?&T551)UllK=`pm*9!N&xlpfNeidCv6k_!;69y%fnBNfVY z`AtMUA!9v%%%GK3j2x417|_^5s5k7w$O$RHJ*#7~;Mo?B&@f{1rHf!Y0=)6HZ0wan z@w68oysCSEWNb#!8(Q9Ej2*Ku7VaC*qTj#TBGy-+F{+j%)ToAW2s=Y4p4uIEWmR#Q z-rgIf!_zm~%OdkqQ{`T%I%JyTE)1Ri_n zHd=lcVFJ?0K)mY1mIC{%LFGcFw2dD#|C8f~J*+;=?)jyn8yQ?i&V+50u=aF67NS`T zIsznMzh^;1CWXw%D;IB!GN4phx$yQ>Blb_R@u7IT6a3sr375{LPWAbJ*?sG3;zPP! zjbNZP;({iCATuaPQ4FV|wLB7t3Q8(;p^;F%HwR2TDw`q$qe7%XhJhtzWTujlvHpM? z!0p=g3D6@VM!u-=y%XX{d5t50b=hYfG3P+2=^QMNk7=v{9M1tkGNltSfuzzvcqJgweVNcOzU7zAYTv(7%(uli`z!#laBTiv&waQ)I_|n z5b7_8SRJqMJzt)$z%M+&NED$t)?im{bcD}Ps6MdC#2>ZOL?kt_M`y{^z!TZTLMs|q zO)S(y!MyG1H1nn?ost@h{B;k8(Ry9I#DQEMMk%=%4bDvmNk0zoEyqIZis3*gpryyG zI&QSOE(cFbmC>5S)A;Yoamnj)M@LNjj|$EKV1pf22!Ft%n{0j~og}Q4qGV*P$r#84 zq2jovuy*`Aj=&%&dt8ySW(naXT$%!4NpT_EjRFZoei7GDtD#HS{#7J7hVqHH12(GJrIUIUssa zbf{~{UcEpH8A36ioDdW=JR$IG%mVraatquQph`hvg9--< z4!9MNBY<2$xLV|0AK(~G?9bAeSkXvngG}j za1g*Qz-0jB0Fndz23QOr44^5#Z2YI@UzWau`0MZQlzzeZ-}B#)|I7CO@1K(X6a8<% zFZ2I>__6sn_FuOD4f%)A|KNTZ^Dhwkf5jfy`!(;Ut)4ghS$Nj=AHcs&ya@V(;0N2^ z3O)zCS^8u3N##4F??~Q?ogRATbd2cn)x)U=Y2M0RQu{S@oa#f_7jo{*{akzdmVg3= z9(q67Uhef*v;BVKe;s+D!ao39`{DzHP7pW}=l22J5Aw%^ZWFjU=C3aJWyfwt<-?3l zPB@>&97o`HV!fd^3*Iws?XGt3+UCl3zuX&l?dmqN*yC-DxJE84633)^>c*XdodkOq z!jVANf~PSmISj1k4=Ox`AP&oMh%q2~=rdbNg%J6`cP43cs10lo9t9*Qalp26P9?qR zHo%-fb_KEN(*g*B<7a$q6RJ8h_YfgPm+(*{djb%E@Ndcnxx#c|%b*npK?O6i?G5X= zVX~}1(G@?ASeAak(>Pk6xC=4QHCO7RIp>T96`F#$$f=luJ!^mHV8eN7atDjZ2J%h^ z1QbBCO-j6wSmfwpZU7$i=noJO0qjx-ho-I+L%=A&R4YwUfiy@wFZNH9V|f93X)s`D zMM9_HD$j5#e8goHw1pDa!R;|Lu#Xb0EHQVY^^p3>WK=fk-oA zAu}O&^p$)eMDn*-3Bqllu6T8Z0Ns*UmywW=(*6~C$|i^h;HCtwb6-mkmZ=V2`JIwT zb>Ko#Nkp0sfVV=yc0{0XMrRPymr5m*3(>5KARkRkDWLdXje|VXq&}}ba}Vv}S8Knb z0Kz<>PT!NaBk#tjyburpFUq(LoDnWIa1mMp?JPCpoWNQJ^{XL&EF(@qJaH7q((aJ1 zLWsOV62kC;x7!hwJpC^#;5dA>&7X8Y0T+WnuX%~XOC=f&WKK^9xHIrd8S1^9?g-eO z9v5*vZ95YKb!XsDSZYCjJ}RdO^N2}MGVorS7**dRIZ*4tw6-`Xlsr;GNL*>eoeLL< z1l$e1GGYA88(TX<)!PZ3n~lh;WyficA(MC<4GX3`pN>qSFl%h8;352i0WqzjwU|6X z7-1B>nK*udYLYBOS;sjnn@NsV3sI-A;{FO{?1oc0AYoE!(I0$P`kF{pkq$xw*=Xc? zRRPhbu+l{a*y@5ri%f(f6XOO<5@^i7;scS)!`n_sF@iV97q^%a2nDz!WdU$$&}F*1 zy8?0s-NMA5GrvM*-;P>Qr8CkFGuS%#TrA;+)o`G1P$Xzn zk0Q<<|FUREIp}gI&$4P7Lg-7qXuoGClCSZ@#kYMV3O@`&kE+Ku(7OXDM^v`B6McVA zT=Hl9lE-S}>$H1mEB_PnwvMz(ES{ z?gjuYoGGc2YVy$W41Uv8ix~OX6tSELl2oN%pLX#`>sY^_DfXZg=801~a3*}?HrEpy ztfdGkvpPz8=5Flq-O;1GOHD-=Gw9WZst*P;z4z@DxeI4eYS8!xl2}79^$HK7Bk-Fh z02nw=k@)N`9A54d!XX)xF>}^(h9L##*T~AsX4oG2159o0j8tYPV@-Mm;>WbT2IciF zP*@L8(Zm>pWP5|h{Y?2cc{htgnB5~( z^4gd<_z7cDZ|#-zN+HUqb3q0^9m9P+P^OAXMpu-oI~KtgQ#~ zd=q36FQ=yEB0x$#v8MlGA{xbR0=`yQAIhSBW{xcD?NqP$$F&q5erfT~f(pa{Drr&* zCn+U$V%lIRU7ayuWCOG2l9w+moT20~W((634 zmJr1-oRDM`209QDceG<`BqInbt0be8QrV>ll=U`0>WQh_D8MAJotFu%W0Lhk+1Ldb zY?uN^sOUn3XYP{?d05oj1ke;N1GreR{SQEwD%foqHTN(vj_$q)E_q+|k^dH&w14xe z%=S^LE{JCc-VD$ZQ5*<@si^RLL~-dTxU=E<=uk@iyI>x|OuTbcU(_|(rjotr6%cr1 zBmpstr;Nus`UDOzE_2}th;c=-Bwaz4KfC!_h(b{BLU|yOS^G|M4c1GTV=l|z962Hr zA+6#o$B89gdxR%K6dB~@wb+?~-N{N6-+js?a_joB8l^tu^ionWYhdDN%}DgOwkhTRO9IT$=sM^gcFW-L8)7-3ZDak^`CRx+;u1Z%+H zraIVI!8VjFlp%C}=e~kdF`(eitLgJoR1xtQsEK3e zYseq1j?IZ8MKqUr5PmkO76F`1YtlEk^@V z9!4@iAz>|J)fsd|0YsLO-sU)-DZ)+sNliOpU>wS{K`RikZBiqax=RM{kdFP}a-E<9 zdIGKE;ROY=xCH=%i--#V#3>+NC{B(1(1gE_ngeM8iC=^ktulJVXL1*_K`=-|W;g0h z)sXW6A_OOb2`oD>6#=6(SJ3|2WHwATn@p3K-(FMz^;csO2qnwuO6Gb$E$e32!1hIM zLv+l7lbeWK2>=2}9D40wgu& zeMKWcZZru{Giw&xt^0dOv~<{T`fWf1xB-*E6<7Ql{j$AcUN&%unDG;(Wl#xgmMyu` zHs?BJyf)tG+Pi~l>WTJ4Hj2nGl0Y`i#4%Q%zv3)-jZx-*s}@qO*dPvLL-G$T=5qR+gX)R8jP{K+~B6 zOXLg_6lpvGr0>R%DrN`J(ZOme9(Hb;qb0r`&bt^U4N*Ubv#tigv>O7zYs%5CYDTr> zwH+w~Y63oy9T@tM2R?o#3c}FvlXMNp3L*XmKUMEh7n+0wB=fWsbD^9j=KG%1VBlMw z08@CLOU-Sp28WrIXo1Z16Fkt#C$U^$feY1g?V7u22Z~R|kgFGEdq$vFCWVdf=d>A>1|oxT0s}m)tIhmsEw85nN#PCu;$`nGhP-Pn{kDQHF_dt^k$9O6(G-qI{nX5(1RY zB{KO$j8ANu020&$u@Xu!1fLBO0g_GxlJO*rLu`irAg0Hw+Qy~N^rFj!)O6;qA@Nsl z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/theme/blue/css/plugins/fonts/fontawesome-webfont.ttf b/theme/blue/css/plugins/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f221e50a2ef60738ba30932d834530cdfe55cb3e GIT binary patch literal 152796 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

        =v_rA!CPE#mM^4@)}X7qf;At+v)G*FZd&; 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 ALjV8( literal 0 HcmV?d00001 diff --git a/theme/blue/css/plugins/fonts/fontawesome-webfont.woff b/theme/blue/css/plugins/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..6e7483cf61b490c08ed644d6ef802c69472eb247 GIT binary patch literal 90412 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%0Ded40&XED0GYFoIh+AV*?9!MR5pBW?X_8Bp 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 IH>08b4`|GD*#H0l literal 0 HcmV?d00001 diff --git a/theme/blue/css/plugins/fonts/fontawesome-webfont.woff2 b/theme/blue/css/plugins/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7eb74fd127ee5eddf3b95fee6a20dc1684b0963b GIT binary patch literal 71896 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≠dR0E9ICQ{-tcR;@{R^I5P#1GUH!p=-{c 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 literal 0 HcmV?d00001 diff --git a/theme/blue/css/responsive.css b/theme/blue/css/responsive.css new file mode 100644 index 0000000..d5f7de3 --- /dev/null +++ b/theme/blue/css/responsive.css @@ -0,0 +1,22 @@ +@media screen and (min-width: 1024px) { + .searchform{display: none;} + .sidebar{display: block !important;} + .captcha input {min-width:100px;} + +} + +@media screen and (max-width: 760px) { + .page-header .right{display: none;} + .sidebar{display: none; width: 100%;} + .container-default, .container-widget{margin-left:-20px; margin-right: -20px;} + .container-padding, .container-no-padding{margin-left:-40px; margin-right: -40px;} + .profile-left .btn{display: none;} + .captcha input {min-width:100px;} + +} + +@media screen and (max-width: 428px) { + .topmenu {display: none;} + .login-form {width:90%;} + .captcha input {min-width:20%;} +} \ No newline at end of file diff --git a/theme/blue/css/style.css b/theme/blue/css/style.css new file mode 100644 index 0000000..660e146 --- /dev/null +++ b/theme/blue/css/style.css @@ -0,0 +1,2562 @@ +/* Paste default style.css unminified */ + +body { + background: #f5f5f5; + color: #58666e; + margin: 0; + line-height: 1.7em; + font-size: 13px; + font-family: 'Open-Sans', sans-serif; + outline: 0; + text-Shadow: 0 0 1px rgba(0, 0, 0, 0.2) +} +::-moz-selection { + background: #D5EAFF +} +::selection { + background: #D5EAFF +} +a { + color: #399bff; + text-decoration: none +} +a:hover, +a:focus { + text-decoration: none +} +b, +strong { + font-weight: 600 +} +.col-xs-1, +.col-sm-1, +.col-md-1, +.col-lg-1, +.col-xs-2, +.col-sm-2, +.col-md-2, +.col-lg-2, +.col-xs-3, +.col-sm-3, +.col-md-3, +.col-lg-3, +.col-xs-4, +.col-sm-4, +.col-md-4, +.col-lg-4, +.col-xs-5, +.col-sm-5, +.col-md-5, +.col-lg-5, +.col-xs-6, +.col-sm-6, +.col-md-6, +.col-lg-6, +.col-xs-7, +.col-sm-7, +.col-md-7, +.col-lg-7, +.col-xs-8, +.col-sm-8, +.col-md-8, +.col-lg-8, +.col-xs-9, +.col-sm-9, +.col-md-9, +.col-lg-9, +.col-xs-10, +.col-sm-10, +.col-md-10, +.col-lg-10, +.col-xs-11, +.col-sm-11, +.col-md-11, +.col-lg-11, +.col-xs-12, +.col-sm-12, +.col-md-12, +.col-lg-12 { + padding-right: 15px; + padding-left: 15px +} +.row { + margin-right: -15px; + margin-left: -15px +} +.container-widget .col-xs-1, +.container-widget .col-sm-1, +.container-widget .col-md-1, +.container-widget .col-lg-1, +.container-widget .col-xs-2, +.container-widget .col-sm-2, +.container-widget .col-md-2, +.container-widget .col-lg-2, +.container-widget .col-xs-3, +.container-widget .col-sm-3, +.container-widget .col-md-3, +.container-widget .col-lg-3, +.container-widget .col-xs-4, +.container-widget .col-sm-4, +.container-widget .col-md-4, +.container-widget .col-lg-4, +.container-widget .col-xs-5, +.container-widget .col-sm-5, +.container-widget .col-md-5, +.container-widget .col-lg-5, +.container-widget .col-xs-6, +.container-widget .col-sm-6, +.container-widget .col-md-6, +.container-widget .col-lg-6, +.container-widget .col-xs-7, +.container-widget .col-sm-7, +.container-widget .col-md-7, +.container-widget .col-lg-7, +.container-widget .col-xs-8, +.container-widget .col-sm-8, +.container-widget .col-md-8, +.container-widget .col-lg-8, +.container-widget .col-xs-9, +.container-widget .col-sm-9, +.container-widget .col-md-9, +.container-widget .col-lg-9, +.container-widget .col-xs-10, +.container-widget .col-sm-10, +.container-widget .col-md-10, +.container-widget .col-lg-10, +.container-widget .col-xs-11, +.container-widget .col-sm-11, +.container-widget .col-md-11, +.container-widget .col-lg-11, +.container-widget .col-xs-12, +.container-widget .col-sm-12, +.container-widget .col-md-12, +.container-widget .col-lg-12 { + padding-right: 5px; + padding-left: 5px +} +.container-widget .row { + margin-right: -5px; + margin-left: -5px +} +.container-widget .panel { + margin-bottom: 10px +} +.container-widget .widget { + margin-bottom: 10px +} +.container-default { + padding: 0 +} +.container-widget { + padding: 0; + margin-left: -5px; + margin-right: -5px +} +.container-padding { + padding-left: 20px; + padding-right: 20px +} +.container-no-padding { + padding: 0px; + margin: -20px -30px 0 -30px +} +#top { + height: 50px; + background: #399bff; + color: #fff; + width: 100%; + position: fixed; + z-index: 900; + top: 0 +} +.applogo { + width: auto; + max-width: 250px; + height: 50px; + color: #fff; + position: relative; + padding: 13px 0 0 0px; + margin-left: 50px; + float: left; + text-align: left +} +.applogo .logo { + color: #eee; + font-size: 35px; + font-family: 'Open-Sans', sans-serif +} +.searchform { + width: 220px; + margin: 0 20px; + float: left; + padding-top: 10px; + position: relative +} +.searchbox { + border-radius: 999px; + border: none; + height: 32px; + width: 220px; + padding-left: 20px; + padding-right: 36px; + background: rgba(255, 255, 255, 0.95); + color: #37363e; + box-shadow: inset none +} +.searchbox:focus { + background: #fff; + box-shadow: none; + border-top: none +} +.searchbutton { + border: none; + color: rgba(0, 0, 0, 0.5); + background: none; + position: absolute; + top: 18px; + font-size: 16px; + right: 15px +} +.topmenu { + float: left; + padding-top: 4px; + padding-left: 0; + font-weight: 600; +} +.topmenu .link { + display: inline-block; + padding-left: 8px; + height: 25px +} +.topmenu .link a { + display: block +} +.topmenu .pastebutton { + color: #FFFFFF; +} +.topmenu .pastebutton:hover { + color: #404B5F; +} +.topmenu a { + color: rgba(255, 255, 255, 0.9); + padding: 7px +} +.topmenu a:hover { + color: #fff +} +.topmenu li { + display: inline +} +.top-right { + line-height: 1.8em; + float: right; + padding-right: 50px; + padding-left: 10px; + padding-top: 14px; + font-weight: 600 +} +.top-right .link { + display: inline-block; + padding-left: 8px; + height: 30px +} +.top-right .link a { + display: block +} +.top-right .dropdown-menu { + min-width: 135px +} +.top-right .dropdown-menu .list-title { + text-align: center +} +.top-right .dropdown-menu li { + position: relative; + display: block +} +.top-right a { + color: #fff +} +.top-right .profilebox { + color: rgba(255, 255, 255, 0.95) +} +.top-right .profilebox img { + width: 32px; + height: 31px; + float: left; + border-radius: 100%; + margin-right: 7px; + margin-top: -4px +} +.top-right .profilebox .caret { + margin-left: 5px; + color: rgba(255, 255, 255, 0.5) +} +.top-right .profilebox:hover { + color: #fff +} +.top-right .pastebutton { + background: #fff; + color: #404B5F; + padding: 4px 16px; + border-radius: 999px +} +.top-right .pastebutton:hover { + background: rgba(255, 255, 255, 0.95) +} +.guestmsg .text { + font-family: 'Open-Sans', sans-serif; + font-size: 16px; + color: #fff; + line-height: 1.6em; + font-weight: 300; + text-shadow: none +} +.guestmsg .text-body { + font-size: 12px; + color: #fff; +} +.guestmsg .text-body a { + color: #fff +} +.content { + padding-left: 30px; + padding-right: 30px; + padding-top: 60px; + background: #f5f5f5 +} +.footer { + border-top: 1px solid #e2e2e2; + margin-left: -30px; + margin-right: -30px; + margin-bottom: 0; + padding: 10px; + font-size: 11px; + color: #666; + background: #f5f5f5 +} +.footer .col-md-6 { + margin-bottom: 0 +} +.page-header { + background: #fff; + margin: -20px -30px 20px -30px; + padding: 20px; + border-bottom: none; + position: relative +} +.page-header .title { + padding: 0; + margin: 0; + font-family: 'Open-Sans', sans-serif; + font-size: 20px; + line-height: normal; + font-weight: normal; + color: #37363e; + padding-bottom: 6px +} +.page-header .right { + position: absolute; + right: 20px; + bottom: 20px; + min-width: 500px; + text-align: right +} +.page-header .right .btn-group { + float: right +} +.page-header .right .btn { + padding-left: 14px; + padding-right: 14px; + font-size: 13px +} +.page-header .right .btn .fa { + margin: 0 4px +} +.page-header .right .btn .no-border { + border: none +} +.page-header .right .btn-group .btn { + border: 1px solid #E8EBED +} +.page-header .pagination { + margin: 0 +} +.page-header .widget-inline-list { + right: 0; + bottom: -25px; + position: relative !important +} +.fa-item { + padding: 6px 0; + position: relative; + padding-left: 50px; + font-size: 13px; + color: #37363e; + border-radius: 3px; + border: 5px solid #fff +} +.fa-item .fa { + position: absolute; + left: 10px; + font-size: 20px; + color: #444; + display: block; + width: 40px; + text-align: center +} +.fa-item:hover { + color: #000; + background: #f2f2f2; + border-color: #f2f2f2 +} +#paste { + line-height:1; + word-wrap: break-word; + text-shadow: none +} +#paste li { + padding:1px +} +#paste img { + max-width: 100% +} +.paste-alert { + color: #fff; + position: relative; + border-radius: 3px; + text-align: left; + margin-bottom: 10px; + padding: 12px; + padding-right: 30px +} +.paste-alert a { + color: inherit; + text-decoration: underline; + font-weight: 600 +} +.paste-alert h4 { + font-size: 14px; + margin: 0; + color: inherit; + font-weight: 600; + line-height: normal +} +.paste-alert .img { + width: 40px; + height: 40px; + position: absolute; + border-radius: 3px; + left: 12px; + top: 12px +} +.paste-alert-img { + padding-left: 65px; + min-height: 64px +} +.paste-alert-icon { + padding-left: 40px +} +.paste-alert-icon .fa { + display: block; + width: 20px; + text-align: center; + position: absolute; + font-size: 15px; + left: 12px; + top: 17px +} +.paste-alert .closed { + position: absolute; + right: 3px; + text-decoration: none; + font-weight: bold; + top: 0px; + font-size: 20px; + color: rgba(255, 255, 255, 0.5); + padding: 4px +} +.paste-alert .closed:hover { + color: #fff +} +.paste-alert-click { + cursor: pointer; + padding-right: 12px +} +.paste-alert .primary { + outline: 0; + border: none; + background: rgba(0, 0, 0, 0.4); + color: inherit; + border-radius: 3px; + padding: 4px 10px +} +.paste-alert .cancel { + outline: 0; + border: none; + background: rgba(255, 255, 255, 0.4); + color: rgba(0, 0, 0, 0.8); + border-radius: 3px; + padding: 4px 10px +} +.paste-alert .primary:hover, +.paste-alert .cancel:hover { + opacity: 0.9 +} +.paste-alert-top, +.paste-alert-bottom, +.paste-alert-top-left, +.paste-alert-top-right, +.paste-alert-bottom-left, +.paste-alert-bottom-right, +.paste-alert-fullscreen { + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.1); + position: fixed; + display: none; + z-index: 1000 +} +.paste-alert-top { + top: 0; + left: 0; + right: 0 +} +.paste-alert-bottom { + bottom: 0; + left: 0; + right: 0 +} +.paste-alert-top-left { + top: 80px; + left: 20px +} +.paste-alert-top-right { + top: 80px; + right: 20px +} +.paste-alert-bottom-left { + bottom: 20px; + left: 20px +} +.paste-alert-bottom-right { + bottom: 20px; + right: 20px +} +.paste-alert-fullsize { + top: 50%; + left: 50%; + margin: -20px +} +.alert1 { + background: #399bff +} +.alert2 { + background: #33577b +} +.alert3 { + background: #26a65b +} +.alert4 { + background: #51b7a3 +} +.alert5 { + background: #f39c12 +} +.alert6 { + background: #ef4836 +} +.alert7 { + background: #9a80b9 +} +.alert8 { + background: #a2ded0; + color: #444 +} +.alert8 .closed { + color: inherit +} +.alert8 a:hover.closed { + color: inherit +} +.alert9 { + background: #d2527f +} +.alert10 { + background: #c78568 +} +.alert11 { + background: #e99844 +} +.alert1-light { + background: #d2e8ff; + color: #00356c +} +.alert2-light { + background: #7ea3c9; + color: #152433 +} +.alert3-light { + background: #83e3aa; + color: #13532e +} +.alert4-light { + background: #bde4dc; + color: #2f7365 +} +.alert5-light { + background: #fad9a4; + color: #976008 +} +.alert6-light { + background: #fac9c4; + color: #b11e0e +} +.alert7-light { + background: #e8e3ef; + color: #674b88 +} +.alert8-light { + background: #edf9f6; + color: #2f8571 +} +.alert9-light { + background: #f2cbd9; + color: #97274e +} +.alert10-light { + background: #f0dfd8; + color: #935336 +} +.alert11-light { + background: #f9e3cd; + color: #b26515 +} +.alert1-light .closed, +.alert2-light .closed, +.alert3-light .closed, +.alert4-light .closed, +.alert5-light .closed, +.alert6-light .closed, +.alert7-light .closed, +.alert8-light .closed, +.alert9-light .closed, +.alert10-light .closed, +.alert11-light .closed { + color: inherit; + opacity: 0.6 +} +.alert1-light .closed:hover { + color: inherit; + opacity: 0.8 +} +.changelogs .version { + font-size: 13px; + font-family: 'Open-Sans', sans-serif +} +.changelogs .date { + font-size: 12px; + position: absolute; + right: 20px; + top: 20px +} +.changelogs .update { + position: relative; + background: #fff; + padding: 20px; + border: 1px solid #e4e4e4; + border-radius: 3px; + margin-bottom: 20px +} +.changelogs .list { + font-size: 12px; + margin-top: 10px; + background: #f2f2f2; + padding: 6px 10px; + border-radius: 3px; + border-left: 2px solid #ccc +} +.changelogs .list h4 { + margin: 0px; + font-size: 14px +} +.changelogs .list:hover { + background: #eee +} +.login-form { + width: 360px; + padding-top: 100px; + margin: 0px auto; + text-shadow: none +} +.login-form form { + background: #fff; + border: 1px solid #ddd; + border-radius: 3px +} +.login-form form img { + margin-bottom: 18px +} +.login-form form .profile { + border-radius: 999px +} +.login-form form .top { + border-bottom: 1px solid #ddd; + text-align: center; + padding: 30px 0 +} +.login-form form .top .icon { + width: 100px; + height: 100px +} +.login-form form .top h1, +.login-form form .top h4 { + margin: 0 +} +.login-form form .top h1 { + color: #37363E; + font-size: 30px; + font-family: 'Open-Sans', sans-serif; + font-weight: bold; + margin-top: -14px +} +.login-form form .top h4 { + font-weight: normal; + color: #76757B; + font-size: 15px +} +.login-form form .form-area { + padding: 40px +} +.login-form form .form-area .group { + position: relative; + margin-bottom: 20px +} +.login-form form .form-area .form-control { + padding-left: 38px; + height: 40px +} +.login-form form .form-area .fa { + position: absolute; + top: 11px; + left: 13px; + font-size: 16px; + color: #C3C3C3 +} +.login-form form .form-area .btn { + height: 42px; + font-weight: 600 +} +.login-form form .form-area .checkbox { + margin-bottom: 20px +} +.login-form .footer-links { + color: #76757B; + padding: 10px 5px +} +.login-form .footer-links a { + color: #76757B +} +.login-form .footer-links a:hover { + color: #37363e +} +.error-pages { + text-align: center; + padding-top: 100px +} +.error-pages .icon { + border-radius: 4px; + margin-bottom: 20px +} +.error-pages h1 { + color: #37363e; + font-family: 'Open-Sans', sans-serif; + font-size: 28px +} +.error-pages h4 { + color: #767279; + font-weight: normal; + font-size: 16px; + margin-top: 10px +} +.error-pages form { + width: 400px; + margin: 0px auto; + margin-top: 30px; + position: relative +} +.error-pages form .form-control { + padding-left: 34px; + height: 40px +} +.error-pages form .fa { + position: absolute; + left: 10px; + top: 11px; + font-size: 16px +} +.error-pages .bottom-links { + margin-top: 30px +} +.error-pages .bottom-links a { + margin: 0px 6px +} +.checkbox-primary input[type="checkbox"]:checked+label::before { + background-color: #399bff; + border-color: #399bff +} +.checkbox-primary input[type="checkbox"]:checked+label::after { + color: #fff +} +.checkbox-danger input[type="checkbox"]:checked+label::before { + background-color: #ef4836; + border-color: #ef4836 +} +.checkbox-danger input[type="checkbox"]:checked+label::after { + color: #fff +} +.checkbox-info input[type="checkbox"]:checked+label::before { + background-color: #51b7a3; + border-color: #51b7a3 +} +.checkbox-info input[type="checkbox"]:checked+label::after { + color: #fff +} +.checkbox-warning input[type="checkbox"]:checked+label::before { + background-color: #f39c12; + border-color: #f39c12 +} +.checkbox-warning input[type="checkbox"]:checked+label::after { + color: #fff +} +.checkbox-success input[type="checkbox"]:checked+label::before { + background-color: #26a65b; + border-color: #26a65b +} +.checkbox-success input[type="checkbox"]:checked+label::after { + color: #fff +} +.radio-primary input[type="radio"]+label::after { + background-color: #399bff +} +.radio-primary input[type="radio"]:checked+label::before { + border-color: #399bff +} +.radio-primary input[type="radio"]:checked+label::after { + background-color: #399bff +} +.radio-danger input[type="radio"]+label::after { + background-color: #ef4836 +} +.radio-danger input[type="radio"]:checked+label::before { + border-color: #ef4836 +} +.radio-danger input[type="radio"]:checked+label::after { + background-color: #ef4836 +} +.radio-info input[type="radio"]+label::after { + background-color: #51b7a3 +} +.radio-info input[type="radio"]:checked+label::before { + border-color: #51b7a3 +} +.radio-info input[type="radio"]:checked+label::after { + background-color: #51b7a3 +} +.radio-warning input[type="radio"]+label::after { + background-color: #f39c12 +} +.radio-warning input[type="radio"]:checked+label::before { + border-color: #f39c12 +} +.radio-warning input[type="radio"]:checked+label::after { + background-color: #f39c12 +} +.radio-success input[type="radio"]+label::after { + background-color: #26a65b +} +.radio-success input[type="radio"]:checked+label::before { + border-color: #26a65b +} +.radio-success input[type="radio"]:checked+label::after { + background-color: #26a65b +} +a:focus, +input, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus, +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: 0px +} +mark { + background: #FBDDAC; + padding: 2px 4px; + border-radius: 3px +} +code { + background: #EDF6FF; + padding: 2px 2px; + color: #000; + border: 1px solid #C3E1FF +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 400; + line-height: 1.6; + color: #37363e +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; + letter-spacing: -0.02em +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 15px; + margin-bottom: 10px +} +h1, +.h1 { + font-size: 2.25em +} +h2, +.h2 { + font-size: 2em +} +h3, +.h3 { + font-size: 1.75em +} +h4, +.h4 { + font-size: 1.5em +} +h5, +.h5 { + font-size: 1.25em +} +h6, +.h6 { + font-size: 1em +} +.text-st { + color: #666 +} +.lead { + line-height: 1.7em +} +blockquote { + background: #f2f2f2; + padding: 16px 20px; + border-radius: 3px; + border-left: 5px solid #ccc +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: inherit; + opacity: 0.6 +} +.blockquote-reverse, +blockquote.pull-right { + border-right: 5px solid #ccc +} +dt, +dd { + line-height: inherit +} +.font-title { + font-family: 'Open-Sans', sans-serif +} +.font-w-300 { + font-weight: 300 +} +.font-w-400 { + font-weight: 400 +} +.font-w-600 { + font-weight: 600 +} +.font-w-700 { + font-weight: 700 +} +.font-w-800 { + font-weight: 800 +} +.font-title-tab { + font-family: 'Open-Sans', sans-serif; + text-transform: uppercase; + font-weight: bold; + font-size: 12px +} +.btn { + font-size: 14px; + padding: 7px 20px 7px 20px; + border: none; + background: #e4e4e4; + color: inherit; + border-radius: 3px +} +.btn:hover { + background-color: #eee; + color: #666 +} +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: none; + box-shadow: none +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65 +} +.btn-xs { + font-size: 11px; + padding: 3px 8px +} +.btn-sm { + font-size: 12px; + padding: 5px 14px +} +.btn-lg { + font-size: 16px; + padding: 10px 30px +} +.btn-xl { + font-size: 20px; + padding: 14px 30px +} +.btn .fa { + font-size: 15px; + margin-right: 5px +} +.btn-icon { + padding-left: 10px; + padding-right: 10px +} +.btn-icon .fa { + margin: 0; + font-size: normal +} +.btn-rounded { + border-radius: 999px +} +.btn-square { + border-radius: 0 +} +.btndiv .btn { + margin-bottom: 10px +} +.btn-default { + background-color: #399bff; + color: #fff +} +.btn-default:hover, +.btn-default:focus, +.btn-default.focus, +.btn-default:active, +.btn-default.active, +.open>.dropdown-toggle.btn-default { + background-color: #4da5ff; + color: #fff +} +.btn-default:active, +.btn-default.active, +.open>.dropdown-toggle.btn-default { + background: #208eff; + box-shadow: none; + color: #fff +} +.btn-default .badge { + color: #399bff; + background-color: #fff +} +.btn-primary { + background-color: #33577b; + color: #fff +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary.focus, +.btn-primary:active, +.btn-primary.active, +.open>.dropdown-toggle.btn-primary { + background-color: #396189; + color: #fff +} +.btn-primary:active, +.btn-primary.active, +.open>.dropdown-toggle.btn-primary { + background: #2c4a69; + box-shadow: none; + color: #fff +} +.btn-primary .badge { + color: #33577b; + background-color: #fff +} +.btn-white { + background-color: #e4e4e4; + color: #666 +} +.btn-white:hover, +.btn-white:focus, +.btn-white.focus, +.btn-white:active, +.btn-white.active, +.open>.dropdown-toggle.btn-white { + background-color: #eee; + color: #666 +} +.btn-white:active, +.btn-white.active, +.open>.dropdown-toggle.btn-white { + background: #d7d7d7; + box-shadow: none; + color: #666 +} +.btn-white .badge { + color: #e4e4e4; + background-color: #fff +} +.btn-toggle { + background-color: #e4e4e4; + color: #666; + border-size: 4px; + border-size: 5px +} +.btn-toggle:hover, +.btn-toggle:focus, +.btn-toggle.focus, +.btn-toggle:active, +.btn-toggle.active, +.open>.dropdown-toggle.btn-toggle { + background-color: #eee; + color: #666 +} +.btn-toggle:active, +.btn-toggle.active, +.open>.dropdown-toggle.btn-toggle { + background: #d7d7d7; + box-shadow: none; + color: #666 +} +.btn-toggle .badge { + color: #e4e4e4; + background-color: #fff +} +.btn-light { + background-color: #fff; + color: inherit; + border: 1px solid #BDC4C9 +} +.btn-light:hover, +.btn-light:focus, +.btn-light.focus, +.btn-light:active, +.btn-light.active, +.open>.dropdown-toggle.btn-light { + background-color: #f9f9f9; + color: inherit +} +.btn-light:active, +.btn-light.active, +.open>.dropdown-toggle.btn-default { + box-shadow: none; + color: inherit +} +.btn-success { + background-color: #26a65b; + color: #fff +} +.btn-success:hover, +.btn-success:focus, +.btn-success.focus, +.btn-success:active, +.btn-success.active, +.open>.dropdown-toggle.btn-success { + background-color: #2ab764; + color: #fff +} +.btn-success:active, +.btn-success.active, +.open>.dropdown-toggle.btn-success { + background: #219150; + box-shadow: none; + color: #fff +} +.btn-success .badge { + color: #26a65b; + background-color: #fff +} +.btn-info { + background-color: #51b7a3; + color: #fff +} +.btn-info:hover, +.btn-info:focus, +.btn-info.focus, +.btn-info:active, +.btn-info.active, +.open>.dropdown-toggle.btn-info { + background-color: #5fbdab; + color: #fff +} +.btn-info:active, +.btn-info.active, +.open>.dropdown-toggle.btn-info { + background: #46a995; + box-shadow: none; + color: #fff +} +.btn-info .badge { + color: #51b7a3; + background-color: #fff +} +.btn-warning { + background-color: #f39c12; + color: #fff +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning.focus, +.btn-warning:active, +.btn-warning.active, +.open>.dropdown-toggle.btn-warning { + background-color: #f4a425; + color: #fff +} +.btn-warning:active, +.btn-warning.active, +.open>.dropdown-toggle.btn-warning { + background: #e08e0b; + box-shadow: none; + color: #fff +} +.btn-warning .badge { + color: #f39c12; + background-color: #fff +} +.btn-danger { + background-color: #ef4836; + color: #fff +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger.focus, +.btn-danger:active, +.btn-danger.active, +.open>.dropdown-toggle.btn-danger { + background-color: #f15949; + color: #fff +} +.btn-danger:active, +.btn-danger.active, +.open>.dropdown-toggle.btn-danger { + background: #ed321e; + box-shadow: none; + color: #fff +} +.btn-danger .badge { + color: #ef4836; + background-color: #fff +} +.btn-option1 { + background-color: #9a80b9; + color: #fff +} +.btn-option1:hover, +.btn-option1:focus, +.btn-option1.focus, +.btn-option1:active, +.btn-option1.active, +.open>.dropdown-toggle.btn-option1 { + background-color: #a48dc0; + color: #fff +} +.btn-option1:active, +.btn-option1.active, +.open>.dropdown-toggle.btn-option1 { + background: #8d70b0; + box-shadow: none; + color: #fff +} +.btn-option1 .badge { + color: #9a80b9; + background-color: #fff +} +.btn-option2 { + background-color: #a2ded0; + color: #333 +} +.btn-option2:hover, +.btn-option2:focus, +.btn-option2.focus, +.btn-option2:active, +.btn-option2.active, +.open>.dropdown-toggle.btn-option2 { + background-color: #b1e3d8; + color: #333 +} +.btn-option2:active, +.btn-option2.active, +.open>.dropdown-toggle.btn-option2 { + background: #8fd7c6; + box-shadow: none; + color: #333 +} +.btn-option2 .badge { + color: #a2ded0; + background-color: #fff +} +.btn-option3 { + background-color: #d2527f; + color: #fff +} +.btn-option3:hover, +.btn-option3:focus, +.btn-option3.focus, +.btn-option3:active, +.btn-option3.active, +.open>.dropdown-toggle.btn-option3 { + background-color: #d6628b; + color: #fff +} +.btn-option3:active, +.btn-option3.active, +.open>.dropdown-toggle.btn-option3 { + background: #cd3e70; + box-shadow: none; + color: #fff +} +.btn-option3 .badge { + color: #d2527f; + background-color: #fff +} +.btn-option4 { + background-color: #c78568; + color: #fff +} +.btn-option4:hover, +.btn-option4:focus, +.btn-option4.focus, +.btn-option4:active, +.btn-option4.active, +.open>.dropdown-toggle.btn-option4 { + background-color: #cd9177; + color: #fff +} +.btn-option4:active, +.btn-option4.active, +.open>.dropdown-toggle.btn-option4 { + background: #c07655; + box-shadow: none; + color: #fff +} +.btn-option4 .badge { + color: #c78568; + background-color: #fff +} +.btn-option5 { + background-color: #e99844; + color: #fff +} +.btn-option5:hover, +.btn-option5:focus, +.btn-option5.focus, +.btn-option5:active, +.btn-option5.active, +.open>.dropdown-toggle.btn-option4 { + background-color: #eba256; + color: #fff +} +.btn-option5:active, +.btn-option5.active, +.open>.dropdown-toggle.btn-option5 { + background: #e68b2d; + box-shadow: none; + color: #fff +} +.btn-option5 .badge { + color: #e99844; + background-color: #fff +} +.label { + font-size: inherit; + padding: 1px 6px; + font-weight: 600; + border-radius: 4px +} +.label-default { + background: #399bff +} +.label-primary { + background: #33577b +} +.label-success { + background: #26a65b +} +.label-info { + background: #51b7a3 +} +.label-warning { + background: #f39c12 +} +.label-danger { + background: #ef4836 +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #26a65b +} +.has-success .form-control { + border-color: #26a65b; + box-shadow: none +} +.has-success .form-control:focus { + border-color: #26a65b; + box-shadow: none +} +.has-success .input-group-addon { + color: #26a65b; + background-color: #26a65b; + border-color: #26a65b +} +.has-success .form-control-feedback { + color: #26a65b +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #f39c12 +} +.has-warning .form-control { + border-color: #f39c12; + box-shadow: none +} +.has-warning .form-control:focus { + border-color: #f39c12; + box-shadow: none +} +.has-warning .input-group-addon { + color: #f39c12; + background-color: #f39c12; + border-color: #f39c12 +} +.has-warning .form-control-feedback { + color: #f39c12 +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #ef4836 +} +.has-error .form-control { + border-color: #ef4836; + box-shadow: none +} +.has-error .form-control:focus { + border-color: #ef4836; + box-shadow: none +} +.has-error .input-group-addon { + color: #ef4836; + background-color: #ef4836; + border-color: #ef4836 +} +.has-error .form-control-feedback { + color: #ef4836 +} +input, +select { + height: 34px; + border-radius: 3px; + padding-left: 10px; + font-size: 14px; + background: #fff; + border: 1px solid #BDC4C9; + box-shadow: inset 0px 1px 0px #F1F0F1 +} +.form-control { + height: 34px; + border-radius: 3px; + padding-left: 10px; + font-size: 14px; + background: #fff; + border: 1px solid #BDC4C9; + display: block; + max-width: 100%; +} +.form-control:focus { + background: #f7f7f7; + border-color: #BDC4C9; + box-shadow: none; + border-top: 1px solid #B7B7B7 +} +.form-label { + font-weight: 500 +} +.fieldset-form fieldset { + padding: 20px; + margin: 0 2px; + border-radius: 3px; + border: 1px solid #ccc; + padding-top: 10px +} +.fieldset-form legend { + width: auto; + padding: 0px 10px; + margin-bottom: 20px; + font-size: 16px; + line-height: inherit; + color: #333; + border: 0; + font-weight: 600; + border-bottom: none +} +.form-control-line { + border-left: 0; + border-top: 0; + border-right: 0; + padding-left: 0; + border-radius: 0; + box-shadow: none +} +.form-control-line:focus { + border-top: 0; + background: none; + border-color: #666 +} +.form-control-radius { + border-radius: 999px +} +.form-group { + margin-bottom: 18px +} +.form-inline label { + margin-right: 5px +} +.form-inline .checkbox-inline, +.form-inline .radio-inline { + padding-left: 0; + margin-right: 5px +} +.form-inline .checkbox-inline label, +.form-inline .radio-inline label { + padding-left: 5px +} +.form-inline .form-group { + padding-right: 10px +} +.input-group-addon { + background: #f7f7f7; + border-color: #BDC4C9; + font-weight: 600; + padding-left: 17px; + padding-right: 17px +} +.input-sm { + height: 30px; + font-size: 12px; + line-height: 1.5 +} +.input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 3px +} +.breadcrumb { + background: none; + padding: 0; + margin: 0; + font-weight: 600 +} +.breadcrumb .active { + font-weight: normal; + color: #999 +} +.dropdown-menu { + min-width: 100px; + font-size: inherit; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.09); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.09) +} +.dropdown-header { + font-weight: normal; + text-transform: uppercase; + font-size: 10px; + padding-left: 15px; + font-family: 'Open-Sans', sans-serif; + padding-top: 5px +} +.dropdown-menu li { + position: relative +} +.dropdown-menu>li>a { + padding: 9px 20px; + color: #3D464D +} +.dropdown-menu .divider { + margin: 4px 0 +} +.dropdown-menu-list li a { + padding-left: 40px +} +.dropdown-menu-list .badge { + right: 20px; + font-weight: normal; + margin-left: 5px; + padding: 2px 6px; + font-size: 11px +} +.dropdown-menu-list .falist { + position: absolute; + left: 15px; + top: 11px; + font-size: 15px +} +.dropdown-menu a { + cursor: pointer +} +.tab-content { + background: #fff; + padding: 20px +} +.nav-tabs { + border-bottom: none; + background: #E9E9E9; + padding: 0 +} +.nav-tabs>li { + float: left; + margin-bottom: -1px; + margin-right: -2px +} +.nav-tabs>li>a { + margin-right: 2px; + line-height: 1.42857143; + color: inherit; + border: none; + border-radius: 0 +} +.nav-tabs>li>a:hover { + border-color: none; + background: rgba(0, 0, 0, 0.1) +} +.nav-tabs>li.active>a, +.nav-tabs>li.active>a:hover, +.nav-tabs>li.active>a:focus { + color: #555; + cursor: default; + background-color: #fff; + border: none; + border-bottom-color: transparent +} +.nav-pills { + padding-bottom: 10px +} +.nav-pills>li { + float: left +} +.nav-pills>li>a { + border-radius: 3px; + padding: 4px 10px +} +.nav-pills>li+li { + margin-left: 2px +} +.nav-pills>li.active>a, +.nav-pills>li.active>a:hover, +.nav-pills>li.active>a:focus { + color: #fff; + background-color: #399bff +} +.nav-stacked li { + width: 100%; + display: block +} +.nav-justified { + padding: 0; + margin-bottom: -1px; + border-bottom: none +} +@media (min-width: 768px) { + .nav-tabs.nav-justified>li>a { + margin-bottom: 0 + } +} +.nav-tabs.nav-justified>li>a { + border-radius: 0px +} +.nav-tabs.nav-justified>.active>a, +.nav-tabs.nav-justified>.active>a:hover, +.nav-tabs.nav-justified>.active>a:focus { + border: none +} +@media (min-width: 768px) { + .nav-tabs.nav-justified>li>a { + border-bottom: 1px solid #fff; + border-radius: none + } +} +.nav-line { + border-bottom: none; + background: none; + padding: 0 +} +.nav-line>li { + float: left; + margin-bottom: -1px +} +.nav-line>li>a:hover { + border-color: none; + background: none; + border-bottom: 3px solid #e4e4e4; + color: #37363e +} +.nav-line>li.active>a, +.nav-line>li.active>a:hover, +.nav-line>li.active>a:focus { + color: inherit; + cursor: default; + background-color: transparent; + border-bottom: 3px solid #399bff +} +.nav-icon .fa { + font-size: 16px; + color: inherit +} +.nav-pills>li>a { + border-radius: 3px; + padding: 4px 14px +} +.tabs-left>.nav-tabs>li, +.tabs-right>.nav-tabs>li { + float: none; + margin: 0 +} +.tabs-left>.nav-tabs>li>a, +.tabs-right>.nav-tabs>li>a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px +} +.tabs-left>.nav-tabs { + float: left; + margin-right: 29px +} +.tabs-right>.nav-tabs { + float: right; + margin-left: 29px; + text-align: right +} +.tabcolor5-bg li a, +.tabcolor6-bg li a, +.tabcolor7-bg li a, +.tabcolor8-bg li a, +.tabcolor9-bg li a, +.tabcolor10-bg li a { + color: #fff +} +.tabcolor5-bg { + background: #399bff +} +.tabcolor6-bg { + background: #33577b +} +.tabcolor7-bg { + background: #26a65b +} +.tabcolor8-bg { + background: #51b7a3 +} +.tabcolor9-bg { + background: #f39c12 +} +.tabcolor10-bg { + background: #ef4836 +} +.panel { + box-shadow: none; + border: 1px solid #e5e5e5; + background: #fff; + padding: 20px; + margin-bottom: 20px; + position: relative +} +.panel-footer { + margin: -20px; + margin-top: 20px; + background: #f9f9f9 +} +.panel-transparent { + background: none; + border: none +} +.panel-transparent .panel-title { + background: none; + border: none +} +.panel-default>.panel-heading { + background-color: inherit; + border-bottom: 0; + color: #3D464D +} +.panel-title { + font-family: 'Open-Sans', sans-serif; + color: #58666e; + font-size: 13px; + font-weight: bold; + text-transform: uppercase; + padding: 16px 20px; + margin: -20px; + background: #fff; + margin-bottom: 5px; + border-bottom: none; + border-top-left-radius: 3px; + border-top-right-radius: 3px +} +.panel-body, +.panel-heading { + padding: 0; + color: inherit; + background-color: transparent; + border-color: none +} +.panel-heading { + background: transparent; + border-bottom: transparent +} +.panel .badge { + font-size: 11px; + font-family: 'Open-Sans', sans-serif; + text-transform: none; + padding: 4px 10px; + margin-left: 5px; + font-weight: normal +} +.panel-footer { + background: rgba(0, 0, 0, 0.01); + border-top: 1px solid inherit +} +.panel-title .badge { + color: #fff; + background-color: rgba(0, 0, 0, 0.2) +} +.panel-heading { + font-size: 20px; + padding-bottom: 15px; + font-weight: 300 +} +.panel .list-group { + margin: -20px; + margin-top: 20px; + background: transparent +} +.panel .list-group li { + border: 1px solid rgba(255, 255, 255, 0.2); + border-left: 0; + background: transparent; + border-right: 0 +} +.panel .list-group-item:first-child { + border-top-left-radius: 0px; + border-top-right-radius: 0px +} +.panel .list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; + border-bottom: 0 +} +.panel-collapse { + padding-bottom: 0 +} +.panel-collapse .panel-title { + padding-bottom: 0; + margin-bottom: 0 +} +.panel-collapse .panel-body { + padding: 10px 0 20px 0 +} +.panel-widget { + overflow: hidden; + border: none +} +.panel-default { + border-color: #ddd +} +.panel-default .badge { + color: inherit; + background-color: rgba(0, 0, 0, 0.2) +} +.panel-default .list-group { + margin: -20px; + margin-top: 20px +} +.panel-default .list-group li { + border: 1px solid #ddd; + border-left: 0; + border-right: 0 +} +.panel-default .list-group-item:first-child { + border-top-left-radius: 0px; + border-top-right-radius: 0px +} +.panel-default .list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; + border-bottom: 0 +} +.panel-primary { + border-color: #399bff; + background: #399bff; + color: #fff +} +.panel-primary>.panel-heading { + color: inherit; + background: transparent; + border-bottom: transparent +} +.panel-primary>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #399bff +} +.panel-primary .panel-title { + color: #fff; + background: #399bff; + border-bottom: 1px solid rgba(255, 255, 255, 0.1) +} +.panel-primary .panel-footer { + border-top: 1px solid rgba(255, 255, 255, 0.1); + background: rgba(255, 255, 255, 0.04) +} +.panel-primary>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #399bff +} +.panel-success { + border-color: #26a65b; + background: #26a65b; + color: #fff +} +.panel-success>.panel-heading { + color: inherit; + background: transparent; + border-bottom: transparent +} +.panel-success>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #26a65b +} +.panel-success .panel-title { + color: #fff; + background: #26a65b; + border-bottom: 1px solid rgba(255, 255, 255, 0.1) +} +.panel-success .panel-footer { + border-top: 1px solid rgba(255, 255, 255, 0.1); + background: rgba(255, 255, 255, 0.04) +} +.panel-success>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #26a65b +} +.panel-info { + border-color: #51b7a3; + background: #51b7a3; + color: #fff +} +.panel-info>.panel-heading { + color: inherit; + background: transparent; + border-bottom: transparent +} +.panel-info>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #51b7a3 +} +.panel-info .panel-title { + color: #fff; + background: #51b7a3; + border-bottom: 1px solid rgba(255, 255, 255, 0.1) +} +.panel-info .panel-footer { + border-top: 1px solid rgba(255, 255, 255, 0.1); + background: rgba(255, 255, 255, 0.04) +} +.panel-info>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #51b7a3 +} +.panel-warning { + border-color: #f39c12; + background: #f39c12; + color: #fff +} +.panel-warning>.panel-heading { + color: inherit; + background: transparent; + border-bottom: transparent +} +.panel-warning>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #f39c12 +} +.panel-warning .panel-title { + color: #fff; + background: #f39c12; + border-bottom: 1px solid rgba(255, 255, 255, 0.1) +} +.panel-warning .panel-footer { + border-top: 1px solid rgba(255, 255, 255, 0.1); + background: rgba(255, 255, 255, 0.04) +} +.panel-warning>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #f39c12 +} +.panel-danger { + border-color: #ef4836; + background: #ef4836; + color: #fff +} +.panel-danger>.panel-heading { + color: inherit; + background: transparent; + border-bottom: transparent +} +.panel-danger>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #ef4836 +} +.panel-danger .panel-title { + color: #fff; + background: #ef4836; + border-bottom: 1px solid rgba(255, 255, 255, 0.1) +} +.panel-danger .panel-footer { + border-top: 1px solid rgba(255, 255, 255, 0.1); + background: rgba(255, 255, 255, 0.04) +} +.panel-danger>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #ef4836 +} +.panel-dark { + border-color: #3d464d; + background: #3d464d; + color: #fff +} +.panel-dark>.panel-heading { + color: inherit; + background: transparent; + border-bottom: transparent +} +.panel-dark>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #3d464d +} +.panel-dark .panel-title { + color: #fff; + background: #3d464d; + border-bottom: 1px solid rgba(255, 255, 255, 0.1) +} +.panel-dark .panel-footer { + border-top: 1px solid rgba(255, 255, 255, 0.1); + background: rgba(255, 255, 255, 0.04) +} +.panel-dark>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #3d464d +} +.panel-tools { + font-family: 'Open-Sans', sans-serif; + position: absolute; + right: 16px; + top: 13px; + text-transform: none; + font-weight: 600; + font-size: inherit; + z-index: 1 +} +.panel-tools li { + display: inline-block +} +.panel-tools a { + padding: 3px 8px; + display: block; + color: inherit; + border-radius: 3px +} +.panel-tools a:hover { + color: rgba(0, 0, 0, 0.6); + background: rgba(0, 0, 0, 0.09) +} +.panel-tools .icon { + font-size: 14px; + color: rgba(0, 0, 0, 0.5); + border-radius: 3px; + cursor: pointer +} +.panel-tools .icon a { + color: rgba(0, 0, 0, 0.4) +} +.panel-tools .dropdown-menu { + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); + font-size: 13px +} +.panel-tools .dropdown-menu li { + display: list-item +} +.panel-tools .dropdown-menu a { + display: block +} +.panel-search { + margin: -20px; + padding: 15px 20px; + position: relative; + color: #333; + display: none; + background: rgba(255, 255, 255, 0.1); + margin-bottom: 20px; + border-bottom: 1px solid rgba(0, 0, 0, 0.1) +} +.panel-search input { + background: #fff; + border-radius: 999px; + padding-left: 35px +} +.panel-search input:focus { + background: #fff +} +.panel-search .icon { + position: absolute; + left: 35px; + top: 25px +} +.panel-fullsize { + position: fixed; + width: 100%; + height: 100vh; + overflow: auto; + top: 0; + left: 0; + z-index: 9999 +} +.panel-tools-hover { + display: none +} +.panel:hover .panel-tools-hover { + display: block +} +.panel-title .titleicon { + margin-right: 10px +} +.panel-closed .panel-title { + margin-bottom: -20px +} +.panel-closed .panel-body { + display: none +} +.widget-tools { + font-family: 'Open-Sans', sans-serif; + position: absolute; + right: 15px; + top: 13px; + text-transform: none; + font-weight: 600; + font-size: inherit; + z-index: 1 +} +.widget-tools li { + display: inline-block +} +.widget-tools a { + padding: 3px 8px; + display: block; + color: inherit; + border-radius: 3px +} +.widget-tools a:hover { + color: rgba(0, 0, 0, 0.6); + background: rgba(0, 0, 0, 0.09) +} +.widget-tools .icon { + font-size: 14px; + color: rgba(0, 0, 0, 0.5); + border-radius: 3px; + cursor: pointer +} +.widget-tools .icon a { + color: rgba(0, 0, 0, 0.4) +} +.widget-tools .dropdown-menu { + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); + font-size: 13px +} +.widget-tools .dropdown-menu li { + display: list-item +} +.widget-tools .dropdown-menu a { + display: block +} +.widget-fullsize { + position: fixed; + width: 100%; + height: 100vh; + overflow: auto; + top: 0; + left: 0; + z-index: 9999 +} +.widget-tools-hover { + display: none +} +.widget:hover .widget-tools-hover { + display: block +} +.modal { + z-index: 999 +} +.modal-sm { + max-width: 400px +} +.modal-lg { + min-width: 90% +} +.modal .close { + width: 26px; + border-radius: 4px; + font-size: 23px; + background: #ccc; + color: #000; + text-shadow: none; + opacity: 0.4; + outline: 0 +} +.modal .close:hover { + opacity: 0.6 +} +.modal-title { + font-family: 'Open-Sans', sans-serif; + font-size: 16px +} +.modalicon { + background: #fff; + border-radius: 3px; + text-align: center; + height: 300px; + display: table-cell; + width: 100%; + position: relative; + vertical-align: middle; + border: 2px solid #e2e2e2 +} +.modalicon img { + border-radius: 3px +} +.modalicon:hover { + border-color: #ccc +} +.progress { + height: 18px; + background: rgba(0, 0, 0, 0.15); + box-shadow: none +} +.progress-bar { + background: #399bff; + font-size: 12px; + font-weight: 600; + line-height: normal +} +.progress-bar-success { + background: #26a65b +} +.progress-bar-info { + background: #51b7a3 +} +.progress-bar-warning { + background: #f39c12 +} +.progress-bar-danger { + background: #ef4836 +} +.progress-bar-transparent { + background: transparent; + color: inherit +} +.progress-small { + height: 9px +} +.progress-large { + height: 26px +} +.progress-extralarge { + height: 36px +} +.table { + margin: 0 +} +.table-hover>tbody>tr:hover { + background-color: #EFF7FF +} +thead { + font-weight: 600; + font-family: 'Open-Sans', sans-serif; + text-transform: uppercase; + font-size: 12px; + color: #37363e +} +thead .fa { + font-size: 16px; + margin: 0 +} +table td { + display: table-cell; + vertical-align: middle +} +.table>thead>tr>th, +.table>tbody>tr>th, +.table>tfoot>tr>th, +.table>thead>tr>td, +.table>tbody>tr>td, +.table>tfoot>tr>td { + padding: 15px; + line-height: 1.7 +} +.doc-grid { + padding: 10px 20px +} +.doc-grid div { + border: 1px solid #ccc; + text-align: center; + font-size: 16px; + padding: 20px 0; + background: #fff +} +.widget { + overflow: hidden; + margin-bottom: 10px; + background: #fff; + border-radius: 3px; + padding: 20px; + position: relative +} +.widget .widget-title { + color: #37363e; + font-size: 12px; + font-weight: bold; + padding: 16px 20px; + background: #fff; + margin-bottom: 5px; + border-bottom: none; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + margin: -20px; + margin-bottom: 20px +} +.widget .widget-title h5 { + font-size: 12px; + z-index: 1; + margin: 0; + color: #58666e +} +.widget .widget-title h2 { + font-family: 'Open-Sans', sans-serif; + font-size: 12px; + margin: 0; + font-weight: bold; + text-transform: uppercase +} +.widget-inline-list { + display: block; + padding-left: 0; + color: #58666e +} +.widget-inline-list li { + display: block; + float: left; + text-align: center; + padding: 15px 0 +} +.widget-inline-list li span { + font-size: 18px; + display: block; + color: inherit; + font-family: 'Open-Sans', sans-serif; + font-weight: 600 +} +.widget-inline-list .chart { + display: block; + margin-top: 5px +} +.widget-inline-list .col-1 { + width: 8.3333333% +} +.widget-inline-list .col-2 { + width: 16.666666% +} +.widget-inline-list .col-3 { + width: 25% +} +.widget-inline-list .col-4 { + width: 33.333333% +} +.widget-inline-list .col-6 { + width: 50% +} +.widget-inline-list .col-12 { + width: 100% +} +.color1 { + color: #37363e +} +.color2 { + color: #58666e +} +.color3 { + color: #e4e4e4 +} +.color4 { + color: #f5f5f5 +} +.color5 { + color: #399bff +} +.color6 { + color: #33577b +} +.color7 { + color: #26a65b +} +.color8 { + color: #51b7a3 +} +.color9 { + color: #f39c12 +} +.color10 { + color: #ef4836 +} +.color11 { + color: #9a80b9 +} +.color12 { + color: #a2ded0 +} +.color13 { + color: #d2527f +} +.color14 { + color: #c78568 +} +.color15 { + color: #e99844 +} +.color0-bg { + background: #3d464d +} +.color1-bg { + background: #37363e +} +.color2-bg { + background: #58666e +} +.color3-bg { + background: #e4e4e4 +} +.color4-bg { + background: #f5f5f5 +} +.color5-bg { + background: #399bff +} +.color6-bg { + background: #33577b +} +.color7-bg { + background: #26a65b +} +.color8-bg { + background: #51b7a3 +} +.color9-bg { + background: #f39c12 +} +.color10-bg { + background: #ef4836 +} +.color11-bg { + background: #9a80b9 +} +.color12-bg { + background: #a2ded0 +} +.color13-bg { + background: #d2527f +} +.color14-bg { + background: #c78568 +} +.color15-bg { + background: #e99844 +} +.color-up { + color: #26a65b +} +.color-down { + color: #ef4836 +} +.color-fix { + color: #399bff +} \ No newline at end of file diff --git a/theme/blue/css/style.min.css b/theme/blue/css/style.min.css new file mode 100644 index 0000000..619ce11 --- /dev/null +++ b/theme/blue/css/style.min.css @@ -0,0 +1 @@ +body{background:#f5f5f5;color:#58666e;margin:0;line-height:1.7em;font-size:13px;font-family:'Open-Sans',sans-serif;outline:0;text-Shadow:0 0 1px rgba(0,0,0,.2)}::-moz-selection{background:#D5EAFF}::selection{background:#D5EAFF}a{color:#399bff;text-decoration:none}a:hover,a:focus{text-decoration:none}b,strong{font-weight:600}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{padding-right:15px;padding-left:15px}.row{margin-right:-15px;margin-left:-15px}.container-widget .col-xs-1,.container-widget .col-sm-1,.container-widget .col-md-1,.container-widget .col-lg-1,.container-widget .col-xs-2,.container-widget .col-sm-2,.container-widget .col-md-2,.container-widget .col-lg-2,.container-widget .col-xs-3,.container-widget .col-sm-3,.container-widget .col-md-3,.container-widget .col-lg-3,.container-widget .col-xs-4,.container-widget .col-sm-4,.container-widget .col-md-4,.container-widget .col-lg-4,.container-widget .col-xs-5,.container-widget .col-sm-5,.container-widget .col-md-5,.container-widget .col-lg-5,.container-widget .col-xs-6,.container-widget .col-sm-6,.container-widget .col-md-6,.container-widget .col-lg-6,.container-widget .col-xs-7,.container-widget .col-sm-7,.container-widget .col-md-7,.container-widget .col-lg-7,.container-widget .col-xs-8,.container-widget .col-sm-8,.container-widget .col-md-8,.container-widget .col-lg-8,.container-widget .col-xs-9,.container-widget .col-sm-9,.container-widget .col-md-9,.container-widget .col-lg-9,.container-widget .col-xs-10,.container-widget .col-sm-10,.container-widget .col-md-10,.container-widget .col-lg-10,.container-widget .col-xs-11,.container-widget .col-sm-11,.container-widget .col-md-11,.container-widget .col-lg-11,.container-widget .col-xs-12,.container-widget .col-sm-12,.container-widget .col-md-12,.container-widget .col-lg-12{padding-right:5px;padding-left:5px}.container-widget .row{margin-right:-5px;margin-left:-5px}.container-widget .panel{margin-bottom:10px}.container-widget .widget{margin-bottom:10px}.container-default{padding:0}.container-widget{padding:0;margin-left:-5px;margin-right:-5px}.container-padding{padding-left:20px;padding-right:20px}.container-no-padding{padding:0;margin:-20px -30px 0 -30px}#top{height:50px;background:#399bff;color:#fff;width:100%;position:fixed;z-index:900;top:0}.applogo{width:auto;max-width:250px;height:50px;color:#fff;position:relative;padding:13px 0 0 0;margin-left:50px;float:left;text-align:left}.applogo .logo{color:#eee;font-size:35px;font-family:'Open-Sans',sans-serif}.searchform{width:220px;margin:0 20px;float:left;padding-top:10px;position:relative}.searchbox{border-radius:999px;border:none;height:32px;width:220px;padding-left:20px;padding-right:36px;background:rgba(255,255,255,.95);color:#37363e;box-shadow:inset none}.searchbox:focus{background:#fff;box-shadow:none;border-top:none}.searchbutton{border:none;color:rgba(0,0,0,.5);background:none;position:absolute;top:18px;font-size:16px;right:15px}.topmenu{float:left;padding-top:4px;padding-left:0;font-weight:600}.topmenu .link{display:inline-block;padding-left:8px;height:25px}.topmenu .link a{display:block}.topmenu .pastebutton{color:#FFF}.topmenu .pastebutton:hover{color:#404B5F}.topmenu a{color:rgba(255,255,255,.9);padding:7px}.topmenu a:hover{color:#fff}.topmenu li{display:inline}.top-right{line-height:1.8em;float:right;padding-right:50px;padding-left:10px;padding-top:14px;font-weight:600}.top-right .link{display:inline-block;padding-left:8px;height:30px}.top-right .link a{display:block}.top-right .dropdown-menu{min-width:135px}.top-right .dropdown-menu .list-title{text-align:center}.top-right .dropdown-menu li{position:relative;display:block}.top-right a{color:#fff}.top-right .profilebox{color:rgba(255,255,255,.95)}.top-right .profilebox img{width:32px;height:31px;float:left;border-radius:100%;margin-right:7px;margin-top:-4px}.top-right .profilebox .caret{margin-left:5px;color:rgba(255,255,255,.5)}.top-right .profilebox:hover{color:#fff}.top-right .pastebutton{background:#fff;color:#404B5F;padding:4px 16px;border-radius:999px}.top-right .pastebutton:hover{background:rgba(255,255,255,.95)}.guestmsg .text{font-family:'Open-Sans',sans-serif;font-size:16px;color:#fff;line-height:1.6em;font-weight:300;text-shadow:none}.guestmsg .text-body{font-size:12px;color:#fff}.guestmsg .text-body a{color:#fff}.content{padding-left:30px;padding-right:30px;padding-top:60px;background:#f5f5f5}.footer{border-top:1px solid #e2e2e2;margin-left:-30px;margin-right:-30px;margin-bottom:0;padding:10px;font-size:11px;color:#666;background:#f5f5f5}.footer .col-md-6{margin-bottom:0}.page-header{background:#fff;margin:-20px -30px 20px -30px;padding:20px;border-bottom:none;position:relative}.page-header .title{padding:0;margin:0;font-family:'Open-Sans',sans-serif;font-size:20px;line-height:normal;font-weight:400;color:#37363e;padding-bottom:6px}.page-header .right{position:absolute;right:20px;bottom:20px;min-width:500px;text-align:right}.page-header .right .btn-group{float:right}.page-header .right .btn{padding-left:14px;padding-right:14px;font-size:13px}.page-header .right .btn .fa{margin:0 4px}.page-header .right .btn .no-border{border:none}.page-header .right .btn-group .btn{border:1px solid #E8EBED}.page-header .pagination{margin:0}.page-header .widget-inline-list{right:0;bottom:-25px;position:relative!important}.fa-item{padding:6px 0;position:relative;padding-left:50px;font-size:13px;color:#37363e;border-radius:3px;border:5px solid #fff}.fa-item .fa{position:absolute;left:10px;font-size:20px;color:#444;display:block;width:40px;text-align:center}.fa-item:hover{color:#000;background:#f2f2f2;border-color:#f2f2f2}#paste{line-height:1;word-wrap:break-word;text-shadow:none}#paste li{padding:1px}#paste img{max-width:100%}.paste-alert{color:#fff;position:relative;border-radius:3px;text-align:left;margin-bottom:10px;padding:12px;padding-right:30px}.paste-alert a{color:inherit;text-decoration:underline;font-weight:600}.paste-alert h4{font-size:14px;margin:0;color:inherit;font-weight:600;line-height:normal}.paste-alert .img{width:40px;height:40px;position:absolute;border-radius:3px;left:12px;top:12px}.paste-alert-img{padding-left:65px;min-height:64px}.paste-alert-icon{padding-left:40px}.paste-alert-icon .fa{display:block;width:20px;text-align:center;position:absolute;font-size:15px;left:12px;top:17px}.paste-alert .closed{position:absolute;right:3px;text-decoration:none;font-weight:700;top:0;font-size:20px;color:rgba(255,255,255,.5);padding:4px}.paste-alert .closed:hover{color:#fff}.paste-alert-click{cursor:pointer;padding-right:12px}.paste-alert .primary{outline:0;border:none;background:rgba(0,0,0,.4);color:inherit;border-radius:3px;padding:4px 10px}.paste-alert .cancel{outline:0;border:none;background:rgba(255,255,255,.4);color:rgba(0,0,0,.8);border-radius:3px;padding:4px 10px}.paste-alert .primary:hover,.paste-alert .cancel:hover{opacity:.9}.paste-alert-top,.paste-alert-bottom,.paste-alert-top-left,.paste-alert-top-right,.paste-alert-bottom-left,.paste-alert-bottom-right,.paste-alert-fullscreen{box-shadow:2px 2px 2px rgba(0,0,0,.1);position:fixed;display:none;z-index:1000}.paste-alert-top{top:0;left:0;right:0}.paste-alert-bottom{bottom:0;left:0;right:0}.paste-alert-top-left{top:80px;left:20px}.paste-alert-top-right{top:80px;right:20px}.paste-alert-bottom-left{bottom:20px;left:20px}.paste-alert-bottom-right{bottom:20px;right:20px}.paste-alert-fullsize{top:50%;left:50%;margin:-20px}.alert1{background:#399bff}.alert2{background:#33577b}.alert3{background:#26a65b}.alert4{background:#51b7a3}.alert5{background:#f39c12}.alert6{background:#ef4836}.alert7{background:#9a80b9}.alert8{background:#a2ded0;color:#444}.alert8 .closed{color:inherit}.alert8 a:hover.closed{color:inherit}.alert9{background:#d2527f}.alert10{background:#c78568}.alert11{background:#e99844}.alert1-light{background:#d2e8ff;color:#00356c}.alert2-light{background:#7ea3c9;color:#152433}.alert3-light{background:#83e3aa;color:#13532e}.alert4-light{background:#bde4dc;color:#2f7365}.alert5-light{background:#fad9a4;color:#976008}.alert6-light{background:#fac9c4;color:#b11e0e}.alert7-light{background:#e8e3ef;color:#674b88}.alert8-light{background:#edf9f6;color:#2f8571}.alert9-light{background:#f2cbd9;color:#97274e}.alert10-light{background:#f0dfd8;color:#935336}.alert11-light{background:#f9e3cd;color:#b26515}.alert1-light .closed,.alert2-light .closed,.alert3-light .closed,.alert4-light .closed,.alert5-light .closed,.alert6-light .closed,.alert7-light .closed,.alert8-light .closed,.alert9-light .closed,.alert10-light .closed,.alert11-light .closed{color:inherit;opacity:.6}.alert1-light .closed:hover{color:inherit;opacity:.8}.changelogs .version{font-size:13px;font-family:'Open-Sans',sans-serif}.changelogs .date{font-size:12px;position:absolute;right:20px;top:20px}.changelogs .update{position:relative;background:#fff;padding:20px;border:1px solid #e4e4e4;border-radius:3px;margin-bottom:20px}.changelogs .list{font-size:12px;margin-top:10px;background:#f2f2f2;padding:6px 10px;border-radius:3px;border-left:2px solid #ccc}.changelogs .list h4{margin:0;font-size:14px}.changelogs .list:hover{background:#eee}.login-form{width:360px;padding-top:100px;margin:0 auto;text-shadow:none}.login-form form{background:#fff;border:1px solid #ddd;border-radius:3px}.login-form form img{margin-bottom:18px}.login-form form .profile{border-radius:999px}.login-form form .top{border-bottom:1px solid #ddd;text-align:center;padding:30px 0}.login-form form .top .icon{width:100px;height:100px}.login-form form .top h1,.login-form form .top h4{margin:0}.login-form form .top h1{color:#37363E;font-size:30px;font-family:'Open-Sans',sans-serif;font-weight:700;margin-top:-14px}.login-form form .top h4{font-weight:400;color:#76757B;font-size:15px}.login-form form .form-area{padding:40px}.login-form form .form-area .group{position:relative;margin-bottom:20px}.login-form form .form-area .form-control{padding-left:38px;height:40px}.login-form form .form-area .fa{position:absolute;top:11px;left:13px;font-size:16px;color:#C3C3C3}.login-form form .form-area .btn{height:42px;font-weight:600}.login-form form .form-area .checkbox{margin-bottom:20px}.login-form .footer-links{color:#76757B;padding:10px 5px}.login-form .footer-links a{color:#76757B}.login-form .footer-links a:hover{color:#37363e}.error-pages{text-align:center;padding-top:100px}.error-pages .icon{border-radius:4px;margin-bottom:20px}.error-pages h1{color:#37363e;font-family:'Open-Sans',sans-serif;font-size:28px}.error-pages h4{color:#767279;font-weight:400;font-size:16px;margin-top:10px}.error-pages form{width:400px;margin:0 auto;margin-top:30px;position:relative}.error-pages form .form-control{padding-left:34px;height:40px}.error-pages form .fa{position:absolute;left:10px;top:11px;font-size:16px}.error-pages .bottom-links{margin-top:30px}.error-pages .bottom-links a{margin:0 6px}.checkbox-primary input[type="checkbox"]:checked+label::before{background-color:#399bff;border-color:#399bff}.checkbox-primary input[type="checkbox"]:checked+label::after{color:#fff}.checkbox-danger input[type="checkbox"]:checked+label::before{background-color:#ef4836;border-color:#ef4836}.checkbox-danger input[type="checkbox"]:checked+label::after{color:#fff}.checkbox-info input[type="checkbox"]:checked+label::before{background-color:#51b7a3;border-color:#51b7a3}.checkbox-info input[type="checkbox"]:checked+label::after{color:#fff}.checkbox-warning input[type="checkbox"]:checked+label::before{background-color:#f39c12;border-color:#f39c12}.checkbox-warning input[type="checkbox"]:checked+label::after{color:#fff}.checkbox-success input[type="checkbox"]:checked+label::before{background-color:#26a65b;border-color:#26a65b}.checkbox-success input[type="checkbox"]:checked+label::after{color:#fff}.radio-primary input[type="radio"]+label::after{background-color:#399bff}.radio-primary input[type="radio"]:checked+label::before{border-color:#399bff}.radio-primary input[type="radio"]:checked+label::after{background-color:#399bff}.radio-danger input[type="radio"]+label::after{background-color:#ef4836}.radio-danger input[type="radio"]:checked+label::before{border-color:#ef4836}.radio-danger input[type="radio"]:checked+label::after{background-color:#ef4836}.radio-info input[type="radio"]+label::after{background-color:#51b7a3}.radio-info input[type="radio"]:checked+label::before{border-color:#51b7a3}.radio-info input[type="radio"]:checked+label::after{background-color:#51b7a3}.radio-warning input[type="radio"]+label::after{background-color:#f39c12}.radio-warning input[type="radio"]:checked+label::before{border-color:#f39c12}.radio-warning input[type="radio"]:checked+label::after{background-color:#f39c12}.radio-success input[type="radio"]+label::after{background-color:#26a65b}.radio-success input[type="radio"]:checked+label::before{border-color:#26a65b}.radio-success input[type="radio"]:checked+label::after{background-color:#26a65b}a:focus,input,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus,.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:0}mark{background:#FBDDAC;padding:2px 4px;border-radius:3px}code{background:#EDF6FF;padding:2px 2px;color:#000;border:1px solid #C3E1FF}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:400;line-height:1.6;color:#37363e}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px;letter-spacing:-.02em}h4,.h4,h5,.h5,h6,.h6{margin-top:15px;margin-bottom:10px}h1,.h1{font-size:2.25em}h2,.h2{font-size:2em}h3,.h3{font-size:1.75em}h4,.h4{font-size:1.5em}h5,.h5{font-size:1.25em}h6,.h6{font-size:1em}.text-st{color:#666}.lead{line-height:1.7em}blockquote{background:#f2f2f2;padding:16px 20px;border-radius:3px;border-left:5px solid #ccc}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:inherit;opacity:.6}.blockquote-reverse,blockquote.pull-right{border-right:5px solid #ccc}dt,dd{line-height:inherit}.font-title{font-family:'Open-Sans',sans-serif}.font-w-300{font-weight:300}.font-w-400{font-weight:400}.font-w-600{font-weight:600}.font-w-700{font-weight:700}.font-w-800{font-weight:800}.font-title-tab{font-family:'Open-Sans',sans-serif;text-transform:uppercase;font-weight:700;font-size:12px}.btn{font-size:14px;padding:7px 20px 7px 20px;border:none;background:#e4e4e4;color:inherit;border-radius:3px}.btn:hover{background-color:#eee;color:#666}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:none;box-shadow:none}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-xs{font-size:11px;padding:3px 8px}.btn-sm{font-size:12px;padding:5px 14px}.btn-lg{font-size:16px;padding:10px 30px}.btn-xl{font-size:20px;padding:14px 30px}.btn .fa{font-size:15px;margin-right:5px}.btn-icon{padding-left:10px;padding-right:10px}.btn-icon .fa{margin:0;font-size:normal}.btn-rounded{border-radius:999px}.btn-square{border-radius:0}.btndiv .btn{margin-bottom:10px}.btn-default{background-color:#399bff;color:#fff}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-color:#4da5ff;color:#fff}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background:#208eff;box-shadow:none;color:#fff}.btn-default .badge{color:#399bff;background-color:#fff}.btn-primary{background-color:#33577b;color:#fff}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-color:#396189;color:#fff}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background:#2c4a69;box-shadow:none;color:#fff}.btn-primary .badge{color:#33577b;background-color:#fff}.btn-white{background-color:#e4e4e4;color:#666}.btn-white:hover,.btn-white:focus,.btn-white.focus,.btn-white:active,.btn-white.active,.open>.dropdown-toggle.btn-white{background-color:#eee;color:#666}.btn-white:active,.btn-white.active,.open>.dropdown-toggle.btn-white{background:#d7d7d7;box-shadow:none;color:#666}.btn-white .badge{color:#e4e4e4;background-color:#fff}.btn-toggle{background-color:#e4e4e4;color:#666;border-size:4px;border-size:5px}.btn-toggle:hover,.btn-toggle:focus,.btn-toggle.focus,.btn-toggle:active,.btn-toggle.active,.open>.dropdown-toggle.btn-toggle{background-color:#eee;color:#666}.btn-toggle:active,.btn-toggle.active,.open>.dropdown-toggle.btn-toggle{background:#d7d7d7;box-shadow:none;color:#666}.btn-toggle .badge{color:#e4e4e4;background-color:#fff}.btn-light{background-color:#fff;color:inherit;border:1px solid #BDC4C9}.btn-light:hover,.btn-light:focus,.btn-light.focus,.btn-light:active,.btn-light.active,.open>.dropdown-toggle.btn-light{background-color:#f9f9f9;color:inherit}.btn-light:active,.btn-light.active,.open>.dropdown-toggle.btn-default{box-shadow:none;color:inherit}.btn-success{background-color:#26a65b;color:#fff}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-color:#2ab764;color:#fff}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background:#219150;box-shadow:none;color:#fff}.btn-success .badge{color:#26a65b;background-color:#fff}.btn-info{background-color:#51b7a3;color:#fff}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-color:#5fbdab;color:#fff}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background:#46a995;box-shadow:none;color:#fff}.btn-info .badge{color:#51b7a3;background-color:#fff}.btn-warning{background-color:#f39c12;color:#fff}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-color:#f4a425;color:#fff}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background:#e08e0b;box-shadow:none;color:#fff}.btn-warning .badge{color:#f39c12;background-color:#fff}.btn-danger{background-color:#ef4836;color:#fff}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-color:#f15949;color:#fff}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background:#ed321e;box-shadow:none;color:#fff}.btn-danger .badge{color:#ef4836;background-color:#fff}.btn-option1{background-color:#9a80b9;color:#fff}.btn-option1:hover,.btn-option1:focus,.btn-option1.focus,.btn-option1:active,.btn-option1.active,.open>.dropdown-toggle.btn-option1{background-color:#a48dc0;color:#fff}.btn-option1:active,.btn-option1.active,.open>.dropdown-toggle.btn-option1{background:#8d70b0;box-shadow:none;color:#fff}.btn-option1 .badge{color:#9a80b9;background-color:#fff}.btn-option2{background-color:#a2ded0;color:#333}.btn-option2:hover,.btn-option2:focus,.btn-option2.focus,.btn-option2:active,.btn-option2.active,.open>.dropdown-toggle.btn-option2{background-color:#b1e3d8;color:#333}.btn-option2:active,.btn-option2.active,.open>.dropdown-toggle.btn-option2{background:#8fd7c6;box-shadow:none;color:#333}.btn-option2 .badge{color:#a2ded0;background-color:#fff}.btn-option3{background-color:#d2527f;color:#fff}.btn-option3:hover,.btn-option3:focus,.btn-option3.focus,.btn-option3:active,.btn-option3.active,.open>.dropdown-toggle.btn-option3{background-color:#d6628b;color:#fff}.btn-option3:active,.btn-option3.active,.open>.dropdown-toggle.btn-option3{background:#cd3e70;box-shadow:none;color:#fff}.btn-option3 .badge{color:#d2527f;background-color:#fff}.btn-option4{background-color:#c78568;color:#fff}.btn-option4:hover,.btn-option4:focus,.btn-option4.focus,.btn-option4:active,.btn-option4.active,.open>.dropdown-toggle.btn-option4{background-color:#cd9177;color:#fff}.btn-option4:active,.btn-option4.active,.open>.dropdown-toggle.btn-option4{background:#c07655;box-shadow:none;color:#fff}.btn-option4 .badge{color:#c78568;background-color:#fff}.btn-option5{background-color:#e99844;color:#fff}.btn-option5:hover,.btn-option5:focus,.btn-option5.focus,.btn-option5:active,.btn-option5.active,.open>.dropdown-toggle.btn-option4{background-color:#eba256;color:#fff}.btn-option5:active,.btn-option5.active,.open>.dropdown-toggle.btn-option5{background:#e68b2d;box-shadow:none;color:#fff}.btn-option5 .badge{color:#e99844;background-color:#fff}.label{font-size:inherit;padding:1px 6px;font-weight:600;border-radius:4px}.label-default{background:#399bff}.label-primary{background:#33577b}.label-success{background:#26a65b}.label-info{background:#51b7a3}.label-warning{background:#f39c12}.label-danger{background:#ef4836}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#26a65b}.has-success .form-control{border-color:#26a65b;box-shadow:none}.has-success .form-control:focus{border-color:#26a65b;box-shadow:none}.has-success .input-group-addon{color:#26a65b;background-color:#26a65b;border-color:#26a65b}.has-success .form-control-feedback{color:#26a65b}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#f39c12}.has-warning .form-control{border-color:#f39c12;box-shadow:none}.has-warning .form-control:focus{border-color:#f39c12;box-shadow:none}.has-warning .input-group-addon{color:#f39c12;background-color:#f39c12;border-color:#f39c12}.has-warning .form-control-feedback{color:#f39c12}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#ef4836}.has-error .form-control{border-color:#ef4836;box-shadow:none}.has-error .form-control:focus{border-color:#ef4836;box-shadow:none}.has-error .input-group-addon{color:#ef4836;background-color:#ef4836;border-color:#ef4836}.has-error .form-control-feedback{color:#ef4836}input,select{height:34px;border-radius:3px;padding-left:10px;font-size:14px;background:#fff;border:1px solid #BDC4C9;box-shadow:inset 0 1px 0 #F1F0F1}.form-control{height:34px;border-radius:3px;padding-left:10px;font-size:14px;background:#fff;border:1px solid #BDC4C9;display:block;max-width:100%}.form-control:focus{background:#f7f7f7;border-color:#BDC4C9;box-shadow:none;border-top:1px solid #B7B7B7}.form-label{font-weight:500}.fieldset-form fieldset{padding:20px;margin:0 2px;border-radius:3px;border:1px solid #ccc;padding-top:10px}.fieldset-form legend{width:auto;padding:0 10px;margin-bottom:20px;font-size:16px;line-height:inherit;color:#333;border:0;font-weight:600;border-bottom:none}.form-control-line{border-left:0;border-top:0;border-right:0;padding-left:0;border-radius:0;box-shadow:none}.form-control-line:focus{border-top:0;background:none;border-color:#666}.form-control-radius{border-radius:999px}.form-group{margin-bottom:18px}.form-inline label{margin-right:5px}.form-inline .checkbox-inline,.form-inline .radio-inline{padding-left:0;margin-right:5px}.form-inline .checkbox-inline label,.form-inline .radio-inline label{padding-left:5px}.form-inline .form-group{padding-right:10px}.input-group-addon{background:#f7f7f7;border-color:#BDC4C9;font-weight:600;padding-left:17px;padding-right:17px}.input-sm{height:30px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:3px}.breadcrumb{background:none;padding:0;margin:0;font-weight:600}.breadcrumb .active{font-weight:400;color:#999}.dropdown-menu{min-width:100px;font-size:inherit;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.09);box-shadow:0 1px 2px rgba(0,0,0,.09)}.dropdown-header{font-weight:400;text-transform:uppercase;font-size:10px;padding-left:15px;font-family:'Open-Sans',sans-serif;padding-top:5px}.dropdown-menu li{position:relative}.dropdown-menu>li>a{padding:9px 20px;color:#3D464D}.dropdown-menu .divider{margin:4px 0}.dropdown-menu-list li a{padding-left:40px}.dropdown-menu-list .badge{right:20px;font-weight:400;margin-left:5px;padding:2px 6px;font-size:11px}.dropdown-menu-list .falist{position:absolute;left:15px;top:11px;font-size:15px}.dropdown-menu a{cursor:pointer}.tab-content{background:#fff;padding:20px}.nav-tabs{border-bottom:none;background:#E9E9E9;padding:0}.nav-tabs>li{float:left;margin-bottom:-1px;margin-right:-2px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;color:inherit;border:none;border-radius:0}.nav-tabs>li>a:hover{border-color:none;background:rgba(0,0,0,.1)}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:none;border-bottom-color:transparent}.nav-pills{padding-bottom:10px}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:3px;padding:4px 10px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#399bff}.nav-stacked li{width:100%;display:block}.nav-justified{padding:0;margin-bottom:-1px;border-bottom:none}@media (min-width:768px){.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{border-radius:0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:none}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #fff;border-radius:none}}.nav-line{border-bottom:none;background:none;padding:0}.nav-line>li{float:left;margin-bottom:-1px}.nav-line>li>a:hover{border-color:none;background:none;border-bottom:3px solid #e4e4e4;color:#37363e}.nav-line>li.active>a,.nav-line>li.active>a:hover,.nav-line>li.active>a:focus{color:inherit;cursor:default;background-color:transparent;border-bottom:3px solid #399bff}.nav-icon .fa{font-size:16px;color:inherit}.nav-pills>li>a{border-radius:3px;padding:4px 14px}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none;margin:0}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:29px}.tabs-right>.nav-tabs{float:right;margin-left:29px;text-align:right}.tabcolor5-bg li a,.tabcolor6-bg li a,.tabcolor7-bg li a,.tabcolor8-bg li a,.tabcolor9-bg li a,.tabcolor10-bg li a{color:#fff}.tabcolor5-bg{background:#399bff}.tabcolor6-bg{background:#33577b}.tabcolor7-bg{background:#26a65b}.tabcolor8-bg{background:#51b7a3}.tabcolor9-bg{background:#f39c12}.tabcolor10-bg{background:#ef4836}.panel{box-shadow:none;border:1px solid #e5e5e5;background:#fff;padding:20px;margin-bottom:20px;position:relative}.panel-footer{margin:-20px;margin-top:20px;background:#f9f9f9}.panel-transparent{background:none;border:none}.panel-transparent .panel-title{background:none;border:none}.panel-default>.panel-heading{background-color:inherit;border-bottom:0;color:#3D464D}.panel-title{font-family:'Open-Sans',sans-serif;color:#58666e;font-size:13px;font-weight:700;text-transform:uppercase;padding:16px 20px;margin:-20px;background:#fff;margin-bottom:5px;border-bottom:none;border-top-left-radius:3px;border-top-right-radius:3px}.panel-body,.panel-heading{padding:0;color:inherit;background-color:transparent;border-color:none}.panel-heading{background:transparent;border-bottom:transparent}.panel .badge{font-size:11px;font-family:'Open-Sans',sans-serif;text-transform:none;padding:4px 10px;margin-left:5px;font-weight:400}.panel-footer{background:rgba(0,0,0,.01);border-top:1px solid inherit}.panel-title .badge{color:#fff;background-color:rgba(0,0,0,.2)}.panel-heading{font-size:20px;padding-bottom:15px;font-weight:300}.panel .list-group{margin:-20px;margin-top:20px;background:transparent}.panel .list-group li{border:1px solid rgba(255,255,255,.2);border-left:0;background:transparent;border-right:0}.panel .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom:0}.panel-collapse{padding-bottom:0}.panel-collapse .panel-title{padding-bottom:0;margin-bottom:0}.panel-collapse .panel-body{padding:10px 0 20px 0}.panel-widget{overflow:hidden;border:none}.panel-default{border-color:#ddd}.panel-default .badge{color:inherit;background-color:rgba(0,0,0,.2)}.panel-default .list-group{margin:-20px;margin-top:20px}.panel-default .list-group li{border:1px solid #ddd;border-left:0;border-right:0}.panel-default .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-default .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom:0}.panel-primary{border-color:#399bff;background:#399bff;color:#fff}.panel-primary>.panel-heading{color:inherit;background:transparent;border-bottom:transparent}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#399bff}.panel-primary .panel-title{color:#fff;background:#399bff;border-bottom:1px solid rgba(255,255,255,.1)}.panel-primary .panel-footer{border-top:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04)}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#399bff}.panel-success{border-color:#26a65b;background:#26a65b;color:#fff}.panel-success>.panel-heading{color:inherit;background:transparent;border-bottom:transparent}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#26a65b}.panel-success .panel-title{color:#fff;background:#26a65b;border-bottom:1px solid rgba(255,255,255,.1)}.panel-success .panel-footer{border-top:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04)}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#26a65b}.panel-info{border-color:#51b7a3;background:#51b7a3;color:#fff}.panel-info>.panel-heading{color:inherit;background:transparent;border-bottom:transparent}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#51b7a3}.panel-info .panel-title{color:#fff;background:#51b7a3;border-bottom:1px solid rgba(255,255,255,.1)}.panel-info .panel-footer{border-top:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04)}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#51b7a3}.panel-warning{border-color:#f39c12;background:#f39c12;color:#fff}.panel-warning>.panel-heading{color:inherit;background:transparent;border-bottom:transparent}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#f39c12}.panel-warning .panel-title{color:#fff;background:#f39c12;border-bottom:1px solid rgba(255,255,255,.1)}.panel-warning .panel-footer{border-top:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04)}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#f39c12}.panel-danger{border-color:#ef4836;background:#ef4836;color:#fff}.panel-danger>.panel-heading{color:inherit;background:transparent;border-bottom:transparent}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ef4836}.panel-danger .panel-title{color:#fff;background:#ef4836;border-bottom:1px solid rgba(255,255,255,.1)}.panel-danger .panel-footer{border-top:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04)}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ef4836}.panel-dark{border-color:#3d464d;background:#3d464d;color:#fff}.panel-dark>.panel-heading{color:inherit;background:transparent;border-bottom:transparent}.panel-dark>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3d464d}.panel-dark .panel-title{color:#fff;background:#3d464d;border-bottom:1px solid rgba(255,255,255,.1)}.panel-dark .panel-footer{border-top:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04)}.panel-dark>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3d464d}.panel-tools{font-family:'Open-Sans',sans-serif;position:absolute;right:16px;top:13px;text-transform:none;font-weight:600;font-size:inherit;z-index:1}.panel-tools li{display:inline-block}.panel-tools a{padding:3px 8px;display:block;color:inherit;border-radius:3px}.panel-tools a:hover{color:rgba(0,0,0,.6);background:rgba(0,0,0,.09)}.panel-tools .icon{font-size:14px;color:rgba(0,0,0,.5);border-radius:3px;cursor:pointer}.panel-tools .icon a{color:rgba(0,0,0,.4)}.panel-tools .dropdown-menu{-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2);font-size:13px}.panel-tools .dropdown-menu li{display:list-item}.panel-tools .dropdown-menu a{display:block}.panel-search{margin:-20px;padding:15px 20px;position:relative;color:#333;display:none;background:rgba(255,255,255,.1);margin-bottom:20px;border-bottom:1px solid rgba(0,0,0,.1)}.panel-search input{background:#fff;border-radius:999px;padding-left:35px}.panel-search input:focus{background:#fff}.panel-search .icon{position:absolute;left:35px;top:25px}.panel-fullsize{position:fixed;width:100%;height:100vh;overflow:auto;top:0;left:0;z-index:9999}.panel-tools-hover{display:none}.panel:hover .panel-tools-hover{display:block}.panel-title .titleicon{margin-right:10px}.panel-closed .panel-title{margin-bottom:-20px}.panel-closed .panel-body{display:none}.widget-tools{font-family:'Open-Sans',sans-serif;position:absolute;right:15px;top:13px;text-transform:none;font-weight:600;font-size:inherit;z-index:1}.widget-tools li{display:inline-block}.widget-tools a{padding:3px 8px;display:block;color:inherit;border-radius:3px}.widget-tools a:hover{color:rgba(0,0,0,.6);background:rgba(0,0,0,.09)}.widget-tools .icon{font-size:14px;color:rgba(0,0,0,.5);border-radius:3px;cursor:pointer}.widget-tools .icon a{color:rgba(0,0,0,.4)}.widget-tools .dropdown-menu{-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2);font-size:13px}.widget-tools .dropdown-menu li{display:list-item}.widget-tools .dropdown-menu a{display:block}.widget-fullsize{position:fixed;width:100%;height:100vh;overflow:auto;top:0;left:0;z-index:9999}.widget-tools-hover{display:none}.widget:hover .widget-tools-hover{display:block}.modal{z-index:999}.modal-sm{max-width:400px}.modal-lg{min-width:90%}.modal .close{width:26px;border-radius:4px;font-size:23px;background:#ccc;color:#000;text-shadow:none;opacity:.4;outline:0}.modal .close:hover{opacity:.6}.modal-title{font-family:'Open-Sans',sans-serif;font-size:16px}.modalicon{background:#fff;border-radius:3px;text-align:center;height:300px;display:table-cell;width:100%;position:relative;vertical-align:middle;border:2px solid #e2e2e2}.modalicon img{border-radius:3px}.modalicon:hover{border-color:#ccc}.progress{height:18px;background:rgba(0,0,0,.15);box-shadow:none}.progress-bar{background:#399bff;font-size:12px;font-weight:600;line-height:normal}.progress-bar-success{background:#26a65b}.progress-bar-info{background:#51b7a3}.progress-bar-warning{background:#f39c12}.progress-bar-danger{background:#ef4836}.progress-bar-transparent{background:transparent;color:inherit}.progress-small{height:9px}.progress-large{height:26px}.progress-extralarge{height:36px}.table{margin:0}.table-hover>tbody>tr:hover{background-color:#EFF7FF}thead{font-weight:600;font-family:'Open-Sans',sans-serif;text-transform:uppercase;font-size:12px;color:#37363e}thead .fa{font-size:16px;margin:0}table td{display:table-cell;vertical-align:middle}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:15px;line-height:1.7}.doc-grid{padding:10px 20px}.doc-grid div{border:1px solid #ccc;text-align:center;font-size:16px;padding:20px 0;background:#fff}.widget{overflow:hidden;margin-bottom:10px;background:#fff;border-radius:3px;padding:20px;position:relative}.widget .widget-title{color:#37363e;font-size:12px;font-weight:700;padding:16px 20px;background:#fff;margin-bottom:5px;border-bottom:none;border-top-left-radius:3px;border-top-right-radius:3px;margin:-20px;margin-bottom:20px}.widget .widget-title h5{font-size:12px;z-index:1;margin:0;color:#58666e}.widget .widget-title h2{font-family:'Open-Sans',sans-serif;font-size:12px;margin:0;font-weight:700;text-transform:uppercase}.widget-inline-list{display:block;padding-left:0;color:#58666e}.widget-inline-list li{display:block;float:left;text-align:center;padding:15px 0}.widget-inline-list li span{font-size:18px;display:block;color:inherit;font-family:'Open-Sans',sans-serif;font-weight:600}.widget-inline-list .chart{display:block;margin-top:5px}.widget-inline-list .col-1{width:8.3333333%}.widget-inline-list .col-2{width:16.666666%}.widget-inline-list .col-3{width:25%}.widget-inline-list .col-4{width:33.333333%}.widget-inline-list .col-6{width:50%}.widget-inline-list .col-12{width:100%}.color1{color:#37363e}.color2{color:#58666e}.color3{color:#e4e4e4}.color4{color:#f5f5f5}.color5{color:#399bff}.color6{color:#33577b}.color7{color:#26a65b}.color8{color:#51b7a3}.color9{color:#f39c12}.color10{color:#ef4836}.color11{color:#9a80b9}.color12{color:#a2ded0}.color13{color:#d2527f}.color14{color:#c78568}.color15{color:#e99844}.color0-bg{background:#3d464d}.color1-bg{background:#37363e}.color2-bg{background:#58666e}.color3-bg{background:#e4e4e4}.color4-bg{background:#f5f5f5}.color5-bg{background:#399bff}.color6-bg{background:#33577b}.color7-bg{background:#26a65b}.color8-bg{background:#51b7a3}.color9-bg{background:#f39c12}.color10-bg{background:#ef4836}.color11-bg{background:#9a80b9}.color12-bg{background:#a2ded0}.color13-bg{background:#d2527f}.color14-bg{background:#c78568}.color15-bg{background:#e99844}.color-up{color:#26a65b}.color-down{color:#ef4836}.color-fix{color:#399bff} \ No newline at end of file diff --git a/theme/blue/errors.php b/theme/blue/errors.php new file mode 100644 index 0000000..0543c8e --- /dev/null +++ b/theme/blue/errors.php @@ -0,0 +1,58 @@ + - Default theme + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ +?> + +

        + +
        + +
        + +
        +
        + + + +
        +
        +
        + + +
        +
        + \ No newline at end of file diff --git a/theme/blue/feed-icon-16.gif b/theme/blue/feed-icon-16.gif new file mode 100644 index 0000000000000000000000000000000000000000..b0e4adf1d517547adb01c44d4b91dc78c170b6a5 GIT binary patch literal 652 zcmZ?wbhEHb6krfwc*el+Wun>ZdZS-+EPv0n`Z3e;&({zCe|~<~YVxAe@L9d_w<+eI zdQG2|=)Y_={m^OhuGRS8k57;D^!|N%b}LTnd4>L)F0+RfhHn~;9%Sjhsx^FEY4o_# z@aJ5|7tJR3Qg!}*e0DEi|9+vtokZ=wx3)ekF?ii+`l8kJ-}g^XOY|O<89r|`zE@!I zw8rQ~lgXb$Ew9>5@8;=0sWy6AYxJ_i?AMyOU+0$pSfBZBqR*FQ>F;Kx{5&!HWu4`h zy)%Byb9vwE_-=LQzc;sjE)9COY3j%A(|_+Qe^BcBc}e>FxhY@P6#u!o_50e)zxNOR z`}pkB;X?tj(k`Srkzulr~IeR}rieAnO4Zv4Ey|51V2uYJwG*T+4nasRbB>(}MY z-=|yroMriSlKIDO(^nhX|NsBbKr~SN$pTiZ10q3j!odErfwe$P+R%toOO{t(Rn)kk z$y!51Qk{%#a$H*ZiJ2Ns}=!r?* zzC;clP2T0XA-8-MDRdS$IkE`po9V86lyt^MlhN - Default theme + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ +?> + +
        + + + + + + +
        + +
        + + + +
        + + + + + + + + + + + + + + + + + + + + diff --git a/theme/blue/header.php b/theme/blue/header.php new file mode 100644 index 0000000..3eb0831 --- /dev/null +++ b/theme/blue/header.php @@ -0,0 +1,232 @@ + - Default theme + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ +?> + + +"> + + + + <?php if(isset($p_title)) { echo $p_title.' - ';}echo $title; ?> + + + + + +"; +} +?> + + + + +
        + + + + + + + + +
          + + + + Archive'; + } else { + echo '
        • Archive
        • '; + } + } + + ?> +
        + + + + + + +
        + + + + + + + + + + diff --git a/theme/blue/img/favicon.ico b/theme/blue/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b0ecec6ab2661d7fce24cce25577bb8d9a460c79 GIT binary patch literal 15086 zcmds82UrzXw9JJOpC z=>mcXsGx#~g|^;4!yR%Z6mOpIz3+STeTy?QcV_n5XP+At6oI&`)$n-+3w|B$UOU z9`}?!WLQ5>#-NsA?jZ*K+F1wnYA5b9sQpmJympd|1;M<2{LYgeqsF}ZD*vokB^QmI zso+}Z5TB3COJztYyo`k03y8@qKuB^X4w$%MhO#$im?T5m>@21!c^AAndnKdCZKG$c z96LwZqafy7Iqu$W!L6G&(b&*{y4tI#uDXJRgm~;zHNqSvcg!+P#SC@-g0TxX^xyx+ z+_hupt9cj1p0A|)Z{yajTewNjXkgE%t3!T%J{%n#uwTUhb5y+{tr?U*Zpr5U``=oy zVay^;zx?=%RcO0=7cDI!$1GsRbRfv^B=o- z^O&VNfq99Sui{=?EAHI6gWJS|J%e$%apMNAU%!rPb+rh|IEN+L{(0lp?dZRM-15)f zTA?43mr_!P`|bD8+S-b{#N#e|4smH|zQxta&89{~=3K%Gy`a2zH}34epK)1b6rP(_ zR*wfA_i^vuJv6o4MsZyO&ehZ-ueu&tRo9SHUX94SVyrd{&3$k4PjB-4-(UBiH`fZH za?&ds@#x_Lblks>%;x*Bu4{*N{R3DvJc4CoC#*{v;g?y2^`=od<3HQefBy%YcD=E| zA}%Yl>IOO=Kf=QY9msEe46~cyV0r^!u&BNV-<(oxvW&}~@a2Iwc>5DR+w=M+o21N~ ztIg={?8M_o4^h(g7{(2~Fu2|eeS#iAQ2Pje=c@6EO;Xl}U(3GE-~ZvZgQGvOPs_-w zy94z0pr^YV)g9e*AE0>+&>*N24C=ZOSX7VC9a1wVefwws{gZYa8U49aMtXY9ZB$fN zq9899aanm#iz|R)EFq=QLIWuF*4+^7s`xCeRHfoD~YS4j*vJNG` zlzUEYo*mwvUcEkEK49>oeMdTX{7mY--@-~dwm77POxi9xioc(gtF%3*tg(zfW7(1@tXc@I)EnTxp+iQyGy@T!R8ydfEWFk;DG!ZD$ z{%eC>!_K9>@bA#QK|%uP8)v4{b2bv#_{44fJ*)3T9q!8FZK zOxF^E?em~>Qx#6*oh`fF$=J)H1_$iFK4F()q@;c<J^N>0We zc`ZmDG{8qn-k50^2WjFUZ6<^u1t0Fw3MU({3}Tl*HTuJ!Rl{c(#KAHm19w{b#z{72 zv$3+Vv5^}u+1Sm--YZwGprWDzrDVUTs0gRs-65;2gV_i5Fip`5(!^mly;o+NpQZOh z3MTE<4jaM#Ym{Pm^SAroIsChe@n9U- zJFLFG9<{Z#sIIQ&>LNBa7B)6EurN1=9C4U;P#cnpo|tQ%MmUS9`}IRd@_*`Ht9>08?%1Xz%2bJ%(qO(M+Xc- z$o>=K8y|RK`RYf%>4eM`B*88&4{fb?x%VY|XYw3|i^ru)mynj0hUn;M`1||A&D9kL z6f__$=Y$1TnV9yw(TMh^?bi#QZ=fUctqV75}FIOPxLMfsPOAtl~E+|1@VJZ9wUNo0< z%e)A$NVz)G78%$2kE8^Qid z^Zv5&S?!PukF0WZ(tPs))dA0e&3~`o>wwGcUfA3QY+CwY-3%~TG29Y@_I1dIqVh_( zr<}uTyG+cNcl0IuL#(#Aki0Zs&dz&{Qyx5XD$vE|%n$$OzZ0xVHI?M3#VAJTjJZHbDT+sAI_X+2X*OO|eQbv?XC~RNd2aB>PL%JX|-sUx5DwS{TuqshieJ zJO@@6T~rr^t)0-U?S+OA>Qt&71G0M9Grpo{u<~=a?9Rms z4hkdLpT6t(8;eg^Z(XhJxofqK*G`6ITAn+X%31EzGPPBr^>1uoNci2*h-io+FgUD* z*29si#@6ynPFQ`d|C@d=wRrtgyL&y9@4W2oO9Pr1JA>h5{i-P7l>hxeHt zLa)20cL$yO)!xZvxUqexM~Z!3MNRz;bxkc(EgfBJf}@(ImY$M|>Tv5iv2BcWgQk|& zWD`?U17m?eS3^r{{7Bai_4^|Ui7BlT5^w!)fZ0OpTR``QKJ;pWFR-y zB>vlV-QgXT1fS>>ct!QE(27gi}BS z9R0)LOr@rc8TcZn@9c=+kn6L7 zkfeL38zw@=KA6iDwNQSW&l}yOyiF73r`bB_dOcf@_2rLhC}&Yc`5Tr)swgj`98w8N zONt342n~@WGj+m2+K2f3*MDmxO|g@v{N^7{ z;Z*lGpU4r3<^=dy4Aq{P4}5!Kxh$4TGc`5ke9+W4#`3-7!|wvhO;c`@e3(P+XfEXz z=UQgaaX8-J^0Sqg_5aFy8@{ua)(N9Nm5L+I5!8Qgas2t5#&EF^?Gppr6Kg|$)Cbs{ z*^F|c<`f4leIu;+Ri5)fihP(&xzTyVeIDiJX6Z#>{3pLy5`S^#P_Mkd@q4RT<~ufpNnOEg0&--2levu zdcp@53neW*%-wYqQ)SIDk8+I*Y_c(jaF_y(3BO`gD6bc zx>sEOqdwU3qs3f`-8||?f4awVZHLeA4dw^y55x5d(e}iTO)M5{Ok#byu&|Kxi}|$s zFBQy`cflgNT+B6$!Nf22nTuKfqb7Xvv-v#oeLnT0zfQ+fUh?)6Ib(5s5N%Ivj2-NK z$Hu8zYGYYBx%fiU84D=4KhG!@6TjTg=08u}e`%sOYQm?x&E^|MbNTt>9toVb&F6Zb zCJw{JLUep$v0#0hf8Q}5>L^cs!Z`%<1c_K+9ET6L9bo*2%TLkIe{aP9<%ysDV!FU6 z8VhL*kn>FB>b{M%{=s|@Hx_)K;PocaF_!UX^Cvl{Aj~JdWT8nMCVh3#l-NBre@aBX z{Nd+&1PhH~u*fD0C%lq~_uVJ*-GlkT`n71^7N<`zANYQ8nWf#ADL- zLjrO6PujXyu*f(Ti)jp#_fF<=<9x21<*FI~f8)czxyNAdY&M5I?i7rLq!%p`Bw+H_ zGGg(kK)pQqi{DHZQS6q`7^dKp!qq+F|1>`Q+xEoX6WsiX`osz6P%NT%z+%$`O!-FE zM4b93{x41ba-Z>HK^&IS71o2pAp9e+1vs}Fo)I6Rp7JYp}v|q5f2;Vo@yo#F(l77qP=v;fEclJrQ zNG!2Bi=}2sn7ZQ#<3C(}n123yWBjLXKWMm=Vz=BO4@&;&T;20}iKuQf&<9S_5`Is_ zINu_!H*VfS18GO~4UMR+zmA%^dQ{ccp|YkHWu&8&R910%Mn%n4PLFS*b&=xfXe_l( z$1?LIeDv*6BVs2G{}-ozeaK*$Sprr#=0iCklQhTne!XR|I50n0yU(WY$zrn4BQPxw z-pM&|O~`^%LN@FZb6}H@3+v>3Sf`$YCBckfoLm6I#C&LmrNPuc8grZ4=~Mufpe#oj;)qUzoPzuCOhd*8W!t`&CXs@K$ ztv+=QYN2`bom)r0W;U1)tbL{4C7o~pFP>k&ekauNEU6R))7%uoGLUnzgv)WL`KDl% zLk?D2k-q<5RO_XiEH5>3h4Bf=k@@ zIhuj#SmTtB)i!CEv0G7F9P)JS^HM*^sjs$9#X8pu(2P9C>3gDj-#{N&`)X`|0LPm> z{hWAi{TisK4oVuOu_#CvRWGbZVnGr2O{!LKCe}I^V2#aL%=|@JOHBUH&G<=Pbq(=f z?{*PdQ5QJ9mhm6XhdcKl!0l!?r=N;)6V+1(YO1`pYDl`O#^q*C`)A)LX@_KEol7Cs z+NNXX9u-Y-`Op0Mq{>=~-3Iqd(2l;y@fOwlIL%e4LHEVt0q%7?fH(2iAE@~<-B$=s zn`Qc}5WGgKN3xxAWEz3X|bvrC8cUNsFd`Af|FMM-I$?OAL*T?C!j zBGM-x_v@v690tase6hV>CzfikCA%iI(<`p2YOM3_}Kj-HaJiYXup=Kxcq1BRa4kNvD@TX488agjyJDa z59PySYELo5Uqgf+ubDGlTU6WTHExYs(zAt7tLj8r%?*yfe)M^4@+ji?&px27A};^g z`!wV?QtUQ+6+=Ivw4eWQJ}?bDiN3*57$lW*dVNn%4@ALy5%q_C*O7jw8>&}( zp-Mh*CEFK5h01=^^g?+6lt|alY@~Gt@i&Ys!WOE#kDVxobx2=HT>f(o>Ky;rF%zHo zl)^B%g5%9}|1SF0f#qx2Je^Zhx>ojHdc zVWm%kz8l%;mWW^V?Qm304+e%tFg6yz$k+r%Mk9c(Vb|&z7~wG8yT{NGJ3UgdBXocb zviX(od92XzsH6Ea`xhp$wpXVwcuwl)lgk$zGnZeg=%_ppOO#J3FFxt0v_;NX-OkB1 z@r+;Kji8W-?(oQ1ghvgIu*ewDHzr*^z5xwZ_NSuO|7D`OSkX~wsj~Awp3m%&Z3U^H z6<3X2wCSnWzG68kyx7*>>2()(&sm;6zB0j~k+qRA3HT@C8TV2TZ{IyGZXPq}o+1Co z@~G@8tI(%Nkyg6|5J9K<#S~ZA0B-|UcpZ0@Zr^mj~w~pgo1)#|A7O;eV_j< z%|DZ8S=-orYwzfoXz$<nYF{bQ4aL@z68mDA124gY^i&M)%kiIV)} i{e9LYp!FR4KQVA0WU=zml)huW>`CoArjNAfy8i-U867nM literal 0 HcmV?d00001 diff --git a/theme/blue/img/index.php b/theme/blue/img/index.php new file mode 100644 index 0000000..e69de29 diff --git a/theme/blue/index.php b/theme/blue/index.php new file mode 100644 index 0000000..e69de29 diff --git a/theme/blue/js/bootstrap-select.js b/theme/blue/js/bootstrap-select.js new file mode 100644 index 0000000..c939954 --- /dev/null +++ b/theme/blue/js/bootstrap-select.js @@ -0,0 +1,1215 @@ +/*! + * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/) + * + * Copyright 2013-2014 bootstrap-select + * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE) + */ +(function ($) { + 'use strict'; + + // Case insensitive search + $.expr[':'].icontains = function (obj, index, meta) { + return icontains($(obj).text(), meta[3]); + }; + + // Case and accent insensitive search + $.expr[':'].aicontains = function (obj, index, meta) { + return icontains($(obj).data('normalizedText') || $(obj).text(), meta[3]); + }; + + /** + * Actual implementation of the case insensitive search. + * @access private + * @param {String} haystack + * @param {String} needle + * @returns {boolean} + */ + function icontains(haystack, needle) { + return haystack.toUpperCase().indexOf(needle.toUpperCase()) > -1; + } + + /** + * Remove all diatrics from the given text. + * @access private + * @param {String} text + * @returns {String} + */ + function normalizeToBase(text) { + var rExps = [ + {re: /[\xC0-\xC6]/g, ch: "A"}, + {re: /[\xE0-\xE6]/g, ch: "a"}, + {re: /[\xC8-\xCB]/g, ch: "E"}, + {re: /[\xE8-\xEB]/g, ch: "e"}, + {re: /[\xCC-\xCF]/g, ch: "I"}, + {re: /[\xEC-\xEF]/g, ch: "i"}, + {re: /[\xD2-\xD6]/g, ch: "O"}, + {re: /[\xF2-\xF6]/g, ch: "o"}, + {re: /[\xD9-\xDC]/g, ch: "U"}, + {re: /[\xF9-\xFC]/g, ch: "u"}, + {re: /[\xC7-\xE7]/g, ch: "c"}, + {re: /[\xD1]/g, ch: "N"}, + {re: /[\xF1]/g, ch: "n"} + ]; + $.each(rExps, function () { + text = text.replace(this.re, this.ch); + }); + return text; + } + + + function htmlEscape(html) { + var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + var source = '(?:' + Object.keys(escapeMap).join('|') + ')', + testRegexp = new RegExp(source), + replaceRegexp = new RegExp(source, 'g'), + string = html == null ? '' : '' + html; + return testRegexp.test(string) ? string.replace(replaceRegexp, function (match) { + return escapeMap[match]; + }) : string; + } + + var Selectpicker = function (element, options, e) { + if (e) { + e.stopPropagation(); + e.preventDefault(); + } + + this.$element = $(element); + this.$newElement = null; + this.$button = null; + this.$menu = null; + this.$lis = null; + this.options = options; + + // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a + // data-attribute) + if (this.options.title === null) { + this.options.title = this.$element.attr('title'); + } + + //Expose public methods + this.val = Selectpicker.prototype.val; + this.render = Selectpicker.prototype.render; + this.refresh = Selectpicker.prototype.refresh; + this.setStyle = Selectpicker.prototype.setStyle; + this.selectAll = Selectpicker.prototype.selectAll; + this.deselectAll = Selectpicker.prototype.deselectAll; + this.destroy = Selectpicker.prototype.remove; + this.remove = Selectpicker.prototype.remove; + this.show = Selectpicker.prototype.show; + this.hide = Selectpicker.prototype.hide; + + this.init(); + }; + + Selectpicker.VERSION = '1.6.3'; + + // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both. + Selectpicker.DEFAULTS = { + noneSelectedText: 'Nothing selected', + noneResultsText: 'No results match', + countSelectedText: function (numSelected, numTotal) { + return (numSelected == 1) ? "{0} item selected" : "{0} items selected"; + }, + maxOptionsText: function (numAll, numGroup) { + var arr = []; + + arr[0] = (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)'; + arr[1] = (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'; + + return arr; + }, + selectAllText: 'Select All', + deselectAllText: 'Deselect All', + multipleSeparator: ', ', + style: 'btn-light', + size: 'auto', + title: null, + selectedTextFormat: 'values', + width: false, + container: false, + hideDisabled: false, + showSubtext: false, + showIcon: true, + showContent: true, + dropupAuto: true, + header: false, + liveSearch: false, + actionsBox: false, + iconBase: 'fa', + tickIcon: 'fa-check', + maxOptions: false, + mobile: false, + selectOnTab: false, + dropdownAlignRight: false, + searchAccentInsensitive: false + }; + + Selectpicker.prototype = { + + constructor: Selectpicker, + + init: function () { + var that = this, + id = this.$element.attr('id'); + + this.$element.hide(); + this.multiple = this.$element.prop('multiple'); + this.autofocus = this.$element.prop('autofocus'); + this.$newElement = this.createView(); + this.$element.after(this.$newElement); + this.$menu = this.$newElement.find('> .dropdown-menu'); + this.$button = this.$newElement.find('> button'); + this.$searchbox = this.$newElement.find('input'); + + if (this.options.dropdownAlignRight) + this.$menu.addClass('dropdown-menu-right'); + + if (typeof id !== 'undefined') { + this.$button.attr('data-id', id); + $('label[for="' + id + '"]').click(function (e) { + e.preventDefault(); + that.$button.focus(); + }); + } + + this.checkDisabled(); + this.clickListener(); + if (this.options.liveSearch) this.liveSearchListener(); + this.render(); + this.liHeight(); + this.setStyle(); + this.setWidth(); + if (this.options.container) this.selectPosition(); + this.$menu.data('this', this); + this.$newElement.data('this', this); + if (this.options.mobile) this.mobile(); + }, + + createDropdown: function () { + // Options + // If we are multiple, then add the show-tick class by default + var multiple = this.multiple ? ' show-tick' : '', + inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '', + autofocus = this.autofocus ? ' autofocus' : '', + btnSize = this.$element.parents().hasClass('form-group-lg') ? ' btn-lg' : (this.$element.parents().hasClass('form-group-sm') ? ' btn-sm' : ''); + // Elements + var header = this.options.header ? '
        ' + this.options.header + '
        ' : ''; + var searchbox = this.options.liveSearch ? '' : ''; + var actionsbox = this.options.actionsBox ? '
        ' + + '
        ' + + '' + + '' + + '
        ' + + '
        ' : ''; + var drop = + '
        ' + + '' + + '' + + '
        '; + + return $(drop); + }, + + createView: function () { + var $drop = this.createDropdown(); + var $li = this.createLi(); + $drop.find('ul').append($li); + return $drop; + }, + + reloadLi: function () { + //Remove all children. + this.destroyLi(); + //Re build + var $li = this.createLi(); + this.$menu.find('ul').append($li); + }, + + destroyLi: function () { + this.$menu.find('li').remove(); + }, + + createLi: function () { + var that = this, + _li = [], + optID = 0; + + // Helper functions + /** + * @param content + * @param [index] + * @param [classes] + * @returns {string} + */ + var generateLI = function (content, index, classes) { + return '' + content + ''; + }; + + /** + * @param text + * @param [classes] + * @param [inline] + * @param [optgroup] + * @returns {string} + */ + var generateA = function (text, classes, inline, optgroup) { + var normText = normalizeToBase(htmlEscape(text)); + return '' + text + + '' + + ''; + }; + + this.$element.find('option').each(function () { + var $this = $(this); + + // Get the class and text for the option + var optionClass = $this.attr('class') || '', + inline = $this.attr('style'), + text = $this.data('content') ? $this.data('content') : $this.html(), + subtext = typeof $this.data('subtext') !== 'undefined' ? '' + $this.data('subtext') + '' : '', + icon = typeof $this.data('icon') !== 'undefined' ? ' ' : '', + isDisabled = $this.is(':disabled') || $this.parent().is(':disabled'), + index = $this[0].index; + if (icon !== '' && isDisabled) { + icon = '' + icon + ''; + } + + if (!$this.data('content')) { + // Prepend any icon and append any subtext to the main text. + text = icon + '' + text + subtext + ''; + } + + if (that.options.hideDisabled && isDisabled) { + return; + } + + if ($this.parent().is('optgroup') && $this.data('divider') !== true) { + if ($this.index() === 0) { // Is it the first option of the optgroup? + optID += 1; + + // Get the opt group label + var label = $this.parent().attr('label'); + var labelSubtext = typeof $this.parent().data('subtext') !== 'undefined' ? '' + $this.parent().data('subtext') + '' : ''; + var labelIcon = $this.parent().data('icon') ? ' ' : ''; + label = labelIcon + '' + label + labelSubtext + ''; + + if (index !== 0 && _li.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown? + _li.push(generateLI('', null, 'divider')); + } + + _li.push(generateLI(label, null, 'dropdown-header')); + } + + _li.push(generateLI(generateA(text, 'opt ' + optionClass, inline, optID), index)); + } else if ($this.data('divider') === true) { + _li.push(generateLI('', index, 'divider')); + } else if ($this.data('hidden') === true) { + _li.push(generateLI(generateA(text, optionClass, inline), index, 'hide is-hidden')); + } else { + _li.push(generateLI(generateA(text, optionClass, inline), index)); + } + }); + + //If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button + if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) { + this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected'); + } + + return $(_li.join('')); + }, + + findLis: function () { + if (this.$lis == null) this.$lis = this.$menu.find('li'); + return this.$lis; + }, + + /** + * @param [updateLi] defaults to true + */ + render: function (updateLi) { + var that = this; + + //Update the LI to match the SELECT + if (updateLi !== false) { + this.$element.find('option').each(function (index) { + that.setDisabled(index, $(this).is(':disabled') || $(this).parent().is(':disabled')); + that.setSelected(index, $(this).is(':selected')); + }); + } + + this.tabIndex(); + var notDisabled = this.options.hideDisabled ? ':not([disabled])' : ''; + var selectedItems = this.$element.find('option:selected' + notDisabled).map(function () { + var $this = $(this); + var icon = $this.data('icon') && that.options.showIcon ? ' ' : ''; + var subtext; + if (that.options.showSubtext && $this.attr('data-subtext') && !that.multiple) { + subtext = ' ' + $this.data('subtext') + ''; + } else { + subtext = ''; + } + if ($this.data('content') && that.options.showContent) { + return $this.data('content'); + } else if (typeof $this.attr('title') !== 'undefined') { + return $this.attr('title'); + } else { + return icon + $this.html() + subtext; + } + }).toArray(); + + //Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled + //Convert all the values into a comma delimited string + var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator); + + //If this is multi select, and the selectText type is count, the show 1 of 2 selected etc.. + if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) { + var max = this.options.selectedTextFormat.split('>'); + if ((max.length > 1 && selectedItems.length > max[1]) || (max.length == 1 && selectedItems.length >= 2)) { + notDisabled = this.options.hideDisabled ? ', [disabled]' : ''; + var totalCount = this.$element.find('option').not('[data-divider="true"], [data-hidden="true"]' + notDisabled).length, + tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText; + title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString()); + } + } + + this.options.title = this.$element.attr('title'); + + if (this.options.selectedTextFormat == 'static') { + title = this.options.title; + } + + //If we dont have a title, then use the default, or if nothing is set at all, use the not selected text + if (!title) { + title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText; + } + + this.$button.attr('title', htmlEscape(title)); + this.$newElement.find('.filter-option').html(title); + }, + + /** + * @param [style] + * @param [status] + */ + setStyle: function (style, status) { + if (this.$element.attr('class')) { + this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|validate\[.*\]/gi, '')); + } + + var buttonClass = style ? style : this.options.style; + + if (status == 'add') { + this.$button.addClass(buttonClass); + } else if (status == 'remove') { + this.$button.removeClass(buttonClass); + } else { + this.$button.removeClass(this.options.style); + this.$button.addClass(buttonClass); + } + }, + + liHeight: function () { + if (this.options.size === false) return; + + var $selectClone = this.$menu.parent().clone().find('> .dropdown-toggle').prop('autofocus', false).end().appendTo('body'), + $menuClone = $selectClone.addClass('open').find('> .dropdown-menu'), + liHeight = $menuClone.find('li').not('.divider').not('.dropdown-header').filter(':visible').children('a').outerHeight(), + headerHeight = this.options.header ? $menuClone.find('.popover-title').outerHeight() : 0, + searchHeight = this.options.liveSearch ? $menuClone.find('.bs-searchbox').outerHeight() : 0, + actionsHeight = this.options.actionsBox ? $menuClone.find('.bs-actionsbox').outerHeight() : 0; + + $selectClone.remove(); + + this.$newElement + .data('liHeight', liHeight) + .data('headerHeight', headerHeight) + .data('searchHeight', searchHeight) + .data('actionsHeight', actionsHeight); + }, + + setSize: function () { + this.findLis(); + var that = this, + menu = this.$menu, + menuInner = menu.find('.inner'), + selectHeight = this.$newElement.outerHeight(), + liHeight = this.$newElement.data('liHeight'), + headerHeight = this.$newElement.data('headerHeight'), + searchHeight = this.$newElement.data('searchHeight'), + actionsHeight = this.$newElement.data('actionsHeight'), + divHeight = this.$lis.filter('.divider').outerHeight(true), + menuPadding = parseInt(menu.css('padding-top')) + + parseInt(menu.css('padding-bottom')) + + parseInt(menu.css('border-top-width')) + + parseInt(menu.css('border-bottom-width')), + notDisabled = this.options.hideDisabled ? ', .disabled' : '', + $window = $(window), + menuExtras = menuPadding + parseInt(menu.css('margin-top')) + parseInt(menu.css('margin-bottom')) + 2, + menuHeight, + selectOffsetTop, + selectOffsetBot, + posVert = function () { + // JQuery defines a scrollTop function, but in pure JS it's a property + //noinspection JSValidateTypes + selectOffsetTop = that.$newElement.offset().top - $window.scrollTop(); + selectOffsetBot = $window.height() - selectOffsetTop - selectHeight; + }; + posVert(); + if (this.options.header) menu.css('padding-top', 0); + + if (this.options.size == 'auto') { + var getSize = function () { + var minHeight, + lisVis = that.$lis.not('.hide'); + + posVert(); + menuHeight = selectOffsetBot - menuExtras; + + if (that.options.dropupAuto) { + that.$newElement.toggleClass('dropup', (selectOffsetTop > selectOffsetBot) && ((menuHeight - menuExtras) < menu.height())); + } + if (that.$newElement.hasClass('dropup')) { + menuHeight = selectOffsetTop - menuExtras; + } + + if ((lisVis.length + lisVis.filter('.dropdown-header').length) > 3) { + minHeight = liHeight * 3 + menuExtras - 2; + } else { + minHeight = 0; + } + + menu.css({ + 'max-height': menuHeight + 'px', + 'overflow': 'hidden', + 'min-height': minHeight + headerHeight + searchHeight + actionsHeight + 'px' + }); + menuInner.css({ + 'max-height': menuHeight - headerHeight - searchHeight - actionsHeight - menuPadding + 'px', + 'overflow-y': 'auto', + 'min-height': Math.max(minHeight - menuPadding, 0) + 'px' + }); + }; + getSize(); + this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize); + $(window).off('resize.getSize').on('resize.getSize', getSize); + $(window).off('scroll.getSize').on('scroll.getSize', getSize); + } else if (this.options.size && this.options.size != 'auto' && menu.find('li' + notDisabled).length > this.options.size) { + var optIndex = this.$lis.not('.divider' + notDisabled).find(' > *').slice(0, this.options.size).last().parent().index(); + var divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length; + menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding; + if (that.options.dropupAuto) { + //noinspection JSUnusedAssignment + this.$newElement.toggleClass('dropup', (selectOffsetTop > selectOffsetBot) && (menuHeight < menu.height())); + } + menu.css({'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + 'px', 'overflow': 'hidden'}); + menuInner.css({'max-height': menuHeight - menuPadding + 'px', 'overflow-y': 'auto'}); + } + }, + + setWidth: function () { + if (this.options.width == 'auto') { + this.$menu.css('min-width', '0'); + + // Get correct width if element hidden + var selectClone = this.$newElement.clone().appendTo('body'); + var ulWidth = selectClone.find('> .dropdown-menu').css('width'); + var btnWidth = selectClone.css('width', 'auto').find('> button').css('width'); + selectClone.remove(); + + // Set width to whatever's larger, button title or longest option + this.$newElement.css('width', Math.max(parseInt(ulWidth), parseInt(btnWidth)) + 'px'); + } else if (this.options.width == 'fit') { + // Remove inline min-width so width can be changed from 'auto' + this.$menu.css('min-width', ''); + this.$newElement.css('width', '').addClass('fit-width'); + } else if (this.options.width) { + // Remove inline min-width so width can be changed from 'auto' + this.$menu.css('min-width', ''); + this.$newElement.css('width', this.options.width); + } else { + // Remove inline min-width/width so width can be changed + this.$menu.css('min-width', ''); + this.$newElement.css('width', ''); + } + // Remove fit-width class if width is changed programmatically + if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') { + this.$newElement.removeClass('fit-width'); + } + }, + + selectPosition: function () { + var that = this, + drop = '
        ', + $drop = $(drop), + pos, + actualHeight, + getPlacement = function ($element) { + $drop.addClass($element.attr('class').replace(/form-control/gi, '')).toggleClass('dropup', $element.hasClass('dropup')); + pos = $element.offset(); + actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight; + $drop.css({ + 'top': pos.top + actualHeight, + 'left': pos.left, + 'width': $element[0].offsetWidth, + 'position': 'absolute' + }); + }; + this.$newElement.on('click', function () { + if (that.isDisabled()) { + return; + } + getPlacement($(this)); + $drop.appendTo(that.options.container); + $drop.toggleClass('open', !$(this).hasClass('open')); + $drop.append(that.$menu); + }); + $(window).resize(function () { + getPlacement(that.$newElement); + }); + $(window).on('scroll', function () { + getPlacement(that.$newElement); + }); + $('html').on('click', function (e) { + if ($(e.target).closest(that.$newElement).length < 1) { + $drop.removeClass('open'); + } + }); + }, + + setSelected: function (index, selected) { + this.findLis(); + this.$lis.filter('[data-original-index="' + index + '"]').toggleClass('selected', selected); + }, + + setDisabled: function (index, disabled) { + this.findLis(); + if (disabled) { + this.$lis.filter('[data-original-index="' + index + '"]').addClass('disabled').find('a').attr('href', '#').attr('tabindex', -1); + } else { + this.$lis.filter('[data-original-index="' + index + '"]').removeClass('disabled').find('a').removeAttr('href').attr('tabindex', 0); + } + }, + + isDisabled: function () { + return this.$element.is(':disabled'); + }, + + checkDisabled: function () { + var that = this; + + if (this.isDisabled()) { + this.$button.addClass('disabled').attr('tabindex', -1); + } else { + if (this.$button.hasClass('disabled')) { + this.$button.removeClass('disabled'); + } + + if (this.$button.attr('tabindex') == -1) { + if (!this.$element.data('tabindex')) this.$button.removeAttr('tabindex'); + } + } + + this.$button.click(function () { + return !that.isDisabled(); + }); + }, + + tabIndex: function () { + if (this.$element.is('[tabindex]')) { + this.$element.data('tabindex', this.$element.attr('tabindex')); + this.$button.attr('tabindex', this.$element.data('tabindex')); + } + }, + + clickListener: function () { + var that = this; + + this.$newElement.on('touchstart.dropdown', '.dropdown-menu', function (e) { + e.stopPropagation(); + }); + + this.$newElement.on('click', function () { + that.setSize(); + if (!that.options.liveSearch && !that.multiple) { + setTimeout(function () { + that.$menu.find('.selected a').focus(); + }, 10); + } + }); + + this.$menu.on('click', 'li a', function (e) { + var $this = $(this), + clickedIndex = $this.parent().data('originalIndex'), + prevValue = that.$element.val(), + prevIndex = that.$element.prop('selectedIndex'); + + // Don't close on multi choice menu + if (that.multiple) { + e.stopPropagation(); + } + + e.preventDefault(); + + //Don't run if we have been disabled + if (!that.isDisabled() && !$this.parent().hasClass('disabled')) { + var $options = that.$element.find('option'), + $option = $options.eq(clickedIndex), + state = $option.prop('selected'), + $optgroup = $option.parent('optgroup'), + maxOptions = that.options.maxOptions, + maxOptionsGrp = $optgroup.data('maxOptions') || false; + + if (!that.multiple) { // Deselect all others if not multi select box + $options.prop('selected', false); + $option.prop('selected', true); + that.$menu.find('.selected').removeClass('selected'); + that.setSelected(clickedIndex, true); + } else { // Toggle the one we have chosen if we are multi select. + $option.prop('selected', !state); + that.setSelected(clickedIndex, !state); + $this.blur(); + + if ((maxOptions !== false) || (maxOptionsGrp !== false)) { + var maxReached = maxOptions < $options.filter(':selected').length, + maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length; + + if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) { + if (maxOptions && maxOptions == 1) { + $options.prop('selected', false); + $option.prop('selected', true); + that.$menu.find('.selected').removeClass('selected'); + that.setSelected(clickedIndex, true); + } else if (maxOptionsGrp && maxOptionsGrp == 1) { + $optgroup.find('option:selected').prop('selected', false); + $option.prop('selected', true); + var optgroupID = $this.data('optgroup'); + + that.$menu.find('.selected').has('a[data-optgroup="' + optgroupID + '"]').removeClass('selected'); + + that.setSelected(clickedIndex, true); + } else { + var maxOptionsArr = (typeof that.options.maxOptionsText === 'function') ? + that.options.maxOptionsText(maxOptions, maxOptionsGrp) : that.options.maxOptionsText, + maxTxt = maxOptionsArr[0].replace('{n}', maxOptions), + maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp), + $notify = $('
        '); + // If {var} is set in array, replace it + /** @deprecated */ + if (maxOptionsArr[2]) { + maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]); + maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]); + } + + $option.prop('selected', false); + + that.$menu.append($notify); + + if (maxOptions && maxReached) { + $notify.append($('
        ' + maxTxt + '
        ')); + that.$element.trigger('maxReached.bs.select'); + } + + if (maxOptionsGrp && maxReachedGrp) { + $notify.append($('
        ' + maxTxtGrp + '
        ')); + that.$element.trigger('maxReachedGrp.bs.select'); + } + + setTimeout(function () { + that.setSelected(clickedIndex, false); + }, 10); + + $notify.delay(750).fadeOut(300, function () { + $(this).remove(); + }); + } + } + } + } + + if (!that.multiple) { + that.$button.focus(); + } else if (that.options.liveSearch) { + that.$searchbox.focus(); + } + + // Trigger select 'change' + if ((prevValue != that.$element.val() && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) { + that.$element.change(); + } + } + }); + + this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function (e) { + if (e.target == this) { + e.preventDefault(); + e.stopPropagation(); + if (!that.options.liveSearch) { + that.$button.focus(); + } else { + that.$searchbox.focus(); + } + } + }); + + this.$menu.on('click', 'li.divider, li.dropdown-header', function (e) { + e.preventDefault(); + e.stopPropagation(); + if (!that.options.liveSearch) { + that.$button.focus(); + } else { + that.$searchbox.focus(); + } + }); + + this.$menu.on('click', '.popover-title .close', function () { + that.$button.focus(); + }); + + this.$searchbox.on('click', function (e) { + e.stopPropagation(); + }); + + + this.$menu.on('click', '.actions-btn', function (e) { + if (that.options.liveSearch) { + that.$searchbox.focus(); + } else { + that.$button.focus(); + } + + e.preventDefault(); + e.stopPropagation(); + + if ($(this).is('.bs-select-all')) { + that.selectAll(); + } else { + that.deselectAll(); + } + that.$element.change(); + }); + + this.$element.change(function () { + that.render(false); + }); + }, + + liveSearchListener: function () { + var that = this, + no_results = $('
      1. '); + + this.$newElement.on('click.dropdown.data-api touchstart.dropdown.data-api', function () { + that.$menu.find('.active').removeClass('active'); + if (!!that.$searchbox.val()) { + that.$searchbox.val(''); + that.$lis.not('.is-hidden').removeClass('hide'); + if (!!no_results.parent().length) no_results.remove(); + } + if (!that.multiple) that.$menu.find('.selected').addClass('active'); + setTimeout(function () { + that.$searchbox.focus(); + }, 10); + }); + + this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function (e) { + e.stopPropagation(); + }); + + this.$searchbox.on('input propertychange', function () { + if (that.$searchbox.val()) { + + if (that.options.searchAccentInsensitive) { + that.$lis.not('.is-hidden').removeClass('hide').find('a').not(':aicontains(' + normalizeToBase(that.$searchbox.val()) + ')').parent().addClass('hide'); + } else { + that.$lis.not('.is-hidden').removeClass('hide').find('a').not(':icontains(' + that.$searchbox.val() + ')').parent().addClass('hide'); + } + + if (!that.$menu.find('li').filter(':visible:not(.no-results)').length) { + if (!!no_results.parent().length) no_results.remove(); + no_results.html(that.options.noneResultsText + ' "' + htmlEscape(that.$searchbox.val()) + '"').show(); + that.$menu.find('li').last().after(no_results); + } else if (!!no_results.parent().length) { + no_results.remove(); + } + + } else { + that.$lis.not('.is-hidden').removeClass('hide'); + if (!!no_results.parent().length) no_results.remove(); + } + + that.$menu.find('li.active').removeClass('active'); + that.$menu.find('li').filter(':visible:not(.divider)').eq(0).addClass('active').find('a').focus(); + $(this).focus(); + }); + }, + + val: function (value) { + if (typeof value !== 'undefined') { + this.$element.val(value); + this.render(); + + return this.$element; + } else { + return this.$element.val(); + } + }, + + selectAll: function () { + this.findLis(); + this.$lis.not('.divider').not('.disabled').not('.selected').filter(':visible').find('a').click(); + }, + + deselectAll: function () { + this.findLis(); + this.$lis.not('.divider').not('.disabled').filter('.selected').filter(':visible').find('a').click(); + }, + + keydown: function (e) { + var $this = $(this), + $parent = ($this.is('input')) ? $this.parent().parent() : $this.parent(), + $items, + that = $parent.data('this'), + index, + next, + first, + last, + prev, + nextPrev, + prevIndex, + isActive, + keyCodeMap = { + 32: ' ', + 48: '0', + 49: '1', + 50: '2', + 51: '3', + 52: '4', + 53: '5', + 54: '6', + 55: '7', + 56: '8', + 57: '9', + 59: ';', + 65: 'a', + 66: 'b', + 67: 'c', + 68: 'd', + 69: 'e', + 70: 'f', + 71: 'g', + 72: 'h', + 73: 'i', + 74: 'j', + 75: 'k', + 76: 'l', + 77: 'm', + 78: 'n', + 79: 'o', + 80: 'p', + 81: 'q', + 82: 'r', + 83: 's', + 84: 't', + 85: 'u', + 86: 'v', + 87: 'w', + 88: 'x', + 89: 'y', + 90: 'z', + 96: '0', + 97: '1', + 98: '2', + 99: '3', + 100: '4', + 101: '5', + 102: '6', + 103: '7', + 104: '8', + 105: '9' + }; + + if (that.options.liveSearch) $parent = $this.parent().parent(); + + if (that.options.container) $parent = that.$menu; + + $items = $('[role=menu] li a', $parent); + + isActive = that.$menu.parent().hasClass('open'); + + if (!isActive && /([0-9]|[A-z])/.test(String.fromCharCode(e.keyCode))) { + if (!that.options.container) { + that.setSize(); + that.$menu.parent().addClass('open'); + isActive = true; + } else { + that.$newElement.trigger('click'); + } + that.$searchbox.focus(); + } + + if (that.options.liveSearch) { + if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && that.$menu.find('.active').length === 0) { + e.preventDefault(); + that.$menu.parent().removeClass('open'); + that.$button.focus(); + } + $items = $('[role=menu] li:not(.divider):not(.dropdown-header):visible', $parent); + if (!$this.val() && !/(38|40)/.test(e.keyCode.toString(10))) { + if ($items.filter('.active').length === 0) { + if (that.options.searchAccentInsensitive) { + $items = that.$newElement.find('li').filter(':aicontains(' + normalizeToBase(keyCodeMap[e.keyCode]) + ')'); + } else { + $items = that.$newElement.find('li').filter(':icontains(' + keyCodeMap[e.keyCode] + ')'); + } + } + } + } + + if (!$items.length) return; + + if (/(38|40)/.test(e.keyCode.toString(10))) { + index = $items.index($items.filter(':focus')); + first = $items.parent(':not(.disabled):visible').first().index(); + last = $items.parent(':not(.disabled):visible').last().index(); + next = $items.eq(index).parent().nextAll(':not(.disabled):visible').eq(0).index(); + prev = $items.eq(index).parent().prevAll(':not(.disabled):visible').eq(0).index(); + nextPrev = $items.eq(next).parent().prevAll(':not(.disabled):visible').eq(0).index(); + + if (that.options.liveSearch) { + $items.each(function (i) { + if ($(this).is(':not(.disabled)')) { + $(this).data('index', i); + } + }); + index = $items.index($items.filter('.active')); + first = $items.filter(':not(.disabled):visible').first().data('index'); + last = $items.filter(':not(.disabled):visible').last().data('index'); + next = $items.eq(index).nextAll(':not(.disabled):visible').eq(0).data('index'); + prev = $items.eq(index).prevAll(':not(.disabled):visible').eq(0).data('index'); + nextPrev = $items.eq(next).prevAll(':not(.disabled):visible').eq(0).data('index'); + } + + prevIndex = $this.data('prevIndex'); + + if (e.keyCode == 38) { + if (that.options.liveSearch) index -= 1; + if (index != nextPrev && index > prev) index = prev; + if (index < first) index = first; + if (index == prevIndex) index = last; + } + + if (e.keyCode == 40) { + if (that.options.liveSearch) index += 1; + if (index == -1) index = 0; + if (index != nextPrev && index < next) index = next; + if (index > last) index = last; + if (index == prevIndex) index = first; + } + + $this.data('prevIndex', index); + + if (!that.options.liveSearch) { + $items.eq(index).focus(); + } else { + e.preventDefault(); + if (!$this.is('.dropdown-toggle')) { + $items.removeClass('active'); + $items.eq(index).addClass('active').find('a').focus(); + $this.focus(); + } + } + + } else if (!$this.is('input')) { + var keyIndex = [], + count, + prevKey; + + $items.each(function () { + if ($(this).parent().is(':not(.disabled)')) { + if ($.trim($(this).text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) { + keyIndex.push($(this).parent().index()); + } + } + }); + + count = $(document).data('keycount'); + count++; + $(document).data('keycount', count); + + prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1); + + if (prevKey != keyCodeMap[e.keyCode]) { + count = 1; + $(document).data('keycount', count); + } else if (count >= keyIndex.length) { + $(document).data('keycount', 0); + if (count > keyIndex.length) count = 1; + } + + $items.eq(keyIndex[count - 1]).focus(); + } + + // Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu. + if ((/(13|32)/.test(e.keyCode.toString(10)) || (/(^9$)/.test(e.keyCode.toString(10)) && that.options.selectOnTab)) && isActive) { + if (!/(32)/.test(e.keyCode.toString(10))) e.preventDefault(); + if (!that.options.liveSearch) { + $(':focus').click(); + } else if (!/(32)/.test(e.keyCode.toString(10))) { + that.$menu.find('.active a').click(); + $this.focus(); + } + $(document).data('keycount', 0); + } + + if ((/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch)) || (/(27)/.test(e.keyCode.toString(10)) && !isActive)) { + that.$menu.parent().removeClass('open'); + that.$button.focus(); + } + }, + + mobile: function () { + this.$element.addClass('mobile-device').appendTo(this.$newElement); + if (this.options.container) this.$menu.hide(); + }, + + refresh: function () { + this.$lis = null; + this.reloadLi(); + this.render(); + this.setWidth(); + this.setStyle(); + this.checkDisabled(); + this.liHeight(); + }, + + update: function () { + this.reloadLi(); + this.setWidth(); + this.setStyle(); + this.checkDisabled(); + this.liHeight(); + }, + + hide: function () { + this.$newElement.hide(); + }, + + show: function () { + this.$newElement.show(); + }, + + remove: function () { + this.$newElement.remove(); + this.$element.remove(); + } + }; + + // SELECTPICKER PLUGIN DEFINITION + // ============================== + function Plugin(option, event) { + // get the args of the outer function.. + var args = arguments; + // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them + // to get lost + //noinspection JSDuplicatedDeclaration + var _option = option, + option = args[0], + event = args[1]; + [].shift.apply(args); + + // This fixes a bug in the js implementation on android 2.3 #715 + if (typeof option == 'undefined') { + option = _option; + } + + var value; + var chain = this.each(function () { + var $this = $(this); + if ($this.is('select')) { + var data = $this.data('selectpicker'), + options = typeof option == 'object' && option; + + if (!data) { + var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options); + $this.data('selectpicker', (data = new Selectpicker(this, config, event))); + } else if (options) { + for (var i in options) { + if (options.hasOwnProperty(i)) { + data.options[i] = options[i]; + } + } + } + + if (typeof option == 'string') { + if (data[option] instanceof Function) { + value = data[option].apply(data, args); + } else { + value = data.options[option]; + } + } + } + }); + + if (typeof value !== 'undefined') { + //noinspection JSUnusedAssignment + return value; + } else { + return chain; + } + } + + var old = $.fn.selectpicker; + $.fn.selectpicker = Plugin; + $.fn.selectpicker.Constructor = Selectpicker; + + // SELECTPICKER NO CONFLICT + // ======================== + $.fn.selectpicker.noConflict = function () { + $.fn.selectpicker = old; + return this; + }; + + $(document) + .data('keycount', 0) + .on('keydown', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=menu], .bs-searchbox input', Selectpicker.prototype.keydown) + .on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=menu], .bs-searchbox input', function (e) { + e.stopPropagation(); + }); + + // SELECTPICKER DATA-API + // ===================== + $(window).on('load.bs.select.data-api', function () { + $('.selectpicker').each(function () { + var $selectpicker = $(this); + Plugin.call($selectpicker, $selectpicker.data()); + }) + }); +})(jQuery); \ No newline at end of file diff --git a/theme/blue/js/bootstrap.min.js b/theme/blue/js/bootstrap.min.js new file mode 100644 index 0000000..c6d3692 --- /dev/null +++ b/theme/blue/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.2 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/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)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(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){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(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.2",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);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.2",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)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},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")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&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);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).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=this.sliding=this.interval=this.$active=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.2",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"));return a>this.$items.length-1||0>a?void 0: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(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0: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"==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(this.options.trigger).filter('[href="#'+b.id+'"], [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.2",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0,trigger:'[data-toggle="collapse"]'},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":a.extend({},e.data(),{trigger:this});c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(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 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.2",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('
    ', + $drop = $(drop), + pos, + actualHeight, + getPlacement = function ($element) { + $drop.addClass($element.attr('class').replace(/form-control/gi, '')).toggleClass('dropup', $element.hasClass('dropup')); + pos = $element.offset(); + actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight; + $drop.css({ + 'top': pos.top + actualHeight, + 'left': pos.left, + 'width': $element[0].offsetWidth, + 'position': 'absolute' + }); + }; + this.$newElement.on('click', function () { + if (that.isDisabled()) { + return; + } + getPlacement($(this)); + $drop.appendTo(that.options.container); + $drop.toggleClass('open', !$(this).hasClass('open')); + $drop.append(that.$menu); + }); + $(window).resize(function () { + getPlacement(that.$newElement); + }); + $(window).on('scroll', function () { + getPlacement(that.$newElement); + }); + $('html').on('click', function (e) { + if ($(e.target).closest(that.$newElement).length < 1) { + $drop.removeClass('open'); + } + }); + }, + + setSelected: function (index, selected) { + this.findLis(); + this.$lis.filter('[data-original-index="' + index + '"]').toggleClass('selected', selected); + }, + + setDisabled: function (index, disabled) { + this.findLis(); + if (disabled) { + this.$lis.filter('[data-original-index="' + index + '"]').addClass('disabled').find('a').attr('href', '#').attr('tabindex', -1); + } else { + this.$lis.filter('[data-original-index="' + index + '"]').removeClass('disabled').find('a').removeAttr('href').attr('tabindex', 0); + } + }, + + isDisabled: function () { + return this.$element.is(':disabled'); + }, + + checkDisabled: function () { + var that = this; + + if (this.isDisabled()) { + this.$button.addClass('disabled').attr('tabindex', -1); + } else { + if (this.$button.hasClass('disabled')) { + this.$button.removeClass('disabled'); + } + + if (this.$button.attr('tabindex') == -1) { + if (!this.$element.data('tabindex')) this.$button.removeAttr('tabindex'); + } + } + + this.$button.click(function () { + return !that.isDisabled(); + }); + }, + + tabIndex: function () { + if (this.$element.is('[tabindex]')) { + this.$element.data('tabindex', this.$element.attr('tabindex')); + this.$button.attr('tabindex', this.$element.data('tabindex')); + } + }, + + clickListener: function () { + var that = this; + + this.$newElement.on('touchstart.dropdown', '.dropdown-menu', function (e) { + e.stopPropagation(); + }); + + this.$newElement.on('click', function () { + that.setSize(); + if (!that.options.liveSearch && !that.multiple) { + setTimeout(function () { + that.$menu.find('.selected a').focus(); + }, 10); + } + }); + + this.$menu.on('click', 'li a', function (e) { + var $this = $(this), + clickedIndex = $this.parent().data('originalIndex'), + prevValue = that.$element.val(), + prevIndex = that.$element.prop('selectedIndex'); + + // Don't close on multi choice menu + if (that.multiple) { + e.stopPropagation(); + } + + e.preventDefault(); + + //Don't run if we have been disabled + if (!that.isDisabled() && !$this.parent().hasClass('disabled')) { + var $options = that.$element.find('option'), + $option = $options.eq(clickedIndex), + state = $option.prop('selected'), + $optgroup = $option.parent('optgroup'), + maxOptions = that.options.maxOptions, + maxOptionsGrp = $optgroup.data('maxOptions') || false; + + if (!that.multiple) { // Deselect all others if not multi select box + $options.prop('selected', false); + $option.prop('selected', true); + that.$menu.find('.selected').removeClass('selected'); + that.setSelected(clickedIndex, true); + } else { // Toggle the one we have chosen if we are multi select. + $option.prop('selected', !state); + that.setSelected(clickedIndex, !state); + $this.blur(); + + if ((maxOptions !== false) || (maxOptionsGrp !== false)) { + var maxReached = maxOptions < $options.filter(':selected').length, + maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length; + + if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) { + if (maxOptions && maxOptions == 1) { + $options.prop('selected', false); + $option.prop('selected', true); + that.$menu.find('.selected').removeClass('selected'); + that.setSelected(clickedIndex, true); + } else if (maxOptionsGrp && maxOptionsGrp == 1) { + $optgroup.find('option:selected').prop('selected', false); + $option.prop('selected', true); + var optgroupID = $this.data('optgroup'); + + that.$menu.find('.selected').has('a[data-optgroup="' + optgroupID + '"]').removeClass('selected'); + + that.setSelected(clickedIndex, true); + } else { + var maxOptionsArr = (typeof that.options.maxOptionsText === 'function') ? + that.options.maxOptionsText(maxOptions, maxOptionsGrp) : that.options.maxOptionsText, + maxTxt = maxOptionsArr[0].replace('{n}', maxOptions), + maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp), + $notify = $('
    '); + // If {var} is set in array, replace it + /** @deprecated */ + if (maxOptionsArr[2]) { + maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]); + maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]); + } + + $option.prop('selected', false); + + that.$menu.append($notify); + + if (maxOptions && maxReached) { + $notify.append($('
    ' + maxTxt + '
    ')); + that.$element.trigger('maxReached.bs.select'); + } + + if (maxOptionsGrp && maxReachedGrp) { + $notify.append($('
    ' + maxTxtGrp + '
    ')); + that.$element.trigger('maxReachedGrp.bs.select'); + } + + setTimeout(function () { + that.setSelected(clickedIndex, false); + }, 10); + + $notify.delay(750).fadeOut(300, function () { + $(this).remove(); + }); + } + } + } + } + + if (!that.multiple) { + that.$button.focus(); + } else if (that.options.liveSearch) { + that.$searchbox.focus(); + } + + // Trigger select 'change' + if ((prevValue != that.$element.val() && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) { + that.$element.change(); + } + } + }); + + this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function (e) { + if (e.target == this) { + e.preventDefault(); + e.stopPropagation(); + if (!that.options.liveSearch) { + that.$button.focus(); + } else { + that.$searchbox.focus(); + } + } + }); + + this.$menu.on('click', 'li.divider, li.dropdown-header', function (e) { + e.preventDefault(); + e.stopPropagation(); + if (!that.options.liveSearch) { + that.$button.focus(); + } else { + that.$searchbox.focus(); + } + }); + + this.$menu.on('click', '.popover-title .close', function () { + that.$button.focus(); + }); + + this.$searchbox.on('click', function (e) { + e.stopPropagation(); + }); + + + this.$menu.on('click', '.actions-btn', function (e) { + if (that.options.liveSearch) { + that.$searchbox.focus(); + } else { + that.$button.focus(); + } + + e.preventDefault(); + e.stopPropagation(); + + if ($(this).is('.bs-select-all')) { + that.selectAll(); + } else { + that.deselectAll(); + } + that.$element.change(); + }); + + this.$element.change(function () { + that.render(false); + }); + }, + + liveSearchListener: function () { + var that = this, + no_results = $('
  • '); + + this.$newElement.on('click.dropdown.data-api touchstart.dropdown.data-api', function () { + that.$menu.find('.active').removeClass('active'); + if (!!that.$searchbox.val()) { + that.$searchbox.val(''); + that.$lis.not('.is-hidden').removeClass('hide'); + if (!!no_results.parent().length) no_results.remove(); + } + if (!that.multiple) that.$menu.find('.selected').addClass('active'); + setTimeout(function () { + that.$searchbox.focus(); + }, 10); + }); + + this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function (e) { + e.stopPropagation(); + }); + + this.$searchbox.on('input propertychange', function () { + if (that.$searchbox.val()) { + + if (that.options.searchAccentInsensitive) { + that.$lis.not('.is-hidden').removeClass('hide').find('a').not(':aicontains(' + normalizeToBase(that.$searchbox.val()) + ')').parent().addClass('hide'); + } else { + that.$lis.not('.is-hidden').removeClass('hide').find('a').not(':icontains(' + that.$searchbox.val() + ')').parent().addClass('hide'); + } + + if (!that.$menu.find('li').filter(':visible:not(.no-results)').length) { + if (!!no_results.parent().length) no_results.remove(); + no_results.html(that.options.noneResultsText + ' "' + htmlEscape(that.$searchbox.val()) + '"').show(); + that.$menu.find('li').last().after(no_results); + } else if (!!no_results.parent().length) { + no_results.remove(); + } + + } else { + that.$lis.not('.is-hidden').removeClass('hide'); + if (!!no_results.parent().length) no_results.remove(); + } + + that.$menu.find('li.active').removeClass('active'); + that.$menu.find('li').filter(':visible:not(.divider)').eq(0).addClass('active').find('a').focus(); + $(this).focus(); + }); + }, + + val: function (value) { + if (typeof value !== 'undefined') { + this.$element.val(value); + this.render(); + + return this.$element; + } else { + return this.$element.val(); + } + }, + + selectAll: function () { + this.findLis(); + this.$lis.not('.divider').not('.disabled').not('.selected').filter(':visible').find('a').click(); + }, + + deselectAll: function () { + this.findLis(); + this.$lis.not('.divider').not('.disabled').filter('.selected').filter(':visible').find('a').click(); + }, + + keydown: function (e) { + var $this = $(this), + $parent = ($this.is('input')) ? $this.parent().parent() : $this.parent(), + $items, + that = $parent.data('this'), + index, + next, + first, + last, + prev, + nextPrev, + prevIndex, + isActive, + keyCodeMap = { + 32: ' ', + 48: '0', + 49: '1', + 50: '2', + 51: '3', + 52: '4', + 53: '5', + 54: '6', + 55: '7', + 56: '8', + 57: '9', + 59: ';', + 65: 'a', + 66: 'b', + 67: 'c', + 68: 'd', + 69: 'e', + 70: 'f', + 71: 'g', + 72: 'h', + 73: 'i', + 74: 'j', + 75: 'k', + 76: 'l', + 77: 'm', + 78: 'n', + 79: 'o', + 80: 'p', + 81: 'q', + 82: 'r', + 83: 's', + 84: 't', + 85: 'u', + 86: 'v', + 87: 'w', + 88: 'x', + 89: 'y', + 90: 'z', + 96: '0', + 97: '1', + 98: '2', + 99: '3', + 100: '4', + 101: '5', + 102: '6', + 103: '7', + 104: '8', + 105: '9' + }; + + if (that.options.liveSearch) $parent = $this.parent().parent(); + + if (that.options.container) $parent = that.$menu; + + $items = $('[role=menu] li a', $parent); + + isActive = that.$menu.parent().hasClass('open'); + + if (!isActive && /([0-9]|[A-z])/.test(String.fromCharCode(e.keyCode))) { + if (!that.options.container) { + that.setSize(); + that.$menu.parent().addClass('open'); + isActive = true; + } else { + that.$newElement.trigger('click'); + } + that.$searchbox.focus(); + } + + if (that.options.liveSearch) { + if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && that.$menu.find('.active').length === 0) { + e.preventDefault(); + that.$menu.parent().removeClass('open'); + that.$button.focus(); + } + $items = $('[role=menu] li:not(.divider):not(.dropdown-header):visible', $parent); + if (!$this.val() && !/(38|40)/.test(e.keyCode.toString(10))) { + if ($items.filter('.active').length === 0) { + if (that.options.searchAccentInsensitive) { + $items = that.$newElement.find('li').filter(':aicontains(' + normalizeToBase(keyCodeMap[e.keyCode]) + ')'); + } else { + $items = that.$newElement.find('li').filter(':icontains(' + keyCodeMap[e.keyCode] + ')'); + } + } + } + } + + if (!$items.length) return; + + if (/(38|40)/.test(e.keyCode.toString(10))) { + index = $items.index($items.filter(':focus')); + first = $items.parent(':not(.disabled):visible').first().index(); + last = $items.parent(':not(.disabled):visible').last().index(); + next = $items.eq(index).parent().nextAll(':not(.disabled):visible').eq(0).index(); + prev = $items.eq(index).parent().prevAll(':not(.disabled):visible').eq(0).index(); + nextPrev = $items.eq(next).parent().prevAll(':not(.disabled):visible').eq(0).index(); + + if (that.options.liveSearch) { + $items.each(function (i) { + if ($(this).is(':not(.disabled)')) { + $(this).data('index', i); + } + }); + index = $items.index($items.filter('.active')); + first = $items.filter(':not(.disabled):visible').first().data('index'); + last = $items.filter(':not(.disabled):visible').last().data('index'); + next = $items.eq(index).nextAll(':not(.disabled):visible').eq(0).data('index'); + prev = $items.eq(index).prevAll(':not(.disabled):visible').eq(0).data('index'); + nextPrev = $items.eq(next).prevAll(':not(.disabled):visible').eq(0).data('index'); + } + + prevIndex = $this.data('prevIndex'); + + if (e.keyCode == 38) { + if (that.options.liveSearch) index -= 1; + if (index != nextPrev && index > prev) index = prev; + if (index < first) index = first; + if (index == prevIndex) index = last; + } + + if (e.keyCode == 40) { + if (that.options.liveSearch) index += 1; + if (index == -1) index = 0; + if (index != nextPrev && index < next) index = next; + if (index > last) index = last; + if (index == prevIndex) index = first; + } + + $this.data('prevIndex', index); + + if (!that.options.liveSearch) { + $items.eq(index).focus(); + } else { + e.preventDefault(); + if (!$this.is('.dropdown-toggle')) { + $items.removeClass('active'); + $items.eq(index).addClass('active').find('a').focus(); + $this.focus(); + } + } + + } else if (!$this.is('input')) { + var keyIndex = [], + count, + prevKey; + + $items.each(function () { + if ($(this).parent().is(':not(.disabled)')) { + if ($.trim($(this).text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) { + keyIndex.push($(this).parent().index()); + } + } + }); + + count = $(document).data('keycount'); + count++; + $(document).data('keycount', count); + + prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1); + + if (prevKey != keyCodeMap[e.keyCode]) { + count = 1; + $(document).data('keycount', count); + } else if (count >= keyIndex.length) { + $(document).data('keycount', 0); + if (count > keyIndex.length) count = 1; + } + + $items.eq(keyIndex[count - 1]).focus(); + } + + // Select focused option if "Enter", "Spacebar" or "Tab" (when selectOnTab is true) are pressed inside the menu. + if ((/(13|32)/.test(e.keyCode.toString(10)) || (/(^9$)/.test(e.keyCode.toString(10)) && that.options.selectOnTab)) && isActive) { + if (!/(32)/.test(e.keyCode.toString(10))) e.preventDefault(); + if (!that.options.liveSearch) { + $(':focus').click(); + } else if (!/(32)/.test(e.keyCode.toString(10))) { + that.$menu.find('.active a').click(); + $this.focus(); + } + $(document).data('keycount', 0); + } + + if ((/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch)) || (/(27)/.test(e.keyCode.toString(10)) && !isActive)) { + that.$menu.parent().removeClass('open'); + that.$button.focus(); + } + }, + + mobile: function () { + this.$element.addClass('mobile-device').appendTo(this.$newElement); + if (this.options.container) this.$menu.hide(); + }, + + refresh: function () { + this.$lis = null; + this.reloadLi(); + this.render(); + this.setWidth(); + this.setStyle(); + this.checkDisabled(); + this.liHeight(); + }, + + update: function () { + this.reloadLi(); + this.setWidth(); + this.setStyle(); + this.checkDisabled(); + this.liHeight(); + }, + + hide: function () { + this.$newElement.hide(); + }, + + show: function () { + this.$newElement.show(); + }, + + remove: function () { + this.$newElement.remove(); + this.$element.remove(); + } + }; + + // SELECTPICKER PLUGIN DEFINITION + // ============================== + function Plugin(option, event) { + // get the args of the outer function.. + var args = arguments; + // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them + // to get lost + //noinspection JSDuplicatedDeclaration + var _option = option, + option = args[0], + event = args[1]; + [].shift.apply(args); + + // This fixes a bug in the js implementation on android 2.3 #715 + if (typeof option == 'undefined') { + option = _option; + } + + var value; + var chain = this.each(function () { + var $this = $(this); + if ($this.is('select')) { + var data = $this.data('selectpicker'), + options = typeof option == 'object' && option; + + if (!data) { + var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options); + $this.data('selectpicker', (data = new Selectpicker(this, config, event))); + } else if (options) { + for (var i in options) { + if (options.hasOwnProperty(i)) { + data.options[i] = options[i]; + } + } + } + + if (typeof option == 'string') { + if (data[option] instanceof Function) { + value = data[option].apply(data, args); + } else { + value = data.options[option]; + } + } + } + }); + + if (typeof value !== 'undefined') { + //noinspection JSUnusedAssignment + return value; + } else { + return chain; + } + } + + var old = $.fn.selectpicker; + $.fn.selectpicker = Plugin; + $.fn.selectpicker.Constructor = Selectpicker; + + // SELECTPICKER NO CONFLICT + // ======================== + $.fn.selectpicker.noConflict = function () { + $.fn.selectpicker = old; + return this; + }; + + $(document) + .data('keycount', 0) + .on('keydown', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=menu], .bs-searchbox input', Selectpicker.prototype.keydown) + .on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=menu], .bs-searchbox input', function (e) { + e.stopPropagation(); + }); + + // SELECTPICKER DATA-API + // ===================== + $(window).on('load.bs.select.data-api', function () { + $('.selectpicker').each(function () { + var $selectpicker = $(this); + Plugin.call($selectpicker, $selectpicker.data()); + }) + }); +})(jQuery); \ No newline at end of file diff --git a/admin/js/bootstrap.min.js b/admin/js/bootstrap.min.js new file mode 100644 index 0000000..c6d3692 --- /dev/null +++ b/admin/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.2 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/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)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(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){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(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.2",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);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.2",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)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},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")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&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);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).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=this.sliding=this.interval=this.$active=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.2",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"));return a>this.$items.length-1||0>a?void 0: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(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0: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"==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(this.options.trigger).filter('[href="#'+b.id+'"], [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.2",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0,trigger:'[data-toggle="collapse"]'},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":a.extend({},e.data(),{trigger:this});c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(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 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.2",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('
    ")});this._.element.on("keydown",i)},onHide:function(){this._.element.removeListener("keydown",i)}}})})(); \ No newline at end of file diff --git a/admin/js/plugins/ckeditor/plugins/templates/templates/default.js b/admin/js/plugins/ckeditor/plugins/templates/templates/default.js new file mode 100644 index 0000000..d8c172e --- /dev/null +++ b/admin/js/plugins/ckeditor/plugins/templates/templates/default.js @@ -0,0 +1,6 @@ +/* + Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +CKEDITOR.addTemplates("default",{imagesPath:CKEDITOR.getUrl(CKEDITOR.plugins.getPath("templates")+"templates/images/"),templates:[{title:"Image and Title",image:"template1.gif",description:"One main image with a title and text that surround the image.",html:'

    Type the title here

    Type the text here

    '},{title:"Strange Template",image:"template2.gif",description:"A template that defines two colums, each one with a title, and some text.", +html:'

    Title 1

    Title 2

    Text 1Text 2

    More text goes here.

    '},{title:"Text and Table",image:"template3.gif",description:"A title with some text and a table.",html:'

    Title goes here

    Table title
       
       
       

    Type the text here

    '}]}); \ No newline at end of file diff --git a/admin/js/plugins/ckeditor/plugins/templates/templates/images/template1.gif b/admin/js/plugins/ckeditor/plugins/templates/templates/images/template1.gif new file mode 100644 index 0000000000000000000000000000000000000000..efdabbebd4503ceb55c948fa73b9b83cbd373e57 GIT binary patch literal 375 zcmV--0f_!bNk%w1VPpVC0FeLyva+%O00960{{R30A^8LV00000EC2ui0Av7000092 zgpaAq?GK}zwAu@W-n{z{hT=$;9b%^H%BpA!$8!13_AS@=&Xal%3~GMDB95pDD3{Ep z^T{;k4xj+g%7JRP+$IPq!1Bb&uKB$DQa@x|8x8NO4b`hO25#TOnRw~9=3yE0xyeE4CQ8$(2)Mz>8udZCXX=BRr7DZbW_#-a zYZEHlJM(KAEc4dditDMnJ4(CC+&uK06fIp0D*Z|wX5EYpGb{?;a*WKVoEoWp!Y!`y zeo4*}FFC(bZf@duda#%D-q zaHzPUxA@lRm;@PFNk%w1VPpVC0FeLyva+%O00960{{R30A^8LV00000EC2ui0Av7000092 zgpaAq?GK}zwAu@W-n{z{hT=$;9b%^H%BpA!$8!13_AS@=&Xal%3~GMDB93TG#*l%g z^9hYgr_`$T`us4l+^+W<)gC_JviY3#AeC&_xD98m<8-m1jvsB&<_@0q~XXRsCap^IRqK$(K#c!N9pBf82AawVH$?WN){q&IjedXiz+EX zOS+od%WDgp+d909toAG5`lTy-9D18rOxWx+T}>D*o&1Qa9n5V^96nACtqfi*?*05t zZSMX~zfpQ^<%jRPUfiDEO8=eEuB)DKv}S_cJW8uTxqL`=(AMXYB~Aenu4SM=e_ zrj6M`kqsZ_xrlC}y^5evW>krApudqWP2zFM5Fo{b%sA$2wGU)SI5vkKVQCad(WEn$ zGF`IFr&KONpB8ayRSwduHn4I{;q@zxs8h=VDkqjl*t8(;n#c+zd*_U=jy QeEa(S3plV~2n7HDJNoX*`2YX_ literal 0 HcmV?d00001 diff --git a/admin/js/plugins/ckeditor/plugins/wsc/LICENSE.md b/admin/js/plugins/ckeditor/plugins/wsc/LICENSE.md new file mode 100644 index 0000000..c7d374a --- /dev/null +++ b/admin/js/plugins/ckeditor/plugins/wsc/LICENSE.md @@ -0,0 +1,28 @@ +Software License Agreement +========================== + +**CKEditor WSC Plugin** +Copyright © 2012, [CKSource](http://cksource.com) - Frederico Knabben. All rights reserved. + +Licensed under the terms of any of the following licenses at your choice: + +* GNU General Public License Version 2 or later (the "GPL"): + http://www.gnu.org/licenses/gpl.html + +* GNU Lesser General Public License Version 2.1 or later (the "LGPL"): + http://www.gnu.org/licenses/lgpl.html + +* Mozilla Public License Version 1.1 or later (the "MPL"): + http://www.mozilla.org/MPL/MPL-1.1.html + +You are not required to, but if you want to explicitly declare the license you have chosen to be bound to when using, reproducing, modifying and distributing this software, just include a text file titled "legal.txt" in your version of this software, indicating your license choice. + +Sources of Intellectual Property Included in this plugin +-------------------------------------------------------- + +Where not otherwise indicated, all plugin content is authored by CKSource engineers and consists of CKSource-owned intellectual property. In some specific instances, the plugin will incorporate work done by developers outside of CKSource with their express permission. + +Trademarks +---------- + +CKEditor is a trademark of CKSource - Frederico Knabben. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders. diff --git a/admin/js/plugins/ckeditor/plugins/wsc/README.md b/admin/js/plugins/ckeditor/plugins/wsc/README.md new file mode 100644 index 0000000..46eeafb --- /dev/null +++ b/admin/js/plugins/ckeditor/plugins/wsc/README.md @@ -0,0 +1,25 @@ +CKEditor WebSpellChecker Plugin +=============================== + +This plugin brings Web Spell Checker (WSC) into CKEditor. + +WSC is "installation-less", using the web-services of [WebSpellChecker.net](http://www.webspellchecker.net/). It's an out of the box solution. + +Installation +------------ + +1. Clone/copy this repository contents in a new "plugins/wsc" folder in your CKEditor installation. +2. Enable the "wsc" plugin in the CKEditor configuration file (config.js): + + config.extraPlugins = 'wsc'; + +That's all. WSC will appear on the editor toolbar and will be ready to use. + +License +------- + +Licensed under the terms of any of the following licenses at your choice: [GPL](http://www.gnu.org/licenses/gpl.html), [LGPL](http://www.gnu.org/licenses/lgpl.html) and [MPL](http://www.mozilla.org/MPL/MPL-1.1.html). + +See LICENSE.md for more information. + +Developed in cooperation with [WebSpellChecker.net](http://www.webspellchecker.net/). diff --git a/admin/js/plugins/ckeditor/plugins/wsc/dialogs/ciframe.html b/admin/js/plugins/ckeditor/plugins/wsc/dialogs/ciframe.html new file mode 100644 index 0000000..82df25b --- /dev/null +++ b/admin/js/plugins/ckeditor/plugins/wsc/dialogs/ciframe.html @@ -0,0 +1,66 @@ + + + + + + + + +

    + diff --git a/admin/js/plugins/ckeditor/plugins/wsc/dialogs/tmpFrameset.html b/admin/js/plugins/ckeditor/plugins/wsc/dialogs/tmpFrameset.html new file mode 100644 index 0000000..c2d82aa --- /dev/null +++ b/admin/js/plugins/ckeditor/plugins/wsc/dialogs/tmpFrameset.html @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + diff --git a/admin/js/plugins/ckeditor/plugins/wsc/dialogs/wsc.css b/admin/js/plugins/ckeditor/plugins/wsc/dialogs/wsc.css new file mode 100644 index 0000000..496d731 --- /dev/null +++ b/admin/js/plugins/ckeditor/plugins/wsc/dialogs/wsc.css @@ -0,0 +1,82 @@ +/* +Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ + +html, body +{ + background-color: transparent; + margin: 0px; + padding: 0px; +} + +body +{ + padding: 10px; +} + +body, td, input, select, textarea +{ + font-size: 11px; + font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana; +} + +.midtext +{ + padding:0px; + margin:10px; +} + +.midtext p +{ + padding:0px; + margin:10px; +} + +.Button +{ + border: #737357 1px solid; + color: #3b3b1f; + background-color: #c7c78f; +} + +.PopupTabArea +{ + color: #737357; + background-color: #e3e3c7; +} + +.PopupTitleBorder +{ + border-bottom: #d5d59d 1px solid; +} +.PopupTabEmptyArea +{ + padding-left: 10px; + border-bottom: #d5d59d 1px solid; +} + +.PopupTab, .PopupTabSelected +{ + border-right: #d5d59d 1px solid; + border-top: #d5d59d 1px solid; + border-left: #d5d59d 1px solid; + padding: 3px 5px 3px 5px; + color: #737357; +} + +.PopupTab +{ + margin-top: 1px; + border-bottom: #d5d59d 1px solid; + cursor: pointer; +} + +.PopupTabSelected +{ + font-weight: bold; + cursor: default; + padding-top: 4px; + border-bottom: #f1f1e3 1px solid; + background-color: #f1f1e3; +} diff --git a/admin/js/plugins/ckeditor/plugins/wsc/dialogs/wsc.js b/admin/js/plugins/ckeditor/plugins/wsc/dialogs/wsc.js new file mode 100644 index 0000000..443145c --- /dev/null +++ b/admin/js/plugins/ckeditor/plugins/wsc/dialogs/wsc.js @@ -0,0 +1,74 @@ +/* + Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. + For licensing, see LICENSE.html or http://ckeditor.com/license +*/ +(function(){function y(a){if(!a)throw"Languages-by-groups list are required for construct selectbox";var c=[],d="",f;for(f in a)for(var g in a[f]){var h=a[f][g];"en_US"==h?d=h:c.push(h)}c.sort();d&&c.unshift(d);return{getCurrentLangGroup:function(c){a:{for(var d in a)for(var f in a[d])if(f.toUpperCase()===c.toUpperCase()){c=d;break a}c=""}return c},setLangList:function(){var c={},d;for(d in a)for(var f in a[d])c[a[d][f]]=f;return c}()}}var e=function(){var a=function(a,b,f){var f=f||{},g=f.expires; +if("number"==typeof g&&g){var h=new Date;h.setTime(h.getTime()+1E3*g);g=f.expires=h}g&&g.toUTCString&&(f.expires=g.toUTCString());var b=encodeURIComponent(b),a=a+"="+b,e;for(e in f)b=f[e],a+="; "+e,!0!==b&&(a+="="+b);document.cookie=a};return{postMessage:{init:function(a){window.addEventListener?window.addEventListener("message",a,!1):window.attachEvent("onmessage",a)},send:function(a){var b=Object.prototype.toString,f=a.fn||null,g=a.id||"",e=a.target||window,i=a.message||{id:g};a.message&&"[object Object]"== +b.call(a.message)&&(a.message.id||(a.message.id=g),i=a.message);a=window.JSON.stringify(i,f);e.postMessage(a,"*")},unbindHandler:function(a){window.removeEventListener?window.removeEventListener("message",a,!1):window.detachEvent("onmessage",a)}},hash:{create:function(){},parse:function(){}},cookie:{set:a,get:function(a){return(a=document.cookie.match(RegExp("(?:^|; )"+a.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)")))?decodeURIComponent(a[1]):void 0},remove:function(c){a(c,"",{expires:-1})}}, +misc:{findFocusable:function(a){var b=null;a&&(b=a.find("a[href], area[href], input, select, textarea, button, *[tabindex], *[contenteditable]"));return b},isVisible:function(a){return!(0===a.offsetWidth||0==a.offsetHeight||"none"===(document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(a,null).display:a.currentStyle?a.currentStyle.display:a.style.display))},hasClass:function(a,b){return!(!a.className||!a.className.match(RegExp("(\\s|^)"+b+"(\\s|$)")))}}}}(), +a=a||{};a.TextAreaNumber=null;a.load=!0;a.cmd={SpellTab:"spell",Thesaurus:"thes",GrammTab:"grammar"};a.dialog=null;a.optionNode=null;a.selectNode=null;a.grammerSuggest=null;a.textNode={};a.iframeMain=null;a.dataTemp="";a.div_overlay=null;a.textNodeInfo={};a.selectNode={};a.selectNodeResponce={};a.langList=null;a.langSelectbox=null;a.banner="";a.show_grammar=null;a.div_overlay_no_check=null;a.targetFromFrame={};a.onLoadOverlay=null;a.LocalizationComing={};a.OverlayPlace=null;a.LocalizationButton={ChangeTo:{instance:null, +text:"Change to"},ChangeAll:{instance:null,text:"Change All"},IgnoreWord:{instance:null,text:"Ignore word"},IgnoreAllWords:{instance:null,text:"Ignore all words"},Options:{instance:null,text:"Options",optionsDialog:{instance:null}},AddWord:{instance:null,text:"Add word"},FinishChecking:{instance:null,text:"Finish Checking"}};a.LocalizationLabel={ChangeTo:{instance:null,text:"Change to"},Suggestions:{instance:null,text:"Suggestions"}};var z=function(b){var c,d;for(d in b)c=b[d].instance.getElement().getFirst()|| +b[d].instance.getElement(),c.setText(a.LocalizationComing[d])},A=function(b){for(var c in b){if(!b[c].instance.setLabel)break;b[c].instance.setLabel(a.LocalizationComing[c])}},j,q;a.framesetHtml=function(b){return"'};a.setIframe=function(b,c){var d;d=a.framesetHtml(c);var f=a.iframeNumber+"_"+c;b.getElement().setHtml(d); +d=document.getElementById(f);d=d.contentWindow?d.contentWindow:d.contentDocument.document?d.contentDocument.document:d.contentDocument;d.document.open();d.document.write('iframe
    + + + + +

    + CKEditor Samples » Create and Destroy Editor Instances for Ajax Applications +

    +
    +

    + This sample shows how to create and destroy CKEditor instances on the fly. After the removal of CKEditor the content created inside the editing + area will be displayed in a <div> element. +

    +

    + For details of how to create this setup check the source code of this sample page + for JavaScript code responsible for the creation and destruction of a CKEditor instance. +

    +
    +

    Click the buttons to create and remove a CKEditor instance.

    +

    + + +

    + +
    +
    + + + + diff --git a/admin/js/plugins/ckeditor/samples/api.html b/admin/js/plugins/ckeditor/samples/api.html new file mode 100644 index 0000000..5becd32 --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/api.html @@ -0,0 +1,207 @@ + + + + + + API Usage — CKEditor Sample + + + + + + +

    + CKEditor Samples » Using CKEditor JavaScript API +

    +
    +

    + This sample shows how to use the + CKEditor JavaScript API + to interact with the editor at runtime. +

    +

    + For details on how to create this setup check the source code of this sample page. +

    +
    + + +
    + +
    +
    + + + + +

    +

    + + +
    + + + diff --git a/admin/js/plugins/ckeditor/samples/appendto.html b/admin/js/plugins/ckeditor/samples/appendto.html new file mode 100644 index 0000000..39b212b --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/appendto.html @@ -0,0 +1,57 @@ + + + + + + CKEDITOR.appendTo — CKEditor Sample + + + + +

    + CKEditor Samples » Append To Page Element Using JavaScript Code +

    +
    +
    +

    + CKEDITOR.appendTo is basically to place editors + inside existing DOM elements. Unlike CKEDITOR.replace, + a target container to be replaced is no longer necessary. A new editor + instance is inserted directly wherever it is desired. +

    +
    CKEDITOR.appendTo( 'container_id',
    +	{ /* Configuration options to be used. */ }
    +	'Editor content to be used.'
    +);
    +
    + +
    +
    + + + diff --git a/admin/js/plugins/ckeditor/samples/assets/inlineall/logo.png b/admin/js/plugins/ckeditor/samples/assets/inlineall/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..334e7ac9958073fdfa1a05a72b45d5c079edcce1 GIT binary patch literal 4411 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 + + + + + Sample — CKEditor + + + +

    + CKEditor — Posted Data +

    + + + + + + + + + $value ) + { + if ( ( !is_string($value) && !is_numeric($value) ) || !is_string($key) ) + continue; + + if ( get_magic_quotes_gpc() ) + $value = htmlspecialchars( stripslashes((string)$value) ); + else + $value = htmlspecialchars( (string)$value ); +?> + + + + + +
    Field NameValue
    + + + diff --git a/admin/js/plugins/ckeditor/samples/assets/sample.jpg b/admin/js/plugins/ckeditor/samples/assets/sample.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a4a77fae83b0f66e77a97f172b4f184e1edac8e7 GIT binary patch literal 17932 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 + + + + + Data Filtering — CKEditor Sample + + + + + +

    + CKEditor Samples » Data Filtering and Features Activation +

    +
    +

    + This sample page demonstrates the idea of Advanced Content Filter + (ACF), a sophisticated + tool that takes control over what kind of data is accepted by the editor and what + kind of output is produced. +

    +

    When and what is being filtered?

    +

    + ACF controls + every single source of data that comes to the editor. + It process both HTML that is inserted manually (i.e. pasted by the user) + and programmatically like: +

    +
    +editor.setData( '<p>Hello world!</p>' );
    +
    +

    + ACF discards invalid, + useless HTML tags and attributes so the editor remains "clean" during + runtime. ACF behaviour + can be configured and adjusted for a particular case to prevent the + output HTML (i.e. in CMS systems) from being polluted. + + This kind of filtering is a first, client-side line of defense + against "tag soups", + the tool that precisely restricts which tags, attributes and styles + are allowed (desired). When properly configured, ACF + is an easy and fast way to produce a high-quality, intentionally filtered HTML. +

    + +

    How to configure or disable ACF?

    +

    + Advanced Content Filter is enabled by default, working in "automatic mode", yet + it provides a set of easy rules that allow adjusting filtering rules + and disabling the entire feature when necessary. The config property + responsible for this feature is config.allowedContent. +

    +

    + By "automatic mode" is meant that loaded plugins decide which kind + of content is enabled and which is not. For example, if the link + plugin is loaded it implies that <a> tag is + automatically allowed. Each plugin is given a set + of predefined ACF rules + that control the editor until + config.allowedContent + is defined manually. +

    +

    + Let's assume our intention is to restrict the editor to accept (produce) paragraphs + only: no attributes, no styles, no other tags. + With ACF + this is very simple. Basically set + config.allowedContent to 'p': +

    +
    +var editor = CKEDITOR.replace( textarea_id, {
    +	allowedContent: 'p'
    +} );
    +
    +

    + Now try to play with allowed content: +

    +
    +// Trying to insert disallowed tag and attribute.
    +editor.setData( '<p style="color: red">Hello <em>world</em>!</p>' );
    +alert( editor.getData() );
    +
    +// Filtered data is returned.
    +"<p>Hello world!</p>"
    +
    +

    + What happened? Since config.allowedContent: 'p' is set the editor assumes + that only plain <p> are accepted. Nothing more. This is why + style attribute and <em> tag are gone. The same + filtering would happen if we pasted disallowed HTML into this editor. +

    +

    + This is just a small sample of what ACF + can do. To know more, please refer to the sample section below and + the official Advanced Content Filter guide. +

    +

    + You may, of course, want CKEditor to avoid filtering of any kind. + To get rid of ACF, + basically set + config.allowedContent to true like this: +

    +
    +CKEDITOR.replace( textarea_id, {
    +	allowedContent: true
    +} );
    +
    + +

    Beyond data flow: Features activation

    +

    + ACF is far more than + I/O control: the entire + UI of the editor is adjusted to what + filters restrict. For example: if <a> tag is + disallowed + by ACF, + then accordingly link command, toolbar button and link dialog + are also disabled. Editor is smart: it knows which features must be + removed from the interface to match filtering rules. +

    +

    + CKEditor can be far more specific. If <a> tag is + allowed by filtering rules to be used but it is restricted + to have only one attribute (href) + config.allowedContent = 'a[!href]', then + "Target" tab of the link dialog is automatically disabled as target + attribute isn't included in ACF rules + for <a>. This behaviour applies to dialog fields, context + menus and toolbar buttons. +

    + +

    Sample configurations

    +

    + There are several editor instances below that present different + ACF setups. All of them, + except the last inline instance, share the same HTML content to visualize + how different filtering rules affect the same input data. +

    +
    + +
    + +
    +

    + This editor is using default configuration ("automatic mode"). It means that + + config.allowedContent is defined by loaded plugins. + Each plugin extends filtering rules to make it's own associated content + available for the user. +

    +
    + + + +
    + +
    + +
    + +
    +

    + This editor is using a custom configuration for + ACF: +

    +
    +CKEDITOR.replace( 'editor2', {
    +	allowedContent:
    +		'h1 h2 h3 p blockquote strong em;' +
    +		'a[!href];' +
    +		'img(left,right)[!src,alt,width,height];' +
    +		'table tr th td caption;' +
    +		'span{!font-family};' +'
    +		'span{!color};' +
    +		'span(!marker);' +
    +		'del ins'
    +} );
    +
    +

    + The following rules may require additional explanation: +

    +
      +
    • + h1 h2 h3 p blockquote strong em - These tags + are accepted by the editor. Any tag attributes will be discarded. +
    • +
    • + a[!href] - href attribute is obligatory + for <a> tag. Tags without this attribute + are disarded. No other attribute will be accepted. +
    • +
    • + img(left,right)[!src,alt,width,height] - src + attribute is obligatory for <img> tag. + alt, width, height + and class attributes are accepted but + class must be either class="left" + or class="right" +
    • +
    • + table tr th td caption - These tags + are accepted by the editor. Any tag attributes will be discarded. +
    • +
    • + span{!font-family}, span{!color}, + span(!marker) - <span> tags + will be accepted if either font-family or + color style is set or class="marker" + is present. +
    • +
    • + del ins - These tags + are accepted by the editor. Any tag attributes will be discarded. +
    • +
    +

    + Please note that UI of the + editor is different. It's a response to what happened to the filters. + Since text-align isn't allowed, the align toolbar is gone. + The same thing happened to subscript/superscript, strike, underline + (<u>, <sub>, <sup> + are disallowed by + config.allowedContent) and many other buttons. +

    +
    + + +
    + +
    + +
    + +
    +

    + This editor is using a custom configuration for + ACF. + Note that filters can be configured as an object literal + as an alternative to a string-based definition. +

    +
    +CKEDITOR.replace( 'editor3', {
    +	allowedContent: {
    +		'b i ul ol big small': true,
    +		'h1 h2 h3 p blockquote li': {
    +			styles: 'text-align'
    +		},
    +		a: { attributes: '!href,target' },
    +		img: {
    +			attributes: '!src,alt',
    +			styles: 'width,height',
    +			classes: 'left,right'
    +		}
    +	}
    +} );
    +
    +
    + + +
    + +
    + +
    + +
    +

    + This editor is using a custom set of plugins and buttons. +

    +
    +CKEDITOR.replace( 'editor4', {
    +	removePlugins: 'bidi,font,forms,flash,horizontalrule,iframe,justify,table,tabletools,smiley',
    +	removeButtons: 'Anchor,Underline,Strike,Subscript,Superscript,Image',
    +	format_tags: 'p;h1;h2;h3;pre;address'
    +} );
    +
    +

    + As you can see, removing plugins and buttons implies filtering. + Several tags are not allowed in the editor because there's no + plugin/button that is responsible for creating and editing this + kind of content (for example: the image is missing because + of removeButtons: 'Image'). The conclusion is that + ACF works "backwards" + as well: modifying UI + elements is changing allowed content rules. +

    +
    + + +
    + +
    + +
    + +
    +

    + This editor is built on editable <h1> element. + ACF takes care of + what can be included in <h1>. Note that there + are no block styles in Styles combo. Also why lists, indentation, + blockquote, div, form and other buttons are missing. +

    +

    + ACF makes sure that + no disallowed tags will come to <h1> so the final + markup is valid. If the user tried to paste some invalid HTML + into this editor (let's say a list), it would be automatically + converted into plain text. +

    +
    +

    + Apollo 11 was the spaceflight that landed the first humans, Americans Neil Armstrong and Buzz Aldrin, on the Moon on July 20, 1969, at 20:18 UTC. +

    +
    + + + + diff --git a/admin/js/plugins/ckeditor/samples/divreplace.html b/admin/js/plugins/ckeditor/samples/divreplace.html new file mode 100644 index 0000000..3ee0e0e --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/divreplace.html @@ -0,0 +1,141 @@ + + + + + + Replace DIV — CKEditor Sample + + + + + + +

    + CKEditor Samples » Replace DIV with CKEditor on the Fly +

    +
    +

    + This sample shows how to automatically replace <div> elements + with a CKEditor instance on the fly, following user's doubleclick. The content + that was previously placed inside the <div> element will now + be moved into CKEditor editing area. +

    +

    + For details on how to create this setup check the source code of this sample page. +

    +
    +

    + Double-click any of the following <div> elements to transform them into + editor instances. +

    +
    +

    + Part 1 +

    +

    + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi + semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna + rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla + nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce + eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus. +

    +
    +
    +

    + Part 2 +

    +

    + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi + semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna + rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla + nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce + eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus. +

    +

    + Donec velit. Mauris massa. Vestibulum non nulla. Nam suscipit arcu nec elit. Phasellus + sollicitudin iaculis ante. Ut non mauris et sapien tincidunt adipiscing. Vestibulum + vitae leo. Suspendisse nec mi tristique nulla laoreet vulputate. +

    +
    +
    +

    + Part 3 +

    +

    + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi + semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna + rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla + nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce + eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus. +

    +
    + + + diff --git a/admin/js/plugins/ckeditor/samples/index.html b/admin/js/plugins/ckeditor/samples/index.html new file mode 100644 index 0000000..964c5a3 --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/index.html @@ -0,0 +1,128 @@ + + + + + + CKEditor Samples + + + +

    + CKEditor Samples +

    +
    +
    +

    + Basic Samples +

    +
    +
    Replace textarea elements by class name
    +
    Automatic replacement of all textarea elements of a given class with a CKEditor instance.
    + +
    Replace textarea elements by code
    +
    Replacement of textarea elements with CKEditor instances by using a JavaScript call.
    + +
    Create editors with jQuery
    +
    Creating standard and inline CKEditor instances with jQuery adapter.
    +
    + +

    + Basic Customization +

    +
    +
    User Interface color
    +
    Changing CKEditor User Interface color and adding a toolbar button that lets the user set the UI color.
    + +
    User Interface languages
    +
    Changing CKEditor User Interface language and adding a drop-down list that lets the user choose the UI language.
    +
    + + +

    Plugins

    +
    +
    Magicline plugin
    +
    Using the Magicline plugin to access difficult focus spaces.
    + +
    Full page support
    +
    CKEditor inserted with a JavaScript call and used to edit the whole page from <html> to </html>.
    +
    +
    +
    +

    + Inline Editing +

    +
    +
    Massive inline editor creation
    +
    Turn all elements with contentEditable = true attribute into inline editors.
    + +
    Convert element into an inline editor by code
    +
    Conversion of DOM elements into inline CKEditor instances by using a JavaScript call.
    + +
    Replace textarea with inline editor New!
    +
    A form with a textarea that is replaced by an inline editor at runtime.
    + + +
    + +

    + Advanced Samples +

    +
    +
    Data filtering and features activation New!
    +
    Data filtering and automatic features activation basing on configuration.
    + +
    Replace DIV elements on the fly
    +
    Transforming a div element into an instance of CKEditor with a mouse click.
    + +
    Append editor instances
    +
    Appending editor instances to existing DOM elements.
    + +
    Create and destroy editor instances for Ajax applications
    +
    Creating and destroying CKEditor instances on the fly and saving the contents entered into the editor window.
    + +
    Basic usage of the API
    +
    Using the CKEditor JavaScript API to interact with the editor at runtime.
    + +
    XHTML-compliant style
    +
    Configuring CKEditor to produce XHTML 1.1 compliant attributes and styles.
    + +
    Read-only mode
    +
    Using the readOnly API to block introducing changes to the editor contents.
    + +
    "Tab" key-based navigation
    +
    Navigating among editor instances with tab key.
    + + + +
    Using the JavaScript API to customize dialog windows
    +
    Using the dialog windows API to customize dialog windows without changing the original editor code.
    + +
    Using the "Enter" key in CKEditor
    +
    Configuring the behavior of Enter and Shift+Enter keys.
    + +
    Output for Flash
    +
    Configuring CKEditor to produce HTML code that can be used with Adobe Flash.
    + +
    Output HTML
    +
    Configuring CKEditor to produce legacy HTML 4 code.
    + +
    Toolbar Configurations
    +
    Configuring CKEditor to display full or custom toolbar layout.
    + +
    +
    +
    + + + diff --git a/admin/js/plugins/ckeditor/samples/index.php b/admin/js/plugins/ckeditor/samples/index.php new file mode 100644 index 0000000..e69de29 diff --git a/admin/js/plugins/ckeditor/samples/inlineall.html b/admin/js/plugins/ckeditor/samples/inlineall.html new file mode 100644 index 0000000..250f0c5 --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/inlineall.html @@ -0,0 +1,311 @@ + + + + + + Massive inline editing — CKEditor Sample + + + + + + +
    +

    CKEditor Samples » Massive inline editing

    +
    +

    This sample page demonstrates the inline editing feature - CKEditor instances will be created automatically from page elements with contentEditable attribute set to value true:

    +
    <div contenteditable="true" > ... </div>
    +

    Click inside of any element below to start editing.

    +
    +
    +
    + +
    +
    +
    +

    + Fusce vitae porttitor +

    +

    + + Lorem ipsum dolor sit amet dolor. Duis blandit vestibulum faucibus a, tortor. + +

    +

    + Proin nunc justo felis mollis tincidunt, risus risus pede, posuere cubilia Curae, Nullam euismod, enim. Etiam nibh ultricies dolor ac dignissim erat volutpat. Vivamus fermentum nisl nulla sem in metus. Maecenas wisi. Donec nec erat volutpat. +

    +
    +

    + Fusce vitae porttitor a, euismod convallis nisl, blandit risus tortor, pretium. + Vehicula vitae, imperdiet vel, ornare enim vel sodales rutrum +

    +
    +
    +

    + Libero nunc, rhoncus ante ipsum non ipsum. Nunc eleifend pede turpis id sollicitudin fringilla. Phasellus ultrices, velit ac arcu. +

    +
    +

    Pellentesque nunc. Donec suscipit erat. Pellentesque habitant morbi tristique ullamcorper.

    +

    Mauris mattis feugiat lectus nec mauris. Nullam vitae ante.

    +
    +
    +
    +
    +

    + Integer condimentum sit amet +

    +

    + Aenean nonummy a, mattis varius. Cras aliquet. + Praesent magna non mattis ac, rhoncus nunc, rhoncus eget, cursus pulvinar mollis.

    +

    Proin id nibh. Sed eu libero posuere sed, lectus. Phasellus dui gravida gravida feugiat mattis ac, felis.

    +

    Integer condimentum sit amet, tempor elit odio, a dolor non ante at sapien. Sed ac lectus. Nulla ligula quis eleifend mi, id leo velit pede cursus arcu id nulla ac lectus. Phasellus vestibulum. Nunc viverra enim quis diam.

    +
    +
    +

    + Praesent wisi accumsan sit amet nibh +

    +

    Donec ullamcorper, risus tortor, pretium porttitor. Morbi quam quis lectus non leo.

    +

    Integer faucibus scelerisque. Proin faucibus at, aliquet vulputate, odio at eros. Fusce gravida, erat vitae augue. Fusce urna fringilla gravida.

    +

    In hac habitasse platea dictumst. Praesent wisi accumsan sit amet nibh. Maecenas orci luctus a, lacinia quam sem, posuere commodo, odio condimentum tempor, pede semper risus. Suspendisse pede. In hac habitasse platea dictumst. Nam sed laoreet sit amet erat. Integer.

    +
    +
    +
    +
    +

    + CKEditor logo +

    +

    Quisque justo neque, mattis sed, fermentum ultrices posuere cubilia Curae, Vestibulum elit metus, quis placerat ut, lectus. Ut sagittis, nunc libero, egestas consequat lobortis velit rutrum ut, faucibus turpis. Fusce porttitor, nulla quis turpis. Nullam laoreet vel, consectetuer tellus suscipit ultricies, hendrerit wisi. Donec odio nec velit ac nunc sit amet, accumsan cursus aliquet. Vestibulum ante sit amet sagittis mi.

    +

    + Nullam laoreet vel consectetuer tellus suscipit +

    +
      +
    • Ut sagittis, nunc libero, egestas consequat lobortis velit rutrum ut, faucibus turpis.
    • +
    • Fusce porttitor, nulla quis turpis. Nullam laoreet vel, consectetuer tellus suscipit ultricies, hendrerit wisi.
    • +
    • Mauris eget tellus. Donec non felis. Nam eget dolor. Vestibulum enim. Donec.
    • +
    +

    Quisque justo neque, mattis sed, fermentum ultrices posuere cubilia Curae, Vestibulum elit metus, quis placerat ut, lectus.

    +

    Nullam laoreet vel, consectetuer tellus suscipit ultricies, hendrerit wisi. Ut sagittis, nunc libero, egestas consequat lobortis velit rutrum ut, faucibus turpis. Fusce porttitor, nulla quis turpis.

    +

    Donec odio nec velit ac nunc sit amet, accumsan cursus aliquet. Vestibulum ante sit amet sagittis mi. Sed in nonummy faucibus turpis. Mauris eget tellus. Donec non felis. Nam eget dolor. Vestibulum enim. Donec.

    +
    +
    +
    +
    + Tags of this article: +

    + inline, editing, floating, CKEditor +

    +
    +
    + + + diff --git a/admin/js/plugins/ckeditor/samples/inlinebycode.html b/admin/js/plugins/ckeditor/samples/inlinebycode.html new file mode 100644 index 0000000..fe627d0 --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/inlinebycode.html @@ -0,0 +1,121 @@ + + + + + + Inline Editing by Code — CKEditor Sample + + + + + +

    + CKEditor Samples » Inline Editing by Code +

    +
    +

    + This sample shows how to create an inline editor instance of CKEditor. It is created + with a JavaScript call using the following code: +

    +
    +// This property tells CKEditor to not activate every element with contenteditable=true element.
    +CKEDITOR.disableAutoInline = true;
    +
    +var editor = CKEDITOR.inline( document.getElementById( 'editable' ) );
    +
    +

    + Note that editable in the code above is the id + attribute of the <div> element to be converted into an inline instance. +

    +
    +
    +

    Saturn V carrying Apollo 11 Apollo 11

    + +

    Apollo 11 was the spaceflight that landed the first humans, Americans Neil Armstrong and Buzz Aldrin, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.

    + +

    Armstrong spent about three and a half two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5 kg) of lunar material for return to Earth. A third member of the mission, Michael Collins, piloted the command spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.

    + +

    Broadcasting and quotes

    + +

    Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:

    + +
    +

    One small step for [a] man, one giant leap for mankind.

    +
    + +

    Apollo 11 effectively ended the Space Race and fulfilled a national goal proposed in 1961 by the late U.S. President John F. Kennedy in a speech before the United States Congress:

    + +
    +

    [...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.

    +
    + +

    Technical details

    + + + + + + + + + + + + + + + + + + + + + + + +
    Mission crew
    PositionAstronaut
    CommanderNeil A. Armstrong
    Command Module PilotMichael Collins
    Lunar Module PilotEdwin "Buzz" E. Aldrin, Jr.
    + +

    Launched by a Saturn V rocket from Kennedy Space Center in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of NASA's Apollo program. The Apollo spacecraft had three parts:

    + +
      +
    1. Command Module with a cabin for the three astronauts which was the only part which landed back on Earth
    2. +
    3. Service Module which supported the Command Module with propulsion, electrical power, oxygen and water
    4. +
    5. Lunar Module for landing on the Moon.
    6. +
    + +

    After being sent to the Moon by the Saturn V's upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the Sea of Tranquility. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the Pacific Ocean on July 24.

    + +
    +

    Source: Wikipedia.org

    +
    + + + + + diff --git a/admin/js/plugins/ckeditor/samples/inlinetextarea.html b/admin/js/plugins/ckeditor/samples/inlinetextarea.html new file mode 100644 index 0000000..9da5ed3 --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/inlinetextarea.html @@ -0,0 +1,110 @@ + + + + + + Replace Textarea with Inline Editor — CKEditor Sample + + + + + +

    + CKEditor Samples » Replace Textarea with Inline Editor +

    +
    +

    + You can also create an inline editor from a textarea + element. In this case the textarea will be replaced + by a div element with inline editing enabled. +

    +
    +// "article-body" is the name of a textarea element.
    +var editor = CKEDITOR.inline( 'article-body' );
    +
    +
    +
    +

    This is a sample form with some fields

    +

    + Title:
    +

    +

    + Article Body (Textarea converted to CKEditor):
    + +

    +

    + +

    +
    + + + + + diff --git a/admin/js/plugins/ckeditor/samples/jquery.html b/admin/js/plugins/ckeditor/samples/jquery.html new file mode 100644 index 0000000..97afe86 --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/jquery.html @@ -0,0 +1,100 @@ + + + + + + jQuery Adapter — CKEditor Sample + + + + + + + + +

    + CKEditor Samples » Create Editors with jQuery +

    +
    +
    +

    + This sample shows how to use the jQuery adapter. + Note that you have to include both CKEditor and jQuery scripts before including the adapter. +

    + +
    +<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    +<script src="/ckeditor/ckeditor.js"></script>
    +<script src="/ckeditor/adapters/jquery.js"></script>
    +
    + +

    Then you can replace HTML elements with a CKEditor instance using the ckeditor() method.

    + +
    +$( document ).ready( function() {
    +	$( 'textarea#editor1' ).ckeditor();
    +} );
    +
    +
    + +

    Inline Example

    + +
    +

    Saturn V carrying Apollo 11Apollo 11 was the spaceflight that landed the first humans, Americans Neil Armstrong and Buzz Aldrin, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.

    +

    Armstrong spent about three and a half two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5 kg) of lunar material for return to Earth. A third member of the mission, Michael Collins, piloted the command spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth. +

    Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:

    +

    One small step for [a] man, one giant leap for mankind.

    Apollo 11 effectively ended the Space Race and fulfilled a national goal proposed in 1961 by the late U.S. President John F. Kennedy in a speech before the United States Congress:

    [...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.

    +
    + +
    + +

    Classic (iframe-based) Example

    + + + +

    + + + + + +

    +
    + + + diff --git a/admin/js/plugins/ckeditor/samples/plugins/dialog/assets/my_dialog.js b/admin/js/plugins/ckeditor/samples/plugins/dialog/assets/my_dialog.js new file mode 100644 index 0000000..3d8f369 --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/plugins/dialog/assets/my_dialog.js @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +CKEDITOR.dialog.add( 'myDialog', function( editor ) { + return { + title: 'My Dialog', + minWidth: 400, + minHeight: 200, + contents: [ + { + id: 'tab1', + label: 'First Tab', + title: 'First Tab', + elements: [ + { + id: 'input1', + type: 'text', + label: 'Text Field' + }, + { + id: 'select1', + type: 'select', + label: 'Select Field', + items: [ + [ 'option1', 'value1' ], + [ 'option2', 'value2' ] + ] + } + ] + }, + { + id: 'tab2', + label: 'Second Tab', + title: 'Second Tab', + elements: [ + { + id: 'button1', + type: 'button', + label: 'Button Field' + } + ] + } + ] + }; +} ); + diff --git a/admin/js/plugins/ckeditor/samples/plugins/dialog/dialog.html b/admin/js/plugins/ckeditor/samples/plugins/dialog/dialog.html new file mode 100644 index 0000000..b4940b2 --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/plugins/dialog/dialog.html @@ -0,0 +1,187 @@ + + + + + + Using API to Customize Dialog Windows — CKEditor Sample + + + + + + + + + +

    + CKEditor Samples » Using CKEditor Dialog API +

    +
    +

    + This sample shows how to use the + CKEditor Dialog API + to customize CKEditor dialog windows without changing the original editor code. + The following customizations are being done in the example below: +

    +

    + For details on how to create this setup check the source code of this sample page. +

    +
    +

    A custom dialog is added to the editors using the pluginsLoaded event, from an external dialog definition file:

    +
      +
    1. Creating a custom dialog window – "My Dialog" dialog window opened with the "My Dialog" toolbar button.
    2. +
    3. Creating a custom button – Add button to open the dialog with "My Dialog" toolbar button.
    4. +
    + + +

    The below editor modify the dialog definition of the above added dialog using the dialogDefinition event:

    +
      +
    1. Adding dialog tab – Add new tab "My Tab" to dialog window.
    2. +
    3. Removing a dialog window tab – Remove "Second Tab" page from the dialog window.
    4. +
    5. Adding dialog window fields – Add "My Custom Field" to the dialog window.
    6. +
    7. Removing dialog window field – Remove "Select Field" selection field from the dialog window.
    8. +
    9. Setting default values for dialog window fields – Set default value of "Text Field" text field.
    10. +
    11. Setup initial focus for dialog window – Put initial focus on "My Custom Field" text field.
    12. +
    + + + + + diff --git a/admin/js/plugins/ckeditor/samples/plugins/enterkey/enterkey.html b/admin/js/plugins/ckeditor/samples/plugins/enterkey/enterkey.html new file mode 100644 index 0000000..f49d9d7 --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/plugins/enterkey/enterkey.html @@ -0,0 +1,103 @@ + + + + + + ENTER Key Configuration — CKEditor Sample + + + + + + + + +

    + CKEditor Samples » ENTER Key Configuration +

    +
    +

    + This sample shows how to configure the Enter and Shift+Enter keys + to perform actions specified in the + enterMode + and shiftEnterMode + parameters, respectively. + You can choose from the following options: +

    +
      +
    • ENTER_P – new <p> paragraphs are created;
    • +
    • ENTER_BR – lines are broken with <br> elements;
    • +
    • ENTER_DIV – new <div> blocks are created.
    • +
    +

    + The sample code below shows how to configure CKEditor to create a <div> block when Enter key is pressed. +

    +
    +CKEDITOR.replace( 'textarea_id', {
    +	enterMode: CKEDITOR.ENTER_DIV
    +});
    +

    + Note that textarea_id in the code above is the id attribute of + the <textarea> element to be replaced. +

    +
    +
    + When Enter is pressed:
    + +
    +
    + When Shift+Enter is pressed:
    + +
    +
    +
    +

    +
    + +

    +

    + +

    +
    + + + diff --git a/admin/js/plugins/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/outputforflash.fla b/admin/js/plugins/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/outputforflash.fla new file mode 100644 index 0000000000000000000000000000000000000000..27e68ccd1cb7192c8bda2418d198d90f1aff10a7 GIT binary patch literal 85504 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 literal 0 HcmV?d00001 diff --git a/admin/js/plugins/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/swfobject.js b/admin/js/plugins/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/swfobject.js new file mode 100644 index 0000000..95fdf0a --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/swfobject.js @@ -0,0 +1,18 @@ +var swfobject=function(){function u(){if(!s){try{var a=d.getElementsByTagName("body")[0].appendChild(d.createElement("span"));a.parentNode.removeChild(a)}catch(b){return}s=!0;for(var a=x.length,c=0;cf){f++;setTimeout(arguments.callee,10);return}a.removeChild(b);c=null;D()})()}else D()}function D(){var a=p.length;if(0e.wk))t(c,!0),f&&(g.success=!0,g.ref=E(c),f(g));else if(p[b].expressInstall&&F()){g={};g.data=p[b].expressInstall;g.width=d.getAttribute("width")||"0";g.height=d.getAttribute("height")||"0";d.getAttribute("class")&&(g.styleclass=d.getAttribute("class"));d.getAttribute("align")&&(g.align=d.getAttribute("align"));for(var h={},d=d.getElementsByTagName("param"),j=d.length,k=0;ke.wk)}function G(a,b,c,f){A=!0;H=f||null;N={success:!1,id:c};var g=n(c);if(g){"OBJECT"==g.nodeName?(w=I(g),B=null):(w=g,B=c);a.id= +O;if(typeof a.width==i||!/%$/.test(a.width)&&310>parseInt(a.width,10))a.width="310";if(typeof a.height==i||!/%$/.test(a.height)&&137>parseInt(a.height,10))a.height="137";d.title=d.title.slice(0,47)+" - Flash Player Installation";f=e.ie&&e.win?"ActiveX":"PlugIn";f="MMredirectURL="+m.location.toString().replace(/&/g,"%26")+"&MMplayerType="+f+"&MMdoctitle="+d.title;b.flashvars=typeof b.flashvars!=i?b.flashvars+("&"+f):f;e.ie&&(e.win&&4!=g.readyState)&&(f=d.createElement("div"),c+="SWFObjectNew",f.setAttribute("id", +c),g.parentNode.insertBefore(f,g),g.style.display="none",function(){g.readyState==4?g.parentNode.removeChild(g):setTimeout(arguments.callee,10)}());J(a,b,c)}}function W(a){if(e.ie&&e.win&&4!=a.readyState){var b=d.createElement("div");a.parentNode.insertBefore(b,a);b.parentNode.replaceChild(I(a),b);a.style.display="none";(function(){4==a.readyState?a.parentNode.removeChild(a):setTimeout(arguments.callee,10)})()}else a.parentNode.replaceChild(I(a),a)}function I(a){var b=d.createElement("div");if(e.win&& +e.ie)b.innerHTML=a.innerHTML;else if(a=a.getElementsByTagName(r)[0])if(a=a.childNodes)for(var c=a.length,f=0;fe.wk)return f;if(g)if(typeof a.id==i&&(a.id=c),e.ie&&e.win){var o="",h;for(h in a)a[h]!=Object.prototype[h]&&("data"==h.toLowerCase()?b.movie=a[h]:"styleclass"==h.toLowerCase()?o+=' class="'+a[h]+'"':"classid"!=h.toLowerCase()&&(o+=" "+ +h+'="'+a[h]+'"'));h="";for(var j in b)b[j]!=Object.prototype[j]&&(h+='');g.outerHTML='"+h+"";C[C.length]=a.id;f=n(a.id)}else{j=d.createElement(r);j.setAttribute("type",y);for(var k in a)a[k]!=Object.prototype[k]&&("styleclass"==k.toLowerCase()?j.setAttribute("class",a[k]):"classid"!=k.toLowerCase()&&j.setAttribute(k,a[k]));for(o in b)b[o]!=Object.prototype[o]&&"movie"!=o.toLowerCase()&& +(a=j,h=o,k=b[o],c=d.createElement("param"),c.setAttribute("name",h),c.setAttribute("value",k),a.appendChild(c));g.parentNode.replaceChild(j,g);f=j}return f}function P(a){var b=n(a);b&&"OBJECT"==b.nodeName&&(e.ie&&e.win?(b.style.display="none",function(){if(4==b.readyState){var c=n(a);if(c){for(var f in c)"function"==typeof c[f]&&(c[f]=null);c.parentNode.removeChild(c)}}else setTimeout(arguments.callee,10)}()):b.parentNode.removeChild(b))}function n(a){var b=null;try{b=d.getElementById(a)}catch(c){}return b} +function U(a,b,c){a.attachEvent(b,c);v[v.length]=[a,b,c]}function z(a){var b=e.pv,a=a.split(".");a[0]=parseInt(a[0],10);a[1]=parseInt(a[1],10)||0;a[2]=parseInt(a[2],10)||0;return b[0]>a[0]||b[0]==a[0]&&b[1]>a[1]||b[0]==a[0]&&b[1]==a[1]&&b[2]>=a[2]?!0:!1}function Q(a,b,c,f){if(!e.ie||!e.mac){var g=d.getElementsByTagName("head")[0];if(g){c=c&&"string"==typeof c?c:"screen";f&&(K=l=null);if(!l||K!=c)f=d.createElement("style"),f.setAttribute("type","text/css"),f.setAttribute("media",c),l=g.appendChild(f), +e.ie&&(e.win&&typeof d.styleSheets!=i&&0\.;]/.exec(a)&&typeof encodeURIComponent!=i?encodeURIComponent(a):a}var i="undefined",r="object",y="application/x-shockwave-flash", +O="SWFObjectExprInst",m=window,d=document,q=navigator,T=!1,x=[function(){T?V():D()}],p=[],C=[],v=[],w,B,H,N,s=!1,A=!1,l,K,R=!0,e=function(){var a=typeof d.getElementById!=i&&typeof d.getElementsByTagName!=i&&typeof d.createElement!=i,b=q.userAgent.toLowerCase(),c=q.platform.toLowerCase(),f=c?/win/.test(c):/win/.test(b),c=c?/mac/.test(c):/mac/.test(b),b=/webkit/.test(b)?parseFloat(b.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):!1,g=!+"\v1",e=[0,0,0],h=null;if(typeof q.plugins!=i&&typeof q.plugins["Shockwave Flash"]== +r){if((h=q.plugins["Shockwave Flash"].description)&&!(typeof q.mimeTypes!=i&&q.mimeTypes[y]&&!q.mimeTypes[y].enabledPlugin))T=!0,g=!1,h=h.replace(/^.*\s+(\S+\s+\S+$)/,"$1"),e[0]=parseInt(h.replace(/^(.*)\..*$/,"$1"),10),e[1]=parseInt(h.replace(/^.*\.(.*)\s.*$/,"$1"),10),e[2]=/[a-zA-Z]/.test(h)?parseInt(h.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}else if(typeof m.ActiveXObject!=i)try{var j=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");if(j&&(h=j.GetVariable("$version")))g=!0,h=h.split(" ")[1].split(","), +e=[parseInt(h[0],10),parseInt(h[1],10),parseInt(h[2],10)]}catch(k){}return{w3:a,pv:e,wk:b,ie:g,win:f,mac:c}}();(function(){e.w3&&((typeof d.readyState!=i&&"complete"==d.readyState||typeof d.readyState==i&&(d.getElementsByTagName("body")[0]||d.body))&&u(),s||(typeof d.addEventListener!=i&&d.addEventListener("DOMContentLoaded",u,!1),e.ie&&e.win&&(d.attachEvent("onreadystatechange",function(){"complete"==d.readyState&&(d.detachEvent("onreadystatechange",arguments.callee),u())}),m==top&&function(){if(!s){try{d.documentElement.doScroll("left")}catch(a){setTimeout(arguments.callee, +0);return}u()}}()),e.wk&&function(){s||(/loaded|complete/.test(d.readyState)?u():setTimeout(arguments.callee,0))}(),M(u)))})();(function(){e.ie&&e.win&&window.attachEvent("onunload",function(){for(var a=v.length,b=0;be.wk)&&a&&b&&c&&d&&g?(t(b,!1),L(function(){c+="";d+="";var e={};if(k&&typeof k===r)for(var l in k)e[l]=k[l];e.data=a;e.width=c;e.height=d;l={};if(j&&typeof j===r)for(var p in j)l[p]=j[p];if(h&&typeof h===r)for(var q in h)l.flashvars=typeof l.flashvars!=i?l.flashvars+("&"+q+"="+h[q]):q+"="+h[q];if(z(g))p=J(e,l,b),e.id== +b&&t(b,!0),n.success=!0,n.ref=p;else{if(o&&F()){e.data=o;G(e,l,b,m);return}t(b,!0)}m&&m(n)})):m&&m(n)},switchOffAutoHideShow:function(){R=!1},ua:e,getFlashPlayerVersion:function(){return{major:e.pv[0],minor:e.pv[1],release:e.pv[2]}},hasFlashPlayerVersion:z,createSWF:function(a,b,c){if(e.w3)return J(a,b,c)},showExpressInstall:function(a,b,c,d){e.w3&&F()&&G(a,b,c,d)},removeSWF:function(a){e.w3&&P(a)},createCSS:function(a,b,c,d){e.w3&&Q(a,b,c,d)},addDomLoadEvent:L,addLoadEvent:M,getQueryParamValue:function(a){var b= +d.location.search||d.location.hash;if(b){/\?/.test(b)&&(b=b.split("?")[1]);if(null==a)return S(b);for(var b=b.split("&"),c=0;c + + + + + Output for Flash — CKEditor Sample + + + + + + + + + + + +

    + CKEditor Samples » Producing Flash Compliant HTML Output +

    +
    +

    + This sample shows how to configure CKEditor to output + HTML code that can be used with + + Adobe Flash. + The code will contain a subset of standard HTML elements like <b>, + <i>, and <p> as well as HTML attributes. +

    +

    + To add a CKEditor instance outputting Flash compliant HTML code, load the editor using a standard + JavaScript call, and define CKEditor features to use HTML elements and attributes. +

    +

    + For details on how to create this setup check the source code of this sample page. +

    +
    +

    + To see how it works, create some content in the editing area of CKEditor on the left + and send it to the Flash object on the right side of the page by using the + Send to Flash button. +

    + + + + + +
    + + +

    + +

    +
    +
    +
    + + + diff --git a/admin/js/plugins/ckeditor/samples/plugins/htmlwriter/outputhtml.html b/admin/js/plugins/ckeditor/samples/plugins/htmlwriter/outputhtml.html new file mode 100644 index 0000000..d857b4e --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/plugins/htmlwriter/outputhtml.html @@ -0,0 +1,221 @@ + + + + + + HTML Compliant Output — CKEditor Sample + + + + + + + + + +

    + CKEditor Samples » Producing HTML Compliant Output +

    +
    +

    + This sample shows how to configure CKEditor to output valid + HTML 4.01 code. + Traditional HTML elements like <b>, + <i>, and <font> are used in place of + <strong>, <em>, and CSS styles. +

    +

    + To add a CKEditor instance outputting legacy HTML 4.01 code, load the editor using a standard + JavaScript call, and define CKEditor features to use the HTML compliant elements and attributes. +

    +

    + A snippet of the configuration code can be seen below; check the source of this page for + full definition: +

    +
    +CKEDITOR.replace( 'textarea_id', {
    +	coreStyles_bold: { element: 'b' },
    +	coreStyles_italic: { element: 'i' },
    +
    +	fontSize_style: {
    +		element: 'font',
    +		attributes: { 'size': '#(size)' }
    +	}
    +
    +	...
    +});
    +
    +
    +

    + + + +

    +

    + +

    +
    + + + diff --git a/admin/js/plugins/ckeditor/samples/plugins/magicline/magicline.html b/admin/js/plugins/ckeditor/samples/plugins/magicline/magicline.html new file mode 100644 index 0000000..1638f4c --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/plugins/magicline/magicline.html @@ -0,0 +1,206 @@ + + + + + + Using Magicline plugin — CKEditor Sample + + + + + + + +

    + CKEditor Samples » Using Magicline plugin +

    +
    +

    + This sample shows the advantages of Magicline plugin + which is to enhance the editing process. Thanks to this plugin, + a number of difficult focus spaces which are inaccessible due to + browser issues can now be focused. +

    +

    + Magicline plugin shows a red line with a handler + which, when clicked, inserts a paragraph and allows typing. To see this, + focus an editor and move your mouse above the focus space you want + to access. The plugin is enabled by default so no additional + configuration is necessary. +

    +
    +
    + +
    +

    + This editor uses a default Magicline setup. +

    +
    + + +
    +
    +
    + +
    +

    + This editor is using a blue line. +

    +
    +CKEDITOR.replace( 'editor2', {
    +	magicline_color: 'blue'
    +});
    +
    + + +
    + + + diff --git a/admin/js/plugins/ckeditor/samples/plugins/toolbar/toolbar.html b/admin/js/plugins/ckeditor/samples/plugins/toolbar/toolbar.html new file mode 100644 index 0000000..7d7a99e --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/plugins/toolbar/toolbar.html @@ -0,0 +1,232 @@ + + + + + + Toolbar Configuration — CKEditor Sample + + + + + + + +

    + CKEditor Samples » Toolbar Configuration +

    +
    +

    + This sample page demonstrates editor with loaded full toolbar (all registered buttons) and, if + current editor's configuration modifies default settings, also editor with modified toolbar. +

    + +

    Since CKEditor 4 there are two ways to configure toolbar buttons.

    + +

    By config.toolbar

    + +

    + You can explicitly define which buttons are displayed in which groups and in which order. + This is the more precise setting, but less flexible. If newly added plugin adds its + own button you'll have to add it manually to your config.toolbar setting as well. +

    + +

    To add a CKEditor instance with custom toolbar setting, insert the following JavaScript call to your code:

    + +
    +CKEDITOR.replace( 'textarea_id', {
    +	toolbar: [
    +		{ name: 'document', items: [ 'Source', '-', 'NewPage', 'Preview', '-', 'Templates' ] },	// Defines toolbar group with name (used to create voice label) and items in 3 subgroups.
    +		[ 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo' ],			// Defines toolbar group without name.
    +		'/',																					// Line break - next group will be placed in new line.
    +		{ name: 'basicstyles', items: [ 'Bold', 'Italic' ] }
    +	]
    +});
    + +

    By config.toolbarGroups

    + +

    + You can define which groups of buttons (like e.g. basicstyles, clipboard + and forms) are displayed and in which order. Registered buttons are associated + with toolbar groups by toolbar property in their definition. + This setting's advantage is that you don't have to modify toolbar configuration + when adding/removing plugins which register their own buttons. +

    + +

    To add a CKEditor instance with custom toolbar groups setting, insert the following JavaScript call to your code:

    + +
    +CKEDITOR.replace( 'textarea_id', {
    +	toolbarGroups: [
    +		{ name: 'document',	   groups: [ 'mode', 'document' ] },			// Displays document group with its two subgroups.
    + 		{ name: 'clipboard',   groups: [ 'clipboard', 'undo' ] },			// Group's name will be used to create voice label.
    + 		'/',																// Line break - next group will be placed in new line.
    + 		{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
    + 		{ name: 'links' }
    +	]
    +
    +	// NOTE: Remember to leave 'toolbar' property with the default value (null).
    +});
    +
    + + + +
    +

    Full toolbar configuration

    +

    Below you can see editor with full toolbar, generated automatically by the editor.

    +

    + Note: To create editor instance with full toolbar you don't have to set anything. + Just leave toolbar and toolbarGroups with the default, null values. +

    + +
    
    +	
    + + + + + + diff --git a/admin/js/plugins/ckeditor/samples/plugins/wysiwygarea/fullpage.html b/admin/js/plugins/ckeditor/samples/plugins/wysiwygarea/fullpage.html new file mode 100644 index 0000000..8c6f2e8 --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/plugins/wysiwygarea/fullpage.html @@ -0,0 +1,77 @@ + + + + + + Full Page Editing — CKEditor Sample + + + + + + + + + +

    + CKEditor Samples » Full Page Editing +

    +
    +

    + This sample shows how to configure CKEditor to edit entire HTML pages, from the + <html> tag to the </html> tag. +

    +

    + The CKEditor instance below is inserted with a JavaScript call using the following code: +

    +
    +CKEDITOR.replace( 'textarea_id', {
    +	fullPage: true,
    +	allowedContent: true
    +});
    +
    +

    + Note that textarea_id in the code above is the id attribute of + the <textarea> element to be replaced. +

    +

    + The allowedContent in the code above is set to true to disable content filtering. + Setting this option is not obligatory, but in full page mode there is a strong chance that one may want be able to freely enter any HTML content in source mode without any limitations. +

    +
    +
    + + + +

    + +

    +
    + + + diff --git a/admin/js/plugins/ckeditor/samples/readonly.html b/admin/js/plugins/ckeditor/samples/readonly.html new file mode 100644 index 0000000..cf609df --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/readonly.html @@ -0,0 +1,73 @@ + + + + + + Using the CKEditor Read-Only API — CKEditor Sample + + + + + +

    + CKEditor Samples » Using the CKEditor Read-Only API +

    +
    +

    + This sample shows how to use the + setReadOnly + API to put editor into the read-only state that makes it impossible for users to change the editor contents. +

    +

    + For details on how to create this setup check the source code of this sample page. +

    +
    +
    +

    + +

    +

    + + +

    +
    + + + diff --git a/admin/js/plugins/ckeditor/samples/replacebyclass.html b/admin/js/plugins/ckeditor/samples/replacebyclass.html new file mode 100644 index 0000000..6baea4c --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/replacebyclass.html @@ -0,0 +1,57 @@ + + + + + + Replace Textareas by Class Name — CKEditor Sample + + + + +

    + CKEditor Samples » Replace Textarea Elements by Class Name +

    +
    +

    + This sample shows how to automatically replace all <textarea> elements + of a given class with a CKEditor instance. +

    +

    + To replace a <textarea> element, simply assign it the ckeditor + class, as in the code below: +

    +
    +<textarea class="ckeditor" name="editor1"></textarea>
    +
    +

    + Note that other <textarea> attributes (like id or name) need to be adjusted to your document. +

    +
    +
    +

    + + +

    +

    + +

    +
    + + + diff --git a/admin/js/plugins/ckeditor/samples/replacebycode.html b/admin/js/plugins/ckeditor/samples/replacebycode.html new file mode 100644 index 0000000..8e7d7f7 --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/replacebycode.html @@ -0,0 +1,56 @@ + + + + + + Replace Textarea by Code — CKEditor Sample + + + + +

    + CKEditor Samples » Replace Textarea Elements Using JavaScript Code +

    +
    +
    +

    + This editor is using an <iframe> element-based editing area, provided by the Wysiwygarea plugin. +

    +
    +CKEDITOR.replace( 'textarea_id' )
    +
    +
    + + +

    + +

    +
    + + + diff --git a/admin/js/plugins/ckeditor/samples/sample.css b/admin/js/plugins/ckeditor/samples/sample.css new file mode 100644 index 0000000..faa0fbe --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/sample.css @@ -0,0 +1,365 @@ +/* +Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ + +html, body, h1, h2, h3, h4, h5, h6, div, span, blockquote, p, address, form, fieldset, img, ul, ol, dl, dt, dd, li, hr, table, td, th, strong, em, sup, sub, dfn, ins, del, q, cite, var, samp, code, kbd, tt, pre +{ + line-height: 1.5; +} + +body +{ + padding: 10px 30px; +} + +input, textarea, select, option, optgroup, button, td, th +{ + font-size: 100%; +} + +pre +{ + -moz-tab-size: 4; + -o-tab-size: 4; + -webkit-tab-size: 4; + tab-size: 4; +} + +pre, code, kbd, samp, tt +{ + font-family: monospace,monospace; + font-size: 1em; +} + +body { + width: 960px; + margin: 0 auto; +} + +code +{ + background: #f3f3f3; + border: 1px solid #ddd; + padding: 1px 4px; + + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +abbr +{ + border-bottom: 1px dotted #555; + cursor: pointer; +} + +.new, .beta +{ + text-transform: uppercase; + font-size: 10px; + font-weight: bold; + padding: 1px 4px; + margin: 0 0 0 5px; + color: #fff; + float: right; + + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.new +{ + background: #FF7E00; + border: 1px solid #DA8028; + text-shadow: 0 1px 0 #C97626; + + -moz-box-shadow: 0 2px 3px 0 #FFA54E inset; + -webkit-box-shadow: 0 2px 3px 0 #FFA54E inset; + box-shadow: 0 2px 3px 0 #FFA54E inset; +} + +.beta +{ + background: #18C0DF; + border: 1px solid #19AAD8; + text-shadow: 0 1px 0 #048CAD; + font-style: italic; + + -moz-box-shadow: 0 2px 3px 0 #50D4FD inset; + -webkit-box-shadow: 0 2px 3px 0 #50D4FD inset; + box-shadow: 0 2px 3px 0 #50D4FD inset; +} + +h1.samples +{ + color: #0782C1; + font-size: 200%; + font-weight: normal; + margin: 0; + padding: 0; +} + +h1.samples a +{ + color: #0782C1; + text-decoration: none; + border-bottom: 1px dotted #0782C1; +} + +.samples a:hover +{ + border-bottom: 1px dotted #0782C1; +} + +h2.samples +{ + color: #000000; + font-size: 130%; + margin: 15px 0 0 0; + padding: 0; +} + +p, blockquote, address, form, pre, dl, h1.samples, h2.samples +{ + margin-bottom: 15px; +} + +ul.samples +{ + margin-bottom: 15px; +} + +.clear +{ + clear: both; +} + +fieldset +{ + margin: 0; + padding: 10px; +} + +body, input, textarea +{ + color: #333333; + font-family: Arial, Helvetica, sans-serif; +} + +body +{ + font-size: 75%; +} + +a.samples +{ + color: #189DE1; + text-decoration: none; +} + +form +{ + margin: 0; + padding: 0; +} + +pre.samples +{ + background-color: #F7F7F7; + border: 1px solid #D7D7D7; + overflow: auto; + padding: 0.25em; + white-space: pre-wrap; /* CSS 2.1 */ + word-wrap: break-word; /* IE7 */ +} + +#footer +{ + clear: both; + padding-top: 10px; +} + +#footer hr +{ + margin: 10px 0 15px 0; + height: 1px; + border: solid 1px gray; + border-bottom: none; +} + +#footer p +{ + margin: 0 10px 10px 10px; + float: left; +} + +#footer #copy +{ + float: right; +} + +#outputSample +{ + width: 100%; + table-layout: fixed; +} + +#outputSample thead th +{ + color: #dddddd; + background-color: #999999; + padding: 4px; + white-space: nowrap; +} + +#outputSample tbody th +{ + vertical-align: top; + text-align: left; +} + +#outputSample pre +{ + margin: 0; + padding: 0; +} + +.description +{ + border: 1px dotted #B7B7B7; + margin-bottom: 10px; + padding: 10px 10px 0; + overflow: hidden; +} + +label +{ + display: block; + margin-bottom: 6px; +} + +/** + * CKEditor editables are automatically set with the "cke_editable" class + * plus cke_editable_(inline|themed) depending on the editor type. + */ + +/* Style a bit the inline editables. */ +.cke_editable.cke_editable_inline +{ + cursor: pointer; +} + +/* Once an editable element gets focused, the "cke_focus" class is + added to it, so we can style it differently. */ +.cke_editable.cke_editable_inline.cke_focus +{ + box-shadow: inset 0px 0px 20px 3px #ddd, inset 0 0 1px #000; + outline: none; + background: #eee; + cursor: text; +} + +/* Avoid pre-formatted overflows inline editable. */ +.cke_editable_inline pre +{ + white-space: pre-wrap; + word-wrap: break-word; +} + +/** + * Samples index styles. + */ + +.twoColumns, +.twoColumnsLeft, +.twoColumnsRight +{ + overflow: hidden; +} + +.twoColumnsLeft, +.twoColumnsRight +{ + width: 45%; +} + +.twoColumnsLeft +{ + float: left; +} + +.twoColumnsRight +{ + float: right; +} + +dl.samples +{ + padding: 0 0 0 40px; +} +dl.samples > dt +{ + display: list-item; + list-style-type: disc; + list-style-position: outside; + margin: 0 0 3px; +} +dl.samples > dd +{ + margin: 0 0 3px; +} +.warning +{ + color: #ff0000; + background-color: #FFCCBA; + border: 2px dotted #ff0000; + padding: 15px 10px; + margin: 10px 0; +} + +/* Used on inline samples */ + +blockquote +{ + font-style: italic; + font-family: Georgia, Times, "Times New Roman", serif; + padding: 2px 0; + border-style: solid; + border-color: #ccc; + border-width: 0; +} + +.cke_contents_ltr blockquote +{ + padding-left: 20px; + padding-right: 8px; + border-left-width: 5px; +} + +.cke_contents_rtl blockquote +{ + padding-left: 8px; + padding-right: 20px; + border-right-width: 5px; +} + +img.right { + border: 1px solid #ccc; + float: right; + margin-left: 15px; + padding: 5px; +} + +img.left { + border: 1px solid #ccc; + float: left; + margin-right: 15px; + padding: 5px; +} + +.marker +{ + background-color: Yellow; +} diff --git a/admin/js/plugins/ckeditor/samples/sample.js b/admin/js/plugins/ckeditor/samples/sample.js new file mode 100644 index 0000000..b96b3bf --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/sample.js @@ -0,0 +1,50 @@ +/** + * Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +// Tool scripts for the sample pages. +// This file can be ignored and is not required to make use of CKEditor. + +( function() { + CKEDITOR.on( 'instanceReady', function( ev ) { + // Check for sample compliance. + var editor = ev.editor, + meta = CKEDITOR.document.$.getElementsByName( 'ckeditor-sample-required-plugins' ), + requires = meta.length ? CKEDITOR.dom.element.get( meta[ 0 ] ).getAttribute( 'content' ).split( ',' ) : [], + missing = [], + i; + + if ( requires.length ) { + for ( i = 0; i < requires.length; i++ ) { + if ( !editor.plugins[ requires[ i ] ] ) + missing.push( '' + requires[ i ] + '' ); + } + + if ( missing.length ) { + var warn = CKEDITOR.dom.element.createFromHtml( + '
    ' + + 'To fully experience this demo, the ' + missing.join( ', ' ) + ' plugin' + ( missing.length > 1 ? 's are' : ' is' ) + ' required.' + + '
    ' + ); + warn.insertBefore( editor.container ); + } + } + + // Set icons. + var doc = new CKEDITOR.dom.document( document ), + icons = doc.find( '.button_icon' ); + + for ( i = 0; i < icons.count(); i++ ) { + var icon = icons.getItem( i ), + name = icon.getAttribute( 'data-icon' ), + style = CKEDITOR.skin.getIconStyle( name, ( CKEDITOR.lang.dir == 'rtl' ) ); + + icon.addClass( 'cke_button_icon' ); + icon.addClass( 'cke_button__' + name + '_icon' ); + icon.setAttribute( 'style', style ); + icon.setStyle( 'float', 'none' ); + + } + } ); +} )(); diff --git a/admin/js/plugins/ckeditor/samples/sample_posteddata.php b/admin/js/plugins/ckeditor/samples/sample_posteddata.php new file mode 100644 index 0000000..7637104 --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/sample_posteddata.php @@ -0,0 +1,16 @@ +
    +
    +-------------------------------------------------------------------------------------------
    +  CKEditor - Posted Data
    +
    +  We are sorry, but your Web server does not support the PHP language used in this script.
    +
    +  Please note that CKEditor can be used with any other server-side language than just PHP.
    +  To save the content created with CKEditor you need to read the POST data on the server
    +  side and write it to a file or the database.
    +
    +  Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.
    +  For licensing, see LICENSE.md or http://ckeditor.com/license
    +-------------------------------------------------------------------------------------------
    +
    +
    */ include "assets/posteddata.php"; ?> diff --git a/admin/js/plugins/ckeditor/samples/tabindex.html b/admin/js/plugins/ckeditor/samples/tabindex.html new file mode 100644 index 0000000..8c2eb41 --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/tabindex.html @@ -0,0 +1,75 @@ + + + + + + TAB Key-Based Navigation — CKEditor Sample + + + + + + +

    + CKEditor Samples » TAB Key-Based Navigation +

    +
    +

    + This sample shows how tab key navigation among editor instances is + affected by the tabIndex attribute from + the original page element. Use TAB key to move between the editors. +

    +
    +

    + +

    +
    +

    + +

    +

    + +

    + + + diff --git a/admin/js/plugins/ckeditor/samples/uicolor.html b/admin/js/plugins/ckeditor/samples/uicolor.html new file mode 100644 index 0000000..9a42c78 --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/uicolor.html @@ -0,0 +1,69 @@ + + + + + + UI Color Picker — CKEditor Sample + + + + +

    + CKEditor Samples » UI Color +

    +
    +

    + This sample shows how to automatically replace <textarea> elements + with a CKEditor instance with an option to change the color of its user interface.
    + Note:The UI skin color feature depends on the CKEditor skin + compatibility. The Moono and Kama skins are examples of skins that work with it. +

    +
    +
    +

    + This editor instance has a UI color value defined in configuration to change the skin color, + To specify the color of the user interface, set the uiColor property: +

    +
    +CKEDITOR.replace( 'textarea_id', {
    +	uiColor: '#14B8C4'
    +});
    +

    + Note that textarea_id in the code above is the id attribute of + the <textarea> element to be replaced. +

    +

    + + +

    +

    + +

    +
    + + + diff --git a/admin/js/plugins/ckeditor/samples/uilanguages.html b/admin/js/plugins/ckeditor/samples/uilanguages.html new file mode 100644 index 0000000..f428fdb --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/uilanguages.html @@ -0,0 +1,119 @@ + + + + + + User Interface Globalization — CKEditor Sample + + + + + +

    + CKEditor Samples » User Interface Languages +

    +
    +

    + This sample shows how to automatically replace <textarea> elements + with a CKEditor instance with an option to change the language of its user interface. +

    +

    + It pulls the language list from CKEditor _languages.js file that contains the list of supported languages and creates + a drop-down list that lets the user change the UI language. +

    +

    + By default, CKEditor automatically localizes the editor to the language of the user. + The UI language can be controlled with two configuration options: + language and + + defaultLanguage. The defaultLanguage setting specifies the + default CKEditor language to be used when a localization suitable for user's settings is not available. +

    +

    + To specify the user interface language that will be used no matter what language is + specified in user's browser or operating system, set the language property: +

    +
    +CKEDITOR.replace( 'textarea_id', {
    +	// Load the German interface.
    +	language: 'de'
    +});
    +

    + Note that textarea_id in the code above is the id attribute of + the <textarea> element to be replaced. +

    +
    +
    +

    + Available languages ( languages!):
    + +
    + + (You may see strange characters if your system does not support the selected language) + +

    +

    + + +

    +
    + + + diff --git a/admin/js/plugins/ckeditor/samples/xhtmlstyle.html b/admin/js/plugins/ckeditor/samples/xhtmlstyle.html new file mode 100644 index 0000000..600cddc --- /dev/null +++ b/admin/js/plugins/ckeditor/samples/xhtmlstyle.html @@ -0,0 +1,231 @@ + + + + + + XHTML Compliant Output — CKEditor Sample + + + + + + +

    + CKEditor Samples » Producing XHTML Compliant Output +

    +
    +

    + This sample shows how to configure CKEditor to output valid + XHTML 1.1 code. + Deprecated elements (<font>, <u>) or attributes + (size, face) will be replaced with XHTML compliant code. +

    +

    + To add a CKEditor instance outputting valid XHTML code, load the editor using a standard + JavaScript call and define CKEditor features to use the XHTML compliant elements and styles. +

    +

    + A snippet of the configuration code can be seen below; check the source of this page for + full definition: +

    +
    +CKEDITOR.replace( 'textarea_id', {
    +	contentsCss: 'assets/outputxhtml.css',
    +
    +	coreStyles_bold: {
    +		element: 'span',
    +		attributes: { 'class': 'Bold' }
    +	},
    +	coreStyles_italic: {
    +		element: 'span',
    +		attributes: { 'class': 'Italic' }
    +	},
    +
    +	...
    +});
    +
    +
    +

    + + + +

    +

    + +

    +
    + + + diff --git a/admin/js/plugins/ckeditor/skins/index.php b/admin/js/plugins/ckeditor/skins/index.php new file mode 100644 index 0000000..e69de29 diff --git a/admin/js/plugins/ckeditor/skins/moono/dialog.css b/admin/js/plugins/ckeditor/skins/moono/dialog.css new file mode 100644 index 0000000..76c4651 --- /dev/null +++ b/admin/js/plugins/ckeditor/skins/moono/dialog.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%} \ No newline at end of file diff --git a/admin/js/plugins/ckeditor/skins/moono/dialog_ie.css b/admin/js/plugins/ckeditor/skins/moono/dialog_ie.css new file mode 100644 index 0000000..1474e90 --- /dev/null +++ b/admin/js/plugins/ckeditor/skins/moono/dialog_ie.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0} \ No newline at end of file diff --git a/admin/js/plugins/ckeditor/skins/moono/dialog_ie7.css b/admin/js/plugins/ckeditor/skins/moono/dialog_ie7.css new file mode 100644 index 0000000..ebe0b78 --- /dev/null +++ b/admin/js/plugins/ckeditor/skins/moono/dialog_ie7.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_title{zoom:1}.cke_dialog_footer{border-top:1px solid #bfbfbf}.cke_dialog_footer_buttons{position:static}.cke_dialog_footer_buttons a.cke_dialog_ui_button{vertical-align:top}.cke_dialog .cke_resizer_ltr{padding-left:4px}.cke_dialog .cke_resizer_rtl{padding-right:4px}.cke_dialog_ui_input_text,.cke_dialog_ui_input_password,.cke_dialog_ui_input_textarea,.cke_dialog_ui_input_select{padding:0!important}.cke_dialog_ui_checkbox_input,.cke_dialog_ui_ratio_input,.cke_btn_reset,.cke_btn_locked,.cke_btn_unlocked{border:1px solid transparent!important} \ No newline at end of file diff --git a/admin/js/plugins/ckeditor/skins/moono/dialog_ie8.css b/admin/js/plugins/ckeditor/skins/moono/dialog_ie8.css new file mode 100644 index 0000000..566f3c2 --- /dev/null +++ b/admin/js/plugins/ckeditor/skins/moono/dialog_ie8.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{display:block} \ No newline at end of file diff --git a/admin/js/plugins/ckeditor/skins/moono/dialog_iequirks.css b/admin/js/plugins/ckeditor/skins/moono/dialog_iequirks.css new file mode 100644 index 0000000..f8887c7 --- /dev/null +++ b/admin/js/plugins/ckeditor/skins/moono/dialog_iequirks.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_footer{filter:""} \ No newline at end of file diff --git a/admin/js/plugins/ckeditor/skins/moono/editor.css b/admin/js/plugins/ckeditor/skins/moono/editor.css new file mode 100644 index 0000000..9616d79 --- /dev/null +++ b/admin/js/plugins/ckeditor/skins/moono/editor.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_button__creatediv_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__replace_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__flash_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__button_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__checkbox_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_button__form_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__hiddenfield_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_button__imagebutton_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_button__radio_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_button__smiley_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__language_icon {background: url(icons.png) no-repeat 0 -1176px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1200px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1224px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -1248px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -1272px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1296px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1320px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1344px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1368px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -1392px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1416px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1440px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1464px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1488px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1512px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1536px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1560px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1584px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1608px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1632px !important;}.cke_button__print_icon {background: url(icons.png) no-repeat 0 -1656px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -1680px !important;}.cke_button__save_icon {background: url(icons.png) no-repeat 0 -1704px !important;}.cke_button__selectall_icon {background: url(icons.png) no-repeat 0 -1728px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1752px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1776px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1800px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1824px !important;}.cke_button__specialchar_icon {background: url(icons.png) no-repeat 0 -1848px !important;}.cke_button__scayt_icon {background: url(icons.png) no-repeat 0 -1872px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -1896px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1944px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1968px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1992px !important;}.cke_button__spellchecker_icon {background: url(icons.png) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__flash_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png) no-repeat 0 -2016px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/admin/js/plugins/ckeditor/skins/moono/editor_gecko.css b/admin/js/plugins/ckeditor/skins/moono/editor_gecko.css new file mode 100644 index 0000000..66de2de --- /dev/null +++ b/admin/js/plugins/ckeditor/skins/moono/editor_gecko.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_bottom{padding-bottom:3px}.cke_combo_text{margin-bottom:-1px;margin-top:1px}.cke_button__about_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_button__creatediv_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__replace_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__flash_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__button_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__checkbox_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_button__form_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__hiddenfield_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_button__imagebutton_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_button__radio_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_button__smiley_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__language_icon {background: url(icons.png) no-repeat 0 -1176px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1200px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1224px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -1248px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -1272px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1296px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1320px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1344px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1368px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -1392px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1416px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1440px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1464px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1488px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1512px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1536px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1560px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1584px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1608px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1632px !important;}.cke_button__print_icon {background: url(icons.png) no-repeat 0 -1656px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -1680px !important;}.cke_button__save_icon {background: url(icons.png) no-repeat 0 -1704px !important;}.cke_button__selectall_icon {background: url(icons.png) no-repeat 0 -1728px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1752px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1776px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1800px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1824px !important;}.cke_button__specialchar_icon {background: url(icons.png) no-repeat 0 -1848px !important;}.cke_button__scayt_icon {background: url(icons.png) no-repeat 0 -1872px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -1896px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1944px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1968px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1992px !important;}.cke_button__spellchecker_icon {background: url(icons.png) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__flash_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png) no-repeat 0 -2016px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/admin/js/plugins/ckeditor/skins/moono/editor_ie.css b/admin/js/plugins/ckeditor/skins/moono/editor_ie.css new file mode 100644 index 0000000..a7ee066 --- /dev/null +++ b/admin/js/plugins/ckeditor/skins/moono/editor_ie.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_button__about_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_button__creatediv_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__replace_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__flash_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__button_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__checkbox_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_button__form_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__hiddenfield_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_button__imagebutton_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_button__radio_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_button__smiley_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__language_icon {background: url(icons.png) no-repeat 0 -1176px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1200px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1224px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -1248px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -1272px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1296px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1320px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1344px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1368px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -1392px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1416px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1440px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1464px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1488px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1512px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1536px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1560px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1584px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1608px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1632px !important;}.cke_button__print_icon {background: url(icons.png) no-repeat 0 -1656px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -1680px !important;}.cke_button__save_icon {background: url(icons.png) no-repeat 0 -1704px !important;}.cke_button__selectall_icon {background: url(icons.png) no-repeat 0 -1728px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1752px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1776px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1800px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1824px !important;}.cke_button__specialchar_icon {background: url(icons.png) no-repeat 0 -1848px !important;}.cke_button__scayt_icon {background: url(icons.png) no-repeat 0 -1872px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -1896px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1944px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1968px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1992px !important;}.cke_button__spellchecker_icon {background: url(icons.png) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__flash_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png) no-repeat 0 -2016px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/admin/js/plugins/ckeditor/skins/moono/editor_ie7.css b/admin/js/plugins/ckeditor/skins/moono/editor_ie7.css new file mode 100644 index 0000000..3ee1737 --- /dev/null +++ b/admin/js/plugins/ckeditor/skins/moono/editor_ie7.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon,{display:inline-block;vertical-align:top}.cke_toolbox{display:inline-block;padding-bottom:5px;height:100%}.cke_rtl .cke_toolbox{padding-bottom:0}.cke_toolbar{margin-bottom:5px}.cke_rtl .cke_toolbar{margin-bottom:0}.cke_toolgroup{height:26px}.cke_toolgroup,.cke_combo{position:relative}a.cke_button{float:none;vertical-align:top}.cke_toolbar_separator{display:inline-block;float:none;vertical-align:top;background-color:#c0c0c0}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_rtl .cke_button_arrow{padding-top:8px;margin-right:2px}.cke_rtl .cke_combo_inlinelabel{display:table-cell;vertical-align:middle}.cke_menubutton{display:block;height:24px}.cke_menubutton_inner{display:block;position:relative}.cke_menubutton_icon{height:16px;width:16px}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:inline-block}.cke_menubutton_label{width:auto;vertical-align:top;line-height:24px;height:24px;margin:0 10px 0 0}.cke_menuarrow{width:5px;height:6px;padding:0;position:absolute;right:8px;top:10px;background-position:0 0}.cke_rtl .cke_menubutton_icon{position:absolute;right:0;top:0}.cke_rtl .cke_menubutton_label{float:right;clear:both;margin:0 24px 0 10px}.cke_hc .cke_rtl .cke_menubutton_label{margin-right:0}.cke_rtl .cke_menuarrow{left:8px;right:auto;background-position:0 -24px}.cke_hc .cke_menuarrow{top:5px;padding:0 5px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{position:relative}.cke_wysiwyg_div{padding-top:0!important;padding-bottom:0!important}.cke_button__about_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_button__creatediv_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__replace_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__flash_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__button_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__checkbox_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_button__form_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__hiddenfield_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_button__imagebutton_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_button__radio_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_button__smiley_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__language_icon {background: url(icons.png) no-repeat 0 -1176px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1200px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1224px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -1248px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -1272px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1296px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1320px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1344px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1368px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -1392px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1416px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1440px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1464px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1488px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1512px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1536px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1560px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1584px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1608px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1632px !important;}.cke_button__print_icon {background: url(icons.png) no-repeat 0 -1656px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -1680px !important;}.cke_button__save_icon {background: url(icons.png) no-repeat 0 -1704px !important;}.cke_button__selectall_icon {background: url(icons.png) no-repeat 0 -1728px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1752px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1776px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1800px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1824px !important;}.cke_button__specialchar_icon {background: url(icons.png) no-repeat 0 -1848px !important;}.cke_button__scayt_icon {background: url(icons.png) no-repeat 0 -1872px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -1896px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1944px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1968px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1992px !important;}.cke_button__spellchecker_icon {background: url(icons.png) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__flash_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png) no-repeat 0 -2016px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/admin/js/plugins/ckeditor/skins/moono/editor_ie8.css b/admin/js/plugins/ckeditor/skins/moono/editor_ie8.css new file mode 100644 index 0000000..1f4dbdc --- /dev/null +++ b/admin/js/plugins/ckeditor/skins/moono/editor_ie8.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_button__about_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_button__creatediv_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__replace_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__flash_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__button_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__checkbox_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_button__form_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__hiddenfield_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_button__imagebutton_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_button__radio_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_button__smiley_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__language_icon {background: url(icons.png) no-repeat 0 -1176px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1200px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1224px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -1248px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -1272px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1296px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1320px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1344px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1368px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -1392px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1416px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1440px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1464px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1488px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1512px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1536px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1560px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1584px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1608px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1632px !important;}.cke_button__print_icon {background: url(icons.png) no-repeat 0 -1656px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -1680px !important;}.cke_button__save_icon {background: url(icons.png) no-repeat 0 -1704px !important;}.cke_button__selectall_icon {background: url(icons.png) no-repeat 0 -1728px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1752px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1776px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1800px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1824px !important;}.cke_button__specialchar_icon {background: url(icons.png) no-repeat 0 -1848px !important;}.cke_button__scayt_icon {background: url(icons.png) no-repeat 0 -1872px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -1896px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1944px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1968px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1992px !important;}.cke_button__spellchecker_icon {background: url(icons.png) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__flash_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png) no-repeat 0 -2016px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/admin/js/plugins/ckeditor/skins/moono/editor_iequirks.css b/admin/js/plugins/ckeditor/skins/moono/editor_iequirks.css new file mode 100644 index 0000000..6585f82 --- /dev/null +++ b/admin/js/plugins/ckeditor/skins/moono/editor_iequirks.css @@ -0,0 +1,5 @@ +/* +Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or http://ckeditor.com/license +*/ +.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_top,.cke_contents,.cke_bottom{width:100%}.cke_button_arrow{font-size:0}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon,{display:inline-block;vertical-align:top}.cke_rtl .cke_button_icon{float:none}.cke_resizer{width:10px}.cke_source{white-space:normal}.cke_bottom{position:static}.cke_colorbox{font-size:0}.cke_button__about_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_button__creatediv_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__replace_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__flash_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__button_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__checkbox_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_button__form_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__hiddenfield_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_button__imagebutton_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_button__radio_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_button__smiley_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__language_icon {background: url(icons.png) no-repeat 0 -1176px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1200px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1224px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -1248px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -1272px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1296px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1320px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1344px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1368px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -1392px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1416px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1440px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1464px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1488px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1512px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1536px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1560px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1584px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1608px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1632px !important;}.cke_button__print_icon {background: url(icons.png) no-repeat 0 -1656px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -1680px !important;}.cke_button__save_icon {background: url(icons.png) no-repeat 0 -1704px !important;}.cke_button__selectall_icon {background: url(icons.png) no-repeat 0 -1728px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1752px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1776px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1800px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1824px !important;}.cke_button__specialchar_icon {background: url(icons.png) no-repeat 0 -1848px !important;}.cke_button__scayt_icon {background: url(icons.png) no-repeat 0 -1872px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -1896px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1944px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1968px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1992px !important;}.cke_button__spellchecker_icon {background: url(icons.png) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__flash_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png) no-repeat 0 -2016px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/admin/js/plugins/ckeditor/skins/moono/icons.png b/admin/js/plugins/ckeditor/skins/moono/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..1ec992d9220ecaf92dd8b8f462ad43b0eaef2f8a GIT binary patch literal 20833 zcmYg&by!qgwD+Mq29%HfMhYF9LZ^Vf&`@V5LE4H2tvJ^N7c_nDe*hh@&_l^h~Ux_8! zf+W%+V~#j6ejcB}TM-kx{W&%|R*cZSXS3vwD5uPynOZ6R`0?JSboc1;6Pd2NJ~wJ2 z^ySQZb7Qy2S0mH6_#(r1K;n#gz8sxD2n&T8nn(RZI4{^3qPmuWCaqv%V)De)l(s~V z!fl|3ddZr7;dd55p>={DsfCS9dX ze=j>b`=l5j-?tO7x%1y-of8i`C%7psZv|fc{oZJ4Y01XLRW`JR2SG4v(!tlCKM8Cf z9`(KF{PgYHH_uU4?-Qa<1G*sYaNQEr{gbq`G;2miMmu|ZQP0EWocXA{Q2{D$C)}c zgqv;KeQV-DQMf1qA@qc!U7;R=VtDa_ULs$wg(bWYOn=cCLy11`_gz*?ECH#iq@;wU z0q)qBrvonyOQ>zdD(`tuZ|`5P z>yvTrqswawO3K!W2@2Vd#PSLX6|QUQ)%4hv5OqqQ0vp-89yiw)FE*0NxlNCokB3y6 z9y^SAmFR6{9jy(J_owo+p0@;}p+JG}`xLG+F=T@1v9ZHtAs$NUg*W#(0`^>LWj}rT z1lx&yNJLGDMPWHiX{kbCsUi}$ba8Pp{krKqU%m#>9jeKOE<@aM)W9ww;a@On-;u=r zR2t#6oS<-{ZDMl0_5mG<9nef?S}r8;dbT07y}i9*ZjbxOOZzd%j^^G31hghNp zH`VglGphbfv2g`NI?@gcMld!yN@M5X@Tun=D^?E4H<&-Y5W_v(VBS;8&Iv#0-PYFD z92q)Fa&oeG(3=lx^l)KnLdXeqpTDzcXlTf&xVU(5czB65SIbado){Y))v10)QC(e- znU&RSRhZDGlCqpd#OG9$d- zNovf%8_jZ?L5BFx+?-TmX67|i)C2G)l3~x+K3^nFg{k?J;*YBn}IwOlm z=WpM=bB*B@%+qHf3oZg1Ts5UHJRFal7U}-Uu4d=2L;2^TqK8DVDtV53(V-Y2^z;wfjpnnvb!s*~Wysu~YEuS9Ib+V$d<_ zJ|xU>Z5q!5%Q+*eeay(Xbg(g85V|Cc9xC(CPZAv!<@n@;0ThBd-!n(gk!NeGtAw*o z?F8SSci@Wp{d3~Ehl}Ck>x&k6wL}-HlEU?w?s{F}!82K5tkup=c?~^1vZCVRa4cG{ z`C?+MF+yk<#gDKBwetfX{>b-8B#*<`BVw4~>)BuYosL#9{gyE%&ttALc*kU0sHtIeIeQ)UuwpTO%jE_fV-(Ib;t_@@dKG8wFJl(;&Iv)sJC8QDkNkB;W+{+780m|-y z0iv0}+v|_)PxBwy#x&-)*J8u%8FLkoc0{mDW;i*lQ3WwTs^vQJ1{0s+kFDydSTpb*BFMOm z?fUxrXOhy>FALtkCz}Ghjf+Oa#Y$fQ^$h}^>y0?>&V3U7Fhku|6v798UQT{nVG4T9 z(|Ovp9K`$MGRt?@dwT06ZQ4;NFZ6cTv-wi-d+!56dXI_h2M->+1XV{4fnGeCHaj@T zi#q=Rs{aH_aJB(;6Z}Ts$+aW*yH4`!_ix$^Nq|?Hi!fF(OK2*Xr1&@8$#=$ zCLUxrM=k#n22RsEH#aor_ljHC|S($GQt%uB=oHRAh z(0F7zNNm27QCPNx-NUm~HIMQBEceGLs5#+zRGh(^4lBM!iWKRPHyuI28XU(B!M`A{ zxFxIf5PZ@gs|{b(t^7wvv^Zk7Wo|cyCq3A_O)n?;rUNc_6qSeggutGk_Fl{E?(Y7R z5l_z}DvArLfjLj1$eu_2f=liEnL~_l0{T@zAc8^KIR5nVni#z_^@(S{uF>}~35`6O z1$mQmLaZ+5i#2y_Z0*a(31AyBrNSWv2` z{QX|O#DDVS$t$P~Q?uph%JZdQ`YR_V;+2&Z+qNyc{WYoE^TEVK5;IFnMsSxBI-Y+7 z9Z%ceUjjVJq|bf4dFa!5ela*W*tNB}DSsUhDA?uvLz8Vp-^9d!<9sdK6S8|dYNVt1 zW<>*WObat%$wf4wQm8ct5m{mbhbrv+3fFH_9(x9inE=asp__fZb* z4r|NH`*Lz}plyJcfF)usV6omYW_X*FbbRdu7n=2261zLt`};h8l5`L#s+*VjBV%Jj z%RTRu)WVQWho9)K?S?@&jMLH4A%?81tkyl}ll4uNs;a7V3=IB-y@50kW{kOVhK7dd z(2Ex@F3>?Kn(;g8PmfX@PZ)hENDAfU=Wmh%VDiSu(1vZBf7^b$_W?HwE#FPUL9 zn&3AhUcKTp0b95tTUCHY8nNZrbiUdT>izDg*oSRVb|z1s4zCiaO0$sE|M-Z8Pw`Kz z&A#do(nBqb(<-^w!nYoC=zx;ZeAvtJ0<;D6!35^%x&z;LJqUecXAGI+BqQ_~Dtgna zp_HcYa86Ew7+!EnA5aN78WYZ2Z}@SdqvP(lk&%%dK!bZEg9HoXQQcsXCZ9fgrgAnH7+6!Q zx%~?i=6S|=aThw6NvUgNRc>xbQBl#~s6x)G=jo&N1g4%d?&XMz)hUP?K-F4RM0})K z3FLHRD|Iq2&tP6*;3k&5c3yb>u`Ag0>2Fu+0u?4Ml*h0cs=~NJbSwDg zma3>ofNX{Z?ARn>R4C>JRlLwg%`%Mfa{TqyKX?(Q zipZce)N$X8YCtr3YHmFJrolX^7Pa}6`FQxuUJ^Hc=YT? z$@EJ>Db^I;^nQ&}gNoeF6_<}yRVN>eO$QRJ4WB&eXy>>2#ddaiJyBuVH6Z)(k0#i^ zXRidQ;;2Pj$|@_5d}Au+5RB#|=nJ(XuB!riIyzRT$H(-<*g1K5=zEQ4v+F9{jo&4> zx%X^3CyXb$W7{)GZJ6_djuV<^^Bg^ZBAAMD;;&y;q9P4<5#{GU z(wEGBjqngTxxAh&DJdbRv`k}@82tH$vL(*@Xm#|$uPHi&9-A=olR4O$tSBQW6v&QN zI7GG9pRVsvVK6J{wLkwyY_Ea;dG%EF`1p8=%=hEci1l@{V1-gW2Mq^@t>0;B4+h?I zKBHye-PaL?N$|O@s+xhqqyX-%FR_rS{p1g$QcI>?mMPb96VF${6q!#tLtWQ?&&VMZ zqShOyr>E(Eaz?|E-3v~_ga_ic=s}Y#?_OwtJzl=Nb#ijz`K)w|7U~DC^z~IyC?A;X|KL&F7znlj;>GGokfI*@d@NGnQiU(6tOEbLhWc zSzd-9F4G1ixvAFzQ_u_I+we2UODscLUtgcxOiPQm^vjnQ_(Lq%&^PYpKeMxr5+2(V zgT1}VDAJ!J?iY_LBfg_UiqkUp;z)<8n7@6B#uO0|!4c#7!fEzK5pQmv7!Q<>Ue9o8 zu-e?!I9mAHLnDFj^1shGjtj_i)nPPlX{G1jGJWm}cQL6j4-;x#I_NfYcaQWlp;453 zD&3J_`t*aJL=jBB%1kZ=E!FZf5x^&qd6c^0j3kn0gj&+C25)KV73c{`UmxRoCO69lZnEI0TbMkbqsJ;f`UJ=q3$yUS*%A& z>(aGDS&$|abE_LT_xEpIer~QTPW<-S<$dz2q@;TvR9SdBTPWmgZCQW3p1W~?%vK<< zeXZOL4Jkuf>Ct6^2G-i==X0EvVuc*97s;Dz8mp^4N48F6aeqY}9=a^At(9Xkd252b z|A2}rbbKp(U@f$7rEPwGes`rW=K5Jo+Qx^ z09nn>kEv6>&YN`J({#F<{m6O+dHE!lfMzoo8#Vo=hA0IsjodaUY5gU+#}{31+)`)O<;;(5r`PNwJ6lVwSm7kv8*yru-ZIze`DhkU_@sbzoT=89> z2yM7r=&Ly>@M*K90&k)rRc~+aEf-f;Ky>H5oAL_^);s}z;XV{^mL(3`_+~nf(z0~$ zFSIp>9n=cAWeFQQ`->Ou?(RM=-)f#pac~p^c(*SWQ}K>Nzib=O)6l7%(}(3QphU$j zFE86P&&7ZI$N*UCJu)TG$R_R{l#tTYOx+ka_2rxah)@8CE*8jyct+yB*k!8l@bLX}zYn~Y5opq39089| z-*0Yi4%E*$=6(LWa~~ZA+{C#L*ujs73p6~jL!5ROBIyGDt{sJg&9f$B>l?up3^<~g za2(ik^F0v}nB{YOQYqQlM39+ASW81)UEPE7@#x^-;4#atxa+nZ4{{7t6xDRWog?fm zRSDENCt>Ouzw^V-ZEbB!fEP>cx{1aU;N$-*P|w_iaw_a1iOz;qR8(Hq`JM9t3RQIm z09;~9Xbq5Ro}{Lx#zIXf^W#2hSV6bX^z`Hbjco!K>hQz7#HebM92~!-)Kn$N-p#>R zJc}GH81fd+I%_M34OWZO5{1h$_}rYYtvy*XZ!?GXXZ8Y8Kwm;or0g3;iOXx7EupkL zuV`_sW@KmY+2`lmKT{Za!9{YQTUt~!lsSiqit^22njo4WLE1in)nqI&&H#bVvd|+1b#WRAO0fyLlb6Jb4%i zLq61P`y}+Fl5ry~z^zv;BeYPyo+r|5M)D7PflTfx;=15%p#ULw!AL5F_Dv%wj3Y7uE>I2+54DsxFG)W_yu-MY%I!i zo{!&C`E5}t$Sv%(@^8u*=&?wj$9P*0GN-qU=Bi#xz)R!sYjYb^7f<4_*b@hy5NqD5 z%{cPS z36_V-Iy*ZF;TNTDW!8VczYqZR!vmhCj@SVTk1dKDN;k@PjfD$P`=`j8_QT&%2-W%X zv$Nw!-5kW9@paCk?0?S4$QTBqjx{6@@sN11ecaf!-v*LFc6Nm{G&Gn81l+(LXcQdb zLBY4zbGI|{h(7pVX+*Q#%a_wHD-3ASzW%na8bTuyrx)tNH}86_NP2CLvCc$ z`X$pv@hp9&5b5Ci56J`+{|e{BC}@4@pp@ftq?;-E0-@SKf0l$;mrZ4>ebsY7hCo%D zXb!x60*%YLJRfST?0CLmSY>~|>c@}Wjjb&)Swza^#YNnA@bK>G&-wYMKNpu1toz<; zsi^eP!tGgkkDnzRPtFbveY4#d`W)81J_rA0bJXNeRvQ5T{W)&b3-9~Hu-lu6SM^pUMz^xIezLta57D!;Z@9U*@KIR8 zUNA7hQ?#|U=beP%Lwv4~IbUj=Qjw~sq*aAMQ%YiD$ou#2mlno_q4n);aX0W2o4~dg zgvw<{@YJDdCT8ZH!s6m*vIuaNUDVM%A!$Tvz2{zl&&lTKC|NY~Wm`BN5Z=0f{X$q+ zFtDhlp?6XMP!_VgyNd-~Nw=d|ZVxqh9|ere%t!!UQsWNjL?$@QjDS1dN?i|2y~1+3 z82YSISXe0S>|DWeT4FPznp=4rN<7!A4b|tdI7gFlUPu8fgrQzQ+7(aN1-5@6G>_6K zIgA0D`TO^;&yTvgG=Ss_b8>&rMwph2}9Y2i3gM}qE5 zKNNz2bgr)N?d#K*Rb4;g#-5_@hyi@< ze=^$p)S%9d-Nb!V_wOsVmp!71=_tEa(^KJGDTnDoeK*8oEpi zkQF7*Y6o_(_DztvyMsV_1Kp*!Ef44IvW$(5O(~EC>4^cDZ2`9!l;F!7|FfAhxTPw+ zvnBG+^z_yHuBG6vrT<ei1nXwGid0&es@@b<<7vIU}*u8z*1 z5DdKkEF67(1#sSz-oN*-xxKmGLFCc#MtKJS)M%8Pzy3fMSOVaOQzpJZ2{aFcx^l#qlMXnE}+pMngjbZiHUM z*8^-IhJ#fOIr9=%R8|fV_frcCde8tCvTsG3Y?<`LB|)gGVs&-(DOf{hU|Wa}bTLaK zdTFK8`#sWb?>1I__SG_LHE8+P5n{Iray%3WXXk^@ckj(JElKuXpxg&P>cq|cg^0qi zq4l4s4=8!e=iA|02eS;x7&$an?&3$k_`4h%4muMJJiP%n(kM4=tV4aiUhO=w;{ngD zLW~r7il0tcnk6-rkM>)pzI!LP5Ka291d|y0`W{&WnxtX@mr_YzH0j1>?>iPXpSsf0 zSS)j!nD7x=Egu=C2Mm9Qn+fTYl9Nx|)YJ&}&Mt2wk;+z6&wzV#X}6`TZ;~9a_%mt_ zFC+-GcT?i9TkoyX>X(osdakg0k4_X@=u*vX&%nSM9vBz_b+~P0&3oIlkyuNpVhE&7e=MNFxRsfdi%?E#+YTuR`Hr z@heoAKf&TqR}c24Q4-2O(2ANLqcg$PfBx3OfFgl3@7xP;meP|EX<6PlwV-2L;8zv^ zpxZH_Dq62HN{o&o=DGXxV5y6e2-?`#Sl`{%!|j$~hJx0-`%iV@sFwH}8@cnVC^_Zj zL;%(Pl}r#!dH+7nSJB4SmK0W1G{xq?)Obp&Roq}LhXZe=m{LaIlE+k(LZA^Mf#byp zP7vtgKtcsi0`X}{O>+a?TEsx!)6)|%OkugX{v=J{!60=O;}2kb#T~G8kF=#h5YT<4 zZERS)vh-uzBqSvMYSI?1Q4fXz?_@)e;mTx^EPT|UOE4U*=a~QF859)CoBwE*HJ7N( zVjT;O4!2aZv6l{gs_FPMx0bJOJ)e5o+xrC-6$wVqo+m1pTxnWe}3TGR5@2++*}H+xnHt|D~?(Li&SNn%4;n_X$@NPl-EV3VThL zgaF}bJI^bqsl~eJH$GB=jEakj3W2Y6wF^mS7&*&V6qJIOdI5pvv8TSUrgiiz3v+~C zvqdRDk2;2iUpze_`q{lRPgDbVE#W^D10CbiOo1090T;vB^3x^@cj}A=nlNf+^=>am zc^=q?Rr$EL#;8ho3KSnVx3-9M_4J0ovYd6}U5REd_2UNK5k+<>sapufng7*qAc~^o zM{-Ka@M?d0c8vZXK*2}=u<}C2sYIz>-zSBFp4~m<>2w79Sc)FI?F)inID|f<7d&dA zs1FB1$hP;zMuCH?iwh4APmnZyj+kXa>5ce6`-WR?K>?N!;MJy*Qc}$xH0%TK|6dm1 z;&?;YS1+cR{W3+-p&wMBo}M1i+qFVSe8g#0vn6TH&(EtGdaPuDe5$QY@`wx%Tm?{G zL1RJ)M-&NV)P=MH$N zsrAF)MpBlY_@tf5{j^Z^uMfQK2*j3yy?q?Q;WtO~<;-4I;uwV^I~P|z0O*6?tosUU zYCb^IvWV%ufV297JV}%szTd2@tmA@$f}k>c0z?ETWV>T^-@>Oo^O!r@Y^JKNUKUIL zHX$MS5*#8L2>5ktCS2rJYs|o*xw`VBg?7Q&^5o;=BbI4-DM)wQPIse;0eMb4cZoGN zHUbg+=lnc9uqvIqXgnLxpum6abVa{xTz|@A-_c$z>)o8->$%9z171$sZk;L&I!A=9QJpEMOv70|~M6Vcgg^+Bk>1?ER$w(jw zUJo6x!s{M8K0(90X+8Kj9VHyMG}a7sM1Q99JXRkdl?nfJp7sF_2?>mIm|wC(t2Jvz*`nv4Q8?kKvqe(%Nh7P<)hYTLGGahE9lp+ zU%r%pW)$e zXREu)pzs*MEbQR){z;!(%0S{W6U=y;?aE4&w_ zfnlaG8u@-?eEhN|BZHc!^X3DRjTIgU_(C>vI;LX$^9&~GU(T;U3w*viU3-M0RpNRO zR`ejI;%$#r+iat+To9X%HL95sP;WyY!J^W>eEqtg4mqlX1^Ik7CPsGxV2iu?>hMlK zyL|^Gr~#V7BlB(DyV2D7H?S{q5B1Ib-Pvei@NdUwXTDL25YyTOINozWC;lNq9XD%I z?@?uIZA}v^ANG@`#|FNLau+z*w*YqT<+ext-ra_MUSV+I36$NegalYJ5?7y`oV+=D zrruL3IWf@%8&YD&U0Ie^9xmr zDS%mt=azOj)C-Pg!G#fkOoP**BR2dH2x%gDO22vm1RIkE>8MnC>=t1Cv8T6rRsD+B zu5|#0)Q(4eLZ|ah}R!Vcu5n z?};l5Dm1<`Jv3^&4HnNX#VQ=ex!U8bKp+X@PI?OYUumB)vT6I#Fh)_9h_cd{$M><8LJhNdw!kOWV*#shy+-xXskzSPA|%*0QJSH}fX*B`9v z5+{+hhg8LqL=ek69FS+g!5YU$M+MRX-&H{Kw_!oYd-^j|{O{oouxlNeDB^@>za^@< z4}UEEwkx`BaLd0npfJ&5NoMbr??1eqx%rKW57EhpkM0Mm^9RY{fsoI-OD*+KPMYsR zIQb9<2Zz24bBC?{a6l?gB7z2QQ*{Pydq<&OxUuck}S@xLFly-oX4Sl7UU{ z7$v$+O1FEr3>a$3=RQ@Uf_3o4jD z@Gv&EV})iFfh^3F-oH8t@G7D9jxBR;v4exd8A^@DOjtgUb!>bAY&T8mOCFz_i{IUK zbaQi~HU=lm2YQxlYP;Q^o11&B&8kAv>b%Bn+VIa1o_5p09dHnPxm*9b4+NCNawlWW zfUTPjn8pAHD@X$QfGp2bu8M#2ptX;i0GoRg)IfL`Mlog(D2YixMygd1(bCcRj`3Vl zur^aj{PyZdgxJ;Dje$?JeH7UF>B(jQz+GVknSD|D1>~*rA3w$_ofc##%gTN)oLcGX zj($>Rr4{$uM-M7yaO}f^?u?^djSZGA!5aY`RhHyXtEcoqr`cflaypirL0 zFAx41EXfhMi$Hf;HwlT<;HM(xUzTksOE}V$mUEUd1U#KhSh{(Ejh0r3lWcA46iM#z zF1nN&EgtVfD{bMo?GrODeVp~PV8=#-E;4yPKB%)^C+?>LVh-+%Hd5`j=||RbwnCSN z7z7Ub>{B)n&U^5Po0}DRS)XLHMG*5kSnx7f1W=F;piCSC1Ck!-_Uw?ZUh#cgl;oYl zhu|SO0RcfVu(#`>62Vl}X1iCfN)y_x2GWHFY$^-{d)qBAA)srzt^T4cZeN%f9vaeS z?ve$9y{x=Eri+UUJ$A@9EI;6b1DGJ}yomnp6DdlIC4h8=iKyR0c_S7VpF==eK(ZKR z(_Bl}2!TPbOtMgAkqvdWXZC1$kL>g7&TGMOm4nAZV3ocvbnGL>Y^!M?K7Rfsp~oMl3yoZ@?n)1hA6U)i_{Vw6GASFjB!ZN|LaWLB{HqLvJLzp z-Z_3`w-REYnCyj@x%hS_Bux+J?#zxbo0(FLA*!}-^QU(WBD$dMR$Q0B7PCrdW_&P( zi{(PMe*Z05>GMIrYe|FV;PRVl(t&wJIY6nwEE=(oBK{|Y4E!3%pWc53l4 zVGQZ|7G(rAY300A46h8WY9hrEy|HOVTz!og$dJlG%5B2JC%^ayCfMp&nFBD`XF+l3 zXMmWQR=rcmA6BoQ1e4$j0RPuv=yf_Z?t5O3U|yTVI6Zf|ZXX%L24K?oMI&cXKmbRy z=r}lTR+zx>O?b~wTV{T2ATmg5(y_5|a;nu3S+VWO01c%4m-6#tnO|psE^2I``Mo`( z2RlX=`fcFDXrtiOX!=gzK4$JZ0Z_g~{zYbU3upc&5;8-6%RFaC9${fGRq%lb_#{^I=Uwvv{mIy-Hv8 z-PaluKNZUd94q4yrk#HI1}_vrZll3{E`eIR83dmRl4sqHodgKzt(AX`c+3>m0eyKR zB9lAJ^4Wy#bN?LsUYiY9{fYBJe_{<&Gt9RPRYDE@sFte8Nf_dLc2pGfX%oEH8+#{d z3C1Kp-a{_4TjtcJ5T!D3jj4ldW#7tQn1d-OzOvg z|E|y5IfRmdvj4VdR}T8k(>b)`aamO5F#Z>sE;h~-b+;b}L4o6k5V-rVfZ75~Cdwc- zw11$cf*wyJ0-lBThrmlj-8V1Top;`FZoGHW^?*?gRc*`u?w>-1B91=6SZLV5M6G;xXg|=#gGZN=p1| zznYEwbaCK-&@lk*qwE7^CXojE41{`Vac`8Kour1Jr+C)qnvj zqo=1QtG2$k*9DTLU0)Q*Z-1+O0L1=VW#!UtE^r^#x3=y~O5ywSOMlQI5MINPz+hj- z5&)baTsir%*b7FMIS{SL z)K(&pA$HoG7TKOFueu2<7n1)<5m87si;FN~Tcj}}1R1N=BfpVrRi+*5L!ZXG-wX(D zCyru?M)yY(S5lJe*dZz^sscIcj|yTDO2=~Ae42gv2gE@P&<2nx@|{|h5qDR-v4LXw zQn5d3_UU?bYpqm6;If%Dg_#DD{I}-mVOq&*kcNiF!27wD{S-xl>hrg4<06Ee+_UNbrj)I?t|BszsUjF$Hc_^`g*SEUy^04&WhFx@i7)YZQV^~ zakICXx0jcf_cL=o3M91ts8ed#%wsow0#_!GO8Mi*08%o|&1OO`+r!dw&IE3L9AVJE zF@<8z?+7^A0om5#=9>@E?!X-h9^M#X>Wr~h7;5xKt%GN@gt>?27`BMI0 zgVG{f9Su8eAFO)ZA!Jz_z4HU>Aj`T(?(jw)sMLj`vfmh=u=2oY4hA$`w{isi73eMap|U2p;&~frPz!)=aG&Pd+Egf~w$|`$ z<5#*+e3B$RTy2WNQq^NU@l;Ylx~a@DB%g6ai=e&yOZgE5g52d(2{F9J4PLwftdY&m zY0tX&94L9{8C(P?aa@6{-#Ft~PDe%MYB3!thPp!$FKUJP2Ya5qa&o)4q$CeOhPPnC zK;}3O%Dat(W82%?uV0_dbpfdlviy~rk`f7a{t}>6P?s}3yU8{GfOsefPU-3DKFQ3? zRHbADHrt>8FIBhUyV+YOD3-h^Ti@x`j52LV+WIPC1rB5`scC#I~T(n=B9wd9N{?dd55 zC95V`XFM`SDeUTd;JkNqo`jTt&`2Ms99;Bi6Z=F>z(?i=A2SpP|8JC~$ zwh4K}8nc8`1d^*9kZu)I)7dx>xz%{_f*pixO#)U^ZNGB}eam1S&3e4y8Jl=7p0a=<%;7m*=kKK}`Yh<9X)*6x*}1A}9uX7&_g@+fxl zvp3PvM6f}2?eI=+Ac?iL$--aNTs;L4HIfOAds;KIyY|bbk|h}d;=QBe;|`CW*;LlH z?|4YDI>XyG+(=-fDHz{2`FHNMTx)1j4rzzTwJ zf$s;T2g#t@40*_R??w~|EWa*@@iYR$Nia4t@^*ORs>yMMjSa&o0Ql&Q2)DetIwQh5 z=k&vS&w-9WKnRi7*VoTs?SBT-StcNp^18aJ>Ip(7ek_j~Zl5ys=%gna;nt2wvj7AD zUAepZt7UpoOvZRA+QK3VvwO63K^#^jbUDjNF2xKa7-qf$7GQup54q77vV|-ksOj#e&BqSx}b^B+nd3*OW z!!l9m>!xq9d}DynCjPc?egc!%2Nv|Tqs}g}P7vlD4I&Q9a|^z8i+F_dMsRKU)P;a8 zAC-s&1{t~3RMGrU9NaiGA2mhc!Uxw?A+9Wk6f1n8hfz2Z^5@kcR=8V(N#Yw5Q{e)! z+2;%o}YHk1N1jpvnJ)i~yr@4f<8B9VG46c__^SitQOU`#C^sJz-B@*zW|pwlS_HVz2a7^g}2 z3ija8dqbc>%LW8UQdk0pRt^NKXRuH!9Sf`2&1CW|chK&!TYfE(A%z zw1p8`P+EGrlCl>L#Kz5?;%NYbl``a#06->ST(`;WVLR#I zC)kYY^Q7EJMYm()Qqg83(KBM0zgDQJk%?-rgc$rY~q`s`^$6 zdPZS+%KLg-sv4X&$k<$(- zZzi;0OK=rvMD0vIzf;!lYg#{#D*Gx)k^u)i71Q47BTI0OL#m2dp%O(+cFQ(JWs}C;wn!-V`A}V~uqdvdTXA zy8#E6BFvRwcbJ7#My~sTAk9m-^Rhn(o>x!p3`QZ6&nytcJFn@u_CCRSz{E+4VidM+ z=fn$dsb}cHM5W|yEB*puTSWf_!-In3@hedAHj-nZ+ZFCW5qpBf+}Fp)$L3%xv(EY- z(8fQ1y)a|B6$@?6;Tt7t_kqrWa$i2imeRSe24#VCr&f$JY1F$_=xYTC_}#xt4P$4; zM%Li%X*SLcfLXyR(M!%>eJyj{*Sw{r;C=o z7Z?A;p|GSKU5GtR#|j!8)B@NM2F4z`kcHebG`y1TN*WpkAt51|OpZbvi5K))aTIgj zg1~6#M;t$Vu>@z%<6d6Ih)1gl{X&ufq669>ex?&jdYTip5w{_% z1^U6WmY`rSVT&pwrQRK1xDmri`UJl7mDv9m(I!^N<8Ih*Q-X%+^DP>%TBa7zffrc! z50uImYHDhhkQcjS{>v(2a861A{}VGZG-QVgN4`E6OpihWvoeaKWkHz1sj1vMC&<>d%78+UN|7xkfe6kW1g_9`(VA_DpDz!a|S-{kvme}Sui z6o8*ea-}mMv`F9~ISiQ`AH`2hogs9hOOUKA)0!ZS?KgBBGHS18z#WE14H+5I5!uu5 zSquy3j51Wj9HkS#^5WPejxGDs?L+Tu0;|Fy9la0x7LZ#94_S%Y#BCI0J$|-rU1Tw{ca4rIe-5 zO7;3Pb(ldkpJ{$URV*M9`*dmU5sEH-|t9akIkog>NVo5X24OEl$m7G7n$eB!t zb@dhNm_+eSEaojkH8yE6H+~1!OW;5FXr!%;3aQ0Z;3AbrnEmY^QE6e#5lLM+X+9MH zcb7F|&aH^063RmPQ_KR#V2Qm;VgwExUDbnF0X0kRloEd1c@;o`rV(tr&`)AdFjEu@ zP^L^u-$~AeIBX{C{rh}_B4DK*U($1O_Wy8M>3!>?K}EkA1Lzi8^QQ;9TxLxTi<`ye zv>fd0lo20r9%4O@Xt_B(_4tf47=bDRso&X;tG`m^z|>O*B~+&LjwMsnW80uv{NLMW zpB3hNrl*bXG9#eY=P)gr3>B>MZn{V#;sNN=QczHE>Q8&T#o(9|e`%{-uat@+jx}FB z^rZl1X^~F(y9o2f2zl~1!043w=kjvst{Jk**BnQuPG;!7TH-De@u9>FHOF(QGxjSZ zju(i46W@IqM@RKM>4pxxy6;T)e6joc`)q!>7rp5w+oDC!B>d@X)vgDu?EMdKff>7Xh>N! zhb~vW8^y_2NvUUlRNqX(11N9z>(Fz2#1Y?@!T8NJ2>*y;w77TN*Utb3EMb3!$kQx^ zwV%t03$=jUGLN+}?wBMWI zaQlF4`m8Th)Wh0Yq4Yu)1U>uHg@{1j3dC{uy~LF-)KaejxCD8tHk-=eCE@MaMyi>a zndiUjwzppbofY8yJFHya+uLiiRpAZ1zU%5)ABVC#T2Bza~W+k*3tq)k&W4TiU`MQ-@qqNFeog!@j`NxlzLHe z8#N`ZLdc?@^q^Z*7})gPZ|i%g#Ww9&oyaS456p_Ahoi|5pZ4{RZ=HZ#qMRk+x2YZ9 z40YC?R$g#baN2Y?LbB*^@WkZKsYH;#13CboLhf0}1}uS`%6(RS(7ymBK!HG-+UjhW zq0``}liBYpIS^8MDowIs#BKADHV1LoJL<8IQ zs7va`Sq03VP$DhhDkJE*m=k@!e|rFqWk!~RhG@`X58L|!9cm-ZGoRA>!84qzwpcV1H7-HHN zFJ}gmK?^57ydbCqxMat4-(wKd1Yw;KmL8C#1PIxw);Q>xtNU4Plp?^ z-3B=D?A=I*pJetS7np*{{rXjNZw7qs#9xu&fq>J>e&Ex3J)P_#aAr1s{Wya+0ze-y zljdg6MLc+RHw?4PS!M9(5MSOE9N@$rE75OYi3%7CNeAOeuH-0t{PFEtOargo7lqY( zcr*~bdd7`aY%iV@0%2>btUm65x{CqmCWMh_V7vtgtzZHM2rsfOF5hGoS+BWo7D8IdAB(!E#JA`U-hv zMFP6x>dMbUtBRP_p)rqPjto2meR1BK79{AE6*hu--z;W08QQtDsbe;SIHW6c} z>6_B3D8Jr!dnZ6m{P_F#Z{nZ*KxcGTYtVoe1^MAdV2(nkxcNY@zDoog8uOUOUlhKE zr$PTy!I}6&xxQii9g?NRuEAi8B_Y{ImTXf)L_`s#lTm5298t22?HCfxSWoutSV|(| zSTdcFVH84H20wdLWU1`@ZtoxPem?K>d7tOG@9X|vSMQK1_tL$C0?~DvBn1Zgky@5x zpH9aPeRc3#q~2Mt*mH$ws|?O+k@YUj%+Ij-<%B`*r4`;rZVdB?ukF;9_$}RM4HX!q zHR~g}W$a!s7y>DNG`!!vdq=!f4?BL1tQ~KPgoa-F%HYdC7%BqS)t^o*GG#)!zBV89 z0+h7}iAVI7KD&4s9YD&Pw%2v9`Q0+goD3B1T&pxhp2Np{?-R;(-0Fbp-KT`8>|vYqHL%t$VC#&l9>( zw7cq-$s${_vqFNjxP($pc`20Tbqvaz(5-+I`h*HxXOP31^iPy*9NJbqjs~5(MImuL zT*R;-=5dkTljV*ZG^wb$1}P$ljVKeS?DC#M{gKU0hE|I$DIw7c;Q~DLf{sfCV<&09va|7CBiE0LweJ>2+z47iV*LkPu@le$ zT}EAT?oAtl^GUvX(G5l$5y-aur9nLialtZu+&HT;i^JMT_HIsd-g-gM3BQQ9zl+gl z^G$j#jO$H}yHf1bhV*p=6Ztv+`+YdlWntV~BkZBLx;m=48E-OH#e-ir^kyM zsUO~6gO3~6n-?A3@%nMmJ-zkCLI5+N;)7lXBL*9$n06yM`jxXiGe-E9XkN1u$6IBN zl7VhMM|NseY_Fq22&v|oy=k?Oz0wA!EGuD)deXtHs`RXine@e8Re|a*j+?S3BL6M* zM>aQ$-)8#Tgua)Hck{^`eo>WaD{Gh`@9r@0e6ivBxEgUt~?TnJ9e?takgNdEE;1IURB&QxPmLulTB3H_U5jR%DQY#Nd z|M`24?FleZA7!Q_=>2X6N7tM`Q{3Io!pG)_0C+h5*A!~JwzaK+t1}^_qmuJizk!y$ z{|CD!VYiq-T-*5KVNZSR$TY|w^IlC9`9;fH0gXlmqvuUVHl-}m9Khtjjyoj>+_KD) z;g0EFYSQ@h4>kE8l{Q0mB#|WtF5ouqIJvqu!%ryJ(x2~F201~n0{*IE=BB17Ci>Rd z20aYfL{*Fdl;g?2+_;gUTAzG^Gktz`*4cj3!V1U-{7Jh=##r&5g-mNcP?rrL&q(p` z;U>e7&DGFewG4xRyQ6E%U#tLsM?$i48#~9m9l$7B>-wTev*nG0708o-0X8X+9&JgT z5Bd0A>u+np1g81Jm3b+-ye!h(4B$Hj}TUvX>#m>!^S^BcuF46l%}}5vb&-< z27#EA(yh$Q{4>4+1e+@$DBx4<9$V2^@(vRd(^NlBm$m zKglC^gb^8c)!xBD31fiIysxHS zkD!k|J&`ER%|Y(GTG5QZ-7k=oT(vJ8tE;2)j?HFsACYA_nZ_PsepwC{rh~1m6-KndE&aBMqA%sSFytPHWr&B06^{apHdNQpFeqE&_k>?+#?pAX((L!| zeh8gTH)&~+&<^r&vU*)r)g@zi-+Ne+s@ammAI(s%7NPT9{(4ih@iKofxMhZhFqazx zxp3iaB#zEy3IV5_sq5T=j(B&~6#mdr|N0opcnqlQo;I2_>@$IOBIi;bKgcR_B>~@= z7Z3oN^BHlxsic4O3ZGz^*`;OvFpRRUY@2HPJm$<4`LZ@ug^z!AC zyK_b!^lo5*Sl#^N7wLtsYGd{k-PX*sDVmpk^J16bqZCIK6r5Vrk&Safpj>%u|>LcSeOI2i^xw?`Vpq0&@1=JsYYODVPn*>q{-z^x0C-5|rqV|UU~ zu5z3OyYp&A|EKGnSyL#bqsq#xnt|K3;QBLDM{lZ;r%<@O)4279`uc}Cm6e(!{rwiZ zBCI_IrX7JA`uc%o0Qo;{U{UJ^&F$a+@M6NFD%PGM z!GGPgCCW)kp+(?HGCRfPTWE&U&o11&?kswvD`)H((O6!x;zaA~KR9S*7H>zD3j1%r(aPdSL3u8wBv5XrcETKndQ>dxeKwWoKj0fUmp;$y_#o zFarG^&Bz_(iFiu}x&vf4A88urP7k5I*U{eIcVx;J`m+2-i``>YSAC*wxy@DzZlK1GjCihZb#*<1B>uV?CE>6n{=A06K z;+oP*Jbl2fU}(*P`uX$uT^>fgjG8bx@!-VdufVo1%VjL$x`N2>qDVMS%%u~e;VMy| zq7!kZ0t9EvdMr;a0K|h8?!=Cu0;&nN3tp%Bx3wIUssAoh!PbcZ{_zGU88izJzp2&B pRG_Rdi1*r($K!;8KO8p?^_-V|d~}~nB7`O)mM3ipFU+ol{~v{;*FpdQ literal 0 HcmV?d00001 diff --git a/admin/js/plugins/ckeditor/skins/moono/icons_hidpi.png b/admin/js/plugins/ckeditor/skins/moono/icons_hidpi.png new file mode 100644 index 0000000000000000000000000000000000000000..6e103c05f11690fe3f9fd56dbd67205b58d7e90d GIT binary patch literal 67753 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 z zNmat(nVBfCjJW}T9&a^!0#`6Kr5itD4gT5k?M9bLVCvfq1I9zKM$?W9kib@0Qt)}J z+{{Mj)hiid+;0W&Z(T9DTPgP+adG8!X%`79%NXY3x)%M+mST~?GM%OStc_JFO6_c5 z#fGkk-P1nR$#$khaAkvOrZ`g}84)alS}exvvGvOlz4H_=0(CNm7LOAB0!$gRqN5kn zoQ=09=wRnc^}#ET?sIs1-#vXZ`lZx4&Pp(oUV^X#Yt6l?Bbed!YwiP4iY}Ax>x+fy z3NyLzx}23gvxHJDwP)lRT57LrFHbkenk@f#QwZV9hQPqBoDyMvH6~_2U zR8<*igSo?aFr$=?jPi!kgt+zua`EsMuvT$Sg9;B;I+lY`^hE=2O99io_r=Tgf+S0Y z_{Eb8W6#<$$MwNI=v?&^?t-ngtxu=r55@tI{pQ@#XUx6W&zf08%%X5#RikoocKn-Q zxu@fXu0%YVDxr#&T18e(zO|w8CT{;OSa1V!j@QmXm$Iz}J|yn*?_O1Pb=#&}`0B~k z4IAg96m9Sd07vew36>527g~*$sY{3^n69M%(@o*>kGe9A!9_Py?)?N*NK5Qcep4XR zXKN$(WfF7V7^P~A5n(WnRw$HR(fc--@Vbc}%c*Xz#^aBnKR&6i(K1{*C~AEVfjK0ag>mL#7>DgjIfiK+4V>(n9#eCD`H{8kUlb zLlO@7KdxJItkl8p8;>2tjOK!AOB8p&(U^yZ00$c5^*h$ck7D6!nfekEvH}pUlb%goT){N)SFMo(eHnULRGQgdBd16A*jiG*74x>o_kk`4llfhs8B~z%o*jO5P z28bT@kex+7v^lTh;&P?26%b zQ<+*}wD3Et@`J~rRT;z9Xl9SuRbj}Dw{mpetLWU};*A#%FgvxPh$u5Jnym>|pgFlm$Ii6X#iLo3?e>rh|oiDPBb%Xelma$Dh z^6EzPHa;!(;J=w3&(}#ZD3CcVCj=3Z-e;hQS6V>K`YZ0*zeH z+AZcm8EDY0+efVQ9{R=oB3473{rY>s`+?!_X#Mxr%(^l@^5#+S6jrxb&khUwRtfqZ zEH8G~X{w6hB==NWj9g!EgoTBvGmmvU%w8IMEpQgZUUtk=Dq_(M33&`w?d_63bMlU7Kv)71f_n zH&%)9<}clC>D|eBs$)HmzkGn06*zmHsjsthK#mc z6vD?-0Nm<0EH{%Db}|}@X13RRA>%IN_8ytW6dCDZNlJ#XXLdx!xpRkk4_+UPh?*>2 z`LetrFO8If0#Q{2Y+FMISWo|^!yr*L2^B)PJc%SvFCd{YWEViUPJTlf=t1{B?e*O+ zL2ucc#H}QJ5E_LfgLyIRQvu1NIwL~cIfI1Y1xduBCvaLBc-13UK(A0%H;0%^{k0$Y z>E2b8x%Q+U*@+$iApU0!nf;mTe*DKn9EI(BluyRUk=|27oMqoN6*I9q!qb^agZ^BMzG&1g#Ota}bfcFB&WI zXK-M!d%&NrnMgCk>;CAM(U5->hAd8_cxLZ<9F)$<$<(L*=S${LAj;(sQ)nJ0I(^5u zQ5LB_C%IUI$E%;~^S%NO`b_~=5*O~f{gkgdw2a0=P|%h?#IXUxkwsvb8yukY| ztJ@aLdt3ID|E9^}GT&gKTUacY)r($``jMf~bG)i7u&mJIlqkGF2X*5=J=ydAktBjE zfiYg*q))Alk^aGumE&F}G|QWXqL?hCo;Ev7XmbBC+~lg!f9iB8Lg5W%w*N;m$O|~H zuiZiW4v>1X9~n}=?yIgj_&m1=#aiMUI(G9B9SAi1Lu@v6 zF(N11`AI|7h)c=NJ`}dd=TGvG2S-L?y26fJX?MYqp0T8$_V*C73`DWn5r#TLC7pIb zbPKL$a~I<|vhGbsgCb&32$bctp)zPv?FyzRU{G+V7CBa1&KBD7C;<&*iQ15Vrn^Qb z`KrM6!QWF1f!xoAb8r_G7WymN*tDbuUNb!@p2(6i>G+^L8iPk=9QlJiktWl4G@9~! zO*!zs=;iNimnA@N?_5$AtM$2PfBShlnKatY;j4mr9ud4jStdcCPYJ)!FG1$`_Dg}f zjlQdEd&wiy2%9RM#Sa8E&w40C3SM0Do4XrS#;`xMAtHHqAL8y*A{zOC;?!(kE@K`^ z*t~rt8Gm+*Io`zENgG0qDPY6hiT_k7vt;uCj2G`wgmjn(_bpk^{tUQ@g(*(_6i?xb%z|>wx}Lf`AQsc9t5Uwqv#DO- zOpKwKIqwNVokr;*rhmqS3YKpE1ys=R*i6)Mbaeja$o2bu9tZi44EzulkM6M4ELj}$ z!&QIs7@8=_r&Nlf1mAl?alcawO)niZuN<|oV%3;buK^WjN65DH>Bkp|=HK3McxgM_e%%)5l_MsD|2d#YnewL`ELAaXm zbn{zfcJTSmPD9WkpV-GCVpWGXebDid@WwZQ;QLd>)RoFt`;LDJm+U9^|}@7N!V zHEY{QzfAgxgN)7BoTD*|>M%xbdrJ$X14ul`jb^=(kwDz2$|ri^RTn&;@}4apEt{sO}Bkh7+g^m4(>goWenBc zh#K0WQw9v_N=x(R-6Qn9*dBJmAb3lBB1ZMt@0yb~f{=QtQNy~IT`_M~qh;%XmH5LY z()d%o3|m8nO)`1@(zs)`f4|*WzmObZD>MarZT1{uD|ohQ9AWoVOGJ934=8na2v*H4 zXp@`)0&RcDwm(Z=cCMVL?d@VqS&AZ*RiGDJt#y8V`)O9n>lOgL*PAR=e#ERJ+PEm{uyt_N_Mwm3}Mv13ORfMO{mi8}$q7sq`Fee|ynR;bH$f{_8&aZQ|Dl6hbjc zGCZcfofN26+|67Ht$)%*oNey{nBdMIzP>to!niZlaCP6W@jyP5s|HNJf&uI76l7lA zQ#lVd2@9)lb6EG?^#H5S8vPrLPwD^R0+ht{0Uvg-ZUWCofa!>s2PR-~C{d^zylDdO zg2D`97wGu6TnxOum$plrV)~Dd>5cXi9Q{H(-b|B>;V3u14On?oy+kg4(etXYd9&UB zY%U@MSU}XeU7we+{kGt%tQ`K8NR~};`BoVGNyLkB@In6tdkUkW;M1S4iv22r!wWQ&fl z?~dFo+)q5^G=W$?CR6ZW?t@$`W1GEfX(SDN#jW)m1ONUgB_2j}Ny)9l^XJc18iWh8 zQ7{(kI=L6zNIF@#fRTp&2MUQP4Lw7p2u`N?*A(h<2(w z7}49xpiYRY_NbBEmv|Sti_;pRT^Lv9FIjI^chejwa24FISko{+e3f&64Osi_zUVCO z?(h1Io3B8UO{S0S(avvE1p|YX*J0WK6|nq*(C$__!1k};!W#3$NO`Oq75XLO2-{y+ zFXM&bXUDv4^=@|NHztxM$^a&lj!yny_IUMkYoD?Ytvo^-EBYoBaO@j`De7Avk(QP{ zf*VSLwym8}7I3NN^9s{E@CxfrR*5%Gj6GvzMqrfg`$H6Z>fgbB3{nV&iwi;v)6ekc z5-gbM5%vPX3aJ)L4?AQ8lo|z9jTu0r_`rIKoJ31AjCx1_kCG9;I3LU7C%5Rc%4{h< zur1q12V?xH&tpsSj_uKCB^QP6>xcN@oIFZ-R#~L@I1U|yu%mHtwcPBJu*C~c4_R3& zEkoKY;VTAgsis|=FM?!bJi9o!PiN+{M@Pkuuz};Ad3Wztoqr2xI!8BMEt5-og@uBT z(((Mc&eiSJPye7n_Wy3Q98+x>I8|t4T^_zVck^~XDGV<+8?mcy+dg`}fg7yiNAmiA zp;O`E3W{2Yyq9wCboqZ~2kUV=($eZCo_pHNqzT12Y{4&?o5xrZ628eMB)NKW>XPJ( zE~!r`#deW3YX1M>shQjVfu}mxaVj5imE`Mas_OU8xlbB+xm~zG=a`*SO%IqL-0=38 zvj}amih4gyZ-slFd!xBtJMZN#wS=-WOJcQar=Hr872lqeUj5p!<@@nN6H@U!p?Af_zow?|Gf4c>R?*YzbNBFA#vyoyc3l2@9O+vrLM@i5jL$)% zTT9yfqFe5qm91$v$X;*X6&f)!d%%vET$gq*q}50e2w4eG2ezBG zqi#>o_fP){y$@QmTnY;F_NI-DJ3lawpr`lv&d=T#I1^2|3}o@s3wMhlOw3)^I%vNB|y>ua!0I83|YLd{dtJ?dYFI|owVA~W83 zh{KC(rbi@SsedK3`d*BuT$(JJZ2Lf2Nk90T*g`eTSjO91*>yRaAV`DdtX*lLnC;_kV4GIt+HoZ&muSX zO)@2=PPzSW%Xf$I4nYi1qWI0Oqd;D=BH+8rwADDXm!t`Or*YBGc@G`J9z#P-;%?{r zR?L#kcBKs%5LGJGypg| zK|&k@xAT~E=Hz4~)R^3fJY>t!WnW5SphX~^W^k9a3tE#7CkV80Q72{v^lmXapwJx| z9}jaBy)d^L*ckD}SYI=s`k3ll{H4b0PFuUA-sOCMX{R+91=cLRlz=)S7o>$VoAe>` z?n;4})g>AWNKQTKXaIE_3?Y#ntTbAW7D^Lz)U@TYnU`9Z+NM>TG^bS6G=9x_ugI44 zm}Aq92|c2dsKH*mf;wTJP-@Xp`wkp`WQaoFN3fDQ;W1c*BQA{DmzO?(^PLU4Iq|C} zUvHMU{7mj4@Q+R8G!~}h+X@RA=Ox?O>9bL~8@xbEi?r&^LQMVa>^IjxLw8%g+Y>jv z_T}b!9EsiEWuk+e)BaF0#V?3YZo0sfto(w5kl4tLPZgt8#3O8LXO@gxyTsC2^bR{D-p_hz2V>Rxfp_Ze}N?_L+=yK8Us%G z_{yyhD_tLm7^NUd!o?(l?=1c3qLuc^1AAxE*JGK2@n1Bplrt1{uwL!mD4xz|?yvL0 zpB-#4#nuB%wM$@OwRs8vwo1&*p{ED8%*lA5RuREz4H~b}&XYu^@>01a?hH`Kfghee|rLFyMG#Z-YQM-k5>ddZB>8V_uoZz_6}*@-ao(L zqTn~xmLaDPptHs>YkH`9fD!#q+uM`O8!H`83)_dA?HHw64fuQ>%Lx6DC+Kry88z@H zb7GW{Q>SckXQEh-0NpF(3}{Td|CKApR37O{OAB=G5E@MUVdU0U`+^N$gBbMfA=ApQ zH)DBYpd1xysUZvR#s~t>rPuo>v|fOk1uG*O>3Hb+M~0L>`TH6>D=0UUAZ_S(2!W*p zeu)^~6RSA%Wa+8v^gX|>l%&+C&U?ft^)2dW9Isj}Ou+ktlJh3zNmz-88zHVQ844psLnL@e=C%!GVj$QE?A%-* z; z{7VF+WF%M-1ayP9TfGU|FCwGP2mp2VsUX*$?!Thbc(D56|Lg3mqoNGkbwBh_GK4e| zlG5E>64D`El9Gay#Lx)RE!`+3-Q5i$pwbdUNC`;8c|70V`|Q6Di+3?Ii=_j+PhIzQ z|1L0>nd}@MhOZ(*=#|o!zV+jhN!&6NGyH1m9_F?JoeKEuc@FP=hdukP>c285$$*uF zhldA*^qTWzNPVyvI$YLTXn2i>>@9AC%{AP5XQu&ue*$@eaV!c^q)mFviE@cG?n1)cMX%E~CZW6RJmfX)@QM?rz^6*(jkdt^edOra*r&3x z$h|GHYK-XUKrP05>G1H!>9+swGWf*}#7<5IgJ{2v z(A)O`l-)Rk-{&G_`mpx!eBYNDu-Fof7^5VNi__b@QDa>@;q+6CJgvd)^#hdPM{!^IEg?{^^8vv&#HFR2*na;UTEC-c3r& zmN2GW@&1)2AW@wc~=rV%Is1I5kP zSTz0a?*IlP??UAb!Y7ft@%4BpCiCz}(9l8nvNPVvmtHr@4+>9#OKF@KyUO!z5O-sA zWKJ^a;uG&TT#O6(TR2Q>_h#9{8LGg_ujLRlyVc9ub+de5`}He&rH$n22-D3I-^+Dh z=A%sR#&XYJaxH#yA)iv#^V#zV;BXk86H<-k05fjUry)#UQkfi)U$hOVP}99&(vTmP z(f|_fUw>f=zPLOR{iC8e8f%B7WdG4F5xxBo1PT;@+h0PS1ZUX4yC|zWEqR@?!J0v7 zkygu_8cHHXBoA<~?N`_PH!8}?d^g=7So&hwebxV*mLsnhEpi?M)w(SH&&qq|GbNg- zMVSv0G*DzxnHxBfH&-#6CXwtY6l>b5iMoL-W-cHajnWEq#)BlTiNr|rnwMPvaq;ta zO#yuIUGlcgcU_&z#e?wK-OyYFEz920leRm%PzYcnrj^7}cztu^(RHW92!fh?j>JX< zJ!_W0cG5$v^>q5A9h}s$ja&W5CSxBRe~?b3_x9^7G?Ki3Nv>^7`Aq7CWYuJ1fgU z;){PoJJnIM+XgxkLM%!cD!meH``uB3?qfIU4c8}P4Zg(=h)gi9*y%Vg1(^H3S|-O( z1J4qOl0(OR(tfp-X8N&8vk^iAtPFGFs`bRosK=(4aS!)L52m2kff%MWpDsjsIph*R z2)WlT%)&l-wm<~u_C)F~_>#+8A|UAHN=fp~8+34-o&9b7$fSNB$^CcP`!NHX6wx>v z2m2O^0|hXYfF3R7ubPmfi-tEeGaa;6?s?5Y&>ak8XTk09?AI812esnT^xu&ClvQl8 zgCWdd3v{#YDs+4vcsr!>p=QUhoCs6H)I?WT8R=~&os^>fLNTqt;^e(fP8p=miHwYP zkECfR1o)=0r%BmI=$xs!emc4<`5b{RM^5O!slnw(t=iysCKPt~r;^VOt*xh5{u19o zK4ZjDOX+F~%86M|a=vW%ONJEmal~m4;NM|A)w=gIdeqEiY^>#Yx6*RQ*vOQR6uo5Mo)2k`wmwzx zX^CHsXJV7eWPkd!Y?+v7>#eitijv$TNkY{UNgOinUsKZpcjJihZQLJMS4YUrg4{^n z0ac5;p|k7ph5YA#LHr}3%2C&9)w)YbetomI^hUEAbLD5l$Bc6MEaLvM;6P@@_#(YK zq{d~?=a@!~77K>o3gB`Pfe6u&2h6Gf?#W zxpjT5H~-$C&NiCYW*nw6IvT54pd*2QCxONA(EafGXriyMdD3rv_0x)xmWqQ?WvZcQ zB1{HK+s_dM%dBzxKs6*JU|G{Q{`T;kzU7gZ&9AF*p$t*?u6U*Go9z+r7H)5vCquEa z#1TR-87=w0+i)8PGr*$5P-O_%Kc($eexAH5{QPlGmmM~_)N=kVC!n?bI!mNW1o7>Y z`^ts*5e3tMpR)ZL;;7x-+tA6$ZqEPWgx6+rv#xU9=%Uheg43im*-MCWIr(cQK+fu{ zFSBMarP4k}YAA?Tgp$Q31>nNX4u8}kE-$(s?ydwfV-kj9S5{WW5R=(;QfHT)p)k55 z@%MJo7cesap^s9cp4thA9mmP!}_<&ea)#~!LN9Ls6Jl5+{ z--P0iT;WL0i;v`%iygCMNYRnunRf{%Ntm=lNSBDITr=j^bEM%tAo1&Cv3O+241cMP zF;9B)@kdSQfRkaN+e3Rv2^I%YF9=4jlDNOz=m0Sn)g)=DsmSCLg4HH1zc7ydddZuy zU*^xg9nTPNV&B;Le`^10oxS@VsQWIeWv|Ec@1UvcQ@B76T`#J zas$VN`pm`hUjtW*Kpq+B3d9(D_DoG%*(~c@uWp$}zDyX_<7fAM`KSd(!vU(D;%;3Y z2L#qZqbZv22OTBq{6+{=!vCcKLg)8!DH>Pt=~2AEX&9uif);!UA@Avdy5Fjhjv3UI z+n>32KdeHv&dj=EJHU>qh`d?si%rZLGaD)cs-(~PToaPtV+}SrWrx=!r@@fiDH8lR z*V;83gBh4IOhe14?WF`YqsFG|_mCbMZ|V3u{1+S^BFBmG<-_aHBk4z+AhAaF`%B6))rR`B=q{v;%s=iVdK z3-y^=+{Bo)^!6XdM8h=s5@UbVxn{!YqimtldWPh%A*6eg?yQtlbcLU7dG*a7xE&co zyB)b8A|`$G30$(JuenqLq7x|u#s(*XA&LR_>pezIFfGIR6(kR!5eo~i?<-_p42huy z(-S%ywdy3J$^RfxN5$!joa2BN@CWeB9)59q)(3#Ip^4vP)rgdh&QC5#`hE0{Jd7hd zgItRybezV}!amy+&_@y}KQEktCuG@2upemuFazBR?WUYrYE12>N6mLMmaLHezv?O~ zA#)D$hKA&PQU2&BuW6zHDI3g)LjKohCKK2;6CZ(l37rckDGUB45Gmz1@^|`26Iy7j z9ly||VHfFg2b_`Lt)IG_BtEEdaYm+6#fjoUw7y&Q`gTBzN@ZCOFbg9kIme`QqOwiP|;`hqj9KtphuKSjoLNFiV(Eh*C91 zf+L<#YzWw6F!1tL{EgYM4vkM^DZZxmd$@VXokEBnXRh9Rau*cT?2@5N+dsff`OejM z{591Gk8k?gE+mfj-D6f-ty3d*<(zZxS>b_xAiEaj2t>wOf{@&t31)tlT66}BaVuf* zVnE>y0T6_=cfP)(5K6jGKYlVd4dsVtLG!6d?5e`CA*)A2fTkwRGH|wAfG~54LUuCXxZN$yrGw!N3TaG_dQEZRfE_IO z1UrVaub-JnaSFP+r~$n_V8GNv*oe3|)t)32z4LMl+!64IhR$Rn``yf&ap6aGBHQuMQ zpg>9fyuU%O{H30J9(va?TK(3#v+W5+GKmsHB@NUf!p@DLKa0Ex?>I5E&huw|@`_xk zdajKsqjrB=Kgd_`@F42ZfQsRYE=JMELxXAHF&{A*WETdar(ZXi6NQDQnCYC2GmyHt zSmO|ylQNdzLGW7xel(~QybVQ%Fc-5_^5!IuycZl8JyO|0Fu4` zCa09BN(1U%)Kqj!Z&z=qAVLgZeC z(N^rP+>S92u+b*2SA}~py{p#LSpOZ6Y#^Xa8zh*O)<~m#En24-b#jc^ zkSJ(F)vfiY$Vzq&{B<(qBoec|G`V29|MTkSYm)um# z2bp$YqQnzMCVwG!51l=PaxT*?#*uYM^g70c%iwG^i<-`B$3_naWBfgI^ z;;^=|qg(*J9l4SE%GeyC-Ww`vktIRXwWweE=Jv>o@_7S#!Q!!V+)#DUyF5-kI?FgE zW8|8R?q^FmqKyPHSjAo5yMgpVo#<;2+E-6Ecc}_8X(kIFS6T+~c~yKa`+_e6JH8nZ zVrU{8Qyt)pEC>vldHI~h|JSdrF?{#&MSl3DmdcNhra=d%+v7DpgM*V)5^v-(vr|&E z;!_f4W=`2BCYIWT-S;G}kNXZFKl9m=AZ}hikh!1Fa`C`~=@(*eX)#KQ?mm0wd-?bV3CtZbJv2*CrqCd|8;9Hpki5}@6Jsb^ z2p4ncss*xV+Z_)zPH$F5iwPa~0{D`RhpuVf6mfw9GW7mxDktQo*)oK_)UHI5iR72$ zoKj|yx3;!6Q$<$Z&ESjPvavTHa~T=mWY5U(0}pd;YL<$Ub2N+EEY;MhpD}|P+gwTK zsbTpRHWs#zyYDru_$lm8%chn8_5u{Ua1fDmaB@t)&ekCvYuS%}qFNRpi;%R|AvrESY$=TMSRNnN)c7`mrTdT<I(L6(XBxRX>M?7x!HXAfZ8DuiMTJOP1hO1eE32HT$SM0> zE)M6m5r~C<*S+VF>B00GO^Kd<)97xpkr<;cUVKJ|!OojDO)X=}dC6oVl83^v0|gtK z5;pB-FaB=qV8;uR{J=GQ7I%$3Y|_uiPsKFl5C}9Rn7EMK4mFLBO%$ywXMEH>tp#aKe^|NQuBH2dTBIW}c9pk``NkxPsD;6vPHW zx+A?qFlPl`(X)5=7pFx1XGk#$eod#hdpfZj=RuhGkmczaL*;*dn z50d;PqEGH*BEygqhbz>HR_En4G`F{Fz)*>F_5MIKUefs<#m7+<7n_r!`^d{LggY-q z&Y%o)zzY&8(0|9AZf6VZc?guwVlI47x7%hvV2|g06U9|4lKn_HBO^@L+FJcmHh-&B z;+k1(p%Am)X(lRR5mmM106lxsv$E-8={+G+ePerjvfN3CtSln)Kpmw zL==`WS73axu{C>ieaBo`vGgcB13Ns!$k3ogeCGmygheX?p$q8X-e(aP?;DWIsK34&&p@=bwmSNDNC^H6(fgL&hqC6&C1k9v&AW5zU2qOT zv^zI};55pv>17inh_JA5T8Fb&{XMNQO44VH=WjXyF8dRmZb$HE&i^`K=#-`Fw8KT? ztYAT+22@=d21ad_ZriG$WP%#p)32A7C<>_?L3LL^SGWuK{SJ}cMt3YD|6-yMg!PPn zyg5?5xjtvHHSTnHj9Q#R<4BG%z^n*BJopCIW33z1g+Qrc{>W+V2q$$Ou%v{`VK zPIf!iod6NNr26RR+l4Tc?j`H79dKDf=^cXsteI;v0pHQl1>^9`&y?r%qH5nUWho=_ zb~0%U)*oDgSGn^r{fwFDrC8AL1v~nQ4$}o*V9R)J>*@FzNu=q$ymW#*@XqjCOD=pO zl=3SkgjhWcM0dTMUTU{+(AB+s(6_<_w7rSKp4E#gxM#zITGDXpL&$ygeP(;R6`wniw+9M^dNH3-4jZJKal#ogUi z)NgEFrqD8|K(-udAjFEqBNJ4*S6sPD++pXddrGcP>=}0yo210$l6jWA{qxV@rh&%Ks zyy#Vbq9!KRELb*la!7d)Dzb!0m%e*s8F_7&3^PZ0+~E;Yr~_BKpo65T<9y2z34#r+ zr@r!@UY$K%cn7Lb1|(xxVpCQ&CMFH@juOzk=LrLYq%l+t{QUC4H2>UutAP)9Z;!n_ zA#nY~{t{LAhEH>f9=_>O7eE~QSZ0~}9%W4#VUsBE~lx}mr@krwr-v*1mH|IHIQ z=6XdRSwdeNYsu3DrrqjC9v&6VTW^HPV$ij1CfSl6o@GjOn3m73r;hRa+CAJqhDd1G zJZ2Pu$w%C1to0RUXS0W>*;Xs8(e;@i-&&W?mC@0}CGex3t7CVz$P(3=v2x%Z664M4p;F_h;ZMN(dgs%B8oL`Ixr5{JO({^i7f8L_fzxRo$=X2oC z?1{{mIsELpt2-`aKz!``lp~dG=dbvW4f%pY#vk=!Te@-ovj9eo3}){knKmc&T5gAy zKk+9rPm6^L_Sw4d`u-IL_lxCw&g%=NWPp``)1& zg{aQ;pWjrcx%B_b-vX*4^n;El;p6MS?!=FnnAiOF_ClT}M3^rsKg*=_)vSN7vC@O=L*y<=si!{aIa04( zdGjoL44QjaH?;UTDQV&(2T2J{MuJiQR*3RtqsK1!pxqJ%4eNDy;#E`ZB1XX(Y72Q` zjr-Nt;z|IAcJ=A#{Wr`<0&|4lYzA>RWloGu418{EwDC7IWFivXBiO|xAfO3lF7!&> z0b{s4mHqYjIc&6BHOfLLT*{JHmUPC(K@mTIM>=G8^c zBl6WmeI3-}>Md_%^cDygAX)C-`~G&dZ{x~7YyWoryCSvtm>Z=kBcUFLkzOj86woy+ z6AJuGRpBJ4mvT35Bp$6K!pdj{>QZprcs?3UX1*PdsS#gfB=~@XKb6#xw*`hJ=CN3N zZCL$K-NxO;su|+%Rd6s(USml~BsaMz@NVoXMN}iL zfzepwCY8s>Bg<&eM`GF1fDJSkDrC<83Exj*PG^%BNCbCJ0 zA}eca($P_#|J{T;Xn%k@YN*FrNe}{w_dv%)#BG>x9zIVG&XM{=@m$2`MG@2U=WEel z35O%IQv;=ak;!T{J88tFWsuF1bEFi+{DVF-{m-I&*@f*Ta=?zNfsu#Qtr}U9iGXAw zxe|B#Kzc%3j^g1@y3LR-r>^Vkmu}m|Hn%ss9U6LH@$~F^{7Rk0ES-Iyzi#n}(u=a& z9ipa+9<)WXIdn?GR+hzWg)YS+<}3)5E8x52EcQs>XjU$ta~S#Z(p(^e>$k_RyStmP znf!cxBr!a5zLl_{r}1cO42t%we2kBtm zHZ_>t|B)oxMDz{Sl2TEHEpA*Lhs4H)L8_3wiMwfKA{8g4SSrzvao{eoA7V_rFY_a! zKr>H_y}kYP?z#7Awimhr28JzCR#ZfhBU^Wr z89qu5LxIq4BGYafL7q%bj@LgNuIOu#3P{ zZgmO@dt8fgdY5@mDI`D<>XQy5Xp&`#yv6EHTyFE^KRds`yY`a+>b4yz`bD+z5A-$Q zc>{Kky*YVWmT!DOE?jBlzgCyLwZMhD(6b6f^&3DWeJ&FeTVJN)M$}GDOvszMo#Zkx z<}Fmu+Bd8TseK5VI9)@{C+QAk3hhrpVd!a$p!U}}Rz~&C!63o12+-C>>z8Kpd~2+$ zJxhue24Uf`WhRobmk-14E+=H8427j?wXPyAn%+=i#3-OBv#^no#Y6qbwNV~3FnBW4 zwP7V&j(+>3k4gJ!h&-l$NFvuoYQCRYbx;NVopJg#gni1bDa77^k1Jg@ciCbc;+j?Z z4O8hQ0~EPg13JCSV+qwz4(q(XHw~nLLineK>F+&`e=PHsQSs_3fjJb??&~@;>DD!Hsd`SlFd1-X43sERTU$XP-IFG5RRD)M$$3+R@X=Av z_==M!A>yPw?T}mim5^c8pNmuslE=gm#Fp($!zy~yym&x7gsiL?pNj`sZ4LPq4RqV{ z$fYafAV_$4M9b9urJ^WY+YJ-qy{lns`{LnzUmB1V%xNG&8ybSI=RrKK7ROJ=d4i4r zFCV4%sn}uQegVr)P)FXHEW{)xYM{T=nI4pQKZ7u{9Z5o#bRLVKg)s znz<75AJk23#?9#nA#kUBh>Zm*;DZk0{w@Y`uc?;0<8--TW>{D9H$w7uz4Y$xZt44X zQgG@g=HoB6-QJ``Kh8}gGC^JIxE>s=wzhc%w>DU6eTxkeO%PQV7y8JT?6mY1`jLXv z!)O{REH5yQ4?8bbA3W}o)QO2nNEU&t^nsDEmD5yC-Rt53E;OgrTcNIgl)F4_J~BEC zUpyF`o`xX@b%V`y)i;zKdyre*1Aqg%5Fw%_bPs#`p|9+zYBJC9;kNpf#s-pne90@{ zzIo(TSI1d*m;#vrnNeFTPW-x&L51xHF*fLKb6#qmInP|Z-Ts!ss!xo(gK|6#pa&wA zK0Y8*j_pZM#e8aN6lf0*+3~1@(mo)Yvp^O=+W1d^hU5QzdIiHm-whG;}-Fo#xD zRNw(I*x_?|c_!qR0xld1TL9L}XWJ9m*rYLaaMWME;abTl$rbHycE55mke!waWL8c& z3h)B&Is@ep64t7YGJxcP(Fu||0VR`xNkLID#JOn^$Gl0ee9rbI+c5?*oW3`XM&rjc z4d})*8J-+}^`>H;r*1@t@%7BB7ltpZhfldjyGO&(*9W`d@lG{dfSe;w9#ir>mWCsO z&bGs}*?<^^8i*4VU8>Ftb}IMBJNdFP=poYOIFg)rV?dynqah;qK03DWe5-<;xWyDT zJi{Y#bPzUn@T4TTyZ`wyOR2| zHmz(g?fL)HK|;O9GOrsB4ocCayIoeiH>Qwo<*pC_Cve49M@B9Kk>L{K<8!SkMfA;d zc2>fyhm|YXE2{1X&wl>AGR#(cx8568mo}Mo#Q^V0BJ4M!5=0c2_BjY(GiEv|o#kdQ z64u5joSC$LKOX@-dwluv$J3)JaTV8J(?lT53(;{+l6PlQMjtVtkoZP_Xc)s;w2KETG)v+;RGeGkcO-o9eRg{8u)+wsnfcxb#&XgqQBkJ}V&CUvZ?cNZpzG(pE^$~Yd59D3Zk;=~aD9_f5=c^XRN-}h zZpI2P8?YbvK!$fr8L_vwmm}=HodrW(@BH}r^L&s>8j+KfG_)!H6vpQpDLip%U~_6%~@#r06ak=c!-ZHWZ>q?Bpy00x*gG{tBj{ zA%&Xv@3y<<)t!PkqeDs55b58GO?YA2C31gB)2aBw>-{y3YyN7qmzBn(7lr*;b9*~YXTVS9IAAETf@Tlq`O4NB_m5bd zaXEi96=@mR^VDqT&?Cd~QDa#aa zDlQ<;pL1|q8%_Y}gtkyxqx%DruJ4~`9C}9AcjVFYf+0?usrh>oMvZ6HMqQoMeSInT zsK3$BoJ>>YE!u^$9h4BRDqVJcq`k*A zH8p9W!GYJ`KD}6|HnY{MHg#$VJo$wMF|l~l7=^XR%wD{DIq9{MJk?SEdSQW*fuX*! zDmFO21)^bW^5V6_>s`K+K7I9U@>&uiW53<4G#};NNMn@buai^NCL8)yhHpz+OKi#j zGulMQc4$~=fweUn8v#CZL@d=iNIjvsuAcR1AI}RRRq5UM~@1+`9xSb@d@LDCM8(nUoAd1CrreLxlI2bDkK?cUE zkWl2{phElgC@V7D1k%_aosx(Z)b+B(W@6Id6mg_3Rp5G9Ab*4H)abe{D=TYfXV(qZ zoo6KX9tBeD8wZZJ(eo*+fv@Iw(?J6orMt~G3d-HxJIJtafA5b|gctGVmM&Is_vNN& zt~doq2L1^7M=Ve#W?=Ne-8pARiiBiu+%QTwwcOgS_tiMTWP=J4igmk)sTBD z2WKu=6*GEuqi6apH9@-EoDI=Q&ms%49yWlo?M&OpO0P$4kXpp&aRQlL`K; z1U4i9{lrbhet+8=wH~q(uaqU`LjY>4T*{fo;III0praLbh&M%d(kEgGjv#M(wJf2a zCF2>y^6@bj7_5iQ$H~$xb6U!)1<8NFoHGsVlnKD-D*)H^ zFD(847#wuUF7a@Km42GME1kX{5Ih>CzFsCgu3?j6Aq~$MFTQSup-Mw&3((m6xKuy9 zUVDcl1AThj4mkGxCxWh1(((p8g(=vj8^68uLKCyTc^Ljs`+&Ie&LM%&IAWulYt3@w zJS8~x?Eu?Bw6R+56#_nT+;JOT(5DaS-g@&wxfNhq0R~MP9B~yC6lbm?B0m8VtsRsSA#Rl;#%yUUraWtB4CUt{oWpz>o4HAe9Lsj7 zvXMdr;eHZ)0{lUbO>X7sUy-7Nax9V(Ex*C8j0ClZ4R3vqIZU>%Pso2yho?8)R38I! zxzX|+n(vk9tY`HU>$m3#_pNqJ=r1d15g$RST4w53XqrRoCth1E$g~z@Q=N-|ppuv< z>Z;p2{da-}hrSA7Xk^^rtGLiNl*`Z2-Vmt%ea@Wr=`pIb-VD<~QCz4<_IK1CDTuF| zQoP3|&+1`WQli=v7Ze?t#z%mn_?H4b?T^c?47XbV5{)mZ037{|lD-Kr9wAf9|1RPDld|YT(7F#Lb=R?xj6Vu^9h$JVGk#{W zgtW&SX}BJb#88Zt=;$mtT@gn4n4otAT=e>!5>IAvqg1To<^DFl!KOJ5<$k&`geQIs zANZIZBSk}VO_PplGV6`X1_>}W)jjVAIVl4NH;KRFu#i8nj3OTG|1g_%JOL_&5o62J8w-p#VnT1#E@~|T_fzwmw~AbjXaDYNC7Mb(OUPi&>*!! zX*c^_iMR!9#9TQt+%!^JK$O;S_HT?LjbX4x2{*Zy;AB?Im&Ovt-|{R8L@x?wq{?UC z$Ht-}J*g%EpMn?|CqKflWx5aUAIsr!V7_O@6zd_4k?af{z>4MfhIU?s$E-uw;Z(4vQsPB&ETJ0`Ca&T~P z%|nD+L_PT=!j&vNadJG`zx+}iIP*D6_b6u`ztk-$7l?vIoiL^x;GZL z2$zGc{4nSw?gI0`fEg4!XnIJ_2&;?cNbyE`27ZPNk zUz9p4@Txd%TqL`SLr^eHNnJgn$F9G4N)qq>WLEu@Rv4j1Y~zuyLt$Ng@ZD|GrOBxr zxZprw3E8wm126|PFD*v1l5jSv%o)=7lSum+jrP4VQ&Jjn_4M@gS5tfBfsV5BaCej& zY8RAEnXH9fe1`k%*C{BM^8y#(8X)UlrZT8p)`D_YwH3=My7I26{SnsPO&1LNT9{STGlJDihBgp55N2 z2U%y`#w2T9@ESFB3I^5$Q$pHia z+J>0Tus&wz90MuY-vX5e3d+==7GhUcJ!BOpRy&=Z;6~m}Xa+?pG{t+C0K6@`ySv`M zYKGXhbamSjWH36OBF{%*vBR+-W9*Dc%_b^X{Gbls<4*ZAl}&mv>an_1p>Pa66`!sm zvpmcs2<*|3!dXTd4KvQ_`PiJC!oDtuyBaxE&F-#YqkehlMzXjZj5(6_h$N=Hp^lTn zhf|aB@XV`~SK0h=5-2JyrWI$$4YlaSCnE^MPw|?yYcR|@+Uo^#ro`smy(hC+GsDwk z+t&K}g9&WnA`(%`f>*}0gBUQ{#yAXvMz)1;_gAQ0`#Y|f0S|%UJIqh>CwID1^mOm~ z06VA~0``gAXzHlRTHx>rHuT}GB3UACqU|rlkj*l+v`_I~;Nq^y(xN`LKrJ|;lv2J9 z1@~}G4L1%hZub7}?hG>YraYF>oRgV-S)#o232j)8)FYDe+lf;#u;2j~&C6tJlV-}w z_3epF8Ex&^e2^u=j@~UZgI|d0=;C1aB{WzX6dPm`7yQ8xjT`FIROSTq&02v>_Lsa) zz5@dPWTtPK41gh^*|2w z^Zq-Y;R^v=dDLUC8E2Vfe%G$Phn_9T8|KP78i%*0+}>7H#aa`>$)ZRAx7@XvWF|;6dP-) zDQj}7Xq+nfYr#pa@aOWY>u~hWvSy+B&W;Z4#G*J&Wo=(FmYEK()lREqE$ZU4uA+}4 z>6v2`e#{XRnX*?`&7Az$LridV$3l-90rHs;NjvL|K7cFt*>@rC7Q1#m?zfL z547@iI`FGhEA4Py@BN`-J9$e`;KK>O?A_aLKl6AwVbk-fj{W^T?<`p7XCgbJN!lcY zJ$B+5i3pw;w){!Z1)&=lkaD`+jRSSbyVKN?lI<#WN%41oj@LJ4S)c9AOP+s=p0+c6 z{@na}sRi#3<vDBV~3?J!? zM-aY*byiM@>+`M%D~G)HdXJiLi{p7C7fcY8S)cwvfoL0%CS@_n3PlbMf+%E7Vq=Ji zt^&p2UY3irA50w@Le|Q!0+Hy7DnemFFdiEJ<{k1ch*vg0L!}@)=Y0$laxS~ND& z?IVzM83M9E@ETpJvo!VfF(FS23wvAN?x+9U+iS35YYU?yU4ufT9l~E}%y(Ntk%1W! z(Ctpuz{K__bAl1zwq6NSvN|uYp$(nxbb6mq%3)r{{;sHy&Os!+Zm_9AL796a67+Q^ zJ_$$8pn$5SC1IW2>Hk+UP`0pPC;^f|r2P33>6Hgkpfd7d7$0~7$5Go zuxAO7I+#3t+U#*sV0+XPl7=KtZ4PCz0zcmNrU$;v3Oby3dD;CoNJ=V%!+WhccwkQCP^Y5AsW?WIgQrPZd+%`aSZ-Hx*Ahy-dS)+&@n z)6ke*)}W&96@DGbg%qC=D(?ywJ2JSFaI||oeB}2tGNN#DbSy$cLpxK!6Yp0n4p}N? zBxE=xX5VAuU}Gcn&N%_6KT68}@o;pY2Uy|3J!PQfsz7Xt_ z;0Gh`{m~Rjo_!Bh8(-g8VcyfAp!<7qh}fI;I>giw+wfR95jdNVcuBkyFnxExkJPP> zB$iUEp41aITwiso2M`&HAzc#fcY73RB*cApz7EEmWA*OFK7A#O}_+pogn zj8Kv{D5(SgjQB5`m=x^2D5OpO@F5F)U_?bn3;uL!{GfMGl^@37N4&?c+j*K!KKV8-RoR$P!E)-goBhEZTgz@(NX1p;Cq zkyAd}vs5HGJj}(0K%+?3>h$kJ|0fuXjg8sggya5s`H(7iwj!-$Ia~6=16*dt>;JW= dMLkSku7-tu{lR_LYXkuwO7d!QRWjzm{|CP}?@j;! literal 0 HcmV?d00001 diff --git a/admin/js/plugins/ckeditor/skins/moono/images/arrow.png b/admin/js/plugins/ckeditor/skins/moono/images/arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..0d1eb39c6763770690d4cd6faf81503975a25f08 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^Y(Ol>0V4T5^Y?)SlDyqr82*Fcg1yTp14TFsJR*x3 z7`TN&n2}-D90{Nxdx@v7EBhTTAs$Q7;?s#GK%q&VE{-7@=ig3J6RR&$neB-Qn+l0CXLLr>mdKI;Vst0B#;z A`2YX_ literal 0 HcmV?d00001 diff --git a/admin/js/plugins/ckeditor/skins/moono/images/close.png b/admin/js/plugins/ckeditor/skins/moono/images/close.png new file mode 100644 index 0000000000000000000000000000000000000000..04b9c97dde8273f8518060c82104b38b51832fa0 GIT binary patch literal 824 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_D|iQ=q4dV~EA+rIQW2r5r_$|IbhBX1!iK_4XmB4ZGuZyxX>Mli(%E z3$HvlGJ~HaFWITo!p#_bl)s>kG4~ILn4ZiInf3+cyI*T<`W(k~_vmY;nOSN7-tT?5 z_kMlG#)t>?(@N_U7A5H`{SZHU%5|y8mTLiCjxG~YC1*%7ESS=i8mXXUVBBMvkk)Zx zV?z+v(jd;QQM_K73j+!*M=?Jx=(qL zyV9$j>$uN4a_JV!q7Nf$g=w9`d^C7^PGA=~P!uT~qnS$!bq$4+Rn zRm$m#aRaT?oBmm{=FQhCd#|NJzRQD|8O+Vit9IW#m0|Mh$eHi2ze*L#9F{1SQ8HHc z4Zg9BH*Meg5Uo|W-`4Hlx9=LmhWqbRZRG0Hp8YoQowzL1@kK9x5mTUu>hHgCQ-VsW z92RMKolEYT^XF2b3{bDqtLv}7DjKgo{7|9&u;Yx#t3aOM*WBA}k1bpkwU1Xgef{_8 zQ_+pAttB$Yjb{4TF*LmYZ6CdM+Pt%A&Pql~pVU2tB$E3i4jY^)wB33;_hapR#yj&8 z_k69LfBWq=h6*9Umc$MPj)YE+L~jQEM2UT~&p(fMdGbAP`{}*^yE`_mUcEY>LGD~J zSC6>3_=>RA3QDRDyr(~v8;?`jEllcfxgCxj?;QX|b^2DN4hVt@qz0ADq;^f4F ZRK5J7^x5xhq=1STJYD@<);T3K0RTH-Q&a!| literal 0 HcmV?d00001 diff --git a/admin/js/plugins/ckeditor/skins/moono/images/hidpi/close.png b/admin/js/plugins/ckeditor/skins/moono/images/hidpi/close.png new file mode 100644 index 0000000000000000000000000000000000000000..8abca8e9726db1db199a0872d24b08842ec8ea62 GIT binary patch literal 1792 zcmZ`)X*An;7yerkv6Xst1TBfBwUwZ@G-RQc6k}p}F=!)Vk1aF^tr!NatxZg*+G=a9 z$BccH7;0_lieXwx?NUK&X^V-E?}zvN?!C`F_dL(J_shM%3@1k$NihX6001QIY^?}< zgq=79%#YOg_|JR*`(CxN0*+5!>62p|r!CQn=dr%@QoXUW@HVO`w&xa@b~ zimnO+B~%o1dTS~&Bxm7D?j0F5g)pSG@A?GAB>3)#e=5QbYpW<4wlCEVG}BukyLtjI zvs$O?O&kjyWX04X&p5eh_dkuYe4Ku-U9?~;p-4}6V{4#^$&2ju*|6>2F&y7~uv5Gj zm-hYJFH*d#7N6x}j?tWB6d-_s2pov&9hG_3m*f&|yX%1Q5D44}kJSRfg)0b7_%9~v z!mQlB76R^^2uAaYfzsfxi`Z~%*N%*yMAN!y1WL*)T?vANG`mY!t1vQ&Fnz>}m&S?8 zms_){HZ5)AOaZuXXBFJ!QcCYATN%VVpR^A63w-xT-2Gdwu&{6{=7Dbd5Q+pHTHb*@ zorflw0QNw>05AK`=Fbj8W@;pFo;eWdZKIMWn1nuD8p&I&9vI-2G65j|g@5c4FRg_H z(M4>V9{pVT>WwprAdVVI;|)n`v*ov}{o2L8rtc z5BpbNJK?Tx3|}DT;hiho-^4fwslOxt4T9wbpPpE^7gUZb7C}Si;*?^c^NYj7kcTWi z+1#tuclo9#i_xiN=|7(yWio@5ew}K}r1i+VbMS`ovF`6K>#0S$;6KwWuOafXK zmqg8mL13nXE|vF2@|Sd)>UJ*JSVu(p3HSd#7GO`kQA4oH*u7=8ERExA9Y!R^9e58$ z&ZQBo5H+Fd9A5SC)cjCjaQb3TLYjA{g&xk*EtmqqMv6AgC(`g}X z#Lll`NGD(3**OKE=wE8eSjp+n1Y$E&Zyoab>{@=`&IwnPoNAcqG!voQ^q8Jc!IVd% z`>A?fJr+zT)buphO6Q05SLwSgE-4)GzPY6=MP@LW+)C0V&w?k~&S+P1DpRI+7WM7paY+QRK!vWNqVvlSo@$uG zrDXq8DT{+FaW^iN1znUhvlv+U&|SZaWZBQNf|4JYIgfpeautMrbNlB&6pjH@nWL`5 z1%`{xRT*V|GM+l%C}D{CNY`th@#2e81^!>w_S;W`?0ZyIQ|9=ozTbVPKJQ@%s>&sdrZ^fXRd8Ojmu12hu9`9Aj3(7b%kQ42J<_sgH+;%8hN$BmRwn1x=U zNAZcD!sr(sX4plXQdigg4G-q?Q;4wlN`zCOmHsC3s%m-p z@6&TiDCI*LWuc5hB87;ry?@e?BPXXl+Y!cR-Q*6ftnhact&=TJataBlTm9Dd9flb) z6CC3oo!;$Ngu#UInBM8@^oALRyN_qh2GUVFB0HD5k4>uDJoc`y*B@~I@hr_qrBXIw z;6*d#QuonUsbiUB3xbAyXlU5cACbpL^ctUIHG^67y)9$m*4EOsFJ{}%49ESI=^OPp z3-l3pX{kPKZ}Ye*Xoe@1N#ejGQP3RKLPymCJOg#u+%PebA21WUVjB4M=&ofD|1fIy zVSGzkgJuFZxV>CM)@~LFuNm!N=`~pvq5xgy$qOxXZ3Z4vo6S8+0f;7C-g3xH16~x) zD90^U2TMto+p29Xlqi=UDz%Z%8h{y#Q2x)M9(~0<+K(7bMv|h)d;km(`i2(~#up6` zF8T;0!Wd~_q>V5@A`q~T(98cLpoIGc`N#c#!A~8fX?%hFNeAa}|7aR9iVV!>vv zaJ2^WU>K1A5CACz61I(8CIc!K4?~El%)x`jqeqXvPeK^ao;`c?^7-?JaGYEG;K9o3 z#s(_&`mP`%0T4nUK04|b|LoJNSAR^}c3dgdW#IUcBNv2WT-d7B=BZfxlJDRD3CyVM z!i0zd!0@`KV)2_Vu3fvHwCy-61u(+^U;u#D(5{O;mKC3#on4GgP2I}v+lPd0LkiJ% zXd?j##1B7Tzy58d(P(HQkYT_uO&F#LAti_itTjvkm#3yK)0s1~xl9J}SPVjhm!c?Z zXm}E2l1bR96eyp6Z**+z>*nU>zi^!20F(io`}oqO@88Yk##t#a5h{&F?bjPO@|C5f zmDN|T(01Lon*psgYRx9vt_!{g%A+l^uxA)p<~B>|LEeye-0ivFb-xU zY&#AqKe0^nJ3$1(PM?SbfPv0#I}RMzMYYlBQtEp{!nVPWAD8LGiLXANnYqPEK?6wd z-+!71c*0Od#LQ5h(R7E(>r88nxMcyrAB}b!CJ~g@7#|-$rL=xySUoXt2npeqyX}k_ z48Tzeud7w?^786twF<{|p_D>8ozAhhs=iweWMGHgdIfe1B7*C>P|YUl%_jDkCICPw z1;a2fVw!KH3`nvAfDi(lH$1qT9wNS3r zP;a%m2DW1jN2EkHoksfn`Lkma6AMQUA1>$t8uo&>q(mYX!>H`^)^c6c+HE{}`gD1H zWo3Tz&YgRu&CTvgZexHvDlI87HZigA!O4>a0?^ekLI|SHYI=H)NC{I)Oy={2KbaRS zDJLnglA&9`%$PWIr~qb2AppaO3?P`J+Y|uhm%y1kB%5@y2;#M4e>bhj%=t&TojiAiBkw!-4qcJ)rwC zpp@!-0!4xVo9(vq*TaW5w@Rf&07z!DbCah}Ul|=4F?$*FB~VI5V8EZyKo7txd;4^Tmt#znK^IXS0Q%%Y`N1?HLhay;NFmy?i;}bewG- zvx5PpHC|V%*jie;H)@)beUlH#001-{2d}Hu?qwttfYuuIW)rP;8`S42J#_s5yZ)8T zkN*KKV$V(cQ>;h;001R)MObuXVRU6WV{&C-bY%cCFflVNFg7hRFjO%!IyEyoH8d+Q zGCD9Yrs5G^0000bbVXQnWMOn=I&E)cX=Zrj$Be^|o0KsI zgE0^V5Ok0-_^-8wR0>L|uE2B+fQY~ugKOL9a~woChgJ$wDFCQ~Vhj}_kS~=`JUoO@ z3R-uD(G`F&dDL-`jK@Lg^e{~G)>o%ajh;Jq?h*jJef#$1$My9W@csMx`SZ2h&JGSr zr6WNc380qTwvp`b2c^?96Sr^Q?R8yONm*my;@Pv;m|W|HwZT-yd? zty6WBz+eo0jsr@khi^_!-sM387zX}bUw{Am!-sbOJPx*B`SHe$Urr^HLt093BHWyu zyi4iy9|z0JYbDRC$<-AA0>Fr1nI^#bt*GO;PzoTze;XU`mlhXC^s85S93ECbu+mk1Upf#e7BmTCUXh(KueiH;KJfbQ7f;HY1zKnek=6qXhj@95Rl z{7x>1cN-gcx3PhpTn>75HNUjDctNmTcJtT5Fs+eL4lLYZ`}MPN*7`fzG3TKLLq%(l9LhDXm zf1(h~^OrC0<)1v6#{PbFp|^KBcI67b&t#@r$)STe3UVANfszuc1p`C`Foyir)&dR= zklWq{03?Z!-`ZMGT2G|goGmciR6SB}4tdnVl@u({w zAVO|)bLC`zf2!Syjx~rNltONEbETsMVYPa`5AVZ=xxclZA50`t^)A;c_)%*_gstuE zmGZ}rbDr;i<}pnSNTsk_C}4ki`RNJM%(M-DOa=hJ^L^|V3ZFgCn*b=KQ1U#KD-}?i zr}VM&*RdNu$-?nJOgt6(yB#*j0000bbVXQnWMOn=I%9HWVRU5xGB7bSEig7MGB8vz zGdeXgIx{&dFfuwYFz%QVCjbBdC3HntbYx+4WjbwdWNBu305UK!Gc7PSEiy1vF*7eSaefwW^{L9a%BK_cXuvnZfkR6VQ^(GZ*pgw?mQX* O0000o~>%;(}uwZxScCw6p<*hDw!y1_~0Q&&4D4o5YwX{iKohVrR~K&ikJCoKKv4 z;|*^22tZL3R8>V00x2bq=izxCQp#KUhIZT0{orOOL^2j5913AO4%bR0N|g$>>)sNG z+Xf&2RaNPV#fa?Lb06?H@T#1h_0(*Ze7Sr}Ae7q;ju5Ddf*A|~Xy1P5p_fH4cwCH) zZAhilbj4zXbRA7q5kma`00ba}KvPw8UB}RMLb{F!1ORy8{`-06$tNFHg28E#$voUM zFu-6sO(GH@unvf?r9cRQ;s@4L71JZ`J0=$|U;ZuK-M_wi=#aBgC}8{l)z%80h(t)G(}=OLArTDzdB@n;13R~G zM|vKv>(Xd6uq+FFKBbiHr*%Bf!*g8}P2+p}_KCk9KCHTHwB&UFR7D|Xn)Eg^zuQbC zrXJn9H`1L<((udXwSxJ8g%F4i5FOdz0r_Gv|Mrn1KanR-zEjHQxmGOF2}JA6KA>r& z;&H^-m@4V=DBB|J%bQP&!gdaOwY{x;j@oF{)Ies%38d7 zm14DuvtApjs!A*zMvRQywRvdh)$U{x%d(m;s4D;X@WYq0M~=KwTUlXYaS_Y5(KU^J zRRzasQ&6tg%SVnL{i!^8@{MY##Fgb`D)suB!P@|YUxARW13a~R=T6gZG;lo+Aq1DN zT>1Or#f!hO^LdsE1!_Jp3E->Q1#(xfe*E6CV?UCoPoK}_a+K?JY{zNqX04;O1f%$m zh(yMP5V)?3Cnc8S*#CO}{R8sM8M&CtQEvhBh1Y7Q56+%_eg53JpUKI|YHoS?%aV6! z>?Vqgbut`T~-G>v@!_RS1XAU3~4e z=WCS;*`+0_z9Z^^KzjyAU&O92LfHwR&3`77dU)TyJLo9cXY=#ZvR0#9tKGz->v>&*ME3025A40+l~;=Iy_ap#2%t%5a&6lH=j)9IK~-&X z44`RS6;(x1)}Gv+lx;_BIcdZ&K-Uk9@7VFErm9FODORiYzh`C+-Z++(rjT8V)hcp& z`dW5*`7_&baD6LHr_&islc-^=JJ(wSEMgd7n%p%slo{ynXH#Dv8~gfDG;L1K&RXSK zt(|=vfG1_MwQ4oyFI}3F9a(MJy!jhqbabL;!-lV1E?U9kkqD{YUc~6=BZC_^rd{92 zY};o3(xoY?Rce-X9i57=kfuUCkNncoWQ$LvBpHt@(PZ*9k;#NpeSIWjF${mzQv97E z7zof6jnbP=Berkv>e{g3PchSMD&Ln zwwtDOqXs%#N}fKQJ$d59!Ipj6j)SggOpK2|VZ>q|iQ(bzs}mDS>drg4V_<;v;2;AB z4rpRz>2(7RXmBH+e~W7)ii!T}rhY(L#ZRPd|NWV>*2{VVb?FZ=;H$Fgh~A*5P5Z zSS&tRt<@ehO_PXeqACiW=i&G}p9|zmrAxVs7Z2781xjle*>wO~Zq>To$kV5@V)yQ` z-oe4&Z`r*02_q1oRazkgW;l!)4mas@9320{u9Vap4gUN2=dUl#&mWYNldB6$OW6Lz zys3R}+6kd;Cdp`&P$GfYvE%8TyLbOCVi-MwFYknk5Y0uUe9*zrE2wS$FW%NcHFksP>6UWLMRYuZb9KNV%s(YxD)tP&dyr+ z4retQeSaefw qW^{L9a%BK_cXuvnZfkR6VQ^(GZ*pgw?mQX*0000Pv#92Gn{xdL z;ybi2J@KEc#outLz<)xAxPw!Y_5ueF?j*-<+wA2JrZFg<@|dPm{pY9od|Q*beuZ)_ zENN{)TxV*cwqJ8{Nm$!j{BFy-b^O{(1J;HKvM{bo-W!*^`>vCVpHj`d17|d*pXO*{ zaQV{LQ6~`S+X5h+@3mGPQuXZo;{{43!Kf~HE?$uYhcHe#XqVaj+3_1CJ_iPu>Q&N*iHUd(8@ndA2P=buYQ40sl9WfPoR zWBK3XT9ibxK-<;C{% z&%a-+;WTTRfS?Q?drIUt_Xl_G9!>hFqx8PpFD32D>(V8eT_;nDUY&Sa^mEPDw&Hgl z3Q7^{uV09|Kh;b1kA9D#$0Qb|ru$PJC2J&mAN&HQ4Am0Xh?11Vl2ohYqEsNoU}Ruu ztZQJdYhV&$Xl`X-3`E)nMpgy}zDsrkQw@@a-29Zxv`X9>Y<@By0cwy0*$|wcR#Ki= ml*&+EUaps!mtCBkSdglhUz9%kosASw5re0zpUXO@geCymsw?6E literal 0 HcmV?d00001 diff --git a/admin/js/plugins/ckeditor/skins/moono/images/lock.png b/admin/js/plugins/ckeditor/skins/moono/images/lock.png new file mode 100644 index 0000000000000000000000000000000000000000..c127f9ebe788baaf9c69bea6d1c7653d990cbe3c GIT binary patch literal 728 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_D|i<3~>y#}JFtwUamcJ$4Xi+b?OIx5#CqXV9F5Wxj{CWzI9}I~1#a zxe)M?q2wX2-yR1Qm6(Yl9w#m)DsJBWEpFlsaiv2;q%iS9F@!!9`;&sdy-?D_h?Q(q*;!@Xr zV*c4mE2&-y9=7-yFU!6waO`^Yu%KeH%1PY`s-8vGGJN?_6BIZECcgK-;k1vV>B05e zw{L%aRyS9L^8l;C?_&!@*Ij?jI3e|BVW3Dk!?h@eu0=aeZ+auK;QH%@t6uNgR=ody zy3tGqgSmdn?`v`p(oynm@B2FvhaW#y*4NkH6rr=P%R;Vy@CgHpZ{!H zwJLSq^XbxxyXWj>$o)R8an-!;6a1mJ`I1|7zP)n_4XvrE3Ak>WC{a{WQnD>V=iDWe zr8?eoifiiXfN&PEETh{4m<&t;ucLK6UWP&V5D literal 0 HcmV?d00001 diff --git a/admin/js/plugins/ckeditor/skins/moono/images/refresh.png b/admin/js/plugins/ckeditor/skins/moono/images/refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..a1a061c50de209f0b3749537a6a20fba2b93c8e3 GIT binary patch literal 953 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_D|i(=iY?K- z+T>WE_|9u#iQ?6_3VMH-)0Rt%@4C1)k0tvrvkZ&loF;Dff{VURL7EFQFE4q&cfzy3 zyEe~Io3gXOO#IyOrv>Y-ye^HC6Fg|Zv+1TzaBy%32gBbw`SYJU7IB2K9;mpPF-z@b z$*deR?~M^h40Ve#ULHzQ+dU=I$FK<`iUaz4iRSe5FrS zX0ui2pHGeyQ)*)MIVU^YWeHafbN;PubEBf8ldGzJy9yaFtrFZ>9zj|)JT`TzH=g*%O7yY+w z-(Ff@AAkDkr|k!{%YV;oZf0J4HS0ekf9TZNv!&0SJC|W1b>a2bfKZ;pKdSTd{lmk; z>ViX$F{O!#iPf>ltl`$5UteQoE)C=@^Vp&fY6xhvdmBH3f7!H z?LF(PT3d%eTcX+IlQ#lI7-N`O939qQSLSivdwp`e%afTMHdV$tqPW~jOU|4`{&{%O;vd(ZWIzOti+-G(*I=klM5?CjN2 zER5>v>iwZxU+&T?luK3-Pe-~bU zDYGi;PTuyNd-opon#6Mcvw^R0=-*hEFr%4grhoqY`F)7i)T0)Cd($@m%wK)=ms@B* z!@BkBIhzr!AdYO6I#mR{Use1WE>9gP2NC6cwc)I$z JtaD0e0su#cn~(qi literal 0 HcmV?d00001 diff --git a/admin/js/plugins/ckeditor/skins/moono/readme.md b/admin/js/plugins/ckeditor/skins/moono/readme.md new file mode 100644 index 0000000..1b48dd2 --- /dev/null +++ b/admin/js/plugins/ckeditor/skins/moono/readme.md @@ -0,0 +1,51 @@ +"Moono" Skin +==================== + +This skin has been chosen for the **default skin** of CKEditor 4.x, elected from the CKEditor +[skin contest](http://ckeditor.com/blog/new_ckeditor_4_skin) and further shaped by +the CKEditor team. "Moono" is maintained by the core developers. + +For more information about skins, please check the [CKEditor Skin SDK](http://docs.cksource.com/CKEditor_4.x/Skin_SDK) +documentation. + +Features +------------------- +"Moono" is a monochromatic skin, which offers a modern look coupled with gradients and transparency. +It comes with the following features: + +- Chameleon feature with brightness, +- high-contrast compatibility, +- graphics source provided in SVG. + +Directory Structure +------------------- + +CSS parts: +- **editor.css**: the main CSS file. It's simply loading several other files, for easier maintenance, +- **mainui.css**: the file contains styles of entire editor outline structures, +- **toolbar.css**: the file contains styles of the editor toolbar space (top), +- **richcombo.css**: the file contains styles of the rich combo ui elements on toolbar, +- **panel.css**: the file contains styles of the rich combo drop-down, it's not loaded +until the first panel open up, +- **elementspath.css**: the file contains styles of the editor elements path bar (bottom), +- **menu.css**: the file contains styles of all editor menus including context menu and button drop-down, +it's not loaded until the first menu open up, +- **dialog.css**: the CSS files for the dialog UI, it's not loaded until the first dialog open, +- **reset.css**: the file defines the basis of style resets among all editor UI spaces, +- **preset.css**: the file defines the default styles of some UI elements reflecting the skin preference, +- **editor_XYZ.css** and **dialog_XYZ.css**: browser specific CSS hacks. + +Other parts: +- **skin.js**: the only JavaScript part of the skin that registers the skin, its browser specific files and its icons and defines the Chameleon feature, +- **icons/**: contains all skin defined icons, +- **images/**: contains a fill general used images, +- **dev/**: contains SVG source of the skin icons. + +License +------- + +Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. + +Licensed under the terms of any of the following licenses at your choice: [GPL](http://www.gnu.org/licenses/gpl.html), [LGPL](http://www.gnu.org/licenses/lgpl.html) and [MPL](http://www.mozilla.org/MPL/MPL-1.1.html). + +See LICENSE.md for more information. diff --git a/admin/js/plugins/ckeditor/styles.js b/admin/js/plugins/ckeditor/styles.js new file mode 100644 index 0000000..48661b1 --- /dev/null +++ b/admin/js/plugins/ckeditor/styles.js @@ -0,0 +1,111 @@ +/** + * Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or http://ckeditor.com/license + */ + +// This file contains style definitions that can be used by CKEditor plugins. +// +// The most common use for it is the "stylescombo" plugin, which shows a combo +// in the editor toolbar, containing all styles. Other plugins instead, like +// the div plugin, use a subset of the styles on their feature. +// +// If you don't have plugins that depend on this file, you can simply ignore it. +// Otherwise it is strongly recommended to customize this file to match your +// website requirements and design properly. + +CKEDITOR.stylesSet.add( 'default', [ + /* Block Styles */ + + // These styles are already available in the "Format" combo ("format" plugin), + // so they are not needed here by default. You may enable them to avoid + // placing the "Format" combo in the toolbar, maintaining the same features. + /* + { name: 'Paragraph', element: 'p' }, + { name: 'Heading 1', element: 'h1' }, + { name: 'Heading 2', element: 'h2' }, + { name: 'Heading 3', element: 'h3' }, + { name: 'Heading 4', element: 'h4' }, + { name: 'Heading 5', element: 'h5' }, + { name: 'Heading 6', element: 'h6' }, + { name: 'Preformatted Text',element: 'pre' }, + { name: 'Address', element: 'address' }, + */ + + { name: 'Italic Title', element: 'h2', styles: { 'font-style': 'italic' } }, + { name: 'Subtitle', element: 'h3', styles: { 'color': '#aaa', 'font-style': 'italic' } }, + { + name: 'Special Container', + element: 'div', + styles: { + padding: '5px 10px', + background: '#eee', + border: '1px solid #ccc' + } + }, + + /* Inline Styles */ + + // These are core styles available as toolbar buttons. You may opt enabling + // some of them in the Styles combo, removing them from the toolbar. + // (This requires the "stylescombo" plugin) + /* + { name: 'Strong', element: 'strong', overrides: 'b' }, + { name: 'Emphasis', element: 'em' , overrides: 'i' }, + { name: 'Underline', element: 'u' }, + { name: 'Strikethrough', element: 'strike' }, + { name: 'Subscript', element: 'sub' }, + { name: 'Superscript', element: 'sup' }, + */ + + { name: 'Marker', element: 'span', attributes: { 'class': 'marker' } }, + + { name: 'Big', element: 'big' }, + { name: 'Small', element: 'small' }, + { name: 'Typewriter', element: 'tt' }, + + { name: 'Computer Code', element: 'code' }, + { name: 'Keyboard Phrase', element: 'kbd' }, + { name: 'Sample Text', element: 'samp' }, + { name: 'Variable', element: 'var' }, + + { name: 'Deleted Text', element: 'del' }, + { name: 'Inserted Text', element: 'ins' }, + + { name: 'Cited Work', element: 'cite' }, + { name: 'Inline Quotation', element: 'q' }, + + { name: 'Language: RTL', element: 'span', attributes: { 'dir': 'rtl' } }, + { name: 'Language: LTR', element: 'span', attributes: { 'dir': 'ltr' } }, + + /* Object Styles */ + + { + name: 'Styled image (left)', + element: 'img', + attributes: { 'class': 'left' } + }, + + { + name: 'Styled image (right)', + element: 'img', + attributes: { 'class': 'right' } + }, + + { + name: 'Compact table', + element: 'table', + attributes: { + cellpadding: '5', + cellspacing: '0', + border: '1', + bordercolor: '#ccc' + }, + styles: { + 'border-collapse': 'collapse' + } + }, + + { name: 'Borderless Table', element: 'table', styles: { 'border-style': 'hidden', 'background-color': '#E6E6FA' } }, + { name: 'Square Bulleted List', element: 'ul', styles: { 'list-style-type': 'square' } } +] ); + diff --git a/admin/js/plugins/index.php b/admin/js/plugins/index.php new file mode 100644 index 0000000..e69de29 diff --git a/admin/pages.php b/admin/pages.php new file mode 100644 index 0000000..1fbd3d3 --- /dev/null +++ b/admin/pages.php @@ -0,0 +1,349 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ +session_start(); + +if (isset($_SESSION['login'])) { +// Do nothing +} else { + header("Location: ."); + exit(); +} + +if (isset($_GET['logout'])) { + if (isset($_SESSION['login'])) + unset($_SESSION['login']); + + session_destroy(); + header("Location: ."); + exit(); +} + +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; +require_once('../config.php'); +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); + +if (mysqli_connect_errno()) { + $sql_error = mysqli_connect_error(); + die("Unable connect to database"); +} + +$query = "SELECT @last_id := MAX(id) FROM admin_history"; + +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_id = $row['@last_id := MAX(id)']; +} + +$query = "SELECT * FROM admin_history WHERE id=" . Trim($last_id); +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_date = $row['last_date']; + $last_ip = $row['ip']; +} + +if ($last_ip == $ip) { + if ($last_date == $date) { + + } else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); + } +} else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); +} +if ($_SERVER['REQUEST_METHOD'] == 'POST') { + if (isset($_POST{'editme'})) { + $edit_me_id = htmlentities(Trim($_POST['editme'])); + $page_name = Trim($_POST['page_name']); + $page_title = Trim($_POST['page_title']); + $page_content = $_POST['data']; + + $query = "UPDATE pages SET last_date='$date', page_name='$page_name', page_title='$page_title', page_content='$page_content' WHERE id='$edit_me_id'"; + mysqli_query($con, $query); + } else { + $page_name = Trim($_POST['page_name']); + $page_title = Trim($_POST['page_title']); + $page_content = $_POST['data']; + + $query = "INSERT INTO pages (last_date,page_name,page_title,page_content) VALUES ('$date','$page_name','$page_title','$page_content')"; + mysqli_query($con, $query); + } + $page_name = ""; + $page_title = ""; + $page_content = ""; +} + +if (isset($_GET{'edit'})) { + + $page_id = trim($_GET['edit']); + $sql = "SELECT * FROM pages where id='$page_id'"; + $result = mysqli_query($con, $sql); + + //we loop through each records + while ($row = mysqli_fetch_array($result)) { + //populate and display results data in each row + $page_name = $row['page_name']; + $page_title = $row['page_title']; + $page_content = $row['page_content']; + } +} + +?> + + + + + + + Paste - Pages + + + + + + +
    + + + + + + + +
    + + +
    + +
    + +
    +
    + +
    +
    + + + +
    +
    +
    +
    +
    Add a Page
    +
    +
    + +
    +
    + "> +
    +
    + '; + } + ?> +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    Pages
    + + + + + + + + + + + + ' . mysqli_error($con) . ' + '; + } else { + echo ' +
    + Page deleted. +
    '; + } + } + $rec_limit = 20; + $query = "SELECT count(id) FROM pages"; + $retval = mysqli_query($con, $query); + + $row = mysqli_fetch_array($retval); + $rec_count = Trim($row[0]); + + + + if (isset($_GET{'page'})) { // Get the current page + $page = $_GET{'page'} + 1; + $offset = $rec_limit * $page; + } else { + // Show first set of results + $page = 0; + $offset = 0; + } + $left_rec = $rec_count - ($page * $rec_limit); + // Set the specific query to display in the table + $sql = "SELECT * FROM pages ORDER BY `id` DESC LIMIT $offset, $rec_limit"; + $result = mysqli_query($con, $sql); + $no = 1; + // Loop through each records + while ($row = mysqli_fetch_array($result)) { + // Populate and display results data in each row + echo ''; + echo ''; + echo ''; + echo ''; + $myid = $row['id']; + echo ''; + echo ''; + echo ''; + $no++; + } + echo ''; + echo ''; + echo '
    Date AddedPage NamePage TitleViewEditDelete
    ' . $row['last_date'] . '' . $row['page_name'] . '' . $row['page_title'] . '' . " View " . '' . " Edit " . '' . " Delete " . '
    '; + // Display the pagination + echo '
      '; + if ($left_rec < $rec_limit) { + $last = $page - 2; + if ($last < 0) { + + } else { + echo @"
    • Previous
    • "; + } + } else if ($page == 0) { + echo @"
    • Next
    • "; + } else if ($page > 0) { + $last = $page - 2; + echo @"
    • Previous
    • "; + echo @"
    • Next
    • "; + } + echo '
    '; + ?> +
    +
    +
    +
    + +
    + + + + + +
    + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/admin/pastes.php b/admin/pastes.php new file mode 100644 index 0000000..1d01241 --- /dev/null +++ b/admin/pastes.php @@ -0,0 +1,344 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ +session_start(); + +if (isset($_SESSION['login'])) { +// Do nothing +} else { + header("Location: ."); + exit(); +} + +if (isset($_GET['logout'])) { + if (isset($_SESSION['login'])) + unset($_SESSION['login']); + + session_destroy(); + header("Location: ."); + exit(); +} + +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; +require_once('../config.php'); +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); + +if (mysqli_connect_errno()) { + $sql_error = mysqli_connect_error(); + die("Unable connect to database"); +} + +$query = "SELECT @last_id := MAX(id) FROM admin_history"; + +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_id = $row['@last_id := MAX(id)']; +} + +$query = "SELECT * FROM admin_history WHERE id=" . Trim($last_id); +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_date = $row['last_date']; + $last_ip = $row['ip']; +} + +if ($last_ip == $ip) { + if ($last_date == $date) { + + } else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); + } +} else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); +} + + +?> + + + + + + + Paste - Pastes + + + + + + +
    + + + + + + + +
    + + +
    + +
    + +
    +
    + +
    +
    + + + + ' . mysqli_error($con) . ' +
    '; + } else { + $msg = '
    + Paste deleted +
    '; + } + + } + ?> + + +
    +
    +
    + +
    + Details of Paste ID +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Username
    Paste Title
    Visibility
    Password
    Views
    IP
    Syntax Highlighting
    Expiration
    Encrypted Paste
    +
    + + + +
    +
    + Manage Pastes +
    + + + + + + + + + + + + + + + + + + +
    IDUsernameIPVisibilityMore DetailsView PasteDelete
    +
    + +
    +
    +
    + +
    + + + + + + +
    + + + + + + + + \ No newline at end of file diff --git a/admin/sitemap.php b/admin/sitemap.php new file mode 100644 index 0000000..8f49a2b --- /dev/null +++ b/admin/sitemap.php @@ -0,0 +1,293 @@ + + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 3 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License in GPL.txt for more details. + */ +session_start(); + +if (isset($_SESSION['login'])) { +// Do nothing +} else { + header("Location: ."); + exit(); +} + +if (isset($_GET['logout'])) { + if (isset($_SESSION['login'])) + unset($_SESSION['login']); + + session_destroy(); + header("Location: ."); + exit(); +} + +$date = date('jS F Y'); +$ip = $_SERVER['REMOTE_ADDR']; +require_once('../config.php'); +$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname); + +if (mysqli_connect_errno()) { + $sql_error = mysqli_connect_error(); + die("Unable connect to database"); +} + +$query = "SELECT @last_id := MAX(id) FROM admin_history"; + +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_id = $row['@last_id := MAX(id)']; +} + +$query = "SELECT * FROM admin_history WHERE id=" . Trim($last_id); +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $last_date = $row['last_date']; + $last_ip = $row['ip']; +} + +if ($last_ip == $ip) { + if ($last_date == $date) { + + } else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); + } +} else { + $query = "INSERT INTO admin_history (last_date,ip) VALUES ('$date','$ip')"; + mysqli_query($con, $query); +} + +$query = "Select * From sitemap_options WHERE id='1'"; +$result = mysqli_query($con, $query); + +while ($row = mysqli_fetch_array($result)) { + $priority = $row['priority']; + $changefreq = $row['changefreq']; +} + +?> + + + + + + + Paste - Sitemap + + + + + +
    + + + + + + + +
    + + +
    + +
    + +
    +
    + +
    +
    + + + + ' . mysqli_error($con) . ' +
    '; + } else { + echo ' +
    + Sitemap saved. +
    '; + } + } + ?> + + +
    +
    +
    +
    +
    Sitemap
    + +
    +
    + + +
    +
    + + +
    + + +
    +
    + + + + ' . $protocol . $_SERVER['SERVER_NAME'] . $levelup . '/ + 1.0 + daily + ' . $c_date . ' + + '; + file_put_contents("../sitemap.xml", $data); + + $rec_limit = 10; + $query = "SELECT count(id) FROM pastes"; + $retval = mysqli_query($con, $query); + + $row = mysqli_fetch_array($retval); + $rec_count = Trim($row[0]); + $offset = 0; + // Set the specific query to display in the table + $sql = "SELECT * FROM `pastes` WHERE visible='0' LIMIT $offset, $rec_count "; + $result = mysqli_query($con, $sql); + + // Loop through each record + while ($row = mysqli_fetch_array($result)) { + $paste_id = Trim($row['id']); + $site_data = file_get_contents("../sitemap.xml"); + $site_data = str_replace("", "", $site_data); + + if ($mod_rewrite == "1") { + $server_name = $protocol . $_SERVER['SERVER_NAME'] . $levelup . "/" . $paste_id; + } else { + $server_name = $protocol . $_SERVER['SERVER_NAME'] . $levelup . "/paste.php?id=" . $paste_id; + } + $c_date = date('Y-m-d'); + $c_sitemap = ' + + ' . $server_name . ' + ' . $priority . ' + ' . $changefreq . ' + ' . $c_date . ' + + '; + $full_map = $site_data . $c_sitemap; + file_put_contents("../sitemap.xml", $full_map); + } + } + ?> + + + sitemap.xml rebuilt +
    '; + } + ?> +
    + +
    +
    +
    +
    +
    + +